实验七、直流数字电压表设计
一、 实验目的
掌握LED动态显示和A/D转换接口设计方法。
二、 实验内容
1、按照教材图A.94,绘制实验7基本电路原理图; 2、采用LED动态显示原理和查询法AD转换编程; 3、实现如下功能:程序运行时以十进制数形式实时显示电位器的输出电压。 3、观察仿真结果,完成实验报告。
三、 实验要求
提交的实验报告中应包括:电路原理图,AD转换与动态显示工作原理分析,源程序及仿真运行效果截图,循环变量i,j的取值对动态显示效果的影响规律分析以及实验小结。
提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验七。
1、电路原理图
2、AD转换与动态显示工作原理分析
;..
.
本实验是使用A/D转换器将模拟信号转换为数字信号,A/D转换器与80C51连接在一起,转换结果通过80C51以十进制形式动态显示在四个共阴极数码管上,用过改变模拟信号大小可以显示0-255之间任意数字。其中A/D转换器启动信号由软件模拟产生,时钟信号由Proteus的DClock信号发生器产生。
3、源程序及仿真运行效果截图 源程序:
#include unsigned char ad_result=0; unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(void){ unsigned char i,j; for(i=0;i<100;i++) for(j=0;j<50;j++); } void disp(void){ //if(ad_result/100==0)P0=0; //else P0=table[ad_result/100]; P0=table[ad_result/100]; led2=0; delay(); led2=1; //if(ad_result/100==0&&ad_result/10==0)P0=0; //else P0=table[(ad_result/10)%10]; P0=table[(ad_result/10)%10]; led1=0; delay(); led1=1; P0=table[ad_result%10]; led0=0; ;.. . delay(); led0=1; } _ad_clock() interrupt 1{ clk=~clk; } void main(void){ TMOD=0x02; TH0=TL0=0xA0; ET0=EA=1; TR0=1; while(1){ _st=0; _st=1; _st=0; while(!_eoc); _oe=1; ad_result=P1; _oe=0; disp(); } } ;.. . 4、循环变量i,j的取值对动态显示效果的影响规律分析 循环变量在延时函数delay()中,用for循环来控制延时的精准度。i值与j值越大,延迟时间越长。 5、实验小结 ;.. . 这次实验中间遇到了一些困难,刚开始无法程序无法运行,自己没有找到错误,后来通过向同学请教才找到了错误。之后在里边加入了中断才能顺利仿真。通过这次实验自己对于单片机的了解更加深了一步,同时也了解到了自己的短处,感觉收获很大。 ;.. 因篇幅问题不能全部显示,请点此查看更多更全内容