标题: 机顶盒ct1642数码管显示测试 [打印本页]

作者: cccc888    时间: 2020-1-21 17:11
标题: 机顶盒ct1642数码管显示测试
今天测试一个中六九的面板显示板,IC是ct1642
代码从网上stm8移植过来.
好像不能一次锁存多位并显示多位,就是锁存新的,忘记旧的.
请指正.
  1. #include <STC89C5xRC.H>

  2. #include "intrins.h"
  3. sbit CT_CLK=P1^1;
  4. sbit CT_DATA=P1^0;

  5. code char Lcd_tab[17]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E};//共阴极

  6. static void ct1642_send_data(unsigned char ct_dis_data, unsigned char ct_com)

  7. {

  8. unsigned char ct_addr;                   //存储数码管位置

  9. unsigned char i;

  10. switch(ct_com)

  11. {

  12. case 0: {ct_addr=0xef; ;break;}

  13. //显示C1位数据 数码管为共阴极,将要点亮的COM置0以显示该COM



  14. case 1: {ct_addr=0xdf; break;} //显示C2位数据  



  15. case 2: {ct_addr=0xbf; break;} //显示C3位数据  

  16. case 3: {ct_addr=0x7f; break;} //显示C4位数据     

  17. case 4: {ct_addr=0xff; break;}  //扫描键盘,关闭COM1  

  18. default:{ct_addr=0xff; ct_dis_data=0x00;break;}   

  19. }



  20. for(i=0;i<8;i++)                   //发送8位地址

  21. {

  22. CT_CLK=0 ;

  23.         if( (ct_addr<<i)&0x80)


  24. {

  25. CT_DATA=1;

  26. }

  27. else

  28. {

  29. CT_DATA=0;

  30. }

  31. CT_CLK=1;//上升沿输出一位

  32. }



  33. CT_DATA=0;      //发送两个空位,补足要发送的18位

  34. CT_CLK=0 ;

  35. _nop_();//此处根据单片机的指令周期而定

  36. CT_CLK=1;



  37. CT_DATA=0;

  38. CT_CLK=0 ;

  39. _nop_();

  40. CT_CLK=1;

  41. for(i=0;i<8;i++)  //发送8位数据

  42. {

  43. CT_CLK=0 ;

  44. if( (ct_dis_data<<i)&0x80)

  45. {

  46. CT_DATA=1;

  47. }

  48. else

  49. {

  50. CT_DATA=0;

  51. }

  52. CT_CLK=1;

  53. }

  54. CT_CLK=1; //输出数据



  55. CT_DATA=0;

  56. _nop_();

  57. CT_DATA=1;





  58. CT_CLK=0 ;

  59. CT_DATA=0;

  60. _nop_();

  61. CT_DATA=1;
  62. CT_CLK=0;
  63. return;

  64. }


  65. void delay(unsigned char tme)
  66. {  unsigned char i;
  67.     i=tme;
  68.     while(tme--)while(i--);
  69. }
  70. void main(void)
  71. {  
  72.    CT_DATA=1;
  73.     CT_CLK=0;
  74.    
  75.     do
  76.     {ct1642_send_data(Lcd_tab[6],0);
  77.         //delay(100);
  78.     ct1642_send_data(Lcd_tab[5],1);
  79.          //delay(100);
  80.     ct1642_send_data(Lcd_tab[4],2);
  81.          //delay(100);
  82.        // while(1);
  83.     }while(1);
  84.    
  85. }
复制代码









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1