📄 4x5text.c
字号:
/*****************************************************************
File:4x5text.c
Author:xiaorunyi
Edition:V1.0
Email:qq315626168@126.com
www.ednchina.com/blog/xiaorunyi
功能:4x5健盘铃声测试
******************************************************************/
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
void kbscan(); //4*5按键扫描
void delay(int count);
unsigned char kbp; //存储键值
sbit bell=P1^4;
/*************************************************************
蜂鸣器响一声
*************************************************************/
void delay1(uchar x)
{ uchar j;
while((x--)!=0)
{ for(j=0;j<125;j++)
{;}
}
}
void beep()
{
unsigned char i;
for (i=0;i<100;i++)
{
delay(4);
bell=!bell; //BEEP取反
}
bell=1; //关闭蜂鸣器
delay1(250); //延时
}
main()
{
while(1)
{
kbscan();
if(kbp!=0xff)
beep();
}// end while
}//end maim
void kbscan()
{
unsigned char scanrow[]={0xfb,0xf7,0xef,0xdf,0x7f};
unsigned char scancol[]={0xfe,0xfd,0xfb,0xf7};
uint row,col,kbtemp; //计数器定义
kbp=0xff;
for(row=0;row < 5;row++)
{
P3=scanrow[row]; //0值输出
kbtemp=P1&0x0f; //取P1口值
if(kbtemp !=0x0f)
{
delay(7); //延时去斗
if(kbtemp !=(P1&0x0f)); //再次判断是否有健按下
{
for(col=0;col<4;col++)
{
if(kbtemp==(scancol[col]&0x0f))
kbp=row*4+col;
} // for col detect
delay(7); //等待延时
while((P1&0x0f)!=0x0f); //等待按键释放
while((P1&0x0f)!=0x0f); //等待按键释放
} // end if keyin
} // end if keyin
} // for row
} // end kbscan
void delay(uint count)
{
int i,j;
for(i=0;i<count;i++)
for(j=0;j<122;j++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -