ht1611.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:11k
源码类别:

DVD

开发平台:

C/C++

  1. #include "user_init.h"
  2. #include "config.h"
  3. #include "global.h"
  4. #include "vfdfunc.h"
  5. #include "vfd_7seg.h"
  6. #include "stdlib.h"
  7. #define OFFSET 20
  8. #define MAX_POS 11 
  9. const UINT8 vfd_disc[] = {0,1,2,3,4,5,6,7,8,9,10,11}; 
  10. const UINT8 vfd_7seg_p[][2]={{6,7},{9,10},{12,13},{15,16},{18,19},{21,22},{24,25},{27,28},{30,31},{33,34}};//7 seg position BYTE
  11. const UINT16 vfd_char[26]=
  12. {
  13. VFD_7SEG_A,
  14. VFD_7SEG_B,
  15. VFD_7SEG_C,
  16. VFD_7SEG_D,
  17. VFD_7SEG_E,
  18. VFD_7SEG_F,
  19. VFD_7SEG_G,
  20. VFD_7SEG_H,
  21. VFD_7SEG_I,
  22. VFD_7SEG_J,
  23. VFD_7SEG_K,
  24. VFD_7SEG_L,
  25. VFD_7SEG_M,
  26. VFD_7SEG_N,
  27. VFD_7SEG_O,
  28. VFD_7SEG_P,
  29. VFD_7SEG_P,//q
  30. VFD_7SEG_R,
  31. VFD_7SEG_S,
  32. VFD_7SEG_T,
  33. VFD_7SEG_U,
  34. VFD_7SEG_U,//v
  35. VFD_7SEG_W,
  36. VFD_7SEG_X,
  37. VFD_7SEG_Y,
  38. VFD_7SEG_Z //z
  39. };
  40. const  UINT16  vfd_digit[] = 
  41. {
  42.   VFD_7SEG_0,
  43.   VFD_7SEG_1,
  44.   VFD_7SEG_2,
  45.   VFD_7SEG_3,
  46.   VFD_7SEG_4,
  47.   VFD_7SEG_5,
  48.   VFD_7SEG_6,
  49.   VFD_7SEG_7,
  50.   VFD_7SEG_8,
  51.   VFD_7SEG_9
  52. };
  53. /****************************************************************************************/
  54. /*  cpy_src_len: bit 8 is 1 means that bit 8 means that only show partial string between 0 and cpy_src_len */
  55. /*         bit 8 is 0: normal show string, that is copy total string */
  56. /*         bit0~bit7 mean that copied source length */
  57. /*  start_p: start position of VFD for show string(position:0~9) */
  58. /****************************************************************************************/
  59. void  vfd_set_str(UINT8 id,BYTE start_p, BYTE cpy_src_len, char *s)
  60. {
  61. UINT8 i,j;
  62. UINT16 c=0;
  63.         if(id) {//english id
  64. //s=(char *)_OsdMessegeFont1[id][0];
  65.                 s=(char *)_OsdMessegeFont1[0][id][0];
  66.         }
  67. if(cpy_src_len&0x80)//bit 8 means that only show 0~index data
  68. i=cpy_src_len&0x7F;
  69. else
  70. i=strlen(s);
  71. //linebuf[20]=0;
  72. for(j=MAX_POS;j>0;j--)
  73. {
  74. if(i>0)
  75. {
  76. i--;
  77. if( (s[i]>='a')&&(s[i]<='z') )
  78. c=vfd_char[s[i]-0x20-'A'];
  79. else if( (s[i]>='A')&&(s[i]<='Z') )
  80. c=vfd_char[s[i]-'A'];
  81. else if( (s[i]>='0')&&(s[i]<='9') )
  82. c=vfd_digit[s[i]-'0'];
  83. else
  84. {
  85. if(s[i]==0x20)
  86. {
  87. c=0;
  88. }
  89. }
  90. linebuf[2*j+OFFSET]=c>>8;
  91.     linebuf[2*j-1+OFFSET]=c&0x00ff;
  92. }else
  93. {
  94. linebuf[2*j+OFFSET]=0x00;
  95.     linebuf[2*j-1+OFFSET]=0x00; 
  96.         }
  97. }/*for loop*/
  98.  
  99. //  this a new define(PT6311)   chichang 2001 5/26
  100. /************************       PT6311    ******************************
  101. *                     
  102. **               7   7   7   7   7   7   7   7   7   7  
  103. ***      _   _   _   _   _   _   _   _   _   _   _   _   _
  104. ** 
  105. *          BYTE 6    9  12  15  18  21  24   27  30  33 
  106. *      7   10  13  16  19  22  25   28  31  34 
  107. *
  108. *               T2  T1  T0  P1  P0  C0   M1  M0  S1  S0    
  109. ************************************************************************/
  110.      
  111.      for(i=start_p,j=start_p*2+3;i<10;i++,j+=2)
  112.      {
  113.      
  114.       vfd_mem[vfd_7seg_p[i][0]] =  linebuf[j+OFFSET];
  115.       vfd_mem[vfd_7seg_p[i][1]] =  linebuf[(j+1)+OFFSET];
  116.      
  117.      }
  118.      #if 0
  119.      vfd_mem[vfd_7seg_p[3][0]] =  linebuf[9+OFFSET];
  120.      vfd_mem[vfd_7seg_p[3][1]] =  linebuf[10+OFFSET];
  121.      vfd_mem[vfd_7seg_p[4][0]] =  linebuf[11+OFFSET];
  122.      vfd_mem[vfd_7seg_p[4][1]] =  linebuf[12+OFFSET];
  123.      vfd_mem[vfd_7seg_p[5][0]] =  linebuf[13+OFFSET];
  124.      vfd_mem[vfd_7seg_p[5][1]] =  linebuf[14+OFFSET];
  125.      vfd_mem[vfd_7seg_p[6][0]] =  linebuf[15+OFFSET];
  126.      vfd_mem[vfd_7seg_p[6][1]] =  linebuf[16+OFFSET];
  127.      vfd_mem[vfd_7seg_p[7][0]] =  linebuf[17+OFFSET];
  128.      vfd_mem[vfd_7seg_p[7][1]] =  linebuf[18+OFFSET];
  129.      vfd_mem[vfd_7seg_p[8][0]] =  linebuf[19+OFFSET];
  130.      vfd_mem[vfd_7seg_p[8][1]] =  linebuf[20+OFFSET];
  131.      vfd_mem[vfd_7seg_p[9][0]] =  linebuf[21+OFFSET];
  132.      vfd_mem[vfd_7seg_p[9][1]] =  linebuf[22+OFFSET];
  133.     #endif
  134.       #if 0
  135.       vfd_mem[VFDA_T20] =  linebuf[3+OFFSET];
  136.       vfd_mem[VFDA_T21] =  linebuf[4+OFFSET];
  137.       vfd_mem[VFDA_T10] =  linebuf[5+OFFSET];
  138.       vfd_mem[VFDA_T11] =  linebuf[6+OFFSET];
  139.       vfd_mem[VFDA_T00] =  linebuf[7+OFFSET];
  140.       vfd_mem[VFDA_T01] =  linebuf[8+OFFSET];
  141.       vfd_mem[VFDA_P10] =  linebuf[9+OFFSET];
  142.       vfd_mem[VFDA_P11] =  linebuf[10+OFFSET];
  143.       vfd_mem[VFDA_P00] =  linebuf[11+OFFSET];
  144.       vfd_mem[VFDA_P01] =  linebuf[12+OFFSET];
  145.       vfd_mem[VFDA_CHAR00] = linebuf[13+OFFSET];
  146.       vfd_mem[VFDA_CHAR01] = linebuf[14+OFFSET];
  147.       vfd_mem[VFDA_M10] = linebuf[15+OFFSET];
  148.       vfd_mem[VFDA_M11] = linebuf[16+OFFSET];
  149.       vfd_mem[VFDA_M00] = linebuf[17+OFFSET];
  150.       vfd_mem[VFDA_M01] = linebuf[18+OFFSET];
  151.       vfd_mem[VFDA_S10] = linebuf[19+OFFSET];
  152.       vfd_mem[VFDA_S11] = linebuf[20+OFFSET];
  153.       vfd_mem[VFDA_S00] = linebuf[21+OFFSET];         /* low byte  */
  154.       vfd_mem[VFDA_S01] = linebuf[22+OFFSET];    /* high byte */
  155.       #endif
  156.       
  157.      // vfd_mem[36] = 0xff;  //kenny mark it 2001/9/24
  158.      // vfd_mem[37] = 0xff;
  159.      // vfd_mem[38] = 0x00; 
  160. }
  161. void  vfd_set_welcome(int index)
  162. {
  163.        
  164.        char light_str[]="WELCOME TO NINTAUS";
  165.         
  166. vfd_set_str(0,0,0x80|index,light_str);//for  jingzhen scrolling vfd
  167. }
  168. UINT16 vfd_set_disc_run(UINT16 index)
  169. {
  170. if(adv_search_time>=0)
  171.     {
  172.         vfd_set_dot(vfd_disc[index]);
  173. if(index>=11)
  174. {
  175. index=0;
  176. }else
  177. index++;
  178. vfd_reset_dot(vfd_disc[index]);     
  179.     }else
  180.     {
  181.         vfd_set_dot(vfd_disc[index]);
  182. if(index==0)
  183. {
  184. index=11;
  185. }else
  186. index--;
  187. vfd_reset_dot(vfd_disc[index]); 
  188.     
  189.     }
  190.     return index;
  191. }
  192. void vfd_set_cd_type(void)
  193. {
  194.   switch(cd_type_loaded)
  195.  {
  196.    case CDDVD:
  197.    vfd_set_dot(VFD_DOT_DVD); 
  198.    
  199.    break;
  200.    
  201.    case CDROM:
  202.    vfd_reset_dot(VFD_DOT_DVD);
  203.    break;
  204.    
  205.    case CDDA:
  206.    vfd_reset_dot(VFD_DOT_DVD);
  207.     vfd_set_str(0,0,0," CD       ");
  208.    break;
  209.    
  210.    case CDUNKNOWN:
  211.    vfd_reset_dot(VFD_DOT_DVD);
  212.    
  213.    break;
  214.    
  215.    default:
  216.    vfd_reset_dot(VFD_DOT_DVD);
  217.    vfd_set_str(0,0,0,"VCD       ");
  218.    
  219.    
  220.    break;
  221.    
  222.  
  223.  
  224.  
  225.  }
  226. }
  227. void vfd_set_showtime(void)
  228. {
  229.  #ifdef VFD_DOT_REMAIN   //zyf 2000/11/16
  230. if(remain)
  231. vfd_set_dot(VFD_DOT_REMAIN);
  232. else
  233. vfd_reset_dot(VFD_DOT_REMAIN);
  234. #endif
  235.  #ifdef VFD_DOT_CHAPTER  
  236.     vfd_set_dot(VFD_DOT_CHAPTER);     
  237. #endif
  238. #ifdef VFD_DOT_LINE          //zyf 2000/11/26
  239.    vfd_set_dot(VFD_DOT_LINE); 
  240. #endif
  241. //********  show time by chichang 2001 5/26    ********************
  242.        
  243.      if(cd_type_loaded!=CDDVD)
  244.      {
  245.       if(show_time_hh)
  246.       {
  247.        
  248.       psprintf(linebuf,"%02d%01d%02d%02d",disp_trk_now,show_time_hh,show_time_mm,show_time_ss);
  249.       vfd_set_str(0,3,0,linebuf);
  250.       vfd_set_dot(VFD_DOT_MIN);
  251.       
  252.          }
  253.          else
  254.          {
  255.          
  256.          psprintf(linebuf,"%02d %02d%02d",disp_trk_now,show_time_mm,show_time_ss);
  257.          vfd_set_str(0,3,0,linebuf);
  258.     
  259.          }
  260.         
  261.          
  262.         
  263.          vfd_set_dot(VFD_DOT_MINSEC);
  264.         
  265.         
  266. }
  267.         else
  268.         {
  269.         psprintf(linebuf,"%02d%02d%01d%02d%02d",get_tt_info(DISP_CH_Ns),disp_trk_now,show_time_hh,show_time_mm,show_time_ss);//nono 01/12/18
  270.         //psprintf(linebuf,"%02d%02d%01d%02d%02d",cd_total_trk(),disp_trk_now,show_time_hh,show_time_mm,show_time_ss);
  271.      vfd_set_str(0,0,0,linebuf);
  272.         vfd_set_dot(VFD_DOT_MIN);
  273.         vfd_set_dot(VFD_DOT_MINSEC);      
  274.         
  275.         
  276.         }
  277.         
  278.         
  279.         
  280.         
  281.     
  282. //*****************************************************************
  283. #if 0
  284. if(cd_type_loaded!=CDROM)  //jjding 2000/11/17
  285. {
  286. vfd_set_dot(VFD_DOT_CHAPTER);
  287. vfd_set_dot(VFD_DOT_TITLE);
  288. vfd_set_dot(VFD_DOT_VCD);
  289. vfd_set_dot(VFD_DOT_MINSEC);
  290. vfd_set_dot(VFD_DOT_H_M);
  291. //vfd_set_tt(cd_total_trk());
  292. //vfd_set_pp(disp_trk_now);       //VFD set min           
  293. }else if(play_state!=VCD_STATE_STOP)
  294. {
  295. /*if(play_state==VCD_STATE_MP3_DIRLIST)
  296.     {
  297.       vfd_set_pp(0);
  298.         vfd_set_mm(0);
  299.         vfd_set_ss(0);         
  300.     }else*/
  301.     { 
  302.         if(mp3_user_select>99)
  303.         {
  304.            vfd_set_tt(mp3_user_select/100);
  305.            vfd_set_pp(mp3_user_select%100);
  306.         }
  307.         else
  308.         {
  309.           vfd_set_tt(0);
  310.           vfd_set_pp(mp3_user_select);          
  311.         }
  312.     }
  313.     
  314. }else
  315. {    
  316.     vfd_set_tt(mp3_total_dir);
  317.     vfd_reset_dot(VFD_DOT_MINSEC);
  318.          vfd_set_mm(iso9660_file_cnt/100);
  319.          vfd_set_ss(iso9660_file_cnt%100);    
  320. }
  321. #endif  
  322. }
  323. void vfd_set_audio(void)
  324. {
  325.  int i;
  326.  
  327.    switch(cd_type_loaded)
  328.  {
  329.    case CDDVD:
  330.    for(i=VFD_DOT_AC3_FRAME;i<=VFD_DOT_AC3_96kHZ;i++)
  331.    vfd_set_dot(i);
  332.    
  333.    break;
  334.    
  335.    default:
  336.    vfd_set_dot(VFD_DOT_AC3_FRAME);
  337.    vfd_set_dot(VFD_DOT_AC3_FL);
  338.    vfd_set_dot(VFD_DOT_AC3_FR);
  339.    vfd_set_dot(VFD_DOT_AC3_SW);
  340.    
  341.    break;
  342.    
  343.  
  344.  
  345.  
  346.  }
  347.  
  348.  
  349.   #if 0
  350. #ifdef VFD_DOT_MIC1
  351. switch(audio_channel)
  352. {
  353. case CH_LR:
  354. case CH_RR:          
  355. case CH_LL:
  356. //  vfd_reset_dot(VFD_DOT_MIC1);
  357.         //  vfd_reset_dot(VFD_DOT_MIC2);                  
  358.           break;
  359.          
  360.         case CH_AUTO_L:
  361.         case CH_AUTO_R:
  362.           vfd_set_dot(VFD_DOT_MIC1);
  363.         vfd_set_dot(VFD_DOT_MIC2);
  364.             break;            
  365. }
  366. #endif
  367. #endif
  368. #if 0
  369. #ifdef VFD_DOT_1L
  370. switch(audio_effect)
  371. {
  372. case SE_STEREO:
  373.   vfd_reset_dot(VFD_DOT_1L);
  374.   vfd_reset_dot(VFD_DOT_2R);         
  375. break;
  376. case SE_HALL:
  377. case SE_LIVE:
  378. case SE_THEATER:
  379. case SE_ROOM:
  380.   vfd_set_dot(VFD_DOT_1L);
  381.   vfd_set_dot(VFD_DOT_2R);
  382. break;
  383. }
  384. #endif
  385. #endif
  386. }
  387. void vfd_set_playback(void)
  388. {
  389.   
  390. if(play_state==VCD_STATE_PAUSE)
  391. {   
  392.     //erase_vfd_mem();
  393.     vfd_set_dot(VFD_DOT_PAUSE);  
  394.     //vfd_set_str(STR_OS_PAUSE,"");
  395. }else
  396. {
  397.    vfd_reset_dot(VFD_DOT_PAUSE);      
  398. }
  399. if(rep_mode==REPEAT_TRACK)
  400. {
  401. vfd_set_dot(VFD_DOT_REPEAT); 
  402. }else if(rep_mode==REPEAT_DISC)
  403. {
  404.         vfd_set_dot(VFD_DOT_REPEAT); 
  405. }else
  406. {
  407. vfd_reset_dot(VFD_DOT_REPEAT); 
  408. }
  409. if(rep_ab_mode==REPEAT_FIND_A)
  410. {
  411. vfd_set_dot(VFD_DOT_REPAB);
  412. }else if(rep_ab_mode==REPEAT_FIND_B)
  413. {
  414. vfd_set_dot(VFD_DOT_REPAB);
  415. }else
  416. {
  417. vfd_reset_dot(VFD_DOT_REPAB);
  418. }
  419. #if 0
  420. if(prog_state)
  421. {
  422. if(play_state==VCD_STATE_STOP)
  423. vfd_set_dot(VFD_DOT_PGM);   
  424. }else
  425. {
  426. //vfd_set_pgm(0);
  427. vfd_reset_dot(VFD_DOT_PGM);   
  428. }
  429.         #endif
  430. #ifdef VFD_DOT_PAL
  431. {
  432. if(getVPP_TVsystem())
  433. {//pal
  434. vfd_set_dot(VFD_DOT_PAL);  
  435. vfd_reset_dot(VFD_DOT_NTSC);
  436. }else 
  437. {//ntsc
  438. vfd_set_dot(VFD_DOT_NTSC);  
  439. vfd_reset_dot(VFD_DOT_PAL);
  440. }
  441. }
  442. #endif  
  443. vfd_set_cd_type();
  444. vfd_set_showtime();
  445. vfd_set_audio();
  446. }