简易直流电压表的设计
—
目录
1技术要求.................................................. 错误!未定义书签。2基本原理.................................................. 错误!未定义书签。
设计的具体思想.......................................... 错误!未定义书签。
主要芯片介绍............................................ 错误!未定义书签。
89c51系列芯片介绍.................................. 错误!未定义书签。
ADC0809芯片介绍.................................... 错误!未定义书签。
LED基本结构........................................ 错误!未定义书签。
%
LED显示器的选择.................................... 错误!未定义书签。3建立模型描述.............................................. 错误!未定义书签。
方案一.................................................. 错误!未定义书签。
方案二.................................................. 错误!未定义书签。4模块功能分析或源程序代码.................................. 错误!未定义书签。
方案一代码.............................................. 错误!未定义书签。
方案二代码.............................................. 错误!未定义书签。5调试过程及结论............................................ 错误!未定义书签。-
6心得体会.................................................. 错误!未定义书签。7参考文献.................................................. 错误!未定义书签。
简易直流电压表的设计
1技术要求
以89s51单片机为核心芯片,设计一个简易直流电压表,要求如下:
~
A、能够对直流电压进行相应的采集和转换;
B、利用led对电压值进行显示,精确到小数点后一位。
2基本原理
对于数字电压表的设计,其主要功能从外界获取模拟电压信号,再通过相应的芯片(即ADC0809)转换为数字电压信号,用微处理芯片89C51芯片处理后在数码管上输出显示。其设计工作原理图如图1所示。
图1 设计工作原理图
设计的具体思想
测量电压输入:这是模拟电压的输入端,输入0~5V的电压,特别地,为了使电压能够连续输入到系统中,使用了滑动变阻器来控制输入电压的大小。为了能够与数字显示的
电压大小相比较,在输入端加入了电压表。
时钟电路:这部分电路是为了给89s51芯片提供时钟脉冲的,在proteus软件仿真时可以不加时钟电路,但在实际电路时,一定要加时钟电路。
复位电路:这部分电路可以直接接80c51的引脚9,当输入高电平时,可进行复位操作,也可以在时钟电路部分加如开关,当无时钟信号输入时,同样可以达到复位的目的,两种方法都可以。
A/D转换电路:这部分的功能是将模拟电压量转换为数字信号输入到89s51中。对于A/D转化芯片使用的是ADC0809芯片,只要连好电路,不要线,这并不是很难。
$
多位数字显示系统:这个系统是使用两个LED数码管显示需要输出的数字,特别要注意小数点的位数显示规则;也可以使用一个多位数码显示管,流水显示,这一点也可以达到实验要求。
主要芯片介绍
89c51系列芯片介绍
微处理芯片89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除10000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C51是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。因此这种芯片使用范围十分广泛,是初学者学习微处理器的敲门砖。
89C51结构特点:
8位CPU,一次处理8位字节的数据;
具有片内振荡器和时钟电路;
^
32根I/O线,即4*8个数据交换端口;
外部存贮器寻址范围ROM、RAM64K;
2个16位的定时器/计数器;
5个中断源,两个中断优先级,使用INT和INTR、端口控制中断;
觉有全双工串行口;
布尔处理器;
89C51芯片的实物管脚图如图2所示
|
图2 89c51芯片的管脚
89C51芯片的管脚说明:
VCC:供电电压,+5V。
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口也可作为AT89C51的一些特殊功能口,如下表所示:
管脚备选功能
RXD(串行输入口)
TXD(串行输出口)
/INT0(外部中断0)
/INT1(外部中断1)
T0(记时器0外部输入)
T1(记时器1外部输入)
:
/WR(外部数据存储器写选通)
/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:来自反向振荡器的输出。
ADC0809芯片介绍
芯片ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D 模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
(1)ADC0809主要特性
1)拥有8路输入通道,8位A/D转换器,即分辨率为8位,由此可以确定芯片电压转换的灵敏度。
2)具有转换起停控制端。
3)芯片转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)&
4)使用单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
(2)ADC0809外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。
IN0~IN7: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:接地引脚。
~
(3)ADC0809工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
ADC0809的管脚图如图3所示。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
LED基本结构
¥
LED是发光二极管显示器的缩写。LED由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。LED显示器是由若干个发光二极管组成显示字段的显示器件[6]。在单片机中使用最多的是七段数码显示器。LED七段数码显示器由8个发光二极管组成显示字段,其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。LED引脚排列顺序如下图4所示:
图4 LED引脚排列
LED显示器的选择
在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LED显示器供选择,在本设计中,选择4位一体的数码型LED显示器,简称“4-LED”。本系统中前一位显示电压的整数位,即个位,后两位显示电压的小数位。
4-LED显示器引脚如图5所示,是一个共阴极接法的4位LED数码显示管,其中a,b,c,e,f,g为4位LED各段的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端,4位一体LED数码显示管的内部结构是由4个单独的LED组成,每个LED 的段输出引脚在内部都并联后,引出到器件的外部。
#
图5 4位LED引脚
对于这种结构的LED显示器,它的体积和结构都符合设计要求,由于4位LED阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个I/O接口控制)显示,即我们常说的流水显示。
3建立模型描述
方案一
(1)时钟电路部分:时钟电路如图6所示,使用晶体振荡器来得到时钟电路,与之相关的电容的大小决定了振荡频率的大小,C1=C2=30pF,C3=10uF,R1=10K。
(
图6 时钟电路部分
(2)测量电压输入:使用5V电压输入,且用滑动变阻器控制输入电压的大小,电压表的读数与数字显示的电压相比较,分析出误差来。测量电压输入的电路图如图7所示。
误差计算公式:误差=(模拟电压-数字电压)/模拟电压
}
图7测量电压输入
(3)A/D转换电路:这部分的功能是将模拟电压量转换为数字信号输入到89s51中。对于A/D转化芯片使用的是ADC0809芯片,只要连好电路,不要线,这并不是很难。注意PROTEUS软件LBL功能的应用,这样可以使得电路变得简单,清楚。A/D转换电路如图8所示。
&
图8 A/D转换电路
(4)多位数字显示系统:这一部分的电路输出数字显示信号,与模拟电压相比较,注意在选择显示器是要注意是选择共阳极还是共阴极。多位数字显示系统如图9所示。
图9 多位数字显示系统
电路的仿真总图如下图10所示。
<
图10电路的仿真总图
方案二
方案二与方案一的很多地方有相同之处,因此相同的地方在这里不再介绍。
(1)时钟电路部分:在这里与方案一相比较,加入了复位按钮,使得可以方便控制电路的输出。时钟电路部分如图11所示。
图11 时钟电路部分
(2)测量电压输入:测量电压输入如下图12所示。
|
图12 测量电压输入
(3)A/D转换电路:此部分电路与方案一相同,A/D转换电路如图13所示。
图13 A/D转换电路
(4)多位数字显示系统:为了提高显示的精度,可以使用多位显示数码管,使精度精确到小数点后两位,但89c51只有3组输出端口,只好使用串口显示电路,即动态显示结果(一个I/O端口,多个控制位)。多位数字显示系统如图14所示。
;
图14 多位数字显示系统
综上分析得到电路的仿真总图。特别注意,这个电路中使用了P1端口作为了输出口,因此一定要使用上拉电阻,且这是必不可少的。仿真总图如下图15所示。
图15 电路的仿真总图
4模块功能分析或源程序代码
方案一代码
}
ORG 0000H
AJMP STAR
ORG 000BH
LJMP INT_T0
ORG 0030H
STAR:
MOV 80H,#00H ;设置单片机的工作状态~
MOV 0A0H,#00H
MOV TMOD,#02H
MOV TH0,#245
MOV TL0,#00H
MOV IE,#82H
SETB TR0
WAIT: CLR ;将该端口清零
)
SETB ;将该端口置一
CLR
JNB ,$
SETB
MOV R6,P1
XIA50: CJNE R6,#50,JUD50
MOV A,#B
MOV P0,A
\
MOV A,#00111111B
MOV P2,A
JMP WAIT
JUD50: JNC XIA100
MOV A,#B
MOV P0,A
MOV A,R6
XHC1: MOV B,#5
*
DIV AB
CJNE A,#0,OU1
MOV 0A0H,#00111111B
JMP WAIT
OU1: CJNE A,#1,OU2 ;输出显示控制 MOV 0A0H,#00000110B
JMP WAIT
OU2: CJNE A,#2,OU3
[
MOV 0A0H,#01011011B
JMP WAIT
OU3: CJNE A,#3,OU4
MOV 0A0H,#01001111B
JMP WAIT
OU4: CJNE A,#4,OU5
MOV 0A0H,#01100110B
JMP WAIT
—
OU5: CJNE A,#5,OU6
MOV 0A0H,#01101101B
JMP WAIT
OU6: CJNE A,#6,OU7
MOV 0A0H,#01111101B
JMP WAIT
OU7: CJNE A,#7,OU8
MOV 0A0H,#00000111B
'
JMP WAIT
OU8: CJNE A,#8,OU9
MOV 0A0H,#01111111B JMP WAIT
OU9: CJNE A,#9,WAIT
MOV 0A0H,#01101111B JMP WAIT
XIA100: CJNE R6,#100,JUD100 >
MOV A,#B
MOV P0,A
MOV A,#00111111B
MOV P2,A
JMP WAIT
JUD100: JNC XIA150
MOV A,#B
MOV P0,A
!
CLR C
MOV A,R6
SUBB A,#50
LJMP XHC1
XIA150: CJNE R6,#150,JUD150 MOV A,#B
MOV P0,A
MOV A,#00111111B
#
MOV P2,A
;SETB
LJMP WAIT
JUD150: JNC XIA200
MOV A,#B
MOV P0,A
CLR C
MOV A,R6
^
SUBB A,#100
LJMP XHC1
XIA200: CJNE R6,#200,JUD200 MOV A,#B
MOV P0,A
MOV A,#00111111B
MOV P2,A
;SETB
*
LJMP WAIT
JUD200: JNC XIA250
MOV A,#B
MOV P0,A
MOV A,R6
SUBB A,#150
LJMP XHC1
XIA250: CJNE R6,#250,JUD250 [
MOV A,#B
MOV P0,A
MOV A,#00111111B
MOV P2,A
;SUBB A,#200