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