?? z12864.lst
字號:
C51 COMPILER V8.08 Z12864 12/07/2007 16:07:50 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE Z12864
OBJECT MODULE PLACED IN Z12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Z12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 //[字符圖象輸出文件=hzk.c]
4 //[字體名稱=宋體]
5 //[字體大小=16]
6 //[字節方向=垂直]
7 //[字位順序=從低到高]
8
9 #include <reg51.h>
10 #include <math.h>
11 #include <hzk.c>
12
13
14 #define UP 0xfe
15 #define DOWN 0xfd
16 #define LEFT 0xfb
17 #define RIGHT 0xf7
18 #define ESC 0xdf
19 #define ENTER 0xef
20
21 #define BLACK 1
22 #define WHITE 0
23
24
25 #define MENU_BACK_COLOR WHITE //定義菜單系統當中的背景色
26 #define MENU_FONT_COLOR BLACK //定義菜單系統當中的文字色
27 #define MENU_SELE_COLOR BLACK//定義菜單系統當中被選擇的菜單項背景色
28 #define MENU_SELF_COLOR WHITE //定義菜單系統當中被選擇的菜單項文字色
29
30
31 #define Y_WIDTH_MENU 16
32 #define Dis_Menu_Num 4
33
34
35 #define Dis_X_MAX 127
36 #define Dis_Y_MAX 64
37 #define Key P1
38
39 unsigned char First_Index_old=0xff ;
40 unsigned char y_Index_old=0xff ;
41
42
43 code unsigned char Menu_String01[]={"繪點"};
44 code unsigned char Menu_String02[]={"繪直線"};
45 code unsigned char Menu_String03[]={"繪矩形"};
46 code unsigned char Menu_String04[]={"字符顯示"};
47 code unsigned char Menu_String05[]={"幫助"};
48
49 code unsigned char Menu_String06[]={"單個西文字符"};
50 code unsigned char Menu_String07[]={"西文字符串"};
51 code unsigned char Menu_String08[]={"中文字符"};
52 code unsigned char Menu_String09[]={"返回"};
53
54
55 code unsigned char Menu_List01_Config[]={5};
C51 COMPILER V8.08 Z12864 12/07/2007 16:07:50 PAGE 2
56 code unsigned char Menu_List02_Config[]={4};
57
58
59
60 code unsigned char *Menu_List01[]=//
61 {
62 (unsigned char *)Menu_List01_Config,
63 (unsigned char *)Menu_String01,
64 (unsigned char *)Menu_String02,
65 (unsigned char *)Menu_String03,
66 (unsigned char *)Menu_String04,
67 (unsigned char *)Menu_String05
68 };
69 code unsigned char *Menu_List02[]=//
70 {
71 (unsigned char *)Menu_List02_Config,
72 (unsigned char *)Menu_String06,
73 (unsigned char *)Menu_String07,
74 (unsigned char *)Menu_String08,
75 (unsigned char *)Menu_String09
76 };
77
78
79 unsigned char data Lcd_CurrentX,Lcd_CurrentY,Lcd_Mask;
80 unsigned char code LeftMask[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};
81 unsigned char code RightMask[]={0xff,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
82 unsigned char code Mask1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
83 unsigned char code Mask2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
84
85 //前兩位由5個口線決定,見SMG12864說明書 基本操作時序
86 //Epin—p2.7 R/W—p2.1 cs1—p2.3 cs2—p2.2 RS—p2.0
87 unsigned char xdata Lcd_Chip1_Cmd_W_Reg _at_ 0x8800;
88 unsigned char xdata Lcd_Chip2_Cmd_W_Reg _at_ 0x8400;
89 unsigned char xdata Lcd_Chip1_Data_W_Reg _at_ 0x8900;
90 unsigned char xdata Lcd_Chip2_Data_W_Reg _at_ 0x8500;
91 unsigned char xdata Lcd_Chip1_Data_R_Reg _at_ 0x8b00;
92 unsigned char xdata Lcd_Chip2_Data_R_Reg _at_ 0x8700;
93 unsigned char xdata Lcd_Chip1_Sta_R_Reg _at_ 0x8a00;
94 unsigned char xdata Lcd_Chip2_Sta_R_Reg _at_ 0x8600;
95
96 #define LCD_CMD_COL 0x40
97 #define LCD_CMD_PAGE 0xB8
98 #define LCD_CMD_ON 0x3F
99 #define LCD_CMD_OFF 0x3E
100 #define LCD_CMD_STARTLINE 0xC0
101 #define LCD_LEFT 0
102 #define LCD_TOP 0
103 #define LCD_RIGHT 127
104 #define LCD_BOTTOM 63
105
106 //延時子程序
107 void delay(unsigned int t)
108 { unsigned int i,j;
109 1 for(i=0;i<t;i++)
110 1 for(j=0;j<10;j++)
111 1 ;
112 1 }
113
114 //片1測忙
115 void lcdwaitidle1(void)
116 { while(((Lcd_Chip1_Sta_R_Reg)&0x80)==0x80);
117 1 }
C51 COMPILER V8.08 Z12864 12/07/2007 16:07:50 PAGE 3
118
119 //片2測忙
120 void lcdwaitidle2(void)
121 { while(((Lcd_Chip2_Sta_R_Reg)&0x80)==0x80);
122 1 }
123
124 //寫指令代碼到片1
125 void lcdwc1(unsigned char cmdcode)
126 { lcdwaitidle1();
127 1 Lcd_Chip1_Cmd_W_Reg=cmdcode;
128 1 }
129
130 //寫指令代碼到片2
131 void lcdwc2(unsigned char cmdcode)
132 { lcdwaitidle2();
133 1 Lcd_Chip2_Cmd_W_Reg=cmdcode;
134 1 }
135
136 //寫數據到片1
137 void lcdwd1(unsigned char dispdata)
138 { lcdwaitidle1();
139 1 Lcd_Chip1_Data_W_Reg=dispdata;
140 1 }
141
142 //寫數據到片2
143 void lcdwd2(unsigned char dispdata)
144 { lcdwaitidle2();
145 1 Lcd_Chip2_Data_W_Reg=dispdata;
146 1 }
147
148 //讀片1數據
149 unsigned char lcdrd1(void)
150 { lcdwaitidle1();
151 1 return Lcd_Chip1_Data_R_Reg;
152 1 }
153
154 //讀片2數據
155 unsigned char lcdrd2(void)
156 { lcdwaitidle2();
157 1 return Lcd_Chip2_Data_R_Reg;
158 1 }
159
160 //寫指令代碼
161 void lcdwc(unsigned char cmdcode)
162 { if((Lcd_CurrentX)<0x40)
163 1 lcdwc1(cmdcode);
164 1 else
165 1 lcdwc2(cmdcode);
166 1 }
167
168 //寫數據
169 void lcdwd(unsigned char dispdata)
170 { if(Lcd_CurrentX<64)
171 1 lcdwd1(dispdata);
172 1 else
173 1 lcdwd2(dispdata);
174 1 }
175
176 //內部數據地址指針定位
177 void lcdpos(void)
178 { lcdwc(LCD_CMD_COL|(Lcd_CurrentX&0x3f)); //設置地址列指針
179 1 lcdwc(LCD_CMD_PAGE|((Lcd_CurrentY/8)&0x7)); //設置地址頁指針
C51 COMPILER V8.08 Z12864 12/07/2007 16:07:50 PAGE 4
180 1 }
181
182 //讀數據
183 unsigned char lcdrd(void)
184 { unsigned char i;
185 1 lcdpos();
186 1 if(Lcd_CurrentX<64)
187 1 { i=lcdrd1();
188 2 i=lcdrd1(); //讀兩次
189 2 }
190 1 else
191 1 { i=lcdrd2();
192 2 i=lcdrd2();
193 2 }
194 1 lcdpos();
195 1 return i;
196 1 }
197
198 //當前坐標移動到下一個點
199 void lcdcursornext(void)
200 { Lcd_CurrentX++;
201 1 if(Lcd_CurrentX>LCD_RIGHT)
202 1 { Lcd_CurrentX=LCD_LEFT;
203 2 Lcd_CurrentY+=8;
204 2 if(Lcd_CurrentY>LCD_BOTTOM)
205 2 Lcd_CurrentY=LCD_TOP;
206 2 }
207 1 }
208
209 void displaybyte(unsigned char dispdata)
210 { lcdpos(); //內部數據地址指針定位
211 1 lcdwd(dispdata); //寫數據
212 1 lcdcursornext(); //當前坐標移動到下一個點
213 1 }
214
215 //整屏顯示
216 void lcdfill(unsigned char FillData)
217 { for(Lcd_CurrentX=LCD_LEFT,Lcd_CurrentY=LCD_TOP;1;)
218 1 { displaybyte(FillData);
219 2 if((Lcd_CurrentX==LCD_LEFT)&&(Lcd_CurrentY==LCD_TOP))
220 2 break;
221 2 }
222 1 }
223 /*//填充矩形
224 void rectfill(signed char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char FillData)
225 { for(Lcd_CurrentX=x0,Lcd_CurrentY=y0;1;)
226 { displaybyte( FillData);
227 if((Lcd_CurrentX==x1)&&(Lcd_CurrentY==y1))
228 break;
229 }
230 }
231
232 */
233
234
235
236
237
238
239
240
241
C51 COMPILER V8.08 Z12864 12/07/2007 16:07:50 PAGE 5
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256 #include <display.c>
257 #include <point.c>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -