110VCGQ/模块资料/1.3寸OLED显示屏12864液晶屏模块1.3寸显示模块IIC接口/中景园电子1.3寸OLED显示屏模块资料V2.0/测试程序/中景园电子1.3寸OLED显示屏_C51系列_IIC_例程/oled.lst
2024-11-18 10:09:39 +08:00

221 lines
8.8 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

C51 COMPILER V9.52.0.0 OLED 03/25/2015 20:23:32 PAGE 1
C51 COMPILER V9.52.0.0, COMPILATION OF MODULE OLED
OBJECT MODULE PLACED IN oled.obj
COMPILER INVOKED BY: C:\Keil_c51\C51\BIN\C51.EXE SRC\oled.c BROWSE INCDIR(.\SRC) DEBUG OBJECTEXTEND PRINT(.\oled.lst) TA
-BS(2) OBJECT(oled.obj)
line level source
1 //////////////////////////////////////////////////////////////////////////////////
2 //本程序只供学习使用,未经作者许可,不得用于其它任何用途
3 //中景园电子
4 //店铺地址http://shop73023976.taobao.com/?spm=2013.1.0.0.M4PqC2
5 //
6 // 文 件 名 : main.c
7 // 版 本 号 : v2.0
8 // 作 者 : HuangKai
9 // 生成日期 : 2014-0101
10 // 最近修改 :
11 // 功能描述 : OLED IIC接口演示例程(51系列)
12 // 说明:
13 // ----------------------------------------------------------------
14 // GND 电源地
15 // VCC 接5V或3.3v电源
16 // D0 P1^0SCL
17 // D1 P1^1SDA
18 // RES 接高
19 // DC 接地
20 // CS 接地
21 // ----------------------------------------------------------------
22 // 修改历史 :
23 // 日 期 :
24 // 作 者 : HuangKai
25 // 修改内容 : 创建文件
26 //版权所有,盗版必究。
27 //Copyright(C) 中景园电子2014/3/16
28 //All rights reserved
29 //******************************************************************************/
30 #include "oled.h"
31 #include "picture.h"
32
33
34 /**********************************************
35 //IIC Start
36 **********************************************/
37 void IIC_Start()
38 {
39 1 SCL = high;
40 1 SDA = high;
41 1 SDA = low;
42 1 SCL = low;
43 1 }
44
45 /**********************************************
46 //IIC Stop
47 **********************************************/
48 void IIC_Stop()
49 {
50 1 SCL = low;
51 1 SDA = low;
52 1 SCL = high;
53 1 SDA = high;
54 1 }
C51 COMPILER V9.52.0.0 OLED 03/25/2015 20:23:32 PAGE 2
55 /**********************************************
56 // IIC Write byte
57 **********************************************/
58 void Write_IIC_Byte(unsigned char IIC_Byte)
59 {
60 1 unsigned char i;
61 1 for(i=0;i<8;i++)
62 1 {
63 2 if(IIC_Byte & 0x80)
64 2 SDA=high;
65 2 else
66 2 SDA=low;
67 2 SCL=high;
68 2 SCL=low;
69 2 IIC_Byte<<=1;
70 2 }
71 1 SDA=1;
72 1 SCL=1;
73 1 SCL=0;
74 1 }
75 /**********************************************
76 // IIC Write Command
77 **********************************************/
78 void Write_IIC_Command(unsigned char IIC_Command)
79 {
80 1 IIC_Start();
81 1 Write_IIC_Byte(0x78); //Slave address,SA0=0
82 1 Write_IIC_Byte(0x00); //write command
83 1 Write_IIC_Byte(IIC_Command);
84 1 IIC_Stop();
85 1 }
86 /**********************************************
87 // IIC Write Data
88 **********************************************/
89 void Write_IIC_Data(unsigned char IIC_Data)
90 {
91 1 IIC_Start();
92 1 Write_IIC_Byte(0x78); //D/C#=0; R/W#=0
93 1 Write_IIC_Byte(0x40); //write data
94 1 Write_IIC_Byte(IIC_Data);
95 1 IIC_Stop();
96 1 }
97 /********************************************
98 // fill_Picture
99 ********************************************/
100 void fill_picture(unsigned char fill_Data)
101 {
102 1 unsigned char m,n;
103 1 for(m=0;m<8;m++)
104 1 {
105 2 Write_IIC_Command(0xb0+m); //page0-page1
106 2 Write_IIC_Command(0x02); //low column start address
107 2 Write_IIC_Command(0x10); //high column start address
108 2 for(n=0;n<128;n++)
109 2 {
110 3 Write_IIC_Data(fill_Data);
111 3 }
112 2 }
113 1 }
114 /******************************************
115 // picture用来显示一个图片
116 ******************************************/
C51 COMPILER V9.52.0.0 OLED 03/25/2015 20:23:32 PAGE 3
117 void Picture()
118 {
119 1 unsigned char x,y;
120 1 unsigned int i=0;
121 1 for(y=0;y<8;y++)
122 1 {
123 2 Write_IIC_Command(0xb0+y);
124 2 Write_IIC_Command(0x02);
125 2 Write_IIC_Command(0x10);
126 2 for(x=0;x<128;x++)
127 2 {
128 3 Write_IIC_Data(show[i++]);
129 3 }
130 2 }
131 1 }
132
133 /***********************Delay****************************************/
134 void Delay_50ms(unsigned int Del_50ms)
135 {
136 1 unsigned int m;
137 1 for(;Del_50ms>0;Del_50ms--)
138 1 for(m=6245;m>0;m--);
139 1 }
140
141 void Delay_1ms(unsigned int Del_1ms)
142 {
143 1 unsigned char j;
144 1 while(Del_1ms--)
145 1 {
146 2 for(j=0;j<123;j++);
147 2 }
148 1 }
149
150
151
152 void Initial_M096128x64_ssd1306()
153 {
154 1 Delay_50ms(5);
155 1 Write_IIC_Command(0xAE); //display off
156 1 Write_IIC_Command(0x02); //Set Memory Addressing Mode
157 1 Write_IIC_Command(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing M
-ode (RESET);11,Invalid
158 1 Write_IIC_Command(0x40); //Set Page Start Address for Page Addressing Mode,0-7
159 1 Write_IIC_Command(0xb0); //Set COM Output Scan Direction
160 1 Write_IIC_Command(0x81);//---set low column address
161 1 Write_IIC_Command(0xff);//---set high column address
162 1 Write_IIC_Command(0xa1);//--set start line address
163 1 Write_IIC_Command(0xa6);//--set contrast control register
164 1 Write_IIC_Command(0xa8);
165 1 Write_IIC_Command(0x3f);//--set segment re-map 0 to 127
166 1 Write_IIC_Command(0xad);//--set normal display
167 1 Write_IIC_Command(0x8b);//--set multiplex ratio(1 to 64)
168 1 Write_IIC_Command(0x33);//
169 1 Write_IIC_Command(0xc8);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
170 1 Write_IIC_Command(0xd3);//-set display offset
171 1 Write_IIC_Command(0x00);//-not offset
172 1 Write_IIC_Command(0xd5);//--set display clock divide ratio/oscillator frequency
173 1 Write_IIC_Command(0x80);//--set divide ratio
174 1 Write_IIC_Command(0xd9);//--set pre-charge period
175 1 Write_IIC_Command(0x1f); //
176 1 Write_IIC_Command(0xda);//--set com pins hardware configuration
177 1 Write_IIC_Command(0x12);
C51 COMPILER V9.52.0.0 OLED 03/25/2015 20:23:32 PAGE 4
178 1 Write_IIC_Command(0xdb);//--set vcomh
179 1 Write_IIC_Command(0x40);//0x20,0.77xVcc
180 1 // Write_IIC_Command(0x8d);//--set DC-DC enable
181 1 // Write_IIC_Command(0x14);//
182 1 Write_IIC_Command(0xaf);//--turn on oled panel
183 1 }
184
185
186
187
188
*** WARNING C316 IN LINE 188 OF SRC\oled.c: unterminated conditionals
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 351 ----
CONSTANT SIZE = 1024 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)