?? 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 + -