找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 41447|回复: 81
打印 上一主题 下一主题
收起左侧

基于STM32驱动IIC0.96寸OLED屏 底层驱动+菜单程序源码

  [复制链接]
跳转到指定楼层
楼主
本文针对IIC OLED屏底层驱动相关代码
16X32,32X32,128X48等下面附带相关实物图
内置简单的菜单程序,下面附带实物图
相关资料已经上传



stm32单片机OLED菜单源程序如下:
  1. #define OLED_IIC_SCL  PBout(4) //SCL   串行时钟
  2. #define OLED_IIC_SDA  PBout(3) //SDA  串行数据

  3. }
  4. void OLED_P16x32Ch(unsigned char x,unsigned char y,unsigned int N)
  5. {
  6.         unsigned char wm=0;
  7.         unsigned int adder=64*N;
  8.         OLED_Set_Pos(x , y);
  9.         for(wm = 0;wm < 16;wm++)
  10.         {
  11.                 OLED_WrDat(F16x32[adder]);
  12.                 adder += 1;
  13.         }
  14.         OLED_Set_Pos(x,y+1 );
  15.         for(wm = 0;wm <16;wm++)
  16.         {
  17.                 OLED_WrDat(F16x32[adder]);
  18.                 adder += 1;
  19.         }
  20. OLED_Set_Pos(x , y+2);
  21.         for(wm = 0;wm < 16;wm++)
  22.         {
  23.                 OLED_WrDat(F16x32[adder]);
  24.                 adder += 1;
  25.         }
  26.         OLED_Set_Pos(x,y+3 );
  27.         for(wm = 0;wm <16;wm++)
  28.         {
  29.                 OLED_WrDat(F16x32[adder]);
  30.                 adder += 1;
  31.         }                        
  32. }
  33. void OLED_P32x32Ch(unsigned char x,unsigned char y,unsigned int N)
  34. {
  35.         unsigned char wm=0;
  36.         unsigned int adder=128*N;
  37.         OLED_Set_Pos(x , y);
  38.         for(wm = 0;wm < 32;wm++)
  39.         {
  40.                 OLED_WrDat(F32x32[adder]);
  41.                 adder += 1;
  42.         }
  43.         OLED_Set_Pos(x,y+1 );
  44.         for(wm = 0;wm <32;wm++)
  45.         {
  46.                 OLED_WrDat(F32x32[adder]);
  47.                 adder += 1;
  48.         }
  49. OLED_Set_Pos(x , y+2);
  50.         for(wm = 0;wm < 32;wm++)
  51.         {
  52.                 OLED_WrDat(F32x32[adder]);
  53.                 adder += 1;
  54.         }
  55.         OLED_Set_Pos(x,y+3 );
  56.         for(wm = 0;wm <32;wm++)
  57.         {
  58.                 OLED_WrDat(F32x32[adder]);
  59.                 adder += 1;
  60.         }                        
  61. }
  62. void OLED_P128x48Ch(unsigned char x,unsigned char y,unsigned int N)
  63. {
  64.         unsigned char wm=0;
  65.         unsigned int adder=768*N;
  66.         OLED_Set_Pos(x , y);
  67.         for(wm = 0;wm < 128;wm++)
  68.         {
  69.                 OLED_WrDat(F128x48[adder]);
  70.                 adder += 1;
  71.         }
  72.         OLED_Set_Pos(x,y+1);
  73.         for(wm = 0;wm <128;wm++)
  74.         {
  75.                 OLED_WrDat(F128x48[adder]);
  76.                 adder += 1;
  77.         }
  78. OLED_Set_Pos(x , y+2);
  79.         for(wm = 0;wm < 128;wm++)
  80.         {
  81.                 OLED_WrDat(F128x48[adder]);
  82.                 adder += 1;
  83.         }
  84. OLED_Set_Pos(x,y+3 );
  85.         for(wm = 0;wm <128;wm++)
  86.         {
  87.                 OLED_WrDat(F128x48[adder]);
  88.                 adder += 1;
  89.         }  
  90. OLED_Set_Pos(x,y+4 );
  91.         for(wm = 0;wm <128;wm++)
  92.         {
  93.                 OLED_WrDat(F128x48[adder]);
  94.                 adder += 1;
  95.         }
  96. OLED_Set_Pos(x,y+5 );
  97.         for(wm = 0;wm <128;wm++)
  98.         {
  99.                 OLED_WrDat(F128x48[adder]);
  100.                 adder += 1;
  101.         }         
  102. }



  103. //  IIC协议    OLED屏 人机界面
  104. void lnterface(void)                          //人机界面
  105. {
  106.       
  107.         Status_Bar();                              
  108.         switch(Page_Sgin)      
  109.         {               
  110.                 case 0:
  111.                              Main_Menu(); break;
  112.                 case 2:
  113.                              Menu_2(); break;
  114.                 case 3:
  115.                              Menu_3();break;
  116.                
  117.                
  118.                 default : break;
  119.         }
  120.       
  121. }


  122. //主菜单
  123. void Main_Menu(void)
  124. {
  125.   WhenTheDisplay();                             //显示时分秒
  126.         DayAndDayDisplay();                         //显示年月日
  127.         OLED_P16x16Ch(0*16,6,11);                   //显示 //菜
  128.         OLED_P16x16Ch(1*16,6,12);                   //显示 //单
  129.         OLED_P16x16Ch(6*16,6,13);                   //显示 //退      
  130.         OLED_P16x16Ch(7*16,6,14);                   //显示 //出
  131.         if(KEY_Scan(Key_Selectio)==Determine_Choice)//判断是否按下确定按键
  132.         {                           
  133.                 Page_Sgin=2;                              //页面选择置2
  134.                 OLED_P128x48Ch(0,2,0);                    //清除内容栏
  135.         }
  136. }

  137. void Menu_2(void)
  138. {
  139.         if(Choice==2||Choice==4||Choice==6)      
  140.         {

  141.                 OLED_P16x16Ch(0*16,Choice,44);              //选择
  142.                 Display(2,0,0);
  143.                
  144.                
  145.                 switch(KEY_Scan(Key_Selectio))      
  146.                 {               
  147.                         case Superior_Choice:                     //上翻
  148.                                    OLED_P16x16Ch(0*16,Choice,37);
  149.                                    Choice-=2;
  150.                                    break;
  151.                         case Subordinate_Choice:                  //下翻
  152.                                    OLED_P16x16Ch(0*16,Choice,37);
  153.                                    Choice+=2;
  154.                                    break;
  155.                         case Determine_Choice:                    //确定
  156.                                    OLED_P128x48Ch(0,2,0);               //清除内容栏
  157.                              Page_Sgin=3;Choice=2;
  158.                                    break;
  159.                         case Return_Choice:                       //返回
  160.                                    OLED_P128x48Ch(0,2,0);
  161.                                    Page_Sgin=0;   
  162.                              break;
  163.                         default :
  164.                                    break;
  165.                 }
  166.                
  167.         }      
  168.         else if(Choice>6)Choice=2;
  169.         else if(Choice<2)Choice=6;
  170.       
  171.         OLED_ShowNum(6*16,6,Choice/2,1,12);
  172.         OLED_P6x8Str(6.5*16,7,"/");
  173.         OLED_P6x8Str(7*16,7,"10");         
  174. }
  175. void Menu_3(void)
  176. {
  177.         if(Choice==2||Choice==4||Choice==6)      
  178.         {
  179.                 OLED_P16x16Ch(0*16,Choice,44);              //选择
  180.                 Display(2,0,0);
  181.                
  182.                 switch(KEY_Scan(Key_Selectio))      
  183.                 {               
  184.                         case Superior_Choice:                     //上翻
  185.                                    OLED_P16x16Ch(0*16,Choice,37);
  186.                                    Choice-=2;
  187.                                    break;
  188.                         case Subordinate_Choice:                  //下翻
  189.                                    OLED_P16x16Ch(0*16,Choice,37);
  190.                                    Choice+=2;
  191.                                    break;
  192.                         case Determine_Choice:                    //确定
  193.                                    OLED_P128x48Ch(0,2,0);               //清除内容栏
  194.                              Page_Sgin=3;Choice=2;
  195.                                    break;
  196.                         case Return_Choice:                       //返回
  197.                                    OLED_P128x48Ch(0,2,0);
  198.                                    Page_Sgin=2;Choice=2;  
  199.                              break;
  200.                         default :
  201.                                    break;
  202.                 }
  203.                
  204.         }      
  205.         else if(Choice>6)Choice=2;
  206.         else if(Choice<2)Choice=6;
  207.       
  208.         OLED_ShowNum(6*16,6,Choice/2,1,12);
  209.         OLED_P6x8Str(6.5*16,7,"/");
  210.         OLED_P6x8Str(7*16,7,"10");         
  211. }
  212.         
复制代码

所有资料51hei提供下载:
PCtoLCD2002完美版.rar (702.05 KB, 下载次数: 480)
IIC驱动0.96寸OLED显示实验.rar (313.56 KB, 下载次数: 1607)



        
        
        

评分

参与人数 2黑币 +62 收起 理由
等风来, + 12
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏43 分享淘帖 顶3 踩
回复

使用道具 举报

无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
102#
ID:138205 发表于 2022-1-6 19:57 | 只看该作者
确实想学习液晶,参考一下程序
回复

使用道具 举报

101#
ID:999091 发表于 2022-1-3 21:49 | 只看该作者
很好的一个例程,学到很多
回复

使用道具 举报

无效楼层,该帖已经被删除
99#
无效楼层,该帖已经被删除
98#
无效楼层,该帖已经被删除
97#
ID:530647 发表于 2021-5-15 01:06 | 只看该作者
打开只有楼主的的QQ,没看到上面那些功能呢。是要改掉注释吗
回复

使用道具 举报

96#
无效楼层,该帖已经被删除
95#
无效楼层,该帖已经被删除
94#
ID:836558 发表于 2020-11-5 17:05 | 只看该作者
学习下,跑跑看看
回复

使用道具 举报

93#
无效楼层,该帖已经被删除
92#
无效楼层,该帖已经被删除
91#
无效楼层,该帖已经被删除
90#
无效楼层,该帖已经被删除
89#
ID:286070 发表于 2020-6-2 23:03 | 只看该作者

谢谢分享,不错资料
回复

使用道具 举报

88#
无效楼层,该帖已经被删除
87#
ID:734331 发表于 2020-4-25 16:56 | 只看该作者
不错的资料,点赞
回复

使用道具 举报

86#
ID:297681 发表于 2020-4-24 17:55 | 只看该作者
你的电量,信号,蓝牙显示是怎么通过PC2002生成的?字符模式还是图片模式?
回复

使用道具 举报

85#
ID:333080 发表于 2020-4-14 10:39 | 只看该作者
不错的资料,点赞
回复

使用道具 举报

84#
无效楼层,该帖已经被删除
83#
ID:433638 发表于 2020-3-20 18:39 | 只看该作者
感谢分享
回复

使用道具 举报

82#
ID:707419 发表于 2020-3-13 04:20 | 只看该作者
不错,不错,很想看看
回复

使用道具 举报

81#
ID:690948 发表于 2020-3-10 23:58 来自手机 | 只看该作者
不错,学习了
回复

使用道具 举报

80#
ID:681572 发表于 2020-3-10 15:58 | 只看该作者
下下来看看,感觉就是那个模块附赠的示例程序啊,不过还是感谢分享了!
回复

使用道具 举报

79#
ID:687070 发表于 2020-1-18 08:16 | 只看该作者
谢谢分享,值得学习
回复

使用道具 举报

78#
ID:253961 发表于 2020-1-17 18:35 | 只看该作者
还需要配置其他东西吗
回复

使用道具 举报

77#
ID:544005 发表于 2020-1-13 11:36 | 只看该作者
正好需要啊,可是没黑币了!!!
回复

使用道具 举报

76#
ID:478762 发表于 2020-1-5 11:42 | 只看该作者
NICE,楼主
回复

使用道具 举报

75#
ID:460337 发表于 2019-12-26 09:37 | 只看该作者
感谢搂主,学习学习
回复

使用道具 举报

74#
无效楼层,该帖已经被删除
73#
ID:601242 发表于 2019-12-25 21:06 | 只看该作者
感谢 很详细 帮助很大
回复

使用道具 举报

72#
ID:223535 发表于 2019-12-25 17:33 | 只看该作者
刚好需要,参考参考
回复

使用道具 举报

71#
ID:223535 发表于 2019-12-25 16:36 | 只看该作者
谢谢分享,不错资料
回复

使用道具 举报

70#
ID:32596 发表于 2019-11-29 15:34 | 只看该作者
感谢搂主,学习学习
回复

使用道具 举报

69#
ID:368701 发表于 2019-11-27 00:54 来自手机 | 只看该作者
终于找到你
回复

使用道具 举报

68#
ID:615392 发表于 2019-9-23 20:38 | 只看该作者
非常不错的程序,值得看看
回复

使用道具 举报

67#
ID:611025 发表于 2019-9-12 18:16 | 只看该作者
哪里下载
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表