[开发工具] 【APM32F107VCT6 MINI开发板测评】HT1621

[复制链接]
776|0
 楼主| 比神乐 发表于 2023-2-19 12:33 | 显示全部楼层 |阅读模式
今天搞了一下HT1621.
DA接PC0,WR接PC1,CS接PC2.
主程序代码:
  1. #include "main.h"

  2. /** @addtogroup Examples
  3.   @{
  4.   */
  5. #define uchar unsigned char  
  6. #define uint unsigned int
  7. /** @addtogroup 425_GPIO_led_toggle GPIO_led_toggle
  8.   * @{
  9.   */


  10. #define DA_1 GPIO_SetBit(GPIOC,DA_PIN)
  11. #define DA_0 GPIO_ResetBit(GPIOC,DA_PIN)
  12. #define WR_1 GPIO_SetBit(GPIOC,WR_PIN)
  13. #define WR_0 GPIO_ResetBit(GPIOC,WR_PIN)
  14. #define CS_1 GPIO_SetBit(GPIOC,CS_PIN)
  15. #define CS_0 GPIO_ResetBit(GPIOC,CS_PIN)

  16. #define Smg_a    0x80
  17. #define Smg_b    0x40
  18. #define Smg_c    0x20
  19. #define Smg_d    0x01
  20. #define Smg_e    0x02
  21. #define Smg_f    0x08
  22. #define Smg_g    0x04
  23. #define Smg_dp   0x10

  24. #define Bmp0Map          Smg_a | Smg_b | Smg_c | Smg_d | Smg_e | Smg_f
  25. #define Bmp1Map          Smg_b | Smg_c
  26. #define Bmp2Map          Smg_a | Smg_b | Smg_d | Smg_e | Smg_g
  27. #define Bmp3Map          Smg_a | Smg_b | Smg_c | Smg_d | Smg_g
  28. #define Bmp4Map          Smg_b | Smg_c | Smg_f | Smg_g
  29. #define Bmp5Map          Smg_a | Smg_c | Smg_d | Smg_f | Smg_g
  30. #define Bmp6Map          Smg_a | Smg_c | Smg_d | Smg_e | Smg_f | Smg_g
  31. #define Bmp8Map          Smg_a | Smg_b | Smg_c | Smg_d | Smg_e | Smg_f | Smg_g
  32. #define Bmp9Map          Smg_a | Smg_b | Smg_c | Smg_d | Smg_f | Smg_g
  33. #define Bmp7Map          Smg_a | Smg_b | Smg_c
  34. #define BmpAMap          Smg_a | Smg_b | Smg_c | Smg_e | Smg_f | Smg_g
  35. #define BmpBMap          Smg_c | Smg_d | Smg_e | Smg_f | Smg_g
  36. #define BmpCMap          Smg_a | Smg_d | Smg_e | Smg_f
  37. #define BmpDMap          Smg_b | Smg_c | Smg_d | Smg_e | Smg_g
  38. #define BmpEMap          Smg_a | Smg_d | Smg_e | Smg_f | Smg_g
  39. #define BmpFMap          Smg_a | Smg_e | Smg_f | Smg_g




  40. const unsigned char SegCode[] = {Bmp0Map,Bmp1Map,Bmp2Map,Bmp3Map,Bmp4Map,Bmp5Map,Bmp6Map,Bmp7Map,Bmp8Map,Bmp9Map,BmpAMap,BmpBMap,BmpCMap,BmpDMap,BmpEMap,BmpFMap};
  41. unsigned char DpyNum[6] = {Smg_g,Smg_g,Smg_g,Smg_g,Smg_g,Smg_g}; //ÏÔʾ»º³åÇø

  42. unsigned int i;
  43. void COMMAND_HT1621(unsigned char comm)
  44. {
  45.     //unsigned char i;
  46.     CS_0;

  47.     WR_0;
  48.     for(i=0;i<3;i++)        //дÃüÁî
  49.     {
  50.         if((0x04<<i)&0x04)  DA_1;    //100
  51.         else                DA_0;
  52.         WR_0;
  53.         WR_1;
  54.     }
  55.     for(i=0;i<9;i++)        //дÃüÁîÊý¾Ý
  56.     {
  57.         if((comm<<i)&0x80)  DA_1;    //100
  58.         else                DA_0;
  59.         WR_0;
  60.         WR_1;
  61.     }
  62.     CS_1;

  63. }

  64. void HT1621_Display(void)
  65. {
  66.     //unsigned char i;
  67.     CS_0;                        //ƬѡCS
  68.     WR_0;
  69.     for(i=0;i<3;i++)                   //дÃüÁî
  70.     {
  71.         if((0x05<<i)&0x04)  DA_1;
  72.         else                DA_0;
  73.         WR_0;
  74.         WR_1;
  75.     }
  76.     for(i=0;i<6;i++)                   //дµØÖ·
  77.     {
  78.         if((20<<i)&0x20)    DA_1;  //20¶ÔÓ¦ SEGµØÖ·
  79.         else                DA_0;
  80.         WR_0;
  81.         WR_1;
  82.     }
  83.     for(i=0;i<8;i++)                   //дÊý¾Ý
  84.     {
  85.         if((DpyNum[5]<<i)&0x80)   DA_1;
  86.         else                      DA_0;
  87.         WR_0;
  88.         WR_1;
  89.     }
  90.     for(i=0;i<8;i++)                   //дÊý¾Ý
  91.     {
  92.         if((DpyNum[4]<<i)&0x80)   DA_1;
  93.         else                      DA_0;
  94.         WR_0;
  95.         WR_1;
  96.     }
  97.     for(i=0;i<8;i++)                   //дÊý¾Ý
  98.     {
  99.         if((DpyNum[3]<<i)&0x80)   DA_1;
  100.         else                      DA_0;
  101.         WR_0;
  102.         WR_1;
  103.     }
  104.     for(i=0;i<8;i++)                   //дÊý¾Ý
  105.     {
  106.         if((DpyNum[2]<<i)&0x80)   DA_1;
  107.         else                      DA_0;
  108.         WR_0;
  109.         WR_1;
  110.     }
  111.     for(i=0;i<8;i++)                   //дÊý¾Ý
  112.     {
  113.         if((DpyNum[1]<<i)&0x80)   DA_1;
  114.         else                      DA_0;
  115.         WR_0;
  116.         WR_1;
  117.     }
  118.     for(i=0;i<8;i++)                   //дÊý¾Ý
  119.     {
  120.         if((DpyNum[0]<<i)&0x80)   DA_1;
  121.         else                      DA_0;
  122.         WR_0;
  123.         WR_1;
  124.     }
  125.     CS_1;                          //ÊÍ·ÅCS
  126. }

  127. void LCD_Init(void)
  128. {
  129.     COMMAND_HT1621(0x01);         //SYS EN
  130.     COMMAND_HT1621(0x03);         //LCD ON
  131.     COMMAND_HT1621(0x29);         //4 COM  1/3 BIAS
  132.     HT1621_Display();             //clear screen
  133. }
  134. /** @addtogroup GPIO_Toggle
  135.   @{
  136.   */

  137. /** @defgroup GPIO_Toggle_Functions Functions
  138.   @{
  139.   */
  140. void APM_MINI_HT1621Init(void)
  141. {
  142.     GPIO_Config_T  configStruct;

  143.     /* Enable the GPIO_LED Clock */
  144.     RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOC);

  145.     /* Configure the GPIO_LED pin */
  146.     configStruct.pin = DA_PIN | WR_PIN | CS_PIN;
  147.     configStruct.mode = GPIO_MODE_OUT_PP;
  148.     configStruct.speed = GPIO_SPEED_50MHz;

  149.     GPIO_Config(GPIOC, &configStruct);
  150.    
  151. }
  152. /*!
  153. * [url=home.php?mod=space&uid=247401]@brief[/url]       Main program
  154. *
  155. * @param       None
  156. *
  157. * @retval      None
  158. *
  159. */
  160. int main(void)
  161. {
  162.     APM_MINI_HT1621Init();
  163.     LCD_Init();
  164.     DpyNum[0] = Smg_a|Smg_d|Smg_g;              //"Èý"
  165.     DpyNum[1] = SegCode[2];
  166.     DpyNum[2] = SegCode[4];
  167.     DpyNum[3] = SegCode[6];
  168.     DpyNum[4] = SegCode[8];
  169.     DpyNum[5] = SegCode[0];

  170.     HT1621_Display();               //Ë¢ÐÂLCD

  171.     while (1)
  172.     {
  173.         
  174.     }
  175. }

  176. /*!
  177. * @brief       Main program
  178. *
  179. * @param       None
  180. *
  181. * @retval      None
  182. *
  183. */
  184. void Delay(void)
  185. {
  186.     volatile uint32_t delay = 0xffffff;

  187.     while(delay--);
  188. }

  189. /**@} end of group GPIO_Toggle_Functions */
  190. /**@} end of group GPIO_Toggle */
  191. /**@} end of group Examples */
初始化代码:
  1. void APM_MINI_HT1621Init(void)
  2. {
  3.     GPIO_Config_T  configStruct;

  4.     /* Enable the GPIO_LED Clock */
  5.     RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOC);

  6.     /* Configure the GPIO_LED pin */
  7.     configStruct.pin = DA_PIN | WR_PIN | CS_PIN;
  8.     configStruct.mode = GPIO_MODE_OUT_PP;
  9.     configStruct.speed = GPIO_SPEED_50MHz;

  10.     GPIO_Config(GPIOC, &configStruct);
  11.    
  12. }


  13. #define DA_PIN                                  GPIO_PIN_0
  14. #define DA_GPIO_PORT                     GPIOC
  15. #define DA_GPIO_CLK                      RCM_APB2_PERIPH_GPIOC

  16. #define WR_PIN                                  GPIO_PIN_1
  17. #define WR_GPIO_PORT                     GPIOC
  18. #define WR_GPIO_CLK                      RCM_APB2_PERIPH_GPIOC

  19. #define CS_PIN                                  GPIO_PIN_2
  20. #define CS_GPIO_PORT                     GPIOC
  21. #define CS_GPIO_CLK                      RCM_APB2_PERIPH_GPIOC
效果图:
4.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3537

帖子

7

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