找回密码
 立即注册

QQ登录

只需一步,快速开始

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

1602不显示内容仅显示白方块

[复制链接]
跳转到指定楼层
楼主
ID:1092057 发表于 2023-8-27 20:09 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
求助大佬帮忙看看,目的是做一个检测光亮度的器件,目前检测系统没有问题,但原定的显示部分(1602)无法正常显示代码如下
  1. #include <REG52.H>       
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <INTRINS.H>
  5. #define uchar unsigned char
  6. #define uint  unsigned int       
  7. #define DataPort P0                  
  8. sbit    LCM_RS=P2^7;
  9. sbit    LCM_RW=P2^6;
  10. sbit    LCM_EN=P2^5;

  11. sbit k1=P1^5;         

  12. sbit led=P3^7;

  13. sbit beep=P3^6;
  14. sbit light = P1^1;

  15. void    delay(unsigned int k);
  16. void    InitLcd();
  17. void    WriteDataLCM(uchar dataW);
  18. void    WriteCommandLCM(uchar CMD,uchar Attribc);
  19. void    DisplayOneChar(uchar X,uchar Y,uchar DData);
  20. void    LCD_Clear();

  21. void InitLcd()                               
  22. {                       
  23.         WriteCommandLCM(0x38,1);       
  24.         WriteCommandLCM(0x08,1);       
  25.         WriteCommandLCM(0x01,1);
  26.         WriteCommandLCM(0x06,1);       
  27.         WriteCommandLCM(0x0c,1);
  28. }

  29. void WaitForEnable(void)       
  30. {                                       
  31.         DataPort=0xff;               
  32.         LCM_RS=0;LCM_RW=1;_nop_();
  33.         LCM_EN=1;_nop_();_nop_();
  34.         while(DataPort&0x80);       
  35.         LCM_EN=0;                               
  36. }
  37. void WriteCommandLCM(uchar CMD,uchar Attribc)
  38. {                                       
  39.         if(Attribc)WaitForEnable();       
  40.         LCM_RS=0;LCM_RW=0;_nop_();
  41.         DataPort=CMD;_nop_();       
  42.         LCM_EN=1;_nop_();_nop_();LCM_EN=0;
  43. }       

  44. void WriteDataLCM(uchar dataW)
  45. {                                       
  46.         WaitForEnable();               
  47.         LCM_RS=1;LCM_RW=0;_nop_();
  48.         DataPort=dataW;_nop_();       
  49.         LCM_EN=1;_nop_();_nop_();LCM_EN=0;
  50. }

  51. void DisplayOneChar(uchar X,uchar Y,uchar DData)
  52. {                                               
  53.         Y&=1;                                               
  54.         X&=15;                                               
  55.         if(Y)X|=0x40;                                       
  56.         X|=0x80;                       
  57.         WriteCommandLCM(X,0);               
  58.         WriteDataLCM(DData);               
  59. }

  60. void delay(unsigned int k)       
  61. {                                               
  62.         unsigned int i,j;                               
  63.         for(i=0;i<k;i++)
  64.         {                       
  65.         for(j=0;j<121;j++)                       
  66.         {;}
  67.         }                                               
  68. }                                                           

  69. void LCD_Clear(void)
  70. {
  71.   WriteCommandLCM(0x01);
  72.   delay(20);
  73. }

  74. void main()
  75. {
  76.         InitLcd()
  77.         LCD_Clear();
  78.                 DisplayOneChar(0,1,'d');
  79.                 DisplayOneChar(1,1,'a');
  80.                 DisplayOneChar(2,1,'n');
  81.                 led=0;
  82.                 beep=1;
  83.                 k1=0;
  84.     WriteCommandLCM(0x08);
  85.      while(1)
  86.      {
  87.                          if(light==0)
  88.                          {
  89.                                 led=1;
  90.                                 beep=0;
  91.                          }
  92.     }
  93. }
复制代码




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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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