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