找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2506|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

Proteus仿真單片機(jī)+LCD1602仿真異常

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1053046 發(fā)表于 2022-11-20 22:23 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
源碼
#include <reg51.h>

sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;

void delay(int n)    //延時函數(shù)                           
{
        int x,y;
        for(x=n;x>0;x--)
                for(y=999;y>0;y--);
}

void lcd_wcom(char com)    //指令寫入函數(shù)               
{
        rs=0; //輸入指令
        rw=0;
        P0=com;
        delay(15);
        en=1;
        en=0;
}

void lcd_wdat(char dat)  //數(shù)據(jù)寫入函數(shù)        
{
        rs=1;  //輸入數(shù)據(jù)
        rw=0;
        P0=dat;
        delay(15);
        en=1;
        delay(15);
        en=0;
}

void lcd_init()    //1602lcd初始化函數(shù)                 
{
        P0=0X00;
        lcd_wcom(0x38);  //功能設(shè)定指令:1.數(shù)據(jù)總線8位  2.顯示兩行  3. 5*8總線字符           
        lcd_wcom(0x0c);   //控制整體顯示并且關(guān)閉光標(biāo)        
        lcd_wcom(0x06);   //屏幕上的文字左移或者右移無效         
        lcd_wcom(0x01);  //清顯示,光標(biāo)復(fù)位到地址00H位置           
}


void main()
{
        lcd_init();  //初始化lcd
        while(1){
                lcd_wcom(0x86);//指定顯示位置      
                lcd_wdat(0x33);//3

        }
}

有沒有大佬幫忙看一下問題出在哪里

1.png (10.02 KB, 下載次數(shù): 110)

原理圖

原理圖

2.png (11.84 KB, 下載次數(shù): 108)

然后他運行起來是這樣的,P2口是灰色的,我百度了一下說是電壓不穩(wěn)?

然后他運行起來是這樣的,P2口是灰色的,我百度了一下說是電壓不穩(wěn)?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:342822 發(fā)表于 2022-11-20 23:23 | 只看該作者
VEE??????
回復(fù)

使用道具 舉報

板凳
ID:121859 發(fā)表于 2022-11-21 08:58 | 只看該作者
你自己程序有問題呀,IO口與電路不符。仔細(xì)檢查吧,EN錯了。
回復(fù)

使用道具 舉報

地板
ID:1053046 發(fā)表于 2022-11-21 21:29 | 只看該作者
zhxiufan 發(fā)表于 2022-11-21 08:58
你自己程序有問題呀,IO口與電路不符。仔細(xì)檢查吧,EN錯了。

沒錯呀,我把P0口全部換成P3口就可以正常運行了
回復(fù)

使用道具 舉報

5#
ID:213173 發(fā)表于 2022-11-22 06:44 | 只看該作者
zmcbhbzclb 發(fā)表于 2022-11-21 21:29
沒錯呀,我把P0口全部換成P3口就可以正常運行了

電路沒錯,程序沒有大問題,延時時間不妥。


  1. #include <reg51.h>

  2. sbit rs=P2^0;
  3. sbit rw=P2^1;
  4. sbit en=P2^2;

  5. void delay(int n)    //延時函數(shù)                           
  6. {
  7.         int x,y;
  8.         for(x=n;x>0;x--)
  9.                 for(y=120;y>0;y--);
  10. }

  11. void lcd_wcom(char com)    //指令寫入函數(shù)               
  12. {
  13.         rs=0; //輸入指令
  14.         rw=0;
  15.         P0=com;
  16.         delay(1);
  17.         en=1;
  18.         delay(1);
  19.         en=0;
  20. }

  21. void lcd_wdat(char dat)  //數(shù)據(jù)寫入函數(shù)        
  22. {
  23.         rs=1;  //輸入數(shù)據(jù)
  24.         rw=0;
  25.         P0=dat;
  26.         delay(1);
  27.         en=1;
  28.         delay(1);
  29.         en=0;
  30. }

  31. void lcd_init()    //1602lcd初始化函數(shù)                 
  32. {
  33.         P0=0X00;
  34.         lcd_wcom(0x38);  //功能設(shè)定指令:1.數(shù)據(jù)總線8位  2.顯示兩行  3. 5*8總線字符           
  35.         lcd_wcom(0x0c);   //控制整體顯示并且關(guān)閉光標(biāo)        
  36.         lcd_wcom(0x06);   //屏幕上的文字左移或者右移無效         
  37.         lcd_wcom(0x01);  //清顯示,光標(biāo)復(fù)位到地址00H位置           
  38. }


  39. void main()
  40. {
  41.         char i;
  42.         lcd_init();  //初始化lcd
  43.         while(1)
  44.         {
  45.                 lcd_wcom(0x83);//指定顯示位置      
  46.                 for(i=0;i<10;i++)
  47.                         lcd_wdat(i+'0');//3
  48.         }
  49. }
復(fù)制代碼



回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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