中断扫描法行列式键盘.docx
《中断扫描法行列式键盘.docx》由会员分享,可在线阅读,更多相关《中断扫描法行列式键盘.docx(9页珍藏版)》请在冰豆网上搜索。
![中断扫描法行列式键盘.docx](https://file1.bdocx.com/fileroot1/2023-5/23/78ab989c-1851-4c03-90b5-339d97b29218/78ab989c-1851-4c03-90b5-339d97b292181.gif)
中断扫描法行列式键盘
中断扫描法行列式键盘设计报告
院系:
班级:
学号:
姓名:
指导老师:
目录
1芯片功能及简介2
1.180C51单片机引脚简介2
1.1.1电源引脚(2个)3
1.1.2外接晶振引脚(2个)3
1.1.3控制引脚(4个)3
1.1.4输入/输出引脚(32个)3
1.2七段LED数码管工作原理4
1.34082的使用与功能4
2中断及行列式键盘设计4
2.1硬件电路设计4
2.1.1设计思路4
2.1.2设计电路图5
2.2源程序设计6
2.2.1设计思路6
2.2.2源代码6
3中断及行列式键盘设计最终效果7
3.1开始进入调试阶段7
3.2按下5号键8
参考文献9
中断扫描法行列式键盘
xx甘肃省庆阳市陇东学院信息工程学院
摘要:
中断扫描法行列式键盘中的中断是在键盘按下时才执行键盘扫描程序,如果没有键盘按下,则将键盘视为不存在。
行列式键盘的检测可采用软件扫描查询法进行,即根据按键压下后所在行线的端口电平是否出现反转,判断有无按键闭合动作。
如果有按键操作根据给该键赋予的键码在数码管上显示相应的0~f中的任一数字。
该设计电路中还增加了一个型号为4082的4与门集成元件。
当各电平都为0时,无论压下哪个按键,与门的输出端都可形成INT0的中断请求信号。
这样便可以将按键的扫描查询工作放在中断函数中进行,从而就能达到既快速响应按键动作,又提高CPU工作效率的目的。
关键词:
中断;行列式键盘;80C51;数码管
1芯片功能及简介
1.180C51单片机引脚简介
80C51单片机共有40个引脚,其中有2个是电源引脚,2个外接晶体振荡器引脚,4个控制引脚,还有4个端口(P0~P3),即32个输入/输出引脚。
80C51的封装如图1.1下:
图1.1图1.2
1.1.1电源引脚(2个)
vVcc(40脚):
电源端,接+5V电源。
vVss(20脚):
接地端。
1.1.2外接晶振引脚(2个)
vXTAL1(19脚)和XTAL2(18脚):
接石英晶体振荡器。
1.1.3控制引脚(4个)
vRST(9脚):
复位信号引脚。
当石英晶体振荡器运行时,在此脚上出现两个机器周期的高电平,使单片机复位。
vALE/PROG(30脚):
地址锁存允许信号端。
当访问外部存储器时,ALE(允许地址锁存)的输出用于锁存地址的低8位。
当不访问外部锁存器时,ALE端仍以不变的频率周期性地输出脉冲信号,此频率为石英晶振振荡频率的1/6。
因此它可用作对外输出的时钟或用于定时。
vPSEN(29脚):
外部存储器的读选通信号端。
在读外部(ROM)时PSEN有效,以实现对外部程序存储器的读操作。
vEA/VPP(31脚):
访问程序存储器选择控制信号。
当EA信号接低电平时,对ROM的读操作限定在外部程序存储器;当EA接高电平时,对ROM的读操作从内部开始。
1.1.4输入/输出引脚(32个)
vP0端口:
P0.0~P0.7(32~39脚)在外部扩充存储器时,可用作数据总线或地址总线,但内部无上拉电阻;不扩充时,可用作一般I/O端口使用,当作为输入或输出时应在外部接上拉电阻。
vP1端口:
P1.0~P1.7(1~8脚)只做I/O使用,其内部有上拉电阻。
vP2端口:
P2.0~P2.7(21~28脚)用作一般I/O使用,其内部有上拉电阻。
在扩充外部存储器时,也可当作地址总线使用。
vP3端口:
P3.0~P3.7(10~17脚)除了用作I/O使用外还有一些特殊功能,也称第二功能。
1.2七段LED数码管工作原理
这种显示器分为共阴极和共阳极两种:
共阳极LED数码管的所有阳极连接在一起,为公共端;共阴极LED显示器的发光二极管的所有阴极连接在一起,为公共端。
单个数码管的引脚配置如图1.2所示,其中com为公共端。
本篇文章借助共阴极数码管进行说明。
1.34082的使用与功能
4082为4与门集成元件。
4082的装载形式如图1.3所示:
图1.3
当各电平都为0时,无论压下哪个按键,与门的输出端都可形成INT0的中断请求信号。
这样便可以将按键的扫描查询工作放在中断函数中进行,从而就能达到既快速响应按键动作,又提高CPU工作效率的目的。
2中断及行列式键盘设计
2.1硬件电路设计
2.1.1设计思路
图1.4
2.1.2设计电路图
图1.5
2.2源程序设计
2.2.1设计思路
本次实验要经过外部中断实现数码管的数值变化,所以外部中断0的中断触发方式控制位(IT0)置1;外部中断允许位(EX0)置1;中断允许总控制位(EA)置1。
2.2.2源代码
#include
charled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};
charkey_buf[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
voidgetKey()interrupt0
{
charkey_scan[]={0xef,0xdf,0xbf,0x7f};
chari=0,j=0;
for(i=0;i<4;i++)
{
P1=key_scan[i];
for(j=0;j<16;j++)
{
if(key_buf[j]==P1)
{
P2=led_mod[j];
break;
}
}
}
}
voidmain(void)
{
P2=0x00;
IT0=1;
EX0=1;
EA=1;
while
(1)
{
P1=0x0f;
}
}
3中断及行列式键盘设计最终效果
3.1开始进入调试阶段
刚进入调试阶段的结果如图1.6所示:
图1.6
3.2按下5号键
按下5号键的结果如图1.7所示:
图1.7
参考文献
[1]林立,张俊亮.单片机原理及应用____基于Proteus和keilC(第2版)[M].电子工业出版社.2013.
[2]杜树春.基于Proteus和keilC51的单片机设计与仿真[M].电子工业出版社.2012
[3]谭浩强.C语言设计(第三版)[M]..北京:
清华出版社.2005