📄 main.lst
字号:
165 1
166 1 write_LCD_command(ROW+0x80); //送入垂直地址
167 1 write_LCD_command(xlabel+0x80); //再送入水平地址
168 1
169 1 if(xlabel_bit<8)
170 1 {
171 2 switch(color)
172 2 {
173 3 case 0:Read_H &= (~(0x01<<(7-xlabel_bit)));//若变白
174 3 break;
175 3 case 1:Read_H |= (0x01<<(7-xlabel_bit));//若涂黑
176 3 break;
177 3 case 2:Read_H ^= (0x01<<(7-xlabel_bit));//若反转
178 3 break;
179 3 default:break;
C51 COMPILER V8.02 MAIN 05/09/2012 00:01:34 PAGE 4
180 3 }
181 2 write_LCD_data(Read_H);//将数据写入GDRAM
182 2 write_LCD_data(Read_L);//先写高位,再写低位(地址指针顺序)
183 2 }
184 1 else
185 1 {
186 2 switch(color)//color设置
187 2 {
188 3 case 0: Read_L &= (~(0x01<<(15-xlabel_bit)));//若变白
189 3 break;
190 3 case 1: Read_L |= (0x01<<(15-xlabel_bit));//若涂黑
191 3 break;
192 3 case 2: Read_L ^= (0x01<<(15-xlabel_bit));//若反转
193 3 break;
194 3 default:break;
195 3 }
196 2 write_LCD_data(Read_H);
197 2 write_LCD_data(Read_L);//写入数据
198 2 }
199 1
200 1 write_LCD_command(0x30);//回到普通模式
201 1 }
202
203 void main()
204 {
205 1 uchar i,j;
206 1 uchar num;
207 1 uchar w=10,A=6;
208 1 init_LCD();
209 1 Clear_GDRAM();
210 1 write_LCD_command(0x36);
211 1 display_BMP(ZB);
212 1 while(1)
213 1 {
214 2 write_LCD_command(0x30);
215 2 write_LCD_command(0x80);
216 2 write_LCD_data('T');
217 2 write_LCD_data(':');
218 2 write_LCD_data(2*w/100+0x30);
219 2 write_LCD_data(2*w%100/10+0x30);
220 2 write_LCD_data(2*w%10+0x30);
221 2
222 2 write_LCD_command(0x83);
223 2 write_LCD_data('A');
224 2 write_LCD_data(':');
225 2 write_LCD_data(A/10+0x30);
226 2 write_LCD_data(A%10+0x30);
227 2 write_LCD_command(0x36);
228 2 for(i=13;i<128;i++)
229 2 {
230 3 j=35-A*sin((i-13)*3.14/w);
231 3 Draw_dots(i,j,1);
232 3 delay(400);
233 3 }
234 2 /**********以下为按键扫描函数**************/
235 2 if(KEY1==0) //模式键按下
236 2 {
237 3 delay(2000);
238 3 if(KEY1==0)
239 3 {
240 4 while(!KEY1);
241 4 key_value++;
C51 COMPILER V8.02 MAIN 05/09/2012 00:01:34 PAGE 5
242 4 if(key_value>2)
243 4 key_value=0;
244 4 }
245 3 }
246 2 if(key_value==1) //若选择的是周期模式
247 2 {
248 3 write_LCD_command(0x30);
249 3 write_LCD_command(0x86);
250 3 for(num=0;num<4;num++)
251 3 {
252 4 write_LCD_data(HZ1[num]); //显示"周期"汉字
253 4 }
254 3 if(KEY2==0) //加键按下时
255 3 {
256 4 delay(1500);
257 4 if(KEY2==0)
258 4 {
259 5 while(!KEY2);
260 5 w=w+5; //w加
261 5 if(w==65)
262 5 w=10;
263 5 Clear_GDRAM();
264 5 write_LCD_command(0x36);//重新显示图形
265 5 display_BMP(ZB);
266 5 }
267 4 }
268 3 if(KEY3==0)
269 3 {
270 4 delay(2000);
271 4 if(KEY3==0)
272 4 {
273 5 while(!KEY3);
274 5 if(w>=10)
275 5 w=w-5;
276 5 Clear_GDRAM();
277 5 write_LCD_command(0x36);
278 5 display_BMP(ZB); //重新显示图形
279 5 }
280 4 }
281 3 }
282 2
283 2 if(key_value==2) //若选择的是幅度模式
284 2 {
285 3 write_LCD_command(0x30);
286 3 write_LCD_command(0x86);
287 3 for(num=0;num<4;num++)
288 3 {
289 4 write_LCD_data(HZ2[num]);
290 4 }
291 3 if(KEY2==0)
292 3 {
293 4 delay(1500);
294 4 if(KEY2==0)
295 4 {
296 5 while(!KEY2);
297 5 A=A+2;
298 5 if(A==22)
299 5 A=8;
300 5 Clear_GDRAM();
301 5 write_LCD_command(0x36);
302 5 display_BMP(ZB);
303 5 }
C51 COMPILER V8.02 MAIN 05/09/2012 00:01:34 PAGE 6
304 4 }
305 3 if(KEY3==0)
306 3 {
307 4 delay(2000);
308 4 if(KEY3==0)
309 4 {
310 5 while(!KEY3);
311 5 if(A>=6)
312 5 A=A-2;
313 5 Clear_GDRAM();
314 5 write_LCD_command(0x36);
315 5 display_BMP(ZB);
316 5 }
317 4 }
318 3 }
319 2 }
320 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 990 ----
CONSTANT SIZE = 768 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 6
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 + -