找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这个LCD1602的显示程序不对吗?

[复制链接]
跳转到指定楼层
楼主
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
        sbit rs=P3^5;  //1602的数据,指令选择线
  sbit rw=P3^6;  //1602的读写控制线
  sbit en=P3^7; //1602的使能控制线
uchar code table[]="LCD1602 check ok";
uchar code table1[]="study up";
void delay(uint n)  
{
        uint x,y;
        for(x=n;x>0;x--)
        for(y=110;y>0;y--);
}
void lcd_wcom(uchar com)  //1602的写命令涵数
{
        rs=0;  //选择指令寄存器
        rw=0;  //选择写
        P2=com;  //把命令送入P2
        delay(5);
        en=1;  //使能线电平变化,命令写入1602的8位数据口
        en=0;
}
void lcd_wdat(uchar dat)
{
        rs=1;
        rw=0;
        P2=dat;
        en=1;
        en=0;
}
void lcd_init()  //1602初始化涵数
{
        lcd_wcom(0x38);  //8位数据,双列,5*7字形
        lcd_wcom(0x0c);  //开启显示屏,关光标
        lcd_wcom(0x06);  //显示地址递,写一数据后,显示位置后移一位
        lcd_wcom(0x01);  //清屏
}
void main()  //主涵数
{
        uchar n,m=0;
        lcd_init();  //液晶初始化
        lcd_wcom(0x08);
        for(m=0;m<16;m++)  //将tabe[]中的数据依次写入1602中
        {
                lcd_wdat(table[m]);
                delay(20);
        }
        lcd_wcom(0x80+0x44); //重新设定显示地址为0xc4,下排第5位
        for(n=0;n<8;n++)   //将tabe1[]中的数据依次写入1602中
        {
                lcd_wdat(table1[n]);
                delay(20);
        }
        while(1);
}                        
怎 屏幕显示不出来呢?大家帮看下——

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

使用道具 举报

沙发
ID:213173 发表于 2022-8-30 06:04 | 只看该作者
主要错误:lcd_wcom(0x08);正确: lcd_wcom(0x80);





  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit rs=P3^5;  //1602的数据,指令选择线
  5. sbit rw=P3^6;  //1602的读写控制线
  6. sbit en=P3^7; //1602的使能控制线
  7. uchar code table[]="LCD1602 check ok";
  8. uchar code table1[]="study up";
  9. void delay(uint n)  
  10. {
  11.         uint x,y;
  12.         for(x=n;x>0;x--)
  13.                 for(y=110;y>0;y--);
  14. }
  15. void lcd_wcom(uchar com)  //1602的写命令涵数
  16. {
  17.         rs=0;  //选择指令寄存器
  18.         rw=0;  //选择写
  19.         en=1;
  20.         P2=com;  //把命令送入P2
  21.         delay(1);
  22.         en=0;  //使能线 电平下降沿,命令写入1602的8位数据口
  23. }
  24. void lcd_wdat(uchar dat)
  25. {
  26.         rs=1;
  27.         rw=0;
  28.         en=1;
  29.         P2=dat;
  30.         delay(1);
  31.         en=0;
  32. }
  33. void lcd_init()  //1602初始化涵数
  34. {
  35.         lcd_wcom(0x38);  //8位数据,双列,5*7字形
  36.         lcd_wcom(0x0c);  //开启显示屏,关光标
  37.         lcd_wcom(0x06);  //显示地址递,写一数据后,显示位置后移一位
  38.         lcd_wcom(0x01);  //清屏
  39. }
  40. void main()  //主涵数
  41. {
  42.         uchar n,m=0;
  43.         lcd_init();  //液晶初始化
  44.         lcd_wcom(0x08);
  45.         lcd_wcom(0x80);
  46.         for(m=0;m<16;m++)  //将tabe[]中的数据依次写入1602中
  47.         {
  48.                 lcd_wdat(table[m]);
  49.                 delay(20);
  50.         }
  51.         lcd_wcom(0x80+0x44); //重新设定显示地址为0xc4,下排第5位
  52.         for(n=0;n<8;n++)   //将tabe1[]中的数据依次写入1602中
  53.         {
  54.                 lcd_wdat(table1[n]);
  55.                 delay(20);
  56.         }
  57.         while(1);
  58. }
复制代码



回复

使用道具 举报

板凳
ID:1042173 发表于 2022-9-7 02:11 | 只看该作者
wulin 发表于 2022-8-30 06:04
主要错误:lcd_wcom(0x08);正确: lcd_wcom(0x80);

多谢你的审查。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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