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

QQ登錄

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

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

仿真正常,但是lcd1602顯示出一列白色方塊,求大神看看怎么回事

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:895329 發(fā)表于 2021-3-23 08:59 來(lái)自手機(jī) | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
做的是酒精傳感器
#include<pic.h>
//__CONFIG(0x3F3A);
//__CONFIG(0x1832);  
__CONFIG(FOSC_HS & WDTE_OFF );             


char cc1[]=" Alcohol Tester ";

#define   RS RE0
#define   RW RE1
#define   EN RE2
#define   LCD_BUS PORTD

#define   BEEP RC2


unsigned int CMQ3=0;
unsigned char Vol=0;
unsigned int AlarmVol=20;

void delayms(unsigned int ms)                 //延時(shí)xx毫秒
{
        unsigned char i;
        while(ms--)
        {
                 for(i=0;i<120;i++);
        }
}

void command(unsigned int com)         //LCD寫指令
{
   RS=0;                                             //RS為0
   LCD_BUS=com;                     //裝載指令
   delayms(2);                            //延時(shí)2ms
   EN=1;                                            //LCD使能
   delayms(2);                           //延時(shí)2ms
   EN=0;                                           //LCD不使能
}

void write_dat(unsigned char dat)          //LCD寫數(shù)據(jù)
{
   RS=1;                                           //RS為1
   LCD_BUS=dat;                   //裝載數(shù)據(jù)
   delayms(2);                           //延時(shí)2ms
   EN=1;                                           //LCD使能
   delayms(2);                           //延時(shí)2ms
   EN=0;                                           //LCD不使能
}

void writestring(unsigned char x,unsigned char y,unsigned char *s) //LCD 寫字符串
{     
        if (y == 0)  command(0x80 + x);     //表示第一行
        else         command(0xC0 + x);      //表示第二行
      
        while (*s)                         //判斷是否字符串的結(jié)尾
        {     
     write_dat( *s);    //顯示當(dāng)前字符
                s ++;                             //字符串地址加1
        }
}

void writeChar(unsigned char x,unsigned char y,unsigned char s) //LCD 寫字符串
{     
        if (y == 0)  command(0x80 + x);     //表示第一行
        else         command(0xC0 + x);      //表示第二行
      
        {     
     write_dat( s);    //顯示當(dāng)前字符
        }
}


void LCD_Initial(void)                //LCD初始化
{
   EN=0;                                   //LCD不使能
   RW=0;                                   //RW為0
   command(0x38);                //發(fā)送初始化指令
   command(0x0c);                //發(fā)送初始化指令
   command(0x06);           //發(fā)送初始化指令
   command(0x01);           //發(fā)送初始化指令
   command(0x80);           //發(fā)送LCD初始位置
}

   


interrupt ISR(void)        //中斷子程序
{
   if(ADIE &&  ADIF==1)        //AD轉(zhuǎn)換中斷
   {
      ADIF=0;                 // A/D標(biāo)志位清零
           Vol=ADRESH;         // 高八位送PORTD  
      //GO_nDONE =1;         // 啟動(dòng)下一次A/D轉(zhuǎn)換ADGO          
   }
}

void main(void)
{
        unsigned char i=0;
        unsigned int temp1=0;
        float Dat=0;
        TRISD=0x00;
        TRISC=0X00;
        TRISE=0x00;
        ADCON1=0X0e;
        TRISA=0x01;
   ADCON0=0X01;
        BEEP=1;
        TRISB=0xff;
        OPTION_REG&=0x7f;
       
        ADCS1=1;
   ADCS0=0;                 // A/D轉(zhuǎn)換時(shí)鐘32分頻
   CHS2=0;
   CHS1=0;
   CHS0=0;                 // CHS2:CHS0=001,

89411CEF-E388-4302-8537-12B23179DD1E.jpeg (991.35 KB, 下載次數(shù): 36)

89411CEF-E388-4302-8537-12B23179DD1E.jpeg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:584814 發(fā)表于 2021-3-23 10:04 | 只看該作者
檢查接線先(現(xiàn)成的套件查接口定義),然后查延時(shí)(非板帶程例可能單片機(jī)速度不一樣),最后看時(shí)序。
回復(fù)

使用道具 舉報(bào)

板凳
ID:824490 發(fā)表于 2021-3-23 11:16 | 只看該作者
這種圖形出現(xiàn),是典型的LCD初始化不成功導(dǎo)致的,看你的代碼中沒(méi)有調(diào)用初始化函數(shù)

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:390416 發(fā)表于 2021-3-23 13:13 | 只看該作者
可以肯定的是 仿真肯定正常,因?yàn)榉抡孳浖还苣銓?shí)物怎么樣的。
初始化失敗了,先清屏 延遲很長(zhǎng)時(shí)間,然后再寫第一條指令和最后一條指令。就可以清屏復(fù)位了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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