找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1493|回复: 2
收起左侧

单片机+LCD1602四线驱动,乱码

[复制链接]
ID:717669 发表于 2020-3-28 16:56 | 显示全部楼层 |阅读模式
原来的延时都是3ms,我测试的时候改成的15ms,现在显示的是第一行有一堆乱码,第二行空。麻烦各位大神帮我看看哪里出问题了呗,谢谢。
  1. #include <stc89c5xrc.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. typedef unsigned int u16;
  6. typedef unsigned char u8;
  7. sbit lcdrs=P1^0;
  8. sbit lcdrw=P1^1;
  9. sbit lcden=P2^5;
  10. sbit P2_0=P2^0;
  11. sbit P2_1=P2^1;
  12. uchar key_s, key_v, tmp;
  13. uchar code table1[]="    5675747456:    ";
  14. uchar code table2[]="  the best one! ";
  15. void delayms(uint x);
  16. void Lcd_1602_write(uchar com,date);
  17. void Lcd_1602_init();
  18. void main() {
  19.         uchar num;        
  20.         P0=0xFF;
  21.   Lcd_1602_init();
  22.          Lcd_1602_write(0,0x80);
  23.          for(num=0;num<16;num++)
  24.   {
  25.     Lcd_1602_write(1,table1[num]);
  26.     delayms(15);
  27.   }
  28.   Lcd_1602_write(0,0xc0);
  29.   for(num=0;num<16;num++)
  30.   {
  31.      Lcd_1602_write(1,table2[num]);
  32.      delayms(15);
  33.   }        
  34.         while(1) {
  35.         }
  36. }
  37. void delayms(uint x)
  38. {
  39.           uint i,j;
  40.           for(i=x;i>0;i--)
  41.                 for(j=110;j>0;j--);
  42. }
  43. void Lcd_1602_write(uchar com,date)
  44. {
  45.           uchar i;
  46.           lcdrw=0;
  47.           lcdrs=com;
  48.           for(i=0;i<2;i++)
  49.           {
  50.        lcden=1;
  51.        P0=(P0&0x0f)|(date&0xf0);
  52.        delayms(15);
  53.        lcden=0
  54.        date<<=4;
  55.           }
  56. }
  57. void Lcd_1602_init()
  58. {                                                                                          

  59.           Lcd_1602_write(0,0x28);
  60.         delayms(15);
  61.         lcden=1;
  62.         lcden=0;
  63.         Lcd_1602_write(0,0x28);
  64.           Lcd_1602_write(0,0x0e);
  65.           Lcd_1602_write(0,0x06);
  66.           Lcd_1602_write(0,0x01);
  67. }
复制代码




回复

使用道具 举报

ID:699259 发表于 2020-3-28 17:17 | 显示全部楼层
为何一定要用4线驱动,网上例程非常多
回复

使用道具 举报

ID:584814 发表于 2020-3-31 17:03 | 显示全部楼层
编译时注意看提示,你贴的这程序根本通不过编译。
第53行 lcden=0 后面少了个分号,加上后已在普中板上完美运行。
一般不改1602可以4数据2控制2电源共8线运行,如果加工或用转换口还可以少线。
建议找个4线任意口的程序,你的这个程序4线还是占了整个P0
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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