果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED显示器的驱动电路设计是一个非常重要的问题。
在实物LED驱动电路的设计上,可以利用单片机P0口上外接的上拉电阻来实现,即将LED的A-G段显示引脚和DP小数点显示引脚并联到P0口与上拉电阻之间,这样,就可以加大P0口作为输出口德驱动能力,使得LED能按照正常的亮度显示出数字。为了简化数字式直流电压表的电路设计,这里直接将数码管接在P0口和P2口上,如图5所示。
图5数码管显示电路图
2.5 总体电路设计
经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图6所示。
图6 数字电压表电路图
简易数字直流电压表的硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善
- 6 -
的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。
2.6 PCB图及元器件面板布局图和清单
元器件清单见附录1 电路原理图见附录2
PCB图及元器件布局图见附录3
- 7 -
3 软件系统设计
3.1 程序设计思路及流程图
整个系统软件设计分为两个部分,作为主控的单片机的软件设计及作为数据采集器ADC0809的软件设计。系统采用模块化编程,将各部分功能分别实现,主要的功能子程序有:键盘扫描,数据采集及转换、数值显示。主程序流程图如图7所示。
开始系统初始化显示提示符调用键扫子程序是否测量NY取相应通道数据进行数据转换调用电压数值显示子程序结束
图7 主程序流程图
- 8 -
3.2 键盘扫描子程序
当单片机开始工作时,扫描键盘,当P1.0电位变为0后,是测量开始键按下,则去执行测量程序,若在测量的过程中P1.1的电位变为0,是测量结束键按下,则去执行结束显示程序,键盘扫描程序流程图如图8所示。
开始读取键盘数据测量开始键按下Y测量开始N测量结束键按下YN显示提示符结束
图8 键盘扫描程序
3.3 数据采集及转换子程序
用查询方式查询ADC0809的EOC脚的电位是否为1,若为1则转换结束。在测量程序中,选择通道0,向ADC0809发出启动转换信号后。当查询到EOC电位变为1后,转换结束,读取转换结果,并将数据转化成数码管显示的电压量,调用显示程序,最后又回到开始的启动转换信号继续循环进行数据的转换与显示,在这个过程还要检查是否有测量结束的信号,如果有则执行结束信号,若没有就继续测量,数据采集及转换程序流程图如图9所示。
- 9 -
开始选择通道开始转换查询转换是否完成?Y读取转换结果N进行数据转化保存数据转化结果结束
图9 数据采集及转换
3.4 数值电压显示子程序
电压显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用延时,每位LED延时3ms左右。本设计为了简化程序,在每位LED点亮时延时2.5ms左右。用内部RAM 30H~32H单元保存要显示的数值,当程序调用显示程序时,就从这三个单元中取出数据转换后BCD数值,进行查表后,将通过P0口送到数码管上作为段控显示,同时还要在P2口设置相应的位控一起点亮数码管就得到了显示的电压值,数值电压显示流程图如图10所示。
- 10 -