单片机及接口技术2.8(并行扩展)

上传人:woxinch****an2018 文档编号:56938833 上传时间:2018-10-17 格式:PPT 页数:24 大小:311.50KB
返回 下载 相关 举报
单片机及接口技术2.8(并行扩展)_第1页
第1页 / 共24页
单片机及接口技术2.8(并行扩展)_第2页
第2页 / 共24页
单片机及接口技术2.8(并行扩展)_第3页
第3页 / 共24页
单片机及接口技术2.8(并行扩展)_第4页
第4页 / 共24页
单片机及接口技术2.8(并行扩展)_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《单片机及接口技术2.8(并行扩展)》由会员分享,可在线阅读,更多相关《单片机及接口技术2.8(并行扩展)(24页珍藏版)》请在金锄头文库上搜索。

1、2.9 单片机的并行扩展技术,单 片 机 并 行 扩 展,1. 用并行I/O口扩展键盘电路,(1)键盘电路,单 片 机 并 行 扩 展,(2)键盘原理,(3) 按键的抖动问题:按键在稳定前有抖动过程,因此需要消除抖动影响。采用延时再读按键状态的方法。,行列式键盘原理: a. 列线和行线不相连; b. 列线输出,行线输入。 c. 逐列扫描,再检查行线状态以得知是否按下了哪个键。,独立式键盘原理:,(4) 键盘操作方式:查询和中断,中断操作方式,单 片 机 并 行 扩 展,操作:列扫描,若有中断请求,说明扫描列有键按下,则查询哪一行的值为0,(5) 键盘应用举例,a.硬件设计:,单 片 机 并 行

2、 扩 展,例1:用80C51 P1口构成一个3键的独立式键盘,IO51K8: MOV P1, #0FFH ; 置P1口为输入MOV A, P1 ;查询P1口状态JNB ACC.0, PROM0JNB ACC.1, PROM1JNB ACC.2, PROM2SJMP IO51K /*以上均为键盘输入处理程序*/,键盘管理程序包括键输入处理程序和键操作程序,PROM0: LJMP IO51K8 PROM1: LJMP IO51K8 PROM2: LJMP IO51K8 /*以上为键操作程序*/,b.软件设计(键盘管理程序),单 片 机 并 行 扩 展,IO51K8:MOV P1, #0FFHMOV

3、 A, P1 ;查询P1口状态CPL AJZ IO51K8LCALL D10MS ;调延时子程序,延时10ms MOV A, P1 ; 再次查询P1口状态JNB ACC.0, PROM0JNB ACC.1, PROM1JNB ACC.2, PROM2SJMP IO51K8,单 片 机 并 行 扩 展,练:在上述程序的基础上增加按键的消抖处理。,单 片 机 并 行 扩 展,PGM0: LJMP IO51K8 PGM1: LJMP IO51K8 PGM2: LJMP IO51K8,D10MS: ;延时子程序RET,2. 并行I/O扩展的LED显示电路,1) LED显示器由8位发光二极管组成,单 片

4、 机 并 行 扩 展,共阴极,2)LED 显示器的段码表,如共阴极,显示数码2,由LED显示器的图可看出:要显示2,需从发光二极管a, b, d, e, g的非共极端输入1,并从发光二极管c, f, dp的非共极段输入0,因此从LED显示器的非共极段输入的数值为0101 1011B,即2的段码为:5BH,单 片 机 并 行 扩 展,COM,练:共阳极LED 显示器数码2的段码,要显示2,需从发光二极管a, b, d, e, g的非共极端输入0,并从发光二极管c, f, dp的非共极段输入1,因此从LED显示器的非共极段输入的数值为1010 0100B,即2的段码为:A4H,单 片 机 并 行

5、扩 展,单 片 机 并 行 扩 展,3)LED显示器的电路设计,(1) LED显示器静态显示方式,原理:每个LED显示器的共极端固定接电源或地,非共极端接单片机的/O端口,通过从8个端口位送段码来控制显示器显示数码。因为COM端状态不能改变,所以LED显示器不能共用数据线,因而每个LED显示器占用一个端口。,单 片 机 并 行 扩 展,问题:同一个I/O口能否用以控制两个LED显示器?,当输入其中一个显示器的段码时,另一个显示器也同时有显示,因此一个I/O端口只能用于控制1个LED显示器,1台80C51单片机只能控制4个LED显示器。,单 片 机 并 行 扩 展,编程举例:分别用P0和P1口控

6、制#0和#1两个共阴极LED显示器。设有两个9以内的无符号整数分别存放在片内RAM 30H和31H两个单元,编写程序显示这两个数。已知共阴极段码表为:,单 片 机 并 行 扩 展,解:用查表程序,TAB: DB 3FH, 06H, 5BH, 4FH, 66H ; 段码表DB 6DH, 7DH, 07H, 7FH, 6FH,MOV DPTR, #TAB MOV A, 30H MOVC A, A+DPTR MOV P1, AMOV A, 31H MOVC A, A+DPTR MOV P0, ASJMP $,单 片 机 并 行 扩 展,(2) LED显示器动态显示方式,为节省端口资源,若能在时刻仅一

7、个LED显示器能显示,其余-1 LED显示器都不能显示,则能用一个端口控制n个LED显示器。 方法:用另外的I/O端口位控制LED显示器的共极端,使在某时刻仅有一个LED显示器的共极端有效。,单 片 机 并 行 扩 展,例如,设#0和#1两个LED显示器均为共阴极显示器。MOV A, #0FEH MOV P3, A MOV P1, #0的段码RL A MOV P3, A MOV P1, #1的段码,原理:每个LED显示器的公共端各用一个端口位控制(控制字),用8个公共的端口位送数据(段码)。通过扫描的方式(逐个送),使n个LED显示器的公共端逐个有效,同时从公共的数据线(非公共端)送段码,从而

8、使n个LED显示器逐个显示数字。,用两个端口可以使用8个LED显示器 用三个端口可以使用16个LED显示器 用四个端口可以使用24个LED显示器,单 片 机 并 行 扩 展,LED显示器动态显示方式:各显示器逐个显示(不同时显示)一段时间,然后熄灭在视觉上产生连续显示的错觉 。,练:设 有4个10以内的数存放在片内RAM 首址为50H的数据块中,将该数据块的值显示出来 。设采用共阴极LED显示器,已有延时1ms的子程序DELAY。,单 片 机 并 行 扩 展,解:LED显示器程序一般采用查表的方法,将段码表放在ROM中,算法,单 片 机 并 行 扩 展,程序,单 片 机 并 行 扩 展,LP:

9、MOV A,R0 ;取数到A中MOV P3,R2 ;送控制字MOVC A,A+DPTR ;查相应的段码MOV P1,A ;送出段码LCALL DELAY ;调延时子程序INC R0 ;数据块指针加1MOV A,R2 RL AMOV R2,A ;控制字左移一位DJNZ R3,LP ;若循环没结束,转下一次循环HLT ;若循环结束,停机TAB :DB 3FH,06H,5BH,4FH,66H,6DH,7DHDB 07H ,7FH,6FH,77H,7CH,39H,5EHDB 79H,71H ;段码表,0F,程序,单 片 机 并 行 扩 展,MOV R0,#50H ;R0指向数据块MOV R2,#FEH

10、 ;设控制字初始值1111 1110BMOV R3,4 ;设循环次数MOV DPTR,#TAB ;设段码表的首地址LP:MOV A,R0 ;取数到A中MOV P3,R2 ;送控制字MOVC A,A+DPTR ;查相应的段码MOV P1,A ;送出段码LCALL DELAY ;调延时子程序,可延时1msINC R0 ;数据块指针加1MOV A,R2 RL AMOV R2,A ;控制字左移一位DJNZ R3,LP ;若循环没结束,转下一次循环HALT ;若循环结束,停机TAB :DB 3FH,06H,5BH,4FH,66H,6DH,7DHDB 07H ,7FH,6FH,77H,7CH,39H,5E

11、HDB 79H,71H ;段码表,0F,程序,思考:1)用三个LED显示器显示十进制数3282)4*4键盘,键盘号0-15,用LED显示器显示闭合键的键号,单 片 机 并 行 扩 展,MOV R0,#50H ;R0指向数据块MOV R2,#FEH ;设控制字初始值1111 1110BMOV R3,4 ;设循环次数MOV DPTR,#TAB ;设段码表的首地址LP:MOV A,R0 ;取数到A中MOV P3,R2 ;送控制字MOVC A,A+DPTR ;查相应的段码MOV P1,A ;送出段码LCALL DELAY ;调延时子程序,可延时1msINC R0 ;数据块指针加1MOV A,R2 RL AMOV R2,A ;控制字左移一位DJNZ R3,LP ;若循环没结束,转下一次循环HALT ;若循环结束,停机TAB :DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;段码表,0FEND,本节小结,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号