资源简介
矩阵键盘程序基于proteus的设计与仿真

代码片段和文件信息
#include
#include
#define uint unsigned int
#define uchar unsigned char
/*********************************
函数:Delay_1ms()
参数:t
返回:无
功能:延时子程序,延时时间为 1ms * t。
使用晶振是11.0592M。
**********************************/
void Delay_1ms(uint t)
{
uint ij;
for(i=0;i {
for(j=0;j<=100;j++)
{
_nop_();
}
}
}
/*********************************
函数:Keyscan()
参数:i+j*4
返回:无
功能:判断哪个矩阵按键按下。该子程序是行扫描方式。
**********************************/
uchar Keyscan(void)
{
uchar ijktempnum;
uchar Buffer[3] = {0x300x500x60}; //赋值4组行数据
for(j=0; j<3; j++) //行变化
{
temp = 0x01; //首先是最左边一列
num= 0x01;
for(i=0; i<2; i++) //列变化
{
P1 = Buffer[j]; //把行数据给P1口
P1 = P1 | temp; //让列和P1口进行或操作
k = P1 & 0x03; //判断是否是该列被按下
if(k == 0)
{
while(1) //循环等待按键释放
{
if(P1 & 0x03) //按键释放后,退出循环
{
break;
}
}
return(num<<(i*3+j));
}
temp<<=1;
}
}
}
/*********************************
函数:Main()
参数:无
返回:无
功能:主函数
**********************************/
void Main(void)
{
P2 = 0x00;
while(1)
{
P1 = 0x70; //P1口赋值为0xf0
if(P1 != 0x70) //判断有无按键按下
{
Delay_1ms(20); //按键消抖
if(P1 != 0x70) //第三次判断有无按键按下
{
P2 = Keyscan(); //运行矩阵键盘函数并返回到键值变量
}
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-02-04 11:41 键盘显示\
文件 183918 2015-02-03 19:50 键盘显示\Last Loaded 键盘.DBK
文件 5115 2002-04-16 15:32 键盘显示\STARTUP.A51
文件 11751 2015-02-04 11:38 键盘显示\STARTUP.lst
文件 828 2015-02-04 11:38 键盘显示\STARTUP.obj
文件 1731 2015-02-04 11:38 键盘显示\Text1.c
文件 4502 2015-02-04 11:38 键盘显示\Text1.LST
文件 3211 2015-02-04 11:38 键盘显示\Text1.OBJ
文件 183918 2015-02-03 21:54 键盘显示\键盘.DSN
文件 1483 2015-02-04 11:41 键盘显示\键盘.PWI
文件 3878 2015-02-04 11:38 键盘显示\键盘显示
文件 1223 2015-02-04 11:38 键盘显示\键盘显示.hex
文件 6824 2015-02-04 11:38 键盘显示\键盘显示.M51
文件 1128 2015-02-04 11:41 键盘显示\键盘显示.Opt
文件 360 2015-02-04 11:41 键盘显示\键盘显示.plg
文件 2044 2015-02-03 21:54 键盘显示\键盘显示.Uv2
文件 1128 2015-02-04 09:55 键盘显示\键盘显示_Opt.Bak
文件 0 2015-02-03 11:36 键盘显示\键盘显示_Uv2.Bak
- 上一篇:flash动画制作实验报告
- 下一篇:基于FPGA的数字信号发生器设计
评论
共有 条评论