找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2328|回复: 5
收起左侧

单片机密码锁 LCD只亮不显示内容 求分析

[复制链接]
ID:732070 发表于 2020-4-20 10:19 来自手机 | 显示全部楼层 |阅读模式
LCD只亮不显示内容。各位看看
D1054D11-DF6D-49E4-B57B-B98DE4555EB1.png
回复

使用道具 举报

ID:732070 发表于 2020-4-20 10:25 来自手机 | 显示全部楼层
#include<reg52.h>  #include<intrins.h>  #define uchar unsigned char  static unsigned char table[6]={0,0,0,0,0,0};  //Declare functions  uchar Busy_Check();  void Initialize_LCD();  void Write_LCD_Data(uchar dat);  void Write_LCD_Command(uchar cmd);  void Display_String(uchar x,uchar y,uchar *str);  void Display_char(uchar hang,uchar lie,char sign);  // void write_add(uchar address,uchar date);// ? AT24Cxx ?????????? uchar read_add(uchar address);// ? AT24Cxx ?????????? void init();  uchar h=20;  sbit touch=P2^1;  sbit touch1=P2^2;  sbit speaker=P2^0;  void delay(unsigned char ms) // ?? **ms  {  unsigned char i;  while(ms--)  {  for(i=250;i>0;i--)  {  _nop_();  _nop_();  _nop_();  _nop_();  }  }  }  unsigned char keyscan() // ???? {  unsigned char temp,y,j;  unsigned char anjian[]={0xfe,0xfd,0xfb,0xf7};  for(y=0;y<4;y++)  {  P1 = anjian[y];  temp = 0x10;  for(j=0;j<4;j++)  {  if(!(P1&temp))  {  return(j+y*4);  }  temp = _crol_(temp,1);  }  }  }  void judge()  {  P1 = 0xf0; if(P1!=0xf0) // ??????? {  delay(50); delay(50); // ?? if(P1!=0xf0)  {  h=keyscan();  }  }  }  unsigned char write_add(char,char); unsigned char read_add(char,char); void main()  {  unsigned char a=1,i=0,k=0,l=1,m=1,n,f=0,s=0;  int q;  Initialize_LCD();  init();  Display_String(1,1,"Welcome To Use ");  Display_String(2,1," ");  touch1=0; //??? while ?? while(1)  {  judge();  if(h<10)  {  if(h==table[i])  k++;  Display_String(2,a,"*");  a++;  i++;  if(a==7)  a=1;  if(i==6)  i=0;  h=16;  }  if(h==14)  {  Display_String(1,1,"Input Password");  Display_String(2,1," ");  h=16;  touch=1;  touch1=0;  k=0;  l=1;  q=0;  }  if(h==12)  {  if(k==6)  {  Display_String(1,1,"Password Right");  Display_String(2,1,"Lock Opened!");  touch=~touch;  }  else  {  Display_String(1,1,"Password Error");  Display_String(2,1," ");          l=0;  q++;  while(q==3)  {  speaker=0;  delay(200);  delay(200);  delay(200);  speaker=1 ;  q=0;  }  h=14;  }  delay(255);  k=0;  h=16;  while(l)  {  judge();  if(h==11)   { Display_String(1,1,"New Code");  Display_String(2,1," ");  while(m==1)  {  judge();  touch1=~touch1;  if(h<10)  {  table[n]=h;  write_add(s,h);  s++;  Display_String(2,a,"*");  a++;   n++;  h=16;  if(n==6)          {  n=0;  s=0;  }  }  if(h==15)  {  if(n==0)  n=6;  s=6;  a--;  s-- ;  Display_String(2,a," ");  n--;  h=16;  }  if(h==13)  m=0;  }  if(h==13)  h=13;  f=1;  }  if(h==14)  {  l=0;  }  if(h==13)  {  Display_String(2,1," ");  for(n=0;n<6;n++)  Display_char(2,n+1,(uchar)(table[n]+48) );h=13;l=0;f=1;}  k=0;  }  }  if(h==15)  {          a--;  Display_String(2,a," ");  k--;  i--;  h=16;  }  if(h==13)  { if(f==1)  { for(n=0;n<6;n++)  Display_char(2,n+1,(uchar)(table[n]+48) );f=0; }  else  Display_String(2,1," ****** ");  delay(255);  delay(255);  Display_String(1,1," Welcome To Use ");  Display_String(2,1," ");  l=1;a=1;k=0;n=0;m=1;  h=16;  }  }  for(s=0;s<6;s++)  { table[s]=read_add(s);  delay(50);  }  }
回复

使用道具 举报

ID:584814 发表于 2020-4-21 08:37 | 显示全部楼层
程序太乱,分析完毕。
回复

使用道具 举报

ID:595457 发表于 2020-4-21 09:48 | 显示全部楼层
请问楼主仿真的主要功能
回复

使用道具 举报

ID:595457 发表于 2020-4-21 09:49 | 显示全部楼层
最近再做个实验,这个lcd中lm1602的使用有什么要求吗
回复

使用道具 举报

ID:311846 发表于 2020-4-21 10:06 | 显示全部楼层
你这程序没几个人想看的,首先你得检测IO口信号输出是否正常,正常后在读取ID,能读ID在进行其他操作,一般我都是这样的操作的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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