1、第七章、单片机应用系统接口技术,7.1、显示器及其接口技术,3,1 LED数码管显示器,1.1 LED 显示器的工作原理 1.2 LED显示器的显示方式 1.3 LED显示器接口电路,4,LED-(Light Emitting Diode的英文缩写),是利用PN结把电能 转换成 光能的固体发光器件,根据制造材料的不同可以发出红、黄、绿、白等不同色彩的可见光来。 伏安特性-类似普通二极管,正向压降约为2伏左右,工作电流一般在10 -20 mA。 结构形式- 8段方形LED常用来显示设备的运行状态, 可以显示各种数字和字符。,图 LED显示器,1.1 LED 显示器工作原理,5,结构形式 共阴极:
2、发光管的阴极并接成公共端COM,加高电平灯亮;共阳极:发光管的阳极并接成公共端COM,加低电平灯亮.,6,8段LED段选码原理,图 8段LED段选码原理,实现方法 CPU的数据线与LED各段引脚相连,控制输出的数据,点亮8段LED不同段的组合,显示等十六进制数。,7,1.2、 单个LED驱动实例,前面介绍了LED数码管的结构及其显示方式。LED数码管主要用于显示数字和一些特定的字符。这里通过一个具体的实例介绍一下,如何使用51系列单片机来进行数字和字母的显示本例主要用来使用共阳极LED数码管显示数字或字符,完整的电路原理图,如图所示。,8,#include /头文件 #include void
3、 Delay(); /子函数声明 void LEDShow(); void main() /主函数 P1=0x00; /LED全亮Delay(); /延时P1=0xFF; /LED全灭Delay(); /延时P1=0x00; /LED全亮Delay(); /延时P1=0xFF; /LED全灭Delay();while(1) /循环 LEDShow(); /扫描按键,显示数字或字符 void Delay() /延时子函数 int i;for(i=0;i1000;i+) /循环_nop_(); ,void LEDShow() if(P2=0xFE) /S0按下P1=0xC0; /显示字符“0”el
4、se if(P2=0xFD) /S1按下P1=0xF9; /显示字符“1”else if(P2=0xFB) /S2按下P1=0xA4; /显示字符“2”else if(P2=0xF7) /S3按下P1=0xB0; /显示字符“3”else if(P2=0xEF) /S4按下P1=0x99; /显示字符“4”else if(P2=0xDF) /S5按下P1=0x92; /显示字符“5”else if(P2=0xBF) /S6按下P1=0x82; /显示字符“6”else if(P2=0x7F) /S7按下P1=0xF8; /显示字符“7”else if(P2=0xFC) /S2、S1同时按下P1
5、=0x80; /显示字符“8”,9,(1)静态显示接口电路(2)动态显示接口电路,整个显示部分正常工作必须有:显示部分、锁存器、译码、驱动电路。,1.3 多个LED驱动方式,10,(1). 静态显示方式,LED数码管静态显示方式是指,当数码管显示某个字符的时候,相应字段的发光二极管恒定地导通或者截止,即亮灭是完全不变的。在这种情况下,多个LED是同时显示的。这里以4个共阴极LED数码管为例,如图所示。其公共端接GND,每个LED数码管的字段引脚分别接单片机的P0、P1、P2、P3端口,这样便可以为每个数码管单独赋值操作。,11,但是由上图可见。4个数码管几乎占据了单片机所有输入输出接口。 因此
6、实际上采用外部扩展的方法实现数码管的静态显示,12,采用串行口模式0扩展LED显示,13,#include “reg51.h” Sbit STB0=P10; Sbit STB1=P11; Sbit STB2=P12; Sbit STB3=P13; Void main () Scon=0x00; ES-0; STB0=0; STB1=0; STB2=0; STB3=0;SBUF=0xc0; While(TI=0) STB0=1; TI=0; STB0=0;,SBUF=0xF9; While(TI=0) STB1=1; TI=0; STB1=0;SBUF=0xA4; While(TI=0) STB
7、2=1; TI=0; STB2=0;SBUF=0xB0; While(TI=0) STB3=1; TI=0; STB3=0; While(1) ,14,2. 动态显示方式,所有位的段码线相应段并在一起,由一个8位I/O口控制,形成段码线的多路复用,各位的公共端分别由相应的I/O线控制,形成各位的分时选通。,15,LED数码管动态显示硬件结构电路原理分析 单片机1个并口P1口作为6个数码管公共的段码输入端; 单片机的P3.0P3.5作为数码管的6个位选信号控制端; 7407和7406分别作为段码和位选的驱动信号; LED数码动态扫描原理 首先点亮LED1,其于5个LED熄灭,保持3mS左右,消隐
8、; 其次点亮LED2,其于5个LED熄灭,保持3mS左右,消隐; 最后点亮LED6,其于5个LED熄灭,保持3mS左右,消隐; 扫描完1次大约需要24mS(每一次消隐1mS),扫描周期为50HZ左右;又由于人眼的“视觉暂留”现象,则认为所有的数码管是恒定点亮的。,16,10-1. LED数码管显示原理,流程图:,17,案例分析(2位学号显示),硬件电路原理图,18,流程图:,19,程序清单ORG 0000H MOV P0,#0FFH ;段码清零MOV 30H,#39H ;写入需要显示的数据“39”MOV DPTR,#TAB ;共阳极数码管的段码表 LOOP: CLR P3.4 ;选中LED1S
9、ETB P3.5MOV A, 30H ANL A,#0FH ;高4位清0,保留低4位MOVC A,A+DPTR ;查表取出低4位的段码 MOV P0,A ;段码送P0口 LCALL DELAY3ms ;延时3msMOV P0,#0FFHLCALL DELAY1ms ;消隐1msCLR P3.5 ;选中LED2SETB P3.4MOV A,30H ;取显示数据ANL A,#0F0H ;低4位清0,保留高4位SWAP A ;累加器高低4位交换,20,程序清单(续)MOVC A,A+DPTR ;查表取出段码 MOV P0,A ;段码送P0口LCALL DELAY3ms ;延时3msMOV P0,#0
10、FFHLCALL DELAY1ms ;消隐1msLJMP LOOP TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82HDB 0F8H,80H,90H,88H,83H,0C6H,0A1HDB 86H,8EH ;“0F”的共阳极段码表END,思考:如果是共阴数码管呢?,单片机A/D和D/A应用接口技术,22,本讲主要内容:,1. A/D转换器基本知识 2. ADC0809基本应用方法 3. D/A转换器基本知识 4. DAC0832基本使用方法,23,1. A/D转换器基本知识,具有A/D和D/A的单片机控制系统构成,24,A/D转换器的主要技术指标 分辨率使输出数字量
11、变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如:12位ADC的分辨率就是12位,一个10V满刻度的12位ADC能分辨输入电压变化最小是:10V1/212=2.4mV 量化误差ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。,25,A/D转换器的主要技术指标 偏移误差指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。 满刻度误差满刻度误差又称为增益误差。指满刻度输出数码所对应的实际输入电压与理想输入电压之差。 线性度线性度有时又称为非线性度,指转换器实际的转换特性与理想直线的最大偏差。,
12、26,A/D转换器的主要技术指标 绝对精度在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。 转换速率指ADC能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。,27,8位转换芯片ADC0809,ADC0809是逐次逼近型8位A/D转换器,片内有八路模拟开关,可对八路模拟电压量实现分时转换。典型转换速度100s 。片内带有三态输出缓冲器,可直接与单片机的数据总线相连接 。,28,CLK:时钟信号,典型值为500640KHZ
13、 VREF+、VREF-:基准电压输入, ALE:地址锁存允许,其上升缘锁存ADDCADDA的地址信号 START:A/D转换启动信号,上升缘启动A/D转换。 EOC:转换完成信号,启动转换后,EOC输出低电平,转换完成后输出高电平。该信号可用作向单片机提出中断申请,或者作为查询信号。,ADC0809的引脚见图,其信号意义如下:,29,OE:数字量输出允许信号,该引脚输入高电平时,转换后的数字量从D0D7脚输出。 IN0IN7:模拟电压输入,八个引脚可分别接八路模拟信号。 ADDA、ADDB、ADDC:通道选择信号,其输入电平的组合选择模拟通道IN0IN7之一,30,AT89C51与ADC08
14、09接口,ADC0809与AT89C51单片机的一种连接如图所示。电路连接主要涉及两个问题,一是8路模拟信号通道选择,二是A/D转换完成后转换数据的传送。,31,AT89C51与ADC0809接口图,32,例8.4 用查询方式分别对8路模拟信号轮流采样次,并依次把结果存到以片内RAM 30H为首地址的数据存储区。A/D转换程序流程图如图所示。,ADC0809应用举例,33,A/D转换程序流程图,34,参考程序如下: MAIN: MOV R1,#30H ;置数据区首址MOV DPTR,#0FEF8H ;指向IN0 MOV R7,#08H ;置通道数 LOOP:MOVX DPTR, A ;启动A/
15、D转换MOV R6, #05H ;软件延时 DALY:NOP DJNZ R6, DALY WAIT:JB P3.2, WAIT ;查询是否转换结束MOVX A, DPTR ;读取转换结果MOV R1, A ;存取数据INC DPTR ;指向下一个通道INC R1 ;指向下一个单元 DJNZ R7, LOOP ;巡回检测8个通道RET,35,输入:数字量,输出:模拟量。转换过程:送到DAC的各位二进制数按其权的大小转换为相应的模拟分量,再把各模拟分量叠加,其和就是D/A转换的结果。,使用D/A转换器时,要注意区分:D/A转换器的输出形式;内部是否带有锁存器。,(1) 输出形式,两种输出形式:电压
16、输出形式与电流输出形式。电流输出的D/A转换器,如需模拟电压输出,可在其输出端加一个I-V转换电路。,二、 D/A转换器1、概述,36,(2)D/A转换器内部是否带有锁存器,D/A转换需要一定时间,这段时间内输入端的数字量应稳定,为此应在数字量输入端之前设置锁存器,以提供数据锁存功能。根据芯片内是否带有锁存器,可分为内部无锁存器的和内部有锁存器的两类。,* 内部无锁存器的D/A转换器,可与P1、P2口直接相接(因P1口和P2口的输出有锁存功能)。但与P0口相接,需增加锁存器。,* 内部带有锁存器的D/A转换器,内部不但有锁存器,还包括地址译码电路,有的还有双重或多重的数据缓冲电路,可与MCS-
17、51的P0口直接相接。,37,2.主要技术指标,(1)分辨率,输入给DAC的单位数字量变化引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比。显然,二进制位数越多,分辨率越高。,例如,若满量程为10V,根据定义则分辨率为10V/2n。设8位D/A转换,即n=8,分辨率为10V/2n =39.1mV,该值占满量程的0.391%,用1LSB表示。,同理:10位 D/A:1 LSB=9.77mV=0.1% 满量程12位 D/A:1 LSB=2.44mV=0.024% 满量程,根据对DAC分辨率的需要,来选定DAC的位数。,38,(2)建立时间,描述DAC转换快慢的参数,表明转换速度。定义:为从
18、输入数字量到输出达到终值误差(1/2)LSB(最低有效位)时所需的时间。电流输出时间较短,电压输出的,加上I-V转换的时间,因此建立时间要长一些。快速DAC可达1s以下。,(3)精度,理想情况,精度与分辨率基本一致,位数越多精度越高。但由于电源电压、参考电压、电阻等各种因素存在着误差,精度与分辨率并不完全一致。,位数相同,分辨率则相同,但相同位数的不同转换器精度会有所不同。例如,某型号的8位DAC精度为0.19%,另一型号的8位DAC精度为0.05%。,39,3. DAC0832芯片介绍,(1)DAC0832的特性,美国国家半导体公司产品,具有两个输入数据寄存器的8位DAC,能直接与MCS-5
19、1单片机相连。主要特性如下:,分辨率为8位; 电流输出,稳定时间为1s; 可双缓冲输入、单缓冲输入或直接数字输入; 单一电源供电(+5+15V);,40,(2)DAC0832的引脚及逻辑结构,41,DAC0832的逻辑结构:,42,引脚功能:,DI0DI7:8位数字信号输入端 CS*: 片选端。 ILE: 数据锁存允许控制端,高电平有效。 WR1*:输入寄存器写选通控制端。当CS*=0、ILE=1、WR1*=0时,数据信号被锁存在输入寄存器中。,43,XFER*:数据传送控制。 WR2* :DAC寄存器写选通控制端。当XFER*=0,WR2* =0时,输入寄存器 状态传入DAC寄存器中。,44
20、,“8位输入寄存器”用于存放CPU送来的数字量,使输入数字量得到缓冲和锁存,由LE1*控制; “8位DAC寄存器” 存放待转换的数字量,由LE2*控制; “8位D/A转换电路”由T型电阻网络和电子开关组成,T型电阻网络输出和数字量成正比的模拟电流。,45,IOUT1:电流输出1端,输入数字量全“1”时,IOUT1最大, 输入数字量全为“0”时,IOUT1最小。,IOUT2:D/A转换器电流输出2端,IOUT2+IOUT1=常数。 Rfb: 外部反馈信号输入端, 内部已有反馈电阻Rfb,根据需要也可外 接反馈电阻。 Vcc: 电源输入端,可在+5V+15V范围内。 DGND: 数字信号地。 AG
21、ND: 模拟信号地。,46,4.DAC的应用,(1) 单极性电压输出,单极性模拟电压输出,可采用图11-5所示接线。输出电压Vout与输入数字量B的关系:Vout=(B/256)*VRFE,式中,B=b727+ b626+ b121+ b020;,B为0时,Vout也为0,输入数字量为255时,Vout为最大值,单极性。,47,双极性电压输出,采用图11-3接线:,Vout =(B128)*(VREF/128),由上式,在选用+VREF时, (1)若输入数字量b71,则Vout为正; (2)若输入数字量b70,则Vout为负。在选用-VREF时,Vout与+VREF时极性相反。,(2)双极性电
22、压输出,48,(3)DAC用作程控放大器,DAC还可作程控放大器,见图11-4。,DAC的输出和输入之间的关系:,Vout = -Vin*(256/B),256/B看作放大倍数。但输入数字量B不得为“0”。,49,5. MCS-51与DAC0832的接口电路,(1)单缓冲方式,DAC0832的两个数据缓冲器有一个处于直通方式,另一个处于受控的锁存方式。在不要求多路输出同步的情况下,可采用单缓冲方式。,单缓冲方式的接口如图11-5:,50,(1) 锯齿波的产生,ORG 2000H,START:MOV DPTR,#7FFFH ;DAC地址7FFFHDPTR,MOV A,#00H ;数字量A,LOO
23、P: MOVX DPTR,A ;数字量D/A转换器,INC A ;数字量逐次加1,SJMP LOOP,51,#include #include /* 定义DAC0832端口地址 */ #define DAC0832 XBYTE0x7fff #define uchar unsigned char void juchiw(void) uchar i;for (i=0;i255;i+) DAC0832=i;delay(); DAC0832=0; ,void main(void)saw(); ,52,(2) 三角波的产生,ORG 2000H,START: MOV DPTR,#7FFFH,MOV A,#
24、00H,UP: MOVX DPTR,A ;三角波上升边,INC A,JNZ UP,DOWN: DEC A ;A=0时再减1又为FFH,MOVX DPTR,A,JNZ DOWN ;,三角波下降边,SJMP UP,53,#include #include /* 定义DAC0832端口地址 */ #define DAC0832 XBYTE0x7fff #define uchar unsigned char void saw(void) uchar i;for (i=0;i=0;i+) DAC0832=i; delay(); ,void main(void)saw(); ,54,(3) 矩形波的产生,
25、ORG 2000H,START: MOV DPTR,#7FFFH,LOOP: MOV A,#data1,MOVX DPTR,A ;置矩形波上限电平,LCALL DELAY1 ;调用高电平延时程序,MOV A,#data2,MOVX DPTR,A ;置矩形波下限电平,LCALL DELAY2 ;调用低电平延时程序,SJMP LOOP ;重复进行下一个周期,55,#include #include /* 定义DAC0832端口地址 */ #define DAC0832 XBYTE0x7fff #define uchar unsigned char void saw(void) uchar i;DA
26、C0832=0xff;delay();DAC0832=0x00;delay(); ,void main(void)saw(); ,56,(2)双缓冲方式的接口与应用 在多路D/A转换的情况下,若要求同步转换输出,必须采用双缓冲方式。DAC0832采用双缓冲方式时,数字量的输入锁存和D/A转换输出是分两步进行的。第一, CPU分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入寄存器中。第二,CPU对所有的D/A转换器发出控制信号,使各路输入寄存器中的数据进入DAC寄存器,实现同步转换输出。 下图为两片DAC0832与8051接实现的双缓冲方式连接电路,能实现两路同步输出。,57,8051与DAC0832的双缓冲方式接口,58,实现两路同步输出的程序如下:MOV DPTR,#0DFFFH;送0832(1)输入锁存器地址MOV A,#data1 ;data1送0832(1)输入锁存器MOVX DPTR,A ;MOV DPTR,#0BFFFH;送0832(2)输入锁存器地址MOV A,#data2 ;data2送0832(2)输入锁存器MOVX DPTR,A ;MOV DPTR,#7FFFH ;送两路DAC寄存器地址MOVX DPTR,A ;两路数据同步转换输出,