[理学]第九部分单片机-IO扩展.ppt_第1页
[理学]第九部分单片机-IO扩展.ppt_第2页
[理学]第九部分单片机-IO扩展.ppt_第3页
[理学]第九部分单片机-IO扩展.ppt_第4页
[理学]第九部分单片机-IO扩展.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机电控制技术,Electromechanical control technology (9-8),机电控制与物流装备研究所 苗玉彬 2011年4月,ME.SJTU,MCS-51与键盘、显示器、拨盘的接口设计,输入外设:键盘、BCD码拨盘等;,输出外设:LED显示器、LCD显示器、打印机等。,LED显示器接口原理,LED(Light Emitting Diode):发光二极管的缩写。 显示器前面冠以“LED”。,LED显示器的结构,常用的LED显示器为8段(或7段,8段比7段多了一个小数点“dp”段)。,有共阳极和共阴极两种。如图所示。,ME.SJTU,ME.SJTU,为使LED显示不同的符号或数字,要为LED提供段码(或称字型码)。,提供给LED显示器的段码(字型码)正好是一个字节(8段)。各段与字节中各位对应关系如下:,按上述格式,8段LED的段码如表所示。,ME.SJTU,LED段码(8段),ME.SJTU,表中只列出了部分段码,可根据实际情况选用。,另外,段码是相对的,它由各字段在字节中所处的位决定。例如表中8段LED段码是按格式:,而形成的, “0”的段码为3FH(共阴)。 反之,如将格式改为下列格式:,则 “0”的段码为7EH(共阴)。,字型及段码由设计者自行设定,习惯上还是以“a”段对应段码的最低位。,ME.SJTU,N个LED显示块有N位位选线和8N根段码线。,LED显示器工作原理,下图是4位LED显示器的结构原理图。,ME.SJTU,段码线控制显示的字型,,位选线控制该显示位的亮或暗。,静态显示和动态显示两种显示方式。,1. 静态显示方式,各位的公共端连接在一起(接地或+5V)。,每位的段码线(adp)分别与一个8位的锁存器输出相连。,显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。,ME.SJTU,2. 动态显示方式,所有位的段码线相应段并在一起,由一个8位I/O口控制,形成段码线的多路复用,各位的公共端分别由相应的I/O线控制,形成各位的分时选通。,图: 4位静态LED显示器电路。该电路各位可独立显示。,ME.SJTU,图:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占 用一个4位I/O口。,ME.SJTU,8位LED动态显示2003.10.10的过程。,图(a)是显示过程,某一时刻,只有一位LED被选通显示,其余位则是熄灭的;,图(b)是实际显示结果,人眼看到的是8位稳定的同时显示的字符。,ME.SJTU,键盘接口原理,1. 键盘输入的特点,键盘:一组按键开关的集合。,行线电压信号通过键盘开关机械触点的断开、闭合,输出波形如图。,ME.SJTU,2. 按键的确认,检测行线电平 高电平:断开;低电平:闭合,,常用软件来消除按键抖动。,基本思想:检测到有键按下,键对应的行线为低,软 件延时10ms后,行线如仍为低,则确认该行有键按下。,3.如何消除按键的抖动,当键松开时,行线变高,软件延时10ms后,行线仍为 高,说明按键已松开。,采取以上措施,躲开了两个抖动期t1和t3的影响。,ME.SJTU,键盘接口的工作原理,独立式按键接口和行列式键盘接口。,1.独立式键盘接口,各键相互独立,每个按键各接一根输入线,通过检 测输入线的电平状态可很容易判断那个键被按下。,此种接口适于键数较少或操作速度较高的场合。,ME.SJTU,图(a)为中断方式的独立式键盘工作电路,图(b)为查询方式的独立式键盘工作电路。,ME.SJTU,用三态缓冲器扩展的I/O口的按键接口电路。,ME.SJTU,对独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。,KEYIN: MOV DPTR,#0BFFFH ;键盘端口地址BFFFH MOVX A,DPTR ;读键盘状态 ANL A,#1FH ;屏蔽高三位,MOV R3,A ;保存键盘状态值 LCALL DELAY10 ;延时10ms去键盘抖动 MOVX A,DPTR ;再读键盘状态,ANL A,#1FH ;屏蔽高三位,CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN,CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2,ME.SJTU,LJMP PKEY1 ;是K1键按下,转K1键处理 ;子程序PKEY1 KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转KEY3 LJMP PKEY2 ;S2键按下,转PKEY2处理 KEY3: CJNE A,#1BH,KEY4 ;S3未按下,转KEY4 LJMP PKEY3 ;S3按下,转PKEY3处理 KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转KEY5 LJMP PKEY4 ;S4按下,转PKEY4处理 KEY5: CJNE A,#0FH,PASS ;S5未按下,转RETURN LJMP PKEY5 ;S5按下,转PKEY5处理 RETURN:RET ;重键或无键按下,从子程序返回,识别和编程简单,用在按键数较少的场合。,ME.SJTU,2. 行列式(矩阵式)键盘接口,用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图所示。,按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。,ME.SJTU,(1)行列式键盘工作原理,无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。,由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。,(2)按键的识别方法,a. 扫描法,图(b)中3号键被按下为例,来说明此键时如何被识别出来的。,ME.SJTU,识别键盘有无键被按下的方法,分两步进行:,第1步:识别键盘有无键按下;,第2步:如有键被按下,识别出具体的按键。,把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。,上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。,b. 线反转法,只需两步便能获得此按键所在的行列值,线反转法的原理如下图。,ME.SJTU,ME.SJTU,第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。,第2步:行线输出为全低电平,则列线中电平由高变低所在列为按键所在列。,结合上述两步,可确定按键所在行和列。,(3)键盘的编码,根据实际需要灵活编码。,键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。,ME.SJTU,原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。,通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。,1. 编程扫描方式,只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。,工作过程:,(1)在键盘扫描子程序中,先判断有无键按下。,方法:PA口8位输出全0,读PC口低4位状态,若PC0PC3为全1,则说明键盘无键按下;若不全为1,则说明键盘可能有键按下。,ME.SJTU,(2)用软件来消除按键抖动的影响。如有键按下,则 进行下一步。,(3)求按下键的键号。,(4)等待按键释放后,再进行按键功能的处理操作。,2. 定时扫描工作方式,利用单片机内的定时器,产生10ms的定时中断,对 键盘进行扫描。,3.中断工作方式,只有在键盘有键按下时,才执行键盘扫描程序,如 无键按下,单片机将不理睬键盘。,ME.SJTU,键盘所做的工作分为三个层次,如下图。,ME.SJTU,第1层:单片机如何来监视键盘的输入。三种工作方 式:编程扫描定时扫描中断扫描。,第2层:确定具体按键的键号。体现在按键的识别方 法上就是:扫描法;线反转法。,第3层:执行键处理程序。,ME.SJTU,利用8031的串行口实现键盘/显示器接口,串口未作它用,可用来外扩键盘/显示器。,串口为方式0输出,串口外接移位寄存器74LS164。,接口电路如下图。,74LS164(0)74LS164(7):作为8位LED的段码输出,,8031的P3.4、P3.5:两行键的行状态输入,P3.3(TXD):同步移位脉冲输出控制线,,ME.SJTU,ME.SJTU,优点:亮度大,容易做到显示不闪烁,且CPU不必频繁的为显 示服务,从而使单片机有更多的时间处理其它事务。,显示子程序:,DIR: SETB P3.3 ;P3.3=1允许TXD脚同步移位 ;脉冲输出,MOV R7,08H ;送出的段码个数,R7为段 ;码个数计数器,MOV R0,7FH ;7FH78H为显示数据缓冲区,DL0: MOV A,R0 ;取出要显示的数送A,ADD A,0DH ;加上偏移量,MOVC A,APC ;查段码表SEGTAG,取出段码,MOV SBUF ,A ;将段码送SBUF,ME.SJTU,DL1: JNB TI,DL1 ;输出段码,查询TI状态,1个字节 ;的段码输出完否?,CLR TI ;1个字节的段码输出完,清TI标志,DEC R0 ;指向下一个显示数据单元,DJNZ R7,DL0 ;段码个数计数器R7是否为0, 如不 ; 为0,继续送段码,CLR P3.3 ;8个段码输出完毕,关显示器输出,RET ;返回,SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极段码表, ;0,1,2,3,4,DB 92H,82H,0F8H,90H ;5,6,7,8,9,DB 88H,83H,0C6H,0A1H,86H ;A,B,C,D,E,DB 8FH,0BFH,8CH,0FFH,0FFH ;F,P,暗,ME.SJTU,键盘扫描子程序:,KEYI:MOV A,00H ;判有无键按下,使所有列线为0 ;的编码送A,MOV SBUF,A ;扫描键盘的(8)号74LS164输 ;出为00H,使所有列线为0,KL0: JNB TI,KL0 ;串行输出完否?,CLR TI ;串行输出完毕,清TI,KL1: JNB P3.4,PK1 ;第1行有闭合键吗?如有,跳 ;PK1进行处理,JB P3.5,KL1 ;在第2行键中有闭合键吗?无闭 ;合键跳KL1,PK1: ACALL DL10 ;调用延时10ms子程序DL10,软 ;件消除抖动,JNB P3.4,PK2 ;判是否抖动引起的?,ME.SJTU,JB P3.5,KL1,PK2: MOV R7,08H ;不是抖动引起的,MOV R6,0FEH ;判别是哪一个键按下,FEH为最 ;左一列为低,MOV R3,00H ;R3为列号寄存器,MOV A,R6 ;,KL5: MOV SBUF,A ;列扫描码从串行口输出,KL2: JNB TI,KL2 ;等待串行口发送完,CLR TI ;串行口发送完毕,清TI标志,JNB P3.4,PKONE ;读第1行线状态,第1行有键闭,;合,跳PKONE处理,JB P3.5,NEXT ;读第2行状态,是第2行某键否?,MOV R4,08H ;第2行键中有键被按下,行首键 ;号08H送R4,AJMP PK3 ;,ME.SJTU,PKONE:MOV R4,00H ;第1行有键按下,行首键号00H送R4,PK3: MOV SBUF,00H ;等待键释放,发送00H使所有列 ;线为低,KL3: JNB TI,KL3 ;,CLR TI ;发送完毕,清标志,KL4: JNB P3.4,KL4 ;判行线状态,JNB P3.5,KL4 ;,MOV A,R4 ;两行线均为高,说明键已释放,ADD A,R3 ;计算得到键码A,RET,NEXT: MOV A,R6 ;列扫描码左移一位,判下列键,RL A ;,MOV R6,A ;记住列扫描码于R6中,INC R3 ;列号增1,DJNZ R7,KL5 ;列计数器R7减1,8列键都检查 ;完?,ME.SJTU,AJMP KEYI ;8列键扫描完毕,开始下一个键 ;盘扫描周期,DL10: MOV R7,0AH ;延时10ms子程序,DL: MOV R6,0FFH,DL6: DJNZ R6,DL6,DJNZ R7,DL,RET,利用通用键盘/显示器接口芯片8279实现键盘/显示器接口,Intel 8279芯片:通用可编程键盘/显示器接口芯片。,对键盘部分提供扫描工作方式,能对64个键键盘阵列不断扫描,自动消抖,自动识别出闭合的键并得到键号,能对双键或N键同时按下进行处理。,ME.SJTU,扫描方式的显示接口,可显示多达16位的字符。,1.8279的引脚及内部结构,ME.SJTU,ME.SJTU,2. 引脚功能介绍,(1)与CPU的接口引脚,DB0DB7:数据总线、双向、三态,与单片机数据 总线相连,在CPU和8279之间传送命令或数据。,CLK:系统时钟,用于8279内部定时,以产生其工作 所需的时序。,RESET:高电平时,8279被复位,复位后的状态如下:,* 16个字符左边输入显示方式,* 编码扫描键盘、双键锁定方式,CS*:片选,ME.SJTU,A0:=1,写入的是命令字节; 读出的是状态字节。,=0,写入或读出的字节均为数据。,RD*、WR*:读、写控制引脚,IRQ:中断请求线。在键盘方式中,当键盘RAM(先进先出)中存有按下键的数据时,IRQ为高电平,向CPU提出中断申请。,(2)扫描信号输出引脚,CPU每次从键盘RAM中读出一个字节数据时,IRQ就变为低电平。如果键盘RAM中还有未读完的数据,IRQ将再次变为高电平,再次提出中断请求。,ME.SJTU,SL0SL3,扫描输出。用来扫描键盘和显示器。可编程设定为编码输出,即SL0SL3需外接4-16译码器,输出16取1的扫描信号,也可编程设定为译码输出,即由SL0SL3直接输出4取1的扫描信号。,(3)与键盘连接的引脚,RL0RL7,键盘矩阵的行信号输入线。,SHIFT,输入线,通常用作键盘上、下档功能的控制键。,CNTL/STB,输入线,高电平有效。在键盘方式时,通常用来 作为键盘控制功能键使用。,ME.SJTU,(4)与显示器连接的引脚,OUTA0OUTA3(A组显示数据)、OUTB0OUTB3(B 组显示数据):向LED显示器输出的段码, 与扫描信号 线SL0SL3同步。两组可独立使用,也可合并使用。,BD*:消隐显示控制。,3. 8279的基本功能部件,(1)扫描计数器,编码方式:扫描线SL0SL3输出,经外部4-16译码器 译码后,为键盘和显示器提供16取1的扫描线。,译码方式:计数器的最低二位在8279内部译码后,从 SL0SL3输出,为键盘和显示器提供4取1扫描线。,ME.SJTU,(2)键盘去抖动及回复缓冲器,RL0RL7被接到键盘的行线。,在逐列扫描时,当某一键闭合,消抖电路延时等 待10ms之后,再检验该键是否仍闭合。若闭合,则该 键的行、列地址和附加的移位、控制状态一起形成键 盘数据,送入8279内部的键盘RAM存储器。格式为:,控制(CNTL)和移位(SHIFT)的状态由两个独立 的附加开关决定,而扫描(D5、D4、D3)是被按键的 列编码,而回复(D2、D1、D0)则是被按键的行位置 数据。,ME.SJTU,(3)键盘RAM及其状态寄存器,键盘RAM:8字节先进先出(FIFO)存储器。内部的FIFO状态寄存器存放FIFO的工作状态,如FIFO是空还是满,其中存有多少字符,是否操作出错等等。,当FIFO存储器空间不足时,状态逻辑将产生IRQ=1信号,向CPU发出中断申请。,(4)显示RAM和显示地址寄存器,显示RAM:存显示数据。16个字节,可存放16位显示信息。显示RAM的输出与显示扫描配合,同时轮流驱动被选中的显示位,使显示器呈现稳定的显示(动态扫描)。,4. 8279的命令字和状态字,命令字:D7、D6、D5为命令特征位,来区分8条不同的命令字。,ME.SJTU,状态字:主要用于键盘工作方式,以指示键盘RAM中 的字符数和有无错误发生。,5. 8279与键盘/显示器的接口,下图为8279与8位显示器,48键盘的接口电路。 行线接8279的RL0RL3,8279选用外部译码方式,SL0 SL2经74LS138(1)译码输出,接列线,实现键盘逐 列扫描。,SL0SL2又由74LS138(2)译码输出到显示器各位的公 共阴极,进行逐位扫描显示。OUTB03、OUTA 03输 出8位段码。,当位切换时,BD*输出为低电平,使74LS138(2)输出 全为高电平,显示消隐。,ME.SJTU,ME.SJTU,图中8279的命令/状态口地址为7FFFH,数据口地址为7FFEH。 8279初始化程序:,INITI: SETB EX1 ; 允许外部中断1中断,MOV DPTR,#7FFFH ; 命令/状态口地址写入DPTR,MOV A,#0D1H ; 控制字D1H送A,MOVX DPTR,A ; 向命令/状态口写入控制字,LP: MOVX A,DPTR ; 读8279的状态,JB Acc.7,LP,MOV A,#00H,MOVX DPTR,A,当键盘上出现有效的闭合键时,键输入数据自动进入8279的键盘RAM存储器,并向8031请求中断,8031响应中断读取键盘RAM中的键输入数据。若要更新显示器输出,仅需改变8279中显示RAM中的内容。,ME.SJTU,MOV A,2AH,MOVX DPTR,A,SETB EA,键输入中断服务程序:,PINT1:PUSH PSW,PUSH DPH,PUSH DPL,PUSH Acc,MOV DPTR,7FFFH ;向命令口写入读键盘RAM命令,MOV A,40H,MOVX DPTR,A,MOV DPTR,7FFEH ;读键输入值,MOVX A,DPTR,CJNE A,37H,PRI1 ;判输入停机命令否,ME.SJTU,SETB 20H,PRI1:POP Acc,POP DPL,POP DPH,POP PSW,RETI,显示子程序:,DIR: MOV DPTR,7FFFH ;输出写显示RAM命令,MOV A,90H,MOVX DPTR,A,MOV R0,70H,MOV R7,08H ;送显示RAM数据的个数,MOV DPTR,7FFEH,DL0: MOV A,R0,ME.SJTU,ADD A,05H ;05H为查表偏移量,MOVC A,A+PC ;查表得到段码,MOVX DPTR,A ;写入显示RAM,INC R0 ;显示数据单元地址增1,DJNZ R7,DL0 ;8个显示数据是否输出完毕,RET,ADSEG:DB 3FH,06H,5BH,4FH,66H,6DH ;段码表(共阴极) DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH DB 31H,6EH,1CH,23H,40H,03H DB 18H,38H,00H,ME.SJTU,MCS-51单片机与BCD码拨盘的接口设计,BCD码拨盘,有时需输入一些控制参数,设定完将维持不变。使用的最方便的拨盘是十进制输入,BCD码输出的BCD码拨盘。这种拨盘如图所示,为四片BCD码拨盘,ME.SJTU,拼接的4位十进制输入拨盘组。每片拨盘具有09十个位置,每个位置都有相应的数字显示。,BCD码拨盘后面有5个接点,A为输入控制线,另外4是BCD码输出线。,拨盘拨到不同位置时,输入控制线A分别与4根BCD码输出线中的某根或某几根接通,其接通的BCD码输出线状态正好与拨盘指示的十进制数相一致。,ME.SJTU,BCD码拨盘的输入输出状态,ME.SJTU,BCD码拨盘与单片机的接口,1.与单片BCD码拨盘的接口,8031通过P1.0P1.3与单片BCD码拨盘的接口电路。,ME.SJTU,A端接5V,当拨盘拨至某十进制数时,相应的8,4, 2,1有效端输出高电平(如拨至“6”时,4,2,端为“1”)无效端为低电平。输出的BCD码为正逻

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论