📄 lcd12864.lst
字号:
C51 COMPILER V8.02 LCD12864 06/21/2008 15:17:30 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN LCD12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG52.H>
2 #include "LCD12864.h"
3 #include "ZK.h"
4 //#include"common.h"
5
6
7
8
9
10 /*忙判别*/
11 void lcd_busy(void)
12 {
13 1 p_di=0;p_rw=1;P0=0xff;
14 1 while(1)
15 1 {
16 2 p_e=1;
17 2 if(P0<0x80) break;
18 2 p_e=0;
19 2 }
20 1 p_e=0;
21 1 p_rw=0;
22 1 }
23
24 /*设置xy*/
25 void set_xy(uchar x,uchar y)
26 {
27 1 if (x>=64)
28 1 {
29 2 p_csa=0;p_csb=1;
30 2 }
31 1 else
32 1 {
33 2 p_csb=0;p_csa=1;
34 2 }
35 1 lcd_busy();
36 1 p_di=0;P0=0x40|x;p_e=1;p_e=0;
37 1 lcd_busy();
38 1 p_di=0;P0=0xb8|y;p_e=1;p_e=0;
39 1 P0=0xff;
40 1 }
41
42 void lw(uchar x,uchar y,uchar dd)
43 {
44 1 set_xy(x,y);
45 1 lcd_busy();p_di=1;P0=dd;p_e=1;p_e=0;
46 1 P0=0xff;
47 1 }
48
49 /*显示初始化*/
50 #pragma disable
51 void lcd_init(void)
52 {
53 1 uchar x,y;
54 1
55 1 /*开显示*/
C51 COMPILER V8.02 LCD12864 06/21/2008 15:17:30 PAGE 2
56 1 p_e=p_di=0;
57 1 p_csa=p_csb=0;
58 1 p_csa=1;lcd_busy();P0=0x3f;p_e=1;p_e=0;p_csa=0;
59 1 p_csb=1;lcd_busy();P0=0x3f;p_e=1;p_e=0;p_csb=0;
60 1 /*0行开始显示*/
61 1 p_csa=1;lcd_busy();p_di=0;P0=0xc0;p_e=1;p_e=0;p_csa=0;
62 1 p_csb=1;lcd_busy();p_di=0;P0=0xc0;p_e=1;p_e=0;p_csb=0;
63 1 for (y=0;y<8;y++)
64 1 {
65 2 for (x=0;x<128;x++) lw(x,y,0);
66 2 }
67 1 }
68
69
70 //显示汉字,fb==1:反白显示
71 void dh(uchar x,uchar y,uchar n,uchar fb)
72 {
73 1 uchar i,dd;
74 1 for (i=0;i<16;i++)
75 1 {
76 2 dd=hz[n].Msk[i];
77 2 if (fb) dd=255-dd;
78 2 lw(x*8+i,y,dd);
79 2 dd=hz[n].Msk[i+16];
80 2 if (fb) dd=255-dd;
81 2 lw(x*8+i,y+1,dd);
82 2 }
83 1 }
84
85 //显示字符,fb==1:反白显示
86 void da(uchar x,uchar y,uchar n,uchar fb)
87 {
88 1 uchar i,dd;
89 1 n-=32;
90 1 if (n>128) n=0;
91 1 if (fb) dd=255; else dd=0;
92 1 lw(x*8,y,dd);
93 1 lw(x*8,y+1,dd);
94 1 for (i=0;i<8;i++)
95 1 {
96 2 dd=asc[i+n*16];
97 2 if (fb) dd=255-dd;
98 2 lw(x*8+i+1,y,dd);
99 2 dd=asc[i+n*16+8];
100 2 if (fb) dd=255-dd;
101 2 lw(x*8+i+1,y+1,dd);
102 2 }
103 1 }
104
105 void print_str(uchar x,uchar y,char *str,uchar fb)
106 {
107 1 uchar c1,c2,i,j;
108 1
109 1 j=0; //字符串是最后一位是0结尾?
110 1 while(str[j]) //如果不是最后一位则进入循环
111 1 {
112 2 c1=str[j];
113 2 if(c1>128)
114 2 {
115 3 c2=str[j+1];
116 3 for(i=0;i<HZMAX;i++)
117 3 {
C51 COMPILER V8.02 LCD12864 06/21/2008 15:17:30 PAGE 3
118 4 if(c1==hz[i].Index[0] && c2==hz[i].Index[1])
119 4 {
120 5 break;
121 5 }
122 4 }
123 3 if(i<HZMAX)
124 3 {
125 4 /* Found HZ */
126 4 dh(j+x,y,i,fb);
127 4 }
128 3 else
129 3 {
130 4 /* Not Found HZ */
131 4 dh(j+x,y,0,0);
132 4 }
133 3 j+=2;
134 3 }
135 2 else
136 2 {
137 3 da(x+j,y,c1,fb);
138 3 j++;
139 3 }
140 2 }
141 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 634 ----
CONSTANT SIZE = 2862 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 16
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -