APP下载

基于单片机的多路数字电压表设计

2016-12-19李明侠

数码世界 2016年11期
关键词:子程序高电平电压表

李明侠

渤海大学工学院

基于单片机的多路数字电压表设计

李明侠

渤海大学工学院

我们在生活中经常用到数字表,但是指针式的数字表精度低而且功能少,有时并不能满足我们的需要,而采用单片机设计的数字表就可以弥补这些缺点,而且具有较强的抗干扰性。本次课题设计的多路数字电压表将会在以后的生活中有广泛应用。

单片机 数字电压表 A/D转换器

数字电压表在我们的生活和工作中都会经常用到,对于电气行业更是必需品,所以就要要求有很好的质量和功能,本次设计的多路数字电压表主要使用的是单片机,基本可以满足我们现在的需求,也会在以后的应用中越来越多。

1 功能要求

①输入电压为8路;

②电压值的测量范围为0-5V;

③测量的最小分辨率为0.019V,测量误差为±0.02V;

④能使用显示器显示出通道和通道的电压,要求显示到小数点后两位。

2 硬件电路设计

本次设计的多路数字电压表使用的单片机是AT89C52,它具有8k的只读存储器,256*8bit的随机存储器,并且具有32个双向I/O口,并且能够兼容MCS51指令系统。其他模块还包括:时钟电路,复位电路,LCD显示模块,A/D转换模块和按键模块。总体设计图如图1。

图1 多路数字电压表的总体结构

硬件电路中除了需要核心的单片机AT89C51外,还需要A/D转换器ADC0808和显示器LCD1602,其中ADC0808是8位的CMOS转换器,最小误差为±1/2LSB,供电使用的是5V电源,而且有较低的功耗;而LCD1602的功耗也极低,液晶显示模块显示2行,每行有16个字符,LCD1602显示的内容会比LED的更加丰富,更符合这次的设计。

3 软件程序设计

主程序、AD转换子程序、显示驱动程序组成了多路数字电压表的主要软件程序。

主程序首先要初始化驱动定时计数器和LCD,然后LCD显示屏上会有提示信息,接着进行循环程序,也就是AD转换的子程序,流程图如图2。

图2 主程序的流程

这次设计比较重要也是比较核心的的部分是AD转换子程序,A/D转换器主要有以下几个性能指标:

3.1 分辨率

也就是能被A/D转换器分辨出来的最小的输入量,我们平时习惯使用已经转换的数字量的位数表示,位数大的,分辨率高。

3.2 转换时间

这段时间指的是从转换器开始工作一直到转换完成而且要求输出的数字量要保持稳定才可以,当然,要想转换速度越快,就需要缩短转化时间。

3.3 量程

是指可以转换的电压范围。

3.4 转换精度

有两种之分,一种是绝对精度,是指理论的模拟量和实际的模拟量的差;一种是相对精度,指的是校准了满刻度值之后,任意的一个模拟值和理论值的差。

本次设计使用的芯片为ADC0808,是一种逐渐逼近型的AD转换器,组成部分包括比较器,寄存器,D/A转换器和控制电路。

当A/D转换器开始工作时,首先使地址锁存允许信号ALE为高电平,通过地址译码器的译码,选通1路模拟通道将模拟量送到比较器里;然后使启动信号为高电平,逐渐逼近寄存器在启动信号上升沿的作用下复位,A/D转换器在下降沿的作用下开始启动,在三态输出锁存器中接收转换的结果,这时CPU接收到转换结束指令,如果CPU开始执行数据指令时,OE仍为高电平,就会从8位数字量输出端输出数据。具体流程图如图3。

图3 A/D转换子程序的流程

还有比较重要的一部分就是显示模块的子程序,同样的,在使用之前也需要初始化,通过复位即可完成,具体步骤如下:首先,要清除屏幕,;其次需要进行数据位数的设置;然后进行显示的开关设置。

因为LCD处理数据的速度要慢于CPU,所以输入命令之后会处于工作状态,不能再继续输入新的内容,需要一直等到完成指令。

而控制整个电路的就是键盘,也就是按键开关,每次按键按下时,都会下向计算机发送脉冲,处于低电平,开关断开时,处于高电平。我们通常用的开关是机械式的开关,在开关闭合的时候不能准确地接通,断开时也不会马上就断,所以就会产生抖动,同时就会产生按一次键会有多个输入的问题,为了让输入更准确,我们会采取延时消抖,也就是在抖动的时候执行延时程序,跳过抖动,再去检测的话就会消除抖动了。

本次设计采用的键盘是独立式键盘,它具有使用灵活,方便简单的特点,更适合本次设计,凭借着I/O口的电平高低就可以判断哪个键盘闭合,哪些断开,但是只有在按键数量较少时才可以使用。

4 系统仿真

本次设计电路仿真采用的是protues,仿真图电路引脚连接清晰,可以查看单步运行情况,方便实用,而且便于在Keil C5中拷入程序,程序编译使用的就是Keil C51,C语言和汇编语言在这里都适用,可以根据情况决定,而且系统中函数较多,可以方便操作,电路仿真图如图4。

5 总结

通过这次设计我学习到了更多关于单片机和电压表的知识,更加深入的了解了单片机,为以后的课程提供了比较丰富的经验,虽然在设计和调试时还有诸多不顺利,但是经过最后的努力,还是很成功的完成了。虽然本次设计还有很多不足,但是我会在以后的学习中逐渐改进。

图4 多路数字电压表的电路原理图

[1]谢维成,杨加国.单片机原理与应用及C51程序设计(第三版).北京:清华大学出版社,2014

[2]谢维成,杨加国.单片机原理、接口及应用程序设计.北京:电子工业出版社,2011

[3]张培仁.基于C语言编程MCS-51单片机原理与应用.北京:清华大学出版社,2003

[4]侯玉宝.陈忠平,李成群等.基于Proteus的51系列单片机设计与仿真[M].北京:电子工业出版社,2008

[5]林志琦,郎建军等. 基于Proteus的单片机可视化硬件仿真[M]. 北京航空航天大学出版社,2006

[6]杨光友,朱宏辉,《单片微型计算机原理及接口技术》,水利水电出版社,2002.9

[7]韩志军等编著.单片机应用系统设计:入门向导与设计实例.北京:机械工业出版社,2005

猜你喜欢

子程序高电平电压表
如何判断电压表的测量对象
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
数字电子技术的应用
浅谈物理电路与数字电路
关于Multisim10.0的高电平调幅电路仿真研究
电压表的妙用
再探电压表内阻的测量方法
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序