第8章单片机应用接口技术.ppt
67页第第8章章 单片机应用接口技术单片机应用接口技术8.1 显示器接口显示器接口•在MCS-51系列单片机应用系统中,显示器是人机对话的主要输出器件,它显示系统运行中用户关心的实时数据常见的显示器件有LED(发光二极管显示器)器件和LCD(液晶显示器)器件两大类点阵显示屏通过编程能够显示各种图形、汉字,目前也被广泛应用于各种单片机应用系统中8.1.1 LED显示器接口显示器接口1..LED 数码显示器的结构数码显示器的结构•LED 数码显示器是一种由LED发光二极管组合显示字符的显示器件它使用了8 个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为8 段发光二极管数码显示器其内部结构如图8-1所示•LED 数码显示器有两种连接方法:(1) 共阴极接法把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地,每个发光二极管的阳极通过电阻与输入端相连2) 共阳极接法把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连•为了显示字符,要为LED 显示器提供显示段码(或称字形代码),组成一个“8”字形字符的7 段,再加上1个小数点位,共计8段,因此提供给LED 显示器的显示段码为1 个字节。
各段码位的对应关系如表8-1所示•2.LED显示接口显示接口•在单片机系统中,LED显示一般采用静态显示和动态扫描两种驱动方式静态驱动方式的工作原理是每一个LED显示器用一个I/O端口驱动、亮度大、耗电也大、占用的I/O端口多,但显示位多时一般很小采用•动态扫面方式的工作原理是将多个显示器的段码同名端连在一起,位码分别控制,利用视角暂留效应,分别进行显示只要保证显示的频率,看起来的效果和一直显示是一样的电路上一般用一个I/O端口驱动段码,用另一个I/O口实现位控因此动态显示占用的I/O口少,耗电也少(1)静态显示接口 目前静态显示接口一般采用如下三种方式1)采用并行输出接口的静态显示接口采用的并行输出接口可以是TTL的锁存器(如74LS273、74LS373),也可采用大规模集成并行输出接口(如8155、8255A等)图8-2中8255A的PA、PB、PC口各驱动1个8段数码管,实现静态接口2)采用硬件译码器件构成静态显示接口在CMOS和TTL器件里,都有专门用于驱动显示的器件CMOS类型的器件有CD4511、CD14547、CD14495、CM14513等TTL类型器件有74LS47、74LS247、74LS48等,其中74LS47和74LS247可驱动共阳数码管,其余只可驱动共阴数码管。
这些驱动器中大部分CMOS驱动器均带有锁存器,而TTL器件均不带锁存器,在设计时应在其前面加上锁存电路图8-3是CD4511构成的静态显示电路图中要显示的数据送P1.0P1.2,利用74LS138译码信号使能CD4511,通过CD4511译码并锁存,从而实现静态显示的功能3)用串转并接口芯片构成静态显示接口利用串转并接口芯片74LS164可以比较方便地实现多位静态显示(见图8-4)图中4片74LS164依次级联,要显示的数据通过TXD端依次移入各片74LS164中,并锁存输出,从而实现4片LED静态显示•设8031的串行口工作于方式0,要显示的数据存在DispBuf[4]中,则相应的显示程如下:Uchar code Shape[10]={0xc0,0xf9,0xa4,0xb0,0x990x92,0x82,0xf8,0x80};void Disp164(void){ uchari;for(i=0;i<4;i++){SBUF= Shape[ DispBuf[i] ];while(TI==0);TI=0;}}(2)动态显示接口 所谓动态显示是指一位一位地轮流点亮各个显示器对于每一位显示器来说,每隔一段时间点亮一次。
通常点亮时间为1mS左右,相隔时间为20mS图8-5为8位共阴显示器和74LS273构成的动态显示接口•图中74LS273-1的输出为段数据口,接显示器的各个段极,74LS273-2的输出为位扫描口,接LED的公共极显示时,首先使74LS273-2的Q0为低电平,Q1~Q7为高电平,则仅第一位显示器的公共阴极为低电平(被选通);同时74LS273-1输出第一个显示数据的段码,这时第一位显示器将显示出第一个显示数据持续1ms左右后,使Q0为低电平,关闭第一个显示器,随后使Q1为低电平,选通第二位显示器,并由74LS273-1输出第二个显示数据,并持续1ms左右用类似的方法依次选通第3,第4…第8位即完 成一次循环显示如果连续地循环便可在显示器上稳定地显示所需显示的内容•设图中74LS273-1的地址为BFFFH、74LS273-2的地址为7FFFHVoid Disp273(void){ucharI;for(i=0;i<8;i++){ *p=Shape[DispBuf[i]]; *q=Position; Position<<=1; Delay(1); *p=0xff;}#include
方法如下:•用变量DispBuf指向显示缓冲区,用Position保存位扫描码,当它的某一位为0,对应的LED选通 Position的初始值设为7EH,然后每扫描一次位扫描码码左移一位以便选通下一个LED,8个LED全显示完了,又设置其值为7EH•设置一个显示1位子程序,其功能是将DispBuf指向的单元值显示在对应位上显示完后,把下一个显示单元的值装入DispBuf,同时Position装入下一个位扫面码•启动定时器,使定时器产生1ms定时,在定时中断中调用显示1位子程序Void Disp273(uchar xdata *p,uchar xdata *q, uchar In,uchar EnBit){ *p=Shape[DispBuf[i]]; *q= EnBit;}#include
通常键盘可分为编码键盘和非编码键盘两种通过硬件识别的键盘称编码键盘,通过软件识别的键盘称非编码键盘非编码键盘有独立按键接口和矩阵式按键接口两种接口方式8.2.1独立式键盘接口设计独立式键盘接口设计•独立式键盘就是各按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了这类键盘的接口方式可分为串行和并行两类1. 并行方式并行方式•按键的一端接地,另一端接上拉电阻后接输入端,当按键未按下时,由于上拉电阻的作用使输入端确保为高电平,当按键按下时,输入端与地短接而为低电平•除采用P1口作为输入口外,还可以用扩展I/O口构成并行式键盘接口电路,如用8255扩展I/O口,用74LS244扩展输入口等2. 串行接口方式 串行接口方式的独立式键盘如图8-13所示,图中键盘输入信息通过74LS165串行输入,具体读键程序如下:uchar Key165(void){ ucharKey;SCON=0x10; Key=SBUF while(RI==0);RI=0;if(Key==0xff)return(0x08);else{for(i=0;i<8;i++){ if((Key&0x01)==0x00)break;elseKey>>=1; } return(i);}}8.2.2矩阵式键盘接口设计矩阵式键盘接口设计1.矩阵式键盘原理.矩阵式键盘原理在单片机系统中,若所需按键数量较多,可采用矩阵式键盘。
矩阵式键盘一般采用行列式结构并按矩阵形式排列图8-14示出4×4行列式键盘的基本结构4×4表示有4根行线和4根列线,在每根行线和列线的交叉点上均分布1个单触点按键,共有16个按键•矩阵式按键是通过扫描法实现键盘的识别所谓行扫描法,就是通过行线发出低电平信号,如果该行线所连接的键没有按下的 话,则列线所连接的输出端口得到的是全“1”信号(如图8-14(a));如果有键按下的话,则得到的是非全“1”信号(如图8-14(b)) 然而对于机械开关结构的按键,由于机械触点的弹性及电压突跳等原因,往往在触点闭合或断开的瞬间会出现5ms~10ms电压抖动(见图8―15)为了保证CPU对键的闭合只作一次处理,必须消除抖动消除抖动可采用硬件方法 图8-15 按键抖动示意图消除抖动可采用硬件方法 图8-15 按键抖动示意图(如用R-S触发器隔离)和软件方法(延时去抖)两种方法实现为节省硬件,目前单片机系统一般采用软件方式消除抖动 •2.矩阵式键盘程序设计方法.矩阵式键盘程序设计方法图8-16是利用74LS273组成的具有4x8键盘、8位显示器的接口电路,图中74LS244的输入为键盘行扫描线,74LS273的输出为列扫描线,键盘编程要点如下:(1)判别键盘上有无键闭合 •使74LS273的输出全为“0”, 读74LS244的输入D0-D3,若D0-D3为全“1”,则无键闭合,否则为有键闭合。
(2)消除抖动 •当判别有键闭合时,延时10mS 后再判别键盘状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合期,否则认为是键的抖动 (3)确定闭合键的键号 •方法是对键盘上的列线依次扫描,扫描的列线输出为0,其余的列线输出为1这样74LS273的输出口分别为:相应地顺序读取4位行线(74LS244的D0~D3)的状态,若D0~D3全为1,则输出为0的列线上没有键按下;否则该列有键闭合,由该列号和输入为0的行号就可确定是哪个键闭合设0、1、2、3行的首键号分别为0、8、16、24,键盘的键号可按下列方式计算(结果见表8-6):键号=行首键号+列号(4)对键的一次闭合仅作一次处理,等待闭合键释放后再判断新的键盘输入•3.矩阵键盘程序编写.矩阵键盘程序编写•矩阵键盘程序编写主要是按上述四个步骤完成1)判断有无键按下Uchar KeyStart(uchar xdata *Rd,uchar xdata *Wr){uchar aa;*Wr=0x00;aa=*Rd;aa=~aa;aa&=0x0f;return(aa);}•(2)读键号Bit RdKeyValue(uchar xdata *Rd,uchar xdata *Wr,uchar *KeyNo){ uchar i,j; uchar Scan=0xfe; for(j=0;j<8;j++){*Wr=Scan;RdKey=*Rd;*KeyNo=0x00;pressed=0;for (i=0;i<4;i++) { If(RdKey&0x01)==0x01){ Pressed=1;break;} else *KeyNo+=8; } if (Pressed==1){ *KeyNo+=j;break;}elseScan<<=1; }return(Pressed);}•(2)完整的键盘程序。
•Uchar xdata *p; •uchar xdata *q;P=(uchar xdata *)0xdfff;q=(uchar xdata *)0xbfff; uchar keyProcess(){ if( KeyStart(p ,q)==0){NoRealse=0;return(0)} if(NoRelase==1){return(0);} delay(10);if(KeyStart(p ,q)==0){NoRealse=0;return(0)} if(RdKeyValue(p,q,&KeyNo)==0){NoRealse=0;return(0)}NoRealse=1; KeyJump(KeyNo);} 8.3 A/D转换器接口转换器接口•A/D转换器是用以实现模拟量向数字量转换的器件按转换原理的不同A/D器可分为计数式、双积分式、逐次逼近式及并行式A/D转换器四种逐次逼近式和双积分式A/D器件目前比较常用逐次逼近式A/D转换器具有速度较快、精度较高等特点双积分式A/D转换器具有转换精度高、抗干扰性能好、价格便宜等优点,但它的转换速度较慢•量化间隔和量化误差是A/D转换器的主要技术指标之一。
量化间隔可由下式求得:•其中n为A/D转换器的位数•量化误差有两种表示方法:一种是绝对量化误差,另一种是相对量化误差可分别由下式求得:•相对量化误差•绝对量化误差 =量化间隔/2=/2•除了量化误差外,A/D器件还有非线性度、转换数度、转换精度等指标8.3.2 A/D转换器芯片转换器芯片ADC08091..ADC0809结构与原理结构与原理•ADC0809是典型的8位8通道逐次逼近式A/D转换器,采用CMOS工艺制造由单一的5V电源供电,片内带有锁存功能的8选1的模拟开关,其转换时间为100 μs、转换误差为1/2LSB图8-17 为ADC0809 的内部结构与引脚(1)引脚说明1)IN7~IN0:模拟量输入通道;3)ALE:地址锁存信号;4)START:转换启动信号,高电平有效;5)D7~D0:数据输出线;6)OE:输出允许信号,高电平有效;7)CLK:时钟信号,最高时钟频率为640kHz;8)EOC:转换结束状态信号上升沿后高电平有效;9)Vcc:+5V电源;10)VREF(+VREF 、—VREF):参考电压•2)ADDA、ADDB、ADDC:模拟通道地址选择线、其通道选择见表8-8,表中A、B、C分别对应ADDA、ADDB、ADDC;(2)工作过程•图8-18 为ADC0809 转换工作时序。
其工作过程如下:•ALE上升沿将ADDC、ADDB、ADDA 端选择的通道地址锁存到8位A/D 转换器的输入端START 的下降沿启动8 位A/D 转换器进行A/D 转换EOC 端在A/D 转换开始输出为低,转换结束后输出为高,该信号通常可作为中断申请信号OE 为读出数据允许信号,高电平有效•2. MCS-51单片机与单片机与ADC0809的接口的接口ADC0809与MCS-51单片机的一种常用连接方法如图8-19所示电路连接主要涉及两个问题,一个是8路模拟信号的通道选择,另一个是A/D转换完成后转换数据的传送 •(1)8路模拟通道选择•ADC0809 的转换时钟可用单片机提供的ALE信号经分频器分频后得到设单片机时钟频率为6MHz,则ALE 脚的输出频率为1MHz,再2分频后为500kHz,即可满足ADC0809 对时钟频率的要求•图8-19中当P2.7=0时,单片机对ADC0809执行一次写操作就可以启动ADCO8O9图中P0.0~P0.2分别与ADDA,ADDB,ADDC相连,因此单片机对外部数据存储单元7FF0、7FF1…7FF8执行写操作,就分别启动了ADC0809的8个通道的转换。
例如要启动IN0通道时,可采用如下两条指令:uchar xdata *p=0x7ff0; *p=0x##;(2)转换数据的传送•A/D转换后得到的数据为数字量,这些数据应传送给单片机进行处理数据传送的关键问题是如何确认A/D转换的完成,因为只有确认数据转换完成后才能进行传送通常可采用下述3种方式 1)延时方式• 对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的因此,单片机在启动ADC0809后,只要等待时间大于ADC0809 的转换时间就可以正确地读取A/D转换结果•2)查询方式• ADC0809转换开始时EOC为低电平,转换结束后EOC变为高电平因此单片机可以在启动ADC0809后,通过查询EOC的电平高低来判断是否转换结束•3)中断方式•如果把表示转换结束的状态信号(EOC)作为中断请求信号,那么,便可以中断方式进行数据传送要注意的是:ADC0809转换结束时EOC产生从低到高的跳变,而单片机采用外部边沿触发中断时,认为从高到低的跳变是一次中断请求;因此当采用中断方式时,一般在单片机的外部中断引脚(或)与EOC之间接入一个非门•不管使用上述哪种方式,只要一旦确认转换结束,便可通过指令进行数据传送。
所用的指令为MOVX读指令,仍以图8―19所示为例,则有对通道0的读取为: unsigned char AdBuf; unsigned char xdata *p=0x7ff0; AdBuf=*p; •用延时或查询方式unsigned char AdBuf,i;unsigned char *p=0x7ff0;*p=0x03;//启动通道0转换 for(i=0;i<30;i++);//将上面语句换成查询P3.3是否为低电平,就是查询方//式但要注意//while(P3^3==1);AdBuf=*p•用中断方式//主程序如下:unsigned char xdata *p=0x7ff0;unsigned char AdBuf;Main(){IT1=1;//外部中断1,脉冲触发方式EX1=1;//允许外部中断1EA=1;//允许总中断*p=0x03;//启动通道0转换 while(1);}•外部中断1中断程序如下:Void Int1Isr(void) interrupt 2{AdBuf=*p;}8.4 D/A转换器接口转换器接口8.4.1 D/A转换器概述转换器概述•D/A转换器是将数字量转换成模拟量的器件。
在D/A转换器中,每一个数字量都是二进制代码按位的组合,每一位数字代码都有一定的‘权’,对应一定的模拟量为了将数字量转换为模拟量,应将每一位都转换成相应的模拟量,然后求和即可得到与数字量成比例的模拟量一般数模转换器都是按照这一原理设计的•R-2R 梯形网络是采用最多的D/A 转换器,其结构如图8-23所示该图是一个8位并行A/D转换器,它由电阻网络、电子开关、基准电源(Er)和运放等部分组成根据此图不难计算出运算放大器的输出电压Uo8.4.2 8位D/A 转换器DAC0832 •1..DAC0832结构与原理结构与原理 DAC0832 是分辨率为8位的电流输出型D/A 转换器,它的片内带有两个输入数据寄存器,输出电流建立稳定时间为1 μsDAC0832 的引脚与结构框图如图8-24所示•由图可知DAC0832 内部由“8 位输入锁存器”、 “8 位DAC寄存器”、 “8 位D/A 转换电路”三部分电路组成8 位输入锁存器”用于存放CPU 送来的数字量,由加以控制8 位DAC寄存器”用于存放待转换数字量,由控制8 位D/A 转换电路”由8位T形电阻网络和电子开关组成,电子开关受“8 位DAC 寄存器”控制输出。
T 形电阻网络能输出和数字量成正比的模拟电流,因此DAC0832 通常需要外接I/V变化电路才能得到模拟输出电压•引脚说明:1)D7~D0:数据量输入引脚;2)CS:片选信号,输入,低电平有效;3) :写信号1,输入,低电平有效;4) :写信号2,输入,低电平有效;5) : 参考电压,范围为-10~+10V;6) 和 :电流输出引脚;7) 和 :分别为寄存器的锁存端;8) ILE:数据锁存允许信号,输入,高电平有效;9) :数据传送控制信号,输入,低电平有效;10) :反馈电阻引脚,片内集成的电阻为15kΩ11)AGND,DGND:模拟地和数字地引脚•2..DAC0832 的工作方式的工作方式•MCS-51单片机与DAC0832的接口有3种连接方式,即直通方式、单缓冲方式及双缓冲方式直通方式不能直接与系统的数据总线相连,需另加锁存器,故较少应用下面介绍单缓冲与双缓冲两种连接方式(1)单缓冲方式•单缓冲方式就是使DAC0832的两个输入寄存器中一个处于直通方式,而另一个处于受控锁存方式,当然也可使两个寄存器同时选通及锁存。
a)所示的接口电路是把DAC寄存器接成常通状态;(b)是将输入寄存器接成常通状态;(c)是将两个寄存器接成同时选通和锁存 •(2)双缓冲方式•双缓冲方式,就是把两个锁存器都接成受控锁存方式由于两个锁存器分别占据两个地址,因此在程序中需要使用两条传送指令,才能完成一个数字量的模拟转换假设图8-26输入寄存器地址为7FFFH,DAC寄存器地址为BFFFH,则完成一次D/A转换的程序段应为: •Unsigned char xdata *p;•Unsigned char xdata *q;Unsigned char DaValue;*p=DaValue;*q=DaValue;3..D/A转换应用举例转换应用举例D/A转换器是计算机控制系统中常用的接口器件,它可以直接控制被控对象,例如控制伺服电动机或其它执行机构;它也可以很方便地产生各种输出波形,如矩形波、三角波、阶梯波、锯齿波、梯形波、正弦波及余弦波等图8-27是D/A输出的一种应用图中,运算放大器A2的作用是把运算放大器A1的单极性输出变为双极性输出设VREF=5V,则: 当数字量=0时, Vb=-5V当数字量=128时 Vb=0V当数字量=256时 Vb=5V•【例8.1】 执行下面程序后,运放的输出端产生锯齿波,如图8-28 所示。
main(){unsigned char DaVaue=0;unsigned char xdata *p=0x7fff;while(1){*p=DaValue;DaValue++;}}•【例8.2】 利用DAC0832 产生三角波,如图8-29 所示main(){ unsigned char i=0;bitStep=0;unsigned char xdata *p=0x7fff;while(1){ if(bit==0){*p=i; i++;if(i==0){bit=1;i==254}}else{ *p=i; i--; if(i==0){bit=0;i==1}}}}。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


