1 / 61

第九章 接口的扩展

第九章 接口的扩展. 9.1 简单 I/O,8255,8155 并口扩展. 9.1.1 并行接口的扩展 ( 简单 I/O). ③ 简单 I/O 扩展:(锁存器扩展). 在单片机的 I/O 口线不够用的情况下,可以借助外部器件对 I/O 口进行扩展。可资选用的器件很多,方案也有多种。.

hestia
Télécharger la présentation

第九章 接口的扩展

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九章 接口的扩展

  2. 9.1简单I/O,8255,8155并口扩展

  3. 9.1.1 并行接口的扩展(简单I/O) ③简单I/O扩展:(锁存器扩展) 在单片机的I/O口线不够用的情况下,可以借助外部器件对I/O口进行扩展。可资选用的器件很多,方案也有多种。 CLR VCC 1Q 8Q 1D 8D 2D 7D 2Q 7Q 3Q 6Q 3D 6D 4D 5D 4Q 5Q GND CLK OE VCC 1Q 8Q 1D 8D 2D 7D 2Q 7Q 3Q 6Q 3D 6D 4D 5D 4Q 5Q GND G OE VCC 1Q 8Q 1D 8D 2D 7D 2Q 7Q 3Q 6Q 3D 6D 4D 5D 4Q 5Q GND CLK 74LS273 74LS373 74LS374 通常输出需要锁存,输入需要缓冲。但并非一成不变

  4. 简单I/O扩展:(缓冲/驱动器扩展) 输出 D0 D7 D0 D7 P0.0-P0.7 P2.1 锁存器74LS273 ≥1 CLK WR 或门 单片机 输入 D0 D7 D0 D7 或门 P2.0 ≥1 CE1CE2 缓冲器74LS244 RD 输入指令:MOV DPTR,#0200H MOVX A, @DPTR 输出指令: MOV DPTR,#0100H MOVX @DPTR, A

  5. 9..1.2 并行接口的扩展(8255) ④可编程并行I/O接口芯片8255扩展I/O: 8255的基本特性与引脚: ◆ PA,PB,PC 三个8位I/O口; PA3 PA4 PA2 PA5 PA1 PA6 8255 PA0 PA7 一个8位的数据口D0~D7。 RD WR CSRESET ◆ PC口分高4位和低4位。高4位 可与PA口合为一组(A组),低4 位可与PB口合为一组(B组)。 GNDD0 A1 D1 A0D2 PC7 D3 ◆ PC可按位置位/复位。 PC6 D4 PC5 D5 ◆ 3种工作方式。内部有4个寄存 器,由A1,A0与读,写信号选择。 片选低有效,复位高有效。 PC4 D6 PC0 D7 PC1VCC PC2PB7 PC3PB6 PB0PB5 ◆ 40条引脚,DIP封装。须注意 VCC与GND引脚的位置。 PB1PB4 PB2PB3 40 PIN

  6. 8255的PA,PB,PC口的三种工作方式: ◆ 三种方式中只有方式 0 用得最多且最容易使用。 基本输入/输出方式 就是简单输入/输出方式。 ◆ 方式1 和方式2 使用复杂。因单片机能自动提供 各种应答信号,这两种方式已很难见到再有人用 于单片机系统。

  7. PA,PB,PC口的三种工作方式示意图: PC口 地址总线 B A 7 6 5 4 3 2 1 0 控制总线 控制线 控制线 PA0-7 PB0-7 数据总线 A组 B组 8255的方式 1 RD WR D7——D0A1 A0 C B A PC口 B A 7 6 5 4 3 2 1 0 PA0-7 PC4-7 PC0-3 PB0-7 PA0-7 I/O PB0-7 控制线 A组 B组 A组 B组 8255的方式 0 8255的方式 2

  8. 8255的端口选择表: 注意:对PA,PB,PC三个口的任何读/写操作,就是对 PA,PB,PC这三个寄存器进行I/O操作. 第4个寄存器是控制字寄存器(命令字寄存器)

  9. 8255控制寄存器 接受控制命令,告诉8255以何种方式工作。其地址是:A1,A0 = 11。它可以接受两条命令,第一条 命令叫“方式控制字”,方式控制字格式如下: D7 D6 D5 D4 D3 D2 D1 D0 CL口 B 口 B组方式选择 CH口 A 口 A组方式选择 特征位 =1 =0,输出 =1,输入 =0,输出 =1,输入 =0,输出 =1,输入 =0,输出 =1,输入 0 0:方式 0 0 1:方式 1 1 X:方式 2 =0,方式0 =1,方式1 A 组 B 组 注意:对同一控制寄存器可写两种命令,故必须在命令本身用“特征位”加以区别。第二条命令的特征位=0

  10. 8255控制寄存器 可以接受的第2条命令是: 可以对PC口按位进行“置1”和“清0”操作。 具体命令格式如下:(地址同样是:A1,A0 = 11) D7 D6 D5 D4 D3 D2 D1 D0 选中的位将要输出的状态 特征位 =0 Don’t care bits 例如:设8255的控制寄存器在系统中的地址是: 0003H,要将PC5引脚置1, 可用如下指令完成: MOV DPTR,#0003H MOV A, #0BH MOVX @DPTR,A = 0,清0 = 1,置1

  11. 8255与单片机的连接: 74LS373 D0-D7 AT89C51 PA 8255 Q0Q1 A0A1 8D P0.0-P0.7 ALE G PC OE P2.7 CS PB WR WR RD RD EA RESET RESET +5V P2.7接片选/CS端,8255的(一组)寄存器地址可以是: PA口:7000H PB口:7001H PC口:7002H 命令口:7003H

  12. 8255与单片机的连接: 74LS373 微型 打印机 D0-D7 AT89C51 PA 8255 Q0Q1Q7 A0A1 8D P0.0-P0.7 PC7PC0 ALE G CS OE WR WR RD RD EA RESET RESET +5V Q7接片选/CS端,8255的(一组)寄存器地址可以是: PA口:0000H PB口:0001H PC口:0002H 命令口:0003H 也可以是:007CH,007DH,007EH,007FH……

  13. 8255的编程应用 例:初始化A口,B口,C口为基本I/O输出口 MOV DPTR,#7003H ;指向控制字寄存器 MOV A, #80H ; A,B,C口均为输出口 MOVX @DPTR, A ;装入 按照8255控制寄存器方式控制字格式写命令: D7 D6 D5 D4 D3 D2 D1 D0 CL口 B 口 B组方式选择 CH口 A 口 A组方式选择 特征位 =1 =0,输出 =1,输入 =0,输出 =1,输入 =0,输出 =1,输入 =0,输出 =1,输入 0 0:方式 0 0 1:方式 1 1 X:方式 2 =0,方式0 =1,方式1

  14. 9.1.3 并行接口的扩展(8155) ⑤可编程RAM/ IO/ CTC接口芯片8155: PC3 VCC PC4 PC2 TIMERIN PC1 8155 RESET PC0 8155与8255是Intel推出的两个广泛应用的并行口扩展芯片: 8255扩展了三个8位的并行口 8155扩展了两个8位并行口 +一个6位的并行口 +一个14位Timer+片内256字节RAM PC5 PB7 TIMEROUTPB6 IO/MPB5 CE/CEPB4 RD PB3 WRPB2 ALE PB1 AD0 PB0 AD1PA7 AD2PA6 AD3PA5 AD4PA4 AD5PA3 AD6PA2 AD7PA1 8155有一个姊妹芯片—— 8156 片选端为高有效,其他完全相同 GNDPA0 40 PIN

  15. ⑤可编程RAM/IO/CTC接口芯片8155引脚: PC3 VCC ◆ PA,PB两个8位和一个6位PC口。 ◆ AD0—AD7,地址/数据复用线。 ◆ ALE,地址锁存使能,控制地 址/数据复用。 ◆ /CE是8155的片选端,低有效; 8156的片选端是CE,高有效。 ◆ IO/M,I/O口或RAM选择线。 ◆ /RD是读信号;/WR是写信号; RESET是复位信号,高有效。 ◆ 片内1个14位减法Timer,计数 脉冲由TIMERIN输入,分频后由 TIMEROUT输出。 ◆ VCC,GND是电源端。 PC4 PC2 TIMERIN PC1 8155 RESET PC0 PC5 PB7 TIMEROUTPB6 IO/MPB5 CE/CEPB4 RD PB3 WRPB2 ALE PB1 AD0 PB0 AD1PA7 AD2PA6 AD3PA5 AD4PA4 AD5PA3 AD6PA2 AD7PA1 GNDPA0 40 PIN

  16. 8155的 6个寄存器 8155有2种工作方式(基本I/O和选通I/O)。 内部有6个寄存器, 由AD2, AD1,AD0,ALE与RD,WR, IO/M信号线选择。RESET高有效; /CE低有效。 ◆

  17. 8155命令/状态字寄存器是两个地址相同的寄存器,命令字寄存器接受控制命令(只写)。8155命令/状态字寄存器是两个地址相同的寄存器,命令字寄存器接受控制命令(只写)。 地址:A2,A1,A0=000 命令字格式如下(P179): TM2 TM1 IEB IEA PC2 PC1 PB PA 起/停与运行控制位: C 口方式选择 B口中断 A口中断 B 口 A 口 0 0 = 无操作=NOP 0 1 = 立即停计数; 若未计数=NOP 1 0 = 减到 0 停止; 若未计数=NOP 1 1 = 立即开始计数; 若正在计数则减 到 0后按新的方 式和初值计数。 0 0 = ALT1 0 1 = ALT2 1 0 = ALT3 1 1 = ALT4 =1,允许 =0,禁止 =1,允许 =0,禁止 =1,输出 =0,输入 =1,输出 =0,输入 C口方式:ALT1—C口为输入口(A、B为基本I/O)。 ALT2—C口为输出口(A、B为基本I/O)。 ALT3—C口低3位为A口选通I/O提供应答信号; B口为基本I/O,C口高3位为输出口。 ALT4—C口的低、高3位分别为A口、B口的选 通I/O提供应答信号。

  18. 8155命令/状态字寄存器是两个地址相同的寄存器,状态字寄存器存放状态信息(只读)。8155命令/状态字寄存器是两个地址相同的寄存器,状态字寄存器存放状态信息(只读)。 地址:A2,A1,A0=000 状态字格式如下(P180): X D6 D5 D4 D3 D2 D1 D0 B 口中断请求 A 口中断请求 A 口缓冲器状态 定时器中断状态 B 口中断允许 A 口缓冲器状态 A 口中断允许 =1,允许 =0,禁止 =1,已经计满 =0, 读出或复位后 =1,请求中断 =0, 无请求 =1,请求中断 =0, 无请求 =1,允许 =0,禁止 =1,满 =0,空 =1,满 =0,空 注:读取状态字信息多用在以查询方式与通过8155 扩展的外部设备进行应答,或查询定时器的状态。

  19. 8155定时/计数器——14位的减法计数器 工作时先要对低8位寄存器和高6位寄存器写入初始值。 其地址分别为:A2,A1,A0 = 100 和 101 b TIMER低8位: (地址:100b) D7 D6 D5 D4 D3 D2 D1 D0 TIMER高6位: (地址:101b) D5 D4 D3 D2 D1 D0 M2 M1

  20. 8155定时/计数器 输出信号的形式 TIMER低8位 D7 D6 D5 D4 D3 D2 D1 D0 (100) TIMER高6位 D5 D4 D3 D2 D1 D0 M2 M1 (101) M2,M1定义定时/计数器从TIMEROUT输出信号的形式: M2,M1=00 输出单个方波 单方波宽度约等于初值的一半 计数开始 计数结束 常常用作分频器(自动重装初值) M2,M1=01 输出连续方波 M2,M1=01 输出单个脉冲 负脉冲宽度约等于TIMERIN的Tin M2,M1=01 输出连续脉冲 常常用作分频器(自动重装初值)

  21. 8155定时/计数器的使用(如何初始化) ①先对(04H)(05H)寄存器装入14位初值和输 出信号形式。14位初值的范围是2—3FFFH。 ②启动定时/计数器。 即对命令/状态字寄存器(00H)的最高两位 TM2,TM1写入“11”。 ③如果定时/计数器在运行中要改换新的时间 常数,务必先装入新的初值,然后再发送一 次启动命令,即写入:TM2,TM1=11。 8155定时/计数器是减 2计数器,故: √ 最小初值为2。 √ 分频应用时,初值若为偶数,则输出等占空比 方波;若为奇数,则正半周多一个脉冲周期。

  22. 8155与单片机的连接: P0.0-P0.7 AD0-AD7 PA 8位 ALE ALE P2.2 CE P2.1 IO/M 8位 PB WR WR AT89C51 8155 RD RD RESET RESET PC 6位 EA Tin Tout +5V √8155内部有一个锁存器,故不必再需要外加74LS373 √由于用了P2.2接/CE;P2.1接IO/M,它的一组地址是: XXXX X01X XXXX X000 → 命令/状态字寄存器 XXXX X01X XXXX X001~010 → A,B,C口寄存器 XXXX X01X XXXX X100~101 → 定时器低/高位寄存器 √对8155的片内RAM寻址,必须P2.1为低,故RAM地址为: XXXX X00X 0000 0000~1111 1111等256个单元。。

  23. 9.2 显示器接口扩展

  24. 9.2.1 LED显示器的扩展(结构) LED数码管的结构:①共阳与共阴 高电平点亮 h g f e d c b a 接高电平 公共阳极 h g f …… a a a f f b b g g e c e c d d h h h g f …… a 接地 公共阴极 低电平点亮 h g f e d c b a @单片机系统扩展LED数码管时多用共阳LED: 共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“1”)点亮的,要求驱动功率较大。 @通常每个段笔画要串一个数百欧姆的降压电阻。

  25. 9.2.2 LED显示器的扩展(结构) LED数码管的译码:②硬件译码与软件译码 AT89C51 CD4511 共阴LED gfedcb a P1.3P1.2P1.1P1.0 DCBA a f b g e c d h 74LS48/CD4511是“BCD码→七段共阴译码/驱动”IC; 74LS47是“BCD码→七段共阳译码/驱动”IC 硬件译码特点:采用专用的译码/驱动器件,驱动功 率较大;增加了硬件的开销;软件编程简单;字型固 定(比如:只有七段,只可译数字,字型不好看…)。

  26. 9.2.3 LED显示器的扩展(软件译码) LED数码管的译码:软件译码 硬件译码特点: 采用专用译码/驱动器件,驱动功率较大;增加了硬件的开销;软件编程简单;字型固定(比如:只有七段,只可译数字,字型不好看……)。 +5V AT89C51 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7 a f b g e c d h 共阳LED 软件译码特点: 不用专用的译码/驱动器件,驱动功率较小;不增加硬件的开销;软件编程较复杂;字型灵活(比如:有八段,可译多种字符,字型好看……)。

  27. LED数码管的软件译码 高电平点亮 h g f e d c b a 接高电平 公共阳极 h g f …… a a a f f b b g g e c e c d d h h h g f …… a 接地 低电平点亮 公共阴极 h g f e d c b a 八段LED数码管段代码编码表(连线不同可有多种表):

  28. 9.2.4LED显示器的扩展(显示方式) LED数码管的显示方式:③静态与动态 静态显示: 各数码管在显示过程中持续得到送显信号,与各数码管接口的I/O口线是专用的。 动态显示: 各数码管在显示过程中轮流得到送显信号,与各数码管接口的I/O口线是共用的。 静态显示特点: 无闪烁,用元器件多,占I/O线多,无须扫描,节省CPU时间,编程简单。 动态显示特点: 有闪烁,用元器件少,占I/O线少,必须扫描,花费CPU时间,编程复杂。(有多个LED时尤为突出)

  29. LED数码管静态显示举例 +5V VCC TxD RxD AB AB AB CLK CLK CLK CLR CLR CLR 74LS164 74LS164 74LS164 h g f e d c b a h g f e d c b a h g f e d c b a 89C51单片机 共阳LED数码管 +5V 有几个LED就要几个74LS164,但只要数据不变, 送一次就保持住了,且不闪烁,编程十分简单。

  30. 要求:根据上图编写通过串行口和74LS164驱动共要求:根据上图编写通过串行口和74LS164驱动共 阳LED数码管查表显示的子程序。 条件:系统有6个LED数码管,待显数据(00H—09H)已放在35H—30H单元中(分别对应十万位→个位), DSPLY:MOV DPTR, #TABLE ;共阳LED数码管译码表首址 MOV R0,#30H ;待显数据缓冲区的个位地址 REDO:MOV A, @R0 ;通过R0实现寄存器间接寻址 MOVC A, @A+DPTR ;查表 MOV SBUF, A ;经串行口发送到74LS164 JNB TI, $ ;查询送完一个字节的第8位? CLR TI ;为下一字节发送作准备 INC R0 ;R0指向下一个数据缓冲单元 CJNE R0,#36H,REDO ;判断是否发完6个数? RET ;发完6个数就返回 TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳LED译码表 DB 92H, 82H, 0F8H, 80H,90H

  31. LED数码管动态显示举例 工作原理:从P0口送段代码,P1口送位选信号。段码虽同时到达 6个LED,但一次仅一个LED被选中。利用“视觉暂留”,每送一个字符并选中相应位线,延时一会儿,再送/选下一个……循环扫描即可。 +5V 7406 OC门 X 3 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 上拉电阻×14 段代码 共阴 数码管 AT89C51 P1.5 P1.4P1.3P1.2P1.2P1.0 位选线

  32. 要求:此处为共阴数码管,P0口送段代码,P1口送位选信号。通过查表实现动态显示。要求:此处为共阴数码管,P0口送段代码,P1口送位选信号。通过查表实现动态显示。 条件:待显数据(00H—09H)已放在: 7FH—7AH单元中(分别对应十万位~个位) 说明:由于用了反相驱动器7406,要用共阳译码表。 +5V 7406 OC门 X 3 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 段代码 上拉电阻×14 共阴 数码管 AT89C51 P1.5 P1.4P1.3P1.2P1.2P1.0 位选线

  33. P0口送段代码,P1口送位选信号。 待显数据已经放在: 7FH—7AH单元(分别对应十万位→个位) 使用共阳译码表。 +5V 7406 OC门 X 3 (7FH) (7EH) (7DH) (7CH) (7BH) (7AH) 十万 万位 千位 百位 十位 个位 数据缓冲区 / 显示缓冲区

  34. DIR: MOV DPTR, #DSEG ;数码管译码表首址 MOV R0,#7AH ;待显缓冲区个位地址 MOV R3,#01H ;个位的位选信号=01H LD1: MOV A, @R0 ;通过R0间接寻址 MOVC A, @A+DPTR;查表 MOV P0, A ;字段码送到P0口 MOV P1,R3 ;字位选择送到P1口 LCALL DELY;调延时1ms子程序 INC R0 ;R0 指向下一字节 MOV A,R3 JB ACC.5,LD2;判是否发完6个数? RL A ;R1指向下一个位 MOV R3,A ;位选信号存回R1 SJMP LD1;跳去再显示下一个数 LD2:RET ;发完6个数就返回 DSEG:DB 0C0H,0F9H,0A4H,0B0H,99H;共阳译码表 DB 92H, 82H, 0F8H, 80H,90H P0口送段代码,P1口送位选信号。 待显数据已经放在: 7FH—7AH单元(分别对应十万位→个位) 使用共阳译码表。

  35. 9.3 扩展键盘接口

  36. 9.3 键盘接口 键盘 单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。 单片机与计算机在键盘规模/键符设置等方面差别很大。 键盘分类 @按键值编码方式分 (硬件)编码键盘与非(硬件)编码键盘。 @按键组连接方式分 独立连接键盘与矩阵连接键盘。

  37. 按键值编码方式:编码键盘与非编码键盘 编码键盘:采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。 特点:增加了硬件开销,编码因选用器件而异,编码固定,但编程简单。适用于规模大的键盘。 非编码键盘:单片机系统多采用此类键盘 采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。 特点:不增加硬件开销,编码灵活,适用于小规模的键盘,特别是单片机系统。但编程较复杂,占CPU时间,还须软件“消颤”。

  38. 按键组连接方式:独立连接键盘与矩阵连接键盘按键组连接方式:独立连接键盘与矩阵连接键盘 独立连接键盘:每键相互独立,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。 特点:占I/O口线多,但判键速度快,多用于设置控制键、功能键。适用于键数少的场合。 矩阵连接键盘: 键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。 特点:键多时占用I/O口线少,但判键速度慢,多用于设置数字键。适用于键数多的场合。

  39. 独立连接式键盘例1: KEY: JNB P1.0,FUNC1 ;逐键判别 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.3,FUNC4 RET ;无任何键按下由此返回 FUNC1: ……;做P1.0要求的“功能1” RET FUNC2: ……;做P1.1要求的“功能2” RET FUNC3: ……;做P1.2要求的“功能3” RET FUNC4: ……;做P1.3要求的“功能4” RET P1.0P1.1P1.2P1.3 AT89C51 特点:此子程序需不断(或定时)调用,否则可能漏判。4个键的优先级由指令顺序决定。

  40. 独立连接式键盘例2 (上拉) P1.0P1.1P1.2P1.3 ORG 0003H LJMP KEY ………… KEY: JNB P1.0,FUNC1 ;逐键判别 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.3,FUNC4 RETI ;无任何键按下由此返回 FUNC1: ……;做P1.0要求的“功能1” RETI FUNC2: ……;做P1.1要求的“功能2” RETI FUNC3: ……;做P1.2要求的“功能3” RETI FUNC4: ……;做P1.3要求的“功能4” RETI & AT89C51 INT0 特点: @此子程序采用中断 查询不会漏判,省时。 @键的优先级由指令 顺序决定。 @为防止一次按键多 次中断,在功能子程 序里应安排“关/开中 断指令”并“延时”。

  41. 行列式(矩阵式)键盘接口 用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图所示。 按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。

  42. (1)行列式键盘工作原理 无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。 由于行、列线为多键共用,各按键彼此将相互发 生影响,必须将行、列线信号配合起来并作适当的处 理,才能确定闭合键的位置。 (2)按键的识别方法 a. 扫描法 图10-10(b)中3号键被按下为例,来说明此键 时如何被识别出来的。

  43. 识别键盘有无键被按下的方法,分两步进行: 第1步:识别键盘有无键按下; 第2步:如有键被按下,识别出具体的按键。 把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。 上述方法称为扫描法,即先把某一列置低电平, 其余各列为高电平,检查各行线电平的变化,如果某 行线电平为低,可确定此行列交叉点处的按键被按 下。 b. 线反转法 只需两步便能获得此按键所在的行列值,线反转 法的原理如图10-11。

  44. 第1步:列线输出为全低电平,则行线中电平由高变低第1步:列线输出为全低电平,则行线中电平由高变低 的所在行为按键所在行。 第2步:行线输出为全低电平,则列线中电平由高变低 所在列为按键所在列。 结合上述两步,可确定按键所在行和列。 (3)键盘的编码 根据实际需要灵活编码。 键盘的工作方式 单片机在忙于各项工作任务时,如何兼顾键盘的输 入,取决于键盘的工作方式。

  45. 原则:即要保证能及时响应按键操作,又不要过多占原则:即要保证能及时响应按键操作,又不要过多占 用CPU的工作时间。 通常,键盘工作方式有3种,即编程扫描、定时扫 描和中断扫描。 1. 编程扫描方式 只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。 工作过程: (1)在键盘扫描子程序中,先判断有无键按下。 方法:PA口8位输出全0,读PC口低4位状态,若PC0~ PC3为全1,则说明键盘无键按下;若不全为1,则说明 键盘可能有键按下。

  46. (2)用软件来消除按键抖动的影响。如有键按下,则(2)用软件来消除按键抖动的影响。如有键按下,则 进行下一步。 (3)求按下键的键号。 (4)等待按键释放后,再进行按键功能的处理操作。 2. 定时扫描工作方式 利用单片机内的定时器,产生10ms的定时中断,对 键盘进行扫描。 3.中断工作方式 只有在键盘有键按下时,才执行键盘扫描程序,如 无键按下,单片机将不理睬键盘。 键盘所做的工作分为三个层次,如图10-13。

  47. 第1层:单片机如何来监视键盘的输入。三种工作方第1层:单片机如何来监视键盘的输入。三种工作方 式:①编程扫描②定时扫描③中断扫描。 第2层:确定具体按键的键号。体现在按键的识别方 法上就是:①扫描法;②线反转法。 第3层:执行键处理程序。 键盘/显示器接口设计实例 一般把键盘和显示器放在一起考虑。 下面介绍利用并行I/O芯片实现键盘/显示器接口 图10-14:8031用扩展I/O接口芯片8155H实现的 6位LED显示和32键的键盘/显示器接口电路。图中 8155H也可用8255A来替代。

More Related