久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18576|回復: 15
打印 上一主題 下一主題
收起左側

51單片機的OLED顯示程序

  [復制鏈接]
跳轉到指定樓層
樓主
51的OLED顯示

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>

  3. #define  u8 unsigned char
  4. #define  u32 unsigned int
  5. #define OLED_CMD  0        //寫命令
  6. #define OLED_DATA 1        //寫數據
  7. #define OLED_MODE 0

  8. #define OLED_CS_Clr()  OLED_CS=0
  9. #define OLED_CS_Set()  OLED_CS=1

  10. #define OLED_RST_Clr() OLED_RST=0
  11. #define OLED_RST_Set() OLED_RST=1

  12. #define OLED_DC_Clr() OLED_DC=0
  13. #define OLED_DC_Set() OLED_DC=1

  14. #define OLED_SCLK_Clr() OLED_SCL=0
  15. #define OLED_SCLK_Set() OLED_SCL=1

  16. #define OLED_SDIN_Clr() OLED_SDIN=0
  17. #define OLED_SDIN_Set() OLED_SDIN=1;

  18. #define SIZE 16
  19. #define XLevelL                0x02
  20. #define XLevelH                0x10
  21. #define Max_Column        128
  22. #define Max_Row                64
  23. #define        Brightness        0xFF
  24. #define X_WIDTH         128
  25. #define Y_WIDTH         64       

  26. sbit OLED_CS=P1^4; //片選
  27. sbit OLED_RST =P1^2;//復位
  28. sbit OLED_DC =P1^3;//數據/命令控制
  29. sbit OLED_SCL=P1^0;//時鐘 D0(SCLK?
  30. sbit OLED_SDIN=P1^1;//D1(MOSI) 數據

  31. unsigned char code Hzk[][32]={

  32. {0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00},
  33. {0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00},/*"電",0*/

  34. {0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00},
  35. {0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00},/*"機",1*/

  36. {0x00,0x08,0x30,0x00,0xFF,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x22,0x2C,0x20,0x00},
  37. {0x04,0x04,0x02,0x01,0xFF,0x80,0x40,0x30,0x0E,0x01,0x06,0x18,0x20,0x40,0x80,0x00},/*"狀",2*/

  38. {0x00,0x04,0x84,0x84,0x44,0x24,0x54,0x8F,0x14,0x24,0x44,0x84,0x84,0x04,0x00,0x00},
  39. {0x41,0x39,0x00,0x00,0x3C,0x40,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00},/*"態",3*/

  40. {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  41. {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*":",4*/

  42. {0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,0x00},
  43. {0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00},/*"正",5*/

  44. {0xC8,0xB8,0x8F,0xE8,0x88,0x88,0x40,0x48,0x48,0xE8,0x5F,0x48,0x48,0x48,0x40,0x00},
  45. {0x08,0x18,0x08,0xFF,0x04,0x04,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0A,0x06,0x00,0x00},/*"轉",6*/

  46. {0x00,0x00,0xFC,0x24,0x24,0xE4,0x24,0x24,0x22,0x22,0x22,0xA3,0x62,0x00,0x00,0x00},
  47. {0x40,0x30,0x8F,0x80,0x40,0x40,0x23,0x14,0x08,0x14,0x22,0x41,0x40,0x80,0x80,0x00},/*"反",7*/

  48. };

  49. void delay_ms(unsigned int ms)
  50. {                        
  51.         unsigned int a;
  52.         while(ms)
  53.         {
  54.                 a=1800;
  55.                 while(a--);
  56.                 ms--;
  57.         }
  58.         return;
  59. }

  60. void OLED_WR_Byte(u8 dat,u8 cmd)
  61. {       
  62.         u8 i;                          
  63.         if(cmd)
  64.           OLED_DC_Set();
  65.         else
  66.           OLED_DC_Clr();                  
  67.         OLED_CS_Clr();
  68.         for(i=0;i<8;i++)
  69.         {                          
  70.                 OLED_SCLK_Clr();
  71.                 if(dat&0x80)
  72.                         {
  73.                    OLED_SDIN_Set();
  74.                         }
  75. else
  76.                    OLED_SDIN_Clr();
  77.                                 OLED_SCLK_Set();
  78.                 dat<<=1;   
  79.         }                                                   
  80.         OLED_CS_Set();
  81.         OLED_DC_Set();             
  82. }

  83. void OLED_Clear(void)  
  84. {  
  85.         u8 i,n;                    
  86.         for(i=0;i<8;i++)  
  87.         {  
  88.                 OLED_WR_Byte (0xb0+i,OLED_CMD);    //設置頁地址(0~7)
  89.                 OLED_WR_Byte (0x00,OLED_CMD);      //設置顯示位置—列低地址
  90.                 OLED_WR_Byte (0x10,OLED_CMD);      //設置顯示位置—列高地址   
  91.                 for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA);
  92.         } //更新顯示
  93. }

  94. void OLED_Set_Pos(unsigned char x, unsigned char y)
  95. {
  96.         OLED_WR_Byte(0xb0+y,OLED_CMD);
  97.         OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
  98.         OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD);
  99. }   

  100. void OLED_ShowCHinese(u8 x,u8 y,u8 no)
  101. {                                  
  102.         u8 t,adder=0;
  103.         OLED_Set_Pos(x,y);       
  104.     for(t=0;t<16;t++)
  105.                 {
  106.                                 OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
  107.                                 adder+=1;
  108.      }       
  109.                 OLED_Set_Pos(x,y+1);       
  110.     for(t=0;t<16;t++)
  111.                         {       
  112.                                 OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
  113.                                 adder+=1;
  114.       }                                       
  115. }

  116. void OLED_Init(void)
  117. {
  118.     OLED_RST_Set();
  119.         delay_ms(100);
  120.         OLED_RST_Clr();
  121.         delay_ms(100);
  122.         OLED_RST_Set();
  123.         OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel
  124.         OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
  125.         OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
  126.         OLED_WR_Byte(0x40,OLED_CMD);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
  127.         OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register
  128.         OLED_WR_Byte(0xCF,OLED_CMD); // Set SEG Output Current Brightness
  129.         OLED_WR_Byte(0xA1,OLED_CMD);//--Set SEG/Column Mapping     0xa0左右反置 0xa1正常
  130.         OLED_WR_Byte(0xC8,OLED_CMD);//Set COM/Row Scan Direction   0xc0上下反置 0xc8正常
  131.         OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display
  132.         OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
  133.         OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
  134.         OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset        Shift Mapping RAM Counter (0x00~0x3F)
  135.         OLED_WR_Byte(0x00,OLED_CMD);//-not offset
  136.         OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency
  137.         OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
  138.         OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period
  139.         OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
  140.         OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration
  141.         OLED_WR_Byte(0x12,OLED_CMD);
  142.         OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh
  143.         OLED_WR_Byte(0x40,OLED_CMD);//Set VCOM Deselect Level
  144.         OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
  145.         OLED_WR_Byte(0x02,OLED_CMD);//
  146.         OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
  147.         OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
  148.         OLED_WR_Byte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)
  149.         OLED_WR_Byte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7)
  150.         OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
  151.        
  152.         OLED_WR_Byte(0xAF,OLED_CMD); /*display ON*/
  153.         OLED_Clear();
  154.         OLED_Set_Pos(0,0);        
  155. }

  156. void oled()
  157. {
  158.         OLED_ShowCHinese(0,3,0);//電
  159.         OLED_ShowCHinese(18,3,1);//機
  160.         OLED_ShowCHinese(36,3,2);//狀
  161.         OLED_ShowCHinese(54,3,3);//態
  162.         OLED_ShowCHinese(72,3,4);//:
  163.         OLED_ShowCHinese(90,3,5);//:
  164.         OLED_ShowCHinese(108,3,6);//轉
  165. }

  166. void oled1()
  167. {
  168.         OLED_ShowCHinese(0,4,0);//電
  169.         OLED_ShowCHinese(18,4,1);//機
  170.         OLED_ShowCHinese(36,4,2);//狀
  171.         OLED_ShowCHinese(54,4,3);//態
  172.         OLED_ShowCHinese(72,4,4);//:
  173.         OLED_ShowCHinese(90,4,7);//:
  174.         OLED_ShowCHinese(108,4,6);//轉
  175. }

  176. void main()
  177. {
  178.   OLED_Init();
  179.   OLED_Clear();
  180.   oled();
  181.   delay_ms(500);
  182.   OLED_Clear();
  183.   oled1();
  184.   while(1);
  185. }
復制代碼

所有資料51hei提供下載:
oled顯示.zip (26.32 KB, 下載次數: 254)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:470858 發表于 2019-1-24 23:26 | 只看該作者
太感謝啦!!!!!!!小白終于找到完整適用的代碼了。。
回復

使用道具 舉報

板凳
ID:470858 發表于 2019-1-24 23:27 | 只看該作者
太感謝啦!本小白終于找到完整的代碼了。
回復

使用道具 舉報

地板
ID:470858 發表于 2019-1-24 23:27 | 只看該作者
太感謝啦!這就是我要的完整代碼耶。本小萌新親測實用。
回復

使用道具 舉報

5#
ID:348543 發表于 2019-4-2 08:36 | 只看該作者
剛好需要,拿來試試!
回復

使用道具 舉報

6#
ID:526576 發表于 2019-5-3 22:14 | 只看該作者
好多函數不知道具體作用,,,
回復

使用道具 舉報

7#
ID:526576 發表于 2019-5-5 21:02 | 只看該作者
四接口oled如何初始化呀,,,
回復

使用道具 舉報

8#
ID:98195 發表于 2019-6-5 23:21 來自手機 | 只看該作者
void OLED_Set_Pos(unsigned char x, unsigned char y)  {          OLED_WR_Byte(0xb0+y,OLED_CMD);         OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);         OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD);  }x代表什么啊   
回復

使用道具 舉報

9#
ID:282650 發表于 2019-6-20 21:17 | 只看該作者
感謝這位朋友了!!!非常感謝
回復

使用道具 舉報

10#
ID:648535 發表于 2019-11-28 09:48 | 只看該作者
多謝分享
回復

使用道具 舉報

11#
ID:382699 發表于 2020-1-8 13:22 | 只看該作者
終于找到可以用的51程序了,找了幾天
回復

使用道具 舉報

12#
ID:692971 發表于 2020-2-13 21:47 | 只看該作者
能顯示變量的具體數值嗎
回復

使用道具 舉報

13#
ID:294123 發表于 2020-2-15 22:43 | 只看該作者
我測試過,在我的proteus上可以運行,spi驅動模式的
回復

使用道具 舉報

14#
ID:518223 發表于 2020-3-1 17:32 | 只看該作者
是咋連接的硬件。
回復

使用道具 舉報

15#
ID:342822 發表于 2020-3-1 20:02 | 只看該作者
來個仿真:



回復

使用道具 舉報

16#
ID:1089230 發表于 2023-7-21 16:19 | 只看該作者
explode 發表于 2020-2-13 21:47
能顯示變量的具體數值嗎

我也想問
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成年人在线观看视频 | 精品在线一区 | 国产99久久久国产精品 | 国产精品一区二区三区久久 | 韩三级在线观看 | 日韩欧美在线一区 | 国产精品久久国产精品 | 综合国产 | 久久丁香| 亚洲综合色视频在线观看 | 91国内在线观看 | 精品一区av | 免费精品视频在线观看 | 久久精品国产一区二区三区 | 久久国产精品视频 | 免费黄色特级片 | 亚洲iv一区二区三区 | 一区二区三区国产好的精 | 精品成人一区 | 精品中文字幕一区二区三区 | 亚洲aⅴ精品 | 精品视频免费 | 二区在线观看 | 国产高潮好爽受不了了夜色 | 欧美国产激情 | 午夜成人在线视频 | 射欧美 | 成人免费一区二区三区视频网站 | 午夜电影网 | 精品国产一区二区三区在线观看 | 伊色综合久久之综合久久 | 99精品在线观看 | 成人免费小视频 | 亚洲色图综合 | 国产视频久久久 | jav成人av免费播放 | 国产免费av在线 | 欧美久久一区 | 免费污视频 | www.国产 | 黄色成人亚洲 |