毕业设计基于ADC0809液晶显示的数字电压表设计.docx
《毕业设计基于ADC0809液晶显示的数字电压表设计.docx》由会员分享,可在线阅读,更多相关《毕业设计基于ADC0809液晶显示的数字电压表设计.docx(32页珍藏版)》请在冰豆网上搜索。
![毕业设计基于ADC0809液晶显示的数字电压表设计.docx](https://file1.bdocx.com/fileroot1/2023-7/6/0452b743-2b53-4ae5-a3d9-e5f02b516a71/0452b743-2b53-4ae5-a3d9-e5f02b516a711.gif)
毕业设计基于ADC0809液晶显示的数字电压表设计
基于ADC0809液晶显示的数字电压表设计
基于ADC0809液晶显示的数字电压表设计
谭小品
摘要
单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(的微处理器(CPU)。
随着单片机技术的飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平的重要标志。
单片机可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。
单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。
现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。
本毕业设计的课题是“数字电压表的设计”。
主要考核我们对单片机技术,编程能力等方面的情况。
观察独立分析、设计单片机的能力,以及实际编程技能。
本课题主要解决A/D转换、数据处理及显示控制等三个模块。
控制系统采用AT单片机,A/D转换采用ADC0809。
关键词:
AT89S52ADC0809lcd1602数字电压表
前言
数字电压表出现在50年代初,60年代末发起来的电压测量仪表,简称DVM,它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后再通过显示器件显示。
这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制信实验研究的领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。
所以,数字化测理仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦锁和陈旧方式也催促了它的飞速发展,如今,它又成为向智能化仪表发展的必要桥梁。
如今,数字电压表已绝大部分已取代了传统的模拟指针式电压表。
因为传统的模拟指针式电压表功能单一,精度低,读数的时候也非常不方便,很容易出错。
而采用单片机的数字电压表由于测量精度高,速度快,读数时也非常的方便,抗干扰能力强,可扩展性强等优点已被广泛的应用于电子及电工的测量,工业自动化仪表,自动测试系统等智能化测量领域。
显示出强大的生命力。
数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采样速度慢,重量达几十公斤,体积大。
继之出现了斜波式电压表,它的速度方面稍有提高,但是准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐近式结构,它不仅保持了比较式准确度高的优点,而且速度也有了很大的提高,但它有一缺点是抗干扰能力差,很容易受到外界各种因素的影响。
随后,在斜波式的基础上双引伸出阶梯波式,它的唯一的进步是成本降低了,可是准确宽,速以及抗干扰能力都未能提高。
而现在,数字电压表的发展已经是非常的成熟,就原理来讲,它从原来的一,二种已发展到多种,在功能上讲,则从测单一参数发展到能测多种参数;从制作元件来看,发展到了集成电路,准确度已经有了很大的提高,精度高达1NV;读数每秒几万次,而相对以前,它的价格也有了降低了很多。
目前实现电压数字化测量的方法仍然模-数(A/D)转换的方法。
而数字电压表种类繁多,型号新异,目前国际仍未有统一的分类方法。
在电量的测量中,电压、电流和频率是最基本的三个被测量。
其中,电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
另外,由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受用户青睐,数字式电压表就是基于这种需求而发展起来的.
1主要元器件的介绍和本系统的选择
1.1常用单片机的特点比较及本设计单片机的选择
单片机是指一个集成在一块芯片上的完整计算机系统,具有一个完整计算机所需要的大部分部件:
CPU,内存,总线系统等。
而目前常用的单片机的8位有51系列单片机,AVR单片机,PIC单片机。
应用最广的8位单片机还是intel的51系列单片机。
51系列单片机的特点是:
硬件结构合理,指令系统规范,加之生产历史悠久,世界有许多芯片公司都买了51的芯片核心专利技术,并在其基础上扩充其性能,使得芯片的运行速度变得更快,性价比更高。
AVR单片机是atmel公司推出较新的单片机,它的显著特点是:
高性能,低功能,高速度,指令单周期为主,但性格方面比51单片机要高。
有专门的I/O方向寄存器。
虽然有转强的驱动电压,但I/O口使用不比51单片机方便。
PIC单片机系列是美国微芯公司的产品,也是市面上增长最快的单片机之一,属精简指令集单片机,其特点是:
高速度,高性能,但在性格方面比51单片机要高,也有专门的I/O方向寄存器,I/O口使用不比51单片机方便。
综合以上各种单片机的基本性能及本设计的满足需要,我们将选择51系列单片机。
1.2AT89S52单片机性能简介
单片机采用MCS-51系列单片机。
由ATMEL公司生产的AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
而且,它还具有一个看门狗(WDT)定时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。
AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
其芯片外观及引脚图如下:
1.3单片机管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能口,如下表所示:
表2.1AT89S52引脚功能表
管脚
备选功能
P3.0RXD
(串行输入口)
P3.1TXD
(串行输出口)
P3.2/INT0
(外部中断0)
P3.3/INT1
(外部中断1)
P3.4T0
(记时器0外部输入)
P3.5T1
(记时器1外部输入)
P3.6/WR
(外部数据存储器写选通)
P3.7/RD
(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
1.4常用显示器件简介
本次设计中有显示模块,而常用的显示器件比较多,有数码管,LED点阵,1602液晶,12864液晶等。
1602液晶是工业字符型液晶,能够同时显示16*2即32个字符。
1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。
使用时直接编写软件程序按一定的时序驱动即可。
它的特点是显示字迹清楚,价格相对便宜。
1.5LCD1602使用说明
图2.4.1.11601引脚图
1602液晶模块引脚说明
引脚
符号
功能说明
1
GND
接地
2
Vcc
+5V
3
VL
驱动LCD,一般将此脚接地
4
RS
寄存器选择0:
指令寄存器(WRITE)Busyflag,位址计数器(READ)1:
数据寄存器(WRITE,READ)
5
R/W
READ/WRITE选择1:
READ0:
WTITE
6
E
读写使能(下降沿使能)
7
DB0
低4位三态、双向数据总线
8
DB1
9
DB2
10
DB3
11
DB4
高4位三态、双向数据总线
另外DB7也是一个Busyflag
12
DB5
13
DB6
14
DB7
表2.4.1.1LCD1601液晶模块的引脚
寄存器选择,如表所示:
表2.4.1.2寄存器选择控制线操作
RS
R/W
操作说明
0
0
写入指令寄存器(清除屏幕…等)
0
1
读Busyflag(DB7),以及读取位址计数器(DB0~DB6)值
1
0
写入数据寄存器(显示各字型等)
1
1
从数据寄存器读取数据
Busyflag(DB7):
在此位未被清除为“0”时,LCD将无法再处理其他指令要求。
(1)显示地址:
内部地址计数器的计数地址:
SB7=0(DB0~DB6)第一行00、01、02……等,第二行40、41、42……等,可配合检测DB7=1(RS=0,R/W=1)读取目前显示字的地址,判断是否需要换行。
表2.4.1.3LCD160116×1显示字的地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
00
01
02
03
04
05
06
07
40
41
42
43
44
45
46
47
(2)外部地址:
DB7=1,亦即80H+内部计数地址,可以用此方式将字显示在某一位置。
LCD各地址列举如下表:
表2.4.1.4LCD160116×1显示字的外部地址
16×116字1行1601
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
80
81
82
83
84
85
86
87
C0
C1
C2
C3
C4
C5
C6
C7
表2.4.1.5LCD1601的指令组
指令
说明
设置码
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清除显示幕
0
0
0
0
0
0
0
0
0
*
光标回到原点
0
0
0
0
0
0
0
0
1
*
进入模式设定
0
0
0
0
0
0
0
1
I/D
S
显示幕ON/OFF
0
0
0
0
0
0
1
D
C
B
移位
0
0
0
0
0
1
S/C
R/L
*
*
功能设定
0
0
0
0
1
DL
N
F
*
*
字发生器地址设定
0
0
0
1
AGC
设置显示地址
0
0
0
1
ADD
忙碌标志位BF
0
0
1
BF
显示数据
1
0
写入数据
读取数据
1
1
读取数据
I/DI/D=1表示加1,I/D=0表示减1
SS=1表示显示幕ONS=0表示OFF
DD=1表示显示屏幕OND=0表示显示屏幕OFF
CC=1表示光标ONC=0表示光标OFF
BB=1表示闪烁ONB=0表示显示闪烁OFF
S/CS/C=1表示显示屏幕移位S/C=0光标移位
R/LR/L=1表示右移R/L=0表示左移
DLDL=1表示8位DL=0表示4位
FF=1表示5×10点矩阵F=0表示5×7点矩阵
NN=1表示2行显示行N=0表示1行显示行
BFBF=1:
内部正在动作BF=0:
可接收指令或数据码
1.6常用的A/D芯片简介
常用的A/D芯片有AD0809,AD0832,TLC2543C等几种。
下面简单介绍一下这三种芯片。
AD0809是8位逐次逼近型A/D转换器,它是由一个8路的模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
些A/D转换器是的特点是8位精度,属于并行口,如果输入的模拟量变化大快,必须在输入之前增加采样电路。
1.7ADC0809引脚结构功能说明
1~5、26~28,IN0~IN7:
8路模拟量输入端。
14~15、8、17~21,D0~D7:
8位数字量输出端。
23~25,ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
22,ALE:
地址锁存允许信号,输入,高电平有效,对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
6,START:
A/D转换启动信号,输入高电平有效,START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。
本信号有时简写为ST.
7,EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9,OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量,用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
10,CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ,EOC=0,正在进行转换;EOC=1,转换结束。
使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
12、16,REF(+)、REF(-):
基准电压。
11,Vcc:
电源,单一+5V。
13,GND:
地。
2总体设计及硬件电路模块功能简介
2.1技术要求:
基本功能:
电压测量范围0~5V;能用数码管显示电压值;采集电压的大小(保留小数点后3位);整个电压采集显示过程通过两个按键控制启动和停止;系统具有复位功能。
2.2设计方案:
根据上述,我们选择单片机与A/D转换芯片结合的方法实现本设计。
使用的基本元器件是:
AT89C52单片机,AD0809模数转换芯片,lcd显示器,滑动变阻器,按键,电容,电阻,晶振,标准电源等等。
2.3系统硬件电路的设计
数字电压测量电路由A/D转换、数据处理及显示控制等组成。
A/D转换由集成电路0809完成。
0809具有8路拟输入端口,地址线(23~-25脚)可决定对哪一路模拟输入作A/D换。
22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。
6脚为测试控制,当输入一个2uS宽高电平脉冲时,就开始A/D转换。
7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。
9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。
10脚为0809的时钟输入端,利用单片机30脚的六分频晶振频率再通过14024二分频得到1MHz时钟。
单片机的P1.5~P1.7、P3端口作1602液晶显示控制。
P2端口作A/D转换数据读入用,P0端口用作0809的A/D转换控制。
(具体电路参照附件1)
2.4单片机系统
单片机最小系统包括晶振电路,复位电路,电源。
此模块中,单片机的晶振是12MHZ,C1和C2的电容是22UF,C3可选10UF。
R1电阻为1K。
2.5数模转换系统
此设计中选择的是A/D转换芯片的通道0,A/D芯片的数据输入口连接单片机的P0.5口,数据输出口连接单片机的P0.6口,芯片使能端连接单片机的P0.3口,脉冲端连接单片机的P0.7口。
模块连接如下图所示。
2.6时钟电路
就单片机内部每个部件要想协调一致地工作,必须在统一口令——时钟信号的控制下工作。
单片机工作所需要的时钟信号有两种产生方式,即内部时钟方式和外部时钟方式。
图6.3是内部时钟方式:
单片机内部有一个构成振荡器的增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输入端,这个放大器与作为反馈元件的片外晶振一起构成自激振荡器。
在该图中,电容C1和C2取30pf,晶体的振荡频率取12Mhz,晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。
实际连接如图6.3所示
2.7复位电路
用AT89S51的复位电路如图6.4所示。
当单片机一上电,立即复位。
电容C和电阻R1实现上电自动复位。
复位也是使单片机退出低功耗工作方式而进入正常状态的一种操作。
2..8显示电路设计
用89S52的P3口作为数据线,用P1.7、P1.6、P1.5分别作为LCD的E、R/W、RS。
其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:
显示模块初始化:
首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5×7点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。
向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。
3电压表系统电路的制做
3.1绘制电路板
我使用AD10软件绘制原理图,,然后生成PCB图。
特附以下图片
3.2铜板的转印、腐蚀、钻孔、焊接
铜板的转印、腐蚀有司新生老师的指导下,在PCB实验室完成制作。
钻孔过程有司新生老师提供的小台钻在宿舍完成。
元器件的安装焊接在宿舍内完成。
3.3焊接好后的电压表系统
3.4动手制作心得
在此我说一下我的制作心得,该系统我修改重新印制总共4次,前三次都是考虑欠佳,第一只把思维停留在理想情况下,对于原件的封装大小,空间等因素掌握的不好,造成元件没法安装;
第二对于线路的布设:
需要考虑到走线的美观、均匀,不能交叉,尽可能的减少交叉所产生的跳线,焊盘要尽可能的大,以方便后面的焊接,如有可能建议对电路板覆铜,以提高电路板在以后使用过程中的稳定性。
第三腐蚀好后的电路板要进行出碳、涂抹松香以防电路的氧化。
电路板钻孔时候一定要稳住看清再下钻,千万不能看到钻头对着焊空最后却打到线上就麻烦了。
要尽可能的用和管脚大小接近的钻头。
第四焊接时,首先要确认元件安装到正确位置,焊接时要先加热焊盘,再上锡,不能上锡过多,容易引起短路,尤其是覆铜板,要特别注意。
4系统的调试
完成了系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系硬件和软件全面调试。
4.1硬件调试
硬件调试的主要任务是排除硬件故障,其中包括设计的错误和工艺性故障等。
1.检查所设计的硬件电路板所有的器件和引脚是否正确,尤其是电源的连接是否正确;检查各总线是否有短路的故障。
检查开关/按键是否正常,是否连接正确,为了保护芯片,应先对各IC座电位进行检查,确认无误后再插入芯片。
2.将40芯片的仿真插头插入单片机插座进行调试,检查各接口是否满足设计的要求,有正常的程序测试硬件电路的好坏。
4.2软件件调试
软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序的错误,同时也能发现硬件的故障。
软件调试是一个模块一个模块进行的。
首先单独调试各子程序是否能够按照预期的功能,接口电路的控制是否正常。
最后调试整个程序。
尤其注意的是各模块间能否正确的传递参数。
1)检查LCD显示模块程序。
观察在LCD上是否能够显示相应的字符。
2)检查按键模块程序。
3)检查A/D转换模块程序。
可以在硬件电路的输入端输入已知的几个电压,分别观察LCD上是否显示相应的电压值。
4)检查数据的转换模块程序。
4.3软硬联调
该系统存在软件和硬件的紧密联系。
软硬件都调试通过后,整个系统连接仍会存在很多麻烦。
首先检查A/D部分,然后是单片机,最后是液晶,依次排除障碍。
总调试。
当相应的各模块环节都正确后,可程序下载到单片机。
接上电源运行。
再检查所有功能,观察是否能预期的一样。
如果一样,说明设计成功完成
5数据结果分析
5.1系统调试和校准
设计完成之后,我们要对数据进行调试。
调试过程可以利用对部分给定电压的测量结果分析来完成。
首先要校对