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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
家用買的凈水器有時放水給忘了水灌的到處都是,于是想出做一個水流量計,要多水就出多少容量水,給大家分享一下;


中斷處理
  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 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:170318 發表于 2024-4-3 08:50 | 只看該作者
注釋較全,下來學習編程方式,謝謝樓主分享
回復

使用道具 舉報

板凳
ID:430492 發表于 2024-4-3 23:11 | 只看該作者
這個比較實用,多點這樣的設計就好了,感謝樓主!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本超碰| 成人不卡| 看a网站 | 欧美日韩国产在线观看 | 亚洲视频一区在线观看 | 免费黄色片在线观看 | 91在线精品一区二区 | 青青激情网 | 国产精品伦理一区二区三区 | 欧美一级片在线看 | 成人中文字幕在线 | 国产精品视频一区二区三区四蜜臂 | 欧美精品一区二区三区在线 | 天堂在线www | 亚洲成人精品 | 拍真实国产伦偷精品 | 亚洲一区电影 | 精品国产99| 亚洲国产成人精品在线 | 日本久草 | 精品美女 | 亚洲免费在线观看av | 操操网站| 在线观看国产视频 | 日日日视频 | 精品久久久久久中文字幕 | 性色视频 | 亚洲影视在线 | 国产美女视频黄a视频免费 国产精品福利视频 | 91日b| 久久中文网 | 黄色大片在线免费观看 | 亚洲欧美一区二区三区国产精品 | 天堂综合 | 99视频免费在线观看 | 99久久精品免费看国产小宝寻花 | 欧美日韩一 | 亚洲 欧美 另类 综合 偷拍 | 99久久婷婷国产综合精品电影 | 午夜一级做a爰片久久毛片 精品综合 | 国产精品久久久久久吹潮 |