找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1878|回復(fù): 2
收起左側(cè)

這個(gè)LCD1602的顯示程序不對(duì)嗎?

[復(fù)制鏈接]
ID:1042173 發(fā)表于 2022-8-29 23:47 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
        sbit rs=P3^5;  //1602的數(shù)據(jù),指令選擇線(xiàn)
  sbit rw=P3^6;  //1602的讀寫(xiě)控制線(xiàn)
  sbit en=P3^7; //1602的使能控制線(xiàn)
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的寫(xiě)命令涵數(shù)
{
        rs=0;  //選擇指令寄存器
        rw=0;  //選擇寫(xiě)
        P2=com;  //把命令送入P2
        delay(5);
        en=1;  //使能線(xiàn)電平變化,命令寫(xiě)入1602的8位數(shù)據(jù)口
        en=0;
}
void lcd_wdat(uchar dat)
{
        rs=1;
        rw=0;
        P2=dat;
        en=1;
        en=0;
}
void lcd_init()  //1602初始化涵數(shù)
{
        lcd_wcom(0x38);  //8位數(shù)據(jù),雙列,5*7字形
        lcd_wcom(0x0c);  //開(kāi)啟顯示屏,關(guān)光標(biāo)
        lcd_wcom(0x06);  //顯示地址遞,寫(xiě)一數(shù)據(jù)后,顯示位置后移一位
        lcd_wcom(0x01);  //清屏
}
void main()  //主涵數(shù)
{
        uchar n,m=0;
        lcd_init();  //液晶初始化
        lcd_wcom(0x08);
        for(m=0;m<16;m++)  //將tabe[]中的數(shù)據(jù)依次寫(xiě)入1602中
        {
                lcd_wdat(table[m]);
                delay(20);
        }
        lcd_wcom(0x80+0x44); //重新設(shè)定顯示地址為0xc4,下排第5位
        for(n=0;n<8;n++)   //將tabe1[]中的數(shù)據(jù)依次寫(xiě)入1602中
        {
                lcd_wdat(table1[n]);
                delay(20);
        }
        while(1);
}                        
怎 屏幕顯示不出來(lái)呢?大家?guī)涂聪隆?br />
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-8-30 06:04 | 顯示全部樓層
主要錯(cuò)誤:lcd_wcom(0x08);正確: lcd_wcom(0x80);

無(wú)標(biāo)題.jpg



  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit rs=P3^5;  //1602的數(shù)據(jù),指令選擇線(xiàn)
  5. sbit rw=P3^6;  //1602的讀寫(xiě)控制線(xiàn)
  6. sbit en=P3^7; //1602的使能控制線(xiàn)
  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的寫(xiě)命令涵數(shù)
  16. {
  17.         rs=0;  //選擇指令寄存器
  18.         rw=0;  //選擇寫(xiě)
  19.         en=1;
  20.         P2=com;  //把命令送入P2
  21.         delay(1);
  22.         en=0;  //使能線(xiàn) 電平下降沿,命令寫(xiě)入1602的8位數(shù)據(jù)口
  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初始化涵數(shù)
  34. {
  35.         lcd_wcom(0x38);  //8位數(shù)據(jù),雙列,5*7字形
  36.         lcd_wcom(0x0c);  //開(kāi)啟顯示屏,關(guān)光標(biāo)
  37.         lcd_wcom(0x06);  //顯示地址遞,寫(xiě)一數(shù)據(jù)后,顯示位置后移一位
  38.         lcd_wcom(0x01);  //清屏
  39. }
  40. void main()  //主涵數(shù)
  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[]中的數(shù)據(jù)依次寫(xiě)入1602中
  47.         {
  48.                 lcd_wdat(table[m]);
  49.                 delay(20);
  50.         }
  51.         lcd_wcom(0x80+0x44); //重新設(shè)定顯示地址為0xc4,下排第5位
  52.         for(n=0;n<8;n++)   //將tabe1[]中的數(shù)據(jù)依次寫(xiě)入1602中
  53.         {
  54.                 lcd_wdat(table1[n]);
  55.                 delay(20);
  56.         }
  57.         while(1);
  58. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:1042173 發(fā)表于 2022-9-7 02:11 | 顯示全部樓層
wulin 發(fā)表于 2022-8-30 06:04
主要錯(cuò)誤:lcd_wcom(0x08);正確: lcd_wcom(0x80);

多謝你的審查。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表