📄 olcd.lst
字号:
C51 COMPILER V8.08 OLCD 01/08/2008 15:04:07 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE OLCD
OBJECT MODULE PLACED IN OLCD.obj
COMPILER INVOKED BY: d:\program files\Keil\C51\BIN\C51.EXE source\OLCD.c BROWSE INCDIR(.\source;D:\Program Files\Keil\C5
-1\INC) DEFINE(CC1110) DEBUG OBJECTEXTEND PRINT(.\OLCD.lst) OBJECT(OLCD.obj)
line level source
1 #include <chipcon/ioCC1110.h>
2 #include <INTRINS.H>
3 #include <olcd.h>
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8
9 #define RECALIB_TIMEOUT 12000 // Every 2 minutes
10 #define MSG_PING 0x00
11 #define MSG_SEND 0x10
12 #define MSG_RECIVE 0x20
13 #define MSG_NEEDSEND 0x30
14
15 #define LCD_PWR_CRTL 0
16
17 //SPI1 at2
18 sbit LCD_RST = P1^4;
19 sbit LCD_RS = P0^0;
20 sbit LCD_CS = P0^2;
21 sbit LCD_CLK = P1^5;
22 sbit LCD_SDO = P1^6;
23 sbit LCD_PWR = P0^1;
24
25
26
27 #define LCD_CS_0 LCD_CS = 0
28 #define LCD_CS_1 LCD_CS = 1
29 #define LCD_CLK_0 LCD_CLK = 0
30 #define LCD_CLK_1 LCD_CLK = 1
31 #define LCD_SDO_0 LCD_SDO = 0
32 #define LCD_SDO_1 LCD_SDO = 1
33 #define LCD_RST_0 LCD_RST = 0
34 #define LCD_RST_1 LCD_RST = 1
35 #define LCD_RS_0 LCD_RS = 0
36 #define LCD_RS_1 LCD_RS = 1
37
38 uchar ContrastValue = 0x38;
39 uchar BT_State;
40
41 void ClearScreen(void);
42 void Print(uchar y, uchar x, uchar ch[], uint yn);
43 void Print6(uchar xx,uchar yy,uchar ch1[],uchar yn);
44 //void LoadICO(uchar y , uchar x , uchar n);
45
46
47 /*******************************************************************************
48 //函数名:void delaylcd (uint x)
49 //功能:廷时
50 //输入:时间
51 //输出:无
52 ********************************************************************************/
53 void delaylcd (uint x)
54 {
C51 COMPILER V8.08 OLCD 01/08/2008 15:04:07 PAGE 2
55 1 uchar j;
56 1 while (x--)
57 1 {
58 2 for (j=0;j<115;j++);
59 2 }
60 1 }
61 /*******************************************************************************
62 //函数名:void fdelay(unsigned int n)
63 //功能:廷时
64 //输入:时间
65 //输出:无
66 ********************************************************************************/
67 void fdelay(unsigned int n) /* wait n seconds*/
68 {
69 1 uint i;
70 1 uint j;
71 1 for (i=0;i<5;i++)
72 1 for (j=0;j<n*2;j++) ;
73 1 }
74
75
76 /*******************************************************************************
77 //函数名:void Lcdwritecom(uchar com)
78 //功能:lcd写指令
79 //输入:com指令
80 //输出:无
81 ********************************************************************************/
82 void Lcdwritecom(uchar com)
83 {
84 1 uchar i, temp;
85 1 LCD_CLK = 0;
86 1 LCD_CS = 0;
87 1 LCD_RS = 0;
88 1 temp = com;
89 1
90 1 for(i=0; i<8; i++)
91 1 {
92 2 if(temp & 0x80)
93 2 {
94 3 LCD_SDO = 1;
95 3 }
96 2 else LCD_SDO = 0;
97 2 temp <<= 1;
98 2 LCD_CLK = 1;
99 2 _nop_();
100 2 _nop_();
101 2 LCD_CLK = 0;
102 2 }
103 1 LCD_CS = 1;
104 1 }
105
106 /*******************************************************************************
107 //函数名:void Lcdwritedata(uchar dat)
108 //功能:lcd写数据
109 //输入:dat数据
110 //输出:无
111 ********************************************************************************/
112 void Lcdwritedata(uchar dat)
113 {
114 1 uchar i, temp;
115 1 LCD_CS = 0;
116 1 LCD_RS = 1;
C51 COMPILER V8.08 OLCD 01/08/2008 15:04:07 PAGE 3
117 1 temp = dat;
118 1
119 1 for(i=0; i<8; i++)
120 1 {
121 2 if(temp & 0x80)
122 2 {
123 3 LCD_SDO = 1;
124 3 }
125 2 else LCD_SDO = 0;
126 2 temp <<= 1;
127 2 LCD_CLK = 1;
128 2 _nop_();
129 2 _nop_();
130 2 LCD_CLK = 0;
131 2 }
132 1 LCD_CS = 1;
133 1 }
134
135 /*******************************************************************************
136 //函数名:void Prog_Reset(void)
137 //功能:lcd复位
138 //输入:无
139 //输出:无
140 ********************************************************************************/
141 void Prog_Reset(void)
142 {
143 1 LCD_RST = 0;
144 1 delaylcd(100);
145 1 LCD_RST = 1;
146 1 }
147 /*******************************************************************************
148 //函数名:void Resetchip(void)
149 //功能:lcd软件复位
150 //输入:无
151 //输出:无
152 ********************************************************************************/
153 void Resetchip(void)
154 {
155 1 Prog_Reset();
156 1 }
157
158 /*******************************************************************************
159 //函数名:void SetRamAddr (uchar Page, uchar Col)
160 //功能:lcd位置选择
161 //输入:Page-页,Col-列
162 //输出:无
163 ********************************************************************************/
164 void SetRamAddr (uchar Page, uchar Col)
165 {
166 1 Lcdwritecom(0xB0 + Page);
167 1 Lcdwritecom(Col & 0x0f); //Set lower column address
168 1 Lcdwritecom(0x10 | ((Col & 0xf0) >> 4)); //Set higher column address
169 1 }
170 /*******************************************************************************
171 //函数名:void SetContrast(uchar Gain, uchar Step)
172 //功能:lcd对比度设定
173 //输入:Page-页,Col-列
174 //输出:无
175 ********************************************************************************/
176 void SetContrast(uchar Gain, uchar Step)
177 {
178 1 Lcdwritecom(0x81);
C51 COMPILER V8.08 OLCD 01/08/2008 15:04:07 PAGE 4
179 1 Lcdwritecom(Step);
180 1 }
*** WARNING C280 IN LINE 176 OF SOURCE\OLCD.C: 'Gain': unreferenced local variable
181
182 void LcdPortInit(void)
183 {
184 1 P0DIR = 0X07;
185 1 P1DIR = 0X70;
186 1 }
187
188
189 /*******************************************************************************
190 //函数名:void InitLcd(void)
191 //功能:lcd初始化
192 //输入:无
193 //输出:无
194 ********************************************************************************/
195 void InitLcd(void)
196 {
197 1 LcdPortInit();
198 1 LCD_PWR = 0; //OLED POWER ON
199 1 LCD_CS = 1;
200 1 LCD_RS = 1;
201 1 LCD_RST = 1;
202 1 LCD_CLK = 1;
203 1 LCD_SDO = 1;
204 1
205 1 Resetchip();
206 1 Lcdwritecom(0xAE);
207 1 Lcdwritecom(0xAD); //dc-dc off
208 1 Lcdwritecom(0x8a);
209 1 halWait(100);
210 1 Lcdwritecom(0x00);
211 1 Lcdwritecom(0x10);
212 1 Lcdwritecom(0x40);
213 1 Lcdwritecom(0x81);
214 1 Lcdwritecom(ContrastValue);
215 1 Lcdwritecom(0xA0);
216 1 Lcdwritecom(0xA4);
217 1 Lcdwritecom(0xA6);
218 1 Lcdwritecom(0xA8);
219 1 Lcdwritecom(0x3f);
220 1 Lcdwritecom(0xD3);
221 1 Lcdwritecom(0x00);
222 1 Lcdwritecom(0xD5);
223 1 Lcdwritecom(0x20);
224 1 Lcdwritecom(0xD8);
225 1 Lcdwritecom(0x00);
226 1 Lcdwritecom(0xDA);
227 1 Lcdwritecom(0x12);
228 1 Lcdwritecom(0xDB);
229 1 Lcdwritecom(0x00);
230 1 Lcdwritecom(0xD9);
231 1 Lcdwritecom(0x22);
232 1 Lcdwritecom(0xc8);
233 1 Lcdwritecom(0xAF);
234 1 ClearScreen();
235 1 }
236 /*******************************************************************************
237 //函数名:void LoadICO(uchar y , uchar x , uchar Ico[])
238 //功能:打开一个指定指针的图标
239 //输入:x,y坐标 Ico[]图片
C51 COMPILER V8.08 OLCD 01/08/2008 15:04:07 PAGE 5
240 //输出:无
241 ********************************************************************************
242 void LoadICO(uchar y , uchar x , uchar n)
243 {
244
245 uchar adder = 0;
246 uchar wm;
247
248 SetRamAddr(y , x);
249 for(wm = 0;wm < 16;wm++)
250 {
251 Lcdwritedata(ICOBattery[n][adder]);
252 adder += 1;
253 }
254 }
255 */
256
257 /*******************************************************************************
258 //函数名:void LoadICO(uchar y , uchar x , uchar Ico[])
259 //功能:打开一个指定指针的图标
260 //输入:x,y坐标 Ico[]图片
261 //输出:无
262 ********************************************************************************/
263 void LoadICO(void)
264 {
265 1
266 1 uchar i,j;
267 1 for(i=0; i<8; i++)
268 1 {
269 2 SetRamAddr(i , 0);
270 2 for(j = 0;j < 112;j++)
271 2 {
272 3 Lcdwritedata(WXL112X64[j+i*112]);
273 3 }
274 2 }
275 1 }
276 /*******************************************************************************
277 //函数名:void ClearScreen(void)
278 //功能:清屏
279 //输入:无
280 //输出:无
281 ********************************************************************************/
282 void ClearScreen(void)
283 {
284 1 uchar i , j;
285 1
286 1 for (i = 0 ; i < 8 ; i++)
287 1 {
288 2 SetRamAddr(i,0);
289 2 for (j=0;j<132; j++) Lcdwritedata(0x00);
290 2 }
291 1 }
292
293
294 /*******************************************************************************
295 //函数名:void Printn(uchar xx ,uchar yy , INT32U no,uchar yn,uchar le)
296 //功能:显示一个6*8无符号数据
297 //输入:xx , yy屏幕当中位置,no待显示数据 yn=0正常显示 yn=1反黑显示 le有效位
298 //输出:无
299 ********************************************************************************/
300 void Printn(uchar xx ,uchar yy , unsigned long no,uchar yn,uchar le)
301 {
C51 COMPILER V8.08 OLCD 01/08/2008 15:04:07 PAGE 6
302 1 uchar ch2[6];
303 1 uchar ii;
304 1
305 1 for(ii = 1 ; ii <= le ;)
306 1 {
307 2 ch2[le - ii] = no % 10 + 0x30;
308 2 no /= 10;
309 2 ii += 1;
310 2 }
311 1 ch2[le] = '\0';
312 1 Print6(xx ,yy ,ch2 ,yn);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -