微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机4X4矩阵键盘驱动与应用程序(C语言)

51单片机4X4矩阵键盘驱动与应用程序(C语言)

时间:11-18 来源:互联网 点击:

//宏定义

#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;

}

}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top