找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3501|回复: 0
打印 上一主题 下一主题
收起左侧

机顶盒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. }
复制代码




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表