標(biāo)題: 0.96寸IIC12864OLED最強(qiáng)單片機(jī)例程,通俗易懂,方便引用 [打印本頁(yè)]

作者: 854100995    時(shí)間: 2018-11-16 11:07
標(biāo)題: 0.96寸IIC12864OLED最強(qiáng)單片機(jī)例程,通俗易懂,方便引用
此例程在該模塊贈(zèng)送資料的基礎(chǔ)上,新增
32x32字體顯示函數(shù),


64x64字體顯示函數(shù),

文字和數(shù)字反碼顯示函數(shù)(可用于設(shè)置位置顯示)

變量顯示示例(可用于顯示程序中定義的變化的變量)

十進(jìn)制數(shù)轉(zhuǎn)字符串并顯示示例



附件中共兩個(gè)程序,一個(gè)用于程序存儲(chǔ)器較小的單片機(jī)上使用(如STC89C52),

一個(gè)用于程序存儲(chǔ)器13K以上的單片機(jī)上使用。

此程序親測(cè)可用于STC全系列單片機(jī)(12T和STC1T),STC1T顯示時(shí)刷新速度更快。


IMG_20181116_104431.jpg (753.34 KB, 下載次數(shù): 194)

IMG_20181116_104431.jpg

IMG_20181116_104438.jpg (739.87 KB, 下載次數(shù): 110)

IMG_20181116_104438.jpg

IMG_20181116_104441.jpg (718.23 KB, 下載次數(shù): 107)

IMG_20181116_104441.jpg

IMG_20181116_104443.jpg (728.71 KB, 下載次數(shù): 113)

IMG_20181116_104443.jpg

IMG_20181116_104531.jpg (696.28 KB, 下載次數(shù): 132)

IMG_20181116_104531.jpg

IMG_20181116_104448.jpg (694.54 KB, 下載次數(shù): 133)

IMG_20181116_104448.jpg

IMG_20181116_104452.jpg (734 KB, 下載次數(shù): 124)

IMG_20181116_104452.jpg

IMG_20181116_104459.jpg (729.38 KB, 下載次數(shù): 115)

IMG_20181116_104459.jpg

IMG_20181116_104505.jpg (714.69 KB, 下載次數(shù): 113)

IMG_20181116_104505.jpg

IMG_20181116_104507.jpg (713.77 KB, 下載次數(shù): 138)

IMG_20181116_104507.jpg

0.png (38.42 KB, 下載次數(shù): 120)

0.png

0.png (14.92 KB, 下載次數(shù): 103)

0.png

0.96寸IIC12864OLED最強(qiáng)例程.zip

192.84 KB, 下載次數(shù): 1161, 下載積分: 黑幣 -5


作者: luo713ok    時(shí)間: 2018-11-30 13:20
謝謝樓主分享
作者: 1113634577    時(shí)間: 2018-12-4 21:54
學(xué)習(xí)參考
作者: 原來(lái)如鳥(niǎo)    時(shí)間: 2019-1-2 18:04
謝謝分享,我已經(jīng)下載學(xué)習(xí)中,感謝。
作者: SengChuary    時(shí)間: 2019-1-2 18:49
好教材,支持!
作者: hellowC8051    時(shí)間: 2019-1-29 08:55
謝謝樓主分享
作者: bg4esa    時(shí)間: 2019-2-26 21:07
不錯(cuò),謝謝分享
作者: johnsbark    時(shí)間: 2019-3-23 08:25
謝謝分享,好東西啊
作者: a1357787200    時(shí)間: 2019-4-6 13:43
剛好學(xué)學(xué)
作者: qiuzf    時(shí)間: 2019-5-7 17:35
謝謝樓主分享
作者: 陳必成    時(shí)間: 2019-5-7 20:05
啥都別說(shuō)了,就佩服你們這樣的人
作者: 陳仕祥    時(shí)間: 2019-6-1 09:33
先謝樓主
作者: luhshuay    時(shí)間: 2019-6-15 23:00
啥都別說(shuō)了,就佩服你們這樣的人
作者: zhongzl728    時(shí)間: 2019-7-20 18:48
謝謝樓主分享
作者: 3760609865    時(shí)間: 2019-7-21 14:58
謝謝分享,下來(lái)學(xué)習(xí)學(xué)習(xí)。
作者: 3760609865    時(shí)間: 2019-7-21 15:00
謝謝分享,下來(lái)學(xué)習(xí)學(xué)習(xí)。
作者: asd安德森    時(shí)間: 2019-8-10 13:09
謝謝分享
作者: ahweixiao    時(shí)間: 2019-8-23 22:00
這個(gè)能用來(lái)測(cè)試超聲波么
作者: whsbk    時(shí)間: 2019-9-10 09:50
謝謝分享,iic只要兩個(gè)數(shù)據(jù)線可以節(jié)省io,正在找stc單片機(jī)驅(qū)動(dòng)iic的方法,感謝分享
作者: zxy2266    時(shí)間: 2019-9-10 21:11
不知道樓主搞過(guò)SSD1305沒(méi)有,這個(gè)芯片的那個(gè)寶很少
作者: 3078    時(shí)間: 2019-9-16 14:14
xi謝謝樓主分享 拿來(lái)學(xué)習(xí)
作者: ljj200526    時(shí)間: 2019-9-17 21:56
下來(lái)學(xué)習(xí)一下,謝謝分享!
作者: 6467778399    時(shí)間: 2019-9-26 14:39


學(xué)習(xí)學(xué)習(xí)備用
作者: lyl_420819    時(shí)間: 2019-10-1 20:29
好資料,下載學(xué)習(xí),謝謝分享。
作者: quhong0411    時(shí)間: 2019-10-15 16:02
感謝分享,學(xué)習(xí)中。
作者: caesarvan    時(shí)間: 2019-10-24 02:35
謝謝樓主分享
作者: 冷月楓    時(shí)間: 2019-10-28 15:51
STC8a8k怎么用不了啊

作者: z805502494    時(shí)間: 2019-12-19 21:56
好好,太好了謝謝
作者: waerdeng    時(shí)間: 2019-12-20 19:40

不錯(cuò),可以分享一下設(shè)計(jì),學(xué)習(xí)一下
作者: adadad123    時(shí)間: 2019-12-28 23:30
謝謝樓主分享
作者: 米花卷    時(shí)間: 2019-12-29 13:42
雖然沒(méi)看懂但也覺(jué)得不錯(cuò)
作者: bg4rfb    時(shí)間: 2019-12-30 12:32
謝謝分享!
作者: hfsdage    時(shí)間: 2020-4-1 20:26
感謝樓主分享。
作者: shiyb    時(shí)間: 2020-4-1 23:50
多謝,已經(jīng)下載,學(xué)習(xí)中
作者: 太陽(yáng)黑子1    時(shí)間: 2020-4-2 17:13
非常好啊,謝謝!
作者: david1011    時(shí)間: 2020-4-2 17:37
冷月楓 發(fā)表于 2019-10-28 15:51
STC8a8k怎么用不了啊

我也用不了,你現(xiàn)在可以了嗎

作者: xmfjfhcel    時(shí)間: 2020-4-3 07:57
這個(gè)程序我用STC589C52, 會(huì)卡死, 我卡死的地方在于SPRINTF這個(gè)函數(shù)。去掉就可以了。但這個(gè)的精華個(gè)人覺(jué)得就在于用了SPRINTF函數(shù),我不明白為啥我用這個(gè)SPRINTF會(huì)卡死。 沒(méi)辦法,只好找的這個(gè)論壇別的可用的。 程序差不多。這個(gè)屏我看著高手們做的程序都頭暈,他們太歷害了,努力向他們學(xué)……
作者: 向日葵單片機(jī)    時(shí)間: 2020-4-12 09:28
謝謝分享
作者: 51heihuo    時(shí)間: 2020-4-12 20:27
謝謝分享,在學(xué)習(xí)這個(gè)屏幕,小字體都搞定了,自己嘗試寫(xiě)個(gè)大字體32×32的,一直亂碼。下載下來(lái)學(xué)習(xí)一下!
作者: yyzf998    時(shí)間: 2020-5-2 11:20
樓主強(qiáng)大!威武!為你點(diǎn)贊!
作者: pangjineng    時(shí)間: 2020-5-21 12:01
"可用于顯示程序中定義的變化的變量"
讀起來(lái)好別扭
作者: 瓶子    時(shí)間: 2020-5-21 13:05
下載一份學(xué)習(xí)一下
作者: liqingyong    時(shí)間: 2020-5-21 15:14
謝謝分享
作者: hhdsdy    時(shí)間: 2020-5-22 00:19
下載一個(gè)看看,謝謝分享!
作者: wwh2382    時(shí)間: 2020-5-22 11:08
怎么圖片打開(kāi)得很慢
作者: hhdsdy    時(shí)間: 2020-5-30 16:19
之前沒(méi)有用過(guò)OLED,在淘寶下單一個(gè)0.96寸(驅(qū)動(dòng)芯片:SH1106(可兼容SSD1306))的時(shí)候剛好看到這個(gè)帖子,所以干脆就不用賣(mài)家提供的測(cè)試程序而直接用這個(gè)的,OLED一次點(diǎn)亮,但是最后面有一、兩列豎線,8頁(yè)都有,本以為是程序沒(méi)有處理好(故意設(shè)坑的程序也是有遇到的),但看了下程序沒(méi)有問(wèn)題,帖子里也沒(méi)人反應(yīng)有這個(gè)現(xiàn)象,難道是OLED生成就這樣的?但很快就否定了。
上賣(mài)家頁(yè)面看帶圖的評(píng)價(jià)里是正常的,那就肯定是程序的問(wèn)題,翻看到另一個(gè)賣(mài)家里的介紹,里面的一個(gè)內(nèi)容讓我注意到了(就不把圖片里的文字打出來(lái)了,大家自己看圖),這個(gè)說(shuō)得很明白,那就百度查找翻看指令,好像沒(méi)有列偏移的,直接改設(shè)置坐標(biāo)的程序,整行顯示的正常了,顯示半行的后面還有,肯定是清屏的還需要改,于是又改了全屏、清屏、初始化里的內(nèi)容,這才一切正常。



之間百度指令時(shí),設(shè)置列地址時(shí),有的說(shuō)列地址是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ā)出疑問(wèn),之前沒(méi)看指令介紹時(shí)我也不理解,看了指令認(rèn)為是編寫(xiě)錯(cuò)誤,指令里并不要求列地址低四位里的D0必須為1,那么|0x01就是畫(huà)蛇添足,也滿足不了加一的目的(D0為0有效果,為1就不變),這個(gè)歡迎大家討論一下。我是認(rèn)為列地址是0到127的,先不說(shuō)都是習(xí)慣地址從0開(kāi)始的,就大家初始化時(shí)列地址低四位是送0x00而不是0x01就能說(shuō)明問(wèn)題,而且英文版里的資料也是這樣寫(xiě)的,雖然我看不懂英文。     剛才還說(shuō)到了全屏和清屏子函數(shù),里面的是OLED_WrCmd(0x01);  也就是說(shuō)列地址低四位是送0X01,而不是0X00,真有點(diǎn)自相矛盾啊

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

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



作者: ii11nnocent    時(shí)間: 2020-7-23 16:05
謝謝樓主分享,單片機(jī)小白第一次接觸這個(gè)屏幕,正在學(xué)習(xí)中。
作者: 這是個(gè)用戶名    時(shí)間: 2020-8-31 13:24
有大佬可以告知一下32*32的字模怎么取嗎?自己取的都是亂碼,樓主取好的就可以用

作者: 杰瑤電子    時(shí)間: 2020-11-10 16:19
可以使用,就是不明白特殊字體怎么弄的
作者: 564988996    時(shí)間: 2021-2-25 16:23
樓主強(qiáng)大!威武!為你點(diǎn)贊
作者: guo_hit    時(shí)間: 2021-4-27 15:46
這個(gè)程序我用STM32, 會(huì)卡死, 我卡死的地方在于SPRINTF這個(gè)函數(shù)。
作者: engineerarui    時(shí)間: 2021-4-27 17:24
淺談LCD、OLED、TFT取模及其程序開(kāi)發(fā)的算法取舍https://blog.csdn.net/yagnruinihao/article/details/47133455

單片機(jī)控制OLED12864顯示屏之模塊化編程
https://blog.csdn.net/yagnruinihao/article/details/115842157
作者: yygdzjs    時(shí)間: 2021-5-1 21:17
在某一個(gè)寶下單一個(gè)0.96寸(驅(qū)動(dòng)芯片:SSD1306).
遇到了 白色條.
找了一段時(shí)間,不知道什么原因.
下載,測(cè)試一下. 謝謝!
作者: 無(wú)聊到處逛    時(shí)間: 2021-5-2 20:48
剛好要用到,謝謝樓主了
作者: yygdzjs    時(shí)間: 2021-5-9 15:48
關(guān)于   最后一句 OLED_WrCmd((x&0x0f)|0x01);  引起的第1豎顯示問(wèn)題解決了.
未解決問(wèn)題點(diǎn):  全部點(diǎn)顯示  后 ,再全部滅  有 操作時(shí)留有  "鋸齒余暉"  問(wèn)題, 請(qǐng)教一下大家

解決問(wèn)題點(diǎn):
//問(wè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.
  
//問(wèn)題點(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ú)法清零  注銷(xiāo)
//                        
//                        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ú)法清零  注銷(xiāo)
//                        OLED_WrCmd(0x10);
//                        for(x=0;x<X_WIDTH;x++)
//                        OLED_WrDat(0);
//                }
//        }  
//問(wèn)題點(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.未解決問(wèn)題點(diǎn):  全部點(diǎn)顯示  后 ,再全部滅  有 操作時(shí)留有  "鋸齒余暉"  問(wèn)題, 請(qǐng)教一下大家

while(1)
        {
                OLED_Fill(0xff); //屏全亮
                delay(4000);
                OLED_Fill(0x00); //屏全滅  操作時(shí)留有  "鋸齒余暉"  問(wèn)題:
                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++)//通過(guò)點(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);
        }




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