久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: HC32L136額溫槍方案包括BOM,SCH.PCB.源碼 [打印本頁]

作者: waerdeng    時間: 2021-3-7 17:27
標題: HC32L136額溫槍方案包括BOM,SCH.PCB.源碼
Altium Designer畫的額溫槍原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機源程序如下:
  1. /******************************************************************************/
  2. /** \file main.c
  3. **
  4. ** A detailed description is available at
  5. ** @link Sample Group Some description @endlink
  6. **
  7. **   - 2017-05-28 LiuHL    First Version
  8. **
  9. ******************************************************************************/

  10. /******************************************************************************
  11. * Include files
  12. ******************************************************************************/
  13. #include "adc.h"
  14. #include "gpio.h"
  15. #include "bgr.h"
  16. #include "lcd.h"
  17. #include "lvd.h"
  18. #include "app_lcd.h"
  19. #include "app_gpio.h"
  20. #include "app_adc.h"
  21. #include "app.h"

  22. /******************************************************************************
  23. * Local pre-processor symbols/macros ('#define')                           
  24. ******************************************************************************/
  25. #define USERKEYTRUE     (0xFFFFFFFFu)
  26. #define USERKEYFALSE    (0x00000000u)

  27. #define LCDCHAR__       (0xFFFFu)

  28. #define CHARGEEMPTY     (0x00000000u)
  29. #define CHARGEFULL      (0xFFFFFFFFu)

  30. /******************************************************************************
  31. * Global variable definitions (declared in header file with 'extern')
  32. ******************************************************************************/
  33. volatile uint32_t gu32AdcRestult = 0;
  34. volatile uint32_t gu32UserKeyFlag[4] = {USERKEYFALSE, USERKEYFALSE, USERKEYFALSE, USERKEYFALSE};
  35. volatile stc_lcd_display_cfg_t gstcLcdDisplayCfg = {0};
  36. volatile uint32_t gVolFlag = CHARGEFULL;

  37. /******************************************************************************
  38. * Local type definitions ('typedef')                                         
  39. ******************************************************************************/
  40. typedef enum enMState
  41. {
  42.     InitialMode     = 0u,
  43.     TempMeasureMode = 1u,
  44.     TempShowMode    = 2u,
  45.     PowerOffMode    = 3u,
  46.     MemoryMode      = 4u,
  47.    
  48. }enMState_t;
  49. /******************************************************************************
  50. * Local function prototypes ('static')
  51. ******************************************************************************/

  52. /******************************************************************************
  53. * Local variable definitions ('static')                                      *
  54. ******************************************************************************/
  55. /*****************************************************************************
  56. * Function implementation - global ('extern') and local ('static')
  57. ******************************************************************************/


  58. /**
  59. ******************************************************************************
  60. ** \brief  Main function of project
  61. **
  62. ** \return uint32_t return value, if needed
  63. **
  64. ** This sample
  65. **
  66. ******************************************************************************/
  67. int32_t main(void)
  68. {   
  69.     volatile enMState_t enMState = InitialMode;
  70.     uint32_t u32AdcResultTmp, u32NtcIndex;
  71.    
  72.     ///< GPIO 初始化
  73.     AppMGpioInit();
  74.    
  75.     ///< ADC 模塊初始化
  76.     AppMAdcInit();
  77.    
  78.     ///< LCD 模塊初始化
  79.     AppLcdInit();
  80.    
  81.     ///< 電量監測模塊初始化
  82.     AppVolMonitorInit();
  83.    
  84.    
  85.     // 初次上電開機LCD全屏顯示閃爍兩次
  86.     {
  87.         AppLcdShowAll();
  88.         delay1ms(400);
  89.         AppLcdClearAll();
  90.         delay1ms(400);
  91.         AppLcdShowAll();
  92.         delay1ms(400);
  93.         AppLcdClearAll();
  94.         delay1ms(400);
  95.         AppLcdShowAll();
  96.     }
  97.    
  98.     while(1)
  99.     {   
  100.         switch(enMState)
  101.         {
  102.             case InitialMode:
  103.             {
  104.                 // LCD 初始狀態顯示
  105.                 gstcLcdDisplayCfg.bM6En     = FALSE;
  106.                 gstcLcdDisplayCfg.bM5En     = TRUE;
  107.                 gstcLcdDisplayCfg.bM2En     = FALSE;
  108.                 gstcLcdDisplayCfg.bM7En     = TRUE;
  109.                 gstcLcdDisplayCfg.bM8En     = TRUE;
  110.                 gstcLcdDisplayCfg.bM9En     = FALSE;
  111.                 gstcLcdDisplayCfg.bM10En    = FALSE;
  112.                 gstcLcdDisplayCfg.bM11En    = TRUE;
  113.                 gstcLcdDisplayCfg.bM3En     = FALSE;
  114.                 gstcLcdDisplayCfg.enTmpMode = Char__;
  115.                 gstcLcdDisplayCfg.u16Num    = LCDCHAR__;
  116.             }
  117.             
  118.             {
  119.                 if(USERKEYTRUE == gu32UserKeyFlag[2])
  120.                 {
  121.                     //……
  122.                     //(進入溫度測量)
  123.                     gu32UserKeyFlag[0] = USERKEYFALSE;
  124.                     gu32UserKeyFlag[1] = USERKEYFALSE;
  125.                     gu32UserKeyFlag[2] = USERKEYFALSE;
  126.                     gu32UserKeyFlag[3] = USERKEYFALSE;
  127.                     
  128.                 }
  129.                 else if (USERKEYTRUE == gu32UserKeyFlag[2])
  130.                 {
  131.                     //……
  132.                     gu32UserKeyFlag[0] = USERKEYFALSE;
  133.                     gu32UserKeyFlag[1] = USERKEYFALSE;
  134.                     gu32UserKeyFlag[2] = USERKEYFALSE;
  135.                     gu32UserKeyFlag[3] = USERKEYFALSE;
  136.                     
  137.                     enMState = TempMeasureMode;
  138.                 }
  139.             }   
  140.                
  141.                 // ……
  142.             break;
  143.             
  144.             case TempMeasureMode:
  145.                 // ……
  146.             break;
  147.                
  148.             case TempShowMode:
  149.                 // ……
  150.             break;
  151.             
  152.             case PowerOffMode:
  153.                 // ……
  154.             break;
  155.             
  156.             case MemoryMode:
  157.                 // ……
  158.             break;
  159.             
  160.             default:
  161.                 // ……
  162.             break;
  163.                
  164.         }
  165.         
  166.         ///< 溫度采集及數據處理
  167.         if(USERKEYTRUE == gu32UserKeyFlag[3])
  168.         {
  169.             gu32UserKeyFlag[3] = USERKEYFALSE;
  170.             
  171.             AppAdcNtcAvgCodeGet(&u32AdcResultTmp);
  172.             u32NtcIndex = App_TempNtcFind(u32AdcResultTmp);
  173.             AppLcdStkLcdShow((u32NtcIndex + 10)*10);
  174.             delay1ms(1000);
  175.             
  176.             
  177.             AppAdcVirAvgCodeGet(&u32AdcResultTmp);
  178.             AppLcdStkLcdShow(App_TempVirFind(u32NtcIndex, u32AdcResultTmp));
  179.             delay1ms(3000);
  180.             

  181.         }
  182.         
  183.         ///< LCD顯示更新
  184.         {
  185.             //AppLcdDisplayUpdate((stc_lcd_display_cfg_t*)(&gstcLcdDisplayCfg));
  186.         }
  187.     }
  188. }   




  189. ///< LVD 中斷服務函數
  190. void Lvd_IRQHandler(void)
  191. {
  192.     Lvd_ClearIrq();

  193.     // 電量顯示更新標識
  194.     gVolFlag = CHARGEEMPTY;
  195.    
  196. }


  197. ///< GPIO 中斷服務程序 ———— 測溫及選擇功能鍵
  198. void PortC_IRQHandler(void)
  199. {
  200.     delay1ms(20);
  201.     if (TRUE == Gpio_GetIrqStatus(M_KEY_USER0_PORT, M_KEY_USER0_PIN))
  202.     {
  203.         Gpio_ClearIrq(M_KEY_USER0_PORT, M_KEY_USER0_PIN);
  204.         if(FALSE == Gpio_GetInputIO(M_KEY_USER0_PORT, M_KEY_USER0_PIN))
  205.         {
  206.             //標定按鍵按下
  207.             //……
  208.         }
  209.         return;
  210.     }
  211.    
  212.     if (TRUE == Gpio_GetIrqStatus(M_KEY_USER1_PORT, M_KEY_USER1_PIN))
  213.     {
  214.         Gpio_ClearIrq(M_KEY_USER1_PORT, M_KEY_USER1_PIN);
  215.         if(FALSE == Gpio_GetInputIO(M_KEY_USER1_PORT, M_KEY_USER1_PIN))
  216.         {
  217.             //標定按鍵按下
  218.             //……
  219.         }
  220.         return;
  221.     }
  222.    
  223.     if (TRUE == Gpio_GetIrqStatus(M_KEY_USER2_PORT, M_KEY_USER2_PIN))
  224.     {
  225.         Gpio_ClearIrq(M_KEY_USER2_PORT, M_KEY_USER2_PIN);
  226.         if(FALSE == Gpio_GetInputIO(M_KEY_USER2_PORT, M_KEY_USER2_PIN))
  227.         {
  228.             //標定按鍵按下
  229.             //……
  230.         }
  231.         return;
  232.     }
  233. }

  234. ///< GPIO 中斷服務程序 ———— 模式功能鍵
  235. void PortD_IRQHandler(void)
  236. {
  237.     delay1ms(100);
  238.     if (TRUE == Gpio_GetIrqStatus(M_KEY_USER3_PORT, M_KEY_USER3_PIN))
  239.     {
  240.         Gpio_ClearIrq(M_KEY_USER3_PORT, M_KEY_USER3_PIN);
  241.         if(FALSE == Gpio_GetInputIO(M_KEY_USER3_PORT, M_KEY_USER3_PIN))
  242.         {
  243.             //標定按鍵按下
  244.             gu32UserKeyFlag[3] = USERKEYTRUE;
  245.             //……
  246.         }
  247.         return;
  248.     }
  249. }


  250. /******************************************************************************
  251. * EOF (not truncated)
  252. ******************************************************************************/
復制代碼

所有資料51hei提供下載:
HC32L136額溫槍方案.zip (7.54 MB, 下載次數: 84)


作者: woyaodwn    時間: 2021-3-12 10:10
這個可以生產的嗎?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 草久久久 | 精品美女| 精品美女 | 久久久久久成人 | 日韩在线观看一区 | 日韩欧美一区二区三区免费观看 | 97久久国产 | 色橹橹欧美在线观看视频高清 | 成人在线免费视频 | 欧美日韩国产高清视频 | 欧美群妇大交群中文字幕 | 欧美日韩久久久 | 亚洲综合区 | 亚洲精品中文字幕中文字幕 | 一级做a爰片性色毛片16美国 | 91免费观看 | 日本免费网| 给我免费的视频在线观看 | 超碰在线人 | 日韩国产精品一区二区三区 | www.久久.com| 国产综合久久 | 成人免费在线网 | 欧美日韩在线免费观看 | 日日草夜夜草 | 精品视频一区二区三区在线观看 | 午夜国产一级片 | 免费欧美| 一级毛片视频在线 | 国产不卡视频 | 91久久久久久 | 99久久精品免费看国产四区 | 日日夜夜天天 | 精品乱码久久久久 | 久草网站 | 91久久久精品国产一区二区蜜臀 | 成人免费网站www网站高清 | 亚洲欧美在线观看 | 午夜av电影 | 国产中文区二幕区2012 | 国产99久久精品一区二区永久免费 |