数字电压表设计说明书.docx
《数字电压表设计说明书.docx》由会员分享,可在线阅读,更多相关《数字电压表设计说明书.docx(13页珍藏版)》请在冰豆网上搜索。
![数字电压表设计说明书.docx](https://file1.bdocx.com/fileroot1/2023-1/8/5bcf3d79-6d9e-472d-ab0e-03b9a7c69868/5bcf3d79-6d9e-472d-ab0e-03b9a7c698681.gif)
数字电压表设计说明书
衢州学院
数字电压表
设计说明书
课题名称:
基于单片机的数字电压表的设计
专业名称:
10电气自动化
学生班级:
2
学生姓名:
王斌浩陆正土施连喜
指导教师:
徐进顾能华
摘要
电压表是测量仪器中不可缺少的设备,电压表的好坏直接影响到测量精度。
为此,设计了一个具有一定精度的数字电压表,控制系统采用STC89C52单片机,A/D转换采用ADC0809,显示采用LCD1602液晶模块。
数字电压表可以测量0~5V的输入电压值,并在LCD1602上可实现两路选择显示,测量最小分辨为0.02V,测量误差约为+/-0.02V。
由于尝试少并且器材质量的问题,该作品精度不是很高,但是器件的应用还是蛮好的!
关键字:
A/D转换;STC89C52单片机;LCD1602液晶模块
目录
引言
1数字电压表的设计
1.1设计目的
1.2设计任务及要求
1.3设计方案
2硬件设计
2.1单片机设计
2.1.1时钟电路
2.1.2复位电路
2.1.37芯片功能介绍
2.1.STC89C52控制电路
2.2逐次逼近式A/D转换模块设计
2.2.1ADC0809引脚功能
2.2.2ADC0809与单片机接口
2.3LCD1602液晶显示模块设计
2.3.21602LCD的基本参数及引脚功能
2.3.3基本操作时序表
3软件设计
3.1初始化程序
3.2A/D转换子程序
3.31602LCD液晶显示模块程序及按键控制程序
4系统调试
4.1硬件调试
4.2软件调试
5结论
谢辞
参考文献
附录
引言
数字电压表简称DVM,基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。
较之于一般的模拟电压表,数字电压表具有精度高,测量准确,读数直观,使用方便等优点。
电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。
数字电压表的核心部件是A/D转换器,由于不用的A/D转换原理构成了不同类型的DVM。
一般说来,A/D转换方式可分为两类:
积分式和逐次逼近式。
在高精度数字电压表中,常采用积分式和逼近式相结合起来的复合式A/D转换器。
本设计以STC89C52单片机为核心,以逐次比较型A/D转换器ADC0809,LCD1602为主题,构造了一款简易数字电压表,能够测量0~5V的直流电压,最小分辨率为0.02V。
1数字电压表的设计
1设计方案
按系统功能实现要求,决定控制系统采用STC89C52单片机,A/D转换采用ADC0809,显示采用LCD1602,系统除了能确保复位控制外,外加校准电压,还能同时进行两路测量。
2硬件设计
2.1单片机设计
单片机控制模块是为了控制各单元电路的运行并完成数据换算或处理,主要由单片机,时钟电路,复位电路组成。
2.1.1时钟电路
单片机工作时间基准是由时钟电路提供的,在单片机的XTAL1和XTAL2两个管脚接一个晶振及两个电容就构成单片机的时钟电路,电路中电容器C1和C2对振荡频率有微调作用,本次设计选择11.0592MHZ.
2.1.2复位电路
单片机的RST管脚为主机提供了一个外部复位信号输入口。
复位信号时高电平有效,高电平持续时间为2个机器周期以上。
单片机的复位方式可由手动复位完成。
时钟电路及复位电路如图2-1所示:
图2-1时钟及复位电路
2.1.3STC89C52芯片功能介绍
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89S52使用DIP封装,引脚配置如图2-2所示:
图2-2STC89C52引脚图
P0口:
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.4STC89C52控制电路
如图2-3所示:
图2-3STC89C52控制电路
2.2逐次逼近式A/D转换模块设计
A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图2-4所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
图2-4ADC0809内部结构
2.2.1ADC0809引脚功能
ADC0809芯片有28条引脚,采用双列直插式封装。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
2.2.2ADC0809与单片机接口
ADC0809与单片机的接口如图2-5所示
图2-5ADC0809转换电路
由于ADC0809具有输出三态锁存器,故其8位数据输出线可直接与单片机数据总线相连。
本次设计了两路数据读取,可同时测量两路电压。
2.3LCD1602液晶显示模块设计
2.3.1LCD1602液晶显示原理
液晶显示的原理是利用液晶的物理特性,,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄,适用于大规模集成电路直接驱动,易于实现全彩色显示的特点,目前已经被广泛应用在便携式
电脑,数字摄像机,PDA移动通信工具等众多领域。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母,数字,符号等的点阵型液晶模块,它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位可以显示一个字符。
每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此没所以不能显示图形。
1602LCD是指显示的内容是16*2,即可显示两行,每行16个字符液晶模块(显示字符和数字)。
2.3.21602LCD的基本参数及引脚功能
1602LCD主要技术参数
显示容量:
16*2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95*4.35(W*H)mm
引脚功能说明:
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口如下表
第1脚:
VSS为地电源
第2脚:
VDD接5V正电源
第3脚:
VL为液晶显示器对比度调整端,接正电源对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平是选择数据寄存器,低电平是选择指令
寄存器。
第5脚:
R/W为读写信号线,高电平是进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变为低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
2.3.3基本操作时序表
读写操作时序如图2-6和2-7所示:
图2-6读操作时序图
图2-7写操作时序图
1602的数据位由单片机P0口控制,首先初始化,然后根据时序图写程序开启1602.原理图如下图2-8:
图2-81602LCD显示电路
1602特性
(1)+5V电压,对比度可调
(2)内含复位电路
(3)提供各种控制命令:
如清屏,字符闪烁,光标闪烁,显示移位等多种功能
(4)有80字节显示数据存储器DDRAM
(5)内建有160个5*7点阵的字型的字符发生器CGROM
(6)8个可由用户自定义的5*7的字符发生器CGRAM
3软件设计
3.1初始化程序
所谓初始化,是将要用到的STC89C52单片机内部部件进行初始化工作状态设定,初始化自称西主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器。
本次设计采用51单片机定时器0的模式2,具有自动加载功能,计数器里面的数据加到全是F时,再加一个后就溢出了,然后硬件自动将TH里面的数据写到TL里。
3.2A/D转换子程序
A/D转换程序用来控制对输入模块电压信号的采集测量,并将对应的数值存入相应的内存单元。
3.31602LCD液晶显示模块程序及按键控制程序
采用STC89C52的P2.5,P2.6,P2.7分别RS,R/W,EN。
其中EN是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号,首先进行模块初始化,再进行两路数据显示,同时设定显示校准电压。
本次设计使用了四个按键,以进入电压校准,期望能测量到更准确数据。
同时,为了简化硬件设计,主要采用软件定时的方式实现,通过软件延时程序来实现。
4系统调试
完成系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行硬件和软件调试。
4.1硬件调试
硬件调试都主要任务是排除硬件故障,其中包括设计错误和连线故障等。
1.检查所设计都硬件所有器件和引脚是否都正确,尤其是电源的连接是否正确,检查各总线是否有短路都故障。
2.将显示子程序保存好并运行。
3.按下复位键时,电压为初始值。
4.硬件调试与测试均正常。
4.2软件调试
软件调试都任务是利用开发板进行调试的,发现和纠正程序的错误,同时也能发现硬件的故障。
软件调试是一个模块一个模块进行的。
首先单独调试各子程序是否能够按照预期的功能,接口电路控制是否正常,最后调试整个程序。
尤其注意的是各模块间能否正确传递参数。
1.检查1602显示模块程序,观察在1602上能否显示相应的字符。
2.检查A/D转换模块程序,可以在硬件电路的输入端已知都几个电压,分别观察是否显示相应的电压值。
5结论
本次设计以STC89C52单片机为控制核心,通过A/D0809将被测信号转换成数字信号,经单片机内部程序处理后,由液晶显示LCD1602显示测量结果。
在设计的过程中,发现了不少问题,但是经过努力都解决了,并且还增长了很多知识。
这次设计是软硬件结合的设计,需要足够的耐心和细心。
A/D0809的时钟端的信号输入本来想用定时器提供频率的,但是定时器全部被占用,最后经查资料发现单片机的ALE端输出的频率是单片机时钟信号的六分之一,计算是2MHZ,器件需要的是500KHZ左右的频率,所以采用74LS74进行四分频,效果很好,调出来时很高兴!
硬件解决以后是软件的设计,程序设计是一个很灵活的东西,它反映了我们的逻辑思维能力和创新能力。
很多子程序是借鉴书本上了,程序间的衔接也是很重要的。
最后,数字电压表的性能良好,测量读数稳定易读,指标也符合任务书要求,但是还是有要改进的地方:
1.测量电压值不能实时保存,使用不够方便;
2.STC89C52可实现对8个通道的输入信号轮流转换,本次设计仅仅使用了其中两路,造成较大资源浪费,若能对电路稍加改进,其应用价值会更大。
谢辞
本作品是在实验室中完成的,在此感谢我的同学们。
同时也感谢提供这次机会的电信学院。
本次设计,通过大量寻找资料,请教老师,寻求帮助以及不懈努力,在收获知识的同时,也培养了独立思考的能力,更重要的是让我们学会了学习的方法。
虽然在过程中遇到了一些困难,但是从中我也得到了很多帮助,没有半途而废,所以,通过这次比赛,我学到了很多东西。
参考文献
[1]李秀忠《单片机应用技术》[M]北京人民邮电出版社2007年3月
[2]蔡明文冯先成《单片机原理及应用技术》[M]北京华中科技大学出版社2007年12月
[3]李全利《单片机原理及应用技术》[M]北京高等教育出版社2008年