找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机矩阵键盘控制12864 液晶屏能显示,但是键盘无效 求帮助

[复制链接]
跳转到指定楼层
楼主
ID:492954 发表于 2019-3-18 09:18 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助大佬,用矩阵键盘控制12864液晶屏的程序,液晶屏能显示,但是键盘无效
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:134317 发表于 2019-3-18 12:14 | 只看该作者
不放程序出来,谁也帮不了你
回复

使用道具 举报

板凳
ID:277550 发表于 2019-3-18 13:40 | 只看该作者
功能也不说,电路、程序也没有,,看天书
回复

使用道具 举报

地板
ID:492967 发表于 2019-3-18 14:55 | 只看该作者
把程序跟对应仿真图发一下  要不怎么解决问题
回复

使用道具 举报

5#
ID:339010 发表于 2019-3-18 15:20 | 只看该作者
液晶能显示说明数码管显示部分的代码是正确的,键盘无响应说明问题在键盘逻辑控制上出错,你需要仔细排查。我有相关代码,可供参考。#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code table[]={
0xfe,0xfc,0xf8,0xf0,
0xe0,0xc0,0x80,0x00};
void delay(uint z){
        uchar x,y;
        for(x=z;x>0;x--)
         for(y=199;y>0;y--);
}

uchar keyscan(void)  
{
        uchar cord_h,cord_l;
        P1=0x0f;            
        cord_h=P1&0x0f;     
        if(cord_h!=0x0f)   
        {
                delay(100);        
                if(cord_h!=0x0f)
                {
                        cord_h=P1&0x0f;  
                        P1=cord_h|0xf0;  
                        cord_l=P1&0xf0;  
                        return(cord_h+cord_l);
                }
        }
        return(0xff);     
}

void key_word(uint key)
{
        switch(key)
        {
           case 0xee:P0=table[0],P2=0xff;break;
           case 0xde:P0=table[1],P2=0xff;break;
           case 0xbe:P0=table[2],P2=0xff;break;
           case 0x7e:P0=table[3],P2=0xff;break;
           case 0xed:P0=table[4],P2=0xff;break;
           case 0xdd:P0=table[5],P2=0xff;break;
           case 0xbd:P0=table[6],P2=0xff;break;
           case 0x7d:P0=table[7],P2=0xff;break;
           case 0xeb:P0=table[7],P2=table[0];break;
           case 0xdb:P0=table[7],P2=table[1];break;
           case 0xbb:P0=table[7],P2=table[2];break;
           case 0x7b:P0=table[7],P2=table[3];break;
           case 0xe7:P0=table[7],P2=table[4];break;
           case 0xd7:P0=table[7],P2=table[5];break;
           case 0xb7:P0=table[7],P2=table[6];break;
           case 0x77:P0=table[7],P2=table[7];break;
        }
}
void main(){
        uchar i=0;
        P1=0xf0;
        while(1){
         key_word(keyscan());
        }
}
回复

使用道具 举报

6#
ID:275449 发表于 2019-3-18 18:01 | 只看该作者
我这有模块化的例程需要吗?  stm32的   你这个原因得先查是不是你的矩阵按键 不触发  做小测试程序  很快就能排出了
回复

使用道具 举报

7#
ID:643286 发表于 2020-1-5 09:30 来自手机 | 只看该作者
楼主,问题解决了吗
回复

使用道具 举报

8#
ID:643286 发表于 2020-1-5 09:32 来自手机 | 只看该作者
12345678110 发表于 2019-3-18 18:01
我这有模块化的例程需要吗?  stm32的   你这个原因得先查是不是你的矩阵按键 不触发  做小测试程序  很快 ...

老哥,我也遇到了这个问题,加上显示屏后,按键工作一次便不能用了,矩阵按键程序在别的板上能用,这是把板子给烧了吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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