[单片机资料] 飞思卡尔单片机驱动HT1621

[复制链接]
 楼主| 比神乐 发表于 2025-7-21 18:33 | 显示全部楼层 |阅读模式
代码:
  1. #include <hidef.h>      /* common defines and macros */
  2. #include "derivative.h"      /* derivative-specific definitions */

  3. #define LED PORTB
  4. #define LED_dir DDRB

  5. #define uchar unsigned char

  6. #define uint unsigned int





  7. #define DA_1  PORTB |= 0X10//RS置1

  8. #define DA_0  PORTB &= 0XEF//RS置0



  9. #define WR_1  PORTB |= 0X04//RS置1

  10. #define WR_0  PORTB &= 0XFB//RS置0



  11. #define CS_1  PORTB |= 0X01//RS置1

  12. #define CS_0  PORTB &= 0XFE//RS置0




  13. unsigned char data=0x01;

  14. #define Smg_a 0x80



  15. #define Smg_b 0x40



  16. #define Smg_c 0x20



  17. #define Smg_d 0x01



  18. #define Smg_e 0x02



  19. #define Smg_f 0x08



  20. #define Smg_g 0x04



  21. #define Smg_dp 0x10







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



  23. #define Bmp1Map Smg_b | Smg_c



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



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



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



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



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



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



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



  31. #define Bmp7Map Smg_a | Smg_b | Smg_c



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



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



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



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



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



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



















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



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







  40. unsigned int i;



  41. void COMMAND_HT1621(unsigned char comm)



  42. {



  43. //unsigned char i;



  44. CS_0;

  45.   ;





  46. WR_0;

  47.    ;

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



  49. {



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

  51.                                                    DA_1; //100

  52. else

  53.                                     DA_0;

  54. ;

  55. WR_0;

  56.   ;

  57. WR_1;

  58.   ;

  59. }



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



  61. {



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



  63.     else DA_0;

  64.     ;

  65.     WR_0;

  66.      ;

  67.     WR_1;

  68.      ;

  69. }



  70. CS_1;

  71.   ;





  72. }







  73. void HT1621_Display(void)



  74. {



  75. //unsigned char i;



  76. CS_0;//??CS

  77.    ;

  78. WR_0;
  79.    ;


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



  81. {



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



  83.     else DA_0;

  84.      ;

  85.     WR_0;

  86.     ;

  87.     WR_1;

  88.     ;

  89. }



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



  91. {



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



  93.     else DA_0;

  94.      ;

  95.     WR_0;

  96.      ;

  97.     WR_1;

  98.      ;

  99. }



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



  101. {



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

  103.                                                    DA_1;



  104.     else DA_0;

  105.     ;

  106.     WR_0;

  107.     ;

  108.     WR_1;

  109.     ;

  110. }



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



  112. {



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



  114. else DA_0;

  115.   ;

  116. WR_0;

  117.   ;

  118. WR_1;

  119.   ;

  120. }



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



  122. {



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



  124. else DA_0;

  125.   ;

  126. WR_0;

  127. ;

  128. WR_1;

  129. ;

  130. }



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



  132. {



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



  134. else DA_0;

  135. ;

  136. WR_0;

  137. ;

  138. WR_1;

  139. ;

  140. }



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



  142. {



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



  144. else DA_0;

  145. ;

  146. WR_0;

  147. ;

  148. WR_1;


  149.   ;
  150. }



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



  152. {



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



  154. else DA_0;

  155. ;

  156. WR_0;

  157. ;

  158. WR_1;
  159. ;


  160. }



  161. CS_1;

  162. }







  163. void LCD_Init(void)



  164. {



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



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



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



  168. HT1621_Display(); //clear screen



  169. }










  170. /*************************************************************/
  171. /*                        延时函数                           */
  172. /*************************************************************/
  173. void delay(void)
  174. {
  175.   unsigned int i,j;
  176.   for(j=0;j<2;j++)
  177.   for(i=0;i<60000;i++)
  178.   ;
  179. }


  180. /*************************************************************/
  181. /*                          主函数                           */
  182. /*************************************************************/
  183. void main(void) {
  184.         //DisableInterrupts;
  185. // LED_dir=0xff;       //设置为输出
  186. // LED=~data;          //点亮LED1
  187. //        EnableInterrupts;
  188.     DDRB=0XFF;
  189.     delay();
  190.    LCD_Init();



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



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



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



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



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



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







  197. HT1621_Display();
  198.   for(;;)
  199.   {
  200.    
  201.      
  202.   }

  203. }
效果图:
附件喘不上来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3535

帖子

7

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