基于51单片机的数字电压表课程设计.docx
《基于51单片机的数字电压表课程设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字电压表课程设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于51单片机的数字电压表课程设计
信息与电气工程学院
电子应用系统CDIO一级项目
设计说明书
(2011/2012学年第二学期)
题目:
____数字电压表__________
专业班级:
电子信息0902班
********
学号:
*********
指导教师:
贾少锐、李晓东、马永强
李丽宏、贾东立、刘会军
设计周数:
设计成绩:
2012年6月28日
1、CDIO设计目的
本次CDIO设计题目是:
利用所学的51单片机,C语言,数字电路等知识,设计一个符合要求的数字电压表。
主控芯片可以是AT89C51,而采集电压的模拟量转换成数字量的芯片可以是ADC0804,也可以是PCF8591。
而显示模块可以是数码管,也可以是液晶LCD1602,从而展示给我们所得的电压值。
2、CDIO设计正文
2.1数字电压表系统设计框图
本次数字电压表系统设计框图如图1所示:
模拟量数字量程序液晶
处理驱动
图1数字电压表设计框图
数字电压表主要由模/数转换电路、单片机控制电路、显示电路等三部分组成。
其中PCF8591等器件组成的转换电路,将输入的模拟量信号进行取样、转换、然后将转换的数字信号送进单片机。
单片机控制电路主要实现对数据进行程序处理;显示电路主要用于将单片机的信号数据转换后显示测量结果。
模拟信号产生模块:
输入电源电路(变压器、整流电路、滤波电路、稳压电路组成)和分压电路(9万欧姆和1万欧姆的电阻分压)。
模数转换模块组成部分:
PCF8591芯片
程序处理的单片机控制模块:
AT89C51芯片
电压结果显示部分:
LCD1602液晶
2.2各模块介绍
2.2.1AT89C51芯片介绍
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89C52的引脚图如图2所示。
VCC:
接电源
GND:
接地
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)。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89C52特殊功能(第二功能)使用,AT89C52的P3口的第二功能表如表1所示。
表1AT89C52的P3口的第二功能表
脚号
第二功能
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
INT0(外部中断0)
P3.3
INT0(外部中断0)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器写选通)
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12V编程电源(VPP)。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
(2)晶振电路
晶振电路是单片机的最小系统的组成部分。
典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)。
特别注意:
对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行。
(3)复位电路
复位电路也是单片机的最小系统的组成部分。
当单片机系统在运行中,受到环境干扰出现程序执行错乱的时候,按下复位按钮内部的程序自动从头开始执行。
复位电路的原理是单片机RST引脚接收到2us以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。
按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。
单片机最小系统复位电路的极性电容的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。
2.2.2PCF8591AD/DA芯片
PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。
PCF8591具有4个模拟输入、1个模拟输出和1个串行I²C总线接口。
PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同一个I²C总线上接入8个PCF8591器件,而无需额外的硬件。
在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I²C总线以串行的方式进行传输。
PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。
PCF8591的最大转化速率由I²C总线的最大速率决定。
1、主要技术指标和特性
单独供电
PCF8591的操作电压范围2.5V-6V
低待机电流
通过I2C总线串行输入/输出
PCF8591通过3个硬件地址引脚寻址
PCF8591的采样率由I2C总线速率决定
4个模拟输入可编程为单端型或差分输入
自动增量频道选择
PCF8591的模拟电压范围从Vss到VDD
PCF8591内置跟踪保持电路
8-bit逐次逼近A/D转换器
通过1路模拟输出实现DAC增益
2、ADC0808引脚功能
PCF8591引脚图如图3所示
AIN0~AIN3:
模拟信号输入端。
A0~A3:
引脚地址端。
VDD、VSS:
电源端。
(2.5~6V)
SDA、SCL:
I2C总线的数据线、时钟线。
OSC:
外部时钟输入端,内部时钟输出端。
EXT:
内部、外部时钟选择线,使用内部时钟时EXT接地。
AGND:
模拟信号地。
AOUT:
D/A转换输出端。
VREF:
基准电源端。
4功能描述
(1)地址
IIC总线系统中的每一片PCF8591通过发送有效地址到该地址器件来激活。
该地址包括固定部分和可编程部分。
可编程部分必需根据地址引脚A0、A1和A2来设置。
在IIC总线协议中地址必需是起始条件后作为第一个字节发送。
地址字节的最后一位是用于设置以后数据传输方向的读/写。
(2)控制字
控制字节用于实现器件的各种功能,如模拟信号由哪几个通道输入等。
控制字节存放在控制寄存器中。
总线操作时为主控器发送的第二字节。
其格式如下图5所示:
其中:
D1、D0两位是A/D通道编号:
00通道0,01通道1,10通道2,11通道3
D2 自动增益选择(有效位为1)
D5、D4模拟量输入选择:
00为四路单数入、01为三路差分输入、10为单端与差分配合输入、11为模拟输出允许有效
当系统为A/D转换时,模拟输出允许为0。
模拟量输入选择位取值由输入方式决定:
四路单端输入时取00,三路差分输入时取01,单端与差分输入时取10,二路差分输入时取11。
最低两位时通道编号位,当对0通道的模拟信号进行A/D转换时取00,当对1通道的模拟信号进行A/D转换时取01,当对2通道的模拟信号进行A/D转换时取10,当对3通道的模拟信号进行A/D转换时取11。
在进行数据操作时,首先是主控器发出起始信号,然后发出读寻址字节,被控器做出应答后,主控器从被控器读出第一个数据字节,主控器发出应答,主控器从被控器读出第二个数据字节,主控器发出应答…一直到主控器从被控器中读出第n个数据字节,主控器发出非应答信号,最后主控器发出停止信号。
(3)A/D转换
A/D转换器采用逐次逼近转换技术。
在A/D转换周期将临时使用片上转换器和高增益比较器。
一个A/D转换周期总是开始于发送一个有效读模式地址给PCF8591之后。
A/D转换周期子在应答时钟脉冲的后延被触发。
并在传输前一次转换结果时执行(见图6)
图6A/D转换
一旦一个转换周期被触发,所选通的输入电压采样将保存到芯片并被转换为对应的8位二进制码,取自差分输入的采样将被转换为8位二进制补码
转换结果被保存在ADC数据寄存器等待传输。
如果自动增量标志被置1,将选择下一个通道。
在读周期传输的第一个字节包含前一次读周期的转换结果代码,以上电复位之后读取的第一个字节是0x80。
最高A/D转换速率取决于实际的IIC总线速度。
(4)D/A转换
发送给PCF8591的第三个字节被存储到DAC数据存储器,并使用片内D/A转换器转换成对应的模拟电压。
这个D/A转换器由连接到外部参考电压的具有256个接头的电阻分压电路和选择开关组成。
接头译码器切换一个接头至DAC输出线。
模拟输出电压由自动清零单位增益放大器缓冲。
这个缓冲放大器可通过设置控制寄存器的模拟输出允许标志来打开或关闭。
在激活状态,输出电压将保持到新的数据字节被发送。
提供给模拟输出AOUT的输出