锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

基于STC89C52的GY-906智能温度计

时间:2023-09-04 02:07:01 ta3130温度传感器230b在线红外温度传感器

实物效果

设计系统硬件

根据本设计的基本要求,硬件系统电路可分为数据采集模块、数据分析模块、人机交互三个模块OLED显示界面模块。由数据采集模块组成GY-906-BCC、MLX90614由内部状态机控制物体温度和环境温度的测量和计算,温度后处理,结果通过PWM或是SMBus模式输出。完成人机间信息交换的驱动显示模块

如图2-1所示,硬件电路设计:

图2?1 系统硬件结构图

  1. 利用红外温度测量传感器收集人体温度变化产生的电压信号;
  2. 输出电压信号通常较小,需要通过前端信号处理电路线性放大;
  3. 经过SigmaDelta调制器转换为单一比特流,并反馈DSP后续处理。信号可编程(使用)EEPROM实现)FIR和IIR低通滤波器可以进一步降低输入信号的带宽,从而达到所需的噪声特性和刷新率。
  4. 测量所得Ta和To重新调整为PWM所需的输出分辨率和数据存在PWM状态;
  5. 然后显示单片机读取的数据OLED从而显示被测温度的度数。

系统软件设计

主程序说明:

  1. 初始化:初始化硬件,系统上电后等待所有模块完成自检,初始化各标志。
  2. 数据交互:模块自检后,传感器开始获得温度,单片机主动向传感器索要温度,刷新时间为10ms获取一次。
  3. 温度处理:当单片机向温度传感器索要温度时,保存EEPROM在里面,并分析温度。当温度超过37摄氏度时,系统将停止刷新并触发报警。需要按钮清除报警,系统将恢复刷新。

系统显示部分流程图

显示说明:

  1. 初始化:系统上电后,显示屏将显示(系统正在初始化参数,请稍等)ms,初始化完成后,将温度打印到屏幕上,完成温度获取。
  2. 温度刷新参数:当温度达到37摄氏度以上时,将打印在屏幕上(温度过高)。此时,屏幕将不再刷新,需要按钮清除以刷新参数。

主程序

int main() {  unsigned int temp;  static int temp_bmp;  unsigned char key_temp=0;  static char flag=1;  beep=0;  OLED_Init();  OLED_Clear();   SCL=1;SDA=1;_nop_();    _nop_();_nop_();_nop_();    SCL=0;    delay(1000);    SCL=1;   while(1)   {    key_temp=key_init();      OLED_ShowCHinese(0,0,0);   OLED_ShowCHinese(15,0,1);   OLED_ShowCHinese(30,0,2);   OLED_ShowCHinese(45,0,3);   OLED_ShowCHinese(60,0,4);   OLED_ShowCHinese(75,0,5);   OLED_ShowCHinese(90,0,6);   OLED_ShowCHinese(105,0,7);   OLED_ShowCHinese(45,2,8);   OLED_ShowCHinese(60,2,9);          temp=memread();           //获得温度               display(temp);            ///温度报警      if((a<38)&&(flag==1))   {    OLED_ShowString(0,5,"Temp=");    OLED_ShowString(70,5,".");    OLED_ShowNum(40,5,a,3,16);    OLED_ShowNum(65,5,b,3,16);    OLED_ShowCHinese(90,5,15);   }   else if(a>=38)   {    flag=0;    beep=1;   }   if(key_temp)   {    switch(key_temp)    {     case PRES_KEY:beep = 0;flag=1.//消除报警,刷新显示    }   }  }  }

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章