51单片机数字电压表

上传人:洪易 文档编号:40236892 上传时间:2018-05-25 格式:DOC 页数:5 大小:77.50KB
返回 下载 相关 举报
51单片机数字电压表_第1页
第1页 / 共5页
51单片机数字电压表_第2页
第2页 / 共5页
51单片机数字电压表_第3页
第3页 / 共5页
51单片机数字电压表_第4页
第4页 / 共5页
51单片机数字电压表_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《51单片机数字电压表》由会员分享,可在线阅读,更多相关《51单片机数字电压表(5页珍藏版)》请在金锄头文库上搜索。

1、28 数字电压表1 实验任务利用单片机 AT89S51 与 ADC0809 设计一个数字电压表,能够测量 05V 之间的直流电压值,四位数码显示,但要求使用的元器件数目 最少。2 电路原理图图 1.28.13 系统板上硬件连线a) 把“单片机系统”区域中的 P1.0P1.7 与“动态数码显示”区 域中的 ABCDEFGH 端口用 8 芯排线连接。b) 把“单片机系统”区域中的 P2.0P2.7 与“动态数码显示”区域 中的 S1S2S3S4S5S6S7S8 端口用 8 芯排线连接。c) 把“单片机系统”区域中的 P3.0 与“模数转换模块”区域中的 ST 端子用导线相连接。d) 把“单片机系统

2、”区域中的 P3.1 与“模数转换模块”区域中的 OE 端子用导线相连接。e) 把“单片机系统”区域中的 P3.2 与“模数转换模块”区域中的 EOC 端子用导线相连接。f) 把“单片机系统”区域中的 P3.3 与“模数转换模块”区域中的 CLK 端子用导线相连接。g) 把“模数转换模块”区域中的 A2A1A0 端子用导线连接到“电源 模块”区域中的 GND 端子上。h) 把“模数转换模块”区域中的 IN0 端子用导线连接到“三路可调 电压模块”区域中的 VR1 端子上。i) 把“单片机系统”区域中的 P0.0P0.7 用 8 芯排线连接到“模 数转换模块”区域中的 D0D1D2D3D4D5D

3、6D7 端子上。4 程序设计内容i. 由于 ADC0809 在进行 A/D 转换时需 要有 CLK 信号,而此时的 ADC0809 的 CLK 是接在 AT89S51 单 片机的 P3.3 端口上,也就是要求从 P3.3 输出 CLK 信号供 ADC0809 使用。因此产生 CLK 信号的方法就得用软件来产生 了。ii. 由于 ADC0809 的参考电压 VREFVCC,所以转换之后的数据要经过数据处理,在数码管 上显示出电压值。实际显示的电压值 (D/256*VREF)5 汇编源程序(略)6C 语言源程序#include unsigned char code dispbitcode=0xfe

4、,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;unsigned char dispbuf8=10,10,10,10,0,0,0,0;unsigned char dispcount;unsigned char getdata;unsigned int temp;unsigned char i;sbit ST=P30;sbit OE=P31;sbit EOC=P32;sbit CLK=P33;void mai

5、n(void)ST=0;OE=0;ET0=1;ET1=1;EA=1;TMOD=0x12;TH0=216;TL0=216;TH1=(65536-4000)/256;TL1=(65536-4000)%256;TR1=1;TR0=1;ST=1;ST=0;while(1)if(EOC=1)OE=1;getdata=P0;OE=0;temp=getdata*235;temp=temp/128;i=5;dispbuf0=10;dispbuf1=10;dispbuf2=10;dispbuf3=10;dispbuf4=10;dispbuf5=0;dispbuf6=0;dispbuf7=0;while(temp

6、/10) dispbufi=temp%10; temp=temp/10; i+; dispbufi=temp; ST=1; ST=0; void t0(void) interrupt 1 using 0 CLK=CLK; void t1(void) interrupt 3 using 0 TH1=(65536-4000)/256; TL1=(65536-4000)%256; P1=dispcodedispbufdispcount; P2=dispbitcodedispcount; if(dispcount=7) P1=P1 | 0x80; dispcount+; if(dispcount=8) dispcount=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号