vfd_drv_ht1621.c
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:3k
源码类别:

DVD

开发平台:

C/C++

  1. /*
  2. ** FUNCTION
  3. ** polling_vfdr
  4. **
  5. ** DESCRIPTION
  6. ** check if polling-ready
  7. ** 
  8. ** history:
  9. ** 2004-7-19 15:09
  10. ** wanghaoying move the following functio for ht1621 here
  11. */
  12. void reset_vfd(void)   //for ht1621 init 
  13. {
  14. //#ifdef SUPPORT_VFD
  15. /* display mode ? 13d15s or 6d16s add by chichang 2001/6/6 */
  16. /*i want use arry and for statement to send init command
  17. but it's something wrong,so only do this.
  18. */
  19. regs0->iop_data[VFD_CMD]=(SYS_EN<<4);
  20. regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
  21. (FUN_VFD_WRITE | VFD_DAT_LEN0);
  22. WaitIopFunRdy(IOP_RDY_WAIT); 
  23. regs0->iop_data[VFD_CMD]=(TIMER_DIS<<4);
  24. regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
  25. (FUN_VFD_WRITE | VFD_DAT_LEN0);
  26. WaitIopFunRdy(IOP_RDY_WAIT);
  27. regs0->iop_data[VFD_CMD]=(WDT_DIS<<4);
  28. regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
  29. (FUN_VFD_WRITE | VFD_DAT_LEN0);
  30. WaitIopFunRdy(IOP_RDY_WAIT);
  31. regs0->iop_data[VFD_CMD]=(BIAS_1_3<<4);
  32. regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
  33. (FUN_VFD_WRITE | VFD_DAT_LEN0);
  34. WaitIopFunRdy(IOP_RDY_WAIT);
  35. regs0->iop_data[VFD_CMD]=(LCD_ON<<4);
  36. regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
  37. (FUN_VFD_WRITE | VFD_DAT_LEN0);
  38. WaitIopFunRdy(IOP_RDY_WAIT);                    
  39. init_vfd_clear();     
  40. }
  41. void polling_vfdr(void)    //ht1621 type vfd
  42. {
  43.     
  44. #ifdef SUPPORT_SPI_QSI
  45.   //not use
  46. #endif
  47. #ifndef  SUPPORT_SPI_QSI
  48.     
  49.     
  50. #ifdef CF_GPIO_CONTROL_COLOR
  51.     Polling_VFD_back_color();
  52. #endif
  53. #ifdef SUPPORT_VFD
  54. static UINT8 count = 0;
  55. static BYTE bWriteState=0;
  56. //UINT32 *VfdReadData;
  57. if(regs0->iop_data[0] & FUN_MASK)
  58. return;
  59. if(vfd_state == VFD_READ)  //we only use it to update vfd data
  60. {
  61. vfd_state = VFD_WRITE;
  62. update_vfd_data();
  63. }
  64. else
  65. {
  66. switch (bWriteState)
  67. {
  68. case 2:
  69. regs0->iop_data[VFD_CMD] = (count*2);//in cmd we only send address! write cmd deal in iop!
  70. regs0->iop_data[VFD_DAT0] = vfd_mem[count + 1] << 8 | vfd_mem[count];
  71. regs0->iop_data[VFD_DAT1] = vfd_mem[count + 3] << 8 | vfd_mem[count + 2];
  72. //regs0->iop_data[VFD_DAT2] = vfd_mem[count + 5] << 8 | vfd_mem[count + 4];
  73. regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
  74. (FUN_VFD_WRITE | VFD_DAT_LEN4);
  75. /* transfer data size add by chichang 2001 6/6 */
  76. count += 4;
  77. if(count == VFD_DISPLAY_SIZE)//vfd_display_size
  78. {
  79. count = 0;
  80. vfd_state = VFD_READ;
  81. }
  82. bWriteState=2;
  83. break;
  84. default:
  85. bWriteState=2;
  86. }//write state control
  87. }
  88. #endif//SUPPORT_VFD
  89. #endif  // support spi qsi
  90. }
  91. void write_vfd_led(UINT8 led_id)
  92. {
  93. }