实验三键盘显示接口 实验目的 了解MCS51系列单片机定时器/计数器的工作机理 2.了解键盘扫描及编码的工作原理 3.掌握键盘显示接口集成芯片8279与单片机的硬件连接,及相应编程方法 4.掌握单片机内部定时器的编程方法。 二、实验器材: 微机一台,AEDK仿真器一套,实验箱一套,示波器一台 实验原理 1.定时器/计数器 MCS-51系列单片机有两个定时器/计数器,即:定时器/计数器0和1。在模式控制寄 存器TMOD中各有一个控制位(C/T),分别用于控制定时器计数器0和1是工作在定时 器方式还是计数器方式 选择定时器工作方式时,计数输入是内部时钟脉冲,每个机器周期使寄存器的值加1。 选择计数器工作方式时,计数脉冲来自相应的外部输入引脚T0或T1,当输入信号由 1跳变至0时,计数寄存器的值加1 除了可以选择定时器或计数器工作方式外,每个定时器/计数器还有4种操作模式,其 中前三种模式对两者都是一样的,只有模式3对两者不同。 (1)模式0 在通过TMOD寄存器把定时器/计数器0或1置为模式0时,它被设置成13位的定时 器/计数器。TL1的高三位未用。在此模式下,允许计数的控制逻辑由表达式 TRx·GATE+INTx) (其中ⅹ=0或1) 的值决定。其值为真时,允许计数。式中TRx是定时器控制寄存器TCON的一个控制位, GATE是模式控制寄存器TMOD的一个控制位,INIx是两个外部中断的输入端之一。 (2)模式1 模式1与模式0几乎完全相同,唯一的差别是:模式1中定时器/计数器是以全16位 参与操作的 (3)模式2 模式2把定时器寄存器TLx配置成一个可以自动重装载的8位计数器。TLx计数溢出 时,不仅使溢出标志置1,而且还自动把THx中的内容重装载到TLx中 (4)模式3
实验三 键盘显示接口 一、 实验目的 1. 了解 MCS51 系列单片机定时器/计数器的工作机理; 2. 了解键盘扫描及编码的工作原理; 3. 掌握键盘显示接口集成芯片 8279 与单片机的硬件连接,及相应编程方法; 4. 掌握单片机内部定时器的编程方法。 二、 实验器材: 微机一台,AEDK 仿真器一套,实验箱一套,示波器一台。 三、 实验原理 1. 定时器/计数器 MCS-51 系列单片机有两个定时器/计数器,即:定时器/计数器 0 和 1。在模式控制寄 存器 TMOD 中各有一个控制位(C/T),分别用于控制定时器/计数器 0 和 1 是工作在定时 器方式还是计数器方式。 选择定时器工作方式时,计数输入是内部时钟脉冲,每个机器周期使寄存器的值加 1。 选择计数器工作方式时,计数脉冲来自相应的外部输入引脚 T0 或 T1,当输入信号由 1 跳变至 0 时,计数寄存器的值加 1。 除了可以选择定时器或计数器工作方式外,每个定时器/计数器还有 4 种操作模式,其 中前三种模式对两者都是一样的,只有模式 3 对两者不同。 (1) 模式 0 在通过 TMOD 寄存器把定时器/计数器 0 或 1 置为模式 0 时,它被设置成 13 位的定时 器/计数器。TL1 的高三位未用。在此模式下,允许计数的控制逻辑由表达式 +• INTx) GATE(TRx (其中 x=0 或 1) 的值决定。其值为真时,允许计数。式中 TRx 是定时器控制寄存器 TCON 的一个控制位, GATE 是模式控制寄存器 TMOD 的一个控制位,INTx 是两个外部中断的输入端之一。 (2) 模式 1 模式 1 与模式 0 几乎完全相同,唯一的差别是:模式 1 中定时器/计数器是以全 16 位 参与操作的。 (3) 模式 2 模式 2 把定时器寄存器 TLx 配置成一个可以自动重装载的 8 位计数器。TLx 计数溢出 时,不仅使溢出标志置 1,而且还自动把 THx 中的内容重装载到 TLx 中。 (4) 模式 3 14
在此模式下,定时器/计数器0和1的工作情况是不同的。对于定时器/计数器1,设置 为模式3将使它保持原有的计数值,即如同使它停止计数。对于定时器汁计数器0,设置为 模式3将使TL0和TH0成为两个互相独立的8位计数器。 2.定时器/计数器控制和状态寄存器 (1)模式控制寄存器TMOD 特殊功能寄存器TMOD用于控制定时器计数器0或1的工作模式,其定义见表 3.1 表3.1TMOD定义 MI MO GATE C/ MI MO 其中D4-D7对应定时器/计数器1,D0-D3对应定时器/计数器0,功能说明如下 GATE选通门。当GATE=1时,只有INTx引脚为高电平且TRx置1时,相应的 定时器/计数器才被选通,这时可用于测量INIx端出现的正脉冲的宽度。若GATE=0 则只要TRx置1,定时器/计数器就被选通,而与INIx端的电平无关 C/T计数器方式和定时器方式选择位。C/=0时,设置为定时器方式;C/=1时, 设置为计数器方式 表3.2工作模式控制位 MI MO 工作模式 00模式0。TLx的低5位与THx的8位构成13位定时器计数器 01模式1。TLx与THx构成16位定时器计数器。 10模式2。TLx为8位自动重装载定时器/计数器,TH存自动重装载值 模式3。定时器/计数器0,分成两个8位计数器。定时器/计数器1, 停止计数。 40口vcc M和M0工作模式控制位。M1和MO的取值与工作3日2 39口RL1 cLK日3 模式的对应关系如表3.2 IRQ日 37A CNTL/S (2)控制寄存器TCON HL4日5 36日sHF 与定时器/计数器有关的控制寄存器TCON之高四位 RL5日6 35口SL3 RL6口7 SL TF1、TRl、TF0、TRO,其定义见实验二实验原理部分H7B 的有关叙述。 30日0UTB1 3.8279功能介绍 DB0口12 29口0UTB2 DB1 13 8279是可编程的键盘、显示接口芯片。它既具有按键处理 DB2口14 Z7 P OUTAO DB3日15 26日0UTA1 内部有键盘F(先进先出堆栈)/传感器,双重功能的8*8=64B05个2人叫 功能,又具有自动显示功能,在单片机系统中应用很广泛。8279DB46 BD RAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传DB7d9 Cs 图3.18279引脚图
在此模式下,定时器/计数器 0 和 1 的工作情况是不同的。对于定时器/计数器 1,设置 为模式 3 将使它保持原有的计数值,即如同使它停止计数。对于定时器/计数器 0,设置为 模式 3 将使 TL0 和 TH0 成为两个互相独立的 8 位计数器。 2. 定时器/计数器控制和状态寄存器 (1)模式控制寄存器 TMOD 特殊功能寄存器 TMOD 用于控制定时器/计数器 0 或 1 的工作模式,其定义见表 3.1 表 3.1 TMOD 定义 D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 其中 D4---D7 对应定时器/计数器 1,D0---D3 对应定时器/计数器 0,功能说明如下: GATE 选通门。当 GATE=1 时,只有 INTx 引脚为高电平且 TRx 置 1 时,相应的 定时器/计数器才被选通,这时可用于测量 INTx 端出现的正脉冲的宽度。若 GATE=0, 则只要 TRx 置 1,定时器/计数器就被选通,而与 INTx 端的电平无关。 C/T 计数器方式和定时器方式选择位。C/T=0 时,设置为定时器方式;C/T=1 时, 设置为计数器方式。 表 3.2 工作模式控制位 工 作 模 式 M1 M0 0 0 模式 0。TLX的低 5 位与THX的 8 位构成 13 位定时器/计数器。 0 1 模式 1。TLX与THX构成 16 位定时器/计数器。 1 0 模式 2。TLX为 8 位自动重装载定时器/计数器,THX存自动重装载值。 模式 3。定时器/计数器 0,分成两个 8 位计数器。定时器/计数器 1, 停止计数。 1 1 M1 和 M0 工作模式控制位。M1 和 M0 的取值与工作 模式的对应关系如表 3.2 (2)控制寄存器 TCON 与定时器/计数器有关的控制寄存器 TCON 之高四位 TF1、 TR1 、TF0、 TR0,其定义见实验二实验原理部分 的有关叙述。 3. 8279功能介绍 8279 是可编程的键盘、显示接口芯片。它既具有按键处理 功能,又具有自动显示功能,在单片机系统中应用很广泛。8279 内部有键盘 FIFO(先进先出堆栈)/传感器,双重功能的 8*8=64B RAM,键盘控制部分可控制 8*8=64 个按键或 8*8 阵列方式的传 图 3.1 8279 引脚图 15
感器。该芯片能自动消抖并具有双键锁定保护功能。显示RAM容量为16*8,即显示器最大 配置可达16位LED数码显示 (1)数据线 DB0→DB7是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送CPU和 8279之间的数据和命令。 (2)地址线 /CS=0选中8279,当A0=1时,为命令字及状态字地址;当A0=0时,为片内数据地址, 故8279芯片占用2个端口地址。 (3)控制线 CLK:8279的时钟输入线。 IRQ:中断请求输出线,高电平有效 /RD、/wR:读、写输入控制线 SL0—-SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线 L0—RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。 SHIFT:来自外部键盘或传感器矩阵的输入信号,它是8279键盘数据的次高位即D6位的 状态,该位状态控制键盘上/下档功能。在传感器方式和选通方式中,该引脚无用。 MIL/S:控制/选通输入线,高电平有效。键盘方式时,键盘数据最高位(D7)的信号输 入到该引脚,以扩充键功能:选通方式时,当该引脚信号上升沿到时,把RL0-—RL7的数 据存入 FIFO RAM中 OUTA0--0UTA3:通常作为显示信号的高4位输出线 oUTB0--UTB3:通常作为显示信号的低4位输出线 /BD:显示熄灭输出线,低电平有效。当/BD=0时将显示全熄灭 4.8279的工作方式 8279有三种工作方式:键盘方式、显示方式和传感器方式 (1)键盘工作方式 8279在键盘工作方式时,可设置为双键互锁方式和N键循回方式。 双键互锁方式:若有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最 后一个被释放的键,并把该键值送入 FIFO RAM中。 N键循回方式:一次按下任意个键均可被识别,按键值按扫描次序被送入 FIFO RAM中。 2)显示方式 8279的显示方式又可分为左端入口和右端入口方式。 显示数据只要写入显示RAM,则可由显示器显示出来,因此显示数据写入显示RM的 顺序,决定了显示的次序 左端入口方式即显示位置从显示器最左端1位(最高位)开始,以后显示的字符逐个 向右顺序排列;右端入口方式即显示位置从显示器最右端1位(最低位)开始,已显示的 字符逐个向左移位。但无论左右入口,后输入的总是显示在最右边 (3)传感器方式 传感器方式是把传感器的开关状态送入传感器RAM中。当CPU对传感器阵列扫描时
感器。该芯片能自动消抖并具有双键锁定保护功能。显示 RAM 容量为 16*8,即显示器最大 配置可达 16 位 LED 数码显示。 (1)数据线 DB0→DB7 是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送 CPU 和 8279 之间的数据和命令。 (2)地址线 /CS=0 选中 8279,当 A0=1 时,为命令字及状态字地址;当 A0=0 时,为片内数据地址, 故 8279 芯片占用 2 个端口地址。 (3)控制线 CLK:8279 的时钟输入线。 IRQ:中断请求输出线,高电平有效。 /RD、/WR:读、写输入控制线。 SL0---SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。 RL0---RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。 SHIFT:来自外部键盘或传感器矩阵的输入信号,它是 8279 键盘数据的次高位即 D6 位的 状态,该位状态控制键盘上/下档功能。在传感器方式和选通方式中,该引脚无用。 CNTL/S:控制/选通输入线,高电平有效。键盘方式时,键盘数据最高位(D7)的信号输 入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把 RL0---RL7 的数 据存入 FIFO RAM 中。 OUTA0---OUTA3:通常作为显示信号的高 4 位输出线。 OUTB0---OUTB3:通常作为显示信号的低 4 位输出线。 /BD:显示熄灭输出线,低电平有效。当/BD=0 时将显示全熄灭。 4. 8279的工作方式 8279 有三种工作方式:键盘方式、显示方式和传感器方式。 (1) 键盘工作方式 8279 在键盘工作方式时,可设置为双键互锁方式和 N 键循回方式。 双键互锁方式:若有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最 后一个被释放的键,并把该键值送入 FIFO RAM 中。 N 键循回方式:一次按下任意个键均可被识别,按键值按扫描次序被送入 FIFO RAM 中。 (2) 显示方式 8279 的显示方式又可分为左端入口和右端入口方式。 显示数据只要写入显示 RAM,则可由显示器显示出来,因此显示数据写入显示 RAM 的 顺序,决定了显示的次序。 左端入口方式即显示位置从显示器最左端 1 位(最高位)开始,以后显示的字符逐个 向右顺序排列;右端入口方式即显示位置从显示器最右端 1 位(最低位)开始,已显示的 字符逐个向左移位。但无论左右入口,后输入的总是显示在最右边。 (3) 传感器方式 传感器方式是把传感器的开关状态送入传感器 RAM 中。当 CPU 对传感器阵列扫描时, 16
旦发现传感器状态发生变化就发出中断请求(IRQ置1),中断响应后转入中断处理程序。 5. 8279的命令字及其格式 (说明:读者也可直接根据本实验讲义第24页8279命令一览表设置命令字) 8279的各种工作方式都要通过对命令寄存器的设置来实现。8279共有8种命令,通 过这些命令设置工作寄存器,来选择各种工作方式。命令寄存器共8位,格式为 L D7 D6 D5 D3 D2 DID0 命令类型 命令内容 如上图,8279的一条命令由两大部分组成,一部分表征命令类型,为命令特征位,由 命令寄存器高3位D7--D5决定。D7-D5三位的状态可组合出8种形式,对应8类命令。 另一部分为命令的具体内容,由D4-D0决定。每种特征所代表的命令如表3.3所示 表338279命令特征表 代表的命令类型 000 建盘/显示命令 001 时钟编程命令 读FIFO/传感器RAM命令 读显示器RAM命令 写显示命令 显示禁止/熄灭命令 110 清除命令 111 结束中断/出错方式设置命令 下面详细说明各种命令中,D4-D0各位的设置方法,以便确定各种命令字。 (1)键盘/显示命令 特征位D7D6D5=000 D4、D3两位用来设定4种显示方式,D2—D0三位用以设定8种键盘/显示扫描方式, 分别如表3.4和表3.5所示 表34显示方式 D4 D3 显示方式 8个字符显示,左端入口方式 0 16个字符显示,左端入口方式 个字符显示,右端入口方式 16个字符显示,右端入口方式
一旦发现传感器状态发生变化就发出中断请求(IRQ 置 1),中断响应后转入中断处理程序。 5. 8279的命令字及其格式 (说明:读者也可直接根据本实验讲义第 24 页 8279 命令一览表设置命令字) 8279 的各种工作方式都要通过对命令寄存器的设置来实现。8279 共有 8 种命令,通 过这些命令设置工作寄存器,来选择各种工作方式。命令寄存器共 8 位,格式为: D7 D6 D5 D4 D3 D2 D1 D0 命令类型 命令内容 如上图,8279 的一条命令由两大部分组成,一部分表征命令类型,为命令特征位,由 命令寄存器高 3 位 D7---D5 决定。D7---D5 三位的状态可组合出 8 种形式,对应 8 类命令。 另一部分为命令的具体内容,由 D4---D0 决定。每种特征所代表的命令如表 3.3 所示 表 3.3 8279 命令特征表 D7 D6 D5 代表的命令类型 0 0 0 键盘/显示命令 0 0 1 时钟编程命令 0 1 0 读 FIFO/传感器 RAM 命令 0 1 1 读显示器 RAM 命令 1 0 0 写显示命令 1 0 1 显示禁止/熄灭命令 1 1 0 清除命令 1 1 1 结束中断/出错方式设置命令 下面详细说明各种命令中,D4---D0 各位的设置方法,以便确定各种命令字。 (1) 键盘/显示命令 特征位 D7 D6 D5=000 D4、D3 两位用来设定 4 种显示方式,D2---D0 三位用以设定 8 种键盘/显示扫描方式, 分别如表 3.4 和表 3.5 所示。 表 3.4 显示方式 D4 D3 显示方式 0 0 8 个字符显示,左端入口方式 0 1 16 个字符显示,左端入口方式 1 0 8 个字符显示,右端入口方式 1 1 16 个字符显示,右端入口方式 17
表35键盘/显示扫描方式 D2 DI DO 键盘、显示扫描方式 000 编码扫描键盘,双键锁定 001 译码扫描键盘,双键锁定 编码扫描键盘,N键轮回 译码扫描键盘,N键轮回 100 编码扫描传感器矩阵 101 译码扫描传感器矩阵 选通输入,编码显示扫描 选通输入,译码显示扫描 表3.5中所谓译码扫描指扫描代码直接由扫描线SL0--S3输出,每次只有1位是低 电平(4选1)。所谓编码扫描是指扫描代码经SL0—-SL3外接译码器输出。 由于键盘最大8*8=64个键,由SL0-SL2接3—8译码器,译码器的8位输出作为 键盘扫描输出线(列线),RL0—-R7为输入线(行线)。 8279最多驱动16位显示器,故可由SL0—-SL3接4-—-16译码器,译码器的16位输 出作为显示扫描输出线(16选1),决定第几位显示。显示字段码由OUTA0-—0UTA3和 OUTB0--OUTB3输出 表3.3、表3.4、表3.5三个表相互组合可得到各种键盘显示命令。 例1:若希望设置8279为键盘译码扫描方式、N键轮回,显示8个字符、右端入口方式, 确定其命令字 根据题目要求可进行分析,因为具有下列条件 是键盘/显示命令特征位:D7D6D5=000(表3.3) 8个字符右端入口显示:D4D3=10(表3.4); 键盘译码扫描,N键轮回:D2D1D0=011(表3.5) 所以8位命令器存器状态D7-D0=00010011B,即该命令字13H送入命令寄存器口地址 则可满足题目要求 例2:若已知命令字为08H,判断8279工作方式 因为命令字为08H即D7-D0=00001000B,显然D7D6D5=000,该条命令为键盘/显 示命令,DAD3=01为16字符左端入口显示方式,D2DlD0=000,键盘为编码扫描、双键锁定 方式。 (2)时钟编程命令 特征位D7D6D5=001 D4—-D0用来设定分频系数,分频系数范围在0-31之间 有的设计会用单片机的ALE端接8279的CLK端,但ALE端输出的脉冲频率比8279所 需工作时钟频率(100KHz)高出很多,通过设置分频系数就可使8279得到所需的时钟频 率。(注意:实验板上8279的CLK并不直接连到ALE)。 例:若8279CLK的输入信号频率为3.1Mz,则分频系数应为31D=1FH,于是 D4D0=11111,则控制字为:D7--D0=0011113FH
表 3.5 键盘/显示扫描方式 D2 D1 D0 键盘、显示扫描方式 0 0 0 编码扫描键盘,双键锁定 0 0 1 译码扫描键盘,双键锁定 0 1 0 编码扫描键盘,N 键轮回 0 1 1 译码扫描键盘,N 键轮回 1 0 0 编码扫描传感器矩阵 1 0 1 译码扫描传感器矩阵 1 1 0 选通输入,编码显示扫描 1 1 1 选通输入,译码显示扫描 表 3.5 中所谓译码扫描指扫描代码直接由扫描线 SL0---SL3 输出,每次只有 1 位是低 电平(4 选 1)。所谓编码扫描是指扫描代码经 SL0---SL3 外接译码器输出。 由于键盘最大 8*8=64 个键,由 SL0---SL2 接 3---8 译码器,译码器的 8 位输出作为 键盘扫描输出线(列线),RL0---RL7 为输入线(行线)。 8279 最多驱动 16 位显示器,故可由 SL0---SL3 接 4---16 译码器,译码器的 16 位输 出作为显示扫描输出线(16 选 1),决定第几位显示。显示字段码由 OUTA0---OUTA3 和 OUTB0---OUTB3 输出。 表 3.3、表 3.4、表 3.5 三个表相互组合可得到各种键盘显示命令。 例 1:若希望设置 8279 为键盘译码扫描方式、N 键轮回,显示 8 个字符、右端入口方式, 确定其命令字。 根据题目要求可进行分析,因为具有下列条件: 是键盘/显示命令特征位:D7 D6 D5=000 (表 3.3); 8 个字符右端入口显示:D4 D3=10(表 3.4); 键盘译码扫描,N 键轮回:D2 D1 D0=011(表 3.5); 所以 8 位命令器存器状态 D7---D0=00010011B,即该命令字 13H 送入命令寄存器口地址 则可满足题目要求。 例 2:若已知命令字为 08H,判断 8279 工作方式。 因为命令字为 08H 即 D7---D0=00001000B,显然 D7 D6 D5=000,该条命令为键盘/显 示命令,D4D3=01 为 16 字符左端入口显示方式,D2D1D0=000,键盘为编码扫描、双键锁定 方式。 (2) 时钟编程命令 特征位 D7 D6 D5=001 D4---D0 用来设定分频系数,分频系数范围在 0---31 之间。 有的设计会用单片机的 ALE 端接 8279 的 CLK 端,但 ALE 端输出的脉冲频率比 8279 所 需工作时钟频率(100KHz)高出很多,通过设置分频系数就可使 8279 得到所需的时钟频 率。(注意:实验板上 8279 的 CLK 并不直接连到 ALE)。 例:若 8279 CLK 的输入信号频率为 3.1 MHz,则分频系数应为 31D=1FH,于是 D4---D0=11111,则控制字为:D7---D0=00111111B=3FH 18
(3)读FIF0/传感器R_M命令。 特征位D7D6D5=010 D2-D0为8279中FIFO及传感器RAM的首地址 D3无效位。 D4控制RAM地址自动加1位:D4=1时,CPU读完一个数据,RAM地址自动加1,准备 读下一个单元数据;D4=0时,CPU读完一个数据,地址不变。 例:欲编程使单片机连续读8279内FIFO/传感器RAM中000111单元的数据,设置读命 分析:因为要连续读数,地址又连续。所以最好设置为自动加1方式,即D4=1,RAM 内首地址000即D2—-D0=00,再加上特征位,所以该命令控制字为 D7——D0=01010000B=5OH(无用位D3设为0)。送入50H控制字,在执行读命令时,先从 FIFO/传感器RAM中000单元读数,读完一个数,地址自动加1,又从001单元读数,依次 类推 直到读完所需数据。 (4)读显示RAM命令 特征位D7D6D5=011 D4=1RAM地址自动加1,D4=0不加1。 D3-D0为显示RAM中的地址。 例:欲读显示RAM中1000单元地址,求命令字 分析:因为只读一个数,地址不需自动加1,即设置DA=0,特征位为011,地址为1000 所以其控制命令字为D7--D0=01101000B=68Hl (5)写显示RM命令 特征位D7D6D5=100 D4是地址自动加1控制,D4=1,地址自动加1:;D4=0,地址不加1。D3-D0是欲写 入的RAM地址,若连续写入则表示RM首地址。命令格式同读显示RAM (6)显示器禁止写入/熄灭命令 特征位D7D6D5=101 D4:无用位 D3:禁止A组显示RAM写入,D3=1,禁止 D2:禁止B组显示RAM写入,D2=1,禁止 D1:A组显示熄灭控制。D1=1,熄灭;D1=0,恢复显示。 D0:B组显示熄灭控制。D0=1,熄灭;D0=0,恢复显示 利用该命令可以控制A、B两组显示器,哪组继续显示,哪组被熄灭 例:假设A、B两组灯均已被点亮,现在希望A组灯继续亮,B组灯熄灭,确定其命令字。 分析:根据命令格式,A组灯继续亮应禁止A组RAM再写入其他数据,故D3=1;B组 显示熄灭D0=1,除特征位外其余位设为“0”。故其控制命令字为D7-D0=10101001B=A9H (7)清除(显示RAM和FIF0中的内容)命令 特征位D7D6D5=110 D0为总清除特征位,DO=1把显示RAM和FIFO全部清除
(3) 读 FIFO/传感器 RAM 命令。 特征位 D7 D6 D5=010 D2---D0 为 8279 中 FIFO 及传感器 RAM 的首地址。 D3 无效位。 D4 控制 RAM 地址自动加 1 位:D4=1 时,CPU 读完一个数据,RAM 地址自动加 1,准备 读下一个单元数据;D4=0 时,CPU 读完一个数据,地址不变。 例:欲编程使单片机连续读 8279 内 FIFO/传感器 RAM 中 000---111 单元的数据,设置读命 令。 分析:因为要连续读数,地址又连续。所以最好设置为自动加 1 方式,即 D4=1,RAM 内 首 地 址 000 即 D2---D0=000 , 再 加 上 特 征 位 , 所 以 该 命 令 控 制 字 为 : D7---D0=01010000B=50H (无用位 D3 设为 0)。送入 50H 控制字,在执行读命令时,先从 FIFO/传感器 RAM 中 000 单元读数,读完一个数,地址自动加 1,又从 001 单元读数,依次 类推, 直到读完所需数据。 (4) 读显示 RAM 命令 特征位 D7 D6 D5=011 D4=1 RAM 地址自动加 1,D4=0 不加 1。 D3---D0 为显示 RAM 中的地址。 例:欲读显示 RAM 中 1000 单元地址,求命令字。 分析:因为只读一个数,地址不需自动加 1,即设置 D4=0,特征位为 011,地址为 1000, 所以其控制命令字为 D7---D0=01101000B=68H。 (5) 写显示 RAM 命令 特征位 D7 D6 D5=100。 D4 是地址自动加 1 控制,D4=1,地址自动加 1;D4=0,地址不加 1。D3---D0 是欲写 入的 RAM 地址,若连续写入则表示 RAM 首地址。命令格式同读显示 RAM。 (6) 显示器禁止写入/熄灭命令 特征位 D7 D6 D5=101 D4:无用位。 D3:禁止 A 组显示 RAM 写入,D3=1,禁止。 D2:禁止 B 组显示 RAM 写入,D2=1,禁止。 D1:A 组显示熄灭控制。D1=1,熄灭;D1=0,恢复显示。 D0:B 组显示熄灭控制。D0=1,熄灭;D0=0,恢复显示。 利用该命令可以控制 A、B 两组显示器,哪组继续显示,哪组被熄灭。 例:假设 A、B 两组灯均已被点亮,现在希望 A 组灯继续亮,B 组灯熄灭,确定其命令字。 分析:根据命令格式,A 组灯继续亮应禁止 A 组 RAM 再写入其他数据,故 D3=1;B 组 显示熄灭 D0=1,除特征位外其余位设为“0”。故其控制命令字为 D7---D0=10101001B=A9H。 (7) 清除(显示 RAM 和 FIFO 中的内容)命令 特征位 D7 D6 D5=110 D0 为总清除特征位,D0=1 把显示 RAM 和 FIFO 全部清除。 19
D1=1清除FIFO状态,使中断输出线复位,传感器RAM的读出地址清0。 D4--D2:设定清除显示RAM的方式,如表3.6所示。 表36清除显示RAM方式 D4 D3 D2 清除方式 0 X 将全部显示RAM清为0 将显示RAM置为20H(A组=0010,B组=0000 将显示RAM置为FFH 0 D0=0,不清除;D0=1,仍按上述方式清除 例:将全部显示RAM清0,其命令字为:D7-D0=11010001B=D1H (8)结束中断/出错方式设置命令 特征位D7D6D5=111 D4=1时(其D3-—D0位任意)有两种不同作用 第一:在传感器方式,用此命令结束传感器RAM的中断请求。 因为在传感器工作方式时,每当传感器状态发生变化,扫描电路自动将传感器状态写 入传感器RAM,同时发出中断申请,即将IRQ置高电平,并禁止再写入传感器RAM。中断 响应后,从传感器RAM读走数据进行中断处理,但中断标志IRQ的撤除分两种情况。若读 RAM地址自动加1标志位为“0”,中断响应后IRQ自动变低,撤消中断申请;若读RAM地 址自动加1标志位为“1”,中断响应后IRQ不能自动变低,必须通过结束中断命令来撤消 中断请求。 第二:在设定为键盘扫描N键轮回方式时作为特定错误方式设置命令。 在键盘扫描N键轮回工作方式,又给8279写入结束中断/错误方式命令,则8279将 以一种特定的错误方式工作,即在8279消抖周期内,如果发现多个按键同时按下,则将 FIFO状态字中错误特征位置“1”,并发出中断请求阻止写入 FIFO RAM 根据上述8种命令可以确定8279的工作方式。在8279初始化时把各种命令送入命令 地址口,根据其特征位可以把命令存入相应的命令寄存器,执行程序时8279能自动寻址 相应的命令寄存器。 8279的状态字及其格式 状态字显示出8279的工作状态。状态字和8种命令字共用一个地址口。当A0=1时, 从8279命令/状态口地址读出的是状态字。状态字各位意义如下: D7:D7=1表示显示无效,此时不能对显示RAM写入。 D6:D6=1表示至少有一个键闭合:在特殊错误方式时有多键同时按下错误。 D5:D5=1表示 FIFO RAM已满,再输入一个字则溢出。 D4:D4=1表示 FIFO RAM中已空,无数据可读 D3:D3=1表示 FIFO RAM中数据已满 FIFO RAM中数据个数 显然,状态字主要用于键盘和选通工作方式,以指示 FIFO RAM中的字符数及有无错 误发生
D1=1 清除 FIFO 状态,使中断输出线复位,传感器 RAM 的读出地址清 0。 D4---D2:设定清除显示 RAM 的方式,如表 3.6 所示。 表 3.6 清除显示 RAM 方式 D4 D3 D2 清除方式 例:将全部显示 RAM 清 0,其命令字为:D7---D0=11010001B=D1H (8) 结束中断/出错方式设置命令 特征位 D7 D6 D5=111 D4=1 时(其 D3---D0 位任意)有两种不同作用。 第一:在传感器方式,用此命令结束传感器 RAM 的中断请求。 因为在传感器工作方式时,每当传感器状态发生变化,扫描电路自动将传感器状态写 入传感器 RAM,同时发出中断申请,即将 IRQ 置高电平,并禁止再写入传感器 RAM。中断 响应后,从传感器 RAM 读走数据进行中断处理,但中断标志 IRQ 的撤除分两种情况。若读 RAM 地址自动加 1 标志位为“0”,中断响应后 IRQ 自动变低,撤消中断申请;若读 RAM 地 址自动加 1 标志位为“1”,中断响应后 IRQ 不能自动变低,必须通过结束中断命令来撤消 中断请求。 第二:在设定为键盘扫描 N 键轮回方式时作为特定错误方式设置命令。 在键盘扫描 N 键轮回工作方式,又给 8279 写入结束中断/错误方式命令,则 8279 将 以一种特定的错误方式工作,即在 8279 消抖周期内,如果发现多个按键同时按下,则将 FIFO 状态字中错误特征位置“1”,并发出中断请求阻止写入 FIFO RAM。 根据上述 8 种命令可以确定 8279 的工作方式。在 8279 初始化时把各种命令送入命令 地址口,根据其特征位可以把命令存入相应的命令寄存器,执行程序时 8279 能自动寻址 相应的命令寄存器。 6. 8279的状态字及其格式 状态字显示出 8279 的工作状态。状态字和 8 种命令字共用一个地址口。当 A0=1 时, 从 8279 命令/状态口地址读出的是状态字。状态字各位意义如下: D7:D7=1 表示显示无效,此时不能对显示 RAM 写入。 D6:D6=1 表示至少有一个键闭合;在特殊错误方式时有多键同时按下错误。 D5:D5=1 表示 FIFO RAM 已满,再输入一个字则溢出。 D4:D4=1 表示 FIFO RAM 中已空,无数据可读。 D3:D3=1 表示 FIFO RAM 中数据已满。 D2---D0:FIFO RAM 中数据个数。 显然,状态字主要用于键盘和选通工作方式,以指示 FIFO RAM 中的字符数及有无错 误发生。 0 X 将全部显示 RAM 清为 0 1 1 0 将显示 RAM 置为 20H(A 组=0010,B 组=0000) 1 1 将显示 RAM 置为 FFH 0 D0=0,不清除;D0=1,仍按上述方式清除 20
8279数据输入/输出格式 对8279输入/输出数据不仅要先确定地址口,而且数据存放也要按一定格式,其格式 在键盘和传感器方式有所不同 (1)键盘扫描方式数据输入格式 键盘的行号、列号及控制键位置如下 CNTL SLO 由刚x的x决定 D7:控制键“CNTL”状态。 D6:控制键“ SHIFT”状态。 D5DA4D3:被按键所在列号(由SL0-SL2)状态确定)。 D2D1D0:被按键所在行号(由RL0-RL7)状态确定)。 (2)传感器方式及选通方式数据输入格式 此种方式8位输入数据为RL0-RL7的状态。格式如下 RL7 RL6 RL5 RLs RL3 RL2 RLI RLO 8.8279译码和编码方式 8279的内、外译码由键盘/显示命令字的最低位D0选择决定。 D0=1选择内部译码,也称为译码方式,SL0-SL3每时刻只能有一位为低电平。此时 8279只能接4位显示器和4×8矩阵式键盘。 D0=0选择内部编码,也称为编码方式,SL0SL3为计数分频式波形输出,显示方式 可外接4-16译码器驱动16位显示器。键盘方式可接3-8译码器,构成8×8矩阵式键 1015|3 bc d gdp 图3.2四位LED一5461AH(共阴极)管脚示意图 (实物数码显示器的左下角为1号引脚,逆时针排序) 四、参考程序 Z8279 EQU OFF82H 状态/命令口地址 D8279 OFF8OH 823 数据口地址
7. 8279数据输入/输出格式 对 8279 输入/输出数据不仅要先确定地址口,而且数据存放也要按一定格式,其格式 在键盘和传感器方式有所不同。 (1) 键盘扫描方式数据输入格式 键盘的行号、列号及控制键位置如下: D7 D6 D5 D4 D3 D2 D1 D0 CNTL SHIFT SL2 SL1 SL0 由 RLx 的 x 决定 D7:控制键 “CNTL”状态。 D6:控制键 “SHIFT”状态。 D5 D4 D3:被按键所在列号(由 SL0---SL2)状态确定)。 D2 D1 D0:被按键所在行号(由 RL0---RL7)状态确定)。 (2) 传感器方式及选通方式数据输入格式 此种方式 8 位输入数据为 RL0---RL7 的状态。格式如下: D7 D6 D5 D4 D3 D2 D1 D0 RL7 RL6 RL5 RL4 RL3 RL2 RL1 RL0 8. 8279译码和编码方式 8279 的内、外译码由键盘/显示命令字的最低位 D0 选择决定。 D0=1 选择内部译码,也称为译码方式,SL0—SL3 每时刻只能有一位为低电平。此时 8279 只能接 4 位显示器和 4×8 矩阵式键盘。 D0=0 选择内部编码,也称为编码方式,SL0—SL3 为计数分频式波形输出,显示方式 可外接 4—16 译码器驱动 16 位显示器。键盘方式可接 3—8 译码器,构成 8×8 矩阵式键 盘。 D0 a f e b c d g dp 12 9 8 6 11 7 4 2 1 10 5 3 edcba f g dp D7 图 3.2 四位 LED — 5461AH(共阴极)管脚示意图 (实物数码显示器的左下角为 1 号引脚,逆时针排序) 四、 参考程序 Z8279 EQU 0FF82H ;8279 状态/命令口地址 D8279 EQU 0FF80H ;8279 数据口地址 21
LEDCLS EQU ODIH;显示RAM全部清除 LEDWRO EQU H;写显示RAM方式:从0000B单元写入,写完地址自加 LEDFEQ EQU XXH;定分频系数 提示:定分频系数首先要了解EXP51实验板电路8279芯片CLK端输入的时钟频 LEDMOD EQUⅹXH;右端入口、8位字符显示、双键锁定、内部编码扫描方式 =主程序开始* ORG 0000H AJMP START ORG 0050H START MOV SP#6OH LCALL INIT8279 ;初始化8279 /键盘查询* KEYBOARD MOV DPTR, #Z8279 MOVX A, @DPTR ANL A#OFH JZ KEYBOARD MOV DPTR, #D8279 MOVX A, QDPTR LCALL DISP NUM AJMP KEYBOARD =/主程序结束* =/*8279初始化*= INIT8279 MOV DPTR#Z8279 MOV A#LEDCLS 清除LED显示 MOVX @DPTR, A INIT82 791 MOVX A.ODPTR JB ACC. 7.INIT82791 MOV A#LEDMOD 置8279工作方式 MOVX @DPTR, A MOV A #LEDFEQ MOVX @ DPTR, A MOV A#LEDWRO MOVX @DPTR, A RET =/*8279初始化结束*= /显示模块*/= DISP NUM MOV DPTR, #LEDSEG MOVC AQA+DPTR 查表
LEDCLS EQU 0D1H ;显示 RAM 全部清除 LEDWR0 EQU 90H ;写显示 RAM 方式:从 0000B 单元写入,写完地址自加一。 LEDFEQ EQU XXH ;定分频系数 ; 提示:定分频系数首先要了解 EXP51 实验板电路 8279 芯片 CLK 端输入的时钟频率 LEDMOD EQU XXH ;右端入口、8 位字符显示、双键锁定、内部编码扫描方式 ;=========/*主程序开始*/======== ORG 0000H AJMP START ORG 0050H START: MOV SP,#60H LCALL INIT8279 ;初始化 8279 ;/*键盘查询*/. KEYBOARD: MOV DPTR,#Z8279 MOVX A,@DPTR ANL A,#0FH JZ KEYBOARD MOV DPTR,#D8279 MOVX A,@DPTR LCALL DISP_NUM AJMP KEYBOARD ;===========/*主程序结束*/========== ;==========/*8279 初始化*/========== INIT8279: MOV DPTR ,#Z8279 MOV A,#LEDCLS ;清除 LED 显示 MOVX @DPTR,A INIT82791: MOVX A,@DPTR JB ACC.7,INIT82791 MOV A,#LEDMOD ;置 8279 工作方式 MOVX @DPTR,A MOV A,#LEDFEQ MOVX @DPTR,A MOV A,#LEDWR0 MOVX @DPTR,A RET ;==========/*8279 初始化结束*/========== ;==========/*显示模块*/========== DISP_NUM: MOV DPTR,#LEDSEG MOVC A,@A+DPTR ;查表 22
MOV DPTR, #D8279 MOVX @DPTR, A 显示数据 RE =/显示模块结束*= /*段码表* LEDSEG: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH,07H: 0, 1, 2, 3, 4,5, 6,7 DB 7FH, 6FH, 77H, 7CH,39H, SEH, 79H, 71H: 8, 9,A, B, C, D,E, F DB 3EH 40H 00H 08H END /*程序结束* 五、实验内容 1.按下任意数字键(0-9),使显示器以右端入口方式显示所输入的数字。 2.利用T0或T1定时器设计功能较完整的时钟或秒表,显示格式为HH-MMSS(即时 分-秒)或XXXX(精确到1%秒 3.(选做)利用本实验条件,设计一个小实验,以估测在本实验数码显示器发光条件下 的视觉暂留时间。(提示:测量视觉暂留时间可有多种方法。此处要求从在本实验中怎 样使8位数码显示器“同时显示”的有关电路和程序中命令参数的设置来考虑。) 六、实验报告附加要求 1.画出实验内容2或3的程序流程图。 2.简要注释实验内容2或3的主要程序段。 3.分析影响电子钟精度的因素,并做误差分析
MOV DPTR,#D8279 MOVX @DPTR,A ;显示数据 RET ;===========/*显示模块结束*/========== ;/*段码表*/ LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F' DB 3EH,40H,00H,08H ;'U,-, ,_, END ;============/*程序结束*/=========== 五、 实验内容 1. 按下任意数字键(0---9), 使显示器以右端入口方式显示所输入的数字。 2. 利用 T0 或 T1 定时器设计功能较完整的时钟或秒表,显示格式为 HH-MM-SS(即 时- 分-秒)或 XX.XX(精确到 1%秒)。 3. (选做)利用本实验条件,设计一个小实验,以估测在本实验数码显示器发光条件下 的视觉暂留时间。(提示:测量视觉暂留时间可有多种方法。此处要求从在本实验中怎 样使 8 位数码显示器 “同时显示”的有关电路和程序中命令参数的设置来考虑。) 六、 实验报告附加要求 1. 画出实验内容 2 或 3 的程序流程图。 2. 简要注释实验内容 2 或 3 的主要程序段。 3. 分析影响电子钟精度的因素,并做误差分析。 23