首页 ADC0804转换程序

ADC0804转换程序

举报
开通vip

ADC0804转换程序ADC0804转换程序 #include unsigned char code seg7code[10]={ox3f,0x06,0x5b,x04f,0x66,0x6d,0x7d,0x07,0x6f}; //显示段码 sbit int1=P3^3; //定义管脚功能 sbit cs=P3^2; //使能端 sbit wr=P3^6; //写端口 sbit rd=P3^7; //读端口 void delay (unsigned int tc) //显示延时程序 { while(tc !=0) { ...

ADC0804转换程序
ADC0804转换程序 #include unsigned char code seg7code[10]={ox3f,0x06,0x5b,x04f,0x66,0x6d,0x7d,0x07,0x6f}; //显示段码 sbit int1=P3^3; //定义管脚功能 sbit cs=P3^2; //使能端 sbit wr=P3^6; //写端口 sbit rd=P3^7; //读端口 void delay (unsigned int tc) //显示延时程序 { while(tc !=0) { unsigned int i; for(i=0;i<100;i++); tc--; } } unsigned char adc0804(void) //读AD0804子程序 { unsigned char addata,i; rd=1; wr=1; int1=1;//读ADC0804前准备 cs=0; wr=0; wr=1;//启动ADC0804开始测电压 while(int1=1);//查询等待A/D转换完毕产生的INT(低电平有效)信号 rd=0;//开始转换后数据 i=1;i=i;//无意义语句,用于延时等待ADC90804读数完毕 addata=P1;//读出的数据赋给addata rd=1; cs=1;//读数完毕 return(addata);//返回最后读出的数据 } unsigned int datpro(void)//adc0804读出的数据处理 { unsigned char x; unsigned int dianyah,dianyal;//用于存储读出数据的高字节和低字节 unsigned int dianya=0;//存储最后处理完的结果,注意数据类型 for(x=0;x<10,x++) { dianya=adc0804()+dianya; } dianya=dianya/10;//求平均值 dianyah=dianya&0xf0;//屏蔽低四位 dianyah=dianyah>>4;//右移四位,取出高四位 dianyal=dianya&0x0f;//屏蔽低高四位,取出低四位】 dianya=dianya*20+dianyah*320;//最后的结果是一个四位,便于显示 return(dianya);//返回最后处理结果 } void Led() { unsigned int date; date=datpro();//调用数据处理最后结果 P2=P2&0xef; P0=seg7code[date/100]|0x80;//输出个位数和小数点 delay(8); P2=P2|0xf0;P2=P2&0xdf; P0=seg7code[date%1000/100];//输出小数点后第一位 delay(8); P2=P2|0xf0;P2=P2&0xdf; P0=seg7code[date%100/10];//输出小数点后第二位 delay(8); P2=P2|0xf0;P2=P2&0xdf; P0=seg7code[date%10];//输出小数点后第三位 delay(8); P2=P2|0xf0; } void mian() { while(1) { Led();//只需调用显示函数 } } //名称:单片机控制ADC0804模数转换实现电压测量(0--5v) //芯片:AT89C52 //晶振:12M #include #include(intrins.h) #define uchar unsigned char #defien uint unsigned int #defien ad0_7 P0 //AD数据口 sbit cs=P1^0; //芯片选择信号,控制芯片的启动和结果读取,低电平有效 sbit rd=P1^1; //读数据控制,低电平有效 sbit wr=P1^2; //AD转换启动控制,上升沿有效 uchar led[10]={0xc0;0xf9;0xa4;0xb0;0x99;0x92;0x82;0xf8;0x80;0x90}; //5ms延时子程序 void delay(uint i) { uint j; for(;i>0;i--) for(j=0;j<410;j++); } //启动AD转换子程序 void start_ad(void) { cs=0;//允许进行AD转换 wr=0;_nop_();wr=1;//wr由低变高时,AD开始转换 while(intr); cs=1;//停止AD转换 } //读AD数据子程序 read_ad() { uint ad_data; ad0_7=0xff; cs=0;//允许读 rd=0;//读取转换数据结果数据结果 _nop_(); ad_dara=ad0_7;//把数据存到ad_data中 rd=1;cs=1; return(ad_data); } /*数据处理与显示子程序 说明当输入电压为5V时,AD输出为FFH,即输入电压=AD数据*(5/255)=AD数据/(255/5)=AD 数据/51 用四位数码管进行显示,数码管的A-H接于P3口,公共端从最低位是P2.0,最高位是P2.3 */ void data_shout(uint ad_data) { uint a=50,one,two,three,four; four=ad_data/51;//第四位数码管(最高位) three=ad_data%51*10/51;//第三位数码管 two=ad_data%51*10%51*10/51;//第二位数码管 one=ad_data%51*10%51*10%51*10/51;//第一位数码管 while(a--) { P3=led[one]; P2=0xfe; delay(1); P3=led[two]; P2=0xfd; delay(1); P3=led[three]; P2=0xfb; delay(1); P3=led[four]-0x80; P2=0xf7; delay(1); } } void main() { while(1) { start_ad();//启动AD data_shout(read_ad);//读AD数据并显示 } }
本文档为【ADC0804转换程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_260251
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:6
分类:互联网
上传时间:2017-09-17
浏览量:37