1 引言数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。
较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。
电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器]1[(A/D)。
数字电压表的核心部件就是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。
一般说来,A/D 转换的方式可分为两类:积分式和逐次逼近式。
积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。
根据转化的中间量不同,它又分为U-T(电压-时间)式和U-F(电压-频率)式两种。
逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式及零平衡式等。
斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。
在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。
本设计以AT89C51单片机为核心,以逐次比较型A/D转换器ADC0808、液晶显示器LCD1602为主体,构造了一款简易的数字电压表,能够测量1路0~5V 直流电压,最小分辨率0.02V。
2 仿真软件介绍2.1 仿真软件简介2.1.1 Proteus 6 ProfessionalISIS 6 Professiona软件是它不仅具有其它EDA工具软件的仿真]2[功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
它从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、A VR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
ISIS 6 Professiona软件具有的功能:原理布图;PCB自动或人工布线;SPICE 电路仿真。
2.1.2 Keil uVision2Keil提供了包括C编译器、宏汇编]3[、连接器、库管理和一个功能强大仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
Keil C51集成开发环境主要由菜单栏、工具栏、源文件编辑窗口、工程窗口和输出窗口五部分组成。
工具栏为一组快捷工具图标,主要包括基本文件工具栏、建造工具栏和调试工具栏,基本文件工具栏包括新建、打开、拷贝、粘贴等基本操作。
建造工具栏主要包括文件编译、目标文件编译连接、所有目标文件编译连接、目标选项和一个目标选择窗口。
调试工具栏位于最后,主要包括一些仿真调试源程序的基本操作,如单步、复位、全速运行等。
在工具栏下面,默认有三个窗口。
左边的工程窗口包含一个工程的目标(target)、组(group)和项目文件。
右边为源文件编辑窗口,编辑窗口实质上就是一个文件编辑器,我们可以在这里对源文件进行编辑、修改、粘贴等。
下边的为输出窗口,源文件编译之后的结果显示在输出窗口中,会出现通过或错误(包括错误类型及行号)的提示。
3 硬件设计3.1单片机控制模块设计单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。
3.1.1时钟电路单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XYAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器1C和2C 对振荡频率]4[有微调作用,通常取(30±10)pF石英晶体选择6MHz或12MHz都可以。
时钟电路如图1所示。
图1 系统时钟电路图2 系统复位电路3.1.2复位电路单片机的RST管脚为主机提供了一个外部复位信号输入口。
复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。
单片机的复位方式可由手动复位方式完成。
复位电路如图2所示。
3.2逐次逼近式A/D转换模块设计逐次逼近型A/D转换器属于直接型A/D转换器,它能把输入的模拟电压直接转换为输出的数字代码,而不需要经过中间变量。
主要由比较器、环形分配器]5[、控制门、寄存器与D/A转换器组成。
3.2.1 ADC0808简介1.ADC0808引脚功能图3 引脚图IN0~IN7:8路模拟量输入。
A、B、C:3位地址输入,2个地址输入端的不同组合选择八路模拟量输入。
ALE:地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。
D0~D7:八位数据输出线,A/D转换结果由这8根线传送给单片机。
OE:允许输出信号。
当OE=1时,即为高电平,允许输出锁存器输出数据。
START:启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。
EOC:转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。
2.ADC0808内部结构图逐次逼近型A/D转换器ADC0808由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。
其内部结构如图4所示。
图4 ADC0808内部结构3.2.2 A/D转换电路设计集成摸数转换芯片ADC0808实现的A/D转换电路如图5所示,被测信号由ADC0808模拟输入端输入,完成A/D转换后送入单片机,经相应处理后送出显示。
图5 ADC0808与单片机的连接3.3显示模块设计3.3.1 LCD显示模块LCD显示器分为字段显示和字符显示两种。
其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。
字符显示是根据需要显示基本字符。
本设计采用的是字符型显示。
系统中采用LCD1602作为显示器件输出信息。
与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。
LCD1602可以显示2行16个汉字。
3.3.2 LCD1602的引脚功能LCD1602模块的引脚如图6所示,其引脚功能如下:RS:数据和指令选择控制端,RS=0命令状态;RS=1数据。
R/W:读写控制线,R/W=0写操作;R/W=1读操作。
A:背光控制正电源,K:背光控制地。
E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机间将进行一次数据交换。
DB0~DB7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源。
VDD:电源端,VEE:亮度控制端(1-5V),VSS:接地端。
LCD 模块1 2 3 4 5 6 7 8 9 10 11 12 13 14 15VSS VDD VO RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K图6 LCD1602模块3.3.3 LCD1602的显示操作1.四种基本操作LCD有四种基本操作,具体如表1所示。
表1 LCD与单片机之间有四种基本操作RS R/W 操作0 0 写命令操作(初始化,光标定位等)0 1 读状态操作(读忙标志位)1 0 写数据操作(要显示内容)1 1 读数据操作(可以把显示存储区中的数据反读出来)(1)读状态字:执行读状态字操作,如表3-1满足RS=0,R/W=1。
根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。
同时可以保持一段时间,从而实现读状态字的功能。
读状态字流程如图7所示。
图7 读入状态字流程图(2)命令字表2所示为命令字,其主要介绍了指令名称、控制信号及控制代码。
其指令名称是指要实现的功能;控制代号是采用的十六进制的数值表示的。
1)清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;2)归home位:将光标送到初始位;其中的*号为任意,高低电平均可;3)输入方式:设光标移动方向并指定整体显示,是否移动。
I/D=0:减量方式,S=1:移位方式,S=0:不移位;4)显示状态:D指设置整体显示开关;C指设置光标显示开关;B指设置光标的字符闪耀;5)光标画面滚动:R/L指右移或左移;S/C指移动总体或光标;6)功能设置:DL接口数位,L指显示行数,F显示字型;如DL=1:8位=0,4位N=1:2行=0:1行,G=1:5×10=0:5×7(点阵);7)CGRAM地址设制:相当于一个数据库,可以在其中选择所需要的符号;8)DDRAM地址设制:显示定位;9)读BF和AC:B为最高位忙的标志,F为标志位;10)写数据:将数据按要求写入到对应的单元;11)读数据:读相应单元内的数据;表2 命令字(3)写命令字由表2可知当RS=0,R/W=0时,才可以通过单片机或用户指令把数据写到LCD 模块,此时就对LCD进行调制。
可采用查询方式:先读入状态字,再判断忙标志位,最后写命令字。
图8所示为写命令字的流程图。
图8 写命令字流程图1)定义光标位置显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRAM地址占7位。
Set DDRAM address命令如表3所示。
光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入方式设置。
表3 Set DDRAM address命令RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0第1行DDRAM地址与第2行DDRAM地址并不连续,如表3-4所示。
表4 DDRAM地址row 1 2 3 4 5 …14 15 16line1 80H 81H 82H 83H 84H …8dH 8eH 8fHline2 0c0H 0c1H 0c2H 0c3H 0c4H …0cdH 0ceH 0cfH 2)LCD初始化从通电开始延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示状态(如设制行、位或阵列)再经过延时清屏后才可以设置输入方式,具体实现过程如图9所示。
图9 LCD初始化流程图2.LCD显示程序设计LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,显示流程如图10显示。
图10 LCD显示程序流程图4系统软件设计根据需要,可将系统软件按照功能划分为4个模块,分别是主程序模块、A/D 转换模块、液晶显示模块、中断服务程序模块(改变显示的小数点位置),各模块的功能关系如图11所示。