致敬學長!J20航模遙控器開源項目計劃【開局篇】 | 先作一個開機界面 | MATLAB圖像二值化 | Img2Lcd圖片取模 | OLED顯示圖片

咱們的開源宗旨:自由 協調 開放 合做 共享git

擁抱開源,豐富國內開源生態,開展多人運動,歡迎加入咱們哈~github

和一羣志同道合的人,作本身所熱愛的事!數組

項目開源地址:https://github.com/Cai-Zi/STM32_RC_Transmitteride

Bilibili帳號:蔡子CaiZi函數

我的主頁:https://space.bilibili.com/349576976性能

 

1.爲何要用STM32作航模遙控器?Arduino不香嘛?

 

以前用Arduino Pro Mini製做了一個航模遙控器+接收機,不得不說Arduino開發起來很是方便,可是博主用的開發板比較廉價,芯片資源較少,只能實現基礎功能,遙控性能也不能使人滿意。咱們的經費又不夠來買大幾百的UNO,怎麼辦?我找到了同價位的STM32F103C8T6開發板,十元包郵解君愁!這個小板子於咱們遙控器而言,資源足夠用了,別人甚至拿它來玩平衡車、四旋翼、智能家居,足見其強大!學習

 

2.爲何要命名爲J20遙控器?

 

其一,咱們本身DIY的遙控器,固然要用我國之重器-J20來命名!相信若是當年LUOLI大佬開發遙控器時,咱們祖國的J20面世了,他也會用J20來命名本身的遙控器,而不是SU27,每一個人都有本身的民族自豪感,我也同樣!測試

其二,J20的總設計師-楊偉院士,是個人學長!招生宣傳一波哈哈哈哈哈哈,歡迎報考西北工業大學!(招生辦是否是該打錢了)咱們學校真是過低調了,當年報考前我壓根沒據說過西工大,宣傳力度要增強啊。ui

其三,今年是2020年,就說應景不該景!J20中的數字也象徵着咱們的開發時間,獨特的年份,用來命名咱們的遙控器剛恰好~spa

3.爲何要記錄開發製做過程?

博主也是邊學邊作,而且是利用業餘時間(導師:論文看累了,就敲點代碼放鬆一下),實際上很耗費時間和精力啊!把學習過程記錄下來,一是方便加深本身的理解,二是但願能幫到別人叭,三是提供給DIY玩家本身改造的空間,一千我的心中有一千個哈姆雷特,每一個人都有本身的想法,授人以魚不如授人以漁,教程能夠幫助讀者完成本身的個性化設計,好比設計開機界面、添加修改功能。

項目徹底開源,還附帶教程,怎麼樣?上車吧!


 開始正文

1. 項目計劃

前天,北斗三號最後一顆全球組網衛星發射成功,實現全球組網。不得不說咱們祖國愈來愈強大了,咱們本身也要更努力才行啊,如今咱們總被漂亮國卡脖子,可是莫欺少年窮!咱們每一個人都爲祖國建設添磚加瓦,早晚祖國會實現偉大復興!

北斗系統建設採用「三步走」戰略-【從無到有-服務亞太-全球組網】,那麼咱們的遙控器也分三步走,先完成基礎版,實現遙控器的基礎功能,再進行升級,添加屏幕界面交互,最後添加更高級人性化的功能。先會爬 再會走路 最後學會奔跑,這樣看,萬物是否是都相通的?

 

2. 開機界面製做 

侃了這麼多,來開工吧,萬事開頭難,咱們先作一個帥氣的J20開機界面!

 

 

(1)修改圖片尺寸

找一張J20圖片,用2345看圖王修改圖片尺寸128像素*64像素(或者比這個範圍小一點),由於咱們的OLED顯示屏只有128*64個像素點,這一步也能夠和第二步一塊兒用程序實現。

(2)圖像二值化

所謂圖像二值化,就是將彩色圖片變成黑白的,咱們的顯示屏單個像素只有亮/暗兩種狀態,對應1/0二值。能夠用MATLAB/Python/Photoshop等來處理成黑白的,這裏我用的是MATLAB,圖片和m文件放在同一文件夾,代碼以下:

 1 close all
 2 clear all
 3 clc
 4 %%
 5 A=imread('j20.jpg');% 輸入圖片
 6 n = graythresh(A);
 7 % D=imbinarize(A,n);
 8 D=im2bw(A,n);
 9 % figure;
10 % imshow(D);
11 imwrite(D,'j20.bmp');% 輸出圖片
12 e=imread('j20.bmp');
13 [m,n] = size(e);
14 img = zeros(m,n);
15 fd=[m,n,3];%設置空白圖片矩陣
16 f=uint8 (round (fd*255)); %轉換爲RGB值
17 bg=255;%灰色背景51
18 for i=1:1:m
19    for j=1:1:n
20        if (e(i,j)<=200)
21            f(i,j,1)=91;
22            f(i,j,2)=155;
23            f(i,j,3)=213;
24        else
25            f(i,j,1)=255;
26            f(i,j,2)=255;
27            f(i,j,3)=255;
28        end
29    end
30 end
31 % figure;
32 % imshow(f);
33 % sa=imcrop(f,[0,0,140,140]);%裁剪[左上角起始位置x,y,裁剪寬,高]
34 % imwrite(f,'j20.png');

生成j20.bmp後,有一些不滿意的地方,接下來咱們拿PS來修一下。 

花費一點時間, 把邊邊角角清理乾淨,把線條補充上,再加個J-20文字,最後保存成bmp文件。

(3)Img2Lcd圖片轉數組

打開剛纔修好的bmp圖片,按以下四步操做,保存數組。若是發現顯示不對,能夠嘗試改變圖中設置,若是你不想搞懂OLED顯示原理,那麼一個一個試就能夠了。掃描模式(4種選項)和6個選項欄(勾選/不勾選),最多4*2^6=256次,我比較幸運,只試了10次。

 

奉上我作好的兩個數組,建議給咱們的UI設計師加雞腿!最後一張太好看了叭!

 

  1 unsigned char J20logo[] =
  2 {
  3 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  4 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  5 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
  6 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  7 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  8 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  9 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 10 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 11 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 12 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XBF,0XBF,0XBF,0XBF,0XBF,0X83,
 13 0XE7,0XCF,0XDF,0XDF,0XCF,0XE7,0XF3,0XF9,0XFC,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
 14 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0X7F,0X7F,0XFF,0X0F,0X5F,0X0F,0XFF,
 15 0X8F,0XAF,0X0F,0XFF,0X0F,0XFF,0X0F,0X6F,0X0F,0XFF,0XFF,0XFF,0XFF,0X0F,0X6F,0X6F,
 16 0XFF,0X0F,0X6F,0X0F,0XFF,0X0F,0X7F,0X0F,0XFF,0X7F,0X0F,0X7F,0XFF,0X0F,0X7F,0X7F,
 17 0XFF,0X0F,0X6F,0X0F,0XFF,0X0F,0XEF,0XFF,0X0F,0XEF,0XFF,0X0F,0X6F,0X2F,0XFF,0X0F,
 18 0X7F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 19 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 20 0XFF,0XFF,0XFF,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X00,0X1F,0X3F,0X7F,0XFF,0XFF,0XFF,
 21 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
 22 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XF3,0XF1,0XF1,0XF1,0XF1,0XF1,0XF1,0XF1,0XF1,
 23 0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XFF,0XF1,0XE1,0XC1,0X81,0X01,0X01,0X01,0X01,
 24 0X01,0X11,0X31,0X71,0XF1,0XF1,0XF1,0XF1,0XF1,0XF1,0XF1,0XF3,0XF7,0XFF,0X01,0X01,
 25 0X01,0X01,0X01,0X01,0X31,0X71,0XF1,0XF1,0XF1,0XF1,0XF1,0XF1,0X01,0X01,0X01,0X03,
 26 0X07,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 27 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,
 28 0XF9,0X71,0X21,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X03,
 29 0X07,0X0F,0X1F,0X3F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XE3,0XCF,0X1F,0X7F,0XFF,
 30 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 31 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,0XF8,
 32 0XF0,0XE0,0XC0,0X80,0X00,0X01,0X03,0X07,0X0F,0X1F,0X3F,0X7F,0XFF,0XFF,0X00,0X00,
 33 0X00,0X00,0X00,0X00,0XFC,0XF8,0XF0,0XE1,0XC3,0X87,0X0F,0X1F,0X00,0X00,0X00,0X00,
 34 0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 35 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XE7,0XE3,0XE1,
 36 0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,
 37 0XC0,0X80,0X00,0X00,0X00,0X00,0X01,0X03,0X07,0X0F,0X1F,0X3F,0X7F,0XFF,0XFE,0XF8,
 38 0XF3,0XC7,0XDF,0XCF,0XE7,0XF3,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 39 0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XFF,0XFF,0XE3,0XE3,0XE3,0XE3,0XE3,0XE3,0XE3,
 40 0XE3,0XE3,0XE3,0XE3,0XE3,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XFF,0XFF,0XE0,0XE0,
 41 0XE0,0XE0,0XE0,0XE0,0XE3,0XE3,0XE3,0XE3,0XE3,0XE3,0XE3,0XE2,0XE0,0XE0,0XE0,0XE0,
 42 0XE0,0XE0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 43 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 44 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 45 0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,0XFC,0XF8,0X70,0X30,0X00,0X00,0X00,0X00,0X01,0X03,
 46 0X07,0X0F,0X1F,0X3F,0X7F,0XFF,0XE0,0X8F,0X3F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 47 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 48 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 49 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 50 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 51 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 52 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 53 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFC,0XFC,0XFC,0XFC,0XFC,0XFC,0XFC,0XFC,0XFC,
 54 0XFC,0XFC,0XFC,0XF8,0XF0,0XF0,0XE1,0XC3,0XC7,0X8C,0X99,0X23,0X0F,0X1F,0X7F,0XFF,
 55 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 56 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 57 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 58 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 59 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 60 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 61 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 62 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFC,0XF8,
 63 0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 64 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 65 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 66 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 67 };
 68  
 69 unsigned char J20logoR[]=
 70 {
 71 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 72 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 73 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0XC0,0X00,0X00,0X00,0X00,0X00,
 74 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 75 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 76 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 77 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 78 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 79 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 80 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X40,0X40,0X40,0X40,0X40,0X7C,
 81 0X18,0X30,0X20,0X20,0X30,0X18,0X0C,0X06,0X03,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,
 82 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0X80,0X80,0X00,0XF0,0XA0,0XF0,0X00,
 83 0X70,0X50,0XF0,0X00,0XF0,0X00,0XF0,0X90,0XF0,0X00,0X00,0X00,0X00,0XF0,0X90,0X90,
 84 0X00,0XF0,0X90,0XF0,0X00,0XF0,0X80,0XF0,0X00,0X80,0XF0,0X80,0X00,0XF0,0X80,0X80,
 85 0X00,0XF0,0X90,0XF0,0X00,0XF0,0X10,0X00,0XF0,0X10,0X00,0XF0,0X90,0XD0,0X00,0XF0,
 86 0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 87 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 88 0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XFF,0XE0,0XC0,0X80,0X00,0X00,0X00,
 89 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,
 90 0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X0C,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,
 91 0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X00,0X0E,0X1E,0X3E,0X7E,0XFE,0XFE,0XFE,0XFE,
 92 0XFE,0XEE,0XCE,0X8E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0C,0X08,0X00,0XFE,0XFE,
 93 0XFE,0XFE,0XFE,0XFE,0XCE,0X8E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0XFE,0XFE,0XFE,0XFC,
 94 0XF8,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 95 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X02,
 96 0X06,0X8E,0XDE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
 97 0XF8,0XF0,0XE0,0XC0,0X80,0X00,0X00,0X00,0X00,0X00,0X07,0X1C,0X30,0XE0,0X80,0X00,
 98 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 99 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X03,0X07,
100 0X0F,0X1F,0X3F,0X7F,0XFF,0XFE,0XFC,0XF8,0XF0,0XE0,0XC0,0X80,0X00,0X00,0XFF,0XFF,
101 0XFF,0XFF,0XFF,0XFF,0X03,0X07,0X0F,0X1E,0X3C,0X78,0XF0,0XE0,0XFF,0XFF,0XFF,0XFF,
102 0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
103 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X10,0X18,0X1C,0X1E,
104 0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,
105 0X3F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,0XF8,0XF0,0XE0,0XC0,0X80,0X00,0X01,0X07,
106 0X0C,0X38,0X20,0X30,0X18,0X0C,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
107 0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X00,0X00,0X1C,0X1C,0X1C,0X1C,0X1C,0X1C,0X1C,
108 0X1C,0X1C,0X1C,0X1C,0X1C,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X00,0X00,0X1F,0X1F,
109 0X1F,0X1F,0X1F,0X1F,0X1C,0X1C,0X1C,0X1C,0X1C,0X1C,0X1C,0X1D,0X1F,0X1F,0X1F,0X1F,
110 0X1F,0X1F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
111 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
112 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
113 0X00,0X00,0X00,0X00,0X01,0X03,0X03,0X07,0X8F,0XCF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
114 0XF8,0XF0,0XE0,0XC0,0X80,0X00,0X1F,0X70,0XC0,0X80,0X00,0X00,0X00,0X00,0X00,0X00,
115 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
116 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
117 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
118 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
119 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
120 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
121 0X00,0X00,0X00,0X00,0X00,0X00,0X02,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,
122 0X03,0X03,0X03,0X07,0X0F,0X0F,0X1E,0X3C,0X38,0X73,0X66,0XDC,0XF0,0XE0,0X80,0X00,
123 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
124 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
125 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
126 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
127 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
128 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
129 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
130 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X01,0X03,0X07,
131 0X04,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
132 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
133 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
134 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
135 };
圖片取模數組代碼

(4)圖片顯示程序

首先聲明數組是全局變量,再在循環中調用顯示函數。

 1 /*
 2 =============菜單顯示==============
 3     芯片STM32F103C8T6,先作一個J20開機界面
 4     OLED顯示屏:
 5                 GND   電源地
 6                 VCC   接3.3v電源
 7                 SCL   接PB8(SCL)
 8                 SDA   接PB9(SDA)
 9     串口USB-TTL接法:    
10                 GND   電源地
11                 3V3   接3.3v
12                 TXD   接PB7
13                 RXD   接PB6
14     ST-LINK V2接法:
15                 GND   電源地
16                 3V3   接3.3v
17                 SWCLK 接DCLK
18                 SWDIO 接DIO
19     by Bilibili 蔡子CaiZi
20 */
21 #include "config.h"
22 #include "delay.h"
23 #include "usart.h"
24 #include "stm32f10x.h"
25 #include "oled.h"
26 #include "rtc.h" 
27 #include "stdio.h"
28 #include "string.h"
29 extern unsigned char J20logo[];
30 extern unsigned char J20logoR[];
31 extern unsigned char BMP1[];
32 int main()
33 {
34 //    u8 txt[16]={0};
35     delay_init();//初始化延時函數
36     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2,2位搶佔優先級和2位子優先級
37     usart_init(115200);//初始化串口1,波特率爲115200
38 //    TIM3_PWM_Init(19999,71);//預分頻72,頻率1MHz,週期1us;自動裝載值20 000,故PWM週期1us*20 000
39 //    TIM2_Init(499,71);//1MHz,每500us採集一次;可設置9us以上,但太小影響OLED顯示
40 //    DMA1_Init();    //DMA初始化
41 //    GPIOA_Init();    //PA初始化
42 //    Adc_Init();        //ADC初始化
43 //    RTC_Init();          //RTC初始化
44     OLED_Init();    //初始化OLED  
45     OLED_Clear();
46     OLED_Refresh_Gram();
47     while (1){
48 //        itoa(PWM1value,txt,10);//將int類型轉換成10進制字符串
49 //        printf("採樣值:%d\t舵量:%s\t",ch1Value,txt);
50 //        printf("當前時間:%d:%d:%d\n",calendar.hour,calendar.min,calendar.sec);
51 //        //OLED_Clear();//一直清屏會形成閃爍
52 //        strcat(txt," us");//合併字符串
53 //        OLED_ShowString(6,3,txt,24); //位置6,3;字符大小24*24點陣
54         OLED_DrawBMP(0,0,128,8,J20logo);
55 //        OLED_DrawBMP(0,0,128,8,BMP1);
56         //OLED_ShowString(6,3,"CaiZi",24); //位置6,3;字符大小24*24點陣
57         //OLED_Refresh_Gram();
58         delay_ms(500);
59     }
60 }

 

完整的工程文件已上傳天翼雲盤:

 https://cloud.189.cn/t/rYZzQ3yIbIrm(訪問碼:5eju)

項目宣傳視頻

寫在最後:

若是你手上有廢棄的遙控器,有吃灰的開發板,有9塊9包郵的烙鐵或者焊臺,歡迎加入咱們,一塊兒來感覺DIY的樂趣;

若是你是一個技術小白,擁有一腔熱血卻很迷茫,歡迎加入咱們,雖然這裏除了知識和快樂,其餘什麼都沒有;

不管你是入坑菜鳥仍是航模老鳥,只要你有一顆熱愛的心,來自五湖四海,咱們都期待你的加入!

咱們期待聽到不一樣的聲音,但願獲得更多人的反饋,幫助咱們來研發和測試~

QQ羣:1091996634,密碼:J20

想要一塊兒研發的話,加羣后請私聊羣主喔~

開源團隊現有成員:(持續更新)

蔡子CaiZi(B站up主)    - STM32開發
A-XIN(模友)                - STM32開發
小何(模友)                   - PCB設計
ZL_Studio(B站up主)   - C51開發
王每天(舍友)               - STM32開發
劉桶桶(模友)               - PCB設計
簡繁(模友)                   - UI設計
王博(模友)                  - STM32開發
與非門(模友)               - STM32開發
Talons(模友)               - STM32開發
大米粥(模友)              - 結構設計
P a S S ||(模友)          - STM32開發

相關文章
相關標籤/搜索