基于51单片机的数字电压表的设计说明Word格式文档下载.docx
《基于51单片机的数字电压表的设计说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字电压表的设计说明Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
1.1.1通道转换方案设计
方案一:
考虑到ADC0808的8路模拟量输入本质上也是模拟开关,因此可以利用其8个模拟通道中的3个作为通道转换器,即根据通道对应的电压测量围确定对应的电压方法倍数设计对应的放大电路。
方案二:
利用手动开关实现通道转换。
该方案可简化控制程序,消减系统开销。
缩短反应时间,不足之处在于操作麻烦。
综上所述:
方案二所需元件少、成本低且易于实现,则选此方案。
1.1.2显示部分方案设计
方案一:
单片机的P0、P2口分别接74LS248和ULN2003A芯片来驱动四位数码管
直接用单片机的P1、P2口驱动数码管,此处把ADC0808的输出端接P1口,因为P1口能够驱动数码管。
综上所述,两个方案都可行,但方案二所需元件少、成本低,则选择此方案。
第二章系统总体结构
2.1系统结构框图
根据项目要求,确定该系统的设计方案,图2-1为该系统设计方案的结构框图。
硬件电路由6各部分组成,即单片机、时钟电路、复位电路、LED显示电路、A/D装唤器和测量电压输入电路。
图2-1系统结构框图
2.2系统功能
在一切准备就绪以后,滑动变阻器RV1的阻值,A/D采样数据,经过单片机的处理,在4位一体的LED数码管管上显示当前电压值。
每改变一次RV1的阻值,在数码管上就会获得一个新的数值。
第3章硬件电路设计
3.1单片机的选择及时钟电路
根据初步设计方案的分析,设计这样一个简单的应用系统,可以选择带有EPROM的单片机,应用程序直接存储在片,不用在外部扩展程序存储器,电路可以简化。
此电路选择ATmel公司生产的AT89C51。
AT89系列与MCS-51系列单片机相比有两大优势:
第一,片程序存储器采用闪速存储器,使程序的写入更加方便;
第二,提供了更小尺寸的芯片,使整个电路体积更小。
它以较小的体积、良好的性价比倍受青睐。
单片机工作的时间基准是由时钟电路提供的。
在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。
电路中,电容C1和C2对震荡电路有微调的作用,通常的取值围位(30+10)pF。
石英晶体选择6MHz或12MHz都可以,其结果只是机器周期时间不同,影响计数器的计数初值,此设计取12MHz。
图3-1单片机最小系统
3.2驱动模块
该设计的驱动电路是由74LS245来驱动的。
74LS245是我们常用的芯片,用来驱动LED或其他设备,它是8路同相三态双向总线收发器,课双向传输数据。
74LS245还具有双向三态功能,既可以输出,也可以输入数据。
当51单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端CE低电平有效时,AB/BA=0;
信号由B向A传输;
AB/BA=1,信号由A向B传输;
当CE位高电平时,A,B均为高阻
图3-274LS245管脚图
3.3LED显示电路设计与器件选择
单片机应用系统中,通常都需要进行人机对话。
这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果。
显示器、键盘电路就是用来完成人机对话活动的人机通道。
图3-3LED显示管脚
LED显示器的驱动是一个非常重要的问题,由图3-2-1可知,显示电路由LED显示器、段驱动电路和位驱动电路组成。
此设计不采用段驱动芯片和位驱动芯片,直接由单片机的P0,P2口驱动,实验证明可行。
在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此生产厂家就生产了多种位数、尺寸、型号不同的LED显示器。
在我们的设计中,选择4位一体的共阴极时钟型LED显示器,采用动态显示方式。
图3-4LED动态显示
采用P0口作为LED的段码输出信号,P2口的低四位作为LED位码的输出控制信号。
硬件电路的连接如图3-2-2所示。
该电路的工作原理:
当P0口输出段码信号的BCD码后,输出具有一定驱动能力的七段字形码,由于4-LED的段码输入管脚是并联在一起的,所以每一位LED的段码输入管脚都能获得这个段码信号。
若要控制在每一时刻只有一位LED被点亮,必须靠位码信号控制。
P2口低四位输出位码信号后接到LED的位码控制端,因此P2口的低四位的位码信号在每一时刻只有一位是“0”,其他位全为“1”,然后按时间顺序改变输出“0”的位置,控制在每一时刻只有一位LED被点亮,达到动态显示的目的。
3.4A/D转换模块及转换电路设计
A/D转换器的功能是将模拟量转换为与其大小成正比的数字量信号。
能实现这种转换的原理和方法很多,此设计采用ADC0808转换器。
ADC0808是一种逐次逼近型的8位A/D转换器件,片有8路模拟开关,可输入8个模拟量,单极性,量程为0~+5V。
3.4.1ADC0808简介
1.ADC0808引脚功能
图3-5 ADC0808引脚图
(1)IN0~IN7:
8路模拟量输入。
(2)ADDA、ADDB、ADDC:
模拟量输入通道地址选择,其8位编码分别对应IN0~IN7.
(3)ALE:
地址锁存允许,上升沿将通道选择信号存入地址锁存器。
(4)START:
ADC转换启动信号,正脉冲有效,引脚信号要求保持在200ns以上,其上升沿将部逐次逼近寄存器清零。
(5)EOC:
转换解释信号,可做为中断请求信号或供CPU查询。
(6)CLK:
时钟输入端,要求频率围在10kHz~1.2MHz.
(7)OE:
允许输出信号。
(8)Vcc:
芯片工作电压。
(9)VREF(+)、VREF(-):
基准参考电压的正、负值。
(10)OUT1~OUT8:
8路数字量输出端。
3.4.2A/D转换电路设计
集成摸数转换芯片ADC0808实现的A/D转换电路被测信号由ADC0808模拟输入端输入,完成A/D转换后送入单片机,经相应处理后送出显示。
第四章软件设计与说明
进行应用软件设计时可以采用模块化结构设计,其优点是:
①每个模块的程序结构简单,任务明确,易于编写、调试和修改;
②程序可读性好,对程序的修改可局部进行,其他部分可以保持不变,易于功能扩充和版本升级;
③易于使用频繁的子程序可以建立子程序,便于多个模块调用;
④便于分工合作,多个程序员同时进行程序的编写和调试工作,加快软件研制进度。
4.1数字电压表系统软件设计方案确定
(1)根据设计要求,根据系统所要完成的功能,设计出图4-1所示的功能模块。
图4-1数字电压表软件设计的模块
(2)程序的设计
①主程序的设计主程序的容一般包括:
主程序的起始地址、中断服务额程序的起始地址、有关存单元及相关部件的初始化和一些子程序调用等。
根据设计要求,设计出如图4-2所示的主程序流程图。
图4-2主程序流程图
图4-3A/D转换子程序流程图
②A/D转换子程序的设计A/D转换程序的功能是采集数据,再整个系统设计中占有很高的地位。
当系统置好后,单片机扫描转换结束管脚P2.6的输入电平状态,当输入为高电平则转换完成,将转换的数值转换并显示输出。
若输入为低电平,则继续扫描。
程序流程图如图4-3所示。
③数码转换及显示子程序的设计由于人们日常习惯使用十进制数,而计算机的键盘输入、输出以及显示常采用二进制编码的十进制数(即BCD码)或ASCII码。
因此,在程序设计中经常要进行数码转换。
4.2数字电压表应程序设计
(1)程序起始地址MCS-51系列单片机复位后,(PC)=0000H,而0003H~002BH分别为各中断源的入口地址。
所以,编程序时应在0000H处写一条跳转指令。
当CPU接到中断请求信号并予以响应后,CPU把当前的PC容压入栈中进行保护,然后转入相应的中断服务程序入口处执行。
(2)LED动态显示延时LED显示器每一位的显示时间是5ms,延时5ms子程序是典型的软件定时程序。
说明:
LED采用7段字形代码,第1位采用把dp置1的方式显示小数点。
第五章调试结果及其说明
5.1调试结果及其说明
采用KeilμVision编译器进行源程序编译,调试好程序后将.Hex文件导入Proteus进行软件调试。
在ProteusISIS编辑窗口中单击开始仿真按钮,4位LED数码管显示相应的电压值。
当通道打到通道0时,滑动变阻器RV1的阻值调至最小位置时,LED显示0.000,正确显示数值;
把RV1调至中间位置时,LED显示2.650,同样正确读出数据;
当把RV1的阻值调至最大位置时,LED显示5.000,正确读出数据。
同理调试其他通道时,能正确显示通道数和电压值,证明该8路电压表合格。
调试结果如图5-1
图5-1调试结果
参考文献
[1]单片微机原理及应用徐春晖主编电子工业
[2]单片机应用技术(C语言版)王静霞主编电子工业
[3]新概念51单片机C语言教程郭天祥主编电子工业大学
[4]单片机典型系统设计实例精讲为等电子工业
[5]单片机原理与应用设计毅刚等电子工业
附录A系统原理图
附录B系统源程序
LED_0EQU30H
LED_1EQU31H
LED_2EQU32H
LED_3EQU33H//存放四个数码管的段码
ADCEQU35H//存放转换后的数据
STBITP3.2
OEBITP3.0
EOCBITP3.1
ORG0000H
START:
MOVLED_0,#00H
MOVLED_1,#00H
MOVLED_2,#00H
MOVLED_3,#00H
MOVDPTR,#TABLE//送段码表首地址
SETBP3.4
SETBP3.5
CLRP3.6//选择ADC0808的通道3
WAIT:
CLRST
SETBST
CLRST//启动转换
JNBEOC,$//等待转换结束
SETBOE//允许输出
MOVADC,P1//暂存转换结果
CLROE//关闭输出
LCALLINTOV
LCALLDISP//显示AD转换结果
SJMPWAIT
INTOV:
MOVDPTR,#TAB//因为所用的滑动变阻器为0.01的精度,所以MOVA,ADC//最小的读数为0.05,其余均为0.05的倍数
MOVCA,A