📄 funclcd.lst
字号:
240 2 else
241 2 SingleData(col_x, ~(page_num[i]));
C51 COMPILER V7.50 FUNCLCD 06/10/2006 08:26:02 PAGE 5
242 2 }
243 1
244 1 SetRAMAddr(page_y+1,col_x);
245 1
246 1 for (i=8;i<16;i++)
247 1 {
248 2 if(flag==0)
249 2 SingleData(col_x,page_num[i]);
250 2 else
251 2 SingleData(col_x,~(page_num[i]));
252 2 }
253 1 }
254
255 //=================================================
256 //Function: HzDisplay
257 //Description: Send a 16 X 16 Dot of Chinese CHAR to LCD Display
258 //Parameters: *page_num,page_y_in,col_x_in,flag
259 //*page_num --- LCD Display Content's First Address
260 //page_y_in --- LCD Display Char of Row Address
261 //col_x_in --- LCD Display Char of Col Address
262 //flag --- 0 = Normal Display ;1 = Negative Display
263 //Call: SetRAMAddr(),SingleData()
264 //Returns: NO.
265 //Side Effects: NO.
266 //=================================================
267 void HzDisplay(uint8 *page_num, uint8 page_y,
268 uint8 col_x,bool flag)
269 {
270 1 data uint8 i;
271 1
272 1 SetRAMAddr(page_y,col_x);
273 1
274 1 for (i=0;i<16;i++)
275 1 {
276 2 if(flag==0)
277 2 SingleData(col_x,page_num[i]);
278 2 else
279 2 SingleData(col_x,~(page_num[i]));
280 2 }
281 1
282 1 SetRAMAddr(page_y+1,col_x);
283 1
284 1 for (i=16;i<32;i++)
285 1 {
286 2 if(flag==0)
287 2 SingleData(col_x,page_num[i]);
288 2 else
289 2 SingleData(col_x,~(page_num[i]));
290 2 }
291 1 }
292
293 //=================================================
294 //Function: InitLcd
295 //Description: Init LCD
296 //Parameters: NO.
297 //Returns: NO.
298 //Side Effects:
299 //=================================================
300 //-------------------------------
301 //显示LOGO画面
302 void LOGO(void)
303 {
C51 COMPILER V7.50 FUNCLCD 06/10/2006 08:26:02 PAGE 6
304 1 int8 j,k;
305 1 uint8 tempkey;
306 1
307 1 LCD_LED = 0;
308 1
309 1 for(k=63;k>=0;k--)
310 1 {
311 2
312 2 for(j=0;j<8;j++)
313 2 {
314 3 tempkey=127-k;
315 3 SetRAMAddr(j,k);
316 3 SingleData(k,0xFF);
317 3 SetRAMAddr(j,tempkey);
318 3 SingleData(tempkey,0xFF);
319 3 }
320 2 }
321 1
322 1 Delay(40);
323 1
324 1 //LCD Display Logo Bmp
325 1 for(k=0;k<=63;k++)
326 1 {
327 2
328 2 for(j=0;j<8;j++)
329 2 {
330 3 tempkey=127-k;
331 3 SetRAMAddr(j,k);
332 3 SingleData(k,logobmp[j][k]);
333 3 SetRAMAddr(j,tempkey);
334 3 SingleData(tempkey,logobmp[j][tempkey]);
335 3 }
336 2
337 2 Delay(3);
338 2 tempkey=KeyScan();
339 2
340 2 if(tempkey !=0xFF)return;
341 2
342 2 }
343 1
344 1 Delay(40);
345 1
346 1 for(k=0;k<=63;k++)
347 1 {
348 2 for(j=0;j<8;j++)
349 2 {
350 3 tempkey=63+k;
351 3 SetRAMAddr(j,k);
352 3 SingleData(k,~logobmp[j][k]);
353 3 SetRAMAddr(j,tempkey);
354 3 SingleData(tempkey,~logobmp[j][tempkey]);
355 3 }
356 2
357 2 Delay(3);
358 2 tempkey=KeyScan();
359 2 if(tempkey !=0xFF)return;
360 2 }
361 1
362 1 j=4;
363 1 do
364 1 {
365 2 Delay(20);
C51 COMPILER V7.50 FUNCLCD 06/10/2006 08:26:02 PAGE 7
366 2 tempkey=KeyScan();
367 2 if(tempkey !=0xFF)return;
368 2 }while(--j!=0);
369 1
370 1 for(k=63;k>=0;k--)
371 1 {
372 2
373 2 for(j=0;j<8;j++)
374 2 {
375 3 tempkey=127-k;
376 3 SetRAMAddr(j,k);
377 3 SingleData(k,logobmp[j][k]);
378 3 SetRAMAddr(j,tempkey);
379 3 SingleData(tempkey,logobmp[j][tempkey]);
380 3 }
381 2
382 2 Delay(3);
383 2 tempkey=KeyScan();
384 2 if(tempkey !=0xFF)return;
385 2 }
386 1 //Wait after return
387 1 j=50;
388 1 do
389 1 {
390 2 Delay(40);
391 2 tempkey=KeyScan();
392 2 if(tempkey !=0xFF)return;
393 2 }while(--j!=0);
394 1 }
395
396 //=================================================
397 //Function: DispLay_RTC
398 //Description: Display Date And Time
399 //Parameters: No.
400 //Call: HzDisplay,Msingle_font_pattern,Get_Time
401 //Returns: NO.
402 //Side Effects:
403 //=================================================
404 void DispRTC(bool fflag,uint8 *Sys_Date_Time)
405 {
406 1 uint8 tempvar;
407 1
408 1 //显示固定字符
409 1 if (fflag==0)
410 1 {
411 2 HzDisplay(Xin,0,2,0);
412 2 HzDisplay(Qi,0,18,0);
413 2
414 2 Msingle_font_pattern (mh,0,80,0);
415 2 Msingle_font_pattern (mh,0,104,0);
416 2
417 2 HzDisplay(Year,2,40,0);
418 2 HzDisplay(Month,2,72,0);
419 2 HzDisplay(Day,2,104,0);
420 2
421 2 Msingle_font_pattern (English_Offset[2],2,8,0);
422 2 Msingle_font_pattern (English_Offset[0],2,16,0);
423 2 }
424 1
425 1 //显示星期几于左上角
426 1 HzDisplay(Week[Sys_Date_Time[5]],0,34,0);
427 1 //显示时间于右上角
C51 COMPILER V7.50 FUNCLCD 06/10/2006 08:26:02 PAGE 8
428 1 //hh
429 1 CY=0;
430 1 Sys_Date_Time[2]&=0x3F;
431 1 tempvar=(Sys_Date_Time[2]&0xF0)>>4;
432 1 Msingle_font_pattern (English_Offset[tempvar],0,64,0);
433 1 tempvar=Sys_Date_Time[2]&0x0F;
434 1 Msingle_font_pattern (English_Offset[tempvar],0,72,0);
435 1 //mm
436 1 CY=0;
437 1 tempvar=(Sys_Date_Time[1]&0xF0)>>4;
438 1 Msingle_font_pattern (English_Offset[tempvar],0,88,0);
439 1 tempvar=Sys_Date_Time[1]&0x0F;
440 1 Msingle_font_pattern (English_Offset[tempvar],0,96,0);
441 1 //ss
442 1 Sys_Date_Time[0]&=0x7F;
443 1 CY=0;
444 1 tempvar=(Sys_Date_Time[0]&0xF0)>>4;
445 1 Msingle_font_pattern (English_Offset[tempvar],0,112,0);
446 1 tempvar=Sys_Date_Time[0]&0x0F;
447 1 Msingle_font_pattern (English_Offset[tempvar],0,120,0);
448 1
449 1 //显示时间于屏幕中间
450 1 //year
451 1 CY=0;
452 1 tempvar=(Sys_Date_Time[6]&0xF0)>>4;
453 1 Msingle_font_pattern (English_Offset[tempvar],2,24,0);
454 1 tempvar=Sys_Date_Time[6]&0x0F;
455 1 Msingle_font_pattern (English_Offset[tempvar],2,32,0);
456 1 //month
457 1 CY=0;
458 1 tempvar=(Sys_Date_Time[4]&0xF0)>>4;
459 1 Msingle_font_pattern (English_Offset[tempvar],2,56,0);
460 1 tempvar=Sys_Date_Time[4]&0x0F;
461 1 Msingle_font_pattern (English_Offset[tempvar],2,64,0);
462 1 //day
463 1 CY=0;
464 1 tempvar=(Sys_Date_Time[3]&0xF0)>>4;
465 1 Msingle_font_pattern (English_Offset[tempvar],2,88,0);
466 1 tempvar=Sys_Date_Time[3]&0x0F;
467 1 Msingle_font_pattern (English_Offset[tempvar],2,96,0);
468 1
469 1 if (fflag==0) fflag=1;
470 1 }
471
472 //=================================================
473 //Function: Display_Line
474 //Description: Display one System Main Menu
475 //Parameters: num,page_y_in,startcol,len,flag
476 //Call:
477 //Returns: NO.
478 //Side Effects:
479 //=================================================
480 void Display_Line( uint8 page_y_in,
481 uint8 startcol,uint8 len, bool flag, uint8** menuitem)//uint8 menuno,
482 {
483 1 uint8 i;
484 1
485 1 if ((len*16)>(128-startcol)) return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -