440 likes | 669 Views
主要内容: 从工程应用角度介绍了 MCS-51 单片机的交互通道配置与接口,主要包括人机界面中的键盘、显示器等。介绍了多种实用方案和设计技巧。 重点 在于系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。 难点 在于使用动态方法进行键盘和显示的硬件及软件设计。 . 第 6 章 MCS-51 单片机的人机交互通道配置与接口. 人机界面 : 是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。 6.1 MCS-51 单片机与键盘的接口技术 键盘: 单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。
E N D
主要内容: 从工程应用角度介绍了MCS-51单片机的交互通道配置与接口,主要包括人机界面中的键盘、显示器等。介绍了多种实用方案和设计技巧。 重点在于系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。 难点在于使用动态方法进行键盘和显示的硬件及软件设计。 第6章MCS-51单片机的人机交互通道配置与接口
人机界面:是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。人机界面:是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。 6.1 MCS-51单片机与键盘的接口技术 键盘:单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。 键盘的分类:按编码方式可分为编码键盘与非编码键盘。按键组连接方式可分为独立连接式键盘与矩阵连接式键盘。 6.1.1 概述 键盘输入的主要对象:各种按键或开关。 1.独立连接式键盘 每键相互独立,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。其优点是硬件、软件结构简单,判键速度快,使用方便;缺点是占I/O口线多。 适用场合:多用于设置控制键、功能键。适用于键数较少的场合。
独立连接式键盘连接图如右图所示。当没有键被按下时,所有的数据输入线都为高电平;当有任意一个键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键按下。独立连接式键盘连接图如右图所示。当没有键被按下时,所有的数据输入线都为高电平;当有任意一个键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键按下。 2. 矩阵连接式键盘 键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判键速度慢。 适用场合:多用于设置数字键,适用于键数多的场合。
4行4列矩阵式键盘连接图如右图所示。这种键盘适合采取动态扫描的方式进行识别。4行4列矩阵式键盘连接图如右图所示。这种键盘适合采取动态扫描的方式进行识别。 扫描方式:低电平扫描(回送线必须被上拉为高电平)、高电平扫描(回送线需被下拉为低电平)。右图中给出了低电平扫描的电路。 3. 薄膜开关 特点:不需要进行导线与开关间的焊接,结构简单、体积小、防尘、防水、防有害气体侵蚀、寿命长、可靠性高。 应用:与按键式键盘类似,多个薄膜开关也可按照独立式或矩阵式设计内部电路,其原理与普通键盘相同。
6.1.2 使用键盘时必须解决的问题 (1)开关状态的可靠输入。必须消除键抖动。可以采用硬件和软件两种方法,硬件方法就是在按键输入通道上添加去抖动电路;软件方法则采用延迟10~20ms (2)键盘状态的监测方法——中断方式还是查询方式。 (3)键盘编码方法。 (4)键盘控制程序的编制。。 6.1.3 键盘接口 功能:对键盘上所按下的键进行识别。 分类: (1)编码键盘:采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。其特点是增加了硬件开销,编码固定,但编程简单。适用于规模大的键盘。
(2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统。键盘。(2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统。键盘。 1.键盘接口的工作原理 对于矩阵式键盘,如上页图所示,键盘的行线X0~X3通过电阻接+5V,当键盘上没有键闭合时,所有的扫描线和回送线都断开,无论扫描线处于何种状态,回送线都呈高电平。当键盘上某一键闭合时,则该键所对应的扫描线和回送线被短路,可以确定,变为低电平的回送线与扫描线相交处的键闭合。 CPU对键盘扫描的方式:程序控制的随机方式( CPU空闲时扫描键盘)、定时控制方式(定时扫描键盘)、中断方式。 CPU对键盘上闭合键的键号确定方法:根据扫描线和回送线的状态计算求得,或根据行线和列线的状态查表求得。
2.键输入程序的设计方法 (1)判断键盘上是否有键闭合; (2)消除键的机械抖动; (3)确定闭合键的物理位置; (4)得到闭合键的编号; (5)确保CPU对键的一次闭合只做一次处理 3.键盘接口方式 (1)独立式键盘接口(静态方式) 特点:结构简单,每个按键接单片机的一条I/O线,通过对输入线的查询,可以识别每个按键的状态。 [例题]在MCS-51 单片机系统中,设计一个含8个按键的独立式键盘。 解:在MCS-51中,含8个按键的独立式键盘的线路连接如下页图所示,8个按键经上拉电阻拉高后分别接到MCS-51单片机P1口的8条I/O线上(P1.0~P1.7)。
在无键按下的情况下,P1.0~P1.7线上输入均为高电平。当有键按下时,与被按键相连的I/O线将得到低电平输入,其他位按键的输入线上仍维持高电平输入。 P1口8条I/O线经与非门74LS30实现逻辑与非后,再经过1个非门74LS04进行信号变换,然后接至MCS-51的 引脚上,可通过中断的方式处理键盘。在中断服务程序中,先延时20 ms消除键抖动,再对各键进行查询,找到所按键,并转到相应的处理程序中去。
主程序如下: ORG 0000H LJMP MAIN ORG 0003H ; 外部中断0中断服务入口地址 LJMP INT ; 转中断服务 ORG 0100H MAIN: SETB EA ; 开总中断允许 SETB EX0 ; 开INT0中断 SETB IT0 ; 下降沿有效 …… 中断服务程序清单如下: INT: LCALL D20ms ; 延时去抖动 MOV P1, #0FFH ; P1口送全1值 MOV A, P1 ; 读P1口各引脚 CJNE A, #0FFH,CLOSE ; 验证是否确实有键闭合 AJMP OUT ; 无键按下
CLOSE: JNB ACC.7, KEY 7 ; 查询7号键 JNB ACC.6, KEY 6 ; 查询6号键 JNB ACC.5, KEY5 ; 查询5号键 JNB ACC.4, KEY4 ; 查询4号键 JNB ACC.3, KEY 3 ; 查询3号键 JNB ACC.2, KEY 2 ; 查询2号键 JNB ACC.1, KEY 1 ; 查询1号键 JNB ACC.0,KEY 0 ; 查询0号键 OUT: RETI KEY 7: …… ; 7号键处理程序 KEY 71: MOV A, P1 ; 再读P1口各引脚 JNB ACC.7, FUNC71 ; 确认键是否释放 RETI KEY 6: …… ; 其他键处理程序 …… D20ms: 略…… ; 20ms延时子程序 …… END
(2)矩阵式键盘接口——行反转法 矩阵式键盘按键识别方法有行反转法和扫描法等。行反转法需要两个双向I/O口分别接行、列线。步骤如下: (1)由行线输出全“1”,读入列线,判有无键按下。 (2)若有键按下,再将读入的列线值输出,读入行线的值。 (3)第一步读进的列线值与第二步读进的行线值运算,从而得到代表此键的唯一的特征值。 行反转法因输入与输出线反过来用而得名。优点是判键速度快,两次即可。 [例题]请为8051微处理器设计一个由4行4列键阵构成的键盘。 解:4×4矩阵键盘的线路连接如下页图所示。其中P2口的低4位作为输出线。P1口的低4位作为输入线,输入线通过74LS21进行逻辑相与后作为8051的一个外部中断源输入。当有键按下时就将引起中断。中断服务程序要对所按的键进行判别。
(1)查询闭合键的位置子程序KEYR KEYR子程序用以确定每组线中哪一位为0,是否有多个0。在调用前,应将读某组线的数据存入累加器A中。 KEYR子程序返回时,某组线中0的位置(0~3)保存在R3中。按键闭合引起中断后,执行中断服务程序。
KEYR子程序如下: KEYR: CJNE A, #0FEH, TESTP11 ; 测试P1.0 MOV R3, #0 ; P1.0=0,说明被按键的输入线为P1.0 LJMP FINISH ; 返回 TESTP11: CJNE A, #0FDH, TESTP12 ; 测试P1.1 MOV R3, #1 LJMP FINISH TESTP12: CJNE A, #0FBH, TESTP13 ; 测试P1.2 MOV R3, #2 LJMP FINISH TESTP13: CJNE A, #0F7H, FINISH ; 测试P1.3 MOV R3, #3 FINISH: RET
(2)中断服务程序 中断服务程序开始部分应利用软件延时消除键抖动,然后再对所按的键做出处理。 中断服务程序如下: ORG 1000H INT11: LCALL DELAY ; 延时去抖动 MOV A, P1 ; 读输入线 ANL A, #0FH ; 判断是否有键闭合 CJNE A, #0FH, TEST ; 有键闭合,转判断按键程序 RETI ; 无键闭合,返回 TEST: MOV B, A ; 暂存 LCALL KEYR ; 调用读取子程序 MOV 40H, R3 ; 暂存在40H单元 MOV P2, #0FFH ; 输出线写1 MOV P1, B ; 输入线写入数据 MOV A, P2 ; 读输出线 LCALL KEYR ; 调用读取子程序 XCH A, R3 SWAP A ORL 40H, A ; 得按键特征值 RETI
中断程序结束后,键的特征值存放在40H单元中。此键的输出线号位于40H单元的高4位,其输入线号位于低4位。此后,根据40H单元的内容去查表,得到相应键的代码,可进行显示或其他处理。中断程序结束后,键的特征值存放在40H单元中。此键的输出线号位于40H单元的高4位,其输入线号位于低4位。此后,根据40H单元的内容去查表,得到相应键的代码,可进行显示或其他处理。 (3)去抖动的延时子程序DELAY 利用CPU的空闲方式,通过定时器T1实现延时, T1必须预先置初值,以得到需要的延迟时间。设晶振频率为6MHz,欲延时20ms,定时时间为: (216-TC)×6/12=20×103μs,初值:TC=25536=63C0H。 程序如下: DELAY: MOV TOMD, #11H ; 方式1定时 MOV TL1, #0C0H ; 定时器1定时初值 MOV TH1, #63H SETB EA ; 开中断 SETB ET1 ; 开定时器1中断 SETB PT1 ; 定时器1为高级中断(因被键盘中断调用) SETB TR1 ; 启动定时器 ORL PCON,#1 ; 启动空闲方式,实际CPU在此处等待 CLR TR1 ; 以下四条指令只有在延时后,定时器被唤醒,才能执行 CLR PT1 CLR ET1 RET END
(3)矩阵式键盘接口动态扫描法 行反转法适用于扩展键阵。而动态扫描法不仅可以扫描键阵,也可以实现显示,应用较广泛。 动态扫描法原理:采用输出“移动”信号,轮流对各行按键进行检测来实现的。设置行线为输出,列线为输入,当无按键按下时,列输入全为“1”。设计时,将某一行输出为“0”,读取列线值,若其中某一位为“0”,则表明行、列交叉点处的按键被按下,否则无按键按下;继续扫描下一行(将下一行输出为“0”),直至全扫描完为止。 [例题]用8155实现4行8列的32键键盘接口。 解:电路如下页图所示,8155的PA设定为输出口,称其为扫描线。PC3~PC0设定为输入口,称其为回送线。8155与MCS-51单片机的接口略,设PA口的端口地址为7F01H,PC口的端口地址为7F03H。
键值编码形式:回送线PC0, PC1, PC2, PC3上的键值(每条回送线上有8个键,顺序从左到右)分别为00H +(00H~07H)、08H +(00H~07H)、10H +(00H~07H)、18H +(00H~07H)。其中,(00H~07H)的具体内容由扫描线决定,存放在R4中。
(1)扫描是否有键按下子程序KEY1,回扫线的值存放在A中。(1)扫描是否有键按下子程序KEY1,回扫线的值存放在A中。 程序如下: ORG 1000H KEY1:MOV DPTR, #7F01H ; 将PA口地址送DPTR,PA口作为扫描线 MOV A, #00H ; 所有扫描线均为低电平 MOVX @DPTR, A ; PA口向列线输出00H INC DPTR INC DPTR ; 指向PC口 MOVX A, @DPTR ; 取回送线状态 CPLA ; 行线状态取反 ANL A, #0FH ; 屏蔽A的高半字节 RET ; 返回 (2)判断是否有键按下子程序KEY,如果有,识别按键的键码。 其中DELAY1是延时子程序。 程序如下:
KEY:ACALL KEY1 ; 检查有键闭合否 JNZ LKEY1 ; A非0说明有键按下 ACALL DELAY1 ; 执行一次延时子程序(延时6 ms) AJMP KEY LKEY1:ACALL DELAY1 ACALL DELAY1 ; 有键闭合延时2×6ms=12ms以去抖动 ACALL KEY1 ; 延时以后再检查是否有键闭合 JNZ LKEY2 ; 有键闭合,转LKEY2 ACALL DELAY1 ; 无键闭合,说明是干扰信号,不作处理 AJMP KEY ; 延时6ms后转KEY继续等待键入 LKEY2:MOV R2, #0FEH ; 扫描初值送R2,设定PA0为当前扫描线 MOV R4, #00H ; 回送初值送R4 LKEY4:MOV DPTR, #7F01H ; 指向PA口 MOV A, R2 MOVX @DPTR, A ; 扫描初值送PA口 INC DPTR INC DPTR ; 指向PC口 MOV A, @DPTR ; 取回送线状态 JB ACC.0, LONE ; ACC.0=1,第0行无键闭合,转LONE MOV A, #00H ; 装第0行行值 AJMP LKEYP ; 转计算键码 LONE:JB ACC.1, LTWO ; ACC.1=1,第1行无键闭合,转LTWO
MOV A, #08H ; 装第1行行值 AJMP LKEYP ; 转计算键码 LTWO:JB ACC.2, LTHR ; ACC.2=1,第2行无键闭合,转LTHR MOV A, #10H ; 装第2行行值 AJMP LKEYP LTHR:JB ACC.3, NEXT ; ACC.3=1,第3行无键闭合,转NEXT MOV A, #18H ; 装第3行行值 LKEYP:ADD A, R4 ; 计算键码 PUSH ACC ; 保存键码 LKEY3:ACALL DELAY1 ; 延时6ms ACALL KEY1 ; 判断键是否继续闭合,若闭合再延时 JNZ LKEY3 POP ACC ; 若键释放,则键码送A RET NEXT:INC R4 ; 列号加1 MOV A, R2 JNB ACC.7, KND ; 第7位为0,以扫描到最高列,转KND RL A ; 循环右移一位 MOV R2, A AJMP LKEY4 ; 进行下一列扫描 KND: AJMP KEY ; 扫描完毕,开始新的一轮 DELAY1: ··· ··· ; 延时子程序,略 END
(4)通过串行口扩展键盘接口 MCS-51系列单片机的串行口与串/并转换芯片配合(如串入并出芯片74LS164 )可以扩展键盘。 [例题]利用MCS-51的串行口与串/并转换芯片配合,扩展2行8列的键盘接口,键号为0~15。要求给出其硬件连接和键盘查询子程序。 解:串口与串/并转换芯片配合扩展键盘的线路连接如下图所示。
其中,P1.0和P1.1作为行线。键盘的编码为: P1.0线上的8个键分别为00H+(00H~07H),P1.1线上的8个键分别为08H+(00H~07H)。扫描线(00H~07H)的具体值存放在R4中。 程序采取查询方式读取键号,并且考虑了键的抖动问题。 DLY1是延时子程序。 程序如下: ORG 1000H SERKEY:MOV SCON, #00H ; 设置串行口 MOV A, #00H ; 键盘初始化,送00H到列线上 LCALL VARTO ; 发送数据 CHK:JNB P1.0, CHK0 ; 检查是否有键按下 JNB P1.1, CHK0 ; 检查是否有键按下 AJMP CHK ; 无键按下,继续查找 CHK0:LCALL DLY1 ; 调用10ms延时子程序,去抖 JNB P1.0, CHEN ; 确实有键按下,转CHEN JNB P1.1, CHEN AJMP CHK ; 无键按下,继续查找 CHEN:MOV R2, #0FEH ; 首列扫描字送R2,查键号,最低位为0 MOV R4, #00H ; 首列偏移值送R4
CHKN:MOV A, R2 ; 发送列扫描字 LCALL VARTO JB P1.0, CH1 ; 检查P1.0有无键按下;若无,转CH1 MOV A, #0 ; 第一行首列值送A,00H+(R4) AJMP CKEY ; 转求键号 CH1:JB P1.1, NEXT ; 检查P1.1有无键按下;若无,转NEXT MOV A, #8H ; 第二行首列值送A CKEY:ADD A, R4 ; 求键号,并入栈保护 RET NEXT:INC R4 ; 指向下一列 MOV A, R2 ; 取出原扫描字 JNB ACC.7,KEND ; 是否已检查完8列? RL A ; 8列未完,指向下一列 MOV R2, A ; 列扫描字送R2 AJMP CHKN ; 8列未完,检查下一列 KEND:AJMP SERKEY ; 8列查完,未查到有键按下,等待 VARTO:MOV SBUF, A ; 发送A中数据 JNB TI, $ ; 发送等待 CLR TI ; 清除 RET DLY1: (略)…… ; 延时10ms子程序 END ; 结束
6.2 MCS-51单片机与显示器的接口技术 显示器用于实现单片机应用系统中的数据输出和状态的反馈。单片机系统中常用的显示器有发光二极管、七段数码显示器、液晶显示器等。 6.2.1 LED显示器及其接口 发光二极管简称LED(Light Emitting Diode)。LED显示器从外观可分为 “8”字形的七段数码管、米字形数码管、点阵块、矩形平面显示器、数字笔划显示器等。 1.七段LED数码显示器 七段LED数码管显示器能够显示十进制或十六进制数字及某些简单字符。但控制简单,使用方便,在单片机系统中应用较多。其结构如下页图所示。
上图中的a~g七个笔划(段)及小数点dp均为发光二极管。数码管显示器根据公共端的连接方式,可以分为共阴极数码管(将所有发光二极管的阴极连在一起)和共阳极数码管(将所有发光二极管的阳极连在一起)。上图中的a~g七个笔划(段)及小数点dp均为发光二极管。数码管显示器根据公共端的连接方式,可以分为共阴极数码管(将所有发光二极管的阴极连在一起)和共阳极数码管(将所有发光二极管的阳极连在一起)。 单片机系统扩展LED数码管时多用共阳LED。共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。通常每个段笔画要串一个数百欧姆的降压电阻。
2.LED点阵模块显示器 LED点阵模块显示器是指由发光二极管排成一个m×n的点阵,每个发光二极管构成点阵中的一个点。这种显示器显示的字形逼真,能显示的字符比较多,但控制比较复杂。适用于显示汉字、图形和表格,广泛应用于公共场合的信息发布。
3. LED的驱动接口 LED工作时需要一定的工作电流,才能正常发光。单个LED实际上是一个压降为1.8~2.2V的发光二极管,流过LED的电流大小决定了它的发光强度,R为限流电阻。适当减小限流电阻可以增加LED的工作电流,使LED的显示效果更好。但工作电流过大,会对驱动器件、LED造成损害。通常每个段笔画要串一个合适的电阻,使流过的电流为1mA~50mA。下图为单个LED的驱动接口电路。
4.LED数码管的显示与驱动 LED数码管显示器的工作方式:静态和动态两种显示方式。 (1)静态显示方式 静态显示方式的各数码管在显示过程中持续得到送显信号,与各数码管接口的I/O口线是专用的。其特点是显示稳定,无闪烁,用元器件多,占I/O线多,无须扫描。系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,节省CPU时间,提高CPU的工作效率,编程简单。 [例题]设计8051通过8255A芯片扩展3位七段共阳极LED显示器。 解:接口电路如下页图所示,8255A与8051的接口略。在程序中将相应的字形码写入8255A的PA, PB, PC口,显示器就可以显示出3位字符。 8255A的初始化设定为PA, PB, PC为基本I/O输出方式,待显示的数据存放在内部RAM 的40H~42H单元,数据格式为非压缩BCD码。
初始化及显示程序如下: ORG 1000H DSP8255: MOV DPTR, #7FFFH MOV A, #80H ; 8255A工作方式设置 MOVX @DPTR, A ; 工作方式字送8255A控制口
MOV R0, #40H ; 显示数据起始地址 MOV R3, #03H ; 待显示数据个数 MOV DPTR, #7FFCH ; 第一个数据在PA口显示 LOOP :MOV A, @R0 ; 取出第一个待显示数据 ADD A, #06H ; 加上偏移量,查表指令到表TAB 有6个字节 MOVC A, @A+PC ; 查表取出字形码 MOVX @DPTR, A ; 字形码送8255A端口显示 INC R0 ; 指向下一个数据存储位置 INC DPTR ; 指向下一个七段数码显示器 DJNZ R3, LOOP ; 未显示结束,返回继续 RET TAB:DB 0C0H, 0F9H, 0A4H, 0B0H ; 0, 1, 2, 3 字形码表 DB 99H, 92H, 82H, 0F8H ; 4, 5, 6, 7 DB 80H, 90H, 88H, 83H ; 8, 9, A, b DB 0C6H, 0A1H, 86H, 8EH ; C, d, E, F END
(2)动态显示方式 动态显示方式是指一位一位地轮流点亮每位显示器,与各数码管接口的I/O口线是共用的。其特点是有闪烁,用元器件少,占I/O线少,必须扫描,花费CPU时间,编程复杂。 [例题]设计6位共阴极显示器与8155的接口电路,并写出与之对应的动态扫描显示子程序。显示数据缓存区在片内RAM 79H~7EH单元。 解:设计8155的PA作为扫描口,PB作为段码输出口,都工作在基本输出方式下, PA口的端口地址为7F01H,PC口的端口地址为7F03H。进行扫描时,PA的低6位依次置1,依次选中了从左至右的显示器。使用ULN2803作为段码输出驱动(反相驱动),所以共阴极数码管在段数据表中的字形码应与共阳极数码管的字形码相同。 6位动态显示器接口电路如下页图所示。
动态扫描子程序如下: ORG 1000H DSP8155: MOV DPTR, #7F00H ;指向8155命令寄存器 MOV A, #00000011B ; 设定PA口、PB口为基本输出方式 MOVX @DPTR, A ; 输出命令字 DISP1: MOV R0, #7EH ; 指向缓冲区末地址 MOV A, #20H ; 扫描字,PA5为1,从左至右扫描
LOOP: MOV R2, A ; 暂存扫描字 MOV DPTR, #7F01H ; 指向8155的PA MOVX @DPTR, A ; 输出位选码 MOV A, @R0 ; 读显示缓冲区一字符 MOV DPTR, #PTRN ; 指向段数据表首地址 MOVC A, @A+DPTR ; 查表,得段数据 MOV DPTR, #7F02H ; 指向8155的PB MOVX @DPTR, A ; 输出段数据 CALL D1MS ; 延时1ms DEC R0 ; 调整指针 MOV A, R2 ; 读回扫描 CLR C ; 清进位标志 RRC A ; 扫描字右移 JC PASS ; 结束 AJMP LOOP ; 继续显示 PASS: RET ; 返回 D1MS: MOV R7, #02H ; 延时1ms子程序 DMS: MOV R6, #0FFH DJNZ R6, $ DJNZ R7, DMS RET PTRN: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ; 段数据表 DB …… DB …… …… END
6.2.2 LCD显示器及其接口 液晶显示器简称LCD(Liquid Crystal Diodes)是利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。其特点是体积小、重量轻、功耗极低、显示内容丰富等特点,在单片机应用系统中有着日益广泛的应用。 1.LCD的分类及特点 分类:笔段式和点阵式(可分为字符型和图像型)。 笔段式LCD显示器:类似于LED数码管显示器。每个显示器的段电极包括a, b, c, d, e, f, g七个笔划(段)和一个背电极BP(或COM)。可以显示数字和简单的字符。 点阵式LCD显示器:段电极与背电极呈正交带状分布,液晶位于正交的带状电极间。点阵式LCD的控制一般采用行扫描方式,如图右所示为显示字符“A”的情况。
2.笔段式LCD液晶显示器的驱动 在LCD的公共极(一路为背电极)加上恒定的交变方波信号,通过控制段极的电压变化,在LCD两极间产生所需的零电压或二倍幅值的交变电压,以达到LCD亮、灭的控制。在笔段式LCD的段电极与背电极间施加周期地改变极性的电压(通常为4 V或5 V),可使该段呈黑色。 3.LCD显示模块LCM (Liquid Crystal Display Module) 在实际应用中,用户很少直接设计LCD显示器驱动接口,一般是直接使用专用的LCD显示驱动器和LCD显示模块LCM 。 LCM是把LCD显示屏、背景光源、线路板和驱动集成电路等部件构造成一个整体,作为一个独立部件使用。其特点是功能较强、易于控制、接口简单,在单片机系统中应用较多。其内部结构如下页图所示。 LCM一般带有内部显示RAM和字符发生器,只要输入ASCII码就可以进行显示。
LCD显示模块LCM按显示功能可分为:LCD段式显示模块、LCD字符型显示模块、LCD图形显示模块三类。LCD显示模块LCM按显示功能可分为:LCD段式显示模块、LCD字符型显示模块、LCD图形显示模块三类。
6.3 MCS-51单片机键盘和显示器接口设计实例 6.3.1 利用8155芯片实现键盘和显示器接口 1.接口电路 下页图是一个典型实用的采用8155并行扩展接口构成的键盘显示电路,图中只设置了32个键,如果增加PC口线,可以增加按键,最多可达48个键。LED显示器采用共阴极,段选码由8155 PB口提供,位选码由PA口提供。键盘的列输入由PA口提供,行输出由PC0~PC3提供,8155的RAM地址为7E00H~7EFFH,I/O地址为7F00H~7F05H。图中的8155也可以用8255A来替代。 2.软件设计 由于键盘与显示设计成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序用显示程序替代。8155动态显示子程序DSP8155参照动态显示的例题。
程序如下: ORG 1000H KD1: MOV A, #0000 0011B ; 8155初始化,PA,PB基本输出方式,PC输入方式 MOV DPTR, #7F00H MOVX @DPTR, A KEY1: ACALL KS1 ; 调用判断是否有键闭合子程序 JNZ LK1 ; 有键闭合转LK1 ACALL DSP8155 ; 调用8155动态显示子程序,延时6ms AJMP KEY1 LK1: ACALL DSP8155 ACALL DSP8155 ; 调用两次显示,延时12ms ACALL KS1 JNZ LK2 ACALL DSP8155 ; 调用8155动态显示子程序,延时6ms AJMP KEY1 LK2: MOV R2, #0FEH MOV R4, #00H LK3: MOV DPTR, #7F01H MOV A, R2 MOVX @DPTR, A INC DPTR INC DPTR MOVX A, @DPTR JB ACC.0, LONE MOV A, #00H AJMP LKP
LONE:JB ACC.1, LTWO MOV A, #08H AJMP LKP LTWO: JB ACC.2, LTHR MOV A, #10H AJMP LKP LTHR: JB ACC.3, NEXT MOV A, #18H LKP: ADD A, R4 PUSH ACC LK4: ACALL DSP8155 ACALL KS1 JNZ LK4 POP ACC NEXT: INC R4 MOV A, R2 JNB ACC.7, KND RL A MOV R2, A AJMP LK3 KND: AJMP KEY1 KS1: MOV DPTR, #7F01H MOV A, #00H MOVX @DPTR, A INC DPTR INC DPTR
MOVX A, @DPTR CPL A ANL A, #0FH RET END 6.3.3 利用专用芯片实现键盘和显示器接口 键盘的处理和显示的处理可由专用芯片完成,键盘和显示器管理专用芯片种类较多,常用的键盘和显示器管理专用芯片有Intel公司的8279芯片,可实现64个按键、 16位LED显示器的管理。 北京比高公司自行开发的7279芯片。
6.4 MCS-51单片机与微型打印机的接口技术 常用的微型打印机有TPμP-16A/40A和LASER-PP40描绘器等。 6.4.1 微型打印机的特点 1.LASER PP40的特点 LASER PP40是四色描绘式打印机。具有文本模式和图案模式两种工作模式。可用来描绘字符及其图形,具有较强的绘图功能。可在多种智能仪表及实时控制系统中作为微型绘图机使用。 2. TPμP-16A/40A的特点 TPμP-16A/40A是一种超小型的智能点阵式打印机。TPμP-40A与TPμP-16A的接口与时序要求完全相同,操作方式相近,硬件电路及插脚完全兼容,只是指令代码不完全相同。TPμP-16每行可打印16个字符。TPμP-40A每行可打印40个字符,字符点阵码为5×7,内部有一个240种字符的字库,并有绘图功能。
3. TPμP-40A的主要技术性能 ① 具有2KB控制程序及标准的Centironic并行接口。 ② 具有较丰富的打印命令,格式简单。 ③ 可产生全部标准的ASCII代码字符,以及128个非标准字符和图符。 ④ 打印格式比较灵活。 ⑤ 字符、图符和点阵图可以在宽和高的方向放大为2、3或4倍。 ⑥ 每行字符的点行数(包括字符的行间距)可用命令更换,即字符行间 距及每行字符的空点行在0~255间任选。 ⑦ 带有水平和垂直制表命令,便于打印表格。 ⑧ 具有重复打印同一字符命令,以减少输送代码的数量。 ⑨ 带有命令格式的检错功能,当输入错误命令时,打印机立即打印出错 误信息代码。