51单片机4X4矩阵键盘驱动与应用程序(C语言)
//宏定义
#define TH0_NUM 1000 //便于程序的移植;
#define TL0_NUM 1000
bit Flag2Ms; //2ms到标志
unsigned char code demo[]="key_4x4 " ;
unsigned char code demo1[]="scaning..." ;
/*
外部函数声明
*/
extern void InitLcd1602();
extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
extern void ConfigUART(unsigned int baud);
extern void DelayMs(unsigned int ms);
extern void keyscan();
extern unsigned char getkey();
extern void key_functoin(unsigned char keynum1);
//内部函数声明
void InitTimer0();
/*
主程序
*/
void main()
{
InitTimer0(); //定时0初始化
ConfigUART(9600); //串口初始化
InitLcd1602(); //1602初始化
LcdShowStr(0,0,demo); // 显示字符串
LcdShowStr(0,1,demo1); // 显示字符串
while(1)
{
keyscan(); //按键扫描
key_functoin(getkey());//根据获取的键,进行相关的处理;
}
}
/*
函数功能:定时器0初始化,设定每1MS中断一次
*/
void InitTimer0()
{
TMOD &=0xf0; //这种操作模式,不会破坏寄存器的其它设置;
TMOD |=0x01; //方式1,16位定时器
TH0/=(65536-TH0_NUM)/256;
TL0=(65536-TL0_NUM)%256;
EA=1;
ET0=1;
TR0=1;
}
/*
函数功能:定时器0中断服务程序
*/
void Timer0_Interrupt() interrupt 1
{
static unsigned char i;
TH0=(65536-TH0_NUM)/256;
TL0=(65536-TL0_NUM)%256;
i++;
if(i>2)
{
i=0;
Flag2Ms=1;
}
}
51单片机矩阵键 相关文章:
- 51单片机矩阵键盘与左右流水灯控制C程序(12-02)
- 51单片机矩阵键盘检测源代码(按键数码管显示0-F)(12-02)
- C51单片机的3*3矩阵键盘程序(11-30)
- 51单片机的4X4矩阵键盘的C语言程序(11-28)
- 51单片机矩阵键盘PROTEUS仿真演示(11-23)
- 嵌入式学习笔记8——51单片机之矩阵键盘(11-20)