温度监测仪开发实例

来源:互联网 发布:5555be%2ecom域名升级 编辑:程序博客网 时间:2024/06/10 03:44

     本实例涉及到传感器技术、GPIO控制技术、中断技术、LCD控制技术、PWM控制技术、A/D转换技术等。

 

一、温度监测仪可以实现如下功能:
1.使用铂电阻传感器探测出目标温度,并通过图形的方式显示在LCD屏上
2.当温度超过报警温度时,在LCD屏上显示报警状态
3.当温度超过报警温度时,通过PWM控制蜂鸣器实现报警
4.当温度超过报警温度时,点亮LED报警灯
5.可以通过按键关闭或打开蜂鸣器及报警等功能


二、系统组成
S3C2410处理器、LCD液晶屏(320*240*16)、LED灯、变送器、铂电阻、蜂鸣器、按键。


三、程序设计
#include "2410lib.h"
extern void  beep_gpio_setup(void);
extern void  beep_start(void);
extern void  beep_stop(void);
extern UINT16T adc_get(void);
extern void  lcd_init(void);
extern void  int_init(void);
extern void  led_init(void);
extern void  led_on(void);
extern void  led_off(void);
extern void  Fill_area(int x0,int y0,int x1,int y1,unsigned short color);
extern void  adc_init(void);
int flag_alarm=1;  //打开alarm功能的表示
int flag_beep=0;   //蜂鸣器和报警灯打开标志
 
int main(int argc,char **argv)
{
 unsigned short adc_data;
 float f_value;
 sys_init();  //初始化 s3c2410's Clock, MMU, Interrupt,Port and UART
 led_init();  //LED接口初始化,配置对应的GPIO属性
 lcd_init();  //初始化LCD控制器
 int_init();   //初始化按键中断
 beep_gpio_setup();   //初始化PWM控制蜂鸣器
 adc_init();  //初始化A/D控制器
 while(1)
 {
  adc_data=adc_get();    //获取到ad转换值
  f_value=adc_data*100.0/1024.0;  //转换为对应的电压值
  uart_printf(" %0.1f /n",f_value);
  Fill_area(60,80,260,120,0x0); //填充温度计的默认颜色
  Fill_area(60,80,(int)(f_value*2),120,0xf000); 
  delay(10000);
  if(f_value>80)    //判断温度是否超过报警值80
  {
   if(flag_alarm) //判断是否设置了报警功能
   {
    beep_start();//驱动蜂鸣器
    led_on(); //打开报警灯
    flag_beep=1; //置标志
   }
   else
   {
    if(flag_beep) //判断标志
    {
     beep_stop(); //关闭蜂鸣器
     led_off(); //关闭报警灯
     flag_beep=0; //flag标志置0
    }
   }
  }
  else
  {
   if(flag_beep)  //判断标志
   {
    beep_stop(); //关闭蜂鸣器
    led_off(); //关闭报警灯
    flag_beep=0; //flag标志置0
   } 
  }
 }
 return 0;
}

 

原创粉丝点击