模拟电压测量与显示剖析.docx
《模拟电压测量与显示剖析.docx》由会员分享,可在线阅读,更多相关《模拟电压测量与显示剖析.docx(17页珍藏版)》请在冰豆网上搜索。
模拟电压测量与显示剖析
燕山大学
课程设计说明书
课程名称单片机原理及应用技术
题目模拟电压测量与显示
燕山大学课程设计(论文)任务书
院(系):
电气工程学院基层教学单位:
仪器科学与工程系
学号
学生姓名
专业(班级)
设计题目
模拟电压测量与显示
设
计
技
术
参
数
利用实验板上的电位器提供模拟量输入,ADC0809做A/D转换器,将模拟量转换成二进制数字量,输入单片机,编制程序,将二进制数字量转换为相应的模拟电压值输出显示,并超限报警。
设
计
要
求
设计4位数码管显示电路和超限报警电路;编制相应的程序。
工
作
量
设计的内容满足课程设计的教学目的与要求,设计题目的难度和工作量适合学生的知识和能力状况,工作量饱满。
工
作
计
划
查阅资料进行设计准备、设计硬件电路、编制程序,编制程序、验证设计、撰写任务书。
参
考
资
料
单片微型计算机接口技术及其应用张淑清国防工业出版社
单片机原理及应用技术张淑清国防工业出版社
单片机应用技术汇编
指导教师签字
基层教学单位主任签字
说明:
此表一式四份,学生、指导教师、基层教学单位、系部各一份。
年月日
目录
摘要
本课题介绍了一种基于单片机的模拟电压测量的设计。
该设计根据伟福LAB2000P实验箱设计,并在实验箱上实现。
本设计主要由三个模块组成:
A/D转换模块,数据处理模块及显示模块。
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片80C51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0809芯片工作。
该系统的测量电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。
此系统可以测量0-5V的1路模拟直流输入电压值,并通过一个四位一体的7段数码管显示出来,当测量值超过设定值时产生报警。
关键词:
单片机;模拟电压测量;A/D转换; LAB2000P;80C51;ADC0809
第一章 前言
电子电压表主要用于测量各种高、低频信号电压,它是电子测量中使用最广泛的仪器之一。
根据测量结果的显示方式及测量原理不同,电压测量仪器可分为两大类:
模拟式电压表(AVM)和数字式电压表(DVM)。
模拟式电压表是指针式的,多用磁电式电流表作为指示器,并在表盘上刻以电压刻度。
数字式电压表首先将模拟量经模数(A/D)转换器变成数字量,然后用电子计数器计数,并以十进制数字显示被测电压值。
众所周知,模拟电压表精度较高,曾经有很广阔的市场,现在依然有不少工程师依然在使用模拟电压表。
的确模拟电压表在显示测量值方面精度校准,然而却也存在问题。
模拟电压表采用用指针式,里面是磁电或电磁式结构,所以其响应速度较慢。
然而在高速发展的当今社会,高速信号处理的需求越来越多,由于模拟电压表响应速度较慢已经不适用与高速信号领域,取而代之的将是数字电压表。
但数字电压表由于存在采样误差,精度不是很高。
不过目前可以通过技术手段来缩小误差。
使其精度达到与模拟电压表一样精确甚至更高。
可见将来数字电压表必将取代模拟电压表。
现在有越来越多的数字测量仪器的出现但原理皆与数字电压表殊途同归,因此研究数字电压表有着很大现实意义。
第二章总体设计
2.1 概述
一个完备的单片机应用系统包括硬件和软件两大部分,其中硬件部分包括扩展的存储器、键盘、显示、前向通道、后向通道、控制接口电路以及相关芯片的外围电路等,软件的功能就是指挥单片机按预定的功能要求进行操作的程序。
一个单片机系统只要系统的软、硬件紧密配合,协调一致,这样才是高性能的单片机系统。
本课题所设计的模拟电压测量系统主要包括两部分:
硬件电路及软件程序。
而硬件电路采用 INTEL公司的80C51作为主处理器,系统主要由信号采集、 转换、A/D 数据处理输出、显示等几个功能模块组成。
各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程,利用wave6000软件对其编译和仿真。
硬件流程图如下:
ADC
0809
转换
80C51
单片机
模拟电压
数据显示
图1.硬件流程图
被测直流电压由 A/D 转换单元采集后被量化,再由单片机对 A/D 转换的结果进行标度变换,得到被测电压的数值,通过单片机转换结果、把结果输出给显示驱动单元,驱动数码管显示。
2.2AD转换电路
利用ADC0808作为AD数据采样器件, ADC0808是CMOS单片型逐次逼近式A/D转换器它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近。
ADC0808的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
ADC0808各个管教功能:
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动信号,输入,高电平有效。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
2.3工作过程简介
数字化是将连续模拟的电压量经 A/D 转化后变为不连续的离散的数字量并加以显示。
在设计过程中采用分模块设计,按照设计思路把电路分 A/D 转换、数据处理输出、驱动、显示四个单元,分别设计。
A/D 转换器选用的是八位模/数转换器 ADC0809。
其次,计算机中的数字都是十六进制数,而我们习惯于十进制数的读写,因此,在软件设计中则要把十六进制数转换成十进制数。
在显示的时候也是如此。
本装置的输出用四位 LED 显示,因此在软件设计中还要解决数字输出与 LED 的接口问题。
硬件则需要将输出线接到八段数码管上。
数值显示采用八段数码管,由单片机以动态扫描方式驱动。
可以看出 ADC0809 通过 IN0 采集电压信号并送给单片机,单片机将采集来的信号进行一定的处理然后通过串口扩展的共阴极 LED 数码管显示采集的电压值。
数码管显示是采用动态显示的原理, 要显示的数码通过单片机的数据总线发送给74HC374,而四个数码管的公共端分别接 74HC374的 Q1-Q7 接口, 因此要使哪个数码管显示就把相应的公共端口置零即可。
比如:
“1” 数字的字型码通过串口发送出来并经过74HC374译码加到了四个数码管上,如果其中一个引脚为“0”那么对应的数码管显示数 字“1” 。
在此电路中电压值的四个数字分别通过串口依次的送出,对应的公共端也依次被置“0” ,由于两次置“0”的时间间隔很短,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
因此给人的感 觉就是四个数码管同时的显示出电压值四个数字。
ADC0809 的 REF(-)接地,REF(+)接电源+5V,因此采集电压的范围是 0~ 5V,A/D 转换输出的结果 D0~D7 为 8 位二进制数。
转换输出的结果在 0~255 之 间分别对应着 0~+5V 之间的 256 个电压值,因此单片机必须把 A/D 转换输出的 结果转换成可以显示的电压值。
2.4软件程序设计
开机后调用 A/D 转换子程序启动 AD 转换器,单片机等待查询转换结束信号,如果有信号则通过并行口读取转换数据并存储,再按上面的方法通过串行口把数据传输出,经译码在数码管显示。
具体方法和程序见程序设计部分。
2.5小结
在电路设计和软件设计中都采用了分模块设计, 这种设计方法清晰的电路的功能,为设计和以后的调试和维修带来了极大的方便。
特别是在软件设计中,这种方法曾强了程序的可移植性,为以后的功能扩展奠定了基础。
第3章 硬件设计及仿真
3.1 ADC0809
图2.0809引脚图
图3.0809实验箱接线图
3.2 80C51
图4.80C51引脚图
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL 门电流。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流, P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
3.3 LED显示模块
本设计才懂动态扫描技术。
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。
透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。
图5.LED实验仪接线图
LAB2000P实验仪提供了6位8段码LED显示电路,只要按地址输出相应的数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
实验仪中8位段码输出地址为0x004H,位码输出地址为0X002H。
此处X是由KEY/LED CS决定,参见地址译码。
做键盘和LED 实验时,需将KEY/LED CS接到相应的地址译码上,以便用相应的地址来访问。
当KEY/LED CS接到CS0上,则段码地址为08004H,位码地址为08002H。
3.4仿真电路图
图6电路总图及数字电压表与标准电压表的比较
第4章 程序设计
4.1程序流程图
开始
初始化
启动A/D转换
读取采样值
数据处理
送LED显示
图7.程序流程图
4.2程序代码
ADADDRESS EQU0A000H; AD0809片选
OUTBIT EQU 08002H; 位控制口
OUTSEG EQU 08004H; 段控制口
LEDBUF EQU 60H; 显示缓冲
DELAYCX EQU 75H
ADRESULT EQU 76H; AD转换结果
ORG 0000H
LJMP START
ADSTART:
MOV DPTR,#ADADDRESS
MOV A,#0H
MOVX @DPTR,A;启动A/D
MOV A,#40H
DJNZ ACC,$;延时>100us
MOVX A,@DPTR; 读入结果
MOV ADRESULT,A
RET
LEDMAP:
;八段管显示码
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
DELAY:
;延时子程序
MOV R7,#0
DELAYLOOP:
DJNZ R7,DELAYLOOP
DJNZ ACC,DELAYLOOP
RET
SEARCHLEDMAP:
ANL A, #0FH; 高4位清零
MOV DPTR, #LEDMAP
MOVC A, @A+DPTR
RET
DISPLAYLED:
MOV R0, #LEDBUF
MOV R1, #4
MOV R2, #00001000B;从左边开始显示
LOOP:
MOV DPTR, #OUTBIT
MOV A, #0
MOVX @DPTR, A;关所有八段管
MOV A, @R0
MOV DPTR, #OUTSEG
MOVX @DPTR,A
MOV DPTR, #OUTBIT
MOV A, R2
MOVX @DPTR, A; 显示一位八段管
MOV A, #01
CALL DELAY
MOV A, R2; 显示下一位
RR A
MOV R2, A
INC R0
DJNZ R1, LOOP
MOV DPTR, #OUTBIT
MOV A, #0
MOVX @DPTR, A; 关所有八段管
RET
START:
NOP
CALL ADSTART
MOV A, ADRESULT
CLRP1.0
CLRC
MOVR4,A
MOVB,#51
SUBBA,B
JCZHIWEI
SETBP1.0
AJMPCHENGXU
ZHIWEI:
CLRP1.0
CHENGXU:
MOVA,R4
MOV B,#05H
MUL AB
PUSH A
MOV A,B
MOV B,#0AH
DIV AB
CALL SEARCHLEDMAP
MOV LEDBUF+0,A
MOV A,B
CALL SEARCHLEDMAP
ORL A,#80H ;添加小数点
MOV LEDBUF+1,A
POP A
MOV B,#0AH
MUL AB
PUSH A
MOV A,B
CALL SEARCHLEDMAP
MOV LEDBUF+2,A
POP A
MOV B,#0AH
MUL AB
MOV A,B
CALL SEARCHLEDMAP
MOV LEDBUF+3,A
DISPLAYAGAIN:
CALL DISPLAYLED;
DJNZ DELAYCX,DISPLAYAGAIN
NOP
SJMP START
END
第5章 实验箱连线和实验结果
5.1 实验箱连线图
连线
连接孔1
连接孔2
注释
1
CS0 KEY/LED
CS LED
位选段选
2
CS2
AD_CS
AD转换器地址
3
电位器输出
IN0 输入
模拟电压
4
P1.2
L1
超限报警
5.2实验结果
软件编译并全速运行后,则LED数码管上开始显示数字,旋转电位器,LED上显示的数字在0V~4.98V发生改变。
LED的显示结果和直接用数字电压表测试模拟量输入所得结果几乎一致,误差完全在合理的范围之内。
第六章 收获与总结
经过一周的设计,终于完成了设计,LED显示最大值只能是4.98V,离标准最大值5.0V已经不远,达到预期目的,设计成功。
回想本次课程设计,是在老师的指导和同学的帮助下共同完成的。
在完成过程中遇到了许多问题,但在不断努力下,发现并解决了问题,使实验取得了成功。
通过这次试验设计,在利用试验箱上多个功能模块共同实现采集模拟电压并把数据转换成数字在LED数码管上显示。
熟悉了LAB2000P试验箱上各功能模块的结合应用。
本设计用到了A/D转换程序、LED数码管显示程序、调用延时程序等等。
应用不同功能的汇编程序的相结合,熟悉了主程序和各个子程序的功能调用。
实现了不同功能程序的结合应用。
在软件程序的编写过程中遇到许多问题,使得程序编译出现很多错误,后来发现并改正了程序。
通过这次实验设计我们发现在做设计的时候有时候同学的帮助起着很大的作用。
并且由于对编程不熟悉,所以在编程上有些费劲。
由于水平有限,我们认为系统还有需要改进的地方。
所以我们要更加努力的学习编程,提高自己的编程水平,深入的学习和思考问题。
参考文献
1.张淑清.单片微型计算机接口技术及其应用
2. 张淑清.单片机原理及应用
3郑晖晖.单片机应用技术汇编语言
4 凌志浩.智能仪表原理与设计技术