📄 vfdtask.lst
字号:
262 1 SET_VFD_CS;
263 1 }
264 /*===================================================================
265 描述: 设置VFD的模式 8G x 14P
266 参数: 无
267 返回: 无
268 ===================================================================*/
269 void VFD_ModeSet(void)
270 {
271 1 VFD_SendCmd(VFD_MODE);
272 1 }
273 /*===================================================================
274 描述: 设置VFD的显示打开,display on
275 参数: 无
276 返回: 无
277 ===================================================================*/
278 void VFD_DisplayOn(void)
279 {
280 1 VFD_SendCmd(0x8f);
281 1 }
282 /*===================================================================
283 描述: 清除VFD显示数据
284 参数: 无
285 返回: 无
286 ===================================================================*/
287 void VFD_ClearALL(void)
288 {
289 1 BYTE i;
290 1
291 1 for(i=0; i<Grid_Size; i++)
292 1 VFD_RAMData[i] = 0;
293 1 VFD_SendCmd(VFD_ADDRESS_INC);
294 1 CLEAR_VFD_CS;
295 1 Delay5US();
296 1 Delay5US();
297 1 VFD_SendByte(VFD_ADDRESS_MASK);
298 1 VFD_SendString(VFD_RAMData,6);
299 1 Delay5US();
300 1 Delay5US();
301 1 SET_VFD_CS;
302 1 }
303 //发送一系列数据
C51 COMPILER V7.20 VFDTASK 06/30/2005 14:02:58 PAGE 6
304 void VFD_SendString(WORD *str, BYTE length)
305 {
306 1 while(length)
307 1 {
308 2 VFD_SendByte(LowByte(*str));
309 2 VFD_SendByte(HighByte(*str));
310 2 length--;
311 2 if(length > 0)
312 2 str++;
313 2 }
314 1 }
315 /*===================================================================
316 描述: VFD显示特殊字符
317 参数: 要显示的VFD_ICON
318 返回: 无
319 ===================================================================*/
320 void VFD_ICON_Display(WORD ICON_Special)
321 {
322 1 VFD_SendCmd(VFD_ADDRESS_INC);
323 1 CLEAR_VFD_CS;
324 1 Delay5US();
325 1 Delay5US();
326 1 VFD_SendByte(VFD_ADDRESS_MASK);
327 1 VFD_SendByte(LowByte(ICON_Special));
328 1 VFD_SendByte(HighByte(ICON_Special));
329 1 Delay5US();
330 1 Delay5US();
331 1 SET_VFD_CS;
332 1 }
333 /*===================================================================
334 描述: VFD显示关闭
335 参数: 无
336 返回: 无
337 ===================================================================*/
338 /*void VFD_DisplayOff(void)
339 {
340 VFD_ClearALL();
341 VFD_SendCmd(VFD_Dimming[VFD_Dim] & 0x7F);
342 }
343 */
344 /*===================================================================
345 描述: 读取VFD的按键输入,并得到键值
346 参数: 无
347 返回: 无
348 ===================================================================*/
349 void VFD_SearchKey(void)
350 {
351 1 BYTE KEY_TEMP;
352 1 CLEAR_VFD_CS;
353 1 Delay5US();
354 1 VFD_SendByte(VFD_READ_KEY);
355 1 Delay5US();
356 1 KEY_TEMP = VFD_ReadByte();
357 1 VFD_ReadByte();
358 1 VFD_ReadByte();
359 1 Delay5US();
360 1 SET_VFD_CS;
361 1 if(KEY_TEMP != 0)
362 1 {
363 2 if(Key_Timer == 0)
364 2 Key_Timer = 1;
365 2 Panel_Key = KEY_TEMP;
C51 COMPILER V7.20 VFDTASK 06/30/2005 14:02:58 PAGE 7
366 2 }
367 1 else
368 1 {
369 2 if(Panel_Key != 0)
370 2 {
371 3 if(Key_Timer > 40)
372 3 {
373 4 Panel_Key = 8;
374 4 }
375 3 Key_Timer = 0;
376 3 Panel_KeyAct = 1;
377 3 }
378 2 }
379 1 }
380 /*===================================================================
381 描述: VFD驱动控制芯片的初始化
382 参数: 无
383 返回: 无
384 ===================================================================*/
385 void VFD_Init(void)
386 {
387 1 BYTE i;
388 1 VFD_ModeSet();
389 1 VFD_DisplayOn();
390 1 for(i =0; i<6; i++)
391 1 VFD_RAMData[i] = 0; //显示RAM清零
392 1
393 1
394 1 VFD_WriteLedPort(0xF); //将代表POWER OFF的LED点亮,同时将代表POWER ON的LED灯熄灭
395 1 VFD_SendCmd(VFD_ADDRESS_INC); //送写显示存储器指令,并将地址设置为自增模式
396 1
397 1 CLEAR_VFD_CS; //将显示内容写入到VFD
398 1 Delay5US(); //这里是将全0值写入, 上电时清除VFD显示内容
399 1 Delay5US();
400 1 VFD_SendByte(VFD_ADDRESS_MASK);
401 1 VFD_SendString(VFD_RAMData,6);
402 1 Delay5US();
403 1 Delay5US();
404 1 SET_VFD_CS;
405 1 }
406
407 /*===================================================================
408 描述: VFD显示内容清零
409 参数: 无
410 返回: 无
411 ===================================================================*/
412 /*
413 void VFD_RAMZero(void)
414 {
415 BYTE i;
416 for(i = 0; i < Grid_Size; i++)
417 {
418 VFD_RAMData[i] = 0;
419 }
420 }
421 */
422 void Frequency_Display(void)
423 {
424 1 if(FM_AM_Select == FM_MODE)
425 1 {
426 2
427 2 VFD_DisplayNumber(8750 + DeltFMFreq * 5, 1, 1);
C51 COMPILER V7.20 VFDTASK 06/30/2005 14:02:58 PAGE 8
428 2 VFD_ICON_Display(ICON_FM | ICON_MHZ);
429 2 }
430 1 else
431 1 {
432 2 VFD_DisplayNumber(530 + DeltAMFreq * 5, 0, 1);
433 2 VFD_ICON_Display(ICON_AM | ICON_KHZ);
434 2 }
435 1
436 1 }
437 void Main_Display(void)
438 {
439 1 BYTE TEMP;
440 1 switch(Current_State)
441 1 {
442 2 case TUNER:
443 2 if(Channel_Display > 0)
444 2 {
445 3 String_Display[0] = 'C';
446 3 String_Display[1] = 'H';
447 3 String_Display[2] = ' ';
448 3 if((Scan_Channel+1) > 9)
449 3 {
450 4 TEMP = (Scan_Channel+1)/10;
451 4 String_Display[3] = '0' + TEMP;
452 4 }
453 3 else
454 3 String_Display[3] = ' ';
455 3 String_Display[4] = '0' + ((Scan_Channel+1) % 10);
456 3 VFD_DisplayString(String_Display,5);
457 3 Channel_Display--;
458 3 if(FM_AM_Select == FM_MODE)
459 3 VFD_ICON_Display(ICON_FM);
460 3
461 3 else
462 3 VFD_ICON_Display(ICON_AM);
463 3
464 3 }
465 2 else
466 2 Frequency_Display();
467 2 break;
468 2 case AUX1:
469 2
470 2 VFD_DisplayString("AUX 1", 5);
471 2 VFD_ICON_Display(0);
472 2 break;
473 2 case AUX2:
474 2
475 2 VFD_DisplayString("AUX 2", 5);
476 2 VFD_ICON_Display(0);
477 2 break;
478 2 case CH5:
479 2
480 2 VFD_DisplayString("6CH ", 5);
481 2 VFD_ICON_Display(0);
482 2 break;
483 2 }
484 1 }
485 /*===================================================================
486 描述: VFD任务调度函数
487 参数: 无
488 返回: 无
489 ===================================================================*/
C51 COMPILER V7.20 VFDTASK 06/30/2005 14:02:58 PAGE 9
490 void VFD_Task_Proc(void)
491 {
492 1 if( (TO_MAIN_DISPLAY == 0) && (Mute_Switch == 0) )
493 1 {
494 2 Main_Display();
495 2 FUNCTION_Count = 0;
496 2 Memory_Start = 0;
497 2 Digital_Number = 0;
498 2 }
499 1 else if((TO_MAIN_DISPLAY > 0) && (Memory_Start == 1))
500 1 {
501 2 if(FLASH_TEMP == 0)
502 2 {
503 3 String_Display[3] = (Digital_Number / 10) + '0';
504 3 String_Display[4] = (Digital_Number % 10) + '0';
505 3
506 3 }
507 2 else
508 2 {
509 3 String_Display[3] = ' ';
510 3 String_Display[4] = ' ';
511 3 }
512 2 VFD_DisplayString(String_Display,5);
513 2 }
514 1 }
515
516
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1405 ----
CONSTANT SIZE = 90 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 24
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 + -