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

QQ登錄

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

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

為什么我的51單片機(jī)+oled不顯示?求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主


是哪里出問(wèn)題了嘛
#include <reg52.h>
#include <intrins.h>

typedef unsigned char u8;
typedef unsigned int u16;

sbit SCL = P2^0;
sbit SDA = P2^1;

u8  dis_tab[] =
{0x00,0xE0,0x10,0x08,0x08,
0x10,0xE0,0x00,0x00,0x0F,
0x10,0x20,0x20,0x10,0x0F,0x00};/*"0",0*/

void delay(u16 num)
{
        u16 x,y;
        for(x = num;x > 0;x--)
        for(y = 110;y > 0;y--);
}

void delay5us()
{
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
}

void iic_start()
{
        SCL = 1;
        _nop_();
        SDA = 1;
        delay5us();
        SDA = 0;
        delay5us();
}

void iic_stop()
{
        SDA = 0;
        _nop_();
        SCL = 1;
        delay5us();
        SDA = 1;
        delay5us();
}

bit iic_ack()
{
        SCL = 1;
        delay5us();
        if(SDA)                   //SDA為高:非應(yīng)答
        {
                SCL = 0;
                _nop_();
                iic_stop();
                return 0;
        }
        else                   //SDA為低:應(yīng)答
        {
                SCL = 0;
                _nop_();
                return 1;
        }
}

void iic_send_1byte(u8 byte)
{
        u8 i;
        for(i = 0;i < 8;i++)
        {
                SCL = 0;
                _nop_();
                if(byte & 0x80)
                {
                        SDA = 1;
                        _nop_();
                }
                else
                {
                        SDA = 0;
                        _nop_();
                }
                SCL = 1;
                _nop_();
                byte <<= 1;
        }
        SCL = 0;
        _nop_();
        SDA = 1;
        _nop_();
}

/************
/*lcd寫(xiě)命令
************/
void LCD12864_write_command(u8 cmd)
{
        iic_start();
        iic_send_1byte(0x78);
        if(!iic_ack())
        {
                iic_stop();
                return 0;
        }
        iic_send_1byte(0x00);
                if(!iic_ack())
        {
                iic_stop();
                return 0;
        }
        iic_send_1byte(cmd);
        iic_send_1byte(0x00);
        if(!iic_ack())
        {
                iic_stop();
                return 0;
        }
        _nop_();
        iic_stop();
}

/**********
/*lcd寫(xiě)數(shù)據(jù)
**********/
void LCD12864_write_data(u8 *dat)
{
        iic_start();
        iic_send_1byte(0x78);
        if(!iic_ack())
        {
                iic_stop();
                return 0;
        }
        iic_send_1byte(0x40);
           if(!iic_ack())
        {
                iic_stop();
                return 0;
        }
        iic_send_1byte(*dat);
        if(!iic_ack())
        {
                iic_stop();
                return 0;
        }
        iic_stop();
        _nop_();
}

/**********
/*尋址
**********/
void LCD12864_position(u8 i,u8 j)
{
        LCD12864_write_command(0xb0 + i);
        LCD12864_write_command(0x00 | (j >> 4));
        LCD12864_write_command(0x10 | (j & 0x0f));
}

/**********
/*初始化
**********/
void LCD12864_Initial()
{
        Delay(3);

        LCD12864_write_command(0x8d);
        LCD12864_write_command(0x14);
        LCD12864_write_command(0xaf);
        LCD12864_write_command(0xae);
        LCD12864_write_command(0x20);
        LCD12864_write_command(0x10);
        LCD12864_write_command(0xb0);
        LCD12864_write_command(0xc8);
        LCD12864_write_command(0x00);
        LCD12864_write_command(0x10);
        LCD12864_write_command(0x40);
        LCD12864_write_command(0x81);
        LCD12864_write_command(0xff);
        LCD12864_write_command(0xa1);
        LCD12864_write_command(0xa6);
        LCD12864_write_command(0xa8);
        LCD12864_write_command(0x3f);
        LCD12864_write_command(0xa4);
        LCD12864_write_command(0xd3);
        LCD12864_write_command(0x00);
        LCD12864_write_command(0xd5);
        LCD12864_write_command(0xf0);
        LCD12864_write_command(0xd9);
        LCD12864_write_command(0x22);
        LCD12864_write_command(0xda);
        LCD12864_write_command(0x12);
        LCD12864_write_command(0xdb);
        LCD12864_write_command(0x20);
        LCD12864_write_command(0x8d);
        LCD12864_write_command(0x14);
        LCD12864_write_command(0xaf);

}

/***********
/*lcd連續(xù)顯示
***********/
void LCD12864_more_show(u8 *dat)
{
        u8 i,j;
        for(i = 0;i < 8;i++)
        {
                for(j = 0;j < 128;j++)
                {
                        LCD12864_position(i.j);
                        LCD12864_write_data(*dat++);
                }
        }
}

void main()
{
        LCD12864_Initial();
        LCD12864_position();
        while(1)
        {
                LCD12864_more_show(dis_tab);        
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:789121 發(fā)表于 2020-7-13 23:14 | 只看該作者
背光沒(méi)亮吧,電源是不是接錯(cuò)了,只接電源試一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:738987 發(fā)表于 2020-7-13 23:33 | 只看該作者
電源問(wèn)題
回復(fù)

使用道具 舉報(bào)

地板
ID:761375 發(fā)表于 2020-7-14 09:37 | 只看該作者
不要黑 發(fā)表于 2020-7-13 23:14
背光沒(méi)亮吧,電源是不是接錯(cuò)了,只接電源試一下

哪里出問(wèn)題了嘛??我感覺(jué)我連的沒(méi)問(wèn)題啊

IMG_20200714_093448.jpg (2.8 MB, 下載次數(shù): 88)

IMG_20200714_093448.jpg
回復(fù)

使用道具 舉報(bào)

5#
ID:761375 發(fā)表于 2020-7-14 10:55 | 只看該作者
不要黑 發(fā)表于 2020-7-13 23:14
背光沒(méi)亮吧,電源是不是接錯(cuò)了,只接電源試一下

請(qǐng)問(wèn)該怎么解決啊???我重新接了下還是不顯示也沒(méi)有背光
回復(fù)

使用道具 舉報(bào)

6#
ID:789121 發(fā)表于 2020-7-14 13:46 | 只看該作者
wtryb 發(fā)表于 2020-7-14 10:55
請(qǐng)問(wèn)該怎么解決啊???我重新接了下還是不顯示也沒(méi)有背光

有沒(méi)有萬(wàn)用表,測(cè)一下兩個(gè)引腳電壓有沒(méi)有問(wèn)題,如果電壓和接線都沒(méi)問(wèn)題考慮換一個(gè)屏
回復(fù)

使用道具 舉報(bào)

7#
ID:606956 發(fā)表于 2020-7-14 14:30 | 只看該作者
先查一下電壓是不是正常,再搞個(gè)邏輯分析儀看下數(shù)據(jù)對(duì)不對(duì)
回復(fù)

使用道具 舉報(bào)

8#
ID:606956 發(fā)表于 2020-7-14 14:30 | 只看該作者
IIC有沒(méi)有接上拉啊
回復(fù)

使用道具 舉報(bào)

9#
ID:761375 發(fā)表于 2020-7-14 20:31 | 只看該作者
不要黑 發(fā)表于 2020-7-14 13:46
有沒(méi)有萬(wàn)用表,測(cè)一下兩個(gè)引腳電壓有沒(méi)有問(wèn)題,如果電壓和接線都沒(méi)問(wèn)題考慮換一個(gè)屏

沒(méi)有萬(wàn)用表啊我用的是單片機(jī)的DC電源模塊,請(qǐng)問(wèn)還有什么方法嘛?我的代碼有什么問(wèn)題嘛?
回復(fù)

使用道具 舉報(bào)

10#
ID:282850 發(fā)表于 2020-7-15 10:16 | 只看該作者
沙發(fā)回答是亂說(shuō)的。OLED啊,要看清。
我的一個(gè)帖子里有IIC的程序及問(wèn)題。注意硬件連線,特別是RST
回復(fù)

使用道具 舉報(bào)

11#
ID:761375 發(fā)表于 2020-7-15 10:19 | 只看該作者
f556 發(fā)表于 2020-7-15 10:16
沙發(fā)回答是亂說(shuō)的。OLED啊,要看清。
我的一個(gè)帖子里有IIC的程序及問(wèn)題。注意硬件連線,特別是RST

我這個(gè)是四腳的oled貌似沒(méi)有RST這個(gè)腳
回復(fù)

使用道具 舉報(bào)

12#
ID:789121 發(fā)表于 2020-7-15 16:34 | 只看該作者
wtryb 發(fā)表于 2020-7-14 20:31
沒(méi)有萬(wàn)用表啊我用的是單片機(jī)的DC電源模塊,請(qǐng)問(wèn)還有什么方法嘛?我的代碼有什么問(wèn)題嘛?

void LCD12864_write_data(u8 *dat)這個(gè)函數(shù)里為什么有return 0;能編譯通過(guò)么
回復(fù)

使用道具 舉報(bào)

13#
ID:789121 發(fā)表于 2020-7-15 16:45 | 只看該作者
wtryb 發(fā)表于 2020-7-14 10:55
請(qǐng)問(wèn)該怎么解決???我重新接了下還是不顯示也沒(méi)有背光

程序還有一些其他小問(wèn)題,編譯都會(huì)提示的,IIC程序參考屏幕賣(mài)家給的程序,
IIC程序可以?xún)?yōu)化一下
回復(fù)

使用道具 舉報(bào)

14#
ID:282850 發(fā)表于 2020-7-15 16:56 | 只看該作者
wtryb 發(fā)表于 2020-7-15 10:19
我這個(gè)是四腳的oled貌似沒(méi)有RST這個(gè)腳

我沒(méi)看仔細(xì),模塊化的是不用關(guān)注RST。
程序執(zhí)行中SCL=1 后停止,用電壓表看SCL是否高電平,SCL=0后看是否低電平。SDA同理。所有clear不執(zhí)行,init完后停止幾秒,看有沒(méi)有雜亂的點(diǎn)顯示。
回復(fù)

使用道具 舉報(bào)

15#
ID:789121 發(fā)表于 2020-7-21 13:41 | 只看該作者
wtryb 發(fā)表于 2020-7-14 10:55
請(qǐng)問(wèn)該怎么解決啊???我重新接了下還是不顯示也沒(méi)有背光

oled確實(shí)沒(méi)有背光,開(kāi)始以為是普通led,問(wèn)題解決沒(méi)有?
回復(fù)

使用道具 舉報(bào)

16#
ID:676437 發(fā)表于 2020-7-27 17:48 來(lái)自手機(jī) | 只看該作者
樓主搞好了嘛 我和你一樣,有解決辦法嘛
回復(fù)

使用道具 舉報(bào)

17#
ID:761375 發(fā)表于 2020-9-22 16:31 | 只看該作者
6998 發(fā)表于 2020-7-27 17:48
樓主搞好了嘛 我和你一樣,有解決辦法嘛

http://www.torrancerestoration.com/bbs/dpj-113388-1.html 參照這個(gè)
回復(fù)

使用道具 舉報(bào)

18#
ID:811284 發(fā)表于 2020-9-22 16:42 | 只看該作者
可以用串口顯示數(shù)據(jù)比如6666,一行一行的網(wǎng)下放,模擬斷點(diǎn)調(diào)試,可以驗(yàn)證是否是程序問(wèn)題
回復(fù)

使用道具 舉報(bào)

19#
ID:294296 發(fā)表于 2020-9-22 17:51 | 只看該作者
連接開(kāi)發(fā)板可能數(shù)據(jù)腳和板上其它器件芯片沖突了
回復(fù)

使用道具 舉報(bào)

20#
ID:342822 發(fā)表于 2020-9-22 18:44 | 只看該作者
換個(gè)其他成功的程序驗(yàn)證i2c  oled
回復(fù)

使用道具 舉報(bào)

21#
ID:342822 發(fā)表于 2020-9-22 18:49 | 只看該作者
程序有問(wèn)題慢慢找吧~~
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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