[开发工具] 新定义MCU开发板测评 +HT1621显示光敏电阻采样值

[复制链接]
 楼主| 比神乐 发表于 2022-11-27 13:12 | 显示全部楼层 |阅读模式
<
今天捣鼓了一下AD,采样光敏电阻,用HT1621显示采样值。
代码:
  1. #include "SC_Init.h"        //MCU Init header,Include all IC resource headers
  2. #include "SC_it.h"
  3. #include "..\Drivers\SCDriver_list.h"
  4. #include "HeadFiles\SysFunVarDefine.h"
  5. /**************************************Generated by EasyCodeCube*************************************/
  6. uint16_t temp;
  7. #define Smg_a    0x80
  8. #define Smg_b    0x40
  9. #define Smg_c    0x20
  10. #define Smg_d    0x01
  11. #define Smg_e    0x02
  12. #define Smg_f    0x08
  13. #define Smg_g    0x04
  14. #define Smg_dp   0x10

  15. #define Bmp0Map          Smg_a | Smg_b | Smg_c | Smg_d | Smg_e | Smg_f
  16. #define Bmp1Map          Smg_b | Smg_c
  17. #define Bmp2Map          Smg_a | Smg_b | Smg_d | Smg_e | Smg_g
  18. #define Bmp3Map          Smg_a | Smg_b | Smg_c | Smg_d | Smg_g
  19. #define Bmp4Map          Smg_b | Smg_c | Smg_f | Smg_g
  20. #define Bmp5Map          Smg_a | Smg_c | Smg_d | Smg_f | Smg_g
  21. #define Bmp6Map          Smg_a | Smg_c | Smg_d | Smg_e | Smg_f | Smg_g
  22. #define Bmp8Map          Smg_a | Smg_b | Smg_c | Smg_d | Smg_e | Smg_f | Smg_g
  23. #define Bmp9Map          Smg_a | Smg_b | Smg_c | Smg_d | Smg_f | Smg_g
  24. #define Bmp7Map          Smg_a | Smg_b | Smg_c
  25. #define BmpAMap          Smg_a | Smg_b | Smg_c | Smg_e | Smg_f | Smg_g
  26. #define BmpBMap          Smg_c | Smg_d | Smg_e | Smg_f | Smg_g
  27. #define BmpCMap          Smg_a | Smg_d | Smg_e | Smg_f
  28. #define BmpDMap          Smg_b | Smg_c | Smg_d | Smg_e | Smg_g
  29. #define BmpEMap          Smg_a | Smg_d | Smg_e | Smg_f | Smg_g
  30. #define BmpFMap          Smg_a | Smg_e | Smg_f | Smg_g

  31. #define CS_0           GPIO_WriteLow(GPIO2, GPIO_PIN_7)
  32. #define CS_1           GPIO_WriteHigh(GPIO2, GPIO_PIN_7)
  33. #define WR_0           GPIO_WriteLow(GPIO0, GPIO_PIN_0)
  34. #define WR_1           GPIO_WriteHigh(GPIO0, GPIO_PIN_0)
  35. #define DA_0           GPIO_WriteLow(GPIO0, GPIO_PIN_1)
  36. #define DA_1           GPIO_WriteHigh(GPIO0, GPIO_PIN_1)

  37. const unsigned char SegCode[] = {Bmp0Map,Bmp1Map,Bmp2Map,Bmp3Map,Bmp4Map,Bmp5Map,Bmp6Map,Bmp7Map,Bmp8Map,Bmp9Map,BmpAMap,BmpBMap,BmpCMap,BmpDMap,BmpEMap,BmpFMap};
  38. unsigned char DpyNum[6] = {Smg_g,Smg_g,Smg_g,Smg_g,Smg_g,Smg_g}; //显示缓冲区

  39. unsigned int i;
  40. void COMMAND_HT1621(unsigned char comm)
  41. {
  42.         unsigned char i;
  43.         CS_0;
  44.        
  45.         WR_0;
  46.         for(i=0;i<3;i++)        //写命令
  47.         {
  48.                 if((0x04<<i)&0x04)  DA_1;    //100
  49.                 else                DA_0;
  50.                 WR_0;
  51.                 WR_1;
  52.         }
  53.         for(i=0;i<9;i++)        //写命令数据
  54.         {
  55.                 if((comm<<i)&0x80)  DA_1;    //100
  56.                 else                DA_0;
  57.                 WR_0;
  58.                 WR_1;
  59.         }
  60.         CS_1;
  61.        
  62. }

  63. void HT1621_Display(void)
  64. {
  65.         unsigned char i;
  66.         CS_0;                        //片选CS
  67.         WR_0;
  68.         for(i=0;i<3;i++)                   //写命令
  69.         {
  70.                 if((0x05<<i)&0x04)  DA_1;
  71.                 else                DA_0;
  72.                 WR_0;
  73.                 WR_1;
  74.         }
  75.         for(i=0;i<6;i++)                   //写地址
  76.         {
  77.                 if((20<<i)&0x20)    DA_1;  //20对应 SEG地址
  78.                   else                DA_0;
  79.                 WR_0;
  80.                 WR_1;
  81.         }
  82.         for(i=0;i<8;i++)                   //写数据
  83.         {
  84.                 if((DpyNum[5]<<i)&0x80)   DA_1;
  85.                 else                      DA_0;
  86.                 WR_0;
  87.                 WR_1;
  88.         }
  89.         for(i=0;i<8;i++)                   //写数据
  90.         {
  91.                 if((DpyNum[4]<<i)&0x80)   DA_1;
  92.                 else                      DA_0;
  93.                 WR_0;
  94.                 WR_1;
  95.         }
  96.         for(i=0;i<8;i++)                   //写数据
  97.         {
  98.                 if((DpyNum[3]<<i)&0x80)   DA_1;
  99.                 else                      DA_0;
  100.                 WR_0;
  101.                 WR_1;
  102.         }
  103.         for(i=0;i<8;i++)                   //写数据
  104.         {
  105.                 if((DpyNum[2]<<i)&0x80)   DA_1;
  106.                 else                      DA_0;
  107.                 WR_0;
  108.                 WR_1;
  109.         }
  110.         for(i=0;i<8;i++)                   //写数据
  111.         {
  112.                 if((DpyNum[1]<<i)&0x80)   DA_1;
  113.                 else                      DA_0;
  114.                 WR_0;
  115.                 WR_1;
  116.         }
  117.         for(i=0;i<8;i++)                   //写数据
  118.         {
  119.                 if((DpyNum[0]<<i)&0x80)   DA_1;
  120.                 else                      DA_0;
  121.                 WR_0;
  122.                 WR_1;
  123.         }
  124.         CS_1;                          //释放CS
  125. }

  126. void LCD_Init(void)
  127. {
  128.         COMMAND_HT1621(0x01);         //SYS EN
  129.         COMMAND_HT1621(0x03);         //LCD ON
  130.         COMMAND_HT1621(0x29);         //4 COM  1/3 BIAS
  131.         HT1621_Display();             //clear screen
  132. }
  133. /*************************************.Generated by EasyCodeCube.************************************/
  134. /*****************************************************************************************************
  135. * Function Name: main
  136. * Description  : This function implements main function.
  137. * Arguments    : None
  138. * Return Value : None
  139. ******************************************************************************************************/
  140. void main(void)
  141. {       
  142.                 uint16_t qian,bai,shi,ge;
  143.                 long int i;
  144.     /*<Generated by EasyCodeCube begin>*/
  145.     /*<UserCodeStart>*//*<SinOne-Tag><3>*/
  146.     SC_Init(); /*** MCU init***/
  147.     /*<UserCodeEnd>*//*<SinOne-Tag><3>*/
  148.     /*<UserCodeStart>*//*<SinOne-Tag><4>*/
  149.     /*****MainLoop*****/
  150.                 LCD_Init();
  151.                 DpyNum[0] = Smg_a|Smg_d|Smg_g;              //"三"
  152.                 DpyNum[1] = SegCode[0];
  153.                 DpyNum[2] = SegCode[0];
  154.                 DpyNum[3] = SegCode[0];
  155.                 DpyNum[4] = SegCode[0];
  156.                 DpyNum[5] = SegCode[0];

  157.                 HT1621_Display();   
  158.                
  159.     while(1)
  160.     {
  161.         /*<UserCodeStart>*//*<SinOne-Tag><5>*/
  162.         /*****User program*****/
  163.         /*<UserCodeEnd>*//*<SinOne-Tag><5>*/
  164.         /*<Begin-Inserted by EasyCodeCube for Condition>*/
  165.                         ADC_StartConversion();
  166.                         while((ADCCON&0x20)==0);
  167.                         temp=ADC_GetConversionValue();
  168.                         qian=temp/1000;
  169.                         bai=temp%1000/100;
  170.                         shi=temp%100/10;
  171.                         ge=temp%10;
  172.                         DpyNum[2] = SegCode[qian];
  173.                         DpyNum[3] = SegCode[bai];
  174.                         DpyNum[4] = SegCode[shi];
  175.                         DpyNum[5] = SegCode[ge];
  176.                         HT1621_Display();  
  177.                         for(i=0;i<500000;i++);
  178.     }
  179.     /*<UserCodeEnd>*//*<SinOne-Tag><4>*/
  180.     /*<Generated by EasyCodeCube end>*/
  181. }
初始化代码:

  1. /*****************************************************
  2. *函数名称: SC_Init
  3. *函数功能: MCU初始化函数
  4. *入口参数:void
  5. *出口参数:void
  6. *****************************************************/
  7. void SC_Init(void)
  8. {
  9.         SC_GPIO_Init();
  10.         SC_OPTION_Init();
  11.         SC_ADC_Init();
  12.         /*write initial function here*/       
  13.         EA = 1;       
  14. }

  15. /*****************************************************
  16. *函数名称: SC_GPIO_Init
  17. *函数功能: GPIO初始化函数
  18. *入口参数:void
  19. *出口参数:void
  20. *****************************************************/
  21. void SC_GPIO_Init(void)
  22. {
  23.         /*GPIO_Init write here*/
  24.         GPIO_Init(GPIO2, GPIO_PIN_7,GPIO_MODE_OUT_PP);
  25.         GPIO_Init(GPIO0, GPIO_PIN_0,GPIO_MODE_OUT_PP);
  26.         GPIO_Init(GPIO0, GPIO_PIN_1,GPIO_MODE_OUT_PP);
  27. }

  28. /*****************************************************
  29. *函数名称: SC_ADC_Init
  30. *函数功能: ADC初始化函数
  31. *入口参数:void
  32. *出口参数:void
  33. *****************************************************/
  34. void SC_ADC_Init(void)
  35. {
  36.         ADC_Init(ADC_PRESSEL_3CLOCK,ADC_Cycle_Null);
  37.         /*AIN0口模式设置*/ADC_EAINConfig(ADC_EAIN_0,ENABLE);
  38.         ADC_ChannelConfig(ADC_CHANNEL_0,ENABLE);
  39.         ADC_VrefConfig(ADC_VREF_VDD);
  40.         ADC_ITConfig(ENABLE,LOW);
  41.         ADC_Cmd(ENABLE);
  42.         /*ADC_Init write here*/
  43. }
效果图:
2.jpg


3.jpg


iyoum 发表于 2022-12-4 20:25 | 显示全部楼层
可以直接使用光照传感器显示的。              
 楼主| 比神乐 发表于 2022-12-5 09:23 | 显示全部楼层
iyoum 发表于 2022-12-4 20:25
可以直接使用光照传感器显示的。

我没有光照传感器
sdCAD 发表于 2022-12-5 20:52 | 显示全部楼层
可以移植到lcd上了。              
wwppd 发表于 2022-12-5 21:49 | 显示全部楼层
这个是自带的ADC吗?              
 楼主| 比神乐 发表于 2022-12-5 23:15 | 显示全部楼层
wwppd 发表于 2022-12-5 21:49
这个是自带的ADC吗?

是的
mollylawrence 发表于 2022-12-6 15:21 | 显示全部楼层
HT1621显示的内容很有限呢。
gygp 发表于 2023-2-2 15:43 | 显示全部楼层
HT1621会不会受到外部干扰?
 楼主| 比神乐 发表于 2023-2-2 16:49 | 显示全部楼层
gygp 发表于 2023-2-2 15:43
HT1621会不会受到外部干扰?

不会
saservice 发表于 2023-2-5 14:07 | 显示全部楼层
光敏可以通过数字传感器测试的。              
wangdezhi 发表于 2023-2-6 14:49 | 显示全部楼层
这个精度怎么样?              
 楼主| 比神乐 发表于 2023-2-6 14:50 | 显示全部楼层
wangdezhi 发表于 2023-2-6 14:49
这个精度怎么样?

还可以。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3535

帖子

7

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