找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD1602显示程序问题

[复制链接]
跳转到指定楼层
楼主


error属于数组table0[],应该不显示才对,求解

主程序:
  1. #include <reg52.h>

  2. #define uchar unsigned char

  3. sbit ledg=P1^0;
  4. sbit ledr=P1^7;
  5. sbit buzz=P1^4;

  6. char table0[]="error";
  7. char table1[]="open";
  8. char table2[]="password:****";

  9. extern void InitLcd1602();
  10. extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
  11. unsigned char shuzi;
  12. unsigned char shuzi1[4];char mima[4]="0000";
  13. extern void KeyScan();
  14. extern unsigned char key_scan(void);
  15. void main()   
  16. {
  17.         int biaozhi=0;
  18.         int i=0;
  19.         InitLcd1602();
  20.         LcdShowStr(0,0,table2);
  21.         while(1)
  22.         {        
  23.                 shuzi=key_scan();
  24.                 if(shuzi>='0'&&shuzi<='9')
  25.                 {
  26.                 shuzi1[i]=shuzi;
  27.                 i++;
  28.                 if(i>=4)
  29.                 {
  30.                         i=0;
  31.                 }               
  32.                 }
  33.                 if(shuzi=='g')
  34.                 {
  35.                         biaozhi=1;
  36.                 }
  37.                 if(shuzi=='f')
  38.                 {
  39.                         biaozhi=0;
  40.                 }
  41.                 if(biaozhi==1)
  42.                 {
  43.                         mima[0]=shuzi1[0];
  44.                         mima[1]=shuzi1[1];
  45.                         mima[2]=shuzi1[2];
  46.                         mima[3]=shuzi1[3];
  47.                 }
  48.                 LcdShowStr(0,1,mima);
  49.                 LcdShowStr(9,0,shuzi1);
  50.         }
  51. }


  52. lcd程序:
  53. #include <reg52.h>

  54. #define LCD1602_DB  P0
  55. sbit LCD1602_RS = P2^0;
  56. sbit LCD1602_RW = P2^1;
  57. sbit LCD1602_E  = P2^2;

  58. /* μè′yòo¾§×¼±¸oà */
  59. void LcdWaitReady()
  60. {
  61.     unsigned char sta;

  62.     LCD1602_DB = 0xFF;
  63.     LCD1602_RS = 0;
  64.     LCD1602_RW = 1;
  65.     do {
  66.         LCD1602_E = 1;
  67.         sta = LCD1602_DB;
  68.         LCD1602_E = 0;
  69.     } while (sta & 0x80);
  70. }

  71. void LcdWriteCmd(unsigned char cmd)
  72. {
  73.     LcdWaitReady();
  74.     LCD1602_RS = 0;
  75.     LCD1602_RW = 0;
  76.     LCD1602_DB = cmd;
  77.     LCD1602_E  = 1;
  78.     LCD1602_E  = 0;
  79. }

  80. void LcdWriteDat(unsigned char dat)
  81. {
  82.     LcdWaitReady();
  83.     LCD1602_RS = 1;
  84.     LCD1602_RW = 0;
  85.     LCD1602_DB = dat;
  86.     LCD1602_E  = 1;
  87.     LCD1602_E  = 0;
  88. }

  89. void LcdSetCursor(unsigned char x, unsigned char y)
  90. {
  91.     unsigned char addr;

  92.     if (y == 0)  
  93.         addr = 0x00 + x;
  94.     else
  95.         addr = 0x40 + x;  
  96.     LcdWriteCmd(addr | 0x80);  
  97. }

  98. void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)
  99. {
  100.     LcdSetCursor(x, y);   
  101.     while (*str != '\0')
  102.     {
  103.         LcdWriteDat(*str++);
  104.     }
  105. }
  106. /* 3õê¼»ˉ1602òo¾§ */
  107. void InitLcd1602()
  108. {
  109.     LcdWriteCmd(0x38);
  110.     LcdWriteCmd(0x0C);  
  111.     LcdWriteCmd(0x06);
  112.     LcdWriteCmd(0x01);  
  113. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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