简易数字电压表课程设计

简易数字电压表设计

4.系统软件设计

4.1 程序框图

根据需要可将系统软件分为四个模块,分别是主程序模块、LED显示器、A/D转换器、中断服务程序模块。各模块的功能如图9。编写程序时,可先写各模块的底层驱动程序,然后是系统联机调试,编写上层主程序,主函数通过调用其他的函数,达到整个功能。

系统主程序A/D显示器转换器图9 系统主程序图

中断服务

4.2 主程序设计

主程序主要负责各个模块的初始化工作:设置定时器、启动A/D转换,读取转换结果,出理量程转换响应、控制LED数码管显示等。流程图如图10所示。

- 8 -

简易数字电压表设计

开始选择ADC0808的转换通道设置定时器,提供时钟信号启动A/D转换N 转换是否结束?Y 输出转换结果数值转换显示图10 主程序流程图

4.3 A/D转换程序

A/D转换程序的功能是采集数据,在整个系统设计中占有很高的地位。当系统设置好后,单片机扫描结束管脚P3.0的输入电平状态,当OE=1时,即输入为高电平则转换完成,允许输出。若OE=0,即输入为低电平,则继续扫描。当START=1时,上升沿清除一次AD转换结果。当START=0时,下降沿用以启动内部控制逻辑,使A/D转换器开始工作。程序流程图如图11所示。

- 9 -

简易数字电压表设计

开始 设置模拟入口 启动转换 转换完? Y N 输出数值处理

图11 A/D转换程序流程图

被测信号由ADC0808模拟输入端输入,完成A/D转换后送入单片机,经相应处理后送出显示。集成模数转换芯片ADC0808实现A/D转换电路如图12:

- 10 -

简易数字电压表设计

图12 集成模数转换芯片ADC0808实现的A/D转换电路

4.4 中断服务程序

中断服务程序的功能是为ADC0808提供时钟信号,当中断发生时将AT89C51单片机的P3.1管脚将输出信号取反,为ADC0808提供12KHZ时钟信号。

5.总结与展望

5.1 Proteus仿真测试检验

下面我们采用Keil编译器及其仿真调试,调好程序后将目标导入Proteus进行软硬件调试,基于单片机实现的数字电压表测试值见图13所示。

电压表测得值 LED显示值 绝对误差 0.05 0.05 +0.00 1.45 1.45 +0.00 2.19 2.20 +0.01 2.94 2.96 +0.02 4.09 4.10 +0.01 4.29 4.30 +0.01 4.84 4.85 +0.01 图13 测试值与与误差

从图13中可以看出,电压表测得值误差均在0.02V以内,这与采用8位A/D转换器所能达到的理论误差精度相比较接近,因此在一般应用场合都可以满足要求。

5.2 总结

此次设计是基于单片机的简易数字电压表设计,控制系统采用AT89C51单片机,A/D转换器采用ADC0808为主要硬件,实现数字电压表的硬件电路与软件设计。数字电压表可以测量0~5V的8路输进电压值,并在四位LED数码管上轮流显示或单路选择显示。

仿真测试表明,该数字电压表系统性能良好,测量读书稳定易读,更新速度合理,通过改变滑动变阻器的阻值来改变电压表的读数,所以电压表测量范围没有一定的局限性,精确度为0.02V。但是该系统也存在一定程度的不足,例如: ? 输出量可以通过利用平均值算法来改善,使测量准确度更高。

? 输入电压易发生干扰不稳定,且驱动能力可能存在不足,需要在被测信号的输入端

加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅度较小的信号经适当放大后再测量,可提高精度。

? ADC0808可实现对8个通道的信号轮流转换,该设计仅仅使用了其中一个通道,造

成了较大的资源浪费。若能对电路稍加改进,实现对多路信号的轮流测量并自动保存相应结果,其应用价值将会更高。

- 11 -

联系客服:779662525#qq.com(#替换为@)