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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3713|回復(fù): 1
收起左側(cè)

HC32L136額溫槍方案包括BOM,SCH.PCB.源碼

[復(fù)制鏈接]
ID:71535 發(fā)表于 2021-3-7 17:27 | 顯示全部樓層 |閱讀模式
Altium Designer畫的額溫槍原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png 51hei.png 51hei.png

單片機(jī)源程序如下:
  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.     ///< 電量監(jiān)測(cè)模塊初始化
  82.     AppVolMonitorInit();
  83.    
  84.    
  85.     // 初次上電開機(jī)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 初始狀態(tài)顯示
  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.                     //(進(jìn)入溫度測(cè)量)
  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.         ///< 溫度采集及數(shù)據(jù)處理
  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 中斷服務(wù)函數(shù)
  190. void Lvd_IRQHandler(void)
  191. {
  192.     Lvd_ClearIrq();

  193.     // 電量顯示更新標(biāo)識(shí)
  194.     gVolFlag = CHARGEEMPTY;
  195.    
  196. }


  197. ///< GPIO 中斷服務(wù)程序 ———— 測(cè)溫及選擇功能鍵
  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.             //標(biāo)定按鍵按下
  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.             //標(biāo)定按鍵按下
  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.             //標(biāo)定按鍵按下
  229.             //……
  230.         }
  231.         return;
  232.     }
  233. }

  234. ///< GPIO 中斷服務(wù)程序 ———— 模式功能鍵
  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.             //標(biāo)定按鍵按下
  244.             gu32UserKeyFlag[3] = USERKEYTRUE;
  245.             //……
  246.         }
  247.         return;
  248.     }
  249. }


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

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

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:462629 發(fā)表于 2021-3-12 10:10 | 顯示全部樓層
這個(gè)可以生產(chǎn)的嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人精品视频免费 | 欧美精品导航 | 91成人免费观看 | 亚洲毛片在线 | 欧美日韩在线一区二区 | 亚洲一区二区日韩 | 国产精品999 | 凹凸日日摸日日碰夜夜 | 国产精品视频一二三 | av网站在线免费观看 | 日本久久一区 | 亚洲国产精品美女 | 免费av直接看| 亚洲最新在线 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 日本精品一区二区 | 日韩电影免费在线观看中文字幕 | 久久久精品一区二区三区 | 国产亚洲欧美在线 | av香港经典三级级 在线 | 亚洲精品观看 | 欧美一区二区三区日韩 | 欧美高清视频一区 | 国产精品亚洲精品久久 | 日韩欧美第一页 | 日韩av成人 | 岛国毛片在线观看 | 粉嫩一区二区三区四区公司1 | 亚洲综合色视频在线观看 | 伊人网站在线观看 | 麻豆久久久久久久 | 久国产视频 | 九一精品 | 国产欧美一区二区三区在线看 | 亚洲视频在线观看 | 精品久久久久久久 | 免费观看色 | 国产精品大片在线观看 | 成人免费在线电影 | 免费观看的av毛片的网站 | 国产成人一区二区三区久久久 |