实验三键盘显示接口 实验目的 了解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