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

QQ登錄

只需一步,快速開始

搜索
12
返回列表 發(fā)新帖
樓主: 854100995
打印 上一主題 下一主題
收起左側(cè)

0.96寸IIC12864OLED最強(qiáng)單片機(jī)例程,通俗易懂,方便引用

  [復(fù)制鏈接]
41#
ID:134271 發(fā)表于 2020-5-21 12:01 | 只看該作者
"可用于顯示程序中定義的變化的變量"
讀起來(lái)好別扭
回復(fù)

使用道具 舉報(bào)

42#
ID:186157 發(fā)表于 2020-5-21 13:05 | 只看該作者
下載一份學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

43#
ID:303735 發(fā)表于 2020-5-21 15:14 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

44#
ID:88256 發(fā)表于 2020-5-22 00:19 | 只看該作者
下載一個(gè)看看,謝謝分享!
回復(fù)

使用道具 舉報(bào)

45#
ID:748788 發(fā)表于 2020-5-22 11:08 | 只看該作者
怎么圖片打開得很慢
回復(fù)

使用道具 舉報(bào)

46#
ID:88256 發(fā)表于 2020-5-30 16:19 | 只看該作者
之前沒有用過OLED,在淘寶下單一個(gè)0.96寸(驅(qū)動(dòng)芯片:SH1106(可兼容SSD1306))的時(shí)候剛好看到這個(gè)帖子,所以干脆就不用賣家提供的測(cè)試程序而直接用這個(gè)的,OLED一次點(diǎn)亮,但是最后面有一、兩列豎線,8頁(yè)都有,本以為是程序沒有處理好(故意設(shè)坑的程序也是有遇到的),但看了下程序沒有問題,帖子里也沒人反應(yīng)有這個(gè)現(xiàn)象,難道是OLED生成就這樣的?但很快就否定了。
上賣家頁(yè)面看帶圖的評(píng)價(jià)里是正常的,那就肯定是程序的問題,翻看到另一個(gè)賣家里的介紹,里面的一個(gè)內(nèi)容讓我注意到了(就不把圖片里的文字打出來(lái)了,大家自己看圖),這個(gè)說得很明白,那就百度查找翻看指令,好像沒有列偏移的,直接改設(shè)置坐標(biāo)的程序,整行顯示的正常了,顯示半行的后面還有,肯定是清屏的還需要改,于是又改了全屏、清屏、初始化里的內(nèi)容,這才一切正常。



之間百度指令時(shí),設(shè)置列地址時(shí),有的說列地址是1到128,也有的認(rèn)為是0到127(針對(duì)1306驅(qū)動(dòng)),有這爭(zhēng)論是因?yàn)樵O(shè)置坐標(biāo)子函數(shù)的最后一句 OLED_WrCmd((x&0x0f)|0x01);     對(duì) |0x01 有人發(fā)出疑問,之前沒看指令介紹時(shí)我也不理解,看了指令認(rèn)為是編寫錯(cuò)誤,指令里并不要求列地址低四位里的D0必須為1,那么|0x01就是畫蛇添足,也滿足不了加一的目的(D0為0有效果,為1就不變),這個(gè)歡迎大家討論一下。我是認(rèn)為列地址是0到127的,先不說都是習(xí)慣地址從0開始的,就大家初始化時(shí)列地址低四位是送0x00而不是0x01就能說明問題,而且英文版里的資料也是這樣寫的,雖然我看不懂英文。     剛才還說到了全屏和清屏子函數(shù),里面的是OLED_WrCmd(0x01);  也就是說列地址低四位是送0X01,而不是0X00,真有點(diǎn)自相矛盾啊

老眼昏花了,對(duì)于0.96寸的6*8字符都看不清了,就不對(duì)是0X00還是0X01進(jìn)行驗(yàn)證了,一列的差別對(duì)我來(lái)說真的不容易看到,希望有人有興趣驗(yàn)證一下。另外,樓主既然掛上最強(qiáng)的例程,先不說這幾個(gè)還未定論的數(shù)據(jù),至少程序要能選擇是SH1106還是SSD1306的驅(qū)動(dòng),免得驅(qū)動(dòng)不同還得改好幾個(gè)地方。

再次謝謝樓主分享的程序!


評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

47#
ID:702127 發(fā)表于 2020-7-23 16:05 | 只看該作者
謝謝樓主分享,單片機(jī)小白第一次接觸這個(gè)屏幕,正在學(xué)習(xí)中。
回復(fù)

使用道具 舉報(bào)

48#
ID:465981 發(fā)表于 2020-8-31 13:24 | 只看該作者
有大佬可以告知一下32*32的字模怎么取嗎?自己取的都是亂碼,樓主取好的就可以用
回復(fù)

使用道具 舉報(bào)

49#
ID:432192 發(fā)表于 2020-11-10 16:19 來(lái)自觸屏版 | 只看該作者
可以使用,就是不明白特殊字體怎么弄的
回復(fù)

使用道具 舉報(bào)

50#
ID:881679 發(fā)表于 2021-2-25 16:23 | 只看該作者
樓主強(qiáng)大!威武!為你點(diǎn)贊
回復(fù)

使用道具 舉報(bào)

51#
ID:913075 發(fā)表于 2021-4-27 15:46 | 只看該作者
這個(gè)程序我用STM32, 會(huì)卡死, 我卡死的地方在于SPRINTF這個(gè)函數(shù)。
回復(fù)

使用道具 舉報(bào)

52#
ID:47177 發(fā)表于 2021-4-27 17:24 | 只看該作者
淺談LCD、OLED、TFT取模及其程序開發(fā)的算法取舍https://blog.csdn.net/yagnruinihao/article/details/47133455

單片機(jī)控制OLED12864顯示屏之模塊化編程
https://blog.csdn.net/yagnruinihao/article/details/115842157
回復(fù)

使用道具 舉報(bào)

53#
ID:59830 發(fā)表于 2021-5-1 21:17 | 只看該作者
在某一個(gè)寶下單一個(gè)0.96寸(驅(qū)動(dòng)芯片:SSD1306).
遇到了 白色條.
找了一段時(shí)間,不知道什么原因.
下載,測(cè)試一下. 謝謝!
回復(fù)

使用道具 舉報(bào)

54#
ID:71297 發(fā)表于 2021-5-2 20:48 | 只看該作者
剛好要用到,謝謝樓主了
回復(fù)

使用道具 舉報(bào)

55#
ID:59830 發(fā)表于 2021-5-9 15:48 | 只看該作者
關(guān)于   最后一句 OLED_WrCmd((x&0x0f)|0x01);  引起的第1豎顯示問題解決了.
未解決問題點(diǎn):  全部點(diǎn)顯示  后 ,再全部滅  有 操作時(shí)留有  "鋸齒余暉"  問題, 請(qǐng)教一下大家

解決問題點(diǎn):
//問題點(diǎn)1: OLED12864 無(wú)顯示
  這個(gè)程序是 STC89C52 的程序 ,
  1.1 IO修改
    //-STC89C52
        sbit SCL=P1^3; //串行時(shí)鐘
        sbit SDA=P1^2; //串行數(shù)據(jù)
     //-STC8H8K 修改后
        sbit SCL=P5^1; //串行時(shí)鐘
        sbit SDA=P5^0; //串行數(shù)據(jù)
    加
        //-STC8H8K   頻率設(shè)置 5.55296Mhz        
        P5M1 &= 0xFE;   P5M0 &= 0xFE;;   //設(shè)置為準(zhǔn)雙向口  P5.0
        P5M1 &= 0xFD;   P5M0 &= 0xFD;;   //設(shè)置為準(zhǔn)雙向口  P5.1        
  1.2現(xiàn)在測(cè)試是 STC8H8K  單片機(jī),燒錄時(shí)內(nèi)部晶振  改5.5296Mhz.
  
//問題點(diǎn)2: OLED12864 第1列顯示不正常
  2.1 修改  LQ12864.h  3個(gè)函數(shù)
//        // *********************OLED 設(shè)置坐標(biāo)************************************
//        void OLED_Set_Pos(unsigned char x, unsigned char y)
//        {
//                OLED_WrCmd(0xb0+y);
//                OLED_WrCmd(((x&0xf0)>>4)|0x10);
//        //        OLED_WrCmd((x&0x0f)|0x01);  //列的第1行 錯(cuò)誤,無(wú)法清零
//                OLED_WrCmd(x&0x0f);        //列的第1行 錯(cuò)誤,無(wú)法清零  修改
//        }
//        // *********************OLED全屏************************************
//        void OLED_Fill(unsigned char bmp_dat)
//        {
//                unsigned char y,x;
//                for(y=0;y<8;y++)
//                {
//                        OLED_WrCmd(0xb0+y);
//        //                OLED_WrCmd(0x01);  //列的第1行 錯(cuò)誤,無(wú)法清零  注銷
//                        
//                        OLED_WrCmd(0x10);
//                        for(x=0;x<X_WIDTH;x++)
//                        OLED_WrDat(bmp_dat);
//                }
//        }
//        // *********************OLED復(fù)位************************************
//        void OLED_CLS(void)
//        {
//                unsigned char y,x;
//                for(y=0;y<8;y++)
//                {
//                        OLED_WrCmd(0xb0+y);
//        //                OLED_WrCmd(0x01);  //列的第1行 錯(cuò)誤,無(wú)法清零  注銷
//                        OLED_WrCmd(0x10);
//                        for(x=0;x<X_WIDTH;x++)
//                        OLED_WrDat(0);
//                }
//        }  
//問題點(diǎn)3: OLED12864 時(shí)鐘只能6Mhz左右才有顯示,修改后 5~35MHz 可以
  3.1 修改  LQ12864.h  3個(gè)函數(shù)(IO操作加入3個(gè) 空操作指令) ,增加系統(tǒng)帶頭文件
                void IIC_Start();
                void IIC_Stop();
                void Write_IIC_Byte(unsigned char IIC_Byte);

4.未解決問題點(diǎn):  全部點(diǎn)顯示  后 ,再全部滅  有 操作時(shí)留有  "鋸齒余暉"  問題, 請(qǐng)教一下大家

while(1)
        {
                OLED_Fill(0xff); //屏全亮
                delay(4000);
                OLED_Fill(0x00); //屏全滅  操作時(shí)留有  "鋸齒余暉"  問題:
                delay(4000);
                OLED_P16x16Ch(24,0,1);
                OLED_P16x16Ch(40,0,2);
                OLED_P16x16Ch(57,0,3);
                OLED_P16x16Ch(74,0,4);
                OLED_P16x16Ch(91,0,5);
                for(i=0; i<8; i++)//通過點(diǎn)整顯示漢字 -- i表示字表數(shù)組的位置
                {
//                        OLED_P16x16Ch(i*16,0,i);
                         OLED_P16x16Ch(i*16,2,i+8);
                         OLED_P16x16Ch(i*16,4,i+16);
                         OLED_P16x16Ch(i*16,6,i+24);
                }
                delay(4000);
                OLED_CLS();//清屏

                OLED_P8x16Str(0,0,"HelTec");//第一行 -- 8x16的顯示單元顯示ASCII碼
                OLED_P8x16Str(0,2,"OLED Display");
                OLED_P8x16Str(0,4,"helte");
                OLED_P6x8Str(0,6,"12345");
                OLED_P6x8Str(0,7,"heltec");
                delay(4000);
                OLED_CLS();

                Draw_BMP(0,0,128,8,BMP1);  //圖片顯示(圖片顯示慎用,生成的字表較大,會(huì)占用較多空間,F(xiàn)LASH空間8K以下慎用)
                delay(8000);
                Draw_BMP(0,0,128,8,BMP2);
                delay(8000);
        }
回復(fù)

使用道具 舉報(bào)

12
返回列表 發(fā)新帖

本版積分規(guī)則

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

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

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