本文针对IIC OLED屏底层驱动相关代码
16X32,32X32,128X48等下面附带相关实物图
内置简单的菜单程序,下面附带实物图
相关资料已经上传
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)
IIC驱动0.96寸OLED显示实验.rar
(313.56 KB, 下载次数: 1607)
|