您的当前位置:首页正文

单片机直流数字电压表设计

来源:我们爱旅游
.

实验七、直流数字电压表设计

一、 实验目的

掌握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 sbit _st=P2^5; sbit _eoc=P2^6; sbit _oe=P2^7; sbit led0=P2^3; sbit led1=P2^2; sbit led2=P2^1; sbit clk=P2^4;

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、实验小结

;..

.

这次实验中间遇到了一些困难,刚开始无法程序无法运行,自己没有找到错误,后来通过向同学请教才找到了错误。之后在里边加入了中断才能顺利仿真。通过这次实验自己对于单片机的了解更加深了一步,同时也了解到了自己的短处,感觉收获很大。

;..

因篇幅问题不能全部显示,请点此查看更多更全内容