標題: 1602液晶顯示 [打印本頁]

作者: 少年偏愛Ta    時間: 2014-11-8 17:37
標題: 1602液晶顯示
請問各位大神,為啥將這個程序?qū)雴纹瑱C1602顯示屏上不顯示呢??
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LOVE MCU!";
uchar code table1[]="wo de ni!!!";
sbit RS = P2^4;   //定義端口
sbit RW = P2^5;
sbit EN = P2^6;
uchar num;
void delay(uint x) //延時1ms
  {
   uint i,j;
   for(i=x;i>=0;i--)
      for(j=100;j>=0;j--);
   }
void write_com(uchar com)//寫入命令字操作
  {
    RS=0;
    RW=0;
    P0=com;
    delay(5);
    EN=1;
    delay(5);
    EN=0;
  }

void write_data(uchar date)//寫入數(shù)據(jù)字操作
   {
    RS=1;
    RW=0;
    P0=date;
    delay(5);
    EN=1;
    delay(5);
    EN=0;
   }

void init()//1602顯示屏初始化
{
  write_com(0x38);
  write_com(0x0c);
  write_com(0x06);
  write_com(0x01);
}

void main()
{
init();
write_com(0x80);
for(num=0;num<11;num++)
   {
    write_data(table[num]);
    delay(10);
    }

write_com(0x80+0x40);
  for(num=0;num<11;num++)
    {  
      write_data(table1[num]);
      delay(10);
    }
   while(1);
}



作者: admin    時間: 2014-11-8 20:33
有可能是你的程序 不匹配你的電路
作者: wyy450y    時間: 2014-11-8 21:24
檢查看看硬件電路連接正確了沒有
作者: gaozhaohong    時間: 2014-11-9 15:39
我認為一、 程序缺少寫"wo de ni!!!"的代碼;二、for(i=x;i>=0;i--)for(j=100;j>=0;j--);這兩句你可以改成for(i=x;i>0;i--)for(j=100;j>0;j--); 就完全可以顯示了。




作者: 少年偏愛Ta    時間: 2014-11-9 18:08
第一個就是個數(shù)組定義,以查表的形式表現(xiàn),還需要什么代碼?
作者: 少年偏愛Ta    時間: 2014-11-9 18:08
gaozhaohong 發(fā)表于 2014-11-9 15:39
我認為一、 程序缺少寫"wo de ni!!!"的代碼;二、for(i=x;i>=0;i--)for(j=100;j>=0;j--);這兩句你可以改成f ...

第一個就是個數(shù)組定義,以查表的形式表現(xiàn),還需要什么代碼?
作者: woaidpj    時間: 2014-11-9 21:52
延時函數(shù)這里錯了for(j=100;j>=0;j--);............,這里改了后還不顯示的話看看屏幕是不是一直是白板,是這樣的話再看看是不是屏幕對比度沒有調(diào)好。
作者: gaozhaohong    時間: 2014-11-12 21:38
樓主的程序是顯示兩行的字符串,可是代碼卻只有一行的。
作者: tpc    時間: 2014-11-15 13:50
有些液晶是4線的有些是8線的,首先看看你的是4線還是8線
作者: wind02072107    時間: 2015-1-25 22:12
延時函數(shù)存在問題,但我感覺LCD1602時序上也有點問題的,EN高脈沖為產(chǎn)生的,僅是上升沿啊,在給予指令或數(shù)據(jù)之前應(yīng)該將EN=0吧
作者: Devil    時間: 2015-2-6 22:39
延時里不能是i>=0吧,=0在減的話直接跳過了,再一個檢查下引腳是否正確,和液晶顯示對比度的問題,調(diào)一調(diào)滑阻

作者: Mr_寒先生    時間: 2015-6-19 18:00
其實我也不太懂,所以希望和大家共同進步
作者: 張文Joe    時間: 2015-6-22 20:16
首先檢查硬件接口對不對,如果沒問題的話,再看軟件的時序正不正常。
作者: gaozhaohong    時間: 2015-6-23 20:56
修改:for(i=x;i>=0;i--)
      for(j=100;j>=0;j--);
為:for(i=x;i>0;i--)
      for(j=100;j>0;j--);
OK!
作者: 月光1234    時間: 2015-6-24 21:47
看看端口對了嗎
作者: 電子白菜    時間: 2015-6-25 11:05
一步一步調(diào)試
作者: gulang    時間: 2015-6-26 17:12
看看屏幕對比度                              
作者: zouli415    時間: 2015-6-26 17:29
請問下你的屏幕自帶字庫不
如果沒有帶字庫那就顯示不了
作者: 風緣    時間: 2015-6-26 21:46
如果程序沒錯,那你就檢查檢查你的電路是否連接好
作者: 1987584265    時間: 2015-6-29 13:33
應(yīng)該沒錯 看看登陸問題
作者: mikeahu    時間: 2015-6-29 15:26
新手,想下載資料學(xué)習,可惜沒黑B
作者: 愛就像宮保雞丁    時間: 2015-7-11 14:05
電路和程序不匹配
作者: 可愛的夢揚    時間: 2015-7-11 17:12
附圖

13.png (200.03 KB, 下載次數(shù): 149)

13.png

作者: 可愛的夢揚    時間: 2015-7-11 17:13
可愛的夢揚 發(fā)表于 2015-7-11 17:12
附圖

就是把“=“去掉

作者: weiliang    時間: 2015-7-12 00:56
感覺應(yīng)該是電路圖的問題,因為我自己做的時候,程序是對的,就是仿真的時候,LCD亮了,但是不顯示字符,后來換了連線方法,就可以了
作者: zhanghanli007    時間: 2015-7-13 17:49
你的電路連線估計和郭天祥的不一樣,要重新定義端口
作者: lp51hei    時間: 2016-3-31 14:31
正在研究1602
作者: yaozhuanju    時間: 2016-4-1 11:43
#include<reg52.h>  #define uchar unsigned char #define uint unsigned int  uchar code table[]="I LOVE MCU!"; uchar code table1[]="wo de ni!!!";  sbit RS = P2^4;   //定義端口  sbit RW = P2^5; sbit EN = P2^6;  void delay1ms(unsigned int ms)//延時1ms {         unsigned int i,j;         for(i=0;i<ms;i++)         for(j=0;j<100;j++); }  void wr_com(unsigned char com)//寫指令// {          delay1ms(1);         RS=0;         RW=0;         EN=0;         P0=com;         delay1ms(1);         EN=1;         delay1ms(1);         EN=0; }  void wr_dat(unsigned char dat)//寫數(shù)據(jù)// {          delay1ms(1);;         RS=1;         RW=0;         EN=0;         P0=dat;         delay1ms(1);         EN=1;         delay1ms(1);         EN=0; }  void lcd_init()//初始化設(shè)置// {                                 wr_com(0x38);delay1ms(5);         wr_com(0x38);delay1ms(5);         wr_com(0x08);delay1ms(5);         wr_com(0x01);delay1ms(5);         wr_com(0x06);delay1ms(5);         wr_com(0x0c);delay1ms(5); }   void display(unsigned char *p)//顯示字符串// {         while(*p!='\0')         {                 wr_dat(*p);                 p++;                 delay1ms(5);         } }  void main() {          lcd_init();         wr_com(0x80);         display(table);         wr_com(0x80+0x40);         display(table1); }
作者: yaozhuanju    時間: 2016-4-1 11:49
yaozhuanju 發(fā)表于 2016-4-1 11:43
#include  #define uchar unsigned char #define uint unsigned int  uchar code table[]="I LOVE MCU!"; u ...

顯示兩行字符串,在初始化時寫入兩次write_com(0x38);字符串的顯示函數(shù)按照從頭至尾顯示,就可以不用因為字符的數(shù)量而擔心字符顯示不全的問題

作者: yunlongzhichu    時間: 2016-4-2 08:55
有可能是你的程序 不匹配你的電路
作者: absflash    時間: 2016-4-2 10:42
本帖最后由 absflash 于 2016-4-2 10:45 編輯

void init() (void)
{
   LCD_Write_Com(0x38);    /*顯示模式設(shè)置*/
   DelayMs(5);
   LCD_Write_Com(0x38);
   DelayMs(5);
   LCD_Write_Com(0x38);
   DelayMs(5);
   LCD_Write_Com(0x38);  
   LCD_Write_Com(0x08);    /*顯示關(guān)閉*/
   LCD_Write_Com(0x01);    /*顯示清屏*/
   LCD_Write_Com(0x06);    /*顯示光標移動設(shè)置*/
   DelayMs(5);
   LCD_Write_Com(0x0C);    /*顯示開及光標設(shè)置*/
   }
   
/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
void main(void)
{
init();
while (1)
{
write_com(0x80);
for(num=0;num<11;num++)
   {
    write_data(table[num]);
    delay(10);
    }

write_com(0x80+0x40);
  for(num=0;num<11;num++)
    {  
      write_data(table1[num]);
      delay(10);
    }
}
}

先改成這個試試,最好加上清屏那個函數(shù)哦 ,慢慢調(diào),就快成功了

作者: 騰飛的龍    時間: 2016-4-2 20:06
程序沒問題,假如是1T單片機就把延時加長點,12T的程序沒問題,查看你的硬件電路,單片機IO口和程序的匹配
作者: 18883865341    時間: 2016-4-3 13:59
網(wǎng)上下載例程對比一下
作者: 蕭蕭夜下劍    時間: 2016-4-3 17:45
初始化時,write_com(0x38);這條再多些幾次,因為有的液晶顯示是4線或者8線
作者: liuzhaoxin1020    時間: 2017-1-1 13:17
結(jié)合電路分析程序
作者: 學(xué)習電子知識    時間: 2017-5-2 20:44
少年偏愛Ta 發(fā)表于 2014-11-9 18:08
第一個就是個數(shù)組定義,以查表的形式表現(xiàn),還需要什么代碼?

程序是沒什么問題,可以把硬件電路放上來看看哪里有問題,應(yīng)該是硬件引腳接的有問題
作者: 學(xué)習電子知識    時間: 2017-5-2 20:45
程序代碼買有問題,應(yīng)該是硬件的引腳接的有問題,檢查一下引腳的接線
作者: liyue123liye    時間: 2017-5-2 20:57
單片機引腳和你定義的是否一致
作者: dwjxy    時間: 2017-5-2 21:13
程序和電路不搭配
作者: 51zgz    時間: 2017-5-3 13:42
在初始化子函數(shù)里加條EN=0看下
作者: 斗魚666    時間: 2017-5-3 14:13
好像是不匹配
作者: tylerzfp    時間: 2017-5-3 15:00
其實我也不太懂,所以希望和大家共同進步
作者: tylerzfp    時間: 2017-5-3 15:01
其實我也不太懂,所以希望和大家共同進步,不能伸手要
作者: gusuo    時間: 2017-5-3 15:08
學(xué)習了
作者: gusuo    時間: 2017-5-3 15:08
我也不會,怎么辦啊
作者: rellik    時間: 2017-5-3 15:24
不錯,非常好,但是看不懂
作者: a計劃    時間: 2017-5-3 15:40
看看端口連接對不
作者: a計劃    時間: 2017-5-3 15:50
端口對不
作者: zxcvvbnh    時間: 2017-5-3 16:44
檢查是否與硬件匹配
作者: 123459876    時間: 2017-5-4 12:55
注意硬件和程序IO口對應(yīng)起來
作者: 18741270696    時間: 2017-5-4 17:41
看看你的RS RW EN 的定義端口錯沒錯,你的程序在我這邊是好用的
作者: 凱旋小飛    時間: 2017-5-26 10:19
你的端口定義錯了吧,再看看三個端口
作者: ffdd    時間: 2017-12-2 14:33
焊接幾個led燈,然后廷時幾秒看一下不就知道了
作者: 夢想天空    時間: 2017-12-3 19:27
在AD口加個可調(diào)電阻




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1