找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机+LCD1602显示一排黑块问题

[复制链接]
跳转到指定楼层
楼主
ID:818709 发表于 2021-12-18 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
电路应该是没问题,想请大家帮我看一下程序有没有问题,好像是LCD的初始化问题,具体小弟也不太懂,麻烦各位啦。程序是用光敏电阻做光照度计的。如果大家有其他方法解决的话也想请教一下,新手Proteus仿真的时候都没问题。


程序:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit _st= P2^2;
  5. sbit _eoc=P2^1;
  6. sbit _oe=P2^0;

  7. uchar ad_result=0;
  8. int vol,lux;
  9. float realv;

  10. sbit rs=P2^5;                  
  11. sbit rw=P2^6;
  12. sbit en=P2^7;

  13. uchar code t1[]={"  illuminometer "};                  
  14. uchar code t2[]={"     Lux .   Vol"};                  
  15. void delay(uint ms)                  
  16. {
  17. uint i,j;
  18. for(i=ms;i>0;i--)
  19. for(j=110;j>0;j--);
  20. }

  21. void writelcd_cmd(uchar cmd)
  22. {
  23. en=0;
  24. rs=0;
  25. rw=0;
  26. delay(1);
  27. P0=cmd;  
  28. en=1;
  29. delay(1);
  30. en=0;
  31. }

  32. void writelcd_dat(uchar dat)
  33. {
  34. en=0;
  35. rs=1;
  36. rw=0;
  37. delay(1);
  38. P0=dat;
  39. en=1;
  40. delay(1);
  41. en=0;
  42. }

  43. void lcd_init()  
  44. {
  45. uchar i,j;
  46. writelcd_cmd(0x38);  
  47. delay(5);
  48. writelcd_cmd(0x38);
  49. delay(5);
  50. writelcd_cmd(0x38);
  51. writelcd_cmd(0x08);
  52. writelcd_cmd(0x01);
  53. writelcd_cmd(0x06);
  54. writelcd_cmd(0x0c);
  55. writelcd_cmd(0x80);
  56.         
  57. for(i=0;i<16;i++)
  58. {
  59. writelcd_dat(t1[i]);  
  60. }
  61. writelcd_cmd(0xc0);
  62. for(j=0;j<16;j++)   
  63. {
  64. writelcd_dat(t2[j]);
  65. }
  66. }

  67. void display(uint dat,uchar add)
  68. {
  69. uchar bai,shi ,ge,sfen;
  70. bai=dat/1000;
  71. shi=dat/100%10;
  72. ge=dat/10%10;
  73. sfen=dat%10;        
  74. writelcd_cmd(add);
  75. writelcd_dat(bai+0x30);
  76. writelcd_cmd(add+2);
  77. writelcd_dat(shi+0x30);
  78. writelcd_dat(ge+0x30);
  79. writelcd_dat(sfen+0x30);
  80. }

  81. void display2(uint dat,uchar add)
  82. {
  83. uchar bai,shi ,ge,sfen,wan;
  84. wan=dat/10000;
  85. bai=dat/1000&10;
  86. shi=dat/100%10;
  87. ge=dat/10%10;
  88. sfen=dat%10;        
  89. writelcd_cmd(add);
  90. writelcd_dat(wan+0x30);
  91. writelcd_dat(bai+0x30);
  92. writelcd_dat(shi+0x30);
  93. writelcd_dat(ge+0x30);
  94. writelcd_dat(sfen+0x30);
  95. }

  96. void main(void)
  97. {
  98.         lcd_init();
  99.         EA=1;
  100.         TH0=(65536-50000)/256;  
  101.     TL0=(65536-50000)%256;   
  102.     TR0=1;    //?ú2??D??T0?a??
  103.     ET0=1;
  104.         while(1)
  105.         {
  106.                
  107.                 _st=0;_st=1;_st=0;
  108.                 while(!_eoc);
  109.                 _oe=1;
  110.                 ad_result=P1;
  111.                 _oe=0;
  112.                
  113.                 vol=5000-(100.0*ad_result/5.1);
  114.                 realv=vol/1000.0;
  115.                 lux=864/((10*realv)/(5-realv)-1.36);
  116.                 if(lux<=30000 && lux>=1)
  117.                 {        
  118.                 lux=864/((10*realv)/(5-realv)-1.36);
  119.                 display2(lux,0xc0);
  120.                 display(vol,0xc8);
  121.                 }
  122.                 else
  123.                 {               
  124.                 display(vol,0xc8);
  125.                 }
  126.         }
  127. }

  128. void count0() interrupt 1  
  129. {  
  130.         P3=0xff;
  131.         
  132.         P3=0xfe;
  133.         
  134. }

复制代码

程序最后这一步没看懂是在干嘛,也想问一下
void count0() interrupt 1
{  
        P3=0xff;
        
        P3=0xfe;
        
}


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

使用道具 举报

沙发
ID:262 发表于 2021-12-18 21:06 | 只看该作者
来看一下51hei论坛里面解决此问题的痛苦经历吧:
51hei搜索框输入"1602 方块"或者"1602 黑块"或者"1602 白块"或者"1602 格":

这个是io口设置问题,最终搞定了:http://www.51hei.com/bbs/dpj-199732-1.html
http://www.51hei.com/bbs/dpj-168643-1.html
http://www.51hei.com/bbs/dpj-208189-1.html
http://www.51hei.com/bbs/dpj-210690-1.html

既有可能是软件问题也有硬件问题
http://www.51hei.com/bbs/dpj-187378-1.html
http://www.51hei.com/bbs/dpj-160754-1.html
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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