1、《电子系统设计与实践》 课程论文 (2015-2016学年第二学期) 班 级:电子134班 学 号: 201305014437 姓 名:郑维取 指导老师:许森 完成时间: 2016年 05 月 19 日 简易数字电压表设计 学生姓名:郑维取 学号:201305014437 指导老师:许森 浙江树人大学信息科技学院电子134班 摘要 电压表应用十分广泛,但大部分是模拟电压表,而由于其特性,反应速度慢,读数麻烦并且误差较大,所以为适应不断快速发展的高速信号领域,已经广泛使用数字电压表.本实验设计主要讲述了数字电压表的设计过程,主要包括硬件设计和程序设计,硬件
2、主要包括以AT89S51单片机为主要控制电路、数据采样电路、显示电路等,是基于51单片机开发平台实现的一种数字电压表系统。该设计采用AT89S51单片机作为控制核心,驱动控制四块数码管显示被测电压,以ADC0809为模数转换数据采样,实现被测电压的数据采样,使得该数字电压表能够测量0-3.3V之间的直流电压值. 关键词:单片机;AT89S51;ADC0809;显示电路 1。引言 广泛的自动控制领域中,需要有类似微型计算机功能的支持,单常常有不能把计算机安装在设备里面,因此,微型控制器的一个重要分支(单片机)应运而生。随着单片机技术的发展,单片机以其稳定可靠、体积小、功耗低、价格低廉的特
3、点广泛应用于多重需要计算机控制功能的现场控制领域和实时控单片机控制系统.为了更好的学习和使用单片机,我们利用单片机制作了一数字电压表. 2. 数字电压表原理及框图 2.1 系统设计原理 硬件设计原理:电阻R11上的电压经过ADC0832芯片进行模数转换后,由AT89S52芯片的P1口连接到驱动电路,当驱动电路工作使数码管显示前面转换过来的数字。 在接通电源后,当按下SW1后AT89S52不工作,使数码管全部变暗,当SW1一松开后AT89S52工作,数码管又变亮.晶振电路中的两个30pF的电容具有微调的作用。 2。2 系统设计框图 2。2。1 硬件系统原理框图 2。2。2
4、 系统原理图 2.3 系统设计方案 AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器.AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。AT89S5与AT89c52相比,前者的性能比后者高,所以本设计采用AT89S52芯片. 数模转换芯片
5、ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换,转换时间为100μs。 ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求.其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~3.3V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。由于ADC0832芯片的转换时间短,并且性能比较高,所以采用ADC0832作为数模转换芯片。智能家居又称智能住宅,它的最基本目
6、的是为人们提供一个舒适、安全、高效、方便、实用的生活环境。对智能家居产品来说,最重要的是应立足于客户的对家居环境的具体需求,以实用为核心,摒弃掉那些华而不实的功能。同时还要充分考虑到用户体验,注重操作的便利化和直观性,注重完美的图形化控制界面.智能家居系统大部分时间都在运行,必须高度重视系统的安全性、可靠性和容错能力,保证系统正常安全使用、质量、性能良好,具备应付各种复杂环境变化的能力。 3. 数字电压表硬件电路设计 3.1 实验所需元器件 1。 80C51芯片 1块 2. ADC0809芯片 1块 3. 4位一
7、体数码 1个 4. 按键开关 3个 5. 2。2KΩ电阻 1个 6. 4。7KΩ电阻 1个 7. 10KΩ电阻 3个 8. 导线 若干 9. 电容 3个 10. 5V电源 1块 3.2 主要芯片介绍 a) ADC0809的内部结构。ADC0809的内部逻辑结构图如图下 图中多路开关可选通8个
8、模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连。 ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路.IN0-IN7:8条模拟量输入通道地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效.当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信
9、号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换.A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入 ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请.当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。 b) 80C51芯片 芯片的引脚描述 HMOS制造工艺的M
10、CS—51单片机都采用40引脚的直插封装(DIP方式),制造工艺为CHMOS的80C51/80C31芯片除采用DIP封装方式外,还采用方型封装工艺,引脚排列如图。其中方型封装的CHMOS芯片有44只引脚,但其中4只引脚(标有NC的引脚1、12、23、34)是不使用的。在以后的讨论中,除有特殊说明以外,所述内容皆适用于CHMOS芯片. 如图所示,是MCS—51的逻辑符号图。在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚. 3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/
11、VPP 。 ①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚之间连接一个约8。2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。 VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失.当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0。5V)内,VPD就向内部RAM提供备用电源. ②ALE/PROG(30脚):当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为
12、振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。 对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG). ③PSEN(29脚):此脚的输出是外部程序存储器的读选通信号.在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效.但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。 ④EA/VPP(引脚):当E
13、A端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器.对于常用的80C51来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。 对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。 4、输入/输出(I/O)引脚P0、P1、P2、P3(共32根) ①P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时
14、与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。 ②P1口(1脚至8脚):是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口.P1口能驱动(吸收或输出电流)4个LS型的TTL负载。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1。1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址. ③P2口(21脚至28脚):是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程
15、序验证期间,它接收高8位地址.P2可以驱动(吸收或输出电流)4个LS型的TTL负载。 ④P3口(10脚至17脚):是准双向8位I/O口,在MCS—51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS型的TTL负载。 作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。 作为第二功能使用时,各引脚的定义如表所示。 值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。 如表 3。3 设计方案 3.3。1 硬件设计 上图为硬件的总体框图,可分为四个模块。模数转换使用ADC0809芯片,它将输入的模拟
16、电压量转换为一个8位的二进制数字,然后进入到单片机AT80S51控制单元,经过驱动处理模块用数码管显示出直流电压值。另外注意ADC0809芯片输入电压不可大于5V。 3。3。2 软件设计 单片机中所发程序的流程图如下图 软件设计仿真所用程序:附录A 4. 模拟仿真结果 5. 结论与心得体会 通过本次实验,了解了AD0809的作用以及其的接口作用,用Proteus进行仿真,了解了Proteus软件的基本使用方法,用keil转换伟福识别语言,使该软件能够识别C语言,也加深了对单片机模拟仿真软件的认识和理解;也在实际操作连接外电路的过程中,遇到了许多问题,意识到自己知识的匮乏,自己的动手
17、能力也亟待提高,无疑这对以后的学习是种无形的激励。同时在寻求解决问题,查找资料,向老师请教的同时,提高了自己做设计实验的能力,也学会了如何利用图书资源和自身知识去转换为实际应用,为以后的学习提高奠定了基础,总之这次实验我受益匪浅。 参考文献 [1] 童诗白主编。模拟电子技术基础(第三版)[M]。北京:高教出版社. [2] 阎石主编.数字电子技术基础(第四版/第五版)[M]。 北京:高教出版社. [3] 金唯香、谢玉梅主编.电子测试技术[M].长沙:湖南大学出版社。 [4] 实用电子电路手册编写组。实用电子电路手册(数字电路分册)[M].北京: 高教出版社. [5] 姚福
18、安。电子电路设计与实践[M]。济南:山东科学技术出版社. [6] 将卓勤,邓玉元主编。Multisim2001及其在电子设计中的应用[M]。 附录A #include 〈reg52.h> #define uint unsigned int #define uchar unsigned char uchar code LEDData1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code LEDData2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0x
19、ef};//0。~9.共阳 sbit OE = P1^0; sbit EOC = P1^1; sbit ST = P1^2; sbit CLK = P1^3; sbit wei1 = P2 ^ 0;//数码管显示用 sbit wei2 = P2 ^ 1; sbit wei3 = P2 ^ 2; sbit wei4 = P2 ^ 3; float x; uchar a = 0, b = 0, c = 0,d=0,t = 0; 开 始 初 始 化(8255,中断) uchar temp=0; void Delay(uint ms) { uc
20、har i; while(ms-—) { for(i=0;i〈120;i++); } } void Display(void)//数码管显示 { wei4 = 0;//第4个数码管显示 P0 = LEDData1[d]; Delay(4); wei4 = 1; wei3 = 0;//第3个数码管显示 P0 = LEDData1[c]; Delay(4); wei3 = 1; wei2 = 0;//第2个数码管显示 P0 = LEDData1[b]; Delay(4); wei2 = 1;
21、 wei1 = 0 //第1个数码管显示 P0 = LEDData2[a]; Delay(4); wei1 = 1; } void AD0809() { ST = 0; ST =1; ST = 0; while(EOC == 0); OE = 1; temp=P3; Delay(10); x = temp/51。0 //255转换成5V量程 a = x; b = x*10—a*10; c = x*100—a*100—b*0; d= x*1000—a*1000-b*100—c*10; OE = 0; } void T0_csh() { TMOD = 0x02; TH0 = 0x14; TL0 = 0x00; IE = 0x82; TR0 = 1; } void main() { T0_csh(); P1 = 0x3f; while(1) { AD0809(); Display(); } } void Timer0_INT() interrupt 1 { CLK = !CLK; }






