基于单片机的数字电压表设计报告 下载本文

单片机原理及系统课程设计

评语: 考勤(10) 守纪(10) 过程(40) 设计报告(30)答辩(10) 总成绩(100)

专 业: 电气工程及其自动化 班 级: 姓 名: 学 号: 指导教师:

兰州交通大学自动化与电气工程学院

2010 年 3 月 7 日

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

摘 要

本文是基于单片机的数字电压表的设计,用单片机AT89S52作为主控单元,ADC0809作模数转换芯片,测量0~5V直流电压,其测量最小误差为0.02V。本设计主要分为硬件电路及软件程序两部分。硬件电路可分为A/D转换电路、LED显示电路。程序的设计使用C语言编程。 关键词:AT89S52;数字电压表;ADC0809 Abstract The design of this article is based on single chip microcomputer digital voltmeter, AT89S52 MCU as the main control unit, the ADC0809 modulus conversion chip, measurement of 0 ~ 5 V dc voltage, the minimum error of measurement is 0.02 V. This design is mainly divided into two parts, hardware circuit and software program. Hardware circuit can be divided into A/D conversion circuit, LED display circuit. Program design using C language programming. Key Words: AT89S52, Digital Voltmeter, ADC0809 1.引言 随着电子时代的来临,人们对各种数字仪表的精度要求更高,以前的指针仪表已经不能满足人们的需要,所以就出现了数字电压表这种更精确的测量仪器。 本次课程设计的主要任务是完成模拟量电压转换成数字量电压,然后通过数码管显示出来。主要包括两大模块:转换模块,显示模块,结合硬件和软件,使误差最小。 2.系统总体方案设计 2.1 总体设计方案 根据系统设计的要求和功能,将系统分为主控模块,A/D转换模块,LED显示模块,复位电路,时钟电路几个模块,系统框图如图1所示,主控模块采用AT89S52单片机,A/D转换模块采用ADC0809芯片,用于A/D转换,显示模块采用4位七段共阳LED数码管,用于显示电压值。 2.2系统组成框图 时钟及复位电路 图2.2系统组成框图 输入电路 显示电路 3.硬件设计 3.1系统硬件设计原理 通过变量设置选择八路通道中的第三路,将该路模拟电压送入ADC0808相应通道,单片机软件设置ADC0808开始A/D转换,转换结束ADC0808的EOC端口产生高电平,同时将ADC0808的OE端口置为高电平,单片机将ADC0809转换后的数字量存到片内RAM。系统调出数据处理子程序,将测量结果转化为0.00~5.00V,最后通过查表将每一位数据输出到LED显示电路,将相应电压显示出来,程序进入下一个循环。单片机的P0.0~P0.7作为4位动态数码显示管的段显示控制。P2.1~P2.3作为4位动态显示管的位显示控制。 3.2硬件设计原理图 在Proteus仿真环境下所搭建的系统硬件电路图如图3.2所示。

图3.2系统原理图

4软件设计

4.1软件设计方案 主程序包含初始化部分,调用A/D转换子程序和延时部分。A/D转换程序由开始设定的ST的变化开始(产生下跳沿 使ADC0809的START开始运转)然后当转换结束(EOC=1)时,开始传输数据到P1(OE=1输出允许信号置1)至传输结束时OE置0,将获得的电压量转换成所对应的16进制数据并寄存,再通过取模的方式把各位数字逐个提取,最后通过查询代码表得到相应的BCD码,最后显示即可结束。 ADC0809转换之后输出的结果是8位二进制数。当ADC0809输出为(111111111)时,输入电压值VI=5.00V;当ADC0809输出为(00000000)时,输入电压值为VI=0.00V;当ADC0809输出为(10000000)时,输入电压值VI=2.50V。由于单片机进行数学运算时结果只取整数部分,因此当输出为(10000000)时计算出的电压值VI=2.00V,很不准确。为了提高精确度,必须把小数部分保留,具体方法是:如果小数点后保留两位,在运算的时候分子乘以100,保留三位就乘以1000。本设计是在小数点后保留两位,运算方式如公式VI=Dout/255×5×100=Dout×100/51。 4.2主程序流程图 图4.2为程序软件设计流程图,其中(a)为主程序流程图, (b)为A/D转换子程序流程图。 开始 N开始 初始化 开始模数转换 调用A/D转换程序 转换是否完成? Y取得模数转换结果兵转化为数字量 调用显示子程序 调用延时程序 结束 显示转化结果 (a)主程序流程图 (b)AD转换流程图 图4.2 程序流程图 结束 5.系统调试及仿真结果

6.总结

两周的课程设计结束了,在这过程中,我学到了很多东西。首先,我学会了单片机设计的基本过程有哪些,每一过程有哪些基本的步骤,怎样通过查资料去完成这每一步。其次我巩固了上学期所学的一些单片机知识,从而加深了对ADC0809芯片的功能的了解。在编程过程中,遇到了许多困难,通过与同学之间的交流和咨询,最后解决了这些困难。所谓实践出真知,学到的东西只有运用到实践当中,才能真正体会到知识的力量。最后,通过这次课程设计,让我明白了想法和实践还是有差距的,当你真正去做一件事的时候,你会发现你的想法可能不适用,随时都需要调整,另外扎实的理论知识也是完成设计任何设计必不可少的要素,一切想法离开了理论知识都是空想。

参考文献

[1] 彭为,黄科,雷道仲.单片机典型系统设计实例精讲[M].电子工业出版社.2009:22-54. [2] 谭浩强.C程序设计(第三版)[M].清华大学出版社.2009:32-46.

[3] 王思明,张金敏,张鑫等.单片机原理及应用系统设计(第一版)[M].科学出版社.2012:70-292.