找回密码
 注册

QQ登录

只需一步,快速开始

搜索

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. //------------------------------------------
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-4-19 14:46

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表