MSP430F149驱动HT1621

[复制链接]
 楼主| 比神乐 发表于 2024-5-25 17:10 | 显示全部楼层 |阅读模式
代码:
  1. /********************************************************************
  2. //DM430-A型开发板控制8个发光二极管闪烁程序
  3. //发光二极管分别接入P2口,每500ms状态转换一次
  4. //调试环境:EW430 V5.30
  5. //作者:阿迪 www.avrgcc.com
  6. //时间:2011.09.19
  7. ********************************************************************/

  8. #include <msp430x14x.h>
  9. #include "Config.h"                  //开发板配置头文件,主要配置IO端口及时钟看门狗函数

  10. #define uchar unsigned char

  11. #define uint unsigned int





  12. #define DA_1 P2OUT |= BIT0  //RS置1

  13. #define DA_0 P2OUT &= ~BIT0 //RS置0



  14. #define WR_1 P2OUT |= BIT1 //RS置1

  15. #define WR_0 P2OUT &= ~BIT1 //RS置0



  16. #define CS_1 P2OUT |= BIT2 //RS置1

  17. #define CS_0 P2OUT &= ~BIT2  //RS置0





  18. #define Smg_a 0x80



  19. #define Smg_b 0x40



  20. #define Smg_c 0x20



  21. #define Smg_d 0x01



  22. #define Smg_e 0x02



  23. #define Smg_f 0x08



  24. #define Smg_g 0x04



  25. #define Smg_dp 0x10







  26. #define Bmp0Map Smg_a | Smg_b | Smg_c | Smg_d | Smg_e | Smg_f



  27. #define Bmp1Map Smg_b | Smg_c



  28. #define Bmp2Map Smg_a | Smg_b | Smg_d | Smg_e | Smg_g



  29. #define Bmp3Map Smg_a | Smg_b | Smg_c | Smg_d | Smg_g



  30. #define Bmp4Map Smg_b | Smg_c | Smg_f | Smg_g



  31. #define Bmp5Map Smg_a | Smg_c | Smg_d | Smg_f | Smg_g



  32. #define Bmp6Map Smg_a | Smg_c | Smg_d | Smg_e | Smg_f | Smg_g



  33. #define Bmp8Map Smg_a | Smg_b | Smg_c | Smg_d | Smg_e | Smg_f | Smg_g



  34. #define Bmp9Map Smg_a | Smg_b | Smg_c | Smg_d | Smg_f | Smg_g



  35. #define Bmp7Map Smg_a | Smg_b | Smg_c



  36. #define BmpAMap Smg_a | Smg_b | Smg_c | Smg_e | Smg_f | Smg_g



  37. #define BmpBMap Smg_c | Smg_d | Smg_e | Smg_f | Smg_g



  38. #define BmpCMap Smg_a | Smg_d | Smg_e | Smg_f



  39. #define BmpDMap Smg_b | Smg_c | Smg_d | Smg_e | Smg_g



  40. #define BmpEMap Smg_a | Smg_d | Smg_e | Smg_f | Smg_g



  41. #define BmpFMap Smg_a | Smg_e | Smg_f | Smg_g



















  42. const unsigned char SegCode[] = {Bmp0Map,Bmp1Map,Bmp2Map,Bmp3Map,Bmp4Map,Bmp5Map,Bmp6Map,Bmp7Map,Bmp8Map,Bmp9Map,BmpAMap,BmpBMap,BmpCMap,BmpDMap,BmpEMap,BmpFMap};



  43. unsigned char DpyNum[6] = {Smg_g,Smg_g,Smg_g,Smg_g,Smg_g,Smg_g}; //?????







  44. unsigned int i;



  45. void COMMAND_HT1621(unsigned char comm)



  46. {



  47. //unsigned char i;



  48. CS_0;







  49. WR_0;



  50. for(i=0;i<3;i++)//???



  51. {



  52. if((0x04<<i)&0x04)

  53. DA_1; //100

  54. else

  55. DA_0;



  56. WR_0;



  57. WR_1;



  58. }



  59. for(i=0;i<9;i++)//?????



  60. {



  61. if((comm<<i)&0x80) DA_1; //100



  62. else DA_0;



  63. WR_0;



  64. WR_1;



  65. }



  66. CS_1;







  67. }







  68. void HT1621_Display(void)



  69. {



  70. //unsigned char i;



  71. CS_0;//??CS



  72. WR_0;



  73. for(i=0;i<3;i++) //???



  74. {



  75. if((0x05<<i)&0x04) DA_1;



  76. else DA_0;



  77. WR_0;



  78. WR_1;



  79. }



  80. for(i=0;i<6;i++) //???



  81. {



  82. if((20<<i)&0x20) DA_1;//20?? SEG??



  83. else DA_0;



  84. WR_0;



  85. WR_1;



  86. }



  87. for(i=0;i<8;i++) //???



  88. {



  89. if((DpyNum[5]<<i)&0x80)

  90. DA_1;



  91. else DA_0;



  92. WR_0;



  93. WR_1;



  94. }



  95. for(i=0;i<8;i++) //???



  96. {



  97. if((DpyNum[4]<<i)&0x80)DA_1;



  98. else DA_0;



  99. WR_0;



  100. WR_1;



  101. }



  102. for(i=0;i<8;i++) //???



  103. {



  104. if((DpyNum[3]<<i)&0x80) DA_1;



  105. else DA_0;



  106. WR_0;



  107. WR_1;



  108. }



  109. for(i=0;i<8;i++) //???



  110. {



  111. if((DpyNum[2]<<i)&0x80)DA_1;



  112. else DA_0;



  113. WR_0;



  114. WR_1;



  115. }



  116. for(i=0;i<8;i++) //???



  117. {



  118. if((DpyNum[1]<<i)&0x80)DA_1;



  119. else DA_0;



  120. WR_0;



  121. WR_1;



  122. }



  123. for(i=0;i<8;i++) //???



  124. {



  125. if((DpyNum[0]<<i)&0x80) DA_1;



  126. else DA_0;



  127. WR_0;



  128. WR_1;



  129. }



  130. CS_1;//??CS



  131. }







  132. void LCD_Init(void)



  133. {



  134. COMMAND_HT1621(0x01);//SYS EN



  135. COMMAND_HT1621(0x03);//LCD ON



  136. COMMAND_HT1621(0x29);//4 COM牋1/3 BIAS



  137. HT1621_Display(); //clear screen



  138. }
  139. //***********************************************************************
  140. //               MSP430IO口初始化
  141. //***********************************************************************
  142. void Port_Init()
  143. {
  144.   LED8SEL = 0x00;                     //设置IO口为普通I/O模式
  145.   LED8DIR = 0xFF;                     //设置IO口方向为输出
  146.   LED8PORT = 0xFF;                    //P2口初始设置为FF
  147. }

  148. //***********************************************************************
  149. //      主程序
  150. //***********************************************************************
  151. void main(void)
  152. {
  153.   WDT_Init();                       //看门狗初始化
  154.   Clock_Init();                     //时钟初始化
  155.   Port_Init();                      //端口初始化,用于控制IO口输入或输出
  156.   Close_LED();                      //关闭数码管
  157.   LCD_Init();



  158. DpyNum[0] = Smg_a|Smg_d|Smg_g;//"?"



  159. DpyNum[1] = SegCode[2];



  160. DpyNum[2] = SegCode[4];



  161. DpyNum[3] = SegCode[6];



  162. DpyNum[4] = SegCode[8];



  163. DpyNum[5] = SegCode[0];







  164. HT1621_Display();
  165.   while(1)
  166.   {
  167.    
  168.   }
  169. }



效果图;
4.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3535

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部