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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6895|回復: 20
收起左側

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

[復制鏈接]
ID:761375 發表于 2020-7-13 18:38 | 顯示全部樓層 |閱讀模式
IMG_20200713_183809.jpg

是哪里出問題了嘛
#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);        
        }
}


回復

使用道具 舉報

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
回復

使用道具 舉報

ID:761375 發表于 2020-7-14 10:55 | 顯示全部樓層
不要黑 發表于 2020-7-13 23:14
背光沒亮吧,電源是不是接錯了,只接電源試一下

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

使用道具 舉報

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

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

使用道具 舉報

ID:606956 發表于 2020-7-14 14:30 | 顯示全部樓層
先查一下電壓是不是正常,再搞個邏輯分析儀看下數據對不對
回復

使用道具 舉報

ID:606956 發表于 2020-7-14 14:30 | 顯示全部樓層
IIC有沒有接上拉啊
回復

使用道具 舉報

ID:761375 發表于 2020-7-14 20:31 | 顯示全部樓層
不要黑 發表于 2020-7-14 13:46
有沒有萬用表,測一下兩個引腳電壓有沒有問題,如果電壓和接線都沒問題考慮換一個屏

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

ID:789121 發表于 2020-7-15 16:34 | 顯示全部樓層
wtryb 發表于 2020-7-14 20:31
沒有萬用表啊我用的是單片機的DC電源模塊,請問還有什么方法嘛?我的代碼有什么問題嘛?

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

使用道具 舉報

ID:789121 發表于 2020-7-15 16:45 | 顯示全部樓層
wtryb 發表于 2020-7-14 10:55
請問該怎么解決啊???我重新接了下還是不顯示也沒有背光

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

使用道具 舉報

ID:282850 發表于 2020-7-15 16:56 | 顯示全部樓層
wtryb 發表于 2020-7-15 10:19
我這個是四腳的oled貌似沒有RST這個腳

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

使用道具 舉報

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

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

使用道具 舉報

ID:676437 發表于 2020-7-27 17:48 來自手機 | 顯示全部樓層
樓主搞好了嘛 我和你一樣,有解決辦法嘛
回復

使用道具 舉報

ID:761375 發表于 2020-9-22 16:31 | 顯示全部樓層
6998 發表于 2020-7-27 17:48
樓主搞好了嘛 我和你一樣,有解決辦法嘛

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

使用道具 舉報

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

使用道具 舉報

ID:294296 發表于 2020-9-22 17:51 | 顯示全部樓層
連接開發板可能數據腳和板上其它器件芯片沖突了
回復

使用道具 舉報

ID:342822 發表于 2020-9-22 18:44 | 顯示全部樓層
換個其他成功的程序驗證i2c  oled
回復

使用道具 舉報

ID:342822 發表于 2020-9-22 18:49 | 顯示全部樓層
程序有問題慢慢找吧~~
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久综合桃花 | 91精品国产综合久久久久久蜜臀 | 91精品国产自产在线老师啪 | 日韩成人在线视频 | 在线观看中文字幕 | 久在线视频播放免费视频 | 成人免费视频网站在线观看 | 精品二区 | 欧美日韩精品中文字幕 | 国产成人免费 | 99精品99 | 热久久性 | 亚洲免费三级 | 欧美一级片在线看 | 天天天天天操 | 丝袜毛片 | 国产乱码精品1区2区3区 | 91精品国产综合久久久久 | 成人福利网 | 色综合欧美 | 精品国产1区2区3区 一区二区手机在线 | 欧美精品一二区 | 国产综合精品 | 99久久中文字幕三级久久日本 | 国产日韩精品在线 | 国产亚洲人成a在线v网站 | 毛片一级网站 | 精品久久久久久国产 | 毛片网站在线观看 | 精品日韩电影 | 久久精品国产免费 | 国产精品久久二区 | 久久精品国产一区 | 亚洲综合二区 | 日韩中文字幕久久 | 欧洲精品一区 | 亚洲视频在线免费观看 | 精久久 | 久久伊人免费视频 | 台湾av在线| 91视频一区 |