矩阵键盘控制12864显示最经典程序.doc
- 文档编号:8858394
- 上传时间:2023-05-15
- 格式:DOC
- 页数:4
- 大小:23.50KB
矩阵键盘控制12864显示最经典程序.doc
《矩阵键盘控制12864显示最经典程序.doc》由会员分享,可在线阅读,更多相关《矩阵键盘控制12864显示最经典程序.doc(4页珍藏版)》请在冰点文库上搜索。
#include
用4*4的矩阵键盘(接P3口)按键盘k1——k16中的任何一个键ki
#include
#defineuintunsignedint//键盘扫描的思想是将行设置为低,列设置为高,来读取P3口的值,就能知道是哪个按键按下了
#defineucharunsignedchar
#defineLCDdataP0
sbitE=P2^7;
sbitRW=P2^6;
sbitRS=P2^5;
voidinit();
voiddelayms(uintx);
voiddisplaykey();
voidwrite_com(ucharcom);//写命令
voidwrite_data(uchardate);//写数据
uchartemp;
//--------------主函数-----------------
voidmain()
{
init();// P3=0xfe;//P3=0xfd;//P3=0xfb;//P3=0xf7;
while
(1)
{
displaykey();
}
}
//-------------液晶初始化----------------
voidinit()
{
write_com(0x01);
write_com(0x02);
write_com(0x06);
write_com(0x0e);
}
//------------毫秒延时---------------
voiddelayms(uintx)
{
uchari;
while(x--)
{
for(i=0;i<120;i++);
}
}
//------------写命令-----------------
voidwrite_com(ucharcom)
{
RS=0;
RW=0;
E=0;
LCDdata=com;
E=1;
delayms(5);
E=0;
}
//-------------写数据------------------
voidwrite_data(uchardate)
{
RS=1;
RW=0;
E=0;
LCDdata=date;
E=1;
delayms(5);
E=0;
}
//----
voiddisplaykey()
{//****************************判断第一行的键盘
P3=0xfe;temp=P3;temp=temp&0xf0;
while(temp!
=0xf0)//判断是否有键盘按下为真有键盘按下
{ delayms(50);temp=P3;temp=temp&0xf0;
while(temp!
=0xf0)//再次判断是否有键盘按下为真有键盘按下
{ temp=P3;
switch(temp)
{
case0xee:
write_com(0x80);write_data('0');write_com(0x81);write_data('');break;
case0xde:
write_com(0x80);write_data('1');write_com(0x81);write_data('');break;
case0xbe:
write_com(0x80);write_data('2');write_com(0x81);write_data('');break;
case0x7e:
write_com(0x80);write_data('3');write_com(0x81);write_data('');break;
}break;//这个break很重要不能丢下,若丢下会这这个中退步出来
}
}
//******************************判断第二行的键盘
P3=0xfd;temp=P3;temp=temp&0xf0;
while(temp!
=0xf0)
{ delayms(50);temp=P3;temp=temp&0xf0;
while(temp!
=0xf0)
{ temp=P3;
switch(temp)
{
case0xed:
write_com(0x80);write_data('4');write_com(0x81);write_data('');break;
case0xdd:
write_com(0x80);write_data('5');write_com(0x81);write_data('');break;
case0xbd:
write_com(0x80);write_data('6');write_com(0x81);write_data('');break;
case0x7d:
write_com(0x80);write_data('7');write_com(0x81);write_data('');break;
}break;
}
}
//******************************判断第三行的键盘
P3=0xfb;temp=P3;temp=temp&0xf0;
while(temp!
=0xf0)
{ delayms(50);temp=P3;temp=temp&0xf0;
while(temp!
=0xf0)
{ temp=P3;
switch(temp)
{
case0xeb:
write_com(0x80);write_data('8');write_com(0x81);write_data('');break;
case0xdb:
write_com(0x80);write_data('9');write_com(0x81);write_data('');break;
case0xbb:
write_com(0x80);write_data('1');write_com(0x81);write_data('0');break;
case0x7b:
write_com(0x80);write_data('1');write_com(0x81);write_data('1');break;
}break;
}
}
//******************************判断第四行的键盘
P3=0xf7;temp=P3;temp=temp&0xf0;
while(temp!
=0xf0)
{ delayms(50);temp=P3;temp=temp&0xf0;
while(temp!
=0xf0)
{ temp=P3;
switch(temp)
{
case0xe7:
write_com(0x80);write_data('1');write_com(0x81);write_data('2');break;
case0xd7:
write_com(0x80);write_data('1');write_com(0x81);write_data('3');break;
case0xb7:
write_com(0x80);write_data('1');write_com(0x81);write_data('4');break;
case0x77:
write_com(0x80);write_data('1');write_com(0x81);write_data('5');break;
}break;
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 矩阵 键盘 控制 12864 显示 经典 程序