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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1588|回復: 2
收起左側

STM32單片機凈水器,水流量計制作 附程序

[復制鏈接]
ID:282074 發表于 2024-4-2 18:52 | 顯示全部樓層 |閱讀模式
家用買的凈水器有時放水給忘了水灌的到處都是,于是想出做一個水流量計,要多水就出多少容量水,給大家分享一下;

電源板.jpg 凈水控制.jpg 水流量計.jpg 主機正面.jpg 主控板.jpg
中斷處理
  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "exti.h"
  4. #include "led.h"
  5. #include "display.h"
  6. #include "key.h"

  7. void EXIT_Init(void)
  8. {
  9.     GPIO_InitTypeDef GPIO_InitStructure;
  10.     EXTI_InitTypeDef EXTI_InitStructure;                //定義外部中斷結構變
  11.     NVIC_InitTypeDef NVIC_InitStructure;                //定義向量中斷結構變量

  12.     RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB  , ENABLE  );
  13.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//  打開復用時鐘
  14.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); //連接中斷管腳PB0

  15.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;                //B0-B1 為外部按鍵 作為3個獨立外部輸入中斷
  16.     GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_IN_FLOATING;                   // 輸入
  17.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 // 最高輸入速率50MHz
  18.     GPIO_Init(GPIOB, &GPIO_InitStructure);                                 // 選擇B端口

  19.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//設置NVIC中斷分組 0位搶占優先級,4位響應優先級
  20.     NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//選擇中斷通道0
  21.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占優先級0 只能為0
  22.     NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//響應優先級2 共有16個
  23.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能中斷
  24.     NVIC_Init(&NVIC_InitStructure);//完成初始化
  25.        
  26.          
  27.     NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;//選擇中斷通道0
  28.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占優先級0 只能為0
  29.     NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;//響應優先級2 共有16個
  30.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能中斷
  31.     NVIC_Init(&NVIC_InitStructure);//完成初始化

  32.     EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line1;//選擇中斷線路0和1
  33.     EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//設置為中斷請求,非事件請求
  34.     EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//設置中斷觸發方式為下降沿觸發
  35.     EXTI_InitStructure.EXTI_LineCmd = ENABLE;//外部中斷使能
  36.     EXTI_Init(&EXTI_InitStructure);

  37. }

  38. /*
  39. ********************************************************************************
  40. ** 函數名稱 : EXTI0_IRQHandler(void)
  41. ** 函數功能 : 外部中斷函數
  42. ** 輸    入        : 無
  43. ** 輸    出        : 無
  44. ** 返    回        : 無  RESET
  45. ********************************************************************************
  46. */
  47. void EXTI0_IRQHandler(void)
  48. {
  49.     if(EXTI_GetITStatus(EXTI_Line0)!=RESET)//判斷某個線上的中斷是否發生
  50.     {
  51.       
  52.         if((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0)==0))    //按鍵真的被按下
  53.         {
  54.                                            mL=mL+sdmaichong_ml;                          //1脈沖為10ML水
  55.                                                       
  56.                                            LjmL= LjmL+sdmaichong_ml;
  57.                                                                       //100ML累計一次
  58.                                        

  59.         }
  60.                
  61. //      while(!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0)); //等待松手 不能使用KEY_B0代替
  62.         EXTI_ClearITPendingBit(EXTI_Line0); //清楚中斷標志位
  63.     }
  64. }


  65. /*
  66. ********************************************************************************
  67. ** 函數名稱 : EXTI1_IRQHandler(void)
  68. ** 函數功能 : 外部中斷函數
  69. ** 輸    入        : 無
  70. ** 輸    出        : 無
  71. ** 返    回        : 無  RESET
  72. ********************************************************************************
  73. */
復制代碼

  1. /*IO使用情況
  2.   A0  A1  A2 A3 A4 A5 A6 A7  鍵盤  B6 B7顯示器  B0水流量感應器  C11 5腳 C12 6腳 24C模塊
  3.         C0電磁閥,C1報警信號
  4. */
  5. #include "stm32f10x_conf.h"
  6. #include "key.h"
  7. #include "display.h"
  8. #include "delay.h"
  9. #include "oled.h"
  10. #include "led.h"
  11. #include "exti.h"
  12. #include "24C02.h"
  13. #include "timer.h"


  14. int main()
  15. {
  16.           SystemInit();  //將主頻調整到72M
  17.     LED_Init();
  18.                 OLED_Init();                        //初始化OLED  
  19.                 OLED_Clear() ;
  20.           TIM1_Init();     //初始化定時器1
  21.           EXIT_Init();
  22.     EXTI0_IRQHandler();
  23. //    EXTI1_IRQHandler();
  24.     AT24CXX_Init(); //24CXX初始化
  25. //                key_Init();
  26.     Read_SmL_LJmL();
  27.    
  28.    while(1)
  29.    {
  30.            HL_key_Display();
  31.            key_scan();
  32.                  Display();         
  33.                         
  34.    }
  35. }

復制代碼

Keil代碼下載: 水流量計 多菜單ML.7z (226.49 KB, 下載次數: 33)

評分

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

查看全部評分

回復

使用道具 舉報

ID:170318 發表于 2024-4-3 08:50 | 顯示全部樓層
注釋較全,下來學習編程方式,謝謝樓主分享
回復

使用道具 舉報

ID:430492 發表于 2024-4-3 23:11 | 顯示全部樓層
這個比較實用,多點這樣的設計就好了,感謝樓主!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合色站导航 | 午夜精品久久久久久久星辰影院 | 黄色网一级片 | 日韩中文字幕一区 | 日日夜夜视频 | 国产9999精品 | 国产欧美一区二区精品久导航 | 欧美精品一区二区三区在线播放 | 99国产精品99久久久久久 | 精品免费视频一区二区 | 久久久99精品免费观看 | 日日碰狠狠躁久久躁96avv | 久久国产精品视频 | 青青激情网 | 亚洲高清在线免费观看 | 午夜久久久久 | 欧美日韩成人网 | 亚洲视频区 | 成人蜜桃av | 免费高清av| 国产精品99久 | 欧洲视频一区二区 | 成人国产一区二区三区精品麻豆 | 久草在线在线精品观看 | 亚洲日日夜夜 | 中文字幕乱码亚洲精品一区 | 亚洲欧美中文日韩在线v日本 | 国产精品一区二区三区免费观看 | 九色av| 日韩欧美在线视频播放 | 国产欧美精品一区二区三区 | a级免费视频 | 国产精品久久精品 | 亚洲精品久久久一区二区三区 | 天堂中文资源在线 | 中文字幕免费中文 | 日韩中文字幕在线免费 | 亚洲成人免费视频在线观看 | 国产一级在线 | 国产日韩一区二区三免费高清 | 久久国内|