- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
ADC0808数模转换与显示__课程设计
ADC0808数模转换与显示__课程设计 图3-1-3 ADC0808的接线图 图3-1-4 ADC0808的时钟电路设置 图3-2-1 设计原理电路图 IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道传送给AT89C51芯片的P1口,AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给六位LED,同时它还通过其六位I/O口P0.0、P0.1、P0.2、P0.3、P0.4、P0.5产生位选信号控制数码管的亮灭。此外,ADC0808的CLOCK用DCLOCK激励源,当激励源发出正脉冲时启动A/D转换,P3.5检测A/D转换是否完成,无论转换成功,均从P1口读取结果送给LED显示出来。[] 硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。 3.3程序设计 根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图3-3-1所示。[] A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图3-3-2所示。[] 图3-3-1 主程序框图 图3-3-2 A/D转换流程图 3.4仿真结果与分析 1.当IN0口输入电压值为0V时,显示结果如图所示,测量误差为0V。 图3-4-1 输入电压为0V时,LED的显示结果 4.00 3.984 0.40 附录 AT89C51单片机程序 #include REG51.H #include math.h #include timer.h #define _nop {} unsigned char shuma[]={0xC0,0xF9,0xA4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f}; sbit N1=P0^0;sbit N2=P0^1;sbit N3=P0^2;sbit N4=P0^3;sbit N5=P0^4;sbit N6=P0^5; sbit Point=P2^7;int V=0; void Delay_nms(unsigned char n) { unsigned char a; for(;n0;n--) { for(a=0;a100;a++) { _nop;_nop;_nop; _nop; } }} void display(int volt) {unsigned char dis[6]; int i,a,j=0,cn=0;for(i=0;i6;i++) {dis[i]=0;} a=volt;if(a==0) {dis[0]=0;cn=1;} else{j=0;while(a0){if(j=6) break; dis[cn]=a%10; j++;cn++; a=a/10;}} //dis[1]=9; for(i=0;i6;i++) {N1=0;N2=0;N3=0;N4=0;N5=0;N6=0; P2=shuma[ dis[i] ]; if(i==0)N6=1; } else if(i==1){N5=1;if(cn==2){Point=0;}} else if(i==2){N4=1;if(cn==3) {Point=0;}} else if(i==3) { N3=1;if(cn==4){ Point=0;} } else if(i==4) {N2=1;if(cn==5) {Point=0;}} else if(i==5){N1=1; if(cn==6) {Point=0;}} Delay_nms(5);}} void main() { unsigned char key,i; IniTimer(25000); StartTimer(); V=48367; while(1) { display(V); } } 1 华南理工大学广州学院电气工程系生产实习报告 开始 初始化 调用A/D转换子程序 调用显示子程序 结束
文档评论(0)