我昨天写了个程序,就是将矩阵键盘按下后将按钮上对应的数字显示在LCD1602屏幕上,程序不停地扫描矩阵键盘(废话 呵呵~ )当检测到有按钮按下后将flag置一,然后将此时的键盘编码给变量keycode,再通过numbersearch();函数找到相应按钮的对应数值,然后通过液晶显示出来(我设置的是读写一个字符后地址自动加一)。现在先不管别的,我有两块1602 LCD 其中一块是按下矩阵键盘按钮后屏幕第一行全部显示该数字! 另一块是数字随便乱显示!~ 搞了一天了,硬是不知道问题在哪儿~ 悬赏15分!
程序如下:
#include<stdio.h> //使用sprintf(); 时必须带上“标准输入输出头文件”
#include<reg51.h>
#include<math.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^6;
sbit RW=P2^5;
sbit LCDE=P2^7;
sbit STA7=P0^7;
bit flag=0;
uchar keycode,key=0xfe,str[3]={'A'};
uchar code num[]={
0xb7,0xbb,0xbd,0xbe,
0xd7,0xdb,0xdd,0xde,
0xe7,0xeb,0xed,0xee
};
uint numbersearch();
void keyscan();
void initdisplayer();
void write(uchar,uchar,uchar);
void busycheck();
void delay(uint);
void display();
main()
{
uint number;
initdisplayer(); //初始化液晶显示器
ag: keyscan();
flag=0;
P3=keycode;
number=numbersearch(); //返回相关按钮对应的数字给变量number
sprintf(str,"%d",number); //此处的number一定要是整型变量
display();
goto ag;
}
void initdisplayer()
{
write(0,0,0x0c); //开显示 不显示光标
write(0,0,0x06); //读写一个字符指针加一,屏幕不移动
write(0,0,0x01); //清屏
write(0,0,0x80+0x00); //初始化地址
}
void write(uchar R_W,uchar Dat_Cmd,uchar date)
{
busycheck();
RW=R_W;
RS=Dat_Cmd;
P0=date;
delay(5);
LCDE=1;
delay(5);
LCDE=0;
delay(10);
}
void delay(uint tt)
{
while(tt--);
}
void busycheck() //液晶控制器繁忙检测
{
bit temp;
RS=0;
RW=1;
do
{
LCDE=1;
temp=STA7;
LCDE=0;
}while(temp);
}
void keyscan()
{
while(!flag)
{
key=_crol_(key,1);
P2=key;
if(P2!=key)
{
delay(500);
if(P2!=key)
{
flag=1;
keycode=P2;
while(P2!=key); //松手检测
}
}
}
}
uint numbersearch()
{
uchar i;
for(i=0;i<=8;i++)
{
if(num[i]==keycode)
{
break;
}
}
return(i+1);
}
void display()
{
uchar i;
while(str[i]!='\0') //输出到液晶1602上
{
write(0,1,str[i++]);
}
}
è¿ä¸ªæ¯é天祥è§å±éé¢çå§ç»ç¨åºï¼äººå®¶çä¸è¥¿è½çæï¼èªå·±å¨æå°±åºé®é¢ï¼ä½ è¿æ ·è¿æ¯æ²¡æ帮æ解å³é®é¢ ä¸è¿æèªå·±å·²ç»åç°äº~ ç¨åºéé¢æ个å°å°æ»´é»è¾é误ï¼åµåµ~
追çé¢ï¼èªå·±åå°ç¨åºåªæèªå·±æ好çãã
刚刚买了一块1602的液晶屏,只有背光灯亮,液晶屏没有显示,并且调节对比...
楼主是否考虑过或验证过延时器程序与液晶屏有没有任何冲突呢?背光灯亮,说明高压板、背光灯管等等基本上没有问题,没有显示很可能是AD驱动板没有工作;从对比度不能调节这一点来看,有可能是AD驱动板的MCU工作异常,或它的电源部分不正常,使得AD板不能输出高电平去控制高压板的开关极(此时有背光,...
1602坏了怎么修
首先,检查电源线是否连接正常,尝试重新插拔连接线。如果问题仍然存在,可以尝试使用软件复位或者硬件复位来恢复显示屏的正常功能。另外,还可以尝试调整对比度和亮度设置,确保显示屏能够正常显示信息。此外,如果1602显示屏的背光功能失效,检查背光电路是否有问题,例如电源连接是否稳定等。综上所述,通过简单...
1602液晶屏显示时间。有时候不显示,一显示就是乱码,而且液晶屏的显示东...
检查晶振,还有工作电压,液晶屏与电路板是否接触好,最后就可能是程序问题,问题多样化,也不一定说的 清楚
AVR上面lcd1602只亮不显示,但是写入程序之后屏幕一直在闪烁
写个简单数字程序 看看先不显示数字 在检查一下温度传感器 其他都对 那就是温度传感器的问题 要不你现在开发板上面 看看 温度传感器好不好用!
1602液晶屏能显示数据, 就是不听使唤!!! ~高人求助, 我百度了好多,发现...
你好:首先说个比较明显的问题,你就写了一次数据就进入while(1),且不再做任何操作,请问你所描述的“不听使唤”是什么意思。
1602液晶显示模块不显示的问题
P0口需要上拉电阻,P3应该不需要上拉电阻。这种不显示的问题毛病不好找,建议还是看看硬件连接上。那个对比度调节应该有反应的。
为什么把程序烧进去后LCD1602显示一排黑色方块
1602液晶显示模块有个特性,就是在通电后,如果没有正确执行初始化操作,屏幕将会出现第一行点阵全部点亮、第二行点阵不亮的现象,此时除了初始化操作以外,1602液晶屏不接收其它操作指令。因此,在驱动1602液晶屏的时候出现这种情况,应该重点检查控制电路(单片机或者其它控制器)是否正确输出了初始化的信号...
51单片机 LCD1602只亮不显示东西
对于LCD1602不显示字符,一是先检查仿真电路对不对,再检查程序中定义的控制引脚与仿真图是否相符。因很多人都是从网上找的程序,与自己的仿真图并不相符,需要改程序的引脚定义,但没有改。二就是检查程序是不是写错了,虽然引脚定义对,但显示字符的程序不对。你没有发仿真图,所以,看程序是找不到...
1602液晶显示屏显示程序
1602液晶的程序我有,要做数字锁的话其实用到液晶也不多。因为你显示密码是时候不应该都是现实***吗?你只需把键盘写入的数据存在一个数组中,然后跟密码数组对比就好了。还有就是值得注意的是数据类型问题。输入的键值看你处理的方式而定,密码存放的格式,还有输出显示的是ascll码。注意转换。下面附带...
单片机LCD1602错误显示
在每输入数据之前,你得先确定当前的Address Counter(AC)记录的是不是你所想的,也就是第一个字符的DDRAM是不是对的,之后每输入一个数据,AC是自加1的。建议你下载HD44780的资料仔细看一遍,它是LCD的驱动IC,比直接看1602的资料在原理上会更清楚一些。