实验五矩阵式键盘按键值的数码管显示
一实验目的
将矩阵键盘的键值采用LED数码管显示出来(分别考虑用动态显示、静态显示)
二实验内容与具体任务描述
任务1:行列式键盘接口,扫描实现LED动态显示键盘被按下。
将图中的动态显示改成静态显示。:修改代码及图,2任务
三设计的电路图与描述
P1口控制键盘,P0口控制LED显示器。
四程序清单
任务1:
i
cludereg51h包含51单片机寄存器定义的头文件
sbitP14P14
将P14位定义为P14引脚
sbitP15P15
将P15位定义为P15引脚
sbitP16P16
将P16位定义为P16引脚
sbitP17P17
将P17位定义为P17引脚
u
sig
edcharcodeTab0xc00xf90xa40xb00x990x920x820xf80x800x90
码09.
u
sig
edcharkeyval定义变量储存按键值
数字的段
f函数功能:数码管动态扫描延时
voidled_delayvoid
u
sig
edcharj
forj0j200j
函数功能:按键值的数码管显示子程序
voiddisplayu
sig
edchark
P20xbf
点亮数码管DS6
P0Tabk10
显示十位
led_delay
动态扫描延时
P20x7f
点亮数码管DS7
P0Tabk_x0010_
显示个位
led_delay
动态扫描延时
函数功能:软件延时子程序
voiddelay20msvoid
u
sig
edcharij
fori0i100i
forj0j60j
函数功能:主函数
voidmai
void
EA1
开总中断
ET01
定时器T0中断允许
TMOD0x01
使用定时器T0的模式1
TH065536500256定时器T0的高8位赋初值
TL0655365006定时器T0的高8位赋初值
TR01
启动定时器T0
0按键值初始化为
keyval0x00
fwhile1
displaykeyval
无限循环调用按键值的数码管显示子程序
函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位
voidtime0_i
terservevoidi
terrupt1usi
g1
TR00
关闭定时器T0
P10xf0
所有行线置为低电平“0”,所有列线置为高电平“1”
ifP10xf00xf0
列线中有一位为低电平“0”,说明有键按下
delay20ms
延时一段时间、软件消抖
ifP10xf00xf0
确实有键按下
P10xfe第一r