资源描述
应用ADC0809的A/D转换设计
摘要
此次设计的主要内容是利用ADC0809设计制做A/D转换器,电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,51单片机通过8255的PA口输出到发光二极管进行显示,并将8位二进制数转换为3位BCD码并在3位数码管上进行显示,并在此基础上进行扩展。
由于热敏电阻输出量为模拟量,同样通过ADC0809进行A/D转换,并将其输出值在发光二极管以及3位数码管上进行显示,来反映温度的变化。压力传感器的输出量经过ADC0809进行模数转换后经发光二极管以及数码管的显示来反映压力的变化。
关键词:ADC0809 A/D转换 51单片机 发光二极管 数码管
the design of the A/D conversion based on ADC0809
Abstract
The main content of this design is that use the ADC0809 make a A/D conversion.The ADC0809 get Analog signal from Potentiometers. Program and transform it into Digital as Binary. The 51Single-chip sent the digital to Light-emitting diodes by the A I/O interface of 8255,change the 8 bit Binary number into 3 bit BCD code , then develops it.
The output of the thermistor is analog, use the ADC0809 make a A/D conversion and sent to Light-emitting diodes and Digital tube display it the aim is to Reflect the diversification of temperature. ADC0809 change the output of pressure sensor into digital data and Be displayed by Light-emitting and Digital tube,from this we can see the change of pressure we gave.
Keywords:ADC0809A/Dconversion 51Single-chip Light-emitting
目录
1 绪论 1
1.1 A/D转换概述 1
1.1.1 A/D转换的概念 1
1.1.2 A/D转换器的类型 1
1.2 A/D转换在现实中的应用 1
2 A/D转换的硬件介绍 2
2.1 总体硬件介绍 2
2.2 电位器概述 2
2.3 ADC0809概述 3
2.3.1 ADC0809的内部逻辑结构 3
2.3.2 ADC0809的外部特征 4
2.3.3 逐次逼近型A/D转换方法 5
2.4 MC51单片机概述[4] 6
2.5 8255可编程并行I/O接口芯片概述 7
2.5.1芯片引脚及其内部结构 7
2.5.2 8255的内部结构 8
2.6 发光二极管概述 10
2.7 LED数码管概述 10
3 A/D转换的具体设计及程序实现 11
3.1 A/D转换的总体设计 11
3.2 51单片机的中断 12
3.2.1 中断的基本概念 12
3.2.2 程序的入口地址 12
3.2.3 中断响应的条件、过程与时间 12
3.3 ADC0809的工作过程 13
3.3.1 ADC0809与51单片机的连接 15
3.3.2 ADC0809工作流程图及程序实 16
3.4 8255的工作方式 17
3.4.1 8255的工作方式及编程 17
3.4.2 8255A的三种工作方式的功能及应用 17
3.4.3 8255与51单片机的连接及工作 20
3.5 发光二极管以及LED数码管的显示 21
3.5.1 发光二极管的显示 21
3.5.2 LED动态显示方式及实现 21
4.设计扩展 24
扩展1:利用热敏电阻检测温度的变化 24
扩展2:利用压力传感器检测压力的变化 25
5.总结 26
参考文献 27
致谢 28
1 绪论
1.1 A/D转换概述
1.1.1 A/D转换的概念
模数转换亦称模拟一数字转换,与数/模转换相反,是将连续的模拟量(如象元的灰阶、电压、电流,电压,温度等)通过取样转换成离散的数字量。
1.1.2 A/D转换器的类型
现在已经发展形成的A/D转换器主要有以下几种:
1、 积分型转换器,其优点是精度高,抗干扰性好;价格便宜,但速度慢。
2、 逐次逼近型A/D转换器,精度,速度,价格适中。
3、 并行A/D转换器,速度快,价格也昂贵。
除以上三种A/D转换器以外还有流水线A/D转换器,折叠差值A/D转换器,过采样Σ△ A/D转换器。
在此次设计中应用的A/D转换器为ADC0809,它采用的是逐次逼近型A/D转换方法,在以后介绍硬件的时候再详细介绍逐次逼近型A/D转换技术。
1.2 A/D转换在现实中的应用
A/D转换技术已应用在现实生活中的多个领域,随着计算机、通信和多媒体技术的飞速发展,全球高新技术领域数字化的程度已不断加深。如今电子产业已经形成了以数字技术为主体的格局,特别是半导体产业显的尤为突出。半导体技术数字化和集成化的日益提高,在推动微控制器(MCU)、数字信号处理器(DSP)、微机械电子系统(MEMS)的发展中,也推动了“嵌入” 或“隐性”模数转换技术的发展。在这些因素的影响下,模数转换技术正朝着高精度、高速度的发展方向迈进。
现在时的我们已经身处数字化时代,计算机,多媒体,软件技术都是以数字化为基础。数字化技术正在引发一场范围广泛的产品革命,电器设备,信息处理设备,工厂控制设备都将向数字化方向变化。
2 A/D转换的硬件介绍
2.1 总体硬件介绍[1]
在本次设计中,电信号由电位器提供,其范围是0-5V的电压,电压进入ADC0809进行数模转换,转换结束时将转换结果送到51单片机进行短时间储存,之后将8位二进制数发送到8255 的PA口,8位发光二极管与之相连,当有相应电信号到来时便通过发光与否进行显示相应结果。同时在51单片机内将8位二进制数转换为3位BCD码,输出到3位7段数码管上进行显示。
热敏电阻
电位器
ADC0809
压力传感器
发光二极管
8255
51单片机
数码管
图2.1 总体硬件介绍
2.2 电位器概述
电位器是一种可调的电子元件。它是由一个电阻体和一个转动或滑动系统组成。用于分压的可变电阻器。在裸露的电阻体上,紧压着一至两个可移金属触点。触点位置确定电阻体任一端与触点间的阻值。
当电阻体的两个固定触电之间外加一个电压时,通过转动或滑动系统改变触点在电阻体上的位置,在动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压。 它大多是用作分压器,这是电位器是一个四端元件。电位器基本上就是滑动变阻器,有几种样式,一般用在音箱音量开关和激光头功率大小调节 电位器是一种可调的电子元件。它是由一个电阻体和一个转动或滑动系统组成。当电阻体的两个固定触电之间外加一个电压时,通过转动或滑动系统改变触点在电阻体上的位置,在动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压。
电位器的作用:
调节电压(含直流电压与信号电压)和电流的大小。
电位器的结构特点:
电位器的结构特点——电位器的电阻体有两个固定端,通过手动调节转轴或滑柄,改变动触点在电阻体上的位置,则改变了动触点与任一个固定端之间的电阻值,从而改变了电压与电流的大小。
2.3 ADC0809概述[3]
2.3.1 ADC0809的内部逻辑结构
ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图2.2所示。
图2.2 ADC0809的内部逻辑结构
由图2.1可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换,在此次设计中采用通道IN0进行模拟信号的采集,当然也可以用其他通道进行信号的采集,但是效果是一样的,因此信号输入端固定不变,选用IN0。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
ADC0809的主要特称为:
1)8路8位A/D转换器,即分辨率8位。
2)具有转换起停控制端。
3)转换时间为100μs。
4)单个+5V电源供电 。
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度。
7)低功耗,约15mw。
2.3.2 ADC0809的外部特征[4]
ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能。
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。 图 2.3 逐次逼近型
GND:地。
A、B、C:地址输入线。
2.3.3 逐次逼近型A/D转换方法
逐次逼近寄存器型A/D转换器是采样速率低于5Msps的中等至高分辨率应用的常见结构。ADC0809的分辨率为8位,其实质上是实现一种二进制搜索算法。逐次逼近寄存器型A/D转换器的基本结构如图2.3。
模拟输入电压(VIN)由采样/保持电路保持。为实现二进制搜索算法,N位寄存器首先设置在中间刻度(即:10000000,最高有效位(MSB)为‘1’)。这样,D/A转换器输出(VDAC)被设为VREF/2,VREF是提供给ADC的基准电压。然后,比较判断VIN是小于还是大于VDAC。如果VIN>VDAC,则比较器输出逻辑高电平或‘1’,N位寄存器的MSB保持‘1’。想法,如果VIN<VDAC,则比较器输出逻辑低电平,N位寄存器的最高有效位(MSB)清为‘0’。随后逐次逼近型(SAR)控制逻辑移至下一位,并将该位设置为高电平,进行下一次比较。这个过程一直持续到最低有效位(LSB)。上述操作结束后,也就完成了转换,N位转换结果储存在寄存器内。
2.4 MC51单片机概述[4]
51单片机组成结构中包含运算器、控制器、片内存储器、4个并行I/O口,串行口,定时/计算器、中断系统、振荡器等功能部件。
在此次设计中,51单片机起到衔接作用,其主要动作即为控制ADC0809进行模拟数据的采集及转换,并将转换的结果暂存在寄存器中,在输出到相应的显示器件上。在此次设计中应用的中断方式读入结果,当A/D转换结束后会自动产生EOC信号,将其与51单片机的外部中断相连接,此时单片接接收转换完成的结果。
双列直插(DIP)式封装的51单片机芯片一般为40条引脚, 每个引脚功能说明如下:
1. 主电源引脚
VCC(40脚):接+5V电源正端;
VSS(20脚):接+5V电源地端。
2.输入/输出引脚
(1)P0口(39-32):P0.0-P0.7统称为P0口。在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。
(2)P3口(10-17脚):P3.0-P3.7统称为P3口。除作为准双向I/O口使用外,还可以将每一位用于第二功能,而且P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能,其中P3.2口的第二功能为I(——)N(——)T(——)O(——)外部中断0请求输入端,低电平有效。
3.控制线
(1) ALE/P(——)R(——)O(——)G(——)(30脚):地址锁存有效信号输出端。
(2) PSEN(29脚):片外程序存储器读选通信号输出端,低电平有效。在从外部程序存储器读取指令或常数期间,在每个机器周期内该信号两次有效,以通过数据总线P0口读回指令或常数。在访问片外数据存储器期间,PSEN信号将不出现。
(3) RES/VPD(9脚):RES即RESET,VPD为备用电源,该引脚为单片机的上电复位或掉电保护端。
(4) EA/VPP(31脚):EA为外部程序存储器选用端。该引脚有效(低电平)时,只选用片外程序存储器,否则单片机上电或复位后选用片内程序存储器。
2.5 8255可编程并行I/O接口芯片概述[2]
8255是单片机应用系统中广泛被采用的可编程外部I/O扩展芯片。它有3个8位并行I/O口,每个口有三种工作方式。
2.5.1芯片引脚及其内部结构
各引脚功能如下:
Vcc:电源的+5V断
GND:电源的0端
RESET:复位信号输出端,使内部各复位信号输出端,使内部各寄存器清除,置A,B,C口为输入口。
WR(————):写信号输入端,使CPU输出数据或控制字到8255。
RD(————):读信号输入端,使8255送数据或状态信号呢到CPU。
CS(————): 片选端。
A1、A0:地址总线的最低2位,用于决定端口地址。
D7-D0:双向数据总线。
PA7-PA0:A口的8位I/O引脚。
PB7-PB0:B口的8位I/O引脚。
PC7-PC0:C口的8位I/O引脚。
C(——)S(——):芯片选择信号。来自片外译码电路,用于选中8255A芯片,低电平有效。
R(——)D(——):芯片读出信号,低电平有效。即当R(——)D(——)为‘0’时,51单片机从8255A读入数据或状态信息。
W(——)R(——):芯片写入信号,低电平有效。即当W(——)R(——)为‘0’时,51单片机向8255A写出数据或控制字。
A1、A0:端口选择信号。用于寻址8255A内部各端口,A1、A0的不同状态与各端口的对应关系如下:
A1 A0 对应的端口
0 0 A口
0 1 B口
1 1 C口
1 1 控制口
电源与地线:
VCC:电源线,+5V。
GND:接地线。
图2.4 8255内部结构框图
2.5.2 8255的内部结构
8255的内部结构由三个端口寄存器(端口A、端口B、端口C)、两组控制电路、一个数据总线缓冲器、一个读写控制逻辑电路部分组成。其内部结构框图如图2.4所示。
各部分功能如下:
1. 三个输入/输出端口
8255有3个8口数据端口 A、B、C,每个端口都可以用软件设置成输入或输出端口,但也有各自的功能特点。
1) 端口A:对应有一个8位数据输入锁存器和一个8位数据输出锁存器/缓冲器,因此端口A可以为8位双向输入/输出口,且输入/输出均具有锁存功能。
2) 端口B:对应有一个8位数据输入缓冲器和一个8位数据输出锁存器/缓冲器,因此端口B可以为8位双向输入/输出口,且输出具有锁存功能。
3) 端口C:对应两组4位双向输入/输出口,它含有一个8位数据输入缓冲器和一个8位数据数输出锁存器/缓冲器,即输出锁存, 输入不锁存。
4) A口和B口常常独立设为输入/输出。C口常常通过命令分为两个4位端口,每个4位端口包含一个4位的输入缓冲和一个4位的输出锁存/缓冲器,分别为A口和B口提供控制信号和状态信号。
2. 两组控制电路
A、B两组控制电路分别实现对A组I/D端口线(A7-A0和C7-C4)和B组I/O端口线 (B7-B0和C3-C0)的输入/输出控制。一方面接收来自内部总线上的控制字一方面接收来自读/写控制逻辑的读/写命令,从而决定两组端口工作方式和读/写操作。
A组:端口A和端口C(上半部分)PC7-PC4。
B组:端口B和端口C(下半部分)PC3-PC0。
3. 读/写控制逻辑电路
读/写控制逻辑负责管理8255的数据传输过程。根据地址译码后的片选C(——)S(——)、来自控制总线的信号R(——)D(——)、W(——)R(——)以及来自地址总线的地址信息A1、A0,实现对数据、状态、控制信号的传输。如表2.3所示为8255的控制信号与传输动作的对应关系。
4. 数据总线缓冲器
数据总线缓冲器为双向三态8为缓冲器,它是8255与微机数据总线的接口。其上传输的信息有输入数据、输出数据、51单片机写给8255的控制字以及从8255读入的状态信息。
2.6 发光二极管概述[6]
在此次设计中基本设计实现的显示元件时8个不同颜色的发光二极管,当有高电平通过时,发光二极管亮,低电平时发光二极管灭。电平信号的来源是8255的PA口。
2.7 LED数码管概述[7]
LED数码管是由发光二极管显示字段组成的显示器件,在此次单片机应用系统中是八段LED。这种显示器有共阴极和共阳极两种,此次系统中使用的是共阴极显示器,如图所示。共阴极LED显示器的发光二极管的阴极接地,发光二极管的阳极为高电平时,发光二极管点亮。
显示字符
共阴极段选码
显示字符
共阴极段选码
0
3FH
C
39H
1
06H
D
5EH
2
5BH
E
79H
3
4FH
F
71H
4
66H
P
73H
5
6DH
U
3EH
6
7DH
T
31H
7
07H
y
6EH
8
7FH
8.
FFH
9
6FH
“灭”
00H
A
77H
…
…
B
7CH
表2.1 八段LED的段选码
八段LED显示器中有8个发光二极管,其中7个发光二极管构成7笔字形“”,1个发光二极管构成小数点。八段LED显示块的管教如图所示。从a-b管教输出不同的8位二进制数,可显示不同的数字或字符。通常把控制发光二极管的8位二进制数称为段选码,共阳极与共阴极的段选码互为反码,如表2.1所示。
3 A/D转换的具体设计及程序实现
3.1 A/D转换的总体设计[8]
在本次设计中,当51单片机给ADC0809的START引脚一个高电平,标志着转换的开始,ADC0809通过IN0通道进行模拟信号的采集,IN0通道是通过地址锁存器来确定的,3位端口地址与8位数据口的前三位是复用的。采集模拟信号之后在ADC0809的内部进行模数转换,这时ADC0809的EOC引脚输出电平为低电平,表示转换正在进行,当转换完毕,EOC输出高电平给51单片机的INT0引脚,引起中断,51单片机给ADC0809的OE引脚一高电平,ADC0809随即输出转换完成的数据,到51单片机的内部寄存器中。一方面51单片机通过8255的PA口将数据输出到8位发光二极管上进行显示,另一方面,51单片机将8位二进制数转换为3位BCD码并输出到3位7段数码管上进行显示。
电位器 ADC809 51单片机 显示部分
发光二极管显示
1、控制
2、数据存储
3、8位二进制数转换为3位BCD码
模拟信号
A/D转换
数码管显示
图3.1 总体设计图
3.2 51单片机的中断[10]
3.2.1 中断的基本概念
所谓中断,是指CPU对系统中或系统外发生的某个事件的一种响应过程,即CPU暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序;当处理结束后,再返回到被暂停程序的断点处,继续执行原来的程序。实现这种中断功能的硬件系统和软件系统称为中断系统。
中断系统是计算机的重要组成部分。实时控制、故障自动处理时往往用到中断系统,计算机与外部设备间传送数据及实现人机联系时常常采用中断方式。
3.2.2 程序的入口地址
程序地址空间可以任意安排,但复位和中断源的程序入口地址在51单片机中式固定的,不能更改。这些入口地址见表。复位后,CPU从0000H地址开始执行程序。其他地址为中断服务程序入口地址,响应某个中断时,将自动从其对应的入口地址执行中断服务程序如表3.1.
操作
入口地址
复位
0000H
外部中断0
0003H
定时器/计数器0溢出
000BH
外部中断1
0013H
定时器/计数器1溢出
001BH
串行口中断
0023H
表3.1 中断服务程序入口地址
3.2.3 中断响应的条件、过程与时间
(1) 中断响应的条件
单片机响应中断的条件为中断源有请求(中断允许寄存器IE相应位置1),且CPU开中断(即EA=1)。这样,在每个机器周期的S5P2期间,对所有中断源按用户设置的优先级和内部规定的优先级进行顺序检查,并可在SP6期间找到所有有效的中断请求。如有中断请求,且满足下列条件,则在下一个机器周期的SP1期间响应中断,否则将丢弃中断采样的结果:
1)无同级或高级中断正在处理。
2)现行指令到最后一个机器周期且已结束。
3)现行指令为RETI或访问IE、IP指令,执行完该指令且紧随其后的另一条指令也已执行完毕。
(2) 中断响应过程[9]
CPU响应中断后,由硬件自动执行如下的功能操作:
1)根据中断请求的源的优先级高低,对相应的优先级状态触发器置1.
2)保护断点,即把程序计数器PC的内容压入堆栈保护。
3)清内部硬件可清除的中断请求标志位(IE0、IE1、TF0、TF1)。
4)把被相应的中断服务程序入口地址送入PC,从而转入相应的中断服务程序执行。各中断服务程序的入口地址见表。
中断服务程序的最后一条指令必须是中断返回指令RETI。CPU执行该指令时,先将相应的优先级状态触发器清0,然后从堆栈中弹出断点地址到PC,从而返回到断点处。
由以上过程可知,51单片机响应中断后,只保护断点而不保护现场信息,且不能清除串行口中断标志T1和R1,也无法清除电平触发的外部中断请求信号。
3.3 ADC0809的工作过程[5]
ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,
ADDC
ADDB
ADDA
选通的通道
0
0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
1
0
1
IN5
1
1
0
IN6
1
1
1
IN7
表3.2 ADC0809通道地址选择表
必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。IN0-IN7为8路模拟量输入端,模拟量输入电压的范围是0-5V,对应的数字量为00H-FFH,转换时间为100us。ADDA、ADDB、ADDC为通道地址线,用于选通通道,详细情况如表3.2所示。
ALE是通道地址锁存信号,其上出现脉冲上升沿时,把ADDA、ADDB、ADDC地址状态送入地址锁存器中。VREF(+)、VREF(-)接基准电源,在精度要求不太高的情况下,供电电源可用作基准电源。START是启动引脚,其上脉冲的下降沿启动一次新的A/D转换。ECO是转换结束信号,可用于向单片机申请中断或供单片机查询。CLK是时钟端,典型的时钟频率为640KHZ。
ADC0809的工作的定时关系如图3.1所示。
图3.2 ADC0809转换工作时序
从图中可以看出在进行A/D转换时,通道地址应先送到ADDA-ADDC输入端。然后在ALE输入端加一个正跳变脉冲,将通道地址锁存到ADC0809内部的地址锁存器中,这样对应的模拟电压输入就和内部变换电路接通。为了启动,必须在START端加一个负跳变信号。此后,变换工作就开始进行,标志ADC0809正在工作的状态信号EOC由高电平(空闲状态)变为低电平(工作状态)。一旦变换结束,EOC信号就又由低电平变成高,此时只要在OE端加一个高电平,即可打开数据线的三态缓冲器从D0-D7数据线读得一次变换后的数据。
数字量输出及控制线:11条
ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。
CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,
VREF(+),VREF(-)为参考电压输入。
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
3.3.1 ADC0809与51单片机的连接
ADC0809与51单片机的连接如图3.2所示由图可知ADC0809的转换时钟由单片机的ALE提供。因ADC0809的典型转换频率为640KHZ,ALE的信号频率与晶振频率有关。51单片机通过地址线P2.0和读、写控制线RD、WR来控制转换器的模拟输入通道地址锁存、启动和输出允许。模拟输入通道地址的译入ADDA-ADD由P0.0-P0.2提供,因ADC0809具有通道地址锁存功能,故P0.0-P0.2不需要经锁存器接入ADDA-ADDC。根据P2.0和P0.0-P0.2的连接方法,8个模拟输入通道的地址依IN0-IN7顺序为800H-8007。
3.3.2 ADC0809工作流程图及程序实 图3.3 adc0809与51单片机的连接
本次设计是利用中断方式读入转换结果,在中断方式下,A/D转换结束后会自动产生EOC信号,将其与51单片机外部中断相接。
实现程序:
ORG 0000H
LJMP START
ORG 0003H
LJMP INT_0
ORG 0040H
START:
SETB EA
SETB IT0
SETB EX0
图3.4 ADC0809工作流程图 A_D:
MOV DPTR,#8000H
MOV A,#00H
MOVX @DPTR,A
SJMP A_D
INT_0:
MOVX A,@DPTR
MOV R7,A
RETI
END
3.4 8255的工作方式[11]
此次设计中通过8255的最基本的工作0即可完成数字信号的传输作用,而且简单快捷。
3.4.1 8255的工作方式及编程
工作方式选择控制字的格式如图所示。关于工作方式选择控制字说明如下。
D7
D6
D5
D4
D3
D2
D1
D0
D7:方式选择控制字标识位。
D6,D5:A组方式选择 00:方式0,01:方式1,1x:方式2。
D4:端口A,1:输入,0:输出。
D3:PC0-PC4,1:输入,0:输出。
D2:B组方式选择,1:方式1,0:方式0。
D1:端口B,1:输入,0:输出。
D0:PC0-PC3,1:输入,0:输出。
3.4.2 8255A的三种工作方式的功能及应用
1. 方式0:基本输入/输出方式。
端口A、B、C都可以工作在此方式。端口A、端口B通过方式选择子规定为输入/输出,端口C分为两个4位端口,这两个4位端口也可以由方式选择字规定为输入或输出,这样4个端口组合起来共有16种输入/输出组合。
1) 在同步传送时:双方互相知道对方动作,不需要应答信号。CPU不需要查询外设的状态。在这种情况下,对接口的要求很简单,只要能传送数据就行了。
2) 在查询方式传送时:如果要用查询传送,可以将A口和B口作为输入/输出数据端口,而将端口C的4个数位(高4位或第4位均可)规定为输出端口,用来输出控制信号,将端口C的另外4个数位规定为输入端口,用来读入外设的状态。这样就可以利用端口C来配合端口A和端口B的输入/输出操作。
2. 方式1:选通输入/输出方式。
端口A、B都可以工作在此方式。端口C作联络信号。端口A和端口B用方式1进行输入/输出时,要利用端口C提供的选通信号和应答信号。而端口C中的数位与这些信号之间有固定的对应关系,这种关系部是用程序可以改变的。
(1) 方式1的特点
1) 端口A和端口B可以分别作为两个数据口工作在方式1,任一端口可以作为输入或输出口。
2) 如果端口A或端口B工作在方式1,端口C中有3位规定为配合方式1工作的信号,其他端口和C口中的其他位可以工作在方式0,即作为输入或输出。
3) 如果端口A和端口B都工作在方式1,则端口C中有6位规定为配合方式1工作信号,剩下两位仍可工作在方式0,即作为输入或者输出。
(2) 方式1输入情况下有关信号的规定
1) 端口A工作在方式1并作为输入口时,端口C的PC4、PC5、PC3配合端口A工作。其中,PC4作为选通输入信号输入端STB(——————),PC5作为输入缓冲区满信号输出端IBF,PC3则作为中断请求信号输出端INTR。
2) 端口B工作在方式1并作为输入口时,端口C的PC2、PC1、PC0配合端口B工作。其中,PC2作为选通输入信号输入端STB(——————),PC1作为输入缓冲区满信号输出端IBF(——————),PC0则作为中断请求信号输出端INTR。
(3) 方式1输出情况下有关信号的规定
1端口A工作在方式1并作为输出口时,端口C的PC6作为外设接收数据后的响应信号输入端ACK,PC7作为输出缓冲区满信号输出端OBF,PC3则作为中断请求信号输出端INTR。
2端口B工作在方式1并作为输出口时,端口C的饿PC2作为外设接收数据后的响应信号输入端口ACK,PC4作为输出缓冲区满信号输出端OBF,PC0则作为中断请求信号输出端INTR。如图是端口A和端口B工作于方式1情况下作为输入、输出端口时的方式选择控制字。
3. 方式2:双向输入/输出方式。
只有端口A可以工作在此方式。端口C作联络信号。方式2只适用于端口A,端口C自动提供相应的控制信号和状态信号。
PC3:中断请求信号INTR。
PC4:外设到8255的选通信号,STB将外设送到8255的数据打入输入锁存器。
PC5:输入缓冲满信号IBF,通知CPU输入数据已到输入缓冲器,可以作为查询信号。
PC6:ACK(——————)外设收到数据后的应答信号。
PC7:OBF(——————)输出缓冲器满信号,表示CPU已将一个数据写入8255的端口A,通知外设将数据取走。控制字格式如图表示。
方式2是一种双向方式,如果以个并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入/输出的动作不会同时进行,那么将这个外设和8255的端口A相连,并使它工作在方式2,就非常适合。
D7为标志位,必须为1,用来与端口C置1/置0控制字区别。
3.4.3 8255与51单片机的连接及工作[12]
8255内部芯片没有地址锁存能力,所以8255片选信号CS及口地址选择线A1、A0分别由51单片机的P0.7、P0.1、P0.0经地址锁存后提供。如果把没有参与选地址的地址线的状态都看做“1”状态,择8255的A、B、C口及控制口地址分别为9000H、9001H、9002H、9003H。8255的复位端与51单片机的复位端相连,都接到51单片机的复位电路上。
51单片机与8255的接口电路如图3.4所示。
图3.5 8255与51单片机的扩展连接图
由方式选择控制字的格式与定义可确定出满足要求的方式控制字为80H(10000000B)。对于8255编程,将80H写入它的控制寄存器,初始化程序为:
MOV DPTR, #9003H
MOV A,80H
MOVX @DPTR,A
将单片机内部数据输出到8255的A口,由前面内容可知,ADC0809的转换结构储存到51单片机的R7寄存器中。实现此功能的程序为:
MOV DPTR, #9003H
MOV A,80H
MOVX @DPTR,A
MOV DPTR,#9000H
MOV A,R7
MOVX @DPTR,A
3.5 发光二极管以及LED数码管的显示
3.5.1 发光二极管的显示
在此次设计中8个发光二极管与8255的PA口的0-7口依次相连接,当8255的A口有高电平输出到二极管上,则二极管变量,低电平到二极管上,二极管不灭。并不用程序初始化发光二极管,其显示结果 与51单片机输出到8255的A口中的8位二
进制数相同,如图3.5所示为发光二极管的8255的
连接图。
图3.6 发光二极管与8255的连接
3.5.2 LED动态显示方式及实现
在此次设计中我们采用的是LED动态显示,数码管如图3.1所示,所谓的动态显示,是由于每一位的段选线都接在一个I/O口上,因此每送一个段选码,8位就显示同一个字符,这种显示器是不能用的。解决此问题的方法是利用人的视觉滞留,从段选线I/O口上按位次分别送显示字符的段选码,在位选控制口也按相应的次序分别选通相应的显示位,即给相应的显示位低电平,选通为就显示相应的字符,并保持几毫秒的延时,未选通位不显示字符。这样,对各位显示就是一个循环过程。从计算机的工作来看,在以个瞬时只有一位显示字符,而其它位都是熄灭的,但因为人的视觉滞留,
展开阅读全文