数码管显示和键盘扫描实验资料

实验三 LED 数码管动态显示及4 X4 键盘控制实验

一、实验目的

1.巩固多位数码管动态显示方法。

2.掌握行扫描法矩阵式按键的处理方法。

3.熟练应用AT89S52学习板实验装置,进一步掌握keil C51的使用方法。

二、实验内容

使用AT89S52学习板上的4位LED 数码管和4 X 4矩阵键盘阵列做多位数码管动态显示及行扫描法键盘处理功能实验。用P0口做数据输出,利用P1做锁存器74HC573的锁存允许控制,编写程序使4位LED 数码管按照动态显示方式显示一定的数字;按照行扫描法编写程序对4 X 4矩阵键盘阵列进行定期扫描,计算键值并在数码管上显示。

三、实验系统组成及工作原理

1.4位LED 数码管和4 X 4矩阵键盘阵列电路原理图

2. 多位数码管动态显示方式

IO(2)

说明4位共阴极LED 动态显示3456数字的工作过程

首先由I/O口(1)送出数字3的段选码4FH 即数据01001111到4个LED 共同的段选线上,

接着由I/O口(2)送出位选码××××0111到位选线上,其中数据的高4位为无效的×,唯有送入左边第一个LED 的COM 端D3为低电平“0”,因此只有该LED 的发光管因阳极接受到高电平“1”的g 、d 、c 、b 、a 段有电流流过而被点亮,

也就是显示出数字3,而其余3个LED 因其COM 端均为高电平“1”而无法点亮;显示一定时间后,

再由I/O口(1)送出数字4的段选码66H 即 01100110到段选线上,接着由I/O口(2)送出点亮左边第二个LED 的位选码××××1011到位选线上,此时只有该LED 的发光管因阳极接受到高电平“1”的g 、f 、c 、b 段有电流流过因而被点亮,也就是显示出数字4,而其余3位LED 不亮;

如此再依次送出第三个LED 、第四个LED 的段选与位选的扫描代码,就能一一分别点亮各个LED ,使4个LED 从左至右依次显示3、4、5、6。

3.4 X 4 矩阵式按键扫描处理程序

行扫描法又称逐行零扫描查询法,即逐行输出行扫描信号“0”,使各行依次为低电平,然后分别读入列数据,检查此(低电平)行中是否有键按下。如果读得某列线为低电平,则表示此(低电平)行线与此列线的交叉处有键按下,再对该键进行译码计算出键值,然后转入该键的功能子程序入口地址;如果没有任何一根列线为低电平,则说明此(低电平) 行没有键按下。接着进行下一行的“0”行扫描与列读入,直到8行全部查完为止,若无键按下则返回。

有时为了快速判断键盘中是否有键按下,也可先将全部行线同时置为低电平,然后检测列线的电平状态,若所有列线均为高电平,则说明键盘中无键按下,立即返回;若要有一列的电平为低,则表示键盘中有键被控下,然后再如上那样进行逐行扫描。

四、实验设备和仪器

PC 机 一台

AT89S52单片机学习板、下载线 一套

五、实验步骤

1.按时实验要求编写源程序(实验前写)进行软件模拟调试。

2.软件调试好,连接硬件电路。

3.下载程序,进行硬件调试,观察数码管显示的情况,与设计的是否相同。

六、实验参考程序

1. 4位LED 数码管动态显示扫描程序

ORG 0000H

MAIN:

MOV 30H,#0 ; 定义4个字节空间,放置待显示数字“1、2、3、4” MOV 31H,#1

MOV 32H,#2

MOV 33H,#3

MOV P0,#00H

DISP:

MOV R0,#30H ; 把待显示数字首地址送给R0寄存器 MOV R1,#4 ; 把R1作为显示数码管位数计数器

MOV R2,#0FEH ; 把首位数码管的位选码暂存在R2寄存器中 MOV DPTR,#TAB ; 把段选码存储空间的首地址给DPTR LOOP1:

MOV A,@R0 ; 把待显示数字的段选码提取出来

MOVC A,@A+DPTR;

MOV P0,A ; 把段选码放在数据总线上

SETB P1.1 ; 段选码锁存器的锁存允许置位

NOP

CLR P1.1

MOV P0, R2 ; 把位选码放在数据总线上 SETB P1.2 ; 位选码锁存器的锁存允许置位 NOP CLR P1.2 RL A ; 下一位待显示数码管位选码预处理 MOV R2,A INC R0 ACALL DEL ; 调用延时子程序 DJNZ R1,LOOP1;4位没有显示完,转去显示下一位

SJMP DISP ;4位显示完,再次进行新一轮的扫描 /*定义段选码*/

TAB:

DB 0C0H;0

DB 0F9H;1

DB 0A4H;2

DB 0B0H;3

DB 099H;4

DB 092H;5

DB 082H;6

DB 0F8H;7

DB 080H;8

DB 090H;9

/*延时5ms 子程序*/

DEL:

MOV R7,#10

LOOP2:

MOV R6,#250

DJNZ R6,$

DJNZ R7,LOOP2

RET

END

2. 键盘扫描及数码管动态显示程序

ORG 0000H

MAIN:

MOV 30H,#10 ; 定义4个字节空间,放置待显示数字 MOV 31H,#10

MOV 32H,#10

MOV 33H,#10

MOV P0,#00H

MOV 40H,#0FFH;定义1个字节空间,放置键值

KEY: ACALL KEYSCAN ;调用键盘全扫描子程序

JNC LK1 ; 有按键按下,转去延时去抖

ACALL DISPLAY ; 无按键按下,调用显示子程序 AJMP KBZ ; 送无键按下标志

LK1: ACALL DISPLAY ; 两次调用显示,实现延时功能 ACALL DISPLAY

ACALL KEYSCAN ; 延时去抖后,再次调用键盘全扫描子程序 JNZ LK2 ; 确实有按键按下,转入逐行扫描 AJMP KBZ ; 抖动,无按键

/*逐行扫描程序模块*/

LK2: MOV R7,#0EFH ;第一行行线置为0

MOV R6,#00H ; 行数寄存器

COL0: MOV P3,R7 ; 第一行行线置为0

MOV A,P3 ; 读入列线状态

JB ACC.0,COL1 ; 若不是第一列按键按下,转查第二列 MOV A,#01H ; 若是第一列按键按下,则记下列值为1 AJMP LKP ; 转去计算键值

COL1: JB ACC.1,COL2;若不是第二列按键按下,转查第三列 MOV A,#02H ; 若是第二列按键按下,则记下列值为2 AJMP LKP ; 转去计算键值

COL2: JB ACC.2,COL3;若不是第三列按键按下,转查第四列 MOV A,#03H ; 若是第三列按键按下,则记下列值为3 AJMP LKP ; 转去计算键值

COL3: JB ACC.3,NEXTR ;若不是第四列按键按下,转去扫描下一行 MOV A,#04H ; 若是第四列按键按下,则记下列值为4 AJMP LKP ; 转去计算键值

/*键值计算程序 键值=行值×4+列值*/

LKP: MOV R5,A;

MOV A,R6

MOV B,#04H

MUL AB

ADD A,R5

MOV 40H,A

MOV A,40H

MOV B,#10 ;

DIV AB

MOV 32H,A

MOV 33H,B

ACALL DISPLAY ;

AJMP KEY

/*下一行扫描值预处理*/

NEXTR: INC R6;

MOV A,R7 ;

JNB ACC.7,KBZ ;

RL A ;

MOV R7,A

AJMP COL0

KBZ: MOV 40H,#0FFH;若无按键按下,则用FF 表示键值 AJMP KEY

/*键盘全扫描子程序*/

KEYSCAN:

MOV P3,#0FH ;

NOP

MOV P3,#0FH;

MOV A,P3 CPL A ANL A,#0FH RET

/*LED数码管显示键值子程序*/

DISPLAY:

MOV R0,#30H;

MOV R1,#4;

MOV R2,#0FEH;

MOV DPTR,#TAB;

LOOP1:

MOV A,@R0;把待显示数字的段选码提取出来 MOVC A,@A+DPTR; MOV P0,A;把段选码放在数据总线上 SETB P1.1;锁存器的锁存允许置位 NOP CLR P1.1 MOV A,R2;把段选码放在数据总线上 MOV P0,A SETB P1.2; NOP CLR P1.2 RL A MOV R2,A INC R0 ACALL DEL DJNZ R1,LOOP1

RET

/*定义段选码*/

TAB:

DB 0C0H;0

DB 0F9H;1

DB 0A4H;2

DB 0B0H;3

DB 099H;4

DB 092H;5

DB 082H;6

DB 0F8H;7

DB 080H;8

DB 090H;9

DB 0FFH;NO

/*延时5ms 子程序*/

DEL:

MOV R4,#10

LOOP2:

MOV R3,#250

DJNZ R3,$

DJNZ R4,LOOP2

RET

END

实验三 LED 数码管动态显示及4 X4 键盘控制实验

一、实验目的

1.巩固多位数码管动态显示方法。

2.掌握行扫描法矩阵式按键的处理方法。

3.熟练应用AT89S52学习板实验装置,进一步掌握keil C51的使用方法。

二、实验内容

使用AT89S52学习板上的4位LED 数码管和4 X 4矩阵键盘阵列做多位数码管动态显示及行扫描法键盘处理功能实验。用P0口做数据输出,利用P1做锁存器74HC573的锁存允许控制,编写程序使4位LED 数码管按照动态显示方式显示一定的数字;按照行扫描法编写程序对4 X 4矩阵键盘阵列进行定期扫描,计算键值并在数码管上显示。

三、实验系统组成及工作原理

1.4位LED 数码管和4 X 4矩阵键盘阵列电路原理图

2. 多位数码管动态显示方式

IO(2)

说明4位共阴极LED 动态显示3456数字的工作过程

首先由I/O口(1)送出数字3的段选码4FH 即数据01001111到4个LED 共同的段选线上,

接着由I/O口(2)送出位选码××××0111到位选线上,其中数据的高4位为无效的×,唯有送入左边第一个LED 的COM 端D3为低电平“0”,因此只有该LED 的发光管因阳极接受到高电平“1”的g 、d 、c 、b 、a 段有电流流过而被点亮,

也就是显示出数字3,而其余3个LED 因其COM 端均为高电平“1”而无法点亮;显示一定时间后,

再由I/O口(1)送出数字4的段选码66H 即 01100110到段选线上,接着由I/O口(2)送出点亮左边第二个LED 的位选码××××1011到位选线上,此时只有该LED 的发光管因阳极接受到高电平“1”的g 、f 、c 、b 段有电流流过因而被点亮,也就是显示出数字4,而其余3位LED 不亮;

如此再依次送出第三个LED 、第四个LED 的段选与位选的扫描代码,就能一一分别点亮各个LED ,使4个LED 从左至右依次显示3、4、5、6。

3.4 X 4 矩阵式按键扫描处理程序

行扫描法又称逐行零扫描查询法,即逐行输出行扫描信号“0”,使各行依次为低电平,然后分别读入列数据,检查此(低电平)行中是否有键按下。如果读得某列线为低电平,则表示此(低电平)行线与此列线的交叉处有键按下,再对该键进行译码计算出键值,然后转入该键的功能子程序入口地址;如果没有任何一根列线为低电平,则说明此(低电平) 行没有键按下。接着进行下一行的“0”行扫描与列读入,直到8行全部查完为止,若无键按下则返回。

有时为了快速判断键盘中是否有键按下,也可先将全部行线同时置为低电平,然后检测列线的电平状态,若所有列线均为高电平,则说明键盘中无键按下,立即返回;若要有一列的电平为低,则表示键盘中有键被控下,然后再如上那样进行逐行扫描。

四、实验设备和仪器

PC 机 一台

AT89S52单片机学习板、下载线 一套

五、实验步骤

1.按时实验要求编写源程序(实验前写)进行软件模拟调试。

2.软件调试好,连接硬件电路。

3.下载程序,进行硬件调试,观察数码管显示的情况,与设计的是否相同。

六、实验参考程序

1. 4位LED 数码管动态显示扫描程序

ORG 0000H

MAIN:

MOV 30H,#0 ; 定义4个字节空间,放置待显示数字“1、2、3、4” MOV 31H,#1

MOV 32H,#2

MOV 33H,#3

MOV P0,#00H

DISP:

MOV R0,#30H ; 把待显示数字首地址送给R0寄存器 MOV R1,#4 ; 把R1作为显示数码管位数计数器

MOV R2,#0FEH ; 把首位数码管的位选码暂存在R2寄存器中 MOV DPTR,#TAB ; 把段选码存储空间的首地址给DPTR LOOP1:

MOV A,@R0 ; 把待显示数字的段选码提取出来

MOVC A,@A+DPTR;

MOV P0,A ; 把段选码放在数据总线上

SETB P1.1 ; 段选码锁存器的锁存允许置位

NOP

CLR P1.1

MOV P0, R2 ; 把位选码放在数据总线上 SETB P1.2 ; 位选码锁存器的锁存允许置位 NOP CLR P1.2 RL A ; 下一位待显示数码管位选码预处理 MOV R2,A INC R0 ACALL DEL ; 调用延时子程序 DJNZ R1,LOOP1;4位没有显示完,转去显示下一位

SJMP DISP ;4位显示完,再次进行新一轮的扫描 /*定义段选码*/

TAB:

DB 0C0H;0

DB 0F9H;1

DB 0A4H;2

DB 0B0H;3

DB 099H;4

DB 092H;5

DB 082H;6

DB 0F8H;7

DB 080H;8

DB 090H;9

/*延时5ms 子程序*/

DEL:

MOV R7,#10

LOOP2:

MOV R6,#250

DJNZ R6,$

DJNZ R7,LOOP2

RET

END

2. 键盘扫描及数码管动态显示程序

ORG 0000H

MAIN:

MOV 30H,#10 ; 定义4个字节空间,放置待显示数字 MOV 31H,#10

MOV 32H,#10

MOV 33H,#10

MOV P0,#00H

MOV 40H,#0FFH;定义1个字节空间,放置键值

KEY: ACALL KEYSCAN ;调用键盘全扫描子程序

JNC LK1 ; 有按键按下,转去延时去抖

ACALL DISPLAY ; 无按键按下,调用显示子程序 AJMP KBZ ; 送无键按下标志

LK1: ACALL DISPLAY ; 两次调用显示,实现延时功能 ACALL DISPLAY

ACALL KEYSCAN ; 延时去抖后,再次调用键盘全扫描子程序 JNZ LK2 ; 确实有按键按下,转入逐行扫描 AJMP KBZ ; 抖动,无按键

/*逐行扫描程序模块*/

LK2: MOV R7,#0EFH ;第一行行线置为0

MOV R6,#00H ; 行数寄存器

COL0: MOV P3,R7 ; 第一行行线置为0

MOV A,P3 ; 读入列线状态

JB ACC.0,COL1 ; 若不是第一列按键按下,转查第二列 MOV A,#01H ; 若是第一列按键按下,则记下列值为1 AJMP LKP ; 转去计算键值

COL1: JB ACC.1,COL2;若不是第二列按键按下,转查第三列 MOV A,#02H ; 若是第二列按键按下,则记下列值为2 AJMP LKP ; 转去计算键值

COL2: JB ACC.2,COL3;若不是第三列按键按下,转查第四列 MOV A,#03H ; 若是第三列按键按下,则记下列值为3 AJMP LKP ; 转去计算键值

COL3: JB ACC.3,NEXTR ;若不是第四列按键按下,转去扫描下一行 MOV A,#04H ; 若是第四列按键按下,则记下列值为4 AJMP LKP ; 转去计算键值

/*键值计算程序 键值=行值×4+列值*/

LKP: MOV R5,A;

MOV A,R6

MOV B,#04H

MUL AB

ADD A,R5

MOV 40H,A

MOV A,40H

MOV B,#10 ;

DIV AB

MOV 32H,A

MOV 33H,B

ACALL DISPLAY ;

AJMP KEY

/*下一行扫描值预处理*/

NEXTR: INC R6;

MOV A,R7 ;

JNB ACC.7,KBZ ;

RL A ;

MOV R7,A

AJMP COL0

KBZ: MOV 40H,#0FFH;若无按键按下,则用FF 表示键值 AJMP KEY

/*键盘全扫描子程序*/

KEYSCAN:

MOV P3,#0FH ;

NOP

MOV P3,#0FH;

MOV A,P3 CPL A ANL A,#0FH RET

/*LED数码管显示键值子程序*/

DISPLAY:

MOV R0,#30H;

MOV R1,#4;

MOV R2,#0FEH;

MOV DPTR,#TAB;

LOOP1:

MOV A,@R0;把待显示数字的段选码提取出来 MOVC A,@A+DPTR; MOV P0,A;把段选码放在数据总线上 SETB P1.1;锁存器的锁存允许置位 NOP CLR P1.1 MOV A,R2;把段选码放在数据总线上 MOV P0,A SETB P1.2; NOP CLR P1.2 RL A MOV R2,A INC R0 ACALL DEL DJNZ R1,LOOP1

RET

/*定义段选码*/

TAB:

DB 0C0H;0

DB 0F9H;1

DB 0A4H;2

DB 0B0H;3

DB 099H;4

DB 092H;5

DB 082H;6

DB 0F8H;7

DB 080H;8

DB 090H;9

DB 0FFH;NO

/*延时5ms 子程序*/

DEL:

MOV R4,#10

LOOP2:

MOV R3,#250

DJNZ R3,$

DJNZ R4,LOOP2

RET

END


相关文章

  • 单片机完整实验报告设计
  • 实验报告 实验名称: 矩阵键盘控制点阵的显示 专业班级: 控制科学与工程 学号:s20100394 学生姓名: 指导教师: 2013年 1月18日 目 录 一.实验目的 ................................... ...查看


  • 智能化温度测量仪
  • <过程控制系统>课程设计 设计题目:智能化温度测量仪设计 学生: 专业:测控技术与仪器 班级学号: 指导教师:吕江涛 设计时间:2012.6.17-2012.6.29 东北大学秦皇岛分校自动化工程系 <过程控制系统> ...查看


  • 单片机原理实验实验报告册
  • 电子科技大学成都学院 实验报告册 课程名称: 姓 名: 学 号: 院 系: 专 业: 教 师: 年 实验一LED 流水灯 一.实验目的: 1. 掌握并口的使用 2. 掌握移位指令的使用 二.实验原理和内容: 实验原理: 1. 共阳LED ( ...查看


  • 北京邮电大学微原硬件实验报告
  • 微原硬件实验报告 班级: 学号: 班内序号: 姓名: 实验一.二 基本的I/O实验 一. 实验目的 1.掌握I/O地址译码电路的工作原理. 2.掌握简单并行接口的工作原理及使用方法. 二. 实验原理及内容 1.实验电路如图1-1所示,其中7 ...查看


  • 基于AT89C51的篮球比赛计分器设计
  • 学校 嵌入式应用基础课程设计报告 课程设计 学 院:学生姓名: 班 级: 学 号: 指导教师: 随着单片机在各个领域的广泛应用,许多用单片机作控制的球赛计分器也应运而生,如用单片机控制LCD 液晶显示器的计分器,用单片机控制LED 七段显示 ...查看


  • 自动化工程训练报告
  • 自动化工程训练 设计报告 学 院: 信息科学与工程学院 班 级: 姓 名: 学 号: 指导老师: 时间:2011年9月7日 目录 一.设计课题名称及要求 .............................. 2 二.设计思想和实施方 ...查看


  • 单片机课程设计-电子密码锁-实验报告-
  • 单片机课程设计 电子密码锁实验报告 学院:电子信息工程学院 班级:自***姓名:*** 学号:******指导教师:*** 单片机课程设计电子密码锁实验报告 (一)实验目的 1.了解电子密码锁工作原理和八段LED数码管显示原理. 2.掌握L ...查看


  • 恒温箱的设计
  • 摘 要 恒定温度的设备,被广泛地应用于生产.生活.实验等领域.在医用.水产.特种工业.工业探伤.照相等行业,都需要有稳定而精确的温度.在本设计中,通过对恒温箱温度的检测与变送传到PLC ,与给定值进行比较,PLC 对数据进行处理,根据偏差信 ...查看


  • 可编程作息时间控制器
  • 一. 设计概述 1.设计思路综述 作息时间控制系统主要有四大子系统功能实现:1.时间运行系统:2.报时时间值设置及调时系统:3.时分显示系统:4.报时响应系统.时间运行系统让时间一直运行着:报时时间值设置及调时系统使得用户可以随时设置时间: ...查看


热门内容