资源描述:
《基于51单片机和ADC0809数模转换的C程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#defineucharunsignedchar#defineuintunsignedint/********************定义LCD1602接口信息********************************/sbitlcdrs=P3^0;//数据命令选择位sbitlcden=P3^1;//使能位sbitlcdrw=P3^2;/********************定义ADC0808接口信息*******************************
2、*/sbitADA=P2^0;sbitADB=P2^1;sbitADC=P2^2;sbitEOC=P2^3;sbitCLK=P2^4;sbitSTART=P2^5;sbitOE=P2^6;/*****************键盘管脚定义*************/sbitkey1=P3^3;sbitkey2=P3^7;/*********************定义数据********************************/uchartab1[]={48,46,48,48,48,46,48,48,48,46,48,48,48
3、,46,48,48};//存放AD采集数据uchartab2[]={48,46,48,48,48,46,48,48,48,46,48,48,48,46,48,48};uchartab3[]="TONGLU:";uchartab4[]="DIANYA:";uchartab5[]="";ucharnum,m=0,getdata=0;uinttemp=0;/*延时函数*/voiddelay(uchart){ucharx,y;for(x=t;x>0;x--)for(y=110;y>0;y--);}voiddelayl(ucharltime){
4、uchari;for(i=ltime;i>0;i--)delay(255);}/*写命令函数*/voidwrite_com(ucharcom){lcdrs=0;P0=com;delay(10);lcden=1;delay(10);lcden=0;}/*写数据函数*/voidwrite_data(uchardate){lcdrs=1;P0=date;delay(10);lcden=1;delay(10);lcden=0;}voiddisp(ucharh,l,uchar*p){write_com(0x80+h*0x40+l);while(
5、*p!=' '){write_data(*p);p++;}}/*初始化函数*/voidLcdInit(){lcdrw=0;delay(5);lcden=0;//使能位置低电平write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);delayl(20);}voidTimeInit(){TMOD=0x10;//定时器1工作于方式1,16位不重装初值TH1=(65536-200)/256;//定时200us(5KHz)TL1=(6553
6、6-200)%256;EA=1;ET1=1;TR1=1;}voidAdTr(bitADDA,ADDB,ADDC,ucharchannel){START=0;OE=0;START=1;START=0;//A/D转换启动信号,正脉冲启动选中的模拟信号开始转换ADA=ADDA;ADB=ADDB;ADC=ADDC;delay(5);while(EOC==0);//启动转换后EOC变为L,转换结束后变为HOE=1;getdata=P1;temp=getdata*1.0/255*500;OE=0;if(channel<4){tab1[4*chan
7、nel]=temp/100+0x30;tab1[4*channel+2]=(temp%100)/10+0x30;tab1[4*channel+3]=(temp%100)%10+0x30;}if(channel>=4){channel=channel-4;tab2[4*channel]=temp/100+0x30;tab2[4*channel+2]=(temp%100)/10+0x30;tab2[4*channel+3]=(temp%100)%10+0x30;}}voidkeyscan()/*按键2进行减1*/{uintk;if(key
8、1==0){m--;if(m<5){write_com(0x80+0x07);write_data(tab5[m-1]);write_com(0x80+0x47);for(k=0;k<4;k++)write_data(t