1 / 48

第四讲: 接口与系统扩展( 1 )

第四讲: 接口与系统扩展( 1 ). 本讲重点: 片外 RAM 与片外 ROM 扩展(参考范例应用) ; 简单 I/O 扩展 (选用锁存器与驱动器) ; 扩展 8255,8155 (初始化 , 电路及应用) ; LED 显示接口(动态与静态,硬件译码与 软件译码,电路与编程应用). RAM,ROM 存储器扩展. 第四、六章 接口芯片与系统扩展. 单片机本身资源不足以满足应用需求的情况下 , 必须借助外部器件对系统进行扩展.

xue
Download Presentation

第四讲: 接口与系统扩展( 1 )

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. 第四讲:接口与系统扩展(1) 本讲重点: 片外RAM与片外ROM扩展(参考范例应用); 简单I/O扩展 (选用锁存器与驱动器); 扩展8255,8155 (初始化,电路及应用); LED显示接口(动态与静态,硬件译码与 软件译码,电路与编程应用).

  2. RAM,ROM存储器扩展

  3. 第四、六章 接口芯片与系统扩展 单片机本身资源不足以满足应用需求的情况下,必须借助外部器件对系统进行扩展 主要介绍: 并口、RAM、ROM、键盘、LED、DAC、ADC 等接口的扩展与应用, 其中涉及到6264、2764、74LS373、74LS244、74LS245、8255、8155、 DAC0832 、ADC0809 等芯片。 以AT89C51/52应用为例进行介绍 AT89C51/52 与 MCS-51系列的8031/8032在性能、引脚、指令等方面完全兼容,此 外,内部还集成了4K/8K 的Flash ROM。

  4. 一、存储器的扩展(EPROM) P.110 ①程序存储器 EPROM 的扩展: 单片机内部没有ROM,或虽有ROM但容量太小时,必须扩展外部程序存储器方能工作。最常用的ROM器件是EPROM。 如: 2764(8K)/27128(16K) /27256(32K)/27040(512K)…… Vpp Vcc Vpp Vcc Vpp Vcc A12 A14 A12 PGM A12 PGM A7 A13 A7 A13 A7 NC 27256 27128 2764 A6 A8 A6 A8 A6 A8 A5 A9 A5 A9 A5 A9 A4 A11 A4 A11 A4 A11 A3 OE A3 OE A3 OE A2 A10 A2 A10 A2 A10 A1 CE A1 CE A1 CE A0 D7 A0 D7 A0 D7 D0 D6 D0 D6 D0 D6 D1 D5 D1 D5 D1 D5 D2 D4 D2 D4 D2 D4 GND D3 GND D3 GND D3

  5. 程序存储器 2764 的扩展: D0-D7 8Q P0.0-P0.7 8D A0-A7 ALE G OE EA PSEN OE CE A8-A12 P2.0-P2.4 锁存器74LS373 单片机 EPROM 2764 51单片机能提供16条地址线,可扩展64K字节的ROM。可以用一片EPROM,也可以用多片EPROM (如书上P115—116图所示)。

  6. 一、存储器的扩展(RAM)P.117 ②数据存储器 RAM 的扩展: 有时需要扩展外部数据存储器RAM方能工作(如数 据采集系统数据量较大,需要专设 RAM或 Flash RAM)。最常用的 RAM器件是SRAM。 如:6116(2K)/6264(8K)/62128(16K)/628128(128K) …… Vpp Vcc Vpp Vcc A12 WE A12 WE A7 A13 A7 CE2 A7 Vcc 62128 6264 A6 A8 A6 A8 A6 A8 A5 A9 A5 A9 A5 A9 6116 A4 A11 A4 A11 A4 WE A3 OE A3 OE A3 OE A2 A10 A2 A10 A2 A10 A1 CE A1 CE1 A1 CE A0 D7 A0 D7 A0 D7 D0 D6 D0 D6 D0 D6 D1 D5 D1 D5 D1 D5 D2 D4 D2 D4 D2 D4 GND D3 GND D3 GND D3

  7. 数据存储器 6264 的扩展: D0-D7 P0.0-P0.7 8D 8Q A0-A7 ALE G +5V EA OE P2.0-P2.4 A8-A12 P2.7 CE2 CE1 OE RD WR WE 锁存器74LS373 89C51单片机 SRAM6264 51单片机能提供16条地址线,可扩展64K字节的RAM。可以用一片芯片,也可以用多片RAM(参见书上P118—119图所示)。

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

  9. 二、并行接口的扩展(简单I/O) P.119 ③简单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 通常输出需要锁存,输入需要缓冲。但并非一成不变

  10. 简单I/O扩展:(缓冲/驱动器扩展)P.120 输出 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

  11. 二、并行接口的扩展(8255) P.164 ④可编程并行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

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

  13. PA,PB,PC口的三种工作方式示意图:P.167 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

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

  15. 8255控制寄存器 P.171~172 接受控制命令,告诉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

  16. 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 在P.174有这几句

  17. 8255与单片机的连接: (参见P.173) 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

  18. 8255与单片机的连接: (参见P.174) 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……

  19. 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

  20. 8255硬件实验五:8255 A.B.C口输出方波 ORG 0100H WAVE: MOV DPTR,#0FFDBH ;8255 控制字寄存器地址 MOV A, #80H ;初始化A,B,C口为基本输出口 MOVX @DPTR, A MOV A, #55H ;8位高/低电平相间输出 REPT: MOV DPTR,#0FFD8H ;8255 A口地址 MOVX @DPTR, A INC DPTR ;8255 B口地址(0FFD9H) MOVX @DPTR, A INC DPTR ;8255 C口地址(0FFDAH) MOVX @DPTR, A LCALL DELY1S ;延时 CPL A ;取反 SJMP RETP ;跳到REPT去循环

  21. 8255硬件实验五:8255 A.B.C口输出方波 PA0输出 PA1输出 PA2输出 PA3输出 PA4输出 PA5输出 PA6输出 PA7输出 PB0输出 ……………………………………

  22. 二、并行接口的扩展(8155) P.175 ⑤可编程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

  23. ⑤可编程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

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

  25. 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提供应答信号。

  26. 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 扩展的外部设备进行应答,或查询定时器的状态。

  27. 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

  28. 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 输出连续脉冲 常常用作分频器(自动重装初值)

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

  30. 8155与单片机的连接: P.182 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个单元。。

  31. 8155的编程应用P.182 例1:初始化A口,C口为输入口,B口为输出口(均为 基本I/O)定时器为24分频连续方波输出。 MOV DPTR,#0204H ;指向Timer低8位寄存器 MOV A, #24 ;初值即分频数,24=18H MOVX @DPTR, A ;装入 √根据连线应该知道它的一组地址是:0200~0205H 命令/状态字寄存器的M2,M1=01 输出连续方波 常常用作分频器(自动重装初值)

  32. 8155的编程应用P.182 例1:初始化A口,C口为输入口,B口为输出口(均为 基本I/O)定时器为24分频连续方波输出。 MOV DPTR,#0204H ;指向Timer低8位寄存器 MOV A, #24 ;初值即分频数,24=18H MOVX @DPTR, A ;装入 INC DPTR ;波形选择位与Timer高6位 MOV A, #40H ;01000000=连续方波+TH=0 MOVX @DPTR, A ;装入 MOV DPTR,#0200H ;指向命令/状态字寄存器

  33. 题目要求初始化A口,C口为输入口,B口为输出口 (均为基本I/O)此例命令字寄存器地址是:0200H。 1 1 0 0 0 0 1 0 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提供应答信号。

  34. 8155的编程应用P.182 例1:初始化A口,C口为输入口,B口为输出口(均为 基本I/O)定时器为24分频连续方波输出。 MOV DPTR,#0204H ;指向Timer低8位寄存器 MOV A, #24 ;初值即分频数,24=18H MOVX @DPTR, A ;装入 INC DPTR ;波形选择位与Timer高6位 MOV A, #40H ;01000000=连续方波+TH=0 MOVX @DPTR, A ;装入 MOV DPTR,#0200H ;指向命令/状态字寄存器 MOV A, #0C2H ;立即启动计数,A入B出C入 MOVX,@DPTR, A ;装入

  35. 显示器接口扩展

  36. 三、LED显示器的扩展(结构) P.186 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”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。 @通常每个段笔画要串一个数百欧姆的降压电阻。

  37. 三、LED显示器的扩展(结构) P.186 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 硬件译码特点:采用专用的译码/驱动器件,驱动功 率较大;增加了硬件的开销;软件编程简单;字型固 定(比如:只有七段,只可译数字,字型不好看…)。

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

  39. 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数码管段代码编码表(连线不同可有多种表):

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

  41. 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,但只要数据不变, 送一次就保持住了,且不闪烁,编程十分简单。

  42. 要求:根据上图编写通过串行口和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

  43. LED数码管动态显示举例(图见P.189) 工作原理:从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 位选线

  44. 要求:此处为共阴数码管,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 位选线

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

  46. 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单元(分别对应十万位→个位) 使用共阳译码表。

  47. 动态显示举例(循环显示“8”的实验) 实验箱从P0口扩展了两个8位的简单I/O口: 一个送段代码(字形状),地址是0DCH; 一个送位选信号(字位置),地址是0DDH。 ORG 0000H MOV R0,#0DCH ;指向字形口MOV A, #80H ;送“8”的字形代码MOVX @R0,A ;输出字形代码MOV R1,#0DDH;指向字位口MOV A,#20H ;从最高位开始LEDO:MOVX @R1,A;输出字位代码ACALL DEYS ;调延时子程序RR A ;右移一位SJMP LEDO ;循环显示“8”

  48. OVER !

More Related