msp430+2553+ht1621b显示闪烁问题

junggle   2013-8-18 15:39 楼主
请问怎么解决ht1621b显示闪烁,不清楚的问题?

回复评论 (6)

1.HT1621电压稳定;
2.2553刷HT1621的时候,不要刷的太快!它内部带缓存的.
3.看看你的初始化,有没有问题!对比度的设置。
点赞  2013-8-18 17:26

回复 沙发cat3902982 的帖子

下面是我根据例程自己修改的一段代码,我显示的位数不同,1621闪烁的频率还不一样。
麻烦大神了、、、、
  1. //-----------------------------------------------------------------------------------------
  2. // msp430g2553 ht1621_lcd test
  3. //-----------------------------------------------------------------------------------------
  4. #include  "msp430g2553.h"
  5. #include

  6. #define uint  unsigned int
  7. #define uchar unsigned char

  8. #define  BIAS     0x52             //0b1000 0101 0010  1/3duty 4com
  9. #define  SYSDIS   0X00             //0b1000 0000 0000  关振系统荡器和LCD偏压发生器
  10. #define  SYSEN    0X02             //0b1000 0000 0010 打开系统振荡器
  11. #define  LCDOFF   0X04             //0b1000 0000 0100  关LCD偏压
  12. #define  LCDON    0X06             //0b1000 0000 0110  打开LCD偏压
  13. #define  XTAL     0x28             //0b1000 0010 1000 外部接时钟
  14. #define  RC256    0X30             //0b1000 0011 0000  内部时钟
  15. #define  TONEON   0X12             //0b1000 0001 0010  打开声音输出
  16. #define  TONEOFF  0X10             //0b1000 0001 0000 关闭声音输出
  17. #define  WDTDIS1  0X0A            //0b1000 0000 1010  禁止看门狗

  18. ////////////////////////////////////////////////////////////////////////////////

  19. void Ht1621_GND_0() { P1OUT &= ~0x10;}  // define P1.4 ---> GND_power
  20. void Ht1621_GND_1() { P1OUT |= 0x10;}

  21. void Ht1621_VCC_0() { P1OUT &= ~0x20;}  // define P1.5 ---> VCC_power
  22. void Ht1621_VCC_1() { P1OUT |= 0x20;}

  23. void Ht1621_CS_0() { P2OUT &= ~0x04;}  // define P2.2 ---> CS
  24. void Ht1621_CS_1() { P2OUT |= 0x04;}

  25. void Ht1621_WR_0() { P2OUT &= ~0x02;}  // define P2.1 ---> WR
  26. void Ht1621_WR_1() { P2OUT |= 0x02;}

  27. void Ht1621_DO_0() { P2OUT &= ~0x01;}  // define P2.0 ---> DAT
  28. void Ht1621_DO_1() { P2OUT |= 0x01;}

  29. ////////////////////////////////////////////////////////////////////////////////

  30. //-----------------------------------------------------------------------------------------
  31. //函数名称:Delay()
  32. //功    能:延时子程序
  33. //-----------------------------------------------------------------------------------------
  34. void Delay(uchar us)  //5,7,9
  35. {
  36.   while(--us);
  37. }

  38. //-----------------------------------------------------------------------------------------
  39. //函数名称:Delayms()
  40. //-----------------------------------------------------------------------------------------
  41. void Delayms(uint ims)
  42. {
  43.   uint i,j;
  44.     for(i=0;i
  45.       for(j=0;j<65;j++) { Delay(1); }
  46. }

  47. //-----------------------------------------------------------------------------------------
  48. //函数名称:Ht1621Wr_Data()
  49. //-----------------------------------------------------------------------------------------
  50. void Ht1621Wr_Data(uchar Data,uchar cnt)
  51. {
  52.   uchar i;
  53.   for (i=0;i
  54.    {
  55.     Ht1621_WR_0();
  56.     if((Data & 0x80)==0x80) { Ht1621_DO_1(); }
  57.     else { Ht1621_DO_0(); }
  58.     Ht1621_WR_1();
  59.     Data<<=1;
  60.    }
  61. }
  62. //-----------------------------------------------------------------------------------------
  63. //函数名称:void Ht1621WrCmd(uchar Cmd)
  64. //-----------------------------------------------------------------------------------------
  65. void Ht1621WrCmd(uchar Cmd)
  66. {
  67.    Ht1621_CS_0();   //CS
  68.    Ht1621Wr_Data(0x80,4);               //写入命令标志100
  69.    Ht1621Wr_Data(Cmd,8);                //写入命令数据
  70.    Ht1621_CS_1();
  71. }
  72. //-----------------------------------------------------------------------------------------
  73. //函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)
  74. //-----------------------------------------------------------------------------------------
  75. void Ht1621WrOneData(uchar Addr,uchar Data)
  76. {
  77.    Ht1621_CS_0();
  78.    Ht1621Wr_Data(0xa0,3);              //写入数据标志101
  79.    Ht1621Wr_Data(Addr<<2,6);           //写入地址数据
  80.    Ht1621Wr_Data(Data<<4,4);           //写入数据
  81.    Ht1621_CS_1();
  82. }
  83. //-----------------------------------------------------------------------------------------
  84. //函数名称:void Ht1621WrAllData()
  85. //-----------------------------------------------------------------------------------------
  86. void Ht1621WrAllData(void)
  87. {
  88.    uchar i;

  89.    Ht1621_CS_0();
  90.    Ht1621Wr_Data(0xa0,3);            //写入数据标志101
  91.    Ht1621Wr_Data(0x00<<2,6);         //写入地址数据
  92.    for (i=0;i<16;i++) { Ht1621Wr_Data(0x00,8); }
  93.    Ht1621_CS_1();
  94. }
  95. //-----------------------------------------------------------------------------------------
  96. //函数名称:void Ht1621_Init(void)
  97. //-----------------------------------------------------------------------------------------
  98. void Ht1621_Init(void)
  99. {
  100.    Ht1621_CS_0();
  101.    Ht1621_WR_0();
  102.    Ht1621_DO_0();

  103.    Delay(100);                     //延时使LCD工作电压稳定
  104.    Ht1621WrCmd(BIAS);
  105.    Ht1621WrCmd(RC256);              //使用内部振荡器
  106.    Ht1621WrCmd(SYSDIS);
  107.    Ht1621WrCmd(WDTDIS1);
  108.    Ht1621WrCmd(SYSEN);
  109.    Ht1621WrCmd(LCDON);
  110. }
  111. //-----------------------------------------------------------------------------------------
  112. //函数名称:Initial()
  113. //功    能:初始化子程序
  114. //-----------------------------------------------------------------------------------------
  115. void Initial(void)
  116. {
  117.   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  118.   P1DIR = 0xFF;                             // All P1.x outputs
  119.   P1OUT = 0;                                // All P1.x reset
  120.   P2DIR = 0xFF;                             // All P2.x outputs
  121.   P2OUT = 0;                                // All P2.x reset
  122. }
  123. void writep(uchar t)
  124. {
  125.         Ht1621WrOneData(7,t);
  126. }
  127. void write1(uchar t)
  128. {
  129.         Ht1621WrOneData(1,t);
  130.         Ht1621WrOneData(2,t);
  131. }
  132. void write2(uchar t)
  133. {
  134.         Ht1621WrOneData(0,t);
  135.         Ht1621WrOneData(1,t);
  136.         Ht1621WrOneData(3,t);
  137.         Ht1621WrOneData(4,t);
  138.         Ht1621WrOneData(6,t);
  139. }
  140. void write3(uchar t)
  141. {
  142.         Ht1621WrOneData(0,t);
  143.         Ht1621WrOneData(1,t);
  144.         Ht1621WrOneData(2,t);
  145.         Ht1621WrOneData(3,t);
  146.         Ht1621WrOneData(6,t);
  147. }
  148. void write6(uchar t)
  149. {
  150.         Ht1621WrOneData(0,t);
  151.         Ht1621WrOneData(2,t);
  152.         Ht1621WrOneData(3,t);
  153.         Ht1621WrOneData(4,t);
  154.         Ht1621WrOneData(5,t);
  155.         Ht1621WrOneData(6,t);
  156. }
  157. void write8(uchar t)
  158. {
  159.         Ht1621WrOneData(0,t);
  160.         Ht1621WrOneData(1,t);
  161.         Ht1621WrOneData(2,t);
  162.         Ht1621WrOneData(3,t);
  163.         Ht1621WrOneData(4,t);
  164.         Ht1621WrOneData(5,t);
  165.         Ht1621WrOneData(6,t);
  166. }
  167. //-----------------------------------------------------------------------------------------
  168. //函数名称:main()
  169. //-----------------------------------------------------------------------------------------
  170. void main(void)
  171. {
  172.   uchar i,j,t,x,y,z;

  173.   Initial();            //初始化子程序

  174.   Ht1621_GND_0();       //HT1621 power on
  175.   Ht1621_VCC_1();

  176.   Ht1621_Init();        //上电初始化LCD
  177.   Delay(100
  178.                   );          //延时一段时间
  179.   Ht1621WrAllData();

  180.   while(1)
  181.   {
  182.    Ht1621_Init();        //上电初始化LCD
  183.    //Delayms(50);          //延时一段时间
  184.    Ht1621WrAllData();
  185.    t=0x08;
  186.    write2(t);
  187.    t=0x04;
  188.    write6(t);
  189.    t=0x04;
  190.    writep(t);
  191.    t=0x02;
  192.    write8(t);
  193.    t=0x01;
  194.    writep(t);
  195.   }
  196. }
点赞  2013-8-19 08:41
你试试为HT1621外接个晶振,初始化的时候配时钟源的时候  Ht1621WrCmd(RC256);改为   Ht1621WrCmd(XTAL);
点赞  2013-8-19 09:21
引用: junggle 发表于 2013-8-19 08:41
下面是我根据例程自己修改的一段代码,我显示的位数不同,1621闪烁的频率还不一样。
麻烦大神了、、、、

程序里有好多的错误,大神可否该一下?

点赞  2014-8-14 12:48
能把历程发给我看一下不,谢谢,邮箱是1042568249@qq.com
点赞  2015-1-25 12:56

有IC驱动程序可以提供, 完美替代兼容HT1621B SSOP48 LQFP48 LQFP44 DIP28
QQ 191 888 5898
联系人:许先生 QQ:1918885898  电话:18898582398  免费样品赠送,工程技术支持,PDF产品资料提供!
点赞  2018-7-23 14:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复