📄 lcd12864a.lst
字号:
-x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
205 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0x80,0x00,0x00,0x00,0
-x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
206 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*"!", 入口地址7*/
207
208
C51 COMPILER V7.06 LCD12864A 08/18/2010 16:03:38 PAGE 5
209 };
210
211
212
213 /*************************************************/
214 /*延时*/
215 /*************************************************/
216 void delay(void)
217 {unsigned char i,j;
218 1 for(i=32;i>0;i--)
219 1 for(j=255;j>0;j--);
220 1 }
221
222 /*************************************************/
223 /*延时*/
224 /*************************************************/
225 void delay1(void)
226 {unsigned char i,j;
227 1 for(i=255;i>0;i--)
228 1 {
229 2 for(j=255;j>0;j--)
230 2 {nop();
231 3 nop();
232 3 nop();
233 3 nop();
234 3 nop();
235 3 nop();
236 3 nop();
237 3 nop();}
238 2 }
239 1 }
240 /*************************************************/
241 //初始化
242 /*************************************************/
243 void lcd_init(void)
244 {
245 1 rst=0;
246 1 delay();
247 1 rst=1;
248 1 delay();
249 1 wcom(0xa3); //LCD BIAS SET ( A2 1/8;A3 1/65DUTY)
250 1 wcom(0xa0); //ADC select,NORMAL 0-->127
251 1 wcom(0xaf); // DISPLAY ON/OFF
252 1 wcom(0x2f); //power control(VB,VR,VF=1,1,1)
253 1 wcom(0x23); // VOLT REGULATOR RADIO SET
254 1 wcom(0x81); //ELECTRONIC VOLUME mode setting 100B 对比度命令
255 1 wcom(0x28); //REFERENCE VOLT REG set
256 1 wcom(0xc0); //SHL SELECT
257 1 wcom(0xaf); //DISPLAY ON/OFF
258 1 wcom(0x40); // DISPLAY START LINE SET
259 1 nop();
260 1 nop();
261 1 }
262
263
264
265 /*************************************************/
266 //写命令
267 /*************************************************/
268
269 void wcom(unsigned char com)
270 {
C51 COMPILER V7.06 LCD12864A 08/18/2010 16:03:38 PAGE 6
271 1 cs1=0;
272 1 nop();
273 1 a0=0; //a0='0',写入命令
274 1 nop();
275 1 write(com);
276 1 nop();
277 1 nop();
278 1 cs1=1;
279 1 }
280
281 /*************************************************/
282 //写数据
283 /*************************************************/
284
285 void wdata(unsigned char dat)
286 {
287 1 cs1=0;
288 1 nop();
289 1 a0=1; //a0='1',写入数据
290 1 nop();
291 1 write(dat);
292 1 nop();
293 1 nop();
294 1 cs1=1;
295 1 }
296 /*************************************************
297 //串口移位输出, SPI方式写入8bit 数据
298 /*************************************************/
299
300 void write(unsigned char dat)
301 { unsigned char s,temp;
302 1 int i;
303 1 sclk=0;
304 1 s=dat;
305 1
306 1 for(i=8;i>0;i--)
307 1 {sclk=0;
308 2 nop();
309 2 nop();
310 2 temp=s & 0x80; //先送高位,再送低位
311 2 if(temp)
312 2 {di=1;}
313 2 else {di=0;}
314 2
315 2 sclk=1;
316 2 s=s<<1;
317 2 }
318 1 }
319
320 /********************************************/
321 /* 西文字符写入函数:CW_PR 8*8 */
322
323 void cwpr(unsigned char cod,unsigned char page,unsigned char seg)
324 { unsigned char zmseg;
325 1
326 1 wcom(0xaf);// 开显示
327 1 wcom(0xb0+page); // 设定页地址,设定page命令是0xB0,共 9 page
328 1 wcom(0x10+(0x0f&(seg>>4))); // 设定列地址, 设定列地址命令0x01 , 列制止范围 0~131 , 写高四位列地
-址
329 1 wcom(0x0f&seg); // 写低四位列地址
330 1 for(zmseg=0;zmseg<8;zmseg++)
331 1 {
C51 COMPILER V7.06 LCD12864A 08/18/2010 16:03:38 PAGE 7
332 2 wdata(success[cod*8+zmseg]); // 连续写入8个数据
333 2
334 2 }
335 1 }
336
337
338 /********************************************/
339 /* 西文字符写入函数:CW_PR 16*16 */
340
341 void cwpr16(unsigned char cod,unsigned char page,unsigned char seg)
342 { unsigned char zmseg;
343 1
344 1 wcom(0xaf);// 开显示
345 1 wcom(0xb0+page); // 设定页地址,设定page命令是0xB0,共 9 page
346 1 wcom(0x10+(0x0f&(seg>>4))); // 设定列地址, 设定列地址命令0x01 , 列制止范围 0~131 , 写高四位列地
-址
347 1 wcom(0x0f&seg); // 写低四位列地址
348 1 for(zmseg=0;zmseg<16;zmseg++)
349 1 {
350 2 wdata(largedigtal[cod*32+zmseg]); // 连续写入16个数据
351 2 }
352 1 wcom(0xb0+page-1); // 设定页地址,设定page命令是0xB0,共 9 page
-
353 1 wcom(0x10+(0x0f&(seg>>4))); // 设定列地址, 设定列地址命令0x01 , 列制止范围 0~131 , 写高四位列地
-址
354 1 wcom(0x0f&seg); // 写低四位列地址
355 1 for(zmseg=16;zmseg<32;zmseg++)
356 1 {
357 2 wdata(largedigtal[cod*32+zmseg]); // 连续写入16个数据
358 2 }
359 1
360 1 }
361
362
363
364 /********************************************/
365 /* 西文字符写入函数:CW_PR 16*8 */
366 /* 写入数字和英文字母 16行 8列 */
367 /********************************************/
368 void writedigital(unsigned char cod,unsigned char page,unsigned char seg)
369 { unsigned char zmseg;
370 1
371 1 wcom(0xaf);// 开显示
372 1 wcom(0xb0+page); // 设定页地址,设定page命令是0xB0,共 9 page
373 1 wcom(0x10+(0x0f&(seg>>4))); // 设定列地址, 设定列地址命令0x01 , 列制止范围 0~131 , 写高四位列地
-址
374 1 wcom(0x0f&seg); // 写低四位列地址
375 1 for(zmseg=8;zmseg>0;zmseg--)
376 1 {
377 2 wdata(largedigtal[cod*16+zmseg]); // 连续写入16个数据
378 2 }
379 1 wcom(0xb0+page-1); // 设定页地址,设定page命令是0xB0,共 9 page
-
380 1 wcom(0x10+(0x0f&(seg>>4))); // 设定列地址, 设定列地址命令0x01 , 列制止范围 0~131 , 写高四位列地
-址
381 1 wcom(0x0f&seg); // 写低四位列地址
382 1 for(zmseg=16;zmseg>8;zmseg--)
383 1 {
384 2 wdata(largedigtal[cod*16+zmseg]); // 连续写入16个数据
385 2 }
386 1
387 1 }
C51 COMPILER V7.06 LCD12864A 08/18/2010 16:03:38 PAGE 8
388
389
390
391 /********************************************/
392 /* 中文字符写入函数:CW_PR 16*16 */
393 /* 写入一个汉字 */
394 /* */
395 /********************************************/
396 void writeone(unsigned char cod,unsigned char page,unsigned char seg)
397 { unsigned char zmseg;
398 1
399 1 wcom(0xaf);// 开显示
400 1 wcom(0xb0+page); // 设定页地址,设定page命令是0xB0,共 9 page
401 1 wcom(0x10+(0x0f&(seg>>4))); // 设定列地址, 设定列地址命令0x01 , 列制止范围 0~131 , 写高四位列地
-址
402 1 wcom(0x0f&seg); // 写低四位列地址
403 1 for(zmseg=16;zmseg>0;zmseg--)
404 1 {
405 2 wdata(hanzi[cod*32+zmseg]); // 连续写入16个数据
406 2 }
407 1 wcom(0xb0+page-1); // 设定页地址,设定page命令是0xB0,共 9 page
-
408 1 wcom(0x10+(0x0f&(seg>>4))); // 设定列地址, 设定列地址命令0x01 , 列制止范围 0~131 , 写高四位列地
-址
409 1 wcom(0x0f&seg); // 写低四位列地址
410 1 for(zmseg=32;zmseg>16;zmseg--)
411 1 {
412 2 wdata(hanzi[cod*32+zmseg]); // 连续写入16个数据
413 2 }
414 1 }
415
416
417 /********************************************/
418 /* 中文字符写入函数:CW_PR 32*32 */
419 /* 写入一个汉字 */
420 /* */
421 /********************************************/
422 void writeonebig(unsigned char cod,unsigned char page,unsigned char seg)
423 { unsigned char zmseg;
424 1
425 1 wcom(0xaf);// 开显示
426 1 wcom(0xb0+page); // 设定页地址,设定page命令是0xB0,共 9 page
427 1 wcom(0x10+(0x0f&(seg>>4))); // 设定列地址, 设定列地址命令0x01 , 列制止范围 0~131 , 写高四位列地
-址
428 1 wcom(0x0f&seg); // 写低四位列地址
429 1 for(zmseg=32;zmseg>0;zmseg--)
430 1 {
431 2 wdata(hanzibig[cod*128+zmseg]); // 连续写入32个数据
432 2 }
433 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -