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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3646|回復: 1
打印 上一主題 下一主題
收起左側

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)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:462629 發表于 2021-3-12 10:10 | 只看該作者
這個可以生產的嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕日韩一区 | 日韩av在线免费 | 尤物视频在线免费观看 | 欧美日韩精品影院 | 国产精品a一区二区三区网址 | 男女视频在线观看 | 亚洲一区二区三区国产 | 国产精品一二三区 | 欧美在线一级 | 久久综合香蕉 | 日本不卡视频 | 国产露脸国语对白在线 | 欧美淫 | re久久| 欧美精品一区在线发布 | 久久久久久久久久久久91 | 一区二区影院 | 99热首页 | 久久成人精品视频 | 五月婷婷在线视频 | 综合一区二区三区 | 91色视频在线观看 | 一区二区三区免费在线观看 | 国产精品色 | www国产成人免费观看视频,深夜成人网 | www.4虎影院| 亚洲视频免费在线观看 | 国产一区二区精华 | 国产91中文 | 日韩视频免费在线 | 国产精品爱久久久久久久 | 亚洲最新在线视频 | 激情av免费看 | 午夜一区二区三区视频 | 95国产精品 | 91一区二区三区 | 一区二区精品 | 久久久国产精品 | 国产激情亚洲 | 六月色婷 | 日韩成人高清在线 |