数字电压表的单片机设计(C语言编程)

上传人:文库****9 文档编号:152230721 上传时间:2020-11-22 格式:DOC 页数:20 大小:449.50KB
返回 下载 相关 举报
数字电压表的单片机设计(C语言编程)_第1页
第1页 / 共20页
数字电压表的单片机设计(C语言编程)_第2页
第2页 / 共20页
数字电压表的单片机设计(C语言编程)_第3页
第3页 / 共20页
数字电压表的单片机设计(C语言编程)_第4页
第4页 / 共20页
数字电压表的单片机设计(C语言编程)_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数字电压表的单片机设计(C语言编程)》由会员分享,可在线阅读,更多相关《数字电压表的单片机设计(C语言编程)(20页珍藏版)》请在金锄头文库上搜索。

1、目录一 设计总体方案11.1 设计要求11.2 设计思路11.3 设计方案1二 硬件电路元件分析与设计22.1 单片机系统22.1.1 AT89C51性能22.1.2 AT89C51各引脚功能22.2 A/D转换模块32.2.1 ADC0808主要特性32.2.2 ADC0808工作流程42.3 LED显示系统设计52.3.1 LED显示器的选择52.3.2 LED译码方式52.4 双D正沿触发器62.5 总体电路设计7三 程序设计93.1 程序设计总方案93.2 系统子程序设计93.2.1 初始化程序93.2.2 A/D转换子程序93.2.3 显示子程序10四 仿真调试124.1 软件调试1

2、24.2 显示结果及误差分析124.2.1 显示结果124.2.2 误差分析13结束15参考文献16附录17一 设计总体方案1.1 设计要求 以AT89C51单片机为核心器件,组成一个简单的直流数字电压表。能够测量0-5V之间的直流电压值。电压显示用4位一体的LED数码管显示,尽量使用较少的元器件。 1.2 设计思路根据设计要求,选择AT89C51单片机为核心控制器件。A/D转换采用ADC0808实现,与单片机接口为P0口和P3口的高四位引脚。电压显示采用4位一体的LED数码管。LED数码的段码输入,由并行端口P1产生:位码输入,用并行端口P2高四位产生。1.3 设计方案硬件电路设计由5个部分

3、组成; A/D转换电路,AT89C51单片机系统,LED显示系统、时钟电路、测量电压输入电路。硬件电路设计框图如图1-1图1-1 数字电压表系统硬件设计框图二 硬件电路元件分析与设计2.1 单片机系统2.1.1 AT89C51性能 AT89C51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;全静态工作:0-24MHz;128*8B内部RAM;4个位可编程I/O口线;2个16位定时/计数器;5个中断源;2个串行通道;片内振荡器和掉电模式。 2.1.2 AT89C51各引脚功能引脚配置如图2-1所示。图2-1 AT89C51的引脚图AT89C51芯片的各引脚功能为:P0口:

4、这组引脚共有8条,P0.0为最低位。这8个引脚有两种不同的功能,分别适用于不同的情况,第一种情况是89C51不带外存储器,P0口可以为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89C51带片外存储器,P0.0-P0.7在CPU访问片外存储器时先传送片外存储器的低8位地址,然后传送CPU对片外存储器的读/写数据。P0口为开漏输出,在作为通用I/O使用时,需要在外部用电阻上拉。P1口:这8个引脚和P0口的8个引脚类似,P1.7为最高位,P1.0为最低位,当P1口作为通

5、用I/O口使用时,P1.0-P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。P2口:这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用I/O口使用,它的第一功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不是像P0口那样传送存储器的读/写数据。P3口:这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同,如下表1所示:表1 P3口各位的第二功能P3口各位第二功能P3.0 RXT(串行口输入)P3.1 TXD(串行口输出)P3.2INT0(外部中断0输入)P3.3INT1(外部中断

6、1输入)P3.4T0(定时器/计数器0的外部输入)P3.5T1(定时器/计数器1的外部输入)P3.6WR(片外数据存储器写允许) P3.7RD(片外数据存储器读允许)Vcc为+5V电源线,Vss接地。ALE:地址锁存允许线,配合P0口的第二功能使用,在访问外部存储器时,89C51的CPU在P0.0-P0.7引脚线去传送随后而来的片外存储器读/写数据。在不访问片外存储器时,89C51自动在ALE线上输出频率为1/6振荡器频率的脉冲序列。该脉冲序列可以作为外部时钟源或定时脉冲使用。EA:片外存储器访问选择线,可以控制89C51使用片内ROM或使用片外ROM,若EA=0,则允许使用片内ROM, 若E

7、A=1,则只使用片外ROM。PSEN:片外ROM的选通线,在访问片外ROM时,89C51自动在/PSEN线上产生一个负脉冲,作为片外ROM芯片的读选通信号。RST:复位线,可以使89C51处于复位(即初始化)工作状态。通常89C51复位有自动上电复位和人工按键复位两种。XTAL1和XTAL2:片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89C51片内OSC(振荡器)的定时反馈回路。2.2 A/D转换模块2.2.1 ADC0808主要特性ADC0808主要特性:8路8位A/D转换器,即分辨率8位;具有锁存控制的8路模拟开关;易与各种微控制器接口;可锁存三态输出,输出与TT

8、L兼容;转换时间:100s;转换精度:0.2%;单个+5V电源供电;模拟输入电压范围0- +5V,无需外部零点和满度调整;低功耗,约15mW。 ADC0808芯片有28条引脚,采用双列直插式封装,其引脚图如图2-2所示。 图2-2 ADC0808引脚图下面说明各个引脚功能:IN0-IN7(8条):8路模拟量输入线,用于输入和控制被转换的模拟电压。地址输入控制(4条):ALE:地址锁存允许输入线,高电平有效,当ALE为高电平时,为地址输入线,用于选择IN0-IN7上那一条模拟电压送给比较器进行A/D转换。ADDA,ADDB,ADDC:3位地址输入线,用于选择8路模拟输入中的一路。START:ST

9、ART为“启动脉冲”输入法,该线上正脉冲由CPU送来,宽度应大于100ns,上升沿清零SAR,下降沿启动ADC工作。EOC: EOC为转换结束输出线,该线上高电平表示A/D转换已结束,数字量已锁入三态输出锁存器。OUT1-OUT8:数字量输出端,OUT8为高位。OE:OE为输出允许端,高电平能使D1-D8引脚上输出转换后的数字量。VREF+、VREF-:参考电压输入量,给电阻阶梯网络供给标准电压。 CLOCK:时钟输入端2.2.2 ADC0808工作流程ADC0808的工作流程为:(1)输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器从8路模拟通道中选通1路模拟量送给比较器。

10、(2)送START一高脉冲,START的上升沿使逐次寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。(3)当转换结束时,转换的结果送入到输出三态锁存器中,并使EOC信号回到高电平,通知CPU已转换结束。(4)当CPU执行一读数据指令时,使OE为高电平,则从输出端OUT1-OUT8读出数据。2.3 LED显示系统设计2.3.1 LED显示器的选择在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LED显示器供选择,在本设计中,选择4位一体的数码型LED显示器,即7SEG-MPX4-CC-BLUE。本系统中前一位显示电压的整数位,即个位,后两位

11、显示电压的小数位。7SEG-MPX4-CC-BLUE显示器引脚如图2-3所示,是一个共阴极接法的4位LED数码显示管,其中a,b,c,e,f,g为4位LED各段的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端。本电路中P1口控制段选信号,P2.4-P2.7控制位选信号。 图2-3 7SEG-MPX4-CC-BLUE 引脚2.3.2 LED译码方式译码方式是指由显示字符转换得到对应的字段码的方式,对于LED数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。硬件译码是指利用专门的硬件电路来实现显示字符码的转换。软件译码就是编写软件译码程序,通过译码程序来得到要显示的字

12、符的字段码,译码程序通常为查表程序。本设计系统中为了简化硬件线路设计,LED译码采用软件编程来实现。由于本设计采用的是共阴极LED,其对应的字符和字段码如下表2所示。表2 共阴极字段码表显示字符共阴极字段码03FH106H25BH34FH466H56DH67DH707H87FH96FH2.4 双D正沿触发器74LS74这个集成块是一个双D触发器,其功能比较的多,可用作寄存器,移位寄存器,振荡器,单稳态,分频计数器等功能。74LS74是个双D触发器,把其中的一个D触发器的Q非输出端接到D输入端,时钟信号输入端CLOCK接时钟输入信号,这样每来一次CLOCK脉冲,D触发器的状态就会翻转一次,每两次

13、CLOCK脉冲就会使D触发器输出一个完整的正方波,这就实现了2分频。把同一片74LS74上的两路D触发器串联起来,其中一个D触发器的输出作为另一个D触发器的时钟信号,还可以实现4分频。74LS74引脚如图2-4所示图2-4 74LS74引脚2.5 总体电路设计经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图2-5所示图2-5 简易数字电压表电路图此电路的工作原理是:+5V模拟电压信号通过变阻器VR1分压后由ADC08008的IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传

14、送给AT89C51芯片的P0口,AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给四位LED,同时它还通过其四位I/O口P2.4、P2.5、P2.6、P2.7产生位选信号控制数码管的亮灭。此外,AT89C51还控制ADC0808的工作。其中,单片机AT89C51通过定时器中断从P3.3输出方波,接到ADC0808的CLOCK,P3.2发正脉冲启动A/D转换,P3.0检测A/D转换是否完成,转换完成后,P3.1置高从P1口读取转换结果送给LED显示出来。简易数字直流电压表的硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。三 程序设计3.1 程序设计总方案 根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序。初始化中主要对AT89C51,ADC0808的管脚和数码管的位选级所用的内存单元进行初始化设置。准备工作做好后启动ADC0808对INO脚输入进的0-5V电压模拟进行数据采集并转化成相对应的0-255十进制数字量。在数据处理子程序中,编写算法将0-255十进制数字量转化成0-5V的数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号