c
Cl
3.80C52
80C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS
工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高
速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属
于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
80C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)、32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,80C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU
而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停
止芯片内其它功能。
80C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
4.ADC0809
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中
的一个进行A/D转换。
是目前国内应用最广泛的8位通用A/D芯片。
本数据采集系统采用单片机作为处理器。
单片机所处理和传输的都是不连续的数字信号,而实际中遇到的大都是连续变化的模拟量,模拟量经传感器转换成电信号后,需要模/数转换将其变成数字信号才可以
输入到数字系统中进行处理和控制,因此,把模拟量转换成数字量输出的接口电路,即A/D转换器就是现
实信号转换的桥梁。
目前,世界上有多种类型的A/D转换器,如并行比较型、逐次逼近型、积分型等。
本文采用逐次逼近
型A/D转换器,该类A/D转换器转换精度高,速度快,价格适中,是目前种类最多,应用最广的A/D转
换器。
逐次逼近型A/D转换器一般由比较器、D/A转换器、寄存器、时钟发生器以及控制逻辑电路组成。
(1)ADC0809结构功能
1)8路8位A/D转换器,即分辨率8位。
ADCOAW旳内■科恂PE
2)具有转换起停控制端。
usiTHM用却码
3)转换时间为100“
4)单个+5V电源供电
6)工作温度范围为-40〜+85摄氏度
5)模拟输入电压范围0〜+5V,不需零点和满刻度校准。
7)低功耗,约15mW。
2•内部结构
ADC0809是CMOS单片型逐次逼近
式A/D转换器,内部结构如图13•22
所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近
3•外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图13•23所示。
下面说明各引脚功能。
IN0〜IN7:
8路模拟量输入端。
2-1〜2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动信号,输入,高电平有效。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开
输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
ADC0809的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译
码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后
EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的
穿JTHLrLrLrLn_rurLru"LrL
ITAVT
EOCHUM杠甲
TWVir暉柑a*MIA.
ti
■■■恃*
・4.M見肾工常*片聲
怛
Rm
•A
数字量输出到数据总线上。
(2)ADC0809的工作时序
地址锁存信号ALE在上升沿将三位通道地址锁存,相应通道的模拟量经过多路模拟开关送到A/D转换器。
启动信号START上升沿复位内部电路,START的下降沿启动转换,此时转换结束信号EOC呈低电平状态,由于逐位逼近需要一定过程,所以,在此期间,模拟输入量应维持不变,比较器要一次次比较,直到转换结束,此时变为高电平。
若CPU发
出输出允许信号OE(输出允许为高电平),则可读出数据。
另外,ADC0809具有较高的转换速度和精度,同时受温度影响也较小。
(3)ADC0809与MCS-51单片机的接口电路
ADC0809与MCS-51系列单片机的接口电路如图5所示。
图中,74LS373输出的低3位地址A2、A1、
A0加到通道选择端A、B、C,可作为通道编码。
其通道基本地址为0000H〜0007H。
8051的WR与P2.7经过或非门后,可接至ADC0809的START及ALE引脚。
8051的RD与P2.7经或非门后则接至ADC0809
的OE端。
ADC0809的EOC经反相后接到8051单片机的P3.3(INT1)。
“数据采集”是指将温度、压力、流量、位移等模拟物理量采集并转换成数字量后,再由计算机进
行存储、处理、显示和打印的过程,相应的系统称为数据采集系统。
由于采集的是直流信号,对于缓慢变化的信号不必加采样保持电路,因此选用市面上比较常见的逐次逼近型ADC0809芯片,该芯片转换速度快,价格低廉,可以直接将直流电压转换为计算机可以处理的数字量。
同时选用低功耗的LCD显示器件来满足其在终端显示采集结果的需求。
终端键盘控制采用尽可能少的键来实现控制功能,为了防止键盘不用时的误操作,设计时还设置了锁键功能,在键盘的输入消抖方面,则采用软件消抖方法来降低硬件开销,提高系统的抗干扰能力。
软件设计方面则采用功能模块化的设计思想;键盘模数转换等采用中断方式来实现,从而大大提高了单片机的效率以及实时处理能力。
4.Lm016l
液晶模块简介
LM016L的结构及功能
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪
烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器
ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写
入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和
CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用
来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,可以查看参考文献(30)中的表4.CGRAM是为用户编写
特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以
存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM但愿,LM016L液晶模块的引脚功能如下表所示:
引脚说明
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线
VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:
功能说明
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
7
DB0
底4位二态、双向数据总线0位(最低位)
8
DB1
底4位二态、双向数据总线1位
9
DB2
底4位二态、双向数据总线2位
10
DB3
底4位二态、双向数据总线3位
11
DB4
咼4位二态、双向数据总线4位
12
DB5
咼4位二态、双向数据总线5位
13
DB6
咼4位二态、双向数据总线6位
14
DB7
咼4位二态、双向数据总线7位(最咼位)(也是
15
BLA
背光电源正极
16
BLK
背光电源负极
6
E
busyflang)
五、调试及结果
F12
Xt19
bKFAUi
KTA12
P13
F1-I-
PDETAK1FD^AM
PD3TAR
PCMXB3PD-ul'AhPDSAIS
FDAAM
PD7/AHSI
ALE
PZ.VJBFZlfACPZ^Atl任PZWAGPZfi1"
FZ?
?
A«
•亍回配・£lP31H>®
PHNDTN
P3.4^K1
F3#ri
P3^f(
FiFflir
wo
LjJ『I"?
"
INZIHH
ADiA
AD«a
WC
ALE
Ink■
-RV1
VH.EF(*|tflLMW
•TK
re^
_L申
p
PUF
P垃
P<3
PU
T
cjtrsow..
."FaTbU
I
*1
U2QCIJCI4
LCDl
CLOCKSirrjun-
CUT1■QU口
JUT3
4UT*
0UI5
auiti
OUT?
0U1E
ire
cei]5,0U|
nrn
CTA12
FST
rewALE0
numFi.vmpis
F1J
pi.*pi>
PUS
PJDilL-B
MWra
F33WTT
P:
3.E
FljMTI
Pl.smM
Ij.tw
A
■3Z
iii
IHZ
>1
■1口的
6-PBkk
raMP7闹阳-c11隹乜HIKEis豎急罷
is2
"S3~TH?
R1
*■仁*3_
▼
A»DA
从tiH
寻丁:
}
^raU
六、主程序
VREFMVUPC^
U3CL0CK3
■1EED3
U3A
U3B
CU>CI^■TjUCT
7+HCCIZ0TE拆
LCD1UUOBEL
&UT1PUTT0UT30UT»
QUT5
O'UTTOUTB
^1™
〔匪口.2-
ffiSM軸建_口lUME*W・z
Bnn>■.!
EUaaoaoaoa
RV2
irn
HEBFACHE
:
It/J-
ORG00HAJMPMAIN
ORG30HRSEQUP1.6RWEQUP1.7EEQUP1.5
MAIN:
MOVR0,#00H
MOVR4,#01H
ANJIAN:
;判断按键是否按下
JNBP1.0,MOSHI0
JNBP1.1,MOSHI1
SJMPANJIAN
MOSHI0:
;按键1功能多路顺序采集电压
AN1:
JNBP1.0,AN1
ACALLJ0
INCR0
INCR4
JNBP1.0,MOSHI0
JNBP1.1,MOSHI1
ACALLDELAY1
JNBP1.0,MOSHI0
JNBP1.1,MOSHI1
ACALLDELAY1
JNBP1.0,MOSHI0
JNBP1.1,MOSHI1
ACALLDELAY1
SJMPMOSHI0
MOSHI1:
;按键2暂停和单点采集
AN2:
JNBP1.1,AN2
ACALLJ0
INCR0
INCR4
SJMPANJIAN
DELAY1:
;电压显示间隔延迟
MOV43H,#02H
D3:
MOV40H,#0FFH
D1:
MOV41H,#0FFH
D2:
DJNZ41H,D2
DJNZ40H,D1
DJNZ43H,D3
RET
J0:
;显示单个电压主程序
CJNER0,#08H,J1
MOVR0,#00H
CJNER4,#09H,J1
MOVR4,#01H
J1:
LCALLAD
LCALLVHD
MOVP0,#00000010B;数码管初始化
ACALLLOOP
MOVP0,#00111000B
ACALLLOOP
MOVP0,#00001111B
ACALLLOOP
MOVP0,#00000110B
ACALLLOOP
;对数码管中数据显示位置确定
;给数码管赋要显示的数据
MOVP0,#0C0H
ACALLLOOP
MOVP0,#01011011B
ACALLXIAN
MOVP0,#0C1H
ACALLLOOP
MOVP0,#00110000B
ACALLXIAN
MOVP0,#0C2H
ACALLLOOP
MOVA,R4
ADDA,#00110000B
MOVP0,A
ACALLXIAN
MOVP0,#0C3H
ACALLLOOP
MOVP0,#01011101B
ACALLXIAN
MOVP0,#0C4H
ACALLLOOP
MOVA,R2
ADDA,#00110000B
MOVP0,A
ACALLXIAN
MOVP0,#0C5H
ACALLLOOP
MOVP0,#00101110B
ACALLXIAN
MOVP0,#0C6H
ACALLLOOP
MOVA,R3
ADDA,#00110000B
MOVP0,A
ACALLXIAN
MOVP0,#0C7H
ACALLLOOP
MOVP0,#01010110B
ACALLXIAN
RET
AD:
;打开ADC0808启动A/D转化,将输出的二进制读入
CLRP1.7
MOVA,R0
MOVDPTR,#1FFFH
RLA
RLA
RLA
RLA
RLA
MOVP0,A
MOVP2,#0
CLRP3.6
SETBP3.6
AD2:
JNBP3.2,AD2MOVXA,@DPTRMOVR1,A
RET
VHD:
;查表程序,对读入的二进制对应的电压查找
MOV
A,R1
MOV
DPTR,#ADTAB_1
MOVC
A,@A+DPTR
MOV
R2,A
MOV
A,R1
MOV
DPTR,#ADTAB_2
MOVC
A,@A+DPTR
MOV
R3,A
RET
LOOP:
;对数码管写指令代码
CLRRS
CLRRW
CLRE
ACALLDELAY
SETBE
RET
MOVP0,#0FFH
CLRRS
SETBRW
CLRE
NOP
SETBE
JBP0.7,DELAY
RET
XIAN:
;写入数码管要显示的数据
SETBRS
CLRRW
CLRE
ACALLDELAY
SETBE
RET
ADTAB_1:
;查表程序
DB
0,2,1,3,0,3,1,4,0,2,1,4,0,3,2,4,0,2,1,3,0,3,2,4,0,3,1,4,1,3,2,4,0,2,1,3,0,3,2,4,0,2,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,
1,4,1,3,2,4
DB
0,2,1,3,0,3,1,4,0,2,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,1,4,1,3,2,4,0,2,1,3,0,3,2,4,0,2,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,
1,4,1,3,2,5
DB
0,2,1,3,0,3,1,4,0,2,1,4,1,3,2,4,0,2,1,3,0,3,2,4,0,3,1,4,1,3,2,4,0,2,1,3,0,3,2,4,0,2,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,
1,4,1,3,2,5
DB
0,2,1,3,0,3,1,4,0,2,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,1,4,1,3,2,4,0,2,1,3,0,3,2,4,0,3,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,
1,4,1,3,2,5
ADTAB_2:
DB
0,5,3,8,6,1,9,4,3,8,6,1,9,5,2,7,2,7,4,9,8,3,0,5,5,0,7,2,1,6,4,9,1,6,3,8,7,2,0,5,4,9,6,2,0,5,3,8,2,7,5,0,9,4,1,6,5,1,8,3,2,7,4,9
DB
0,5,3,8,7,2,9,4,4,9,6,1,0,5,2,7,2,7,5,0,8,3,1,6,5,0,8,3,1,6,4,9,1,6,4,9,7,3,0,5,4,9,7,2,1,6,3,8,3,8,5,0,9,4,2,7,6,1,8,4,2,7,5,0
0,5,3,8,6,2,9,4,3,8,6,1,0,5,2,7,2,7,4,9,8,3,1,6,5,0,7,3,1,6,4,9,1,6,4,9,7,2,0,5,4,9,7,2,0,5,3,8,3,8,5,0,9,4,1,6,6,1,
DB
9,4,2,7,5,0
闹钟函数
七、结束语
通过本次课程设计的学习,我学到了好多有用的知识。
作为电子信息专业的学生,懂得了,利用电路
板将电子器件布局,巧妙的焊接以及程序的设计是这个专业不可缺少的学习和工作手段。
并且在学习中,
要熟练地掌握及应用专业的相关软件,protel99,proteus等等。
通过本次的学习,我还懂得更好的利用编
程来解决一些实际的问题工程问题,使我对汇编编程有了更好的掌握,在接下来的学习