资源预览内容
第1页 / 共100页
第2页 / 共100页
第3页 / 共100页
第4页 / 共100页
第5页 / 共100页
第6页 / 共100页
第7页 / 共100页
第8页 / 共100页
第9页 / 共100页
第10页 / 共100页
亲,该文档总共100页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第1010章章 MCS-51MCS-51与键盘、显示器、拨盘、打印机的接与键盘、显示器、拨盘、打印机的接 口设计口设计输入外设:输入外设:键盘、键盘、BCDBCD码拨盘等;码拨盘等;输出外设:输出外设:LEDLED显示器、显示器、LCDLCD显示器、打印机等。显示器、打印机等。10.1 10.1 LEDLED显示器接口原理显示器接口原理 LED LED(Light Emitting Diode)(Light Emitting Diode): :发光二极管的缩写。发光二极管的缩写。显示器前面冠以显示器前面冠以“LED”LED”。10.1.1 10.1.1 LEDLED显示器的结构显示器的结构 常用的常用的LEDLED显示器为显示器为8 8段段(或(或7 7段段,8 8段比段比7 7段多了一段多了一个小数点个小数点“dp”dp”段)。段)。有有共阳极共阳极和和共阴极共阴极两种。如图两种。如图10-110-1所示。所示。为使为使LEDLED显示不同的符号或数字显示不同的符号或数字,要为,要为LEDLED提供提供段码段码(或称(或称字型码字型码)。)。提供给提供给LEDLED显示器的段码显示器的段码(字型码字型码)正好是一个字正好是一个字节(节(8 8段)段)。各段与字节中各位对应关系如下:。各段与字节中各位对应关系如下:按上述格式,按上述格式,8 8段段LEDLED的段码如表的段码如表10-110-1所示。所示。显示字符显示字符共阴极共阴极段码段码共阳极共阳极段码段码显示字符显示字符共阴极共阴极段码段码共阳极共阳极段码段码0 03 3FHFHC0HC0Hc c3939H HC6HC6H1 10606H HF9HF9Hd d5 5EHEHA1HA1H2 25 5BHBHA4HA4HE E7979H H8686H H3 34 4FHFHB0HB0HF F7171H H8 8EHEH4 46666H H9999H HP P7373H H8 8CHCH5 56 6DHDH9292H HU U3 3EHEHC1HC1H6 67 7DHDH8282H HT T3131H HCEHCEH7 70707H HF8HF8Hy y6 6EHEH9191H H8 87 7FHFH8080H HH H7676H H8989H H9 96 6FHFH9090H HL L3838H HC7HC7HA A7777FHFH8888H H“灭灭”0000H HFFHFFHb b7 7CHCH8383H H表表10-1 10-1 LEDLED段码(段码(8 8段)段)表表10-110-1只列出了部分段码,只列出了部分段码,可根据实际情况选用可根据实际情况选用。另外,另外,段码是相对的段码是相对的,它由各字段在字节中所处的,它由各字段在字节中所处的位决定。例如表位决定。例如表10-110-1中中8 8段段LEDLED段码是按格式段码是按格式:而形成的,而形成的, “0”“0”的段码为的段码为3 3FHFH(共阴)。共阴)。反之,如反之,如 将格式改为下列格式:将格式改为下列格式:则则 “0”“0”的段码为的段码为7 7EHEH(共阴)共阴)。字型及段码由设计者自行设定,字型及段码由设计者自行设定,习惯上还是以习惯上还是以“a”a” 段对应段码的最低位。段对应段码的最低位。N N个个LEDLED显示块有显示块有N N位位选线位位选线和和88N N根段码线根段码线。 10.1.2 10.1.2 LEDLED显示器工作原理显示器工作原理图图10-210-2是是4 4位位 LEDLED显示器的结构原理图。显示器的结构原理图。段码线段码线控制控制显示的字型显示的字型,位选线位选线控制控制该显示位的亮或暗。该显示位的亮或暗。静态显示静态显示和和动态显示动态显示两种显示方式。两种显示方式。1. 1. 静态显示方式静态显示方式各位的公共端连接在一起(接地或各位的公共端连接在一起(接地或+5+5V V)。)。 每位的段码线(每位的段码线(a adpdp)分别分别与一个与一个8 8位的锁存器位的锁存器输出相连。输出相连。 显示字符一确定,相应锁存器的段码输出将维持显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。不变,直到送入另一个段码为止。显示的亮度高显示的亮度高。 图图10-3:10-3: 4 4位静态位静态LEDLED显示器电路。该电路各位显示器电路。该电路各位可独立显示。可独立显示。2. 2. 动态显示方式动态显示方式 所有位的段码线所有位的段码线相应段并在一起,由一个相应段并在一起,由一个8 8位位I/OI/O口控制口控制,形成,形成段码线的多路复用,段码线的多路复用,各位的各位的公共端公共端分别由分别由相应的相应的I/OI/O线控制,形成各位的线控制,形成各位的分时选通。分时选通。图图10-410-4:4 4位位8 8段段LEDLED动态显示电路。其中段码线占用一动态显示电路。其中段码线占用一个个8 8位位I/OI/O口,而位选线占用一个口,而位选线占用一个4 4位位I/OI/O口。口。图图10-510-5为为8 8位位LEDLED。图(图(a)a)是显示过程,是显示过程,某一时刻,只有一位某一时刻,只有一位LEDLED被选通被选通 显示,其余位则是熄灭的;显示,其余位则是熄灭的;图(图(b)b)是实际显示结果,是实际显示结果,人眼看到的是人眼看到的是8 8位稳定位稳定的的 同时显示同时显示的字符。的字符。10.2 10.2 键盘接口原理键盘接口原理1. 1. 键盘输入的特点键盘输入的特点键盘:一组按键开关的集合键盘:一组按键开关的集合。 行线电压信号通过键盘开关机械触点的断开、闭合,行线电压信号通过键盘开关机械触点的断开、闭合,输出波形如图输出波形如图10-610-6。2. 2. 按键的确认按键的确认 检测检测行线行线电平电平 高电平:高电平:断开;断开;低电平低电平:闭合,:闭合,常用常用软件来消除按键抖动。软件来消除按键抖动。 基本思想基本思想:检测到有键按下,键对应的行线为低,软检测到有键按下,键对应的行线为低,软件延时件延时1010msms后,行线如仍为低,则确认该行有键按下。后,行线如仍为低,则确认该行有键按下。 当键松开时当键松开时,行线变高,软件延时,行线变高,软件延时1010msms后,行线仍为后,行线仍为高,说明按键已松开。高,说明按键已松开。采取以上措施,采取以上措施,躲开了两个抖动期躲开了两个抖动期t1t1和和t3t3的影响的影响。10.2.2 10.2.2 键盘接口的工作原理键盘接口的工作原理独立式独立式按键接口和按键接口和行列式行列式键盘接口。键盘接口。 各键相互独立,每个按键各接一根输入线,通过各键相互独立,每个按键各接一根输入线,通过检检测输入线的电平状态测输入线的电平状态可很容易判断那个键被按下。可很容易判断那个键被按下。此种接口此种接口适于键数较少适于键数较少或或操作速度较高操作速度较高的场合。的场合。图图10-710-7(a a)为为中断方式的独立式中断方式的独立式键盘工作电路键盘工作电路图图10-710-7(b b)为为查询方式的独立式查询方式的独立式键盘工作电路键盘工作电路。图图10-810-8为为82558255A A扩展扩展I/OI/O口口的的独立式独立式按键接口电路。按键接口电路。图图10-910-9用用三态缓冲器三态缓冲器扩展的扩展的I/OI/O口的按键接口电口的按键接口电路路。 对图对图10-910-9独立式键盘编程,软件消抖,查询方式检独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。测键的状态。仅有一键按下时才有效才处理。KEYIN:MOV DPTR,#0BFFFHKEYIN:MOV DPTR,#0BFFFH;键盘端口地址键盘端口地址BFFFHBFFFHMOVX A,DPTRMOVX A,DPTR;读键盘状态读键盘状态ANL A,#1FHANL A,#1FH;屏蔽高三位屏蔽高三位MOV R3,AMOV R3,A;保存键盘状态值保存键盘状态值LCALL DELAY10LCALL DELAY10;延时延时1010msms去键盘抖动去键盘抖动MOVX A,DPTRMOVX A,DPTR;再读键盘状态再读键盘状态ANL A,#1FHANL A,#1FH;屏蔽高三位屏蔽高三位 CJNE A,R3,RETURN CJNE A,R3,RETURN ;两次不同,抖动引起转两次不同,抖动引起转RETURNRETURNCJNE A,#1EH,KEY2 CJNE A,#1EH,KEY2 ;相等,有键按下,不等转相等,有键按下,不等转KEY2KEY2LJMP PKEY1LJMP PKEY1; ;是是K1K1键按下,转键按下,转K1K1键处理键处理 ;子程序子程序PKEY1PKEY1KEY2: CJNE A,#1DH,KEY3 ;S2KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转键未按下,转KEY3KEY3LJMP PKEY2LJMP PKEY2 ;S2 ;S2键按下,转键按下,转PKEY2PKEY2处理处理KEY3:KEY3: CJNE A,#1BH,KEY4CJNE A,#1BH,KEY4 ;S3;S3未按下,转未按下,转KEY4KEY4LJMP PKEY3 ;S3LJMP PKEY3 ;S3按下,转按下,转PKEY3PKEY3处理处理KEY4: CJNE A,#17H,KEY5 ;S4KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转键未按下,转KEY5KEY5LJMP PKEY4 ;S4LJMP PKEY4 ;S4按下,转按下,转PKEY4PKEY4处理处理KEY5:KEY5: CJNE A,#0FH,PASS ;S5CJNE A,#0FH,PASS ;S5未按下,转未按下,转RETURNRETURNLJMP PKEY5 ;S5LJMP PKEY5 ;S5按下,转按下,转PKEY5PKEY5处理处理RETURN:RET ;RETURN:RET ;重键或无键按下,从子程序返回重键或无键按下,从子程序返回识别和编程简单,识别和编程简单,用在按键数较少的场合。用在按键数较少的场合。2. 行列式行列式(矩阵式矩阵式)键盘接口键盘接口 用于按键数目较多的场合,用于按键数目较多的场合,由由行线和列线组成行线和列线组成,按键位于行、列的交叉点上。如图按键位于行、列的交叉点上。如图10-1010-10所示。所示。 按键数目较多的场合按键数目较多的场合,行列式键盘与独立式键盘,行列式键盘与独立式键盘相比,要相比,要节省很多的节省很多的I/OI/O口线口线。(1)行列式键盘工作原理)行列式键盘工作原理 无键按下,该行线为高电平,无键按下,该行线为高电平,当有键按下时,行当有键按下时,行线电平由列线的电平来决定线电平由列线的电平来决定。 由于行、列线为多键共用,各按键彼此将相互发由于行、列线为多键共用,各按键彼此将相互发生影响,必须生影响,必须将行、列线信号配合起来并作适当的处将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置理,才能确定闭合键的位置。(2 2)按键的识别方法按键的识别方法a. a. 扫描法扫描法 图图10-1010-10(b b)中中3 3号键被按下为例,来说明此键号键被按下为例,来说明此键时如何被识别出来的。时如何被识别出来的。识别键盘有无键被按下的方法,分两步进行:识别键盘有无键被按下的方法,分两步进行:第第1 1步:步:识别键盘有无键按下;识别键盘有无键按下;第第2 2步:步:如有键被按下,识别出具体的按键。如有键被按下,识别出具体的按键。 把所有列线置把所有列线置0 0,检查各行线电平是否有变化,如,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。有变化,说明有键按下,如无变化,则无键按下。 上述方法称为上述方法称为扫描法扫描法,即,即先把某一列置低电平,先把某一列置低电平,其余各列为高电平,检查各行线电平的变化其余各列为高电平,检查各行线电平的变化,如果某,如果某行线电平为低,可确定行线电平为低,可确定此行列交叉点此行列交叉点处的按键被按处的按键被按下。下。 b. b. 线反转法线反转法 只需两步便能获得此按键所在的行列值,线反转只需两步便能获得此按键所在的行列值,线反转法的原理如图法的原理如图10-1110-11。第第1 1步:步:列线输出为全低电平,则行线中电平由高变低列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。的所在行为按键所在行。第第2 2步:步:行线输出为全低电平,则列线中电平由高变低行线输出为全低电平,则列线中电平由高变低所在列为按键所在列。所在列为按键所在列。 结合上述两步,可确定按键所在行和列。结合上述两步,可确定按键所在行和列。(3 3)键盘的编码)键盘的编码 根据实际需要灵活编码。根据实际需要灵活编码。10.2.3 10.2.3 键盘的工作方式键盘的工作方式 单片机在忙于各项工作任务时,如何兼顾键盘的输单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。入,取决于键盘的工作方式。原则:原则:即要保证能及时响应按键操作,又不要过多占即要保证能及时响应按键操作,又不要过多占用用CPUCPU的工作时间。的工作时间。 通常,通常,键盘工作方式有键盘工作方式有3 3种种,即编程扫描、定时扫,即编程扫描、定时扫描和中断扫描。描和中断扫描。1. 1. 编程扫描方式编程扫描方式 只有当单片机空闲时,才调用键盘扫描子程序,只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。扫描键盘。工作过程:工作过程:(1 1)在键盘扫描子程序中,先判断有无键按下。)在键盘扫描子程序中,先判断有无键按下。方法:方法:PAPA口口8 8位位输出输出全全0 0,读读PCPC口口低低4 4位状态,若位状态,若PC0PC0PC3PC3为全为全1 1,则说明键盘无键按下;若不全为,则说明键盘无键按下;若不全为1 1,则说明,则说明键盘可能有键按下。键盘可能有键按下。(2 2)用软件来消除按键抖动的影响。如有键按下,则)用软件来消除按键抖动的影响。如有键按下,则进行下一步。进行下一步。(3 3)求按下键的键号。)求按下键的键号。(4 4)等待按键释放后,再进行按键功能的处理操作。)等待按键释放后,再进行按键功能的处理操作。2. 2. 定时扫描工作方式定时扫描工作方式 利用单片机内的定时器,产生利用单片机内的定时器,产生1010msms的定时中断,对的定时中断,对键盘进行扫描。键盘进行扫描。 只有在键盘有键按下时,才执行键盘扫描程序,如只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。无键按下,单片机将不理睬键盘。 键盘所做的工作分为三个层次键盘所做的工作分为三个层次,如图,如图10-1310-13。第第1 1层:层:单片机如何来监视键盘的输入。三种工作方单片机如何来监视键盘的输入。三种工作方 式:式:编程扫描编程扫描定时扫描定时扫描中断扫描。中断扫描。第第2 2层:层:确定具体按键的键号。体现在按键的识别方确定具体按键的键号。体现在按键的识别方 法上就是:法上就是:扫描法;扫描法;线反转法。线反转法。第第3 3层:层:执行键处理程序。执行键处理程序。10.3 10.3 键盘键盘/ /显示器接口设计实例显示器接口设计实例 一般把键盘和显示器放在一起考虑。一般把键盘和显示器放在一起考虑。10.3.1 10.3.1 利用并行利用并行I/OI/O芯片实现键盘芯片实现键盘/ /显示器接口显示器接口 图图10-1410-14:80318031用扩展用扩展I/OI/O接口芯片接口芯片81558155H H实现的实现的6 6位位LEDLED显示和显示和3232键的键盘键的键盘/ /显示器接口电路。图中显示器接口电路。图中81558155H H也可用也可用82558255A A来替代。来替代。 8031 8031外扩一片外扩一片81558155H H。RAMRAM地址:地址:7 7E00HE00H7EFFH7EFFH。I/OI/O口地址:口地址:7 7F00HF00H7F05H7F05H。 PAPA口口为输出口为输出口,控制键盘控制键盘列线的扫描列线的扫描,同时又是,同时又是6 6位共阴极显示器的位共阴极显示器的位扫描口位扫描口。 PBPB口口作为显示器段码输出口,作为显示器段码输出口,PCPC口作为键盘的行口作为键盘的行线状态的输入口。线状态的输入口。 75452 75452:反相驱动器,反相驱动器,74077407:同相驱动器。同相驱动器。1 1动态显示程序设计动态显示程序设计内部内部RAM RAM 6 6个显示缓冲单元:个显示缓冲单元:7979H H7EH7EH,存放要显示的存放要显示的 6 6位数据。位数据。81558155H H的的PBPB口输出相应位的段码,口输出相应位的段码,依次改变依次改变PAPA口输出为口输出为 高高的位的位使某一位显示某一字符,其它位为暗。使某一位显示某一字符,其它位为暗。动态地显示出由缓冲区中显示数据所确定的字符。程动态地显示出由缓冲区中显示数据所确定的字符。程 序流程如图序流程如图10-15 10-15 。参考程序参考程序:DIRDIR: MOV R0, MOV R0,79H79H;置缓冲器指针初值置缓冲器指针初值MOV R3,MOV R3,01H01H;位选码的初值送位选码的初值送R3R3MOV A,R3MOV A,R3LD0LD0: MOV DPTR, MOV DPTR,7F01H 7F01H ;位选码位选码PAPA口(位)口(位);最左边最左边LEDLED亮亮MOVX DPTR,AMOVX DPTR,AINC DPTRINC DPTR ;数据指针指向数据指针指向PBPB口口MOV A,R0 MOV A,R0 ;显示数据显示数据A AADD A,ADD A,0DH 0DH ;加偏移量(下条指令到表首间加偏移量(下条指令到表首间 ;所有指令占的单元数);所有指令占的单元数)MOVC A,AMOVC A,APC PC ;根据显示数据来查表取段码根据显示数据来查表取段码DIR1DIR1: MOVX DPTR,AMOVX DPTR,A ;段码段码81558155H H PBPB口口ACALL DL1ms ACALL DL1ms ;该位显示该位显示1 1msmsINC R0INC R0 ;指针指向下一个数据单元指针指向下一个数据单元MOV A,R3MOV A,R3 ;位选码送入位选码送入A A中中JB Acc.5,LD1 JB Acc.5,LD1 ;判断是否扫描到最右边的判断是否扫描到最右边的 ; LEDLED,如到最右边则返回如到最右边则返回RL A RL A ;位选码向左移一位,准备让位选码向左移一位,准备让 ; ; 右边的下一位右边的下一位LEDLED亮亮MOV R3,AMOV R3,A ;位选码位选码送送R3R3中保存中保存AJMP LD0 ;AJMP LD0 ;LD1LD1: RET ; RET ;DSEGDSEG: DB 3FH,06H,5BH,4FH,66H,6DH DB 3FH,06H,5BH,4FH,66H,6DH ;共阴极段码表共阴极段码表 DB 7DH,07H,7FH,6FH,77H,7CH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH DB 39H,5EH,79H,71H,73H,3EHDB 31H,6EH,1CH,23H,40H,03HDB 31H,6EH,1CH,23H,40H,03HDB 18H,00HDB 18H,00HDL1msDL1ms: MOV R7,MOV R7,02H02H;延时延时1 1msms子程序子程序DLDL: MOV R6,MOV R6,0FFH0FFHDL6DL6: DJNZ R6,DL6DJNZ R6,DL6DJNZ R7,DLDJNZ R7,DLRETRET2 2键盘程序设计键盘程序设计(1 1)判别键盘上有无键闭合)判别键盘上有无键闭合(2 2)去除键的机械抖动)去除键的机械抖动 (3 3)判别闭合键的键号)判别闭合键的键号(4 4)使)使CPUCPU对键的一次闭合仅作一次处理对键的一次闭合仅作一次处理 键盘程序的流程如图键盘程序的流程如图10-1610-16。键盘子程序如下:键盘子程序如下:KEYIKEYI:ACALL KS1ACALL KS1 ;调用判有无键闭合子程序调用判有无键闭合子程序JNZ LK1 JNZ LK1 ;有键闭合,跳有键闭合,跳LK1LK1NINI: ACALL DIR ACALL DIR ;无键闭合,调用显示子程序无键闭合,调用显示子程序, ,延延 ;迟;迟6 6msms后,跳后,跳KEYIKEYIAJMP KEYIAJMP KEYILK1LK1: ACALL DIR ACALL DIR ;可能有键闭合,软件延迟可能有键闭合,软件延迟1212msms去抖去抖ACALL DIRACALL DIRACALL KS1 ACALL KS1 ;调用判有无键闭合子程序调用判有无键闭合子程序JNZ LK2JNZ LK2 ;经去抖,判键确实闭合,跳经去抖,判键确实闭合,跳LK2LK2ACALL DIRACALL DIR;调用显示子程序延迟调用显示子程序延迟6 6msmsAJMP KEYIAJMP KEYI;抖动引起,跳抖动引起,跳KEYIKEYILK2LK2: MOV R2, MOV R2,0FEH0FEH ;列选码列选码R2R2MOV R4,MOV R4,00H00H;R4R4为列号计数器为列号计数器LK4LK4: MOV DPTR, MOV DPTR,7F01H 7F01H ;列选码列选码81558155H H的的PAPA口口MOV A,R2 ;MOV A,R2 ;MOVX DPTR,A ; MOVX DPTR,A ; INC DPTRINC DPTR ;数据指针增数据指针增2 2,指向,指向PCPC口口INC DPTR ;INC DPTR ;MOVX A,DPTRMOVX A,DPTR ;读读81558155H PCH PC口口JB Acc.0,LONEJB Acc.0,LONE ;0 0行线为高,无键闭合,跳行线为高,无键闭合,跳 LONE LONE,转判转判1 1行行MOV A,MOV A,00H00H ;0 0行有键闭合行有键闭合, ,首键号首键号00A AAJMP LKPAJMP LKP ;跳跳LKPLKP,计算键号计算键号LONELONE:JB Acc.1,LTW0 JB Acc.1,LTW0 ;1 1行线为高,无键闭合,跳行线为高,无键闭合,跳LTW0LTW0, ;转判;转判2 2行行MOV A,MOV A,08H 08H ;1 1行有键闭合行有键闭合, ,首键号首键号88A AAJMP LKPAJMP LKPLTW0LTW0:JB A.2,LTHR JB A.2,LTHR ;2 2行线为高,无键闭合,跳行线为高,无键闭合,跳 ;LTHRLTHR,转判转判3 3行行MOV A,MOV A,10H 10H ;2 2行有键闭合行有键闭合, ,首键号首键号1010HAHAAJMP LKPAJMP LKP;跳跳LKPLKP,计算键号计算键号LTHRLTHR:JB Acc.3,NEXT JB Acc.3,NEXT ;3 3行线为高,无键行线为高,无键;闭合,跳;闭合,跳NEXTNEXT,准备下一列扫描准备下一列扫描MOV A,MOV A,18H18H;3 3行有键闭合行有键闭合, ,首键号首键号1818HAHALKPLKP: ADD A,R4ADD A,R4 ;计算键号:首键号列号计算键号:首键号列号= =键号键号PUSH APUSH A ;键号进栈保护键号进栈保护LK3LK3: ACALL DIR ACALL DIR;调用显示子程序,延时调用显示子程序,延时6 6msmsACALL KS1ACALL KS1;调用判有无键闭合子程序,延时调用判有无键闭合子程序,延时;6 6msmsJNZ LK3 JNZ LK3 ;判键释放否,未释放,则循环判键释放否,未释放,则循环POP A POP A ;键已释放,键号出栈键已释放,键号出栈A ARETRETNEXTNEXT:INC R4 INC R4 ;列计数器加列计数器加1 1,为下一列扫描作准备,为下一列扫描作准备MOV A,R2 MOV A,R2 ;判是否已扫到最后一列(最右一列)判是否已扫到最后一列(最右一列)JNB Acc.7,KND JNB Acc.7,KND ;键扫描已扫到最后一列,跳键扫描已扫到最后一列,跳KNDKND, ;重新进行整个键盘扫描;重新进行整个键盘扫描RL A RL A ;键扫描未扫到最后一列,位选码左移键扫描未扫到最后一列,位选码左移;一位;一位MOV R2,A MOV R2,A ;位选码位选码R2R2AJMP LK4 ;AJMP LK4 ;KNDKND: AJMP KEYI ; AJMP KEYI ;KS1KS1: MOV DPTR ,#7F01H MOV DPTR ,#7F01H;判有无键闭合子程序,全判有无键闭合子程序,全“0”“0” ;扫描口(;扫描口(PAPA口)口)MOV A,MOV A,00H00H ;即列线全为低电平即列线全为低电平MOVX DPTR,A ;MOVX DPTR,A ;INC DPTRINC DPTR ;DPTRDPTR增增2 2,指向,指向PCPC口口INC DPTRINC DPTR ;指针增指针增1 1,指向,指向PCPC口口MOVX A,DPTR MOVX A,DPTR ;从从PCPC口读行线的状态口读行线的状态CPL A CPL A ;行线取反,如行线取反,如无键按下,则无键按下,则A A为为0 0;ANL A,ANL A,0FH 0FH ;屏蔽无用的高屏蔽无用的高4 4位位RETRET10.3.2 10.3.2 利用利用80318031的串行口实现键盘的串行口实现键盘/ /显示器接口显示器接口 串口未作它用,可用来外扩键盘串口未作它用,可用来外扩键盘/ /显示器。显示器。 串口为方式串口为方式0 0输出,串口外接移位寄存器输出,串口外接移位寄存器7474LS164LS164。接口电路如图接口电路如图10-1710-17。 74 74LS164(0)LS164(0)74LS164(7):74LS164(7):作为作为8 8位位LEDLED的段码输出,的段码输出, 8031 8031的:的:两行键的行状态输入两行键的行状态输入 P3.3 P3.3(TXDTXD):同步移位脉冲输出控制线,同步移位脉冲输出控制线, 优点:优点:亮度大亮度大,容易做到,容易做到显示不闪烁显示不闪烁,且,且CPUCPU不必不必频繁的为显示服务频繁的为显示服务,从而使单片机有更多的时间处理,从而使单片机有更多的时间处理其它事务。其它事务。 显示子程序:显示子程序:DIRDIR: SETB P3.3 SETB P3.3 ;P3.3=1P3.3=1允许允许TXDTXD脚同步移位脚同步移位 ;脉冲输出;脉冲输出MOV R7,MOV R7,08H 08H ;送出的段码个数,送出的段码个数,R7R7为段为段 ;码个数计数器;码个数计数器MOV R0,MOV R0,7FH 7FH ;7FH7FH78H78H为显示数据缓冲区为显示数据缓冲区DL0DL0: MOV A,R0 MOV A,R0 ;取出要显示的数送取出要显示的数送A AADD A,ADD A,0DH 0DH ;加上偏移量加上偏移量MOVC A,AMOVC A,APC PC ;查段码表查段码表SEGTAGSEGTAG,取出段码取出段码MOV SBUF ,A MOV SBUF ,A ;将段码送将段码送SBUFSBUF DL1DL1: JNB TI,DL1 JNB TI,DL1;输出段码,查询输出段码,查询TITI状态,状态,1 1个字节个字节;的段码输出完否?;的段码输出完否?CLR TI CLR TI ;1 1个字节的段码输出完个字节的段码输出完, ,清清TITI标志标志DEC R0DEC R0;指向下一个显示数据单元指向下一个显示数据单元 DJNZ R7,DL0DJNZ R7,DL0;段码个数计数器段码个数计数器R7R7是否为是否为0, 0, 如不如不; ; 为为0 0,继续送段码,继续送段码CLR P3.3 CLR P3.3 ;8 8个段码输出完毕,关显示器输出个段码输出完毕,关显示器输出RET RET ;返回返回SEGTABSEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99HDB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极段码表,共阳极段码表, ;0,1,2,3,40,1,2,3,4DB 92H,82H,0F8H,90HDB 92H,82H,0F8H,90H;5,6,7,8,95,6,7,8,9DB 88H,83H,0C6H,0A1H,86HDB 88H,83H,0C6H,0A1H,86H;A,B,C,D,EA,B,C,D,EDB 8FH,0BFH,8CH,0FFH,0FFHDB 8FH,0BFH,8CH,0FFH,0FFH;F,F,P,P,暗暗 键盘扫描子程序:键盘扫描子程序:KEYIKEYI:MOV A,MOV A,00H00H;判有无键按下,使所有列线为判有无键按下,使所有列线为0 0;的编码送;的编码送A AMOV SBUF,AMOV SBUF,A;扫描键盘的(扫描键盘的(8 8)号)号7474LS164LS164输输;出为;出为0000H,H,使使所有列线为所有列线为0 0KL0KL0: JNB TI,KL0 JNB TI,KL0;串行输出完否?串行输出完否?CLR TICLR TI;串行输出完毕,清串行输出完毕,清TITIKL1KL1: JNB P3.4,PK1 JNB P3.4,PK1;第第1 1行有闭合键吗?如有,跳行有闭合键吗?如有,跳;PK1PK1进行处理进行处理JB P3.5,KL1JB P3.5,KL1;在第在第2 2行键中有闭合键吗?无闭行键中有闭合键吗?无闭;合键跳;合键跳KL1KL1PK1PK1: ACALL DL10 ACALL DL10;调用延时调用延时1010msms子程序子程序DL10DL10,软软;件消除抖动;件消除抖动JNB P3.4,JNB P3.4,PK2PK2;判是否抖动引起的?判是否抖动引起的?JB P3.5,KL1 JB P3.5,KL1 ;不是抖动引起的,往下执行不是抖动引起的,往下执行PK2PK2: MOV R7MOV R7, ,08H08H ;R7R7为列计数器,扫一列减为列计数器,扫一列减1 1MOV R6,MOV R6,0FEH0FEH;判别是哪一个键按下,判别是哪一个键按下,FEHFEH为最为最;左一列为低;左一列为低MOV R3,MOV R3,00H 00H ;R3R3为列号寄存器为列号寄存器MOV A,R6MOV A,R6 ;KL5KL5: MOV SBUF,A MOV SBUF,A;列扫描码从串行口输出列扫描码从串行口输出KL2KL2: JNB TI,KL2 JNB TI,KL2;等待串行口发送完等待串行口发送完CLR TICLR TI;串行口发送完毕,清串行口发送完毕,清TITI标志标志JNB P3.4,PKONEJNB P3.4,PKONE;读第读第1 1行线状态,第行线状态,第1 1行有键闭行有键闭;合,跳;合,跳PKONEPKONE处理处理JB P3.5,NEXT JB P3.5,NEXT ;读第读第2 2行状态,是第行状态,是第2 2行某键否?行某键否?MOV R4MOV R4, ,08H08H;第第2 2行键中有键被按下,行首键行键中有键被按下,行首键;号;号0808H H送送R4R4AJMP PK3 ;AJMP PK3 ;PKONEPKONE:MOV R4MOV R4, ,00H00H ;第第1 1行有键按下,行首键号行有键按下,行首键号0000H H送送R4R4PK3PK3: MOV SBUF, MOV SBUF,00H 00H ;等待键释放,发送等待键释放,发送0000H H使所有列使所有列 ;线为低;线为低KL3KL3: JNB TI,KL3 ; JNB TI,KL3 ;CLR TICLR TI ;发送完毕,清标志发送完毕,清标志KL4KL4: JNB P3.4,KL4 JNB P3.4,KL4 ;判行线状态判行线状态JNB P3.5,KL4 ;JNB P3.5,KL4 ;MOV A,R4MOV A,R4 ;两行线均为高,说明键已释放两行线均为高,说明键已释放 ADD A,R3ADD A,R3 ;计算得到键码计算得到键码A ARETRETNEXTNEXT: MOV A,R6 MOV A,R6 ;列扫描码左移一位,判下列键列扫描码左移一位,判下列键RL A ;RL A ;MOV R6,AMOV R6,A ;记住列扫描码于记住列扫描码于R6R6中中INC R3INC R3 ;列号增列号增1 1DJNZ R7,KL5DJNZ R7,KL5 ;列计数器列计数器R7R7减减1 1,8 8列键都检查列键都检查 ;完?;完?AJMP KEYIAJMP KEYI ;8 8列键扫描完毕,开始下一个键列键扫描完毕,开始下一个键;盘扫描周期;盘扫描周期DL10DL10: MOV R7, MOV R7,0AH0AH;延时延时1010msms子程序子程序DLDL: MOV R6, MOV R6,0FFH0FFHDL6DL6: DJNZ R6,DL6 DJNZ R6,DL6DJNZ DJNZ R7,DLR7,DLRETRET10.3.3 10.3.3 利用通用键盘利用通用键盘/ /显示器接口芯片显示器接口芯片82798279实现键盘实现键盘/ / 显示器接口显示器接口 Intel Intel 82798279芯片:芯片:通用可编程键盘通用可编程键盘/ /显示器接口芯片。显示器接口芯片。 对键盘部分提供扫描工作方式,能对对键盘部分提供扫描工作方式,能对6464个个键键盘阵键键盘阵列不断扫描,列不断扫描,自动消抖自动消抖,自动识别出闭合的键自动识别出闭合的键并并得到键得到键号号,能对,能对双键或双键或N N键同时按下键同时按下进行处理。进行处理。扫描方式的显示接口,可显示多达扫描方式的显示接口,可显示多达1616位位的字符。的字符。1.82791.8279的引脚及内部结构的引脚及内部结构 2. 2. 引脚功能介绍引脚功能介绍(1)(1)与与CPUCPU的接口引脚的接口引脚 DB0 DB0DB7DB7:数据总线、双向、三态,与单片机数据数据总线、双向、三态,与单片机数据 总线相连,在总线相连,在CPUCPU和和82798279之间传送命令或数据。之间传送命令或数据。 CLK CLK:系统时钟,用于系统时钟,用于82798279内部定时,以产生其工作内部定时,以产生其工作 所需的时序。所需的时序。 RESET RESET:高电平时,高电平时,82798279被复位,被复位,复位后的状态如下复位后的状态如下:* * 1616个字符左边输入显示方式个字符左边输入显示方式* * 编码扫描键盘、双键锁定方式编码扫描键盘、双键锁定方式 CS CS* *:片选片选 A0 A0:=1=1,写入写入的是的是命令命令字节字节; ; 读出读出的是的是状态状态字节。字节。 =0 =0,写入或读出的字节均为,写入或读出的字节均为数据数据。 RD RD* *、WRWR* *:读、写控制引脚读、写控制引脚 IRQ IRQ:中断请求线。在键盘方式中,当键盘中断请求线。在键盘方式中,当键盘RAMRAM(先先进先出)中进先出)中存有按下键的数据时,存有按下键的数据时,IRQIRQ为高电平为高电平,向,向CPUCPU提出中断申请。提出中断申请。(2 2)扫描信号输出引脚扫描信号输出引脚 CPUCPU每次从键盘每次从键盘RAMRAM中读出一个字节数据时,中读出一个字节数据时,IRQIRQ就变就变为低电平。为低电平。如果键盘如果键盘RAMRAM中还有未读完的数据,中还有未读完的数据,IRQIRQ将将再次变为高电平,再次提出中断请求。再次变为高电平,再次提出中断请求。 SL0 SL0SL3SL3 扫描输出。用来扫描键盘和显示器。可编程设定扫描输出。用来扫描键盘和显示器。可编程设定为为编码输出编码输出,即,即SL0SL0SL3SL3需外接需外接4-164-16译码器,输出译码器,输出1616取取1 1的扫描信号,也可编程设定为的扫描信号,也可编程设定为译码输出译码输出,即由,即由SL0SL0SL3SL3直接输出直接输出4 4取取1 1的扫描信号。的扫描信号。(3 3)与键盘连接的引脚)与键盘连接的引脚 RL0 RL0RL7RL7 键盘矩阵的行信号输入线。键盘矩阵的行信号输入线。 SHIFT SHIFT 输入线,通常用作键盘上、下档功能的控制键。输入线,通常用作键盘上、下档功能的控制键。 CNTL/STB CNTL/STB 输入线,高电平有效。在键盘方式时,通常用来输入线,高电平有效。在键盘方式时,通常用来作为键盘控制功能键使用。作为键盘控制功能键使用。(4 4)与显示器连接的引脚)与显示器连接的引脚 OUTA0 OUTA0OUTA3OUTA3(A A组显示数据)组显示数据)、OUTB0OUTB0OUTB3OUTB3(B B组显示数据)组显示数据): :向向LEDLED显示器输出的段码显示器输出的段码, , 与扫描信号与扫描信号线线SL0SL0SL3SL3同步。两组可独立使用,也可合并使用。同步。两组可独立使用,也可合并使用。 BD BD* *: :消隐显示控制消隐显示控制。3. 82793. 8279的基本功能部件的基本功能部件(1 1)扫描计数器)扫描计数器编码方式编码方式: :扫描线扫描线SL0SL0SL3SL3输出,经外部输出,经外部4-164-16译码器译码器译码后,为键盘和显示器提供译码后,为键盘和显示器提供1616取取1 1的扫描线。的扫描线。译码方式译码方式: :计数器的最低二位在计数器的最低二位在82798279内部译码后,从内部译码后,从SL0SL0SL3SL3输出,为键盘和显示器提供输出,为键盘和显示器提供4 4取取1 1扫描线。扫描线。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0CNTLCNTLSHIFTSHIFT扫扫 描描回回 复复(2 2)键盘去抖动及回复缓冲器)键盘去抖动及回复缓冲器 RL0 RL0RL7RL7被接到键盘的行线。被接到键盘的行线。 在逐列扫描时,当某一键闭合,消抖电路延时等在逐列扫描时,当某一键闭合,消抖电路延时等待待1010msms之后,再检验该键是否仍闭合。若闭合,则该之后,再检验该键是否仍闭合。若闭合,则该键的行、列地址和附加的移位、控制状态一起形成键键的行、列地址和附加的移位、控制状态一起形成键盘数据,送入盘数据,送入82798279内部的键盘内部的键盘RAMRAM存储器。格式为:存储器。格式为: 控制(控制(CNTLCNTL)和和移位(移位(SHIFTSHIFT)的状态由两个独立的状态由两个独立的附加开关决定,而的附加开关决定,而扫描扫描(D5D5、D4D4、D3D3)是被按键的是被按键的列列编码,而编码,而回复回复(D2D2、D1D1、D0D0)则是被按键的则是被按键的行行位置位置数据。数据。(3 3)键盘)键盘RAMRAM及其状态寄存器及其状态寄存器键盘键盘RAMRAM:8 8字节先进先出(字节先进先出(FIFOFIFO)存储器。内部的存储器。内部的FIFOFIFO状态寄存器状态寄存器存放存放FIFOFIFO的工作状态,如的工作状态,如FIFOFIFO是空还是满,是空还是满,其中存有多少字符,是否操作出错等等。其中存有多少字符,是否操作出错等等。 当当FIFOFIFO存储器空间不足时,状态逻辑将产生存储器空间不足时,状态逻辑将产生IRQ=1IRQ=1信号,向信号,向CPUCPU发出中断申请。发出中断申请。(4 4)显示)显示RAMRAM和显示地址寄存器和显示地址寄存器显示显示RAMRAM:存显示数据。存显示数据。1616个字节,可存放个字节,可存放1616位显示信位显示信息。显示息。显示RAMRAM的输出与显示扫描配合,同时轮流驱动被的输出与显示扫描配合,同时轮流驱动被选中的显示位,使显示器呈现稳定的显示(动态扫描)。选中的显示位,使显示器呈现稳定的显示(动态扫描)。4. 82794. 8279的命令字和状态字的命令字和状态字命令字:命令字:D7D7、D6D6、D5D5为命令特征位,来区分为命令特征位,来区分8 8条条不同不同的命令字。的命令字。 状态字:状态字:主要用于键盘工作方式,以指示键盘主要用于键盘工作方式,以指示键盘RAMRAM中中的字符数和有无错误发生。的字符数和有无错误发生。5. 82795. 8279与键盘与键盘/ /显示器的接口显示器的接口 图图10-2010-20为为82798279与与8 8位显示器,位显示器,4848键盘键盘的接口电路。的接口电路。行线接行线接82798279的的RL0RL0RL3RL3,82798279选用外部译码方式,选用外部译码方式,SL0SL0SL2SL2经经7474LS138LS138(1 1)译码输出,接列线,实现键盘逐译码输出,接列线,实现键盘逐列扫描。列扫描。 SL0 SL0SL2SL2又由又由7474LS138(2)LS138(2)译码输出到显示器各位的公译码输出到显示器各位的公共阴极,进行逐位扫描显示。共阴极,进行逐位扫描显示。OUTB0OUTB03 3、OUTA 0OUTA 03 3输输出出8 8位段码。位段码。 当位切换时,当位切换时,BDBD* *输出为低电平,使输出为低电平,使7474LS138(2)LS138(2)输出输出全为高电平,显示消隐。全为高电平,显示消隐。 当键盘上出现有效的闭合键时,键输入数据自动进入当键盘上出现有效的闭合键时,键输入数据自动进入中断读取键盘中断读取键盘RAMRAM中的键输入数据。若要更新显示器输中的键输入数据。若要更新显示器输出,仅需改变出,仅需改变82798279中显示中显示RAMRAM中的内容。中的内容。 图图10-20:10-20:82798279的的命令命令/ /状态口地址为状态口地址为7 7FFFHFFFH,数据口数据口地址为地址为7 7FFEHFFEH。 82798279初始化程序:初始化程序:INITI: SETB EX1INITI: SETB EX1 ; ; 允许外部中断允许外部中断1 1中断中断MOVMOV DPTR,#7FFFH ; DPTR,#7FFFH ; 命令命令/ /状态口地址写入状态口地址写入DPTRDPTRMOVMOV A,#0D1H A,#0D1H ; ; 控制字控制字D1HD1H送送A AMOVX DPTR,AMOVX DPTR,A ; ; 向命令向命令/ /状态口写入控制字状态口写入控制字LP: MOVX A,DPTRLP: MOVX A,DPTR ; ; 读读82798279的状态的状态JBJB Acc.7,LP Acc.7,LPMOVMOV A,#00H A,#00HMOVX DPTR,AMOVX DPTR,A82798279的键盘的键盘RAMRAM存储器,并向存储器,并向80318031请求中断,请求中断,80318031响应响应MOV A,MOV A,2AH2AHMOVX DPTR,AMOVX DPTR,ASETB EASETB EA键输入中断服务程序:键输入中断服务程序:PINT1PINT1:PUSH PSWPUSH PSWPUSH DPHPUSH DPHPUSH DPLPUSH DPLPUSH AccPUSH AccMOV DPTR,MOV DPTR,7FFFH 7FFFH ;向命令口写入读键盘向命令口写入读键盘RAMRAM命令命令MOV A,MOV A,40H40HMOVX DPTR,AMOVX DPTR,AMOV DPTR,MOV DPTR,7FFEH 7FFEH ;读键输入值读键输入值MOVX A,DPTRMOVX A,DPTRCJNE A,CJNE A,37H,PRI1 37H,PRI1 ;判输入停机命令否判输入停机命令否SETB 20HSETB 20HPRI1PRI1:POP AccPOP AccPOP DPLPOP DPLPOP DPHPOP DPHPOP PSWPOP PSWRETIRETI显示子程序:显示子程序:DIRDIR: MOV DPTR, MOV DPTR,7FFFH 7FFFH ;输出写显示输出写显示RAMRAM命令命令MOV A,MOV A,90H90HMOVX DPTR,AMOVX DPTR,AMOV R0,MOV R0,70H70HMOV R7,MOV R7,08H08H;送显示送显示RAMRAM数据的个数数据的个数 MOV DPTR,MOV DPTR,7FFEH7FFEHDL0DL0: MOV A,R0 MOV A,R0ADD A,ADD A,05H05H;05H05H为查表偏移量为查表偏移量MOVC A,A+PC MOVC A,A+PC ;查表得到段码查表得到段码MOVX DPTR,A MOVX DPTR,A ;写入显示写入显示RAMRAMINC R0INC R0;显示数据单元地址增显示数据单元地址增1 1DJNZ R7,DL0DJNZ R7,DL0;8 8个显示数据是否输出完毕个显示数据是否输出完毕RETRETADSEGADSEG:DB 3FH,06H,5BH,4FH,66H,6DH DB 3FH,06H,5BH,4FH,66H,6DH ;段码表(共阴极)段码表(共阴极) DB 7DH,07H,7FH,6FH,77H,7CHDB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH DB 39H,5EH,79H,71H,73H,3EH DB 31H,6EH,1CH,23H,40H,03H DB 31H,6EH,1CH,23H,40H,03H DB 18H,38H,00H DB 18H,38H,00H10.4 10.4 MCS-51MCS-51与液晶显示器(与液晶显示器(LCDLCD)的接口的接口 LCD LCD(Liquid Crystal DisplayLiquid Crystal Display):液晶显示器:液晶显示器的缩写,的缩写,被动式被动式显示器显示器- -液晶液晶本身并不发光本身并不发光,而是经液,而是经液晶经过处理后能晶经过处理后能改变光线通过方向改变光线通过方向的特性,而达到的特性,而达到白白底黑字底黑字或或黑底白字黑底白字显示的目的。显示的目的。 液晶显示器具有液晶显示器具有功耗低功耗低、抗干扰能力强抗干扰能力强等优点,等优点,广泛用在仪器仪表和控制系统中。广泛用在仪器仪表和控制系统中。10.4.1 10.4.1 LCDLCD显示器的分类显示器的分类按排列形状分:按排列形状分:字段型字段型、点阵字符型点阵字符型和和点阵图形点阵图形。(1 1)字段型)字段型 广泛用于电子表、数字仪表、计算器中。广泛用于电子表、数字仪表、计算器中。(2 2)点阵字符型)点阵字符型 显示字母、数字、符号。它是由显示字母、数字、符号。它是由5757或或510510点阵点阵组成,广泛应用在单片机应用系统中。组成,广泛应用在单片机应用系统中。(3 3)点阵图形型)点阵图形型 笔记本电脑和彩色电视等设备中。笔记本电脑和彩色电视等设备中。10.4.2 10.4.2 点阵字符型液晶显示模块介绍点阵字符型液晶显示模块介绍 点阵字符型点阵字符型LCDLCD显示器,需相应的显示器,需相应的LCDLCD控制器、驱控制器、驱动器,来对动器,来对LCDLCD显示器进行扫描、驱动,以及一定空显示器进行扫描、驱动,以及一定空间的间的RAMRAM和和ROMROM来存储写入的命令和显示字符的点阵。来存储写入的命令和显示字符的点阵。 现在已现在已将将LCDLCD控制器、驱动器、控制器、驱动器、RAMRAM、ROMROM和和LCDLCD显显示器用示器用PCBPCB连接到一起,连接到一起,称为称为液晶显示模块液晶显示模块LCMLCM(LCd (LCd Module)Module)。 用户只向用户只向LCMLCM送入相应的命令和数据就可实现所需要送入相应的命令和数据就可实现所需要的显示内容,与单片机接口简单,使用灵活方便。产的显示内容,与单片机接口简单,使用灵活方便。产品分为字符和图形两种。品分为字符和图形两种。(1 1)液晶板)液晶板 在液晶板上排列着若干在液晶板上排列着若干5757或或510510点阵的字符显点阵的字符显示位,从示位,从规格上分为每行规格上分为每行8 8、1616、2020、2424、3232、4040位,位,有一行、两行及四行三类,有一行、两行及四行三类,用户可根据需要,来选择用户可根据需要,来选择购买。购买。(2 2)模块电路框图)模块电路框图 由由控制器控制器HD44780HD44780、驱动器驱动器HD44100HD44100及几个电阻电及几个电阻电容组成。容组成。HD44100HD44100是扩展显示字符位用的(例如:是扩展显示字符位用的(例如:1616字字符符11行模块就可不用行模块就可不用HD44100HD44100,1616字符字符22行模块就要行模块就要用一片用一片HD44100HD44100)。)。引线号引线号符号符号名称名称功能功能1 1V VSSSS地地0 0V V2 2V VDDDD电源电源5 5V5%V5%3 3V VEEEE液晶驱动电压液晶驱动电压4 4RSRS寄存器选择寄存器选择1:1:数据寄存器;数据寄存器;0 0:命令命令寄存器寄存器5 5R/WR/W*读读/ /写写1 1:读;:读; 0 0:写:写6 6E E使能使能下降沿触发下降沿触发7 7 1414DB0DB0 DB7DB78 8位数据线位数据线数据传输数据传输表表1010-2 -2 液晶显示模块的引脚液晶显示模块的引脚 模块模块1414个引脚个引脚,其中有,其中有8 8条条数据线,数据线,3 3条条控制线,控制线,3 3条条电源线,见表电源线,见表10-10-2 2。通过单片机写入模块的数据和。通过单片机写入模块的数据和指令,就可对显示方式和显示内容作出选择。指令,就可对显示方式和显示内容作出选择。RSRSR/WR/W* *操操 作作0 00 0命令寄存器写入命令寄存器写入0 01 1忙标志和地址计数器读出忙标志和地址计数器读出1 10 0数据寄存器写入数据寄存器写入1 11 1数据寄存器读出数据寄存器读出表表1010-3 -3 寄存器的选择寄存器的选择2.命令格式及命令功能说明命令格式及命令功能说明 (1) (1) 命令格式命令格式控制器控制器HD44780HD44780内有多个寄存器,如表内有多个寄存器,如表10-10-3 3所示。所示。 RS RS位和位和R/WR/W* *引脚引脚上的电平来选择寄存器,而上的电平来选择寄存器,而DB7DB7DB0DB0则决定命令功能。则决定命令功能。 命令共命令共1111种种:清除,返回,输入方式设置,显示清除,返回,输入方式设置,显示开关控制,移位控制,功能设置,开关控制,移位控制,功能设置,CGRAMCGRAM(字符生成字符生成RAMRAM)地址设置,地址设置,DDRAMDDRAM(显示数据显示数据RAMRAM)地址设置,地址设置,读忙标志和地址,写数据到读忙标志和地址,写数据到CGRAMCGRAM或或DDRAMDDRAM,从从CGRAMCGRAM或或DDRAMDDRAM读数据。读数据。 这些命令功能强:可组合成各种输入、显示、移这些命令功能强:可组合成各种输入、显示、移位方式以满足不同的要求。位方式以满足不同的要求。(2 2)标准字符库)标准字符库 图图10-2310-23:字符库的内容、字符码和字型的对应字符库的内容、字符码和字型的对应关系。例如关系。例如“A”A”的字符码为的字符码为4141H H,“B”“B”的字符码为的字符码为4242H H。10.4.3 803110.4.3 8031与与LCDLCD的接口及软件编程的接口及软件编程LCDLCD模块的接口模块的接口 接口电路见图接口电路见图10-2410-24。将。将LCMLCM挂接在挂接在80318031的总线的总线上,通过对数据总线的读写实现对上,通过对数据总线的读写实现对LCMLCM的控制。的控制。(1)(1)初始化初始化 用户所编的显示程序,开始必须进行初始化,否用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示。则模块无法正常显示。(2)(2)显示程序编写显示程序编写( (自己阅读自己阅读) ) 10.5 10.5 MCS-51MCS-51与微型打印机的接口与微型打印机的接口 内部有一个控制用单片机,固化有控打程序,智内部有一个控制用单片机,固化有控打程序,智能化程度高。能化程度高。 常用的微型打印机:常用的微型打印机:TPP-40A/16ATPP-40A/16A、GP16GP16以及以及XLFXLF嵌入仪器面板上的汉字微型打印机。嵌入仪器面板上的汉字微型打印机。10.5.1 10.5.1 MCS-51MCS-51与与TPP-40A/16ATPP-40A/16A微型打印机的接口微型打印机的接口1. 1. TPP-40A/16ATPP-40A/16A微型打印机微型打印机 单片机控制的微型智能打印机。单片机控制的微型智能打印机。TPP-40ATPP-40A与与TPP-16ATPP-16A的接口信号与时序完全相同,操作方式相的接口信号与时序完全相同,操作方式相近,硬件电路及插脚完全兼容,只是指令代码不完全近,硬件电路及插脚完全兼容,只是指令代码不完全相同。相同。TPP-40ATPP-40A每行打印每行打印4040个字符,个字符,TPP-16ATPP-16A则每则每行打印行打印1616个字符。个字符。2. 2. 主要性能、接口要求及时序主要性能、接口要求及时序(1)(1)TPP-40ATPP-40A主要技术性能主要技术性能 单片机控制单片机控制, 2, 2KBKB控打程序及标准的控打程序及标准的CentronicsCentronics并并 行接口。行接口。 可打印全部可打印全部ASCIIASCII代码字符及代码字符及128128个非标准字符和图个非标准字符和图 符。符。1 61 6个代码字符(个代码字符(6767点阵)由用户定义。点阵)由用户定义。 可打印出可打印出82408240点阵的图样(汉字或图案点阵)。点阵的图样(汉字或图案点阵)。 字符、图符和点阵图可在字符、图符和点阵图可在宽和高的方向放大为宽和高的方向放大为22、 3 3、44倍。倍。 每行字符的点行数(包括字符的行间距)可用命令每行字符的点行数(包括字符的行间距)可用命令 更换。即字符行间距空点行在更换。即字符行间距空点行在0 0256256间任选。间任选。2 2接口信号接口信号 采用采用国际上流行的国际上流行的CentronicsCentronics打印机并行接口打印机并行接口,与单片机间是通过一条与单片机间是通过一条2020芯扁平电缆及接插件相连。芯扁平电缆及接插件相连。打印机有一个打印机有一个2020线扁平插座,信号引脚排列如图线扁平插座,信号引脚排列如图10-10-2626所示。所示。引脚介绍引脚介绍: : DB0 DB0DB7DB7:数据线数据线, ,单向传输,由单片机输入给打单向传输,由单片机输入给打 印机。印机。 STB STB* *:数据选通信号。在该信号的上升沿时,数据数据选通信号。在该信号的上升沿时,数据 线上的线上的8 8位并行数据被打印机读入机内锁存。位并行数据被打印机读入机内锁存。 BUSY BUSY:打印机打印机“忙忙”状态信号。当该信号有效(高电状态信号。当该信号有效(高电平)时平)时, ,表示打印机正忙。此时表示打印机正忙。此时, ,单片机不得向打印机单片机不得向打印机送入新的数据。送入新的数据。 ACK ACK* *:打印机的应答信号。低电平有效打印机的应答信号。低电平有效, ,表明打印表明打印机已取走数据线上的数据。机已取走数据线上的数据。 ERR ERR* *:“出错出错”信号。当送入打印机的命令格式出错信号。当送入打印机的命令格式出错时时, ,打印机立即打印一行出错信息打印机立即打印一行出错信息, ,提示出错。在打印提示出错。在打印出错信息之前,该信号线出现一个负脉冲,脉冲宽度出错信息之前,该信号线出现一个负脉冲,脉冲宽度为为3030ss。3 3接口信号时序接口信号时序接口信号时序如图接口信号时序如图10-2710-27所示。所示。 选通信号选通信号STBSTB* *ss。应答信号应答信号ACKACK* *可可与与STBSTB* *信号作为信号作为一对应答联络信号一对应答联络信号,也可与,也可与BUSYBUSY作为一作为一对应答联络信号。对应答联络信号。2. 2. 字符代码及打印命令字符代码及打印命令写入的全部代码共写入的全部代码共256256个,其中个,其中0000H H无效。无效。代码:代码:0101H H0FH0FH为打印命令;为打印命令;代码:代码:1010H H1FH1FH为用户自定义代码;为用户自定义代码;代码:代码:2020H H7FH7FH为标准为标准ASCIIASCII代码;代码;代码:代码:8080H HFFHFFH为非为非ASCIIASCII代码,代码,如图如图10-2810-28所示。其所示。其 中包括少量汉字、希腊字母、块图图符和一些中包括少量汉字、希腊字母、块图图符和一些 特殊字符。特殊字符。3. 3. TPP-40A/16ATPP-40A/16A与与MCS-51MCS-51单片机接口设计单片机接口设计 TPP-40A/16A TPP-40A/16A内部控制电路由单片机构成,在输内部控制电路由单片机构成,在输入电路中有锁存器,在输出电路中有三态门控制。因此入电路中有锁存器,在输出电路中有三态门控制。因此可直接与单片机相接。可直接与单片机相接。 TPP-40A/16A TPP-40A/16A只有握手线只有握手线STBSTB* * 、BUSYBUSY(或或ACKACK* *), ,接口电路如图接口电路如图10-2910-29所示。所示。 图图10-3010-30:并行并行I/OI/O口连接的打印机接口电路。图中口连接的打印机接口电路。图中的扩展的扩展I/OI/O口为口为82558255A A的的PAPA口,采用口,采用查询法查询法,即通过,即通过读读82558255A A 的的PC0PC0脚的状态来判断送给打印机的一个字节的脚的状态来判断送给打印机的一个字节的数据是否处理完毕数据是否处理完毕。也可用中断法(。也可用中断法(BUSYBUSY直接与单片机直接与单片机的脚相连)。的脚相连)。例例 把把MCS-51MCS-51单片机内部单片机内部RAM 3FHRAM 3FH4FH4FH单元中的单元中的ASCIIASCII码码数据送到打印机。数据送到打印机。82558255A A设置为方式设置为方式0 0,即端口,即端口A A与端口与端口C C的上半部为输出方式。端口的上半部为输出方式。端口C C的下半部为输入方式。的下半部为输入方式。打印程序如下:打印程序如下:PRINT:PRINT:MOV R0,#7FH MOV R0,#7FH ;控制口地址控制口地址R0R0MOV A ,#81H MOV A ,#81H ;8255A8255A控制字控制字A AMOVX R0,A MOVX R0,A ;控制字控制字控制口控制口MOV R1,#3FHMOV R1,#3FH;数据区首地址数据区首地址R1R1MOV R2,#0FH MOV R2,#0FH ;打印数据个数的计数;打印数据个数的计数LOOP: LOOP: MOV A,R1 MOV A,R1 ;打印数据单元内容打印数据单元内容A AINC R1 INC R1 ;指向下一个数据单元指向下一个数据单元MOV R0,#7CH MOV R0,#7CH ;8255A8255A的端口的端口A A地址地址R0R0 MOVX R0,A MOVX R0,A ;打印数据送打印数据送82558255A A的口的口A A并并 锁存锁存MOV R0,#7FH MOV R0,#7FH ;8255A8255A的控制口地址的控制口地址R0R0MOV A,#0EH MOV A,#0EH ;PC7PC7的复位控制字的复位控制字A AMOVX R0,A MOVX R0,A ;PC7=0PC7=0MOV A,#0FH MOV A,#0FH ;PC7PC7的置位控制字的置位控制字A AMOVX R0,A MOVX R0,A ;PC7PC7由由0 0变变1 1LOOP1: MOV R0,#7EH LOOP1: MOV R0,#7EH ;口口C C地址地址R0R0 MOVX A,R0 MOVX A,R0 ;读入读入C C口的值口的值 ANL A,#01H ANL A,#01H ;屏蔽屏蔽C C口的高口的高7 7位,只留位,只留PC0PC0位位JNZ LOOP1 JNZ LOOP1 ;查询查询BUSYBUSY的状态的状态, ,如为如为1 1跳跳LOOP1LOOP1DJNZ R2,LOOPDJNZ R2,LOOP;未打完,循环未打完,循环10.5.2 10.5.2 MCS-51MCS-51与与GP16GP16微型打印机的接口微型打印机的接口1. 1. GP16GP16微型打印机的接口信号微型打印机的接口信号 控制器为控制器为80318031单片机。接口信号如下单片机。接口信号如下: :各信号的功能如下各信号的功能如下: :IO0IO0IO7IO7:双向三态数据总线双向三态数据总线, ,是是CPUCPU与与GP16GP16打印机之打印机之 间命令、状态和数据信息传输线。间命令、状态和数据信息传输线。CSCS* *:设备选择线。设备选择线。RDRD* * 、WRWR* *:读、写信号线。读、写信号线。BUSYBUSY:打印机状态输出,高电平表示打印机状态输出,高电平表示GP16GP16处于忙状态,处于忙状态, 可供可供CPUCPU查询或作中断请求线。查询或作中断请求线。GP16GP16控制器具有数据锁存器,与单片机接口十分方便控制器具有数据锁存器,与单片机接口十分方便。 1 1打印命令及打印方式打印命令及打印方式 GP16 GP16的的打印命令占两个字节打印命令占两个字节, ,其格式如下其格式如下: :第一个字节第一个字节 D7-D4 D3-D0D7-D4 D3-D0操作码操作码 点行数点行数n n第二个字节第二个字节 D7- D0D7- D0打印行数打印行数NNNN GP16 GP16为微型针打为微型针打, ,字符本身占据字符本身占据7 7个点行个点行。命令字。命令字中的中的点行数点行数n n是选择字符行之间的行距的参数是选择字符行之间的行距的参数, ,若若n=10n=10,则行距为则行距为3 3个点行数,应大于或等于个点行数,应大于或等于8 8。打印行数打印行数是是执行本条命令时打印(或空走纸)的字符行数。执行本条命令时打印(或空走纸)的字符行数。 GP16 GP16的命令编码如下表。的命令编码如下表。D7 D6 D5 D4 D7 D6 D5 D4 命令功能命令功能1 0 0 01 0 0 0 空走纸空走纸1 0 0 11 0 0 1 打印字符串打印字符串1 0 1 01 0 1 0十六进制数据打印十六进制数据打印1 0 1 11 0 1 1图形打印图形打印3. 3. MCS-51MCS-51单片机和单片机和GP16GP16的接口的接口 GP16 GP16内部有三态锁存器内部有三态锁存器, , 能锁存数据总线上的数能锁存数据总线上的数据据, , ,故,故GP16GP16可以直接与可以直接与MCS-51MCS-51数据总线相连而不须数据总线相连而不须外加锁存器。图外加锁存器。图10-3210-32为为GP16GP16与与80318031数据总线口相连数据总线口相连的接口电路。的接口电路。 图中图中BUSYBUSY接接( (P3.3)P3.3),直接可用于中断方式。如要以直接可用于中断方式。如要以查询方式工作时,查询方式工作时,BUSYBUSY可以不连接,通过查询状态字来可以不连接,通过查询状态字来获取获取BUSYBUSY的状态。的状态。 如果使用其它如果使用其它I/OI/O或扩展或扩展I/OI/O口,只须将口,只须将P0P0口线换成口线换成其他其他I/OI/O或扩展或扩展I/OI/O口即可。口即可。 按照图按照图10-3210-32的连接,的连接,GP16GP16的的打印机地址为打印机地址为7 7FFFHFFFH,读取读取GP16GP16状态字状态字时,时,80318031执行下列程序段:执行下列程序段:MOV DPTR,MOV DPTR,7FFFH7FFFHMOVX A,DPTRMOVX A,DPTR将命令或数据写入将命令或数据写入GP16GP16时,时,80318031执行下列程序段:执行下列程序段:MOV DPTR,MOV DPTR,7FFFH7FFFHMOV A,MOV A,DATA/COMMANDDATA/COMMANDMOVX DPTR,AMOVX DPTR,A 10.6 10.6 MCS-51MCS-51单片机与单片机与BCDBCD码拨盘的接口设计码拨盘的接口设计10.6.1 10.6.1 BCDBCD码拨盘码拨盘 需输入一些控制参数,设定完将需输入一些控制参数,设定完将维持不变维持不变。使用的。使用的最方便的拨盘是十进制输入,最方便的拨盘是十进制输入,BCDBCD码输出的码输出的BCDBCD码拨盘。码拨盘。这种拨盘如图这种拨盘如图10-3310-33,为四片,为四片BCDBCD码拨盘码拨盘拼接的拼接的4 4位十进制输入拨盘组。每片拨盘具有位十进制输入拨盘组。每片拨盘具有0 09 9十十个位置个位置,每个位置都有相应的数字显示。,每个位置都有相应的数字显示。 BCD BCD码拨盘后面有码拨盘后面有5 5个接点,个接点,A A为输入控制线,另外为输入控制线,另外4 4是是BCDBCD码输出线。码输出线。 拨盘拨到不同位置时,输入控制线拨盘拨到不同位置时,输入控制线A A分别与分别与4 4根根BCDBCD码输出线中的某根或某几根接通码输出线中的某根或某几根接通,其接通的,其接通的BCDBCD码输出码输出线状态正好与拨盘指示的十进制数相一致。线状态正好与拨盘指示的十进制数相一致。 表表10-1010-10为为BCDBCD码拨盘的输入输出状态表。码拨盘的输入输出状态表。拨盘输入拨盘输入控制端控制端A A输出状态输出状态8 84 42 21 10 01 10 00 00 00 01 11 10 00 00 01 12 21 10 00 01 10 03 31 10 00 01 11 14 41 10 01 10 00 05 51 10 01 10 01 16 61 10 01 11 10 07 71 10 01 11 11 18 81 11 10 00 00 09 91 11 10 00 01 1表表10-10 10-10 BCDBCD码拨盘的输入输出状态码拨盘的输入输出状态10.6.2 10.6.2 BCDBCD码拨盘与单片机的接口码拨盘与单片机的接口BCDBCD码拨盘的接口码拨盘的接口 图图10-3410-34是是80318031通过与单片通过与单片BCDBCD码拨盘的码拨盘的接口电路。接口电路。 A A端接端接5 5V V, ,当拨盘拨至某十进制数时当拨盘拨至某十进制数时, ,相应的相应的8,4, 8,4, 2,12,1有效端有效端输出高电平(如拨至输出高电平(如拨至“6”“6”时时,4,2,4,2,端为端为“1”“1”)无效端无效端为低电平。输出的为低电平。输出的BCDBCD码为正逻辑。码为正逻辑。 A A端接地端接地, ,8,4,2,18,4,2,1输出端通过电阻上拉至高电平时输出端通过电阻上拉至高电平时, ,拨盘输出的拨盘输出的BCDBCD码为负逻辑(反码)码为负逻辑(反码)。2. 2. 多片多片BCDBCD码拨盘与单片机的接口码拨盘与单片机的接口如按图如按图10-3410-34,N N位拨盘需占用位拨盘需占用44N N根根I/OI/O口线口线, ,为减少为减少 I/O I/O口线口线, ,可将拨盘的输出线分别通过可将拨盘的输出线分别通过4 4个与非门与个与非门与 单片机的单片机的I/OI/O口相连口相连, , 每片拨盘的每片拨盘的控制端控制端A A不再接不再接 5 5V V或地或地, ,而是分别与而是分别与I/OI/O口线相连口线相连, ,用来控制选择多用来控制选择多 片拨盘中的任意一片。片拨盘中的任意一片。这时这时, ,N N位十进制拨盘位十进制拨盘, ,用用N N片片BCDBCD码拨盘拼成时码拨盘拼成时只需占用只需占用 4+ 4+N N根根I/OI/O口线口线。图。图10-3510-35通过通过P1P1与与4 4片片BCDBCD码拨盘相码拨盘相 连的连的4 4位位BCDBCD码输入电路。码输入电路。 4 4片拨盘的片拨盘的BCDBCD码输出相同端接入同一个码输出相同端接入同一个4 4个与非门。个与非门。四个与非门输出四个与非门输出8,4,2,18,4,2,1端分别接入端分别接入P1.3,P1.2,P1.1,P1.3,P1.2,P1.1,P1.0P1.0。其余的分别与千、百、十、个位其余的分别与千、百、十、个位BCDBCD码拨盘的控码拨盘的控制端相连。制端相连。当选中某位时,该位的控制端置当选中某位时,该位的控制端置0 0,其它三,其它三个控制端置个控制端置1 1。例如选中千位时例如选中千位时,置,置0,0,置置1 1,此时四个,此时四个 与非门所有其它位连接的输入端均为与非门所有其它位连接的输入端均为1 1状态,因此四状态,因此四 个与非门输出的状态取决于千位数个与非门输出的状态取决于千位数BCDBCD拨盘输出状拨盘输出状 态。由于态。由于该位的控制端置该位的控制端置0 0,因此,因此, ,拨盘所置之数输拨盘所置之数输 出为出为BCDBCD反码,通过与非门输出为该千位数的反码,通过与非门输出为该千位数的BCDBCD码码 下面以图下面以图10-3510-35为例,介绍为例,介绍BCDBCD码拨盘输入子程序。码拨盘输入子程序。 例如输入为例如输入为93459345,这时,每位,这时,每位BCDBCD码输出端上有相应码输出端上有相应的数字与的数字与A A接通。接通。 本程序本程序将读入的将读入的4 4位位BCDBCD码按千、百、十、个依次存码按千、百、十、个依次存放在片内放在片内RAMRAM的的3030H H33H33H单元单元, ,每个单元的高每个单元的高4 4位为位为0,0,低低4 4位为位为BCDBCD码。码。 程序如下:程序如下:RDSRDS: MOV R0,MOV R0,30H 30H ;初始化初始化, ,存放单元首址存放单元首址MOV R2,MOV R2,7FH 7FH ;P1P1口高口高4 4位置控制字及低位置控制字及低4 4位置输入位置输入 ;方式;方式MOV R3,MOV R3,04H 04H ;读入读入4 4个个BCDBCD码码LOOPLOOP: MOV A,R2 MOV A,R2MOV P1,A MOV P1,A ;P1P1口送控制字及低口送控制字及低4 4位置输入方式位置输入方式MOV A,P1 MOV A,P1 ;读入读入BCDBCD码码ANL A,ANL A,0FH 0FH ;屏蔽高屏蔽高4 4位位MOV R0,A MOV R0,A ;送入存储单元送入存储单元INC R0 INC R0 ;指向下个存储单元指向下个存储单元MOV A,R2 MOV A,R2 ;准备下一片拨盘的控制端置准备下一片拨盘的控制端置0 0RR ARR A ;MOV R2,A MOV R2,A ;DJNZ R3,LOOP DJNZ R3,LOOP ;未读完返回未读完返回RET RET ;读完结束读完结束
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号