标题:
单片机LCD12864和按键的程序问题,求大神解答一下
[打印本页]
作者:
18879461580
时间:
2019-10-11 21:13
标题:
单片机LCD12864和按键的程序问题,求大神解答一下
4x4矩阵按键,为什么0~3(第一行的四个按键)的按键值怎么都显示不了,剩下的12个按键值都能显示,这是为什么,希望懂的大神能给分析一下,万分感谢!
void main()
{
u8 key=0;
LCD_Init();
LCD_POS(0,0);
LCD12864_disp("请输入");
LCD_POS(1,0);
while(1)
{
key=KeyPro();
if(key!=16)
{
LCD_Writedata(key+'0');
}
}
}
u8 Keyscanf()
{
u8 cord_l=0x0f,cord_h=0xf0;
KEY=0x0f;
if(KEY!=0x0f)
{
Delay_MS(10);
if(KEY!=0x0f)
{
cord_l=KEY&0x0f;
KEY=cord_l|0xf0;
cord_h=KEY&0xf0;
while((KEY&0xf0)!=0xf0);
}
}
return (cord_l|cord_h);
}
u8 KeyPro()
{
u8 key_value=16;
switch(Keyscanf())
{
case 0x77: key_value=0; break;
case 0x7b: key_value=1; break;
case 0x7d: key_value=2; break;
case 0x7e: key_value=3; break;
case 0xb7: key_value=4; break;
case 0xbb: key_value=5; break;
case 0xbd: key_value=6; break;
case 0xbe: key_value=7; break;
case 0xd7: key_value=8; break;
case 0xdb: key_value=9; break;
case 0xdd: key_value=10; break;
case 0xde: key_value=11; break;
case 0xe7: key_value=12; break;
case 0xeb: key_value=13; break;
case 0xed: key_value=14; break;
case 0xee: key_value=15; break;
}
return key_value;
}
作者:
wulin
时间:
2019-10-12 07:34
就你的矩阵按键程序而言没有什么问题,其它键值能正常显示说明显示程序正常。问题可能出在硬件电路连接上,与0~3共同相关的IO口是Px.7。
作者:
18879461580
时间:
2019-10-12 13:44
wulin 发表于 2019-10-12 07:34
就你的矩阵按键程序而言没有什么问题,其它键值能正常显示说明显示程序正常。问题可能出在硬件电路连接上, ...
问题解决了,十分感谢。刚开始我是将矩阵按键接在p1口的,怎么都显示不了0~3这几个键,听了你的建议后我重新接在p2口上,结果就能显示了,不知道为什么会这样,我接在p1口的时候做动态显示都是没问题的呀
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1