国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

stm8單片機智能車載空氣凈化器的原理圖和PCB 單片機源程序

[復制鏈接]
樓主
路漫漫 發表于 2020-5-24 01:50:01 | 只看該作者 |倒序瀏覽 |閱讀模式
(1)開機后,紫燈持續顯示2分鐘后,風扇在高速模式下運行。空氣質量傳感器預熱結束,開始檢測空氣質量。(實際測3.5分鐘)
(2)當空氣質量傳感器檢測到空氣質量差時,指示燈仍然顯示紫色,并持續30秒。
(3)檢測空氣質量,如檢測結果仍然是差,則仍然執行第2步步驟。如檢測到空氣質量為良(或優)指示燈顯示綠色,并持續20秒。
(4)檢測氣質量,如檢測結果為差指示燈顯示為紫色,并從第2步開始向下執行;如檢測結果為良,則從第3步開始向下執行;檢測結果為優,則指示燈顯示藍色。
(5)當空氣質量傳感器檢測到差,步驟從第2步到第5步依次循環執行。
STM8S程序源碼.rar (448.15 KB, 售價: 2 E幣)
原理圖和PCB源文件.rar (652.5 KB, 售價: 2 E幣)
車載空氣凈化器設計規格書.doc (2.99 MB, 售價: 2 E幣)
源程序如下:
  1. //100us時鐘基準
  2. void TIM4_Configuration(void)
  3. {
  4.   //TIM4_TimeBaseInit(0x04, 100);  // Time base configuration
  5.   TIM4->PSCR = 0x04; //16
  6.   TIM4->ARR = (100-1);  //100
  7.   
  8.   TIM4_ARRPreloadConfig(ENABLE);
  9.    
  10.   TIM4_ClearFlag(TIM4_FLAG_UPDATE);  // Clear TIM4 update flag
  11.   
  12.   TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE); //Enable update interrupt
  13.   
  14.   enableInterrupts();  // enable interrupts

  15.   TIM4_Cmd(ENABLE);  // Enable TIM4
  16. }
  17. //------------------------------------------
  18. //PWM_Vfan風扇電壓控制  PWM模式 10kHz載頻
  19. void TIM2_Configuration(void)
  20. {
  21.   TIM2_DeInit();
  22.   
  23.   TIM2_TimeBaseInit(TIM2_PRESCALER_16,99); //載頻10kHz
  24.   
  25.   //PWM1模式,輸出使能,初始化占空比0%,有效電平為高電平
  26.   TIM2_OC1Init(TIM2_OCMODE_PWM1,TIM2_OUTPUTSTATE_ENABLE,0,TIM2_OCPOLARITY_HIGH);
  27.   
  28.   TIM2_OC1PreloadConfig(ENABLE);
  29.   
  30.   TIM2_ARRPreloadConfig(ENABLE);
  31.   
  32.   TIM2_Cmd(ENABLE); //TIM2 enable counter
  33. }
  34. //------------------------------------------
  35. //AD配置
  36. void AD_Configuration(void)
  37. {
  38.   /*
  39.   ADC1->TDRL = 0x60;  //disable schmitt trigger
  40.   ADC1->CR1 |= 0x40;  //f(adc)=f(master)/8
  41.   ADC1->CR2 |= 0x08;   //數據右對齊
  42.   //ADC1->CSR = 6;      //通道選擇,初始化為AD_Vfan-AIN6
  43.   ADC1->CSR = 5;    //通道選擇,GAS-AIN5
  44.   ADC1->CR1 |= ADC1_CR1_ADON; //start AD conversion
  45.   ADC1->CR1 |= ADC1_CR1_ADON; //啟動轉換必須第二次使用寫指令來置位寄存器的位
  46.   */
  47.   
  48.   ADC1_DeInit();
  49.   
  50.   //單次采樣,通道6,數據右對齊
  51.   ADC1_ConversionConfig(ADC1_CONVERSIONMODE_SINGLE,ADC1_CHANNEL_6,ADC1_ALIGN_RIGHT);
  52.   
  53.   //f(adc)=f(master)/8
  54.   ADC1_PrescalerConfig(ADC1_PRESSEL_FCPU_D8);
  55.   
  56.   //disable schmitt trigger
  57.   //ADC1_SchmittTriggerConfig(ADC1_SCHMITTTRIG_ALL,DISABLE);
  58.   //ADC1_SchmittTriggerConfig(ADC1_SCHMITTTRIG_CHANNEL5,DISABLE);
  59.   //ADC1_SchmittTriggerConfig(ADC1_SCHMITTTRIG_CHANNEL6,DISABLE);
  60.   
  61.   //Enable the ADC1 peripheral
  62.   ADC1->CR1 |= ADC1_CR1_ADON;
  63.   
  64.   AD_Start();
  65.   //ADC1_StartConversion(); //初始化AD啟動需要寫兩次ADC1->CR1,以后只寫一次就可以了
  66. }
  67. //------------------------------------------
復制代碼


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

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 03:07

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表