简易数字直流电压表的硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。
4 程序设计
4.1程序设计总方案
根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图11所示。
开始 初始化 调用A/D转换子程序 调用显示子程序 结束
图11数字式电压表主程序框图
4.2系统子程序设计 4.2.1初始化程序
所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。 4.2.2 A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图12所示。
开始 启动转换 A/D转换结束? 输出转换结果 数值转换 显示 结束 图12 A/D转换流程图
4.2.3显示子程序
显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。
在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现50ms定时。
5 仿真
5.1软件调试
软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与u Visions3 IDE工具软件结合进行编程仿真调试。
本系统的调试主要以软件为主,其中,系统电路图的绘制和仿真我采用的是Proteus软件,而程序方面,采用的是汇编语言,用Keil软件将程序写入单片机。 5.2显示结果
图13 LED的显示结果
图14 硬件操作结果
6 总结
⑴数码管显示乱码。普通单片机的数码管,其段选与位选一般都是共阴或者都是共阳,我们小组在学习单片机电路图时了解到所给单片机为共阳数码管,所以仿真也是用的共阳数码管。在后续的程序烧写中,出现了问题:程序在仿真中可以,但是单片机却不行。后来认真分析才发现,所给的单片机数码管位选是低电平有效,而段选是高电平有效。
⑵处理获取到的AD转换的数据。在获取到0832的数据之后,如何将数据显示出来,先获取到个位,再得到小数点后数据。
⑶利用串口向上位机发送数据。由于我们这次设计只需要单片机向PC机发送数据,所以系统是单工系统。设置串口工作模式后开中断,程序中设置的为50ms。