📄 12232.lst
字号:
C51 COMPILER V7.08 12232 10/18/2006 17:09:25 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE 12232
OBJECT MODULE PLACED IN 12232.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12232.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*============================================================
2 功能:使用12232液晶显示图片演示
3 =============================================================*/
4 #include <AT89X52.H>
5 #include <ABSACC.H>
6 #include <ok.h>
7
8 #define uchar unsigned char
9 #define uint unsigned int
10
11 #define E1 P3_1 //块1 左边
12 #define E2 P3_2 //块2 右边
13 #define RW P3_3
14 #define E P3_4
15 #define A0 P3_0 //A0为1时是数据,0时为指令数据
16 #define DATA P1 //数据
17
18 extern unsigned char code Bmpt1[];
19 extern unsigned char code Bmpt2[];
20 extern unsigned char code Bmpt3[];
21 extern unsigned char code Bmpt4[];
22 extern unsigned char code Bmpt5[];
23 extern unsigned char code Bmpt6[];
24 extern unsigned char code Bmpt7[];
25 extern unsigned char code Bmptc[];
26 extern unsigned char code bmp001[];
27 extern unsigned char code Bmp08[];
28 extern unsigned char code Bmp07[];
29 extern unsigned char code Bmp06[];
30 extern unsigned char code Bmp05[];
31 extern unsigned char code Bmp04[];
32 extern unsigned char code Bmp03[];
33 extern unsigned char code Bmp02[];
34 extern unsigned char code Bmp01[];
35 extern unsigned char code Bmp012[];
36 extern unsigned char code Bmp003[];
37 extern unsigned char code Bmp002[];
38
39
40 //延时
41 void delay(unsigned int i)
42 {
43 1 unsigned char k=200;
44 1 while(i>0)
45 1 {
46 2 i--;
47 2 }
48 1 while(k>1)k--;
49 1 }
50
51 //左页
52 //发送数据
53 void OUTMD(unsigned char i)
54 {
55 1 A0=1; //写数据
C51 COMPILER V7.08 12232 10/18/2006 17:09:25 PAGE 2
56 1 // delay(1);
57 1 E1=1;
58 1 // delay(2);
59 1 DATA=i;
60 1 delay(1);
61 1 E1=0;
62 1 XBYTE[0X8001]=i;
63 1 }
64 //左页
65 //发送命令
66 void OUTMI(unsigned char i)
67 {
68 1 A0=0; //写指令
69 1 // delay(1);
70 1 E1=1;
71 1 // delay(2);
72 1 DATA=i;
73 1 delay(1);
74 1 E1=0;
75 1 XBYTE[0X8000]=i;
76 1 }
77 //右页
78 //发送数据
79 void OUTSD(unsigned char i)
80 {
81 1 A0=1; //写数据
82 1 // delay(1);
83 1 E2=1;
84 1 // delay(2);
85 1 DATA=i;
86 1 delay(1);
87 1 E2=0;
88 1 XBYTE[0X8003]=i;
89 1
90 1 }
91 //右页
92 //发送命令
93 void OUTSI(unsigned char i)
94 {
95 1 A0=0; //写指令
96 1 // delay(1);
97 1 E2=1;
98 1 // delay(2);
99 1 DATA=i;
100 1 delay(1);
101 1 E2=0;
102 1 XBYTE[0X8002]=i;
103 1 }
104
105
106
107 //初始化
108 void lcdini(void)
109 {
110 1 RW=0;
111 1 OUTMI(0XE2);
112 1 OUTSI(0XE2);//复位
113 1 OUTMI(0XAE);
114 1 OUTSI(0XAE);//POWER SAVE
115 1 OUTMI(0XA4);
116 1 OUTSI(0XA4);//动态驱动
117 1 OUTMI(0XA9);
C51 COMPILER V7.08 12232 10/18/2006 17:09:25 PAGE 3
118 1 OUTSI(0XA9);//1/32占空比
119 1 OUTMI(0XA0);
120 1 OUTSI(0XA0);//时钟线输出
121 1 OUTMI(0XEE);
122 1 OUTSI(0XEE);//写模式
123 1
124 1 OUTMI(0X00);
125 1 OUTMI(0XC0);
126 1 OUTSI(0X00);
127 1 OUTSI(0XC0);
128 1
129 1 OUTMI(0XAF);
130 1 OUTSI(0XAF);
131 1
132 1 }
133 /*
134 函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用)
135 ------------------------------------------------------------------------
136 */
137 void SetPage(uchar page0,uchar page1)
138 {
139 1 OUTMI(0xB8|page1);OUTSI(0xB8|page0);
140 1 }
141
142 /*
143 --------------------------------------------------------------------------------
144 函数说明:同时设置主从列地址为0-121。(内函数,私有,用户不直接调用)
145 --------------------------------------------------------------------------------
146 */
147 void SetAddress(uchar address0,uchar address1)
148 {
149 1 OUTMI(address1);OUTSI(address0);
150 1 }
151
152 /*
153 --------------------------------------------------------------------------------
154
155 调用方式:void PutChar0(uchar ch)
156 函数说明:在右页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
157 --------------------------------------------------------------------------------
158 -*/
159 void PutCharR(uchar ch)
160 {
161 1 OUTSD(ch);
162 1 }
163
164 /*
165 --------------------------------------------------------------------------------
166
167 调用方式:void PutChar1(uchar ch)
168 函数说明:在左页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
169 --------------------------------------------------------------------------------
170 -*/
171 void PutCharL(uchar ch)
172 {
173 1 OUTMD(ch);
174 1 }
175
176 /*
177 --------------------------------------------------------------------------------
178
179 调用方式:void DrawBmp(bit layer,uchar width,uchar *bmp)
C51 COMPILER V7.08 12232 10/18/2006 17:09:25 PAGE 4
180 函数说明:画一个图,layer表示上下层,width是图形的宽,高都是16,bmp是
181 图形指针
182 使用zimo3软件,纵向取模,字节倒序/240字节
183 --------------------------------------------------------------------------------
184 -*/
185 void DrawBmp(bit layer,uchar width,uchar *bmp)
186 {
187 1 uchar x,address,i=0; //address表示显存的物理地址
188 1 uchar page=0; //page表示上下两页
189 1 bit window=0; //window表示左右两页
190 1 //putcharR //右边
191 1 //putcharL //左边
192 1
193 1 for (x=width;x>1;x--)
194 1 {
195 2 if (i>60) {window=1;address=i%61;}
196 2 else address=i;
197 2
198 2 if (layer==0) //显示一行八个字
199 2 {
200 3 SetPage(0,0);
201 3 SetAddress(address,address);
202 3 if (window==1)PutCharR(bmp[i]);
203 3 else PutCharL(bmp[i]);
204 3 SetPage(1,1);
205 3 SetAddress(address,address);
206 3 if (window==1)PutCharR(bmp[i+width]);
207 3 else PutCharL(bmp[i+width]);
208 3 }
209 2 else
210 2 { //显示第二行八个汉字
211 3 SetPage(2,2);
212 3 SetAddress(address,address);
213 3 if (window==1)PutCharR(bmp[i]);
214 3 else PutCharL(bmp[i]);
215 3 SetPage(3,3);
216 3 SetAddress(address,address);
217 3 if (window==1)PutCharR(bmp[i+width]);
218 3 else PutCharL(bmp[i+width]);
219 3 }
220 2 i++;
221 2
222 2 }
223 1 }
224
225
226 /*
227 --------------------------------------------------------------------------------
228
229 调用方式:void clrscr(void)
230 函数说明:清屏
231 --------------------------------------------------------------------------------
232 -*/
233 void clrscr(void)
234 {
235 1 uchar i;
236 1 uchar page;
237 1 for (page=0;page<4;page++)
238 1 {
239 2 SetPage(page,page);
240 2 SetAddress(0,0);
241 2 for (i=0;i<61;i++){PutCharR(0);PutCharL(0);}
C51 COMPILER V7.08 12232 10/18/2006 17:09:25 PAGE 5
242 2 }
243 1 }
244
245 //-----------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -