找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1701|回复: 2
打印 上一主题 下一主题
收起左侧

单片机LCD12864和按键的程序问题,求大神解答一下

[复制链接]
跳转到指定楼层
楼主
ID:616214 发表于 2019-10-11 21:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2019-10-12 07:34 | 只看该作者
就你的矩阵按键程序而言没有什么问题,其它键值能正常显示说明显示程序正常。问题可能出在硬件电路连接上,与0~3共同相关的IO口是Px.7。
回复

使用道具 举报

板凳
ID:616214 发表于 2019-10-12 13:44 | 只看该作者
wulin 发表于 2019-10-12 07:34
就你的矩阵按键程序而言没有什么问题,其它键值能正常显示说明显示程序正常。问题可能出在硬件电路连接上, ...

问题解决了,十分感谢。刚开始我是将矩阵按键接在p1口的,怎么都显示不了0~3这几个键,听了你的建议后我重新接在p2口上,结果就能显示了,不知道为什么会这样,我接在p1口的时候做动态显示都是没问题的呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表