標(biāo)題: lcd1602顯示問題 [打印本頁]

作者: qq821013112    時(shí)間: 2017-10-17 12:10
標(biāo)題: lcd1602顯示問題
麻煩各位大佬幫我看看是哪里出問題了,以下是程序
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit BF=P0^7;
uint t,f,f_g,f_s,m,m_g,m_s,s,s_g,s_s;
void delay1ms()
{
        uchar i,j;
        for(i=0;i<10;i++)
                for(j=0;j<33;j++);       
}
void delay(uchar n)
{
        uchar i;
        for(i=0;i<n;i++)
                delay1ms();
}
uchar BusyTest(void)
{
        bit result;
        RS=0;RW=1;E=1;
        _nop_();_nop_();_nop_();_nop_();
        result=BF;
        E=0;
        return result;
}
void WriteInstruction(uchar dictate)
{
         while(Busytest()==1);
         RS=0;RW=0;E=0;
         _nop_();_nop_();
         P0=dictate;
         _nop_();_nop_();_nop_();_nop_();
         E=1;
         _nop_();_nop_();_nop_();_nop_();
         E=0;
}
void WriteAddress(uchar x)
{
        WriteInstruction(x+0x80);       
}
void WriteData(uchar y)
{
        while(Busytest()==1);
        RS=1;RW=0;E=0;
        P0=y;
        _nop_();_nop_();_nop_();_nop_();
        E=1;
        _nop_();_nop_();_nop_();_nop_();
        E=0;
}
void LcdInitiate()
{
        delay(15);
        WriteInstruction(0x38);
        delay(5);
        WriteInstruction(0x38);
        delay(5);
        WriteInstruction(0x38);
        delay(5);
        WriteInstruction(0x0c);
        delay(5);
        WriteInstruction(0x06);
        delay(5);
        WriteInstruction(0x01);
        delay(5);
}
void Time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        t++;
}
void init0()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;          
        ET0=1;
        TR0=1;       
}
void main()
{
        init0();
        LcdInitiate();
                m=58;
        while(1)
        {
       
                WriteAddress(0x02);
                WriteData('B');
        WriteAddress(0x03);
        WriteData('e');
                WriteAddress(0x04);
                WriteData('i');
        WriteAddress(0x05);
        WriteData('J');
                WriteAddress(0x06);
                WriteData('i');
        WriteAddress(0x07);
        WriteData('n');
                WriteAddress(0x08);
                WriteData('g');
        WriteAddress(0x0a);
        WriteData('T');
                WriteAddress(0x0b);
                WriteData('i');
        WriteAddress(0x0c);
        WriteData('m');
                WriteAddress(0x0d);
                WriteData('e');
        WriteAddress(0x45);
        WriteData(':');
                WriteAddress(0x48);
                WriteData(':');
                m_s=m/10;
                m_g=m%10;
                WriteAddress(0x4a);
                WriteData(0x30+m_g);
                WriteAddress(0x49);
                WriteData(0x30+m_s);
                        f_s=f/10;
                        f_g=f%10;
                        WriteAddress(0x47);
                        WriteData(0x30+f_g);
                        WriteAddress(0x46);
                        WriteData(0x30+f_s);
                s_s=s/10;
                s_g=s%10;
                WriteAddress(0x44);
                WriteData(0x30+s_g);
                WriteAddress(0x43);
                WriteData(0x30+s_s);
                if(t==5)
                {
                        t=0;
                        m++;
                        if(m==60)
                        {
                                f++;
                                m=0;
                                if(f==60)
                                {
                                        s++;
                                        f=0;
                                }
                        }               
                }
        }
}

QQ截圖20171017120720.png (5.54 KB, 下載次數(shù): 42)

仿真開始前段時(shí)間

仿真開始前段時(shí)間

QQ截圖20171017120934.png (4.04 KB, 下載次數(shù): 38)

走一段時(shí)間就變這樣了

走一段時(shí)間就變這樣了

作者: yzwzfyz    時(shí)間: 2017-10-17 19:33
當(dāng)出現(xiàn)問題時(shí),走單步運(yùn)行,看看為何不顯示。
作者: zl2168    時(shí)間: 2017-10-17 21:21
本帖最后由 zl2168 于 2017-10-17 21:22 編輯

實(shí)例67  LCD1602顯示屏顯示。
若需改變1602顯示內(nèi)容,只須將需顯示的內(nèi)容用ASCII碼寫入顯示數(shù)組
,即可。
實(shí)例61 LCD1602顯示屏顯示.rar (49.26 KB, 下載次數(shù): 3)

Proteus仿真一下,確認(rèn)有效。
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1。書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。

作者: usb123    時(shí)間: 2017-10-17 22:28
找一個(gè)別人好的歷程,,對(duì)比一下,,看看自己的為什么沒有顯示出來,一步一步的找問題

作者: autoauto    時(shí)間: 2017-10-18 05:53
不要光仿真,實(shí)際板子運(yùn)行下




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