基于单片机的数字电压表设计.docx
- 文档编号:6844374
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:13
- 大小:464.50KB
基于单片机的数字电压表设计.docx
《基于单片机的数字电压表设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字电压表设计.docx(13页珍藏版)》请在冰豆网上搜索。
基于单片机的数字电压表设计
项目名称:
数字电压表设计
班级:
电子201004班
姓名:
黄洁
学号:
201003041406
指导教师:
温锦辉
日期:
2012年6月4日
摘要:
在电路设计中我们时常会用到电压表,过去大部分电压表还是模拟的,虽然精度较高但模拟电压表采用用指针式,里面是磁电或电磁式结构,所以响应较慢。
为适应许多高速信号领域目前已广泛使用数字电压表。
本设计是基at89c51单片机开发平台和自动控制原理的基础上实现的一种数字电压表系统。
该系统采用at89C51单片机作为控制核心,以ADC088为数据采样系统,实现被测电压的数据采样;使用系列比较器检测输入电压的范围,并通过继电器阵列实现了输入量程的自动转换;使用共阴极数码管显示被测电压。
关键词:
单片机、电压检测、模数转换、
第一章设计要求及目的
1.1实训要求
基本要求:
(1)以51单片机为设计核心,组成一个简易的数字电压表
(2)测量电压范围0-5V
(3)电压用四位数码管显示,能够显示三位小数
(4)尽量使用较少的元件
1.2实训目的
(1)进一步熟悉和掌握单片机的结构和工作原理;
(2)掌握单片机的借口技术及,ADC0808芯片的特性,控制方法;
(3)通过这次实训设计,掌握以单片机为核心的电路设计的基本方法和技术;
(4)通过实际程序设计和调试,逐步掌握模块化程序设计的方法和调试技术。
1.3实训意义
通过完成一个包括电路设计和程序开发的完整过程,使自身了解开发单片机应用系统的全过程,强化巩固所学知识,为以后的学习和工作打下基础。
1.4总体实训方案
测量一个0——5V的直流电压,通过输入电路把信号送给AD0808,转换为数字信号再送至at89c51单片机,通过其P1口经数码管显示出测量值。
第二章硬件设计思想和原理图
2.1原理及功能
8路数字电压表主要利用A/D转换器,其过程为如下:
先用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量与模拟量成比例关系运算得到相应的模拟电压值,然后把模拟值通过数码管显示出来。
设计时假设待测的输入电压为8路,电压值的范围为0—5v,要求能在4位LED数码上轮流显示或单路显示。
测量的最小分辨率为0.019v。
根据系统的功能要求,控制系统采用AT89s51单片机,A/D转换器。
当输入电压为5V时,输出的数据值为255(0FFH),因此最大分辨率为0.0196V(5/255)。
ADC0808具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换。
如每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对8路输入电压进行测量。
LED数码管显示采用软件译码动态显示。
通过按键选择可8路循环显示,也可以单路循环。
单路显示可通过按键选择所要显示的通道数。
本系统采样Atmel89C51单片机作为控制核心,以ADC0808为数据采样系统,实现被测电压的数据采样;使用系列比较器检测输入电压的范围,用共阴极数码管显示结果。
显示电路
输入电压
51单片机
极性检测
AD转换
电压检测
图1电压表硬件设计
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51功能性能:
与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:
1000次写/擦循环;数据保留时间:
10年;全静态工作:
0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式[6]。
AT89C51提供以下标准功能:
4KB的Flash闪速存储器,128B内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,AT89C51可降至0Hz静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。
AT89C51采用PDIP封装形式,引脚配置如图2所示。
图2AT89C51的引脚图
AT89C51芯片的各引脚功能为:
P0口:
这组引脚共有8条,P0.0为最低位。
这8个引脚有两种不同的功能,分别适用于不同的情况,第一种情况是89C51不带外存储器,P0口可以为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89C51带片外存储器,P0.0-P0.7在CPU访问片外存储器时先传送片外存储器的低8位地址,然后传送CPU对片外存储器的读/写数据。
P0口为开漏输出,在作为通用I/O使用时,需要在外部用电阻上拉。
P1口:
这8个引脚和P0口的8个引脚类似,P1.7为最高位,P1.0为最低位,当P1口作为通用I/O口使用时,P1.0-P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。
P2口:
这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用I/O口使用,它的第一功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不是像P0口那样传送存储器的读/写数据。
P3口:
这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同,如下表1所示:
P3口各位
第二功能
P3.0
RXT(串行口输入)
P3.1
TXD(串行口输出)
P3.2
/INT0(外部中断0输入)
P3.3
/INT1(外部中断1输入)
P3.4
T0(定时器/计数器0的外部输入)
P3.5
T1(定时器/计数器1的外部输入)
P3.6
/WR(片外数据存储器写允许)
P3.7
/RD(片外数据存储器读允许)
表1P3口各位的第二功能
Vcc为+5V电源线,Vss接地。
ALE:
地址锁存允许线,配合P0口的第二功能使用,在访问外部存储器时,89C51的CPU在P0.0-P0.7引脚线去传送随后而来的片外存储器读/写数据。
在不访问片外存储器时,89C51自动在ALE线上输出频率为1/6震荡器频率的脉冲序列。
该脉冲序列可以作为外部时钟源或定时脉冲使用。
/EA:
片外存储器访问选择线,可以控制89C51使用片内ROM或使用片外ROM,
若/EA=1,则允许使用片内ROM,若/EA=0,则只使用片外ROM。
/PSEN:
片外ROM的选通线,在访问片外ROM时,89C51自动在/PSEN线上产生一个负脉冲,作为片外ROM芯片的读选通信号。
RST:
复位线,可以使89C51处于复位(即初始化)工作状态。
通常89C51复位有自动上电复位和人工按键复位两种。
XTAL1和XTAL2:
片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89C51片内OSC(震荡器)的定时反馈回路。
单片机最小系统包括复位电路,晶振电路,电源电路,仿真时需搭建复位电路和晶振电路。
单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。
MCS-51单片机有一个复位引脚RST,采用施密特触发输入。
当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位[1]。
复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。
单片机的复位方式有上电自动复位和手动复位两种,图3是51系列单片机统常用的上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能很好的工作。
图3复位电路
单片机最小系统如下所示,其中P1口用于驱动数码管,P0口用于接收ADC0808转换的数据。
P2口用于控制ADC0808。
单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。
CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。
MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路[1]。
本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和2个电容即可,如图4所示。
图4时钟电路
电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了33pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。
单片机最小系统:
图5单片机最小系统
图6ADC0808引脚图
内部结构
ADC0808是CMOS单片型逐次逼近式A/D转换器,它有8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器。
ADC0808各个管教功能:
1~5和26~28(IN0~IN7):
8路模拟量输入端。
8、14、15和17~21:
8位数字量输出端。
22(ALE):
地址锁存允许信号,输入,高电平有效。
6(START):
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端
11(Vcc):
主电源输入端。
13(GND):
地。
23~25(ADDA、ADDB、ADDC):
3位地址输入线,用于选通8路模拟输入中的一路
表2ADC0808模拟通道选择
2.5ADC0808的内部结构及工作流程
ADC0808由8路模拟通道选择开关,地址锁存与译码器,比较器,8位开关树型A/D转换器,逐次逼近型寄存器,定时和控制电路和三态输出锁存器等组成,其内部结构如图4所示。
图7ADC0808的内部结构
其中:
(1)8路模拟通道选择开关实现从8路输入模拟量中选择一路送给后面的比较器进行比较。
(2)地址锁存与译码器用于当ALE信号有效时,锁存从ADDA、ADDB、ADDC3根地址线上送来的3位地址,译码后产生通道选择信号,从8路模拟通道中选择当前模拟通道。
(3)比较器,8位开关树型A/D转换器,逐次逼近型寄存器,定时和控制电路组成8位A/D转换器,当START信号有效时,就开始对当前通道的模拟信号进行转换,转换完成后,把转换得到的数字量送到8位三态锁存器,同时通过引脚送出转换结束信号。
(4)三态输出锁存器保存当前模拟通道转换得到的数字量,当OE信号有效时,把转换的结果送出。
ADC0808的工作流程为:
(1)输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器从8路模拟通道中选通1路模拟量送给比较器。
(2)送START一高脉冲,START的上升沿使逐次寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。
(3)当转换结束时,转换的结果送入到输出三态锁存器中,并使EOC信号回到高电平,通知CPU已转换结束。
(4)当CPU执行一读数据指令时,使OE为高电平,则从输出端D0-D7读出数据。
利用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输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
第三章软件设计与流程
3.1程序流图
软件部分采用模块化程序设计的方法,由单片机控制主程序、A/D转换子程序、电压检测及继电器控制程序、液晶显示组成。
系统软件设计是在KeilC编译环境下进行的,由于C语言程序可移植性好,所以提高了编程的效率。
图8模拟转换程序的流程图
3.2功能介绍
P0首先接收数据,据此控制PC6,PC7实现电压转换,保证正电压输出。
PB0,PB1,PB2,PB3,PA6的输入值通过PA1,PA2,PA3,PA4,PA5控制继电器1,2,3,4,5实现电压增减并输入A/D转换器MAX187进行测量。
最后输入PB4,PB6,PB7并由P1输入数码管显示。
第四章软件仿真及测试数据
4.1仿真结果
将写好的程序下载到仿真软件中的51单片机中,点击运行,观察数码管显示数值与图中输入电压进行比较。
理解其误差有多大。
由于仿真软件缺少相应器材,故而未能进行彻
底仿真。
总体电路图如图9所示:
图9
总结
本次项目基于单片机at89c51采用8位逐次逼近式A/D转换器ADC0809设计的电压检测装置。
用单片机进行数据控制、处理,送到显示器显示,硬件结构简单,所用元件较少,大大降低了制作成本。
软件采用C语言实现,程序简单可读写性强,效率高。
与传统的电路相比,具有方便操作、处理速度快、稳定性高、性价比高的优点,具有一定的使用价值。
本设计所测的电源范围为0—5V,如果想改装大量程范围,可在其输入电路中添加乘法器使大电压降低至可控的范围。
本系统以80C51为核心部件,利用软件编程,实现了对直流电压值的测量。
尽量做到线路简单,减小电磁干扰,充分利用软件编程,弥补元器件的精度不足。
由于水平有限,我们认为系统还有需要改进的地方。
今后的学习中还需要继续努力,深入的学习和思考问题
致谢
在本次毕业设计中,我得到了信息院电子信息工程系各位老师和领导的细心教导,首先对他们表示衷心的感谢。
对于设计中出现的各种问题,我的毕业设计指导老师温老师不管大小,都一一耐心讲解,使我的设计论文能够及时顺利完成,在此,我向王老师表示由衷的感谢,同时,在设计过程中也有很多同学给了我很多帮助,在这里对他们表示衷心的感谢,当然我的设计当中还存在很多的不足之处,还特别需要老师的指导与测评。
在两年的学习中,我要感谢所有教过我的任课老师,正是他们的无私奉献,我才能在大学两年中有所收获;我还要感谢我的同学们,感谢他们在大学两年里给我的帮助和关心,在此,向他们致以深深的谢意
参考文献:
[1] 马潮詹卫前耿德根编《Atmel51原理及应用手册》清华大学出版社
[2] 谭浩强编《C语言程序设计(第二版)》清华大学出版社
[3] 马潮编 《AVR单片机嵌入式系统原理与应用实践》北京航空航天大学出版社
[4]《c51单片机项目式教程》(131~140页)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 电压表 设计