找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

LCD+矩阵键盘干扰问题

[复制链接]
admin 发表于 2012-9-2 08:52:38 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我想通过LCD1602显示矩阵键盘的键值 为什么我每次按下按键后LCD都不能正常显示键值 要么按下一个按键重复显示多个键值 要么什么也不显示?而且有时候明明按下的是S1却显示S2的键值?好奇怪呀 是程序的原因呢 还是由于干扰?程序如下 求高人解释一下 谢谢!!!
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
uint i;
uchar key_l,key_h,key;
uchar m;
//*****************************
void delay(uint ms) //ms*500us
{
while(ms--)
{
for(i=0;i<250;i++);
}
}
//*****************************
bit lcd_busy()
{
bit flag;
P0=0xff;
RS=0;
RW=1;
E=1;
delay(1);
flag=(bit)(P0&0xf0);
E=0;
return(flag);
}
//*****************************
void lcd_wcmd(uchar cmd)
{
while(lcd_busy());
P0=cmd;
RS=0;
RW=0;
E=1;
delay(1);
E=0;
}
//*****************************
void lcd_wdat(uchar dat)
{
while(lcd_busy());
P0=dat;
RS=1;
RW=0;
E=1;
delay(1);
E=0;
}
//*****************************
uchar keyscanf()
{
P1=0x0f;
key_h=P1&0x0f;
key=key_l+key_h;
switch(key)
{
case(0xed):{m='0';}break;
case(0xdd):{m='1';}break;
case(0xbd):{m='2';}break;
case(0x7d):{m='3';}break;
case(0xeb):{m='4';}break;
case(0xdb):{m='5';}break;
case(0xbb):{m='6';}break;
case(0x7b):{m='7';}break;
case(0xe7):{m='8';}break;
case(0xd7):{m='9';}break;
}
return(m);
}
//****************************
void keydown()
{
do
{
P1=0xf0;
key_l=P1&0xf0;
if(key_l!=0xf0)
{
delay(10);
key_l=P1&0xf0;
}
}while(key_l==0xf0);
delay(40);
keyscanf();
}
//****************************
lcd_init()
{
delay(20);
lcd_wcmd(0x06);
delay(5);
lcd_wcmd(0x0c);
delay(5);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x01);
delay(5);
lcd_wcmd(0x80);
delay(5);
}
//****************************
void main()
{
//EA=1;
//EX0=1;
//IT0=1;
lcd_init();
//lcd_wdat('A');
while(1)
{
keydown();
lcd_wdat(m);
}
}
/***************************
void INT_0()interrupt 0
{
lcd_wcmd(0x01);
delay(1);
}*/
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 12:59 , Processed in 0.055982 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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