欧美在线专区-欧美在线伊人-欧美在线一区二区三区欧美-欧美在线一区二区三区-pornodoxxx中国妞-pornodoldoo欧美另类

position>home>Football

大神教你如何用ML51單片機點亮

[導讀]雙十一,大神L單點亮看淘寶一直給我發優惠券,教何就買了一片OLED,片機0.96寸的大神L單點亮,最后花費了4.54元……

出品?21ic論壇?gaoyang9992006

網站:21ic.com

大神教你如何用ML51單片機點亮


雙十一,教何看淘寶一直給我發優惠券,片機就買了一片OLED,大神L單點亮0.96寸的教何,最后花費了4.54元。片機



驅動芯片是大神L單點亮SSD1315


第一,驅動不一樣,教何老款是片機SSD1306,新款的大神L單點亮是SSD1315,新款沒有并口功能,教何但是片機模塊是IIC,不影響,程序一樣,電路一樣。

第二,新款玻璃比老款的小了一圈,沒用的玻璃邊減去了,省點OLED玻璃,因為玻璃都是日本進口,玻璃省了,價格要便宜一點。

第三,引腳順序不一樣,老款依次是VCC、GND、SCL、SDA,新款則是GND、VCC、SCL、SDA。

所以我為了圖便宜,買了新款的。只有4個管腳。


第一步,點亮屏幕


得到一塊新的屏幕,最重要的就是看能否點亮,點亮了才能使用做各種顯示應用。而這個店家沒有提供驅動代碼,懶得自己寫啊,這種通用的肯定有,I2C很容易GPIO模擬,然后搜其他店家,有不少提供驅動代碼的,下載了移植到我的ML51開發板上試試。下面鏈接是廠家提供的驅動程序。


鏈接: https://pan.baidu.com/s/1jqHcX9fIyKdUirFoZ3qSCA 提取碼: mj6e 復制這段內容后打開百度網盤手機App,操作更方便哦為方便下載,提供其中源碼與取模軟件的本地下載,資料說明看不看無所謂。


考慮到是I2C接口,如果用GPIO模擬,需要先設置為開漏模式,然后找到初始化代碼,增加配置開漏模式的四行代碼。

    //對選用的管腳設置為開漏模式MFP_P20_GPIO;MFP_P21_GPIO;P20_OPENDRAIN_MODE;P21_OPENDRAIN_MODE;

    這里也可以看出我用的是P20與P21.


    然后修改頭文件中的管腳定義

      sbit OLED_SCL=P2^0;//SCLsbit OLED_SDA=P2^1;//SDAsbit OLED_RES =P2^2;//RES

      因為使用I2C,按照手冊說明可以忽略RES。但是為了少修改一點內容,就先這么隨意指定個管腳,不鏈接就是了。


      通過取模軟件,可以取出你想要的漢字,放入如下數組。

        unsigned char code Hzk[][32]={ { 0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0xFC,0x40,0x40,0x40,0x40,0x60,0xE0,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x7F,0x02,0x02,0x02,0x02,0x02,0x07,0x00,0x00},/*"中",0*/{ 0x00,0x00,0xF8,0x08,0x08,0x28,0x28,0x28,0xE8,0x28,0x28,0x38,0x28,0xF8,0x08,0x00,0x00,0x00,0x7F,0x20,0x20,0x29,0x29,0x29,0x2F,0x29,0x2F,0x2D,0x28,0x7F,0x00,0x00},/*"國",1*/{ 0x00,0x00,0x00,0xF0,0x20,0x20,0x20,0xFC,0x20,0x20,0x20,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x05,0x05,0x05,0x7F,0x45,0x45,0x45,0x4F,0x40,0x60,0x78,0x60},/*"電",2*/{ 0x00,0x00,0x10,0x10,0x10,0x10,0x10,0xD0,0x30,0x30,0x10,0x08,0x80,0x80,0x00,0x00,0x01,0x01,0x01,0x01,0x21,0x21,0x41,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"子",3*/{ 0x00,0x00,0xF8,0x10,0x50,0x90,0x90,0x70,0x70,0x90,0xD0,0x70,0x30,0xF8,0x00,0x00,0x00,0x00,0x7F,0x00,0x08,0x06,0x01,0x1E,0x08,0x06,0x03,0x4E,0x40,0x7F,0x00,0x00},/*"網",4*/};

        主程序代碼如下所示

          //#include "ML51.h" #include "oled.h"#include "bmp.h"int main(void){  unsigned char t=' ';OLED_Init();//初始化OLEDOLED_ColorTurn(0);//0正常顯示,1 反色顯示OLED_DisplayTurn(0);//0正常顯示 1 屏幕翻轉顯示while(1){  // OLED_DrawBMP(0,0,128,64,BMP1);// delay_ms(5);// OLED_Clear();// OLED_ShowChinese(0,0,0,16);OLED_ShowChinese(18,0,0,16);//中OLED_ShowChinese(36,0,1,16);//國OLED_ShowChinese(54,0,2,16);//電OLED_ShowChinese(72,0,3,16);//子OLED_ShowChinese(90,0,4,16);//網// OLED_ShowChinese(108,0,6,16);OLED_ShowString(8,2,"bbs.21ic.com",16);OLED_ShowString(20,4,"2020/11/17",16);OLED_ShowString(0,6,"ASCII:",16); OLED_ShowString(63,6,"CODE:",16);OLED_ShowChar(48,6,t,16);t++;if(t>'~')t=' ';OLED_ShowNum(103,6,t,3,16);// delay_ms(5);// OLED_Clear();} }

          接下來連接OLED的I2C接口與開發板,并使用開發板供電。


          燒錄后,效果如下圖所示。然后就可以利用這個框架只需要修改簡單的幾個地方,就能實現OLED點亮了,可以用于其他的各種項目了。


          最后獻上我修改后的工程。


          后面我再試試改成用硬件I2C收發器控制。


          以上完成第一步點亮屏幕。

          第二步,應用到自己的項目中


          如果需要顯示溫濕度的話,就可以利用這些函數組合出你要顯示的內容,例如顯示“溫度:36.5℃”。


          則需要先生成所需的漢字與符號字模。


            unsigned char code Hzk[][32]={ { 0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0xFC,0x40,0x40,0x40,0x40,0x60,0xE0,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x7F,0x02,0x02,0x02,0x02,0x02,0x07,0x00,0x00},/*"中",0*/{ 0x00,0x00,0xF8,0x08,0x08,0x28,0x28,0x28,0xE8,0x28,0x28,0x38,0x28,0xF8,0x08,0x00,0x00,0x00,0x7F,0x20,0x20,0x29,0x29,0x29,0x2F,0x29,0x2F,0x2D,0x28,0x7F,0x00,0x00},/*"國",1*/{ 0x00,0x00,0x00,0xF0,0x20,0x20,0x20,0xFC,0x20,0x20,0x20,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x05,0x05,0x05,0x7F,0x45,0x45,0x45,0x4F,0x40,0x60,0x78,0x60},/*"電",2*/{ 0x00,0x00,0x10,0x10,0x10,0x10,0x10,0xD0,0x30,0x30,0x10,0x08,0x80,0x80,0x00,0x00,0x01,0x01,0x01,0x01,0x21,0x21,0x41,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"子",3*/{ 0x00,0x00,0xF8,0x10,0x50,0x90,0x90,0x70,0x70,0x90,0xD0,0x70,0x30,0xF8,0x00,0x00,0x00,0x00,0x7F,0x00,0x08,0x06,0x01,0x1E,0x08,0x06,0x03,0x4E,0x40,0x7F,0x00,0x00},/*"網",4*/{ 0x00,0x80,0x80,0xC8,0x30,0x00,0x80,0x40,0x30,0x18,0x10,0x60,0xC0,0x80,0x80,0x80,0x00,0x00,0x00,0x3F,0x12,0x09,0x04,0x7F,0x44,0x44,0x42,0x43,0x42,0x78,0x60,0x00},/*"論",5*/{ 0x40,0x40,0x40,0xF8,0x40,0x60,0xC0,0x90,0x90,0x90,0x90,0x90,0x90,0x98,0xD0,0x80,0x00,0x10,0x10,0x1F,0x08,0x08,0x60,0x30,0x2C,0x27,0x23,0x25,0x28,0x30,0x60,0x00},/*"壇",6*/{ 0x00,0x00,0x00,0x18,0xF8,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",7*/{ 0x00,0x40,0xC0,0x18,0x90,0x60,0xF8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x00,0x00,0x00,0x04,0x7C,0x7E,0x01,0x00,0x21,0x3E,0x22,0x3E,0x22,0x3E,0x23,0x3E,0x22,0x20},/*"溫",8*/{ 0x00,0x00,0x00,0xF0,0x90,0x90,0x90,0xF4,0x98,0x90,0x90,0xF0,0x90,0xD8,0x90,0x00,0x00,0x40,0x30,0x0F,0x40,0x44,0x44,0x4F,0x35,0x25,0x35,0x6F,0x64,0x40,0x40,0x00},/*"度",9*/
            { 0x00,0x40,0xC0,0x98,0x60,0x00,0xF8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x00,0x04,0x04,0x7E,0x01,0x20,0x24,0x3D,0x20,0x3F,0x20,0x20,0x3F,0x24,0x27,0x33,0x20},/*"濕",10*/{ 0x00,0x00,0x00,0xF0,0x90,0x90,0x90,0xF4,0x98,0x90,0x90,0xF0,0x90,0xD8,0x90,0x00,0x00,0x40,0x30,0x0F,0x40,0x44,0x44,0x4F,0x35,0x25,0x35,0x6F,0x64,0x40,0x40,0x00},/*"度",11*/
            { 0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*":",12*/{ 0x00,0x00,0x78,0x48,0x78,0xC0,0xE0,0x10,0x08,0x08,0x08,0x08,0x10,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x08,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x00},/*"℃",13*/
            };


            最后顯示的效果如下圖所示,如果將溫度的數字通過讀取傳感器繼續更新,就可以看到實時的溫度了。


            然后合理的利OLED廠家提供的庫函數組合。


              //#include "ML51.h" #include "oled.h"#include "bmp.h"
              int main(void){ char i=0;unsigned char t=' ';OLED_Init();//初始化OLEDOLED_ColorTurn(0);//0正常顯示,1 反色顯示OLED_DisplayTurn(0);//0正常顯示 1 屏幕翻轉顯示while(1){

              //第一行顯示8個字符16*8==128for(i=0;i<8;i++)OLED_ShowChinese(i*16,0,i,16);//第二行顯示 溫度:OLED_ShowChinese(0,2,8,16);//溫OLED_ShowChinese(16,2,9,16);//度OLED_ShowChinese(32,2,12,16);//://在第二行,第四個字符位置顯示36OLED_ShowNum(48,2,36,2,16);OLED_ShowChar(66,2,'.',16);OLED_ShowNum(74,2,5,1,16);OLED_ShowChinese(90,2,13,16);//℃//在第三行顯示字符串OLED_ShowString(8,4,"bbs.21ic.com",16);//delay_ms(5);} }




              在使用中遇到了一個問題,我在main.c和oled.h都引用了頭文件#include "ML51.h"? ? ? ??


              導致編譯后報錯重復定義。然后我刪除了main.c中的,重新設置了引用頭文件路徑,完美解決。


              另外如果你修改了目錄,或者重建了目錄結構,需要在這里也修改一下,不然工程無法找到對應的exe。




              ..\Library\Startup\exe\hex2bin.exe??.\output\@L.hex


              運行該命令可以生成所需的hex文件。


              第三步,添加其他的外設驅動,實現顯示檢測數據顯示功能


              這里我使用的是ADC檢測溫度,然后通過該屏幕顯示。



              已經添加了NTC傳感器。效果非常好





              還有就是使用的GPIO,一定要初始化為GPIO模式的開漏模式,不然無法驅動屏幕。


                //	

                Popular articles

                主站蜘蛛池模板: 女人张开腿日出白浆视频| 欧美巨大黑人精品videos| 亚洲国产高清在线精品一区| 女人与狥交下配a级正在播放| 永久免费bbbbbb视频| 久久伊人免费视频| 三年片免费高清版| 天天干天天射天天操| 被夫上司强迫的女人在线中文 | 欧美aaaaaaaa| 亚洲免费网站观看视频| 美女羞羞视频免费网站| 樱桃视频高清免费观看在线播放| 欧美天堂视频| 日本爆乳片手机在线播放| 处破女18分钟完整版| 91视频久久久久| 健身私教干了好几次| 野花社区在线观看www| 再灬再灬再灬深一点舒服| 男女猛烈xx00免费视频试看| 好男人好资源在线影视官网| 国产午夜视频在线观看| 中文字幕在线免费看| 国产特级毛片aaaaaa毛片| 免费无遮挡肉动漫在线观看| 亚洲一道本| 欧美中文字幕在线| 免费的黄色影片| 动漫美女被到爽了流漫画| 欧美日韩欧美| 欧美在线第一二三四区| 极品丝袜系列列表| 女人张开腿让男人捅爽| 黄色大片播放| 美团外卖猛男男同38分钟 | 日韩av片无码一区二区不卡电影| 国产免费观看青青草原网站| 18av黄动漫在线观看| 911香蕉视频| 一个人免费视频观看在线www|