久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6867|回復: 20
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主


是哪里出問題了嘛
#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為高:非應答
        {
                SCL = 0;
                _nop_();
                iic_stop();
                return 0;
        }
        else                   //SDA為低:應答
        {
                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寫命令
************/
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寫數據
**********/
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連續顯示
***********/
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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:789121 發表于 2020-7-13 23:14 | 只看該作者
背光沒亮吧,電源是不是接錯了,只接電源試一下
回復

使用道具 舉報

板凳
ID:738987 發表于 2020-7-13 23:33 | 只看該作者
電源問題
回復

使用道具 舉報

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

哪里出問題了嘛??我感覺我連的沒問題啊

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

IMG_20200714_093448.jpg
回復

使用道具 舉報

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

請問該怎么解決。??我重新接了下還是不顯示也沒有背光
回復

使用道具 舉報

6#
ID:789121 發表于 2020-7-14 13:46 | 只看該作者
wtryb 發表于 2020-7-14 10:55
請問該怎么解決啊???我重新接了下還是不顯示也沒有背光

有沒有萬用表,測一下兩個引腳電壓有沒有問題,如果電壓和接線都沒問題考慮換一個屏
回復

使用道具 舉報

7#
ID:606956 發表于 2020-7-14 14:30 | 只看該作者
先查一下電壓是不是正常,再搞個邏輯分析儀看下數據對不對
回復

使用道具 舉報

8#
ID:606956 發表于 2020-7-14 14:30 | 只看該作者
IIC有沒有接上拉啊
回復

使用道具 舉報

9#
ID:761375 發表于 2020-7-14 20:31 | 只看該作者
不要黑 發表于 2020-7-14 13:46
有沒有萬用表,測一下兩個引腳電壓有沒有問題,如果電壓和接線都沒問題考慮換一個屏

沒有萬用表啊我用的是單片機的DC電源模塊,請問還有什么方法嘛?我的代碼有什么問題嘛?
回復

使用道具 舉報

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

使用道具 舉報

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

我這個是四腳的oled貌似沒有RST這個腳
回復

使用道具 舉報

12#
ID:789121 發表于 2020-7-15 16:34 | 只看該作者
wtryb 發表于 2020-7-14 20:31
沒有萬用表啊我用的是單片機的DC電源模塊,請問還有什么方法嘛?我的代碼有什么問題嘛?

void LCD12864_write_data(u8 *dat)這個函數里為什么有return 0;能編譯通過么
回復

使用道具 舉報

13#
ID:789121 發表于 2020-7-15 16:45 | 只看該作者
wtryb 發表于 2020-7-14 10:55
請問該怎么解決???我重新接了下還是不顯示也沒有背光

程序還有一些其他小問題,編譯都會提示的,IIC程序參考屏幕賣家給的程序,
IIC程序可以優化一下
回復

使用道具 舉報

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

我沒看仔細,模塊化的是不用關注RST。
程序執行中SCL=1 后停止,用電壓表看SCL是否高電平,SCL=0后看是否低電平。SDA同理。所有clear不執行,init完后停止幾秒,看有沒有雜亂的點顯示。
回復

使用道具 舉報

15#
ID:789121 發表于 2020-7-21 13:41 | 只看該作者
wtryb 發表于 2020-7-14 10:55
請問該怎么解決啊???我重新接了下還是不顯示也沒有背光

oled確實沒有背光,開始以為是普通led,問題解決沒有?
回復

使用道具 舉報

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

使用道具 舉報

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

http://www.zg4o1577.cn/bbs/dpj-113388-1.html 參照這個
回復

使用道具 舉報

18#
ID:811284 發表于 2020-9-22 16:42 | 只看該作者
可以用串口顯示數據比如6666,一行一行的網下放,模擬斷點調試,可以驗證是否是程序問題
回復

使用道具 舉報

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

使用道具 舉報

20#
ID:342822 發表于 2020-9-22 18:44 | 只看該作者
換個其他成功的程序驗證i2c  oled
回復

使用道具 舉報

21#
ID:342822 發表于 2020-9-22 18:49 | 只看該作者
程序有問題慢慢找吧~~
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频网 | 日本不卡一区二区三区 | 久久久精品一区二区三区 | 草草视频在线观看 | 九九热免费在线观看 | 天堂免费看片 | 欧美 日韩 在线播放 | 国产一区二区视频免费在线观看 | 九九激情视频 | 免费看国产一级特黄aaaa大片 | 91免费视频| 中文字幕在线一区二区三区 | 欧美精品福利 | 一级h片 | 看a网站 | 欧美黄色性生活视频 | 亚洲三级免费看 | 亚洲成av人片在线观看无码 | 91中文字幕在线观看 | 99精品电影 | 亚洲精品在线播放 | 亚洲午夜精品一区二区三区 | 91大神在线资源观看无广告 | 91免费看片神器 | 国产日韩欧美91 | 亚洲精品国产综合区久久久久久久 | 一区二区三区精品视频 | 国产69精品久久99不卡免费版 | 国产高清在线视频 | 99精品视频在线 | www.亚洲国产精品 | 亚洲在线免费观看 | 91久久久久| 欧美亚州综合 | 成人免费精品视频 | 一区二区三区欧美 | 国产熟熟 | 免费观看一级特黄欧美大片 | 午夜精 | 男人天堂网av | 欧美激情综合 |