本文針對IIC OLED屏底層驅動相關代碼
16X32,32X32,128X48等下面附帶相關實物圖
內置簡單的菜單程序,下面附帶實物圖
相關資料已經上傳
IMG_20180422_140110.jpg (1.66 MB, 下載次數: 161)
下載附件
2018-4-22 14:05 上傳
IMG_20180422_135806.jpg (2.4 MB, 下載次數: 120)
下載附件
2018-4-22 14:05 上傳
IMG_20180422_134441.jpg (1.77 MB, 下載次數: 123)
下載附件
2018-4-22 14:05 上傳
IMG_20180422_133334.jpg (1.53 MB, 下載次數: 111)
下載附件
2018-4-22 14:05 上傳
IMG_20180422_132931.jpg (1.64 MB, 下載次數: 126)
下載附件
2018-4-22 14:05 上傳
stm32單片機OLED菜單源程序如下:
- #define OLED_IIC_SCL PBout(4) //SCL 串行時鐘
- #define OLED_IIC_SDA PBout(3) //SDA 串行數據
- }
- void OLED_P16x32Ch(unsigned char x,unsigned char y,unsigned int N)
- {
- unsigned char wm=0;
- unsigned int adder=64*N;
- OLED_Set_Pos(x , y);
- for(wm = 0;wm < 16;wm++)
- {
- OLED_WrDat(F16x32[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x,y+1 );
- for(wm = 0;wm <16;wm++)
- {
- OLED_WrDat(F16x32[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x , y+2);
- for(wm = 0;wm < 16;wm++)
- {
- OLED_WrDat(F16x32[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x,y+3 );
- for(wm = 0;wm <16;wm++)
- {
- OLED_WrDat(F16x32[adder]);
- adder += 1;
- }
- }
- void OLED_P32x32Ch(unsigned char x,unsigned char y,unsigned int N)
- {
- unsigned char wm=0;
- unsigned int adder=128*N;
- OLED_Set_Pos(x , y);
- for(wm = 0;wm < 32;wm++)
- {
- OLED_WrDat(F32x32[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x,y+1 );
- for(wm = 0;wm <32;wm++)
- {
- OLED_WrDat(F32x32[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x , y+2);
- for(wm = 0;wm < 32;wm++)
- {
- OLED_WrDat(F32x32[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x,y+3 );
- for(wm = 0;wm <32;wm++)
- {
- OLED_WrDat(F32x32[adder]);
- adder += 1;
- }
- }
- void OLED_P128x48Ch(unsigned char x,unsigned char y,unsigned int N)
- {
- unsigned char wm=0;
- unsigned int adder=768*N;
- OLED_Set_Pos(x , y);
- for(wm = 0;wm < 128;wm++)
- {
- OLED_WrDat(F128x48[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x,y+1);
- for(wm = 0;wm <128;wm++)
- {
- OLED_WrDat(F128x48[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x , y+2);
- for(wm = 0;wm < 128;wm++)
- {
- OLED_WrDat(F128x48[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x,y+3 );
- for(wm = 0;wm <128;wm++)
- {
- OLED_WrDat(F128x48[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x,y+4 );
- for(wm = 0;wm <128;wm++)
- {
- OLED_WrDat(F128x48[adder]);
- adder += 1;
- }
- OLED_Set_Pos(x,y+5 );
- for(wm = 0;wm <128;wm++)
- {
- OLED_WrDat(F128x48[adder]);
- adder += 1;
- }
- }
- // IIC協議 OLED屏 人機界面
- void lnterface(void) //人機界面
- {
-
- Status_Bar();
- switch(Page_Sgin)
- {
- case 0:
- Main_Menu(); break;
- case 2:
- Menu_2(); break;
- case 3:
- Menu_3();break;
-
-
- default : break;
- }
-
- }
- //主菜單
- void Main_Menu(void)
- {
- WhenTheDisplay(); //顯示時分秒
- DayAndDayDisplay(); //顯示年月日
- OLED_P16x16Ch(0*16,6,11); //顯示 //菜
- OLED_P16x16Ch(1*16,6,12); //顯示 //單
- OLED_P16x16Ch(6*16,6,13); //顯示 //退
- OLED_P16x16Ch(7*16,6,14); //顯示 //出
- if(KEY_Scan(Key_Selectio)==Determine_Choice)//判斷是否按下確定按鍵
- {
- Page_Sgin=2; //頁面選擇置2
- OLED_P128x48Ch(0,2,0); //清除內容欄
- }
- }
- void Menu_2(void)
- {
- if(Choice==2||Choice==4||Choice==6)
- {
- OLED_P16x16Ch(0*16,Choice,44); //選擇
- Display(2,0,0);
-
-
- switch(KEY_Scan(Key_Selectio))
- {
- case Superior_Choice: //上翻
- OLED_P16x16Ch(0*16,Choice,37);
- Choice-=2;
- break;
- case Subordinate_Choice: //下翻
- OLED_P16x16Ch(0*16,Choice,37);
- Choice+=2;
- break;
- case Determine_Choice: //確定
- OLED_P128x48Ch(0,2,0); //清除內容欄
- Page_Sgin=3;Choice=2;
- break;
- case Return_Choice: //返回
- OLED_P128x48Ch(0,2,0);
- Page_Sgin=0;
- break;
- default :
- break;
- }
-
- }
- else if(Choice>6)Choice=2;
- else if(Choice<2)Choice=6;
-
- OLED_ShowNum(6*16,6,Choice/2,1,12);
- OLED_P6x8Str(6.5*16,7,"/");
- OLED_P6x8Str(7*16,7,"10");
- }
- void Menu_3(void)
- {
- if(Choice==2||Choice==4||Choice==6)
- {
- OLED_P16x16Ch(0*16,Choice,44); //選擇
- Display(2,0,0);
-
- switch(KEY_Scan(Key_Selectio))
- {
- case Superior_Choice: //上翻
- OLED_P16x16Ch(0*16,Choice,37);
- Choice-=2;
- break;
- case Subordinate_Choice: //下翻
- OLED_P16x16Ch(0*16,Choice,37);
- Choice+=2;
- break;
- case Determine_Choice: //確定
- OLED_P128x48Ch(0,2,0); //清除內容欄
- Page_Sgin=3;Choice=2;
- break;
- case Return_Choice: //返回
- OLED_P128x48Ch(0,2,0);
- Page_Sgin=2;Choice=2;
- break;
- default :
- break;
- }
-
- }
- else if(Choice>6)Choice=2;
- else if(Choice<2)Choice=6;
-
- OLED_ShowNum(6*16,6,Choice/2,1,12);
- OLED_P6x8Str(6.5*16,7,"/");
- OLED_P6x8Str(7*16,7,"10");
- }
-
復制代碼
所有資料51hei提供下載:
PCtoLCD2002完美版.rar
(702.05 KB, 下載次數: 480)
2018-4-22 14:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
IIC驅動0.96寸OLED顯示實驗.rar
(313.56 KB, 下載次數: 1607)
2018-4-22 14:09 上傳
點擊文件名下載附件
程序還需要進一步完善 下載積分: 黑幣 -5
|