找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6659|回复: 9
收起左侧

OLED 3.12寸 256*64 SSD132的stm32f103单片机驱动程序

  [复制链接]
ID:68129 发表于 2018-8-9 17:37 | 显示全部楼层 |阅读模式
OLED 3.12寸 256*64 驱动程序 stm32f103
0.png 0.png

单片机源程序如下:
  1. /*   
  2. MOD:25664 (dots:256*64)
  3. IC : SSD1322  (加入图片测试功能)
  4. MCU: W78E516D 12MHZ
  5. //============================
  6. 说明:6800:BS0=1,BS1=1;   
  7.              8080:BS0=0,BS1=1;  (默认)
  8.           3-SPI:BS0=1,BS1=0;
  9.           4-SPI:BS0=0,BS1=0;
  10. */
  11. /* 接口定义:
  12. 1.  VSS--------------GND
  13. 2.  VDD--------------+3.3V
  14. 3.  NC
  15. 4.  DB0--------------P1.0
  16. 5.  DB1--------------P1.1
  17. 6.  DB2--------------P1.2
  18. 7.  DB3--------------P1.3
  19. 8.  DB4--------------P1.4
  20. 9.  DB5--------------P1.5
  21. 10. DB6--------------P1.6
  22. 11. DB7--------------P1.7
  23. 12. RD/E-------------P3.4
  24. 13. WR---------------P3.3
  25. 14. DC/A0------------P3.2
  26. 15. RST--------------P3.1
  27. 16. CS---------------P3.0
  28. */

  29. #include <reg51.h>
  30. #include <intrins.h>
  31. #define uchar unsigned char
  32. #define xData  P1
  33. #define        Shift                0x1C
  34. uchar data_4byte[4];
  35. void delayus(uchar m);
  36. void delayms(uchar m);
  37. void change        (uchar dat);
  38. void Fill_RAM(unsigned char Data) ;
  39. void send_2bit(unsigned char two_bit_data);
  40. unsigned char code bmp25664_0[];
  41. unsigned char code bmp25664_1[];
  42. void display_graphic_256x64_0();
  43. void display_graphic_256x64_1();
  44. //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  45. //  Global Variables
  46. //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  47. #define        Shift                0x1C
  48. #define Max_Column        0x3F                        // 256/4-1
  49. #define Max_Row                0x3F                        // 64-1
  50. #define        Brightness        0x0F

  51. //#define        SPI
  52. #define        I80
  53. //#define        M68

  54. sbit REST=P3^1;    // Reset
  55. sbit CS=P3^0;    // Chip Select
  56. sbit DC=P3^2;    // Data/Command Control


  57. /*

  58. //6800
  59. sbit RW=P3^3;    // Write Signal
  60. sbit E=P3^4;    // E Signal
  61. */

  62. //8080
  63. sbit _WR=P3^3;    //80
  64. sbit _RD=P3^4;    //80

  65. /*
  66. //SPI
  67. sbit SCLK=P1^0;   //spi
  68. sbit SDIN=P1^1;   //spi
  69. */

  70. uchar code tab88[]={
  71.     0x0e,0x11,0x13,0x15,0x19,0x11,0x0e,0x00,// 0 代码"10"
  72.         0x04,0x0c,0x04,0x04,0x04,0x04,0x0e,0x00,//1 代码"11"
  73.         0x0e,0x11,0x01,0x02,0x04,0x08,0x1f,0x00,//2 代码"12"
  74.         0x1f,0x02,0x04,0x02,0x01,0x11,0x0e,0x00,// 3 代码"13"
  75.         0x02,0x06,0x0a,0x12,0x1f,0x02,0x02,0x00,// 4 代码"14"
  76.         0x1f,0x10,0x1e,0x01,0x01,0x11,0x0e,0x00,// 5 代码"15"
  77.         0x06,0x08,0x10,0x1e,0x11,0x11,0x0e,0x00,// 6 代码"16"
  78.         0x1f,0x01,0x02,0x04,0x04,0x04,0x04,0x00,// 7 代码"17"
  79.         0x0e,0x11,0x11,0x0e,0x11,0x11,0x0e,0x00,// 8 代码"18"
  80.         0x0e,0x11,0x11,0x0e,0x01,0x02,0x0c,0x00,// 9 代码"19"
  81.     0x0e,0x11,0x11,0x11,0x1f,0x11,0x11,0x00,// A 代码"21"
  82.     0x11,0x11,0x11,0x1f,0x11,0x11,0x11,0x00,// H 代码"28"
  83.         0x0e,0x04,0x04,0x04,0x04,0x04,0x0e,0x00,// I 代码"29"
  84.         0x07,0x02,0x02,0x02,0x02,0x12,0x0c,0x00,// J 代码"2A"
  85.         0x11,0x12,0x14,0x18,0x14,0x12,0x11,0x00,// K 代码"2B"
  86.         0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x00,// L 代码"2C"
  87.         0x11,0x1b,0x15,0x11,0x11,0x11,0x11,0x00,// M 代码"2D"
  88.         0x11,0x19,0x19,0x15,0x13,0x13,0x11,0x00,// N 代码"2E"
  89.         0x0e,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,// O 代码"2F"
  90.         0x1e,0x11,0x11,0x1e,0x10,0x10,0x10,0x00,// P 代码"30"
  91.         0x0e,0x11,0x11,0x11,0x15,0x12,0x0b,0x00,// Q 代码"31"
  92.         0x1e,0x11,0x11,0x1e,0x14,0x12,0x11,0x00,//R 代码"32"
  93.         0x0e,0x11,0x10,0x0e,0x01,0x11,0x0e,0x00,// S 代码"33"
  94.         0x1f,0x04,0x04,0x04,0x04,0x04,0x04,0x00,// T 代码"34"
  95.         0x11,0x11,0x11,0x11,0x11,0x11,0x0e,0x00,// U 代码"35"
  96.         0x11,0x11,0x11,0x11,0x11,0x0a,0x04,0x00,// V 代码"36"
  97.         0x11,0x11,0x11,0x15,0x15,0x1b,0x11,0x00,// W 代码"37"
  98.         0x11,0x11,0x0a,0x04,0x0a,0x11,0x11,0x00,// X 代码"38"
  99.         0x11,0x11,0x11,0x0a,0x04,0x04,0x04,0x00,// Y 代码"39"
  100.         0x1f,0x01,0x02,0x04,0x08,0x10,0x1f,0x00,// Z 代码"3A"
  101.         0x0e,0x08,0x08,0x08,0x08,0x08,0x0e,0x00,// [ 代码"3B"
  102.         0x00,0x10,0x08,0x04,0x02,0x01,0x00,0x00,// \ 代码"3C"
  103.         0x0e,0x02,0x02,0x02,0x02,0x02,0x0e,0x00,// ] 代码"3D"
  104.         0x04,0x0a,0x11,0x00,0x00,0x00,0x00,0x00,// ^ 代码"3E"
  105.         0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,// _ 代码"3F"
  106.         0x10,0x08,0x04,0x00,0x00,0x00,0x00,0x00,// ` 代码"40"
  107.         0x00,0x00,0x0e,0x01,0x0f,0x11,0x0f,0x00,// a 代码"41"
  108.         0x10,0x10,0x16,0x19,0x11,0x11,0x1e,0x00,// b 代码"42"
  109.         0x00,0x00,0x0e,0x11,0x10,0x11,0x0e,0x00,// c 代码"43"
  110.         0x01,0x01,0x0d,0x13,0x11,0x11,0x0f,0x00,// d 代码"44"
  111.         0x00,0x00,0x0e,0x11,0x1f,0x10,0x0e,0x00,// e 代码"45"
  112.         0x02,0x05,0x04,0x0e,0x04,0x04,0x04,0x00,// f 代码"46"
  113.         0x00,0x0d,0x13,0x13,0x0d,0x01,0x0e,0x00,// g 代码"47"
  114.         0x10,0x10,0x16,0x19,0x11,0x11,0x11,0x00,// h 代码"48"
  115.         0x04,0x00,0x0c,0x04,0x04,0x04,0x0e,0x00,// i 代码"49"
  116.         0x02,0x00,0x06,0x02,0x02,0x12,0x0c,0x00,// j 代码"4A"
  117.         0x08,0x08,0x09,0x0a,0x0c,0x0a,0x09,0x00,//k 代码"4B"
  118.         0x0c,0x04,0x04,0x04,0x04,0x04,0x0e,0x00,// l 代码"4C"
  119.         0x00,0x00,0x1a,0x15,0x15,0x15,0x15,0x00,// m 代码"4D"
  120.         0x00,0x00,0x16,0x19,0x11,0x11,0x11,0x00,// n 代码"4E"
  121.         0x00,0x00,0x0e,0x11,0x11,0x11,0x0e,0x00,// o 代码"4F"
  122.         0x00,0x16,0x19,0x19,0x16,0x10,0x10,0x00,// p 代码"50"
  123.         0x00,0x0d,0x13,0x13,0x0d,0x01,0x01,0x00,// q 代码"51"
  124.         0x00,0x00,0x16,0x19,0x10,0x10,0x10,0x00,// r 代码"52"
  125.         0x00,0x00,0x0f,0x10,0x1e,0x01,0x1f,0x00,// s 代码"53"
  126.         0x08,0x08,0x1c,0x08,0x08,0x09,0x06,0x00,// t 代码"54"
  127.         0x00,0x00,0x12,0x12,0x12,0x12,0x0d,0x00,// u 代码"55"
  128.         0x00,0x00,0x11,0x11,0x11,0x0a,0x04,0x00,// v 代码"56"
  129.         0x00,0x00,0x11,0x11,0x15,0x15,0x0a,0x00,// w 代码"57"
  130.         0x00,0x00,0x11,0x0a,0x04,0x0a,0x11,0x00,// x 代码"58"
  131.         0x00,0x00,0x11,0x11,0x13,0x0d,0x01,0x0e,// y 代码"59"

  132. };
  133. uchar code tab816[160]={
  134. /*--  文字:  Q --*/
  135. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  136. 0x00,0x00,0x00,0xEE,0x44,0x44,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,

  137. /*--  文字: T  --*/
  138. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  139. 0x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x78,0x44,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,

  140. /*--  文字:  S  --*/
  141. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
  142. 0x00,0x00,0x00,0x3E,0x42,0x42,0x40,0x20,0x18,0x04,0x02,0x42,0x42,0x7C,0x00,0x00,
  143. /*--  文字:  2  --*/
  144. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
  145. 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,
  146. /*--  文字:  5  --*/
  147. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
  148. 0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
  149. /*--  文字:  6  --*/
  150. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
  151. 0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
  152. /*--  文字:  X  --*/
  153. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
  154. 0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00,
  155. /*--  文字:  6  --*/
  156. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
  157. 0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
  158. /*--  文字:  4  --*/
  159. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
  160. 0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,
  161. /*--  文字:  1  --*/
  162. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
  163. 0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,

  164. };
  165. uchar code tab1616[]={
  166. /* 点阵:16x16
  167.    提取点阵方向:横向取模(先左->右, 再上->下)
  168.    字节掉转:否
  169.    字节方式:C语言 */
  170. //===================================
  171. /*--  文字:  深  --*/
  172. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  173. 0x00,0x00,0x7F,0xFC,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x44,0x44,0x24,0x44,
  174. 0x24,0x48,0x14,0x48,0x14,0x50,0x04,0x40,0x04,0x40,0x04,0x40,0xFF,0xFE,0x00,0x00,

  175. /*--  文字:  圳  --*/
  176. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  177. 0x00,0x10,0x20,0x14,0x11,0xD2,0x00,0x12,0xFC,0x10,0x0B,0xFE,0x08,0x10,0x48,0x90,
  178. 0x28,0x90,0x12,0xD0,0x12,0x90,0x2A,0x90,0x2A,0x8A,0x4A,0xEA,0x87,0x06,0x02,0x02,

  179. /*--  文字:  秦 --*/
  180. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  181. 0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,
  182. 0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE,

  183. /*--  文字:  唐  --*/
  184. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  185. 0x00,0x00,0x7F,0xF8,0x00,0x10,0x00,0x20,0x00,0x40,0x01,0x80,0x01,0x00,0xFF,0xFE,
  186. 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,

  187. /*--  文字:  科  --*/
  188. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  189. 0x08,0x10,0x1D,0x10,0xF0,0x90,0x10,0x90,0x10,0x10,0xFD,0x10,0x10,0x90,0x38,0x90,
  190. 0x34,0x10,0x50,0x1E,0x53,0xF0,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,

  191. /*--  文字:  技  --*/
  192. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  193. 0x10,0x20,0x10,0x20,0x10,0x20,0x13,0xFE,0xFC,0x20,0x10,0x20,0x10,0x20,0x15,0xFC,
  194. 0x18,0x84,0x30,0x88,0xD0,0x48,0x10,0x50,0x10,0x20,0x10,0x50,0x51,0x88,0x26,0x06,

  195. /*--  文字:  有  --*/
  196. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  197. 0x02,0x00,0x02,0x00,0xFF,0xFE,0x04,0x00,0x04,0x00,0x0F,0xF0,0x08,0x10,0x18,0x10,
  198. 0x2F,0xF0,0x48,0x10,0x88,0x10,0x0F,0xF0,0x08,0x10,0x08,0x10,0x08,0x50,0x08,0x20,

  199. /*--  文字:  限  --*/
  200. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  201. 0x00,0x00,0x7B,0xF8,0x4A,0x08,0x52,0x08,0x53,0xF8,0x62,0x08,0x52,0x08,0x4B,0xF8,
  202. 0x4A,0x44,0x4A,0x48,0x6A,0x30,0x52,0x20,0x42,0x10,0x42,0x88,0x43,0x06,0x42,0x00,

  203. /*--  文字:  公  --*/
  204. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  205. 0x00,0x80,0x04,0x80,0x04,0x80,0x08,0x40,0x08,0x40,0x10,0x20,0x20,0x10,0x42,0x08,
  206. 0x82,0x06,0x04,0x00,0x04,0x40,0x08,0x20,0x10,0x20,0x3F,0xF0,0x10,0x10,0x00,0x00,

  207. /*--  文字:  司  --*/
  208. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  209. 0x00,0x00,0x3F,0xF8,0x00,0x08,0x00,0x08,0x7F,0xE8,0x00,0x08,0x00,0x08,0x1F,0x88,
  210. 0x10,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x1F,0x88,0x10,0x88,0x00,0x28,0x00,0x10,


  211. };

  212. /*********************
  213. 延时子程序
  214. ********************/
  215. void delayus(uchar m)
  216. {
  217. while(--m);
  218. }
  219. void delayms(uchar m)
  220. {
  221. uchar i,j;
  222. for(i=0;i<102;i++)
  223. for(j=0;j<m;j++)
  224. delayus(1);
  225. }
  226. void delay(uchar m)
  227. {
  228. uchar i,j;
  229. for(i=0;i<100;i++)
  230. for(j=0;j<m;j++)
  231. delayms(1);
  232. }

  233. #ifdef M68
  234. void Write_cmd(unsigned char Data) //68XX方式写指令子程序
  235. {       DC=0;
  236.         CS=0;
  237.         RW=0;
  238.         xData=Data;
  239.         E=1;
  240.         _nop_();
  241.         _nop_();
  242.         E=0;
  243.         RW=1;
  244.         CS=1;
  245.         DC=1;
  246. }

  247. void Write_dat(unsigned char Data) //68XX方式写数据子程序
  248. {        DC=1;
  249.          CS=0;
  250.         RW=0;
  251.         xData=Data;
  252.          E=1;
  253.         _nop_();
  254.         _nop_();
  255.         E=0;
  256.         RW=1;
  257.         CS=1;
  258.         DC=1;
  259. }
  260. #endif
  261. #ifdef I80                                        // 8-bit 80XX Parallel
  262. void Write_cmd(unsigned char Data)
  263. {
  264.         DC=0;
  265.         CS=0;
  266.         _WR=0;
  267.         xData=Data;
  268.         _WR=1;
  269.         CS=1;
  270.         DC=1;
  271. }


  272. void Write_dat(unsigned char Data)
  273. {
  274.         DC=1;
  275.         CS=0;
  276.         _WR=0;
  277.         xData=Data;
  278.         _WR=1;
  279.         CS=1;
  280.         DC=1;
  281. }
  282. #endif


  283. #ifdef SPI                                        // 4-wire SPI
  284. void Write_cmd(unsigned char Data)
  285. {
  286. unsigned char i;

  287.         CS=0;
  288.         DC=0;
  289.         for (i=0; i<8; i++)
  290.         {
  291.                 SCLK=0;
  292.                 SDIN=(Data&0x80)>>7;
  293.                 Data = Data << 1;
  294. //                uDelay(1);
  295.                 SCLK=1;
  296. //                uDelay(1);
  297.         }
  298. //        SCLK=0;
  299.         DC=1;
  300.         CS=1;
  301. }


  302. void Write_dat(unsigned char Data)
  303. {
  304. unsigned char i;

  305.         CS=0;
  306.         DC=1;
  307.         for (i=0; i<8; i++)
  308.         {
  309.                 SCLK=0;
  310.                 SDIN=(Data&0x80)>>7;
  311.                 Data = Data << 1;
  312. //                uDelay(1);
  313.                 SCLK=1;
  314. //                uDelay(1);
  315.         }
  316. //        SCLK=0;
  317.         DC=1;
  318.         CS=1;
  319. }
  320. #endif
  321. /********************************************
  322. 行,列,起始地址设定,写入命令定义 一个像素对应4位
  323. ********************************************/
  324. void Set_Column_Address(unsigned char a, unsigned char b)
  325. {
  326.         Write_cmd(0x15);                        // Set Column Address
  327.         Write_dat(a);                                //   Default => 0x00
  328.         Write_dat(b);                                //   Default => 0x77
  329. }


  330. void Set_Row_Address(unsigned char a, unsigned char b)
  331. {
  332.         Write_cmd(0x75);                        // Set Row Address
  333.         Write_dat(a);                                //   Default => 0x00
  334.         Write_dat(b);                                //   Default => 0x7F
  335. }

  336. void Set_Write_RAM()
  337. {
  338.         Write_cmd(0x5C);                        // Enable MCU to Write into RAM
  339. }

  340. void Set_Remap_Format(unsigned char d)
  341. {
  342.         Write_cmd(0xA0);                        // Set Re-Map / Dual COM Line Mode
  343.         Write_dat(d);                                //   Default => 0x40
  344.         Write_dat(0x11);                        //   Default => 0x01 (Disable Dual COM Mode)
  345. }

  346. /* ***********************************
  347. //初始化程序
  348. ***************************************/
  349. void Initial (void)
  350. {
  351.    
  352.         Write_cmd(0xFD);
  353.         Write_dat(0x12);  //打开MCU通信

  354.         Set_Column_Address(0x1c,0x5b);           //256列
  355.         Set_Row_Address(0x00,0x3f);                 //64行

  356.         Write_cmd(0xAE);  //开休眠

  357.         Write_cmd(0xB3);  ///驱动和振荡时钟
  358.         Write_dat(0x91);

  359.         Write_cmd(0xCA); ///设定MUX占空比
  360.         Write_dat(0x3F);

  361.         Write_cmd(0xA2);
  362.         Write_dat(0x00); //卷动地址

  363.         Write_cmd(0xA1);
  364.         Write_dat(0x00); //起始行

  365.     Write_cmd(0xA6);          //正常显示

  366.         Write_cmd(0xA0);
  367.         Write_dat(0x14);
  368.         Write_dat(0x11);  //扫描方向

  369.         Write_cmd(0xB5); ///set gpio
  370.         Write_dat(0x00);

  371.         Write_cmd(0xAB);
  372.         Write_dat(0x01); //内部调节电压

  373.         Write_cmd(0xB4); ///加深显示Display Enhancement a
  374.         Write_dat(0xA0);
  375.         Write_dat(0xfd);   //0xb5

  376.         Write_cmd(0xC1); ///Set Contrast Current
  377.         Write_dat(0xaf); //9f

  378.         Write_cmd(0xC7);  //Master Contrast        Current Control
  379.         Write_dat(0x0F);

  380.         Write_cmd(0xb8);  //灰模
  381.         Write_dat(0x0c);
  382.         Write_dat(0x18);
  383.         Write_dat(0x24);
  384.         Write_dat(0x30);
  385.         Write_dat(0x3c);
  386.         Write_dat(0x48);
  387.         Write_dat(0x54);
  388.         Write_dat(0x60);
  389.         Write_dat(0x6c);
  390.         Write_dat(0x78);
  391.         Write_dat(0x84);
  392.         Write_dat(0x90);
  393.         Write_dat(0x9c);
  394.         Write_dat(0xa8);
  395.         Write_dat(0xb4);

  396.         Write_cmd(0x00);
  397.         Write_cmd(0xB1); //Set Phase Length
  398.         Write_dat(0xE2);

  399.         Write_cmd(0xD1); //Display Enhancement B
  400.         Write_dat(0xa2);
  401.         Write_dat(0x20);//反显

  402.         Write_cmd(0xBB);
  403.         Write_dat(0x1F);

  404.         Write_cmd(0xB6);
  405.         Write_dat(0x08);

  406.         Write_cmd(0xBE);
  407.         Write_dat(0x07);//0.86VCC

  408.         Write_cmd(0xA6);//正常显示
  409.         Write_cmd(0xA9);//退部分显示
  410.         Write_cmd(0x5c);
  411.         Fill_RAM(0x00);
  412.     Write_cmd(0xAF);  //关休眠
  413. }

  414. /***************************************
  415. 全和间隔列显示
  416. **************************************/

  417. void Fill_RAM(unsigned char Data)
  418. {
  419. unsigned char i,j;

  420.         Set_Column_Address(0x1c,0x5b);
  421.         Set_Row_Address(0x00,0x3f);
  422.         Set_Write_RAM();

  423.         for(i=0;i<64;i++)
  424.         {
  425.                 for(j=0;j<64;j++)
  426.                 {
  427.                         Write_dat(Data);
  428.                         Write_dat(Data);
  429.                 }
  430.         }
  431. }

  432. /*************************Fill Data**************************/
  433. void fill(unsigned char dat1,unsigned char dat2)
  434. {
  435.         unsigned char x,y;
  436.         Write_cmd(0x15);          /*Set Column Address*/
  437.         Write_dat(0x00);         /*Start Address,start at SEG0*/
  438.         Write_dat(0x77);         /*End Address,end at SEG479*/
  439.         Write_cmd(0x75);           /*Set Row address*/
  440.         Write_dat(0x00);         /*Start Address,start at row0*/
  441.         Write_dat(0x7f);         /*End Address,end at row127*/
  442.         Write_cmd(0x5c);          /*Write RAM Command*/
  443.         for(y=0;y<128;y++)
  444.         {
  445.                 for(x=0;x<120;x++)
  446.                 Write_dat(dat1);
  447.                 Write_dat(dat2);
  448.         }
  449. //        delay(1);
  450. }

  451. //=========图形
  452. void display_graphic_256x64_0()
  453. {
  454.         unsigned char x,y;
  455.         unsigned int i=0;
  456.         Write_cmd(0x15);
  457.         Write_dat(0x1c);        //
  458.         Write_dat(0x5b);        //91   91-28=63
  459.         Write_cmd(0x75);
  460.         Write_dat(0x00);        //0
  461.         Write_dat(0x3f);        //63   63-0=63
  462.         Write_cmd(0x5C);
  463.         for(y=0;y<64;y++)
  464.         {
  465.                         for(x=0;x<32;x++)
  466.                 {
  467.                         unsigned char code_buf,code_buf2;
  468.                         code_buf=bmp25664_0[i++];

  469.                         code_buf2=code_buf&0xc0;
  470.                         send_2bit(code_buf2);
  471.                         code_buf2=code_buf&0x30;
  472.                         code_buf2<<=2;
  473.                         send_2bit(code_buf2);
  474.                         code_buf2=code_buf&0x0c;
  475.                         code_buf2<<=4;
  476.                         send_2bit(code_buf2);
  477.                         code_buf2=code_buf&0x03;
  478.                         code_buf2<<=6;
  479.                         send_2bit(code_buf2);
  480.                 }
  481.         }
  482. }


  483. //=========图形
  484. void display_graphic_256x64_1()
  485. {
  486.         unsigned char x,y;
  487.         unsigned int i=0;
  488.         Write_cmd(0x15);
  489.         Write_dat(0x1c);        //
  490.         Write_dat(0x5b);        //91   91-28=63
  491.         Write_cmd(0x75);
  492.         Write_dat(0x00);        //0
  493.         Write_dat(0x3f);        //63   63-0=63
  494.         Write_cmd(0x5C);
  495.         for(y=0;y<64;y++)
  496.         {
  497.                         for(x=0;x<32;x++)
  498.                 {
  499.                         unsigned char code_buf,code_buf2;
  500.                         code_buf=bmp25664_1[i++];

  501.                         code_buf2=code_buf&0xc0;
  502.                         send_2bit(code_buf2);
  503.                         code_buf2=code_buf&0x30;
  504.                         code_buf2<<=2;
  505.                         send_2bit(code_buf2);
  506.                         code_buf2=code_buf&0x0c;
  507.                         code_buf2<<=4;
  508.                         send_2bit(code_buf2);
  509.                         code_buf2=code_buf&0x03;
  510.                         code_buf2<<=6;
  511.                         send_2bit(code_buf2);
  512.                 }
  513.         }
  514. }


  515. void send_2bit(unsigned char two_bit_data)
  516. {
  517.         if(two_bit_data==0x00)
  518.                 Write_dat(0x00);
  519.         else if(two_bit_data==0x40)
  520.                 Write_dat(0x0f);
  521.         else if(two_bit_data==0x80)
  522.                 Write_dat(0xf0);
  523.         else
  524.                 Write_dat(0xff);
  525. }
  526. /***************************************
  527. 间隔行显示
  528. **************************************/

  529. void hang(unsigned char Data)
  530. {
  531. unsigned char i,j;

  532.         Set_Column_Address(0x1c,0x5b);
  533.         Set_Row_Address(0x00,0x3f);
  534.         Set_Write_RAM();

  535.         for(i=0;i<32;i++)
  536.         {
  537.                 for(j=0;j<64;j++)
  538.                 {
  539.                         Write_dat(Data);
  540.                         Write_dat(Data);
  541.                 }
  542.                         for(j=0;j<64;j++)
  543.                 {
  544.                         Write_dat(~Data);
  545.                         Write_dat(~Data);
  546.                 }
  547.         }
  548. }


  549. /***************************************
  550. 间隔点显示
  551. **************************************/
  552. void gedot(uchar m)
  553. {
  554.     unsigned char i,j;

  555.         Set_Column_Address(0x1c,0x5b);           //256列
  556.         Set_Row_Address(0x00,0x3f);                 //128行
  557.         Set_Write_RAM();

  558.         for(i=0;i<32;i++)
  559.         {
  560.                 for(j=0;j<64;j++)
  561.                 {
  562.                    if(m==0xf0)
  563.                    {
  564.                 Write_dat(0xf0);
  565.                     Write_dat(0xf0);
  566.                         }
  567.                         else
  568.                         {
  569.                 Write_dat(0x0f);
  570.                     Write_dat(0x0f);
  571.                         }
  572.                 }
  573.                 for(j=0;j<64;j++)
  574.                 {
  575.                         if(m==0xf0)
  576.                    {
  577.                 Write_dat(0x0f);
  578.                     Write_dat(0x0f);
  579.                         }
  580.                 else
  581.                 {
  582.                 Write_dat(0xf0);
  583.                     Write_dat(0xf0);
  584.                         }
  585.                 }
  586.         }
  587. }
  588. /*****************************************************
  589. 矩形边框
  590. *********************************************************/
  591.   void biank()
  592.   {
  593.      unsigned char i;                // unsigned char i,j;

  594.              Set_Remap_Format(0x14);
  595.           Write_cmd(0x15);
  596.               Write_dat(0x1c);
  597.           Write_dat(0x5b);

  598.               Write_cmd(0x75);
  599.           Write_dat(0x00);
  600.           Write_dat(0x00);
  601.               Write_cmd(0x5c);

  602.         for(i=0;i<64;i++)
  603.         {
  604.             Write_dat(0xff);
  605.         Write_dat(0xff);
  606.         }
  607.               Write_cmd(0x75);
  608.           Write_dat(0x3f);
  609.           Write_dat(0x3f);
  610.               Write_cmd(0x5c);

  611.         for(i=0;i<64;i++)
  612.         {
  613.             Write_dat(0xff);
  614.         Write_dat(0xff);
  615.         }

  616.             Set_Remap_Format(0x15);
  617.           Write_cmd(0x15);
  618.               Write_dat(0x1c);
  619.           Write_dat(0x1c);
  620.               Write_cmd(0x75);
  621.           Write_dat(0x01);
  622.           Write_dat(0x3e);
  623.               Write_cmd(0x5c);
  624.             for(i=0;i<64;i++)
  625.         {
  626.             Write_dat(0xf0);
  627.         Write_dat(0x00);
  628.         }
  629.             Write_cmd(0x15);
  630.             Write_dat(0x5b);
  631.         Write_dat(0x5b);
  632.             Write_cmd(0x5c);
  633.             for(i=0;i<64;i++)
  634.         {
  635.             Write_dat(0x00);
  636.         Write_dat(0x0f);
  637.         }
  638.             Set_Remap_Format(0x14);
  639. }


  640. /************************************************
  641. 转换函数,D7=1,一位转换成四位
  642. ************************************************/
  643. void change        (uchar m)
  644. {
  645.       uchar k;
  646.   uchar kk,kkk;
  647.   kk=m;
  648.   for(k=0;k<4;k++)   // 一两位的方式写入  2*4=8位
  649.    {
  650.      kkk=kk&0xc0;     //当K=0时 为D7,D6位 当K=1时 为D5,D4位

  651.      /****出现4种可能,16阶色素,一个地址两个像素,一个像素对应4位***/

  652.      switch(kkk)
  653.        {
  654.          case 0x00:
  655.            data_4byte[k]=0x00;
  656.          break;
  657.      case 0x40:
  658.            data_4byte[k]=0x0f;
  659.          break;
  660.          case 0x80:
  661.            data_4byte[k]=0xf0;
  662.          break;
  663.      case 0xc0:
  664.            data_4byte[k]=0xff;
  665.          break;
  666.                default:
  667.                break;
  668.            }
  669.       kk=kk<<2;                                //左移两位
  670.       Write_dat(data_4byte[k]);                /* 8 column  a nibble of command is a dot*/
  671.    }
  672. }

  673. /**********************************************************
  674. 在显示屏上写一个8*16的数字
  675. // 用字模表tab816(1维数组),
  676. //在坐标(x坐标)(y坐标)位置显示一行字(左上脚坐标),
  677. //其中x坐标必须为偶数。
  678. //字占row行,一行col点。
  679. //以上定义都是unsigned char全局变量,
  680. ************************************************************/

  681. void write_oled(uchar x,uchar y,uchar coder)
  682. {
  683. uchar dat;
  684. uchar i;
  685.           Set_Remap_Format(0x14);     //定义2个地址,1个字节
  686.           Write_cmd(0x15);
  687.               Write_dat(0x1c+x);
  688.           Write_dat(0x1d+x);

  689.               Write_cmd(0x75);              //16行
  690.           Write_dat(0x00+y);
  691.           Write_dat(0x10+y);
  692.               Write_cmd(0x5c);
  693.            for(i=0;i<16;i++)
  694.            {
  695.         dat=tab816[i+16*coder];
  696.         change(dat);
  697.                  }
  698.          }
  699. /*********************************************************
  700. 写入一行8*16的数字
  701. ****************************************************/
  702.    void string816(uchar x,uchar y,uchar m)
  703.    {
  704.    uchar i;
  705.    for(i=0;i<m;i++)
  706.    {
  707.    write_oled(x,y,i);
  708.    x=x+4;     //delay(2);        取消延时,消除显示停顿
  709.    } }
  710. /*********************************************************
  711. 写入一行8*8的数字
  712. ****************************************************/
  713. void write_oled8(uchar x,uchar y,uchar coder)
  714. {
  715. uchar dat;
  716. uchar i;
  717.           Set_Remap_Format(0x14);     //定义2个地址,1个字节
  718.           Write_cmd(0x15);
  719.           Write_dat(0x1c+x);
  720.           Write_dat(0x1d+x);

  721.           Write_cmd(0x75);              //16行
  722.           Write_dat(0x00+y);
  723.           Write_dat(0x08+y);
  724.               Write_cmd(0x5c);
  725.            for(i=0;i<8;i++)
  726.            {
  727.         dat=tab88[i+8*coder];
  728.         change(dat);
  729.                  }
  730.          }
  731. /*********************************************************
  732. 写入一行8*8的数字
  733. ****************************************************/
  734.    void string88(uchar x,uchar y,uchar m)
  735.    {
  736.    uchar i;
  737.    for(i=0;i<m;i++)
  738.    {
  739.    write_oled8(x,y,i);
  740.    x=x+2;
  741.    } }

  742. /**********************************************************
  743. 在显示屏上写一个16*16的汉字
  744. // 用字模表tab1616(1维数组),
  745. //在坐标(x坐标)(y坐标)位置显示一行字(左上脚坐标),
  746. //其中x坐标必须为偶数。
  747. //字占row行,一行col点。
  748. //以上定义都是unsigned char全局变量,coder为代码值
  749. ************************************************************/

  750. void hzwrite_oled(uchar x,uchar y,uchar coder)
  751. {
  752. uchar dat;
  753. uchar i;

  754.           Set_Remap_Format(0x14);    //定义4个地址,2个字节
  755.           Write_cmd(0x15);
  756.           Write_dat(0x1c+x);
  757.           Write_dat(0x1f+x);

  758.           Write_cmd(0x75);         //16行
  759.           Write_dat(0x00+y);
  760.           Write_dat(0x10+y);
  761.           Write_cmd(0x5c);
  762.            for(i=0;i<32;i++)
  763.            {
  764.         dat=tab1616[i+32*coder];
  765.         change(dat);
  766.                  }

  767.          }
  768. //***********************************************
  769. // 写入一行汉字
  770. /**********************************************/
  771.   void stinghz(uchar x,uchar y,uchar m)
  772.   {
  773.    uchar i;
  774.    for(i=0;i<m;i++)
  775.    {
  776.     hzwrite_oled(x,y,i);
  777.     x=x+6; delay(2);
  778.    }
  779.    }
  780. /*********************************************
  781.   卷动程序
  782. **********************************************/
  783. void Set_Partial_Display(unsigned char a, unsigned char b, unsigned char c)
  784. {

  785.         Write_cmd(0xA8|a);
  786.                                         // Default => 0x8F
  787.                                                 //   Select Internal Booster at Display On
  788.         if(a == 0x00)
  789.         {
  790.                 Write_dat(b);
  791.                 Write_dat(c);
  792.         }
  793. }
  794. /*****************************************
  795.   显示偏移量
  796. ********************************************/
  797. void Set_Display_Offset(unsigned char d)
  798. {
  799.         Write_cmd(0xA2);                        // Set Vertical Scroll by Row
  800.         Write_dat(d);                                //   Default => 0x00
  801. }
  802. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  803. //  Vertical Scrolling (Full Screen)
  804. //
  805. //    a: Scrolling Direction
  806. //       "0x00" (Upward)
  807. //       "0x01" (Downward)
  808. //    b: Set Numbers of Row Scroll per Step
  809. //    c: Set Time Interval between Each Scroll Step
  810. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  811. void Vertical_Scroll(unsigned char a, unsigned char b, unsigned char c)
  812. {
  813. unsigned int i,j;

  814.         Set_Partial_Display(0x00,0x00,Max_Row);

  815.         switch(a)
  816.         {
  817.                 case 0:
  818.                         for(i=0;i<(Max_Row+1);i+=b)
  819.                         {
  820.                                 Set_Display_Offset(i+1);
  821.                                 for(j=0;j<c;j++)
  822.                                 {
  823.                                         delayus(100);
  824.                                 }
  825.                         }
  826.                         break;
  827.                 case 1:
  828.                         for(i=0;i<(Max_Row+1);i+=b)
  829.                         {
  830.                                 Set_Display_Offset(Max_Row-i);
  831.                                 for(j=0;j<c;j++)
  832.                                 {
  833.                                         delayus(100);
  834.                                 }
  835.                         }
  836.                         break;
  837.         }
  838.         Set_Partial_Display(0x01,0x00,0x00);
  839. }
  840. /*********************************
  841.      起始行
  842. **********************************/
  843. void Set_Start_Line(unsigned char d)
  844. {
  845.         Write_cmd(0xA1);                        // Set Vertical Scroll by RAM
  846.         Write_dat(d);                                //   Default => 0x00
  847. }
  848. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  849. //  Vertical Fade Scrolling (Full Screen)
  850. //
  851. //    a: Scrolling Direction
  852. //       "0x00" (Upward - In)
  853. //       "0x01" (Downward - In)
  854. //       "0x02" (Upward - Out)
  855. //       "0x03" (Downward - Out)
  856. //    b: Set Numbers of Row Scroll per Step
  857. //    c: Set Time Interval between Each Scroll Step
  858. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  859. void Fade_Scroll(unsigned char a, unsigned char b, unsigned char c)
  860. {
  861. unsigned int i,j;

  862.         Set_Partial_Display(0x00,0x00,Max_Row);

  863.         switch(a)
  864.         {
  865.                 case 0:
  866.                         for(i=(Max_Row+1);i<128;i+=b)
  867.                         {
  868.                                 Set_Start_Line(i);
  869.                                 for(j=0;j<c;j++)
  870.                                 {
  871.                                         delayus(100);
  872.                                 }
  873.                         }
  874.                         Set_Start_Line(0x00);
  875.                         for(j=0;j<c;j++)
  876.                         {
  877.                                 delayus(100);
  878.                         }
  879.                         break;
  880.                 case 1:
  881.                         for(i=0;i<(Max_Row+1);i+=b)
  882.                         {
  883.                                 Set_Start_Line(Max_Row-i);
  884.                                 for(j=0;j<c;j++)
  885.                                 {
  886.                                         delayus(100);
  887.                                 }
  888.                         }
  889.                         break;
  890.                 case 2:
  891.                         for(i=0;i<(Max_Row+1);i+=b)
  892.                         {
  893.                                 Set_Start_Line(i+1);
  894.                                 for(j=0;j<c;j++)
  895.                                 {
  896.                                         delayus(100);
  897.                                 }
  898.                         }
  899.                         break;
  900.                 case 3:
  901.                         for(i=127;i>Max_Row;i-=b)
  902.                         {
  903.                                 Set_Start_Line(i);
  904.                                 for(j=0;j<c;j++)
  905.                                 {
  906.                                         delayus(100);
  907.                                 }
  908.                         }
  909.                         break;
  910.         }
  911.         Set_Partial_Display(0x01,0x00,0x00);
  912. }
  913. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  914. //  Show Regular Pattern (Partial or Full Screen)
  915. //
  916. //    a: Column Address of Start
  917. //    b: Column Address of End (Total Columns Devided by 4)
  918. //    c: Row Address of Start
  919. //    d: Row Address of End
  920. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  921. void Fill_Block(unsigned char Data, unsigned char a, unsigned char b, unsigned char c, unsigned char d)
  922. {
  923. unsigned char i,j;

  924.         Set_Column_Address(Shift+a,Shift+b);
  925.         Set_Row_Address(c,d);
  926.         Set_Write_RAM();

  927.         for(i=0;i<(d-c+1);i++)
  928.         {
  929.                 for(j=0;j<(b-a+1);j++)
  930.                 {
  931.                         Write_dat(Data);
  932.                         Write_dat(Data);
  933.                 }
  934.         }
  935. }
  936. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  937. //  Show Gray Scale Bar (Full Screen)
  938. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  939. void Grayscale()
  940. {
  941.         // Level 16 => Column 1~16
  942.                 Fill_Block(0xFF,0x00,0x03,0x00,Max_Row);

  943.         // Level 15 => Column 17~32
  944.                 Fill_Block(0xEE,0x04,0x07,0x00,Max_Row);

  945.         // Level 14 => Column 33~48
  946.                 Fill_Block(0xDD,0x08,0x0B,0x00,Max_Row);

  947.         // Level 13 => Column 49~64
  948.                 Fill_Block(0xCC,0x0C,0x0F,0x00,Max_Row);

  949.         // Level 12 => Column 65~80
  950.                 Fill_Block(0xBB,0x10,0x13,0x00,Max_Row);

  951.         // Level 11 => Column 81~96
  952.                 Fill_Block(0xAA,0x14,0x17,0x00,Max_Row);

  953.         // Level 10 => Column 97~112
  954.                 Fill_Block(0x99,0x18,0x1B,0x00,Max_Row);

  955.         // Level 9 => Column 113~128
  956.                 Fill_Block(0x88,0x1C,0x1F,0x00,Max_Row);

  957.         // Level 8 => Column 129~144
  958.                 Fill_Block(0x77,0x20,0x23,0x00,Max_Row);

  959.         // Level 7 => Column 145~160
  960.                 Fill_Block(0x66,0x24,0x27,0x00,Max_Row);

  961.         // Level 6 => Column 161~176
  962.                 Fill_Block(0x55,0x28,0x2B,0x00,Max_Row);

  963.         // Level 5 => Column 177~192
  964.                 Fill_Block(0x44,0x2C,0x2F,0x00,Max_Row);

  965.         // Level 4 => Column 193~208
  966.                 Fill_Block(0x33,0x30,0x33,0x00,Max_Row);

  967.         // Level 3 => Column 209~224
  968.                 Fill_Block(0x22,0x34,0x37,0x00,Max_Row);

  969.         // Level 2 => Column 225~240
  970.                 Fill_Block(0x11,0x38,0x3B,0x00,Max_Row);

  971.         // Level 1 => Column 241~256
  972.                 Fill_Block(0x00,0x3C,Max_Column,0x00,Max_Row);
  973. }
  974. /***************************************
  975. 主函数
  976. **************************************/
  977. void main(void)
  978. {
  979.         REST=0;
  980.         delayms(100);
  981.         REST=1;
  982.     delayms(50);                  //100
  983.         Initial();
  984. while(1)
  985.         {
  986.                                 Fill_RAM(0xff);                 //全显示
  987.                                 delay(2);
  988.                                 Fill_RAM(0xf0);                  //竖线
  989.                                 delay(2);
  990.                                 Fill_RAM(0x0f);                  //竖线
  991.                                 delay(2);
  992.                                 hang(0xff);                         //显示行
  993.                                 delay(2);
  994.                                 hang(0x00);                          //显示行
  995.                                 delay(2);                       
  996.                                 gedot(0xf0);                  //显示点
  997.                                 delay(2);
  998.                                 gedot(0x0f);                   //显示点
  999.                                 delay(2);                       
  1000.                                 Fill_RAM(0x00);                  // Clear Screen
  1001.                  /*
  1002.                                 write_oled(0,0,0x00);
  1003.                                 write_oled(4,0,0x01);
  1004.                                 biank();                                   //矩形框
  1005.                                 delay(10);
  1006.                         */
  1007.                                 hzwrite_oled(14,0,0x00);
  1008.                                 hzwrite_oled(22,0,0x01);
  1009.                                 hzwrite_oled(30,0,0x02);
  1010.                                 hzwrite_oled(38,0,0x03);
  1011.                                 string88(0,17,32);
  1012.                                 stinghz(4,25,10) ;
  1013.                                 string816(14,45,10);
  1014.                                 delay(10);                     
  1015.                 Grayscale();         //显示灰阶
  1016.                 delay(10);
  1017.                 Fill_RAM(0x00);         // Clear Screen
  1018.                            //        delay(10);
  1019.                         //        fill(0xff,0xff);         
  1020.                                 display_graphic_256x64_0();
  1021.                                 delay(10);
  1022.                                 Fill_RAM(0x00);                        // Clear Screen

  1023.                            display_graphic_256x64_1();
  1024.                                 delay(10);
  1025.                                 Fill_RAM(0x00);                        // Clear Screen


  1026.         }
  1027. }

  1028. unsigned char code bmp25664_0[]=
  1029. {
  1030. /*--  调入了一幅图像:E:\LCD小工具\程序图片\25664.bmp  --*/
  1031. /*--  宽度x高度=256x64  --*/
  1032. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  1033. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  1034. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  1035. ……………………

  1036. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
3.12寸OLED模组(1).zip (7.63 MB, 下载次数: 87)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:243748 发表于 2018-8-10 06:45 来自手机 | 显示全部楼层
这是51程序吗?
回复

使用道具 举报

ID:508464 发表于 2019-4-10 09:23 | 显示全部楼层
刚好可以学习一下
回复

使用道具 举报

ID:522749 发表于 2019-5-18 18:08 | 显示全部楼层
正在研究OLED,学习一下。
回复

使用道具 举报

ID:294555 发表于 2020-5-9 08:55 | 显示全部楼层
刚好可以学习一下 谢谢
回复

使用道具 举报

ID:593871 发表于 2020-7-8 13:59 | 显示全部楼层
请教一下0xa0 寄存器,能否设置x y 翻转90度
回复

使用道具 举报

ID:388929 发表于 2020-8-14 14:19 | 显示全部楼层
收下,万分感谢,楼主万岁万万岁
回复

使用道具 举报

ID:388929 发表于 2020-12-19 10:38 | 显示全部楼层
感谢分享,谢谢,51黑有你更精彩
回复

使用道具 举报

ID:763305 发表于 2022-5-23 08:25 | 显示全部楼层

感谢分享,谢谢,51黑有你更精彩
回复

使用道具 举报

ID:228452 发表于 2022-5-23 21:56 | 显示全部楼层
OLED 3.12 inch 256*64 driver for XX51 cpu
Thank you
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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