结合单片机学习板学习C语言之AD转换.doc
上传人:sy****28 上传时间:2024-09-10 格式:DOC 页数:3 大小:17KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

结合单片机学习板学习C语言之AD转换.doc

结合单片机学习板学习C语言之AD转换.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

原创文章来源:www.shishicaimh.com原创文章来源:shishicaimh.com结合单片机学习板学习c语言之AD转换目的:通过STC单片机接收ADC0804的数字量,并把该数字量通过8155控制的LED显示出来。/*本程序利用查询法得到ADC0804的AD转换后的数字量。*/#include"at89x51.h"#include"absacc.h"#include"intrins.h"#include<stdio.h>#include"math.h"#defineucharunsignedcharsfrISP_CONTR=0xE7;ucharadvalue,adl,adh;ucharcodeBitdisL[]={0x1f,0x2f,0x37,0x3b,0x3d,0x3e};ucharcodeChardis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};delay_05s(){intcount;count=647395;for(;count!=0;count--);}/*voidad()interrupt2//如果想要用中断法,可以使用这个子程序{//EX1=0;RD=0;advalue=P0;adl=advalue&0x0f;adh=_cror_(advalue,4);RD=1;//P1=~P1;//P1=advalue;WR=0;_nop_();WR=1;//EX1=1;}*/voidserial()interrupt4//编号0-4,外中断0,定时器0,外中断1,定时器1,串行中断{uchara;RI=0;a=SBUF;if(a==0xFE){P1_0=0;delay_05s();delay_05s();ISP_CONTR=0x60;}elseif(a=='A'){P1_1=0;delay_05s();P1_1=1;}}voidmain(void){unsignedintb;unsignedcharcmd,temp;TMOD=0x20;TH1=0xf4;TL1=0XF4;TR1=1;SCON=0XF8;PCON=0X80;IT0=1;EA=1;ES=1;RI=0;cmd=0x0F;XBYTE[0X7FF0]=cmd;WR=0;_nop_();WR=1;while(1){WR=0;_nop_();WR=1;while(P3_3);RD=0;advalue=P0;RD=1;if(cabs(advalue-temp)>0x01)/*该句仅仅为了显示值不会老是变动,但代价是显示精度减少了,有的电压不能用数字显示出来。*/{temp=advalue;adl=advalue&0x0f;adh=advalue>>4;}XBYTE[0X7FF3]=BitdisL[1];XBYTE[0X7FF1]=Chardis[adl];for(b=0;b<500;b++);XBYTE[0X7FF3]=BitdisL[0];XBYTE[0X7FF1]=Chardis[adh];for(b=0;b<500;b++);}}【重点难点】1.启动ADC0804,有的书写MOVX@Ri,A(即XBYTE[0X0000]=0X00;),用这个语句来启动单片机,我个人认为,程序没错,但是它可能针对低频晶振用的,当用到高频晶振,WR