1、 8通道的数字电压表 设计方案 目录 第一章 设计分析 1矚慫润厲钐瘗睞枥庑赖。 第二章 硬件电路分析 3聞創沟燴鐺險爱氇谴净。 2.1单片机AT89C51的分析 3残骛楼諍锩瀨濟溆塹籟。 2.2 ADC0808的分析 4酽锕极額閉镇桧猪訣锥。 2.3显示译码器和LED分析 5彈贸摄尔霁毙攬砖卤庑。 第三章 程序设计分析 6謀荞抟箧飆鐸怼类蒋薔。 3.1主函数 6厦礴恳蹒骈時盡继價骚。 3.2A/D转换函数 6茕桢广鳓鯡选块网羈泪。 3.4中断服务函数 6鹅娅尽損鹌惨歷茏鴛賴。 第四章 调试过程分析及仿真 7籟丛妈羥为贍
2、偾蛏练淨。 第五章 总结 8預頌圣鉉儐歲龈讶骅籴。 第六章 附录 9渗釤呛俨匀谔鱉调硯錦。 第一章 设计分析 设计一个8通道的电压表,基于AT89X51单片机(在professional中使用的AT89C51)和ADC0809(在professional中使用的ADC0808)芯片实现模数转换,由74247显示译码器和4位LED数码管连接并显示,具有通道自选和量程(0-5v的电压)变换的功能。铙誅卧泻噦圣骋贶頂廡。 设计方案如下: 采用定时器/计数器T0、T1定时,T0定时溢出中断时对P3.7取反,输出频率为10KHZ的方波信号,作为ADC0808的转
3、换时钟信号,T1定时1MS,定时溢出中断后,在中断服务程序中完成在数码管显示A/D转换结果的任务。擁締凤袜备訊顎轮烂蔷。 采用主程序、子程序结构。主程序中完成定时器的初始化设置,产生A/D转换的启动,在转换过程中判别转换是否结束。当转换结束时,让输入允许OE有效,将转换结果通过P0口读到单片机内部RAM单元格储存。将二进制数转换为十进制数的程序设计成子程序,在主程序中调用。将LED数码管的动态显示设计成子程序,在T1的中断服务程序中调用。贓熱俣阃歲匱阊邺镓騷。 开始 T0,T1的初始化 允许T0,TI中断,启动定时 转换结束 允许输入ADC0808输出 将转换结果读入到单
4、片机 禁止输出ADC0808输出 调用数制转换子程序 启动A/D转换器开始转换 no yes 坛摶乡囂忏蒌鍥铃氈淚。 第二章 硬件电路分析 2.1单片机AT89C51的分析 AT89C51 的引脚 (1) 工作电源端 Vcc:接+5V电源 Vss:接地 (2) 晶振引脚(时钟电路) XTAL1:芯片内部振荡电路输入端。 XTAL2:芯片内部振荡电路输出端 (3) 并行I/O口引脚 (4) 控制引脚 ALE:地址锁存使能。当ALE为高电平时,P0口上的信息为低8位地址,在ALE信号的下降沿时将P0口上的低8位地址送地址锁存器锁存起来;在ALE为低电平期间,
5、P0口上的信息为指令或数据信息,这样就能实现低位地址的数据分离。蜡變黲癟報伥铉锚鈰赘。 RST: 复位信号。复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。单片机的复位方式可由手动复位方式完成。買鲷鴯譖昙膚遙闫撷凄。 2.2 ADC0808的分析 ADC0808是一种较为常用的8路模拟输入量,芯片的主要部分是一个8位的逐次比较式 A/D转换器。为了能实现8路模拟信号的分时采集,在芯片内部设置了多路模拟开关及通道地址锁存和译码电路,因此能够对多路模拟信号进行分时采集和转换。转换后的数据送入三态输出数据锁存器。綾镝鯛駕櫬鹕踪韦辚糴。 ADC0808的引脚排布
6、 IN0~IN7:8路模拟量输入端 DB0~DB7:数字量输入端 START:启动脉冲信号输入端,脉冲上升沿复位0808,下降沿启动A/D 转换 ALE:地址锁存信号,高电平有效时把三个地址信号送入地址所存器,并经地址译码得到地址输出,用以选择相应的模拟输入通道。驅踬髏彦浃绥譎饴憂锦。 EOC:转换结束信号。转换开始时变低,转换结束时变高,变高时降转换结果打入三态输出锁存器。 OE:输出允许信号输入端 CLOCK:时钟输入信号,最高允许值为640KHZ VREF(+):正基准电压输入端 VREF(-):负基准电压输入端 GND:接地 Vcc:电源电压 2.3显示译码器
7、和LED分析 共阳极的七段译码器是将十进制的数转化成字形码在与P1口的高四位位控码共同作用下显示出当前电压。 第三章 程序设计分析 3.1主函数 主程序内容首先是程序初始化,初始化的内容有定时器初始化,外部中断初始化,然后一个无限循环,循环内容为P2赋值,控制所选通道,调用A/D转换程序和调用BCD显示程序。猫虿驢绘燈鮒诛髅貺庑。 3.2A/D转换函数 START赋值启动转换,进行转换,然后在判断是否转换结束,如果结束之后就允许输出信号,读入转化二进制,然后在通过译码器把二进制转换为十进制输出显示。锹籁饗迳琐筆襖鸥娅薔。 3.3BCD显示函数 输出所选通道,进行延时,然后输
8、出整数和小数显示代码,点亮小数点,进行延时, 3.4中断服务函数 定时器中断向CLOCK输入方波信号,部中断控制所选通道。 第四章 调试过程分析及仿真 写出程序后,进行目标构造,修改错误产生hex文件。作出图,并对其进行仿真。 仿真效果如下: 第五章 总结 这份作业其实做了很久,我觉得关键还是编程,一直没有编好程序,所以其他的所有东西都不能做。即使老师分析过一通道和八通道的程序,还是不会啊。然后后来写出来的程序有又很多的错误。最后请教同学,帮助我改错,最后终于对了。所以,以后要好好学习。不然写个程序都不会。还要多一点的实际操作,对程序的输入还要更加仔细点。不然每次都把时间花费
9、在找错误上面。细心,细心,在细心啊。第六章 附录構氽頑黉碩饨荠龈话骛。
#include
10、 sbit DP=P3^5; sbit CLK=P3^7; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; void bcd(); void main() { TMOD=0x02; IE=0x86; TCON=0x04; IP=0; TH0=206; TL0=206; TR0=1; while(1) { P2=M[t]; bcd(); ST=0; ST=1; ST=0; while(EOC==0) {;} OE=1; g=P0; OE=0; dispbuf[0]=g/51; dispbuf[1]=((g%51)*10)/51; } } void bcd() { P1=N[t]|dispcode[0]; for(i=0;i<100;i++); P1=dispcode[2]|dispbuf[0]; DP=0; for(i=0;i<100;i++); P1=dispcode[3]|dispbuf[1]; DP=1; for(i=0;i<100;i++); } void EXT1()interrupt 3 { if(t<7)t++; else t=0; } void t0()interrupt 1 { CLK=~CLK; } 12






