单片机的数字电压表课程设计.docx
- 文档编号:6104063
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:33
- 大小:415.45KB
单片机的数字电压表课程设计.docx
《单片机的数字电压表课程设计.docx》由会员分享,可在线阅读,更多相关《单片机的数字电压表课程设计.docx(33页珍藏版)》请在冰豆网上搜索。
单片机的数字电压表课程设计
单片机课程设计
题目:
基于单片机的数字电压表
学院名称:
电气工程学院
指导老师:
班级:
学号:
学生姓名:
2010年12月31日
单片机课程设计任务书
1.课程设计的内容和要求(包括原始数据、技术要求、工作要求等):
一、设计电压测量电路
数字式电压表是电压测量的常用仪表,本课题即要求应用单片机、A/D转换器及其他器件组成数字式电压检测仪表。
二、主要技术指标与要求:
⑴被测电压可数字显示;
⑵测量电压范围为0~5V,精度为1v;
⑶电压连续可调,
⑷电压超出测量范围时,报警信号。
三.设计思路
首先要对该设计进行分析,用protel99将该电路的原理图绘出,然后用汇编语言编写出程序并画出流程图,再用仿真软件进行仿真调试,最后仿真通过,记录仿真结果。
2.对课程设计成果的要求〔包括图表、实物等硬件要求〕:
设计电路,安装调试或仿真,分析实验结果,并写出设计说明书。
要求图纸布局合理,符合工程要求,所有的器件的选择要有计算依据。
四.主要参考文献
[1]何立民.单片机高级教程,[M].北京:
北京航空航天大学出版社,2007
[2]何立民.单片机应用系统设计,[M].北京:
北京航空航天大学出版社,1990
[3]何立民.单片机应用技术选编1~7,[M].北京:
北京航空航天大学出版社,1993~1999
[4]杭和平.单片机原理与应用[M].北京:
机械工业出版社,2008
[5]楼然苗.51系列单片机设计实例[M].北京:
北京航空航天大学出版社,2003
[6]龙泽明.MCS-51单片机原理及工程应用[M].国防工业出版社,2005
五.课程设计工作进度计划
序号
起迄日期
工作内容
1
2010-12-20
布置任务,教师讲解设计方法及要求
2
2010-12-21
学生查找阅读资料,并确定方案
3
2010-12-22
学生讨论方案
4
2010-12-23
设计及计算
5
2010-12-24~2010-12-29
制作实物并写说明书
6
2010-12-30
答辩
7
2010-12-31
答辩
主指导教师
日期:
2010年12月20日
基于单片机的数字电压表的设计
内容摘要:
本次设计主要解决A/D转换、数据处理及显示键盘控制等模块。
控制系统采用AT89s52单片机,A/D转换采用ADC0809。
显示采用4位LED显示数码管的具有电压测量功能的具有一定精度的数字电压表。
简易数字电压表可以测量0~5V的3路输入电压值,并在四位LED数码管上轮流显示或单路选择显示。
关键词:
A/D转换显示电路AT89s51单片机键盘电路仿真
引言:
数字电压表是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
本文重点介绍单片A/D转换器以及由它们构成的基于单片机的数字电压表的工作原理。
一、设计方案的制定和最优选择2
1.1设计要求2
1.2显示元件的选择2
1.3模数转换器的选择2
1.3单片机的选择3
一、设计方案的制定和最优选择
1.1设计要求
(1)电压测量范围0-5V;
(2)能用数码管显示电压值;
(3)测量精度达0.1V;
(4)要求系统具备复位功能;
1.2显示元件的选择
可供选择的元件主要有液晶、点阵显示器和数码管等三种,基于经济,技术难度等方面的客观原因,采用数码管显示,数码管显示技术较为简单,掌握的比较熟练,且作为本设计的备选部件,能够完全符合设计的要求,故采用数码管显示数字
1.3模数转换器的选择
我们选型的时候一般需要考虑以下一些参数:
确定A/D转换器的精度:
精度是反映转换器的实际输出接近理想输出的精确程度的物理量。
分辩率(Resolution) 指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2n的比值。
分辩率又称精度,通常以数字信号的位数来表示。
量化误差(QuantizingError) 由于AD的有限分辩率而引起的误差,即有限分辩率AD的阶梯状转移特性曲线与无限分辩率AD(理想AD)的转移特性曲线(直线)之间的最大偏差。
通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。
在转化过程中,由于存在量化误差和系统误差,精度会有所损失。
其中量化误差对于精度的影响是可计算的,它主要决定于A/D转换器件的位数。
选择A/D转换器的转换速率
转换速率(ConversionRate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。
采样时间则是另外一个概念,是指两次转换的间隔。
为了保证转换的正确完成,采样速率(SampleRate)必须小于或等于转换速率。
常用单位是ksps和Msps,表示每秒采样千/百万次。
选择合适的量程
模拟信号的动态范围较大,有时还有可能出现负电压。
在选择时,待测信号的动态范围最好在A/D器件的量程范围内。
选择A/D器件的输出接口
A/D器件接口的种类很多,有并行总线接口的,有SPI、I2C、1-Wire等串行总线接口的。
它们在原理和精度上相同,但是控制方法和接口电路会有很大差异。
选择A/D器件的通道数和封装
这与系统有关,通道数要满足整个采集系统的需要。
封装则决定PCB布板的时候的大小,而且在高速应用的时候也影响连线的分布参数。
选择A/D器件温度范围
这仅仅与一些苛刻的环境有关,注意每个AD有固定的应用的温度范围。
综上标准,结合本次设计,选择芯片ADC0809来作为A/D转换器,ADC0809是一块8路8位模数转换芯片,将模拟电路和数字电路集成在一个用28个功能端的电路内,包含了A/D转化、逻辑控制、译码驱动等电路,其转换时间为100μS左右,符合作品8路采集要求且电路设计简单,电路板布线不复杂,便于焊接、调试。
1.3单片机的选择
因为在上单片机课的时候是以51单片机为模板学习的,故选择AT89s52单片机来进行设计。
AT89s52
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89s52引脚图
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻
辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,
P0不具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验
时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个
TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2
的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个
TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)
时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用
8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个
TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
一、系统总体设计及其原理图
2.1系统总体设计框图
本系统采用AT89S52单片机作为控制核心,以ADC0809为数据采样系统,实现被测电压的数据采样;使用系列比较器检测输入电压的范围,用共阴极数码管显示结果。
输入电压
显示电路
51单片机
极性检测
AD转换
电压检测
单片机最小系统包括复位电路,晶振电路,电源电路,仿真时需搭建复位电路和晶振电路。
晶振电路:
图
图1.1
单片机最小系统如下所示,其中P1口用于驱动数码管,P0口用于接收ADC0809转换的数据。
P2口用于控制ADC0809。
单片机最小系统:
利用ADC0809作为AD数据采样器件,ADC0809是CMOS单片型逐次逼近式A/D转换器它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近。
ADC0809的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
ADC0809各个管教功能:
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:
接地。
ADC0809与单片机的连接。
该部分主要实现的功能是自动量程切换和电压变换,模块主要由电压极性检测电路、电压范围粗测电路、电压变换电路三部分组成。
电压极性检测电路
电压极性检测电路采用过零比较器检测负电压的方式实现的,运算放大器LM324的反向端接地,同向端通过100K电阻接输入信号。
电压范围粗测电路
为了粗略地得到被测量的电压范围我们采用多组比较器的方式,通过阶梯式比较的方法确定输入电压的范围
量程切换电路
电路由衰减电阻、切换继电器和运算放大器组成,对应的是衰减1/2、1/3、1/4和无零漂放大50倍,切换电路如图所示。
电压变换到0-5V标准信号后,再由A/D转换进行采样,最后由单片机算法还原。
总体原理图及其接线
硬件连线:
(1)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
(2)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
(3)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用4.导线相连接。
(4)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。
(5)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。
(6)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。
(7)把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。
(8)把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。
(9)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。
二、软件设计与流程
3.1程序设计流程图
主程序的流程图
主程序流程图
显示子程序流程图
显示子程序采用动态扫描法实现四位数码管的数值显示。
测量所得的A/D转换数据放在70H~77H内存单元中,测量数据在显示时需转换成10进制BCD码放在78H~7BH单元中,其中7BH存放通道标志数。
寄存器R3用作8路循环控制,R0用作显示数据地址指针。
显示子程序流程图
模/数转换测量子程序流程图
模/数据转换测量子程序用来控制对0809八路模拟输入电压的A/D转换,并将对应数70H~77H内存单元。
A/D转换流程图
3.2各模块的程序
主程序
START:
LCALLCLEARMEMIO;初始化
MAIN:
LCALLTEST;测量一次
LCALLDISPLAY;显示数据一次
AJMPMAIN
NOP;PC值出错处理
NOP
NOP
LJMPSTART
显示子程序:
ORG0
SJMP$
TEST:
CLRA;模/数转换子程序
MOVP2,A
MOVR0,#70H;转换值存放首址
MOVR7,#03H;转换8次控制
LCALLTESTART;启动测试
WAIT:
JBP3.2,MOVD;等A/D转换结束信号
AJMPWAIT
TESTART:
SETBP2.3;测试启动
NOP
NOP
CLRP2.3
SETBP2.4
NOP
NOP
CLRP2.4
NOP
NOP
NOP
NOP
RET
MOVD:
SETBP2.5;取A/D转换数据
MOVA,P0
MOV@R0,A
CLRP2.5
INCR0
MOVA,P2;通道地址加1
INCA
MOVP2,A
CJNEA,#03H,TESTEND;等8路A/D转换结束
TESTEND:
JCTESTCON
CLRA;结束恢复端口
MOVP2,A
MOVA,#0FFH
MOVP0,A
MOVP1,A
MOVP3,A
RET
TESTCON:
LCALLTESTART
LJMPWAIT
END
A/D转换程序:
TUNBCD:
MOVA,@R0;255/51=5.00V运算
MOVB,#51
DIVAB
MOV7AH,A;个位数放入7AH
MOVA,B;余数大于19H,F0为1,乘法溢出,结果加5
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
MOVB,#51
DIVAB
JBF0,LOOP2
ADDA,#5
LOOP2:
MOV79H,A;小数后第一位放入79H
MOVA,B
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
MOVB,#51
DIVAB
JBF0,LOOP3
ADDA,#5
LOOP3:
MOV78H,A;小数后第二位放入78H
RET
3.3软件的调试
软件调试的任务是利用开发工具KeilC51进行在线仿真调试,发现和纠正程序的错误,同时也能发现硬件的故障。
软件调试是一个模块一个模块进行的。
首先单独调试各子程序是否能够按照预期的功能,接口电路的控制是否正常。
最后调试整个程序。
尤其注意的是各模块间能否正确的传递参数。
1.检查LED显示模块程序。
观察在LED上是否能够显示相应的字符。
2.检查按键模块程序。
3.所有程序运行正常后,在这个程序中加入中断延时50ms。
3.4KeilC的简介
Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的。
四、总结
经过将近两周的单片机课程设计,终于完成了数字电压表的设计,这次设计基本达到设计要求。
在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计让我增长很多知识。
程序设计是一个很灵活的东西,它反映了我们解决问题的逻辑思维和创新能力,它是一个设计的灵魂所在。
因此在整个设计过程中大部分时间是用在程序上面的。
很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。
通过我们努力和老师的指导最终完成了程序设计。
要设计一个成功的电路,必须要有耐心,要有坚持的毅力。
在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。
这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。
通过这次实训,我在书本理论知识的基础上又有了更深层次的理解。
在两周的设计中,我受益匪浅,让我对专业知识有了更深的理解,收获知识的同时,还收获了阅历,收获了成熟与合作。
我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考的能力还培养了动手操作能力。
更重要的是我们学会了学习的方法,这是日后最实用的。
面对社会的挑战,只有通过不断的学习和实践才能完成知识的积累,才能更好的提高自己取得更好的成绩。
在这次课程设计的撰写过程中,我得到了许多人的帮助。
首先我要感谢老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。
同时也感谢学院为我提供良好的做毕业设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学!
主要参考文献
[1]何立民.单片机高级教程,[M].北京:
北京航空航天大学出版社,2007
[2]何立民.单片机应用系统设计,[M].北京:
北京航空航天大学出版社,1990
[3]何立民.单片机应用技术选编1~7,[M].北京:
北京航空航天大学出版社,1993~1999
[4]杭和平.单片机原理与应用[M].北京:
机械工业出版社,2008
[5]楼然苗.51系列单片机设计实例[M].北京:
北京航空航天大学出版社,2003
[6]龙泽明.MCS-51单片机原理及工程应用[M].国防工业出版社,2005
附录一
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
RETI
ORG0013H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 电压表 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)