[AVR单片机] HT1621显示

[复制链接]
 楼主| 发表于 2024-5-16 08:51 | 显示全部楼层 |阅读模式
代码
  1. #include <iom128v.h>
  2. #include <macros.h>


  3. #define uchar unsigned char
  4. #define uint unsigned int


  5. #define DA_1  PORTD |= BIT(6)//RS置1
  6. #define DA_0  PORTD &= ~BIT(6)//RS置0

  7. #define WR_1  PORTD |= BIT(2)//RS置1
  8. #define WR_0  PORTD &= ~BIT(2)//RS置0

  9. #define CS_1  PORTD |= BIT(4)//RS置1
  10. #define CS_0  PORTD &= ~BIT(4)//RS置0


  11. #define Smg_a 0x80

  12. #define Smg_b 0x40

  13. #define Smg_c 0x20

  14. #define Smg_d 0x01

  15. #define Smg_e 0x02

  16. #define Smg_f 0x08

  17. #define Smg_g 0x04

  18. #define Smg_dp 0x10



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

  20. #define Bmp1Map Smg_b | Smg_c

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

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

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

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

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

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

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

  28. #define Bmp7Map Smg_a | Smg_b | Smg_c

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

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

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

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

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

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









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

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



  37. unsigned int i;

  38. void COMMAND_HT1621(unsigned char comm)

  39. {

  40. //unsigned char i;

  41. CS_0;



  42. WR_0;

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

  44. {

  45. if((0x04<<i)&0x04)
  46.                                                    DA_1; //100
  47. else
  48.                                     DA_0;

  49. WR_0;

  50. WR_1;

  51. }

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

  53. {

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

  55.     else DA_0;

  56.     WR_0;

  57.     WR_1;

  58. }

  59. CS_1;



  60. }



  61. void HT1621_Display(void)

  62. {

  63. //unsigned char i;

  64. CS_0;//??CS

  65. WR_0;

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

  67. {

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

  69.     else DA_0;

  70.     WR_0;

  71.     WR_1;

  72. }

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

  74. {

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

  76.     else DA_0;

  77.     WR_0;

  78.     WR_1;

  79. }

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

  81. {

  82.     if((DpyNum[5]<<i)&0x80)
  83.                                                    DA_1;

  84.     else DA_0;

  85.     WR_0;

  86.     WR_1;

  87. }

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

  89. {

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

  91. else DA_0;

  92. WR_0;

  93. WR_1;

  94. }

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

  96. {

  97. if((DpyNum[3]<<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[2]<<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[1]<<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[0]<<i)&0x80) DA_1;

  119. else DA_0;

  120. WR_0;

  121. WR_1;

  122. }

  123. CS_1;//??CS

  124. }



  125. void LCD_Init(void)

  126. {

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

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

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

  130. HT1621_Display(); //clear screen

  131. }





  132. void main(void)
  133. {
  134. DDRD=0xff;
  135. LCD_Init();

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

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

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

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

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

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



  142. HT1621_Display();
  143. while(1)
  144. {
  145.   
  146. }
  147. }
效果图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2024-5-21 17:44 | 显示全部楼层
兄弟 中间注释是? 文字编码格式不对
发表于 2024-5-23 16:06 | 显示全部楼层
专注替代HT162X系列段码屏驱动显示芯片
发表于 2024-9-20 17:26 | 显示全部楼层
xionghaoyun 发表于 2024-5-21 17:44
兄弟 中间注释是? 文字编码格式不对

应该是
发表于 2024-9-23 09:43 | 显示全部楼层
这个搞 的很规范哦??。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3541

帖子

7

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