课程设计报告
题目:数字电压表设计与仿真
学生姓名:吴鹏
学生学号: 1114010250 系别:电气院
专业:自动化
届别: 2011
指导教师:张水锋
电气信息工程学院
2013年
摘要:在现代检测技术中,常用高精度数字电压表进行检测,将检测到的数据送入微型计算机系统,完成计算、存储、控制等功能。
本文中数字电压表的控制系统采用AT89C51单片机,A/D转换器采用ADC0809为主要硬件,实现数字电压表的硬件电路与软件设计。
该系统的数字电压表电路简单,所用的元件较少,成本低,调节工作可实现自动化,还可以方便地进行8路A/D转换的测量,远程测量结果传送等功能。
数字电压表可以测量0~5V的电压值,并在四位LED数码管上轮流显示,并且应用Proteus的ISIS软件进行单片机系统设计与仿真.关键词:单片机;数字电压表;A/D转换ADC0809;Proteus
1 绪论
随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。
同时随着微电子技术的迅速发展和超大规模集成电路的出现,特别是单片机的出现,正在引起测量控制仪表领域的新的技术革命[1]。
由于使用的是高效单片机作为核心的测量系统,以及灵敏度和精度较高的A/D转换器,使本直流电压表具有精度高、灵敏度强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平[2]。
数字电压表相对于指针表而言读数直观准确,电压表的数字化是将连续的模拟量转换成不连续的离散的数字形式并加以显示。
这有别于传统的以指针与刻度盘进行读数的方法,避免了读数的视差和视觉疲劳[3]。
2 系统方案设计
利用MCS-51系列单片机设计简易数字电压表测量0~5v的8路输入电压值,并在四位LED 数码管上轮流显示或单路选择显示。
测量误差约为±0.02V。
系统设计方框图如图1所示。
单片机
AT89C51时钟电路复位电路数据采集
显示电路
模拟信号
图1系统设计方框图
3 硬件电路设计
3.1时钟电路
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz ,时钟频率就为6MHz 。
晶振的频率可以在1MHz-24MHz 内选择。
电容取30PF 左右。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路如图2所示[2]。
图2时钟电路图
3.2复位电路
复位电路如下图3所示,按键没有按下时,RST 端接电容下极板是低电平,按键按下时,RST 端接在电阻上端变为高电平,达到复位的目的[2]。
图3复位电路图
3.3数据采集模块
通过ADC0809采集数据,输入到单片机内,如图4所示:
图4数据采集模块电路图3.4显示电路
通过4位数码管来显示,如图5所示:
图5显示电路图
4 软件设计
4.1主程序流程图
主程序流程图如图6所示:
开始
初始化
调用A/D转化程序
调用数据处理程序
调用显示程序
图6主程序流程图4.2显示子程序流程图
显示子程序流程图如图7所示:
开始
初始化,P0置
高,P2置低
P0到A输出显示
P2=P2+1
P0到A输出显示
P2=P2+1
P0到A输出显示
置位P0.7点亮小数点
P2=P2+1
P0到A输出显示
结束
图7显示子程序流程图4.3 A/D转换子程序流程图
A/D转换子程序流程图,如图8所示:
开始
初始化
启动A/D 转化
P3.1=1?
P3.0置位,允许输出。
将转化的数据保存
结束Y
N
图8 A/D 转换子程序流程图
4.4数据处理子程序流程图
数据处理子程序流程图,如图98所示: 开始
从34H 中取数据,乘以
19.5mv ,得到的数据BCD 麻
化,将数据存入A
转化双字节十
六进制整数
BCD 码带进位自身相
加,十进制调整
R2=0?
数据输入显示器
结束N Y
图9数据处理子程序流程图
5 源代码
LED1 EQU 30H ;初始化定义
LED2 EQU 31H
LED3 EQU 32H ;存放三个数码管的段码
ADC EQU 35H ;存放转换后的数据
ST BIT P3.2
OE BIT P3.0
EOC BIT P3.1 ;定义ADC0809的功能控制引脚
ORG 0000H
LJMP MAIN ;跳转到主程序执行
ORG 0030H
MAIN: MOV LED1,#00H
MOV LED2,#00H
MOV LED3,#00H ;寄存器初始化
CLR P3.4
SETB P3.5
CLR P3.6 ;选择ADC0809的通道2
WAIT: CLR ST
SETB ST
CLR ST ;在脉冲下降沿启动转换
JNB EOC,$ ;等待转换结束
SETB OE ;允许输出信号
MOV ADC,P1 ;暂存A/D转换结果
CLR OE ;关闭输出
MOV A,ADC ;将转换结果放入A中,准备个位数据转换
MOV B,#50 ;变换个位调整值50送B
DIV AB
MOV LED1,A ;将变换后的个位值送显示缓冲区LED1
MOV A,B ;将变换结果的余数放入A中,准备十分位变换MOV B,#5 ;变换十分位调整值5送B
DIV AB
MOV LED2,A ;将变换后的十分位值送LED2
MOV LED3,B ;最后的余数作百分位值送LED3
LCALL DISP ;调用显示程序
AJMP W AIT
DISP:MOV R1,#LED1 ; 显示子程序
CJNE @R1,#5,GO ;@R1=5V?是往下执行,否,则到GO
MOV LED2,#0H ;是5V,即最高值,将小数的十分位清零
MOV LED3,#0H ;将小数的百分位清零
GO:MOV R2,#3 ;显示位数赋初值,用到3位数码管MOV R3,#0FDH ;扫描初值送R3
DISP1:MOV P2,#0FFH ;关闭显示,目的防止乱码
MOV A,@R1 ;显示值送A
MOV DPTR,#TAB ;送表首地址给DPTR
MOVC A,@A+DPTR ;查表取段码
CJNE R2,#3,GO1 ;判断是否个位数码管?否则跳到GO1
ORL A,#80H ;将整数的数码管显示小数点
GO1:MOV P0,A ;送段码给P0口
MOV A,R3
MOV P2,A ;送位码给P2口
LCALL DELAY ;调用延时
MOV R3,A
RL A ;改变位码
MOV R3,A
INC R1 ;改变段码
DJNZ R2,DISP1 ;三位是否显示完?否则调到DISP1 RET
DELAY:MOV R6,#10 ;延时5S程序:
D1:MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
TAB: DB 3FH, 06H,5BH,4FH,66H;共阴极数码管显示0-4 ;显示数据表:DB 6DH,7DH,07H,7FH,6FH;显示5-9
END
6电路原理图
电路原理图如图10所示:
图10电路原理图
7 仿真图
调节滑动变阻器的位置,可以测出相应的电压值,如图11所示。
该电路可测得电压范围是0-5V,最大电压值如图12所示。
该电路测量的误差在约为±0.02V,如图13所示。
图13最小测量误差图
8 结束语
利用仿真功能强大、仿真元件模型丰富的Proteus软件对数字电压表各个单元电路和整体电路进行了设计和详尽的仿真分析,缩短了设计周期,提高了设计效率,降低了设计成本. 同时, Proteus软件对于电子技术的教学演示和实际设计都具有很大的辅助作用.
参考文献
[1] 陈朝元,鲁五一.Proteus软件在自动控制系统仿真中的应用[J].系统仿真学报, 2008(1):318-320.
[2] 毛谦敏.单片机原理及应用设计系统[M].北京:国防工业出版社,2008:22-26.
[3] 康华光.电子技术基础(数字部分) [M]. 5版. 北京:高等教育出版, 2005: 290-293.。