英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4506|回复: 0
打印 上一主题 下一主题

一贴空调程序

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-26 12:40:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
结构体data把温度和时间这两个最基本的量组织起来,传递给不同的驱动模块,
在模块内部根据这些量的变化,调整io_buf/*I/O口刷新缓存*/
最后在io_send_task(io_buf);/*I/O口驱动*/中刷新I/O口;
这里只给出了制冷模式驱动;不涉及硬件部份

/********************************************************************
主功能函 数 名:
功    能:全局变量
说    明  
入口参数:
返 回 值:
设    计:FANZENGTING           日    期:2002-11-25
修    改:                      日    期:
***********************************************************************/
/*------------------------------------*/
/* 定义IO口 */
/*------------------------------------*/
#define NPG_IO  RA0
#define ROOM_IO  RA1
#define STF_IO  RA2
#define WFJ_IO  RA3
#define SCL_164  RA4
#define SDA_164  RA5
#define MOTOER_IO RB0
#define THREE_IO RB1
/*------------------------------------*/
#define KEY_IO         RB2
#define SHORT_IO RB3
#define FLZ_IO         RB4
#define ONE_IO  RB5
#define RF_IO           RB6
#define GLJC_IO         RB7
#define PGFK_IO         RC0
#define BUZZER_IO       RC1
/*------------------------------------*/
#define STEP1_IO RC2
#define STEP2_IO RC3
#define STEP3_IO RC4
#define STEP4_IO RC5
/*------------------------------------*/
#define NFJ_IO  RC6  
/*------------------------------------*/
/*------------------------------------*/
/* 定义全局标志 */
/*------------------------------------*/
/********************************************************************/
struct FLAGBYTE
           {
        unsigned char b0:1;
             unsigned char b1:1;
      unsigned char b2:1;
      unsigned char b3:1;
      unsigned char b4:1;
      unsigned char b5:1;
      unsigned char b6:1;
      unsigned char b7:1;  
            };
/*******************************************************************/
struct     FLAGBYTE       flag1;
#define    auto_mode_bit        flag1.b0
#define    cool_mode_bit        flag1.b1
#define    dar_mode_bit      flag1.b2
#define    fan_mode_bit       flag1.b3
#define    heat_mode_bit        flag1.b4
#define    swing_bit     flag1.b5
#define    bed_bit        flag1.b6
#define    ds_bit         flag1.b7
/*******************************************************************/
struct     FLAGBYTE       flag2;
#define    hight_fan_bit        flag2.b0
#define    mid_fan_bit     flag2.b1
#define    low_fan_bit        flag2.b2
#define    auto_fan_bit      flag2.b3
/*******************************************************************/
struct     FLAGBYTE       flag3;
#define    motoer_onoff_bit     flag3.b0/*压机开关状态位*/
#define    outfan_onoff_bit     flag3.b1/*外风机开关状态位*/
#define    stf_onoff_bit        flag3.b2/*四通阀开关状态位*/
/******************************************************************/
struct     FLAGBYTE       flag4;
#define    flash_bit            flag4.b0/*半秒标志*/
#define    test_bit             flag4.b1/*自检标志*/
#define    err_bit              flag4.b2/*故障标志*/
#define    room_err_bit         flag4.b3/*室温故障标志*/
#define    npg_err_bit          flag4.b4/*内盘故障标志*/
#define    on_off_bit           flag4.b5/*开关机状态标志*/
#define    ds_on_bit            flag4.b6/*定时开机标志*/
#define    ds_off_bit           flag4.b7/*定时关机标志*/
/******************************************************************/
unsigned char io_buf,/*I/O口刷新缓存*/
       disp_buf,/*显示缓存*/
       display_turn,/*显示转换字*/
              task_count;
unsigned int  bed_count,
       ad_temp;
/******************************************************************/
/*------------------------------------*/
/* 定义总信号量 */
/*------------------------------------*/
struct data0
{
unsigned char set_temp;/*设定温度*/
unsigned int room_temp;/*房间温度*/
unsigned int npg_temp;/*内盘管温度*/
unsigned char fan_buf;
unsigned int low_fan_sec;/*特低风时间*/
unsigned int low_low_fan_sec;/*超低风时间*/
unsigned char stf_on_time;/*四通阀开时间*/
unsigned char stf_off_time;/*四通阀关时间*/
unsigned int  motoer_on_time;/*压缩机开时间*/
unsigned int  motoer_off_time;/*压缩机关时间*/
unsigned int  save_io_buf;/*总信号量*/
}data;
/******************************************************************/
#define    motoer_on_data    0x0001/*压机开信号*/
#define    motoer_off_data   0xfffe/*压机关信号*/
#define    outfan_on_data    0x0002/*外风机开信号*/
#define    outfan_off_data   0xfffd/*外风机关信号*/
#define    stf_on_data       0x0004/*四痛阀开信号*/
#define    stf_off_data      0xfffb/*四通阀关信号*/
#define    fan_on_data       0x0008/*内风机开信号*/
#define    fan_off_data      0xfff7/*内风机关信号*/
#define    fsd_on_data       0x0010/*防霜冻信号*/
#define    fsd_off_data      0xffef/*防霜冻结束信号*/
#define    flfeng_on_data    0x0020/*防冷风信号*/
#define    flfeng_off_data   0xffdf/*防冷风结束信号*/
#define    gzbf_on_data      0x0040/*过载保护信号*/
#define    gzbf_off_data     0xffbf/*过载保护结束信号*/
#define    hx_on_data        0x0080/*开始化霜信号*/
#define    hx_off_data       0xff7f/*结束化霜信号*/
#define    hightfan_on_data  0x0100/*高风开信号*/
#define    hightfan_off_data 0xfeff/*高风关信号*/
#define    midfan_on_data    0x0200/*中风开信号*/
#define    midfan_off_data   0xfdff/*中风关信号*/
#define    lowfan_on_data    0x0400/*低风开信号*/
#define    lowfan_off_data   0xfbff/*低风关信号*/
#define    hight_on_data     0x0800/*强制高风开信号*/
#define    hight_off_data    0xf7ff/*强制高风关信号*/
#define    low_low_on_data   0x1000/*超低风开信号*/
#define    low_low_off_data  0xfeff/*超低风关信号*/
#define    low_on_data       0x2000/*特低风开信号*/
#define    low_off_data      0xfdff/*特低风关信号*/
/******************************************************************
0     motoer_data
1     outfan_data
2     stf_data
3     fan_data
4     fsd_data
5     flfeng_data
6     gzbf_data
7     hx_data
8     hight_fan_data
9     mid_fan_data
10    low_fan_data
11    hight_data
12    low_low_data
13    low_data
/******************************************************************/
#define  motoer_on      in_data.save_io_buf=in_data.save_io_buf|motoer_on_data
#define  motoer_off     in_data.save_io_buf=in_data.save_io_buf&motoer_off_data
#define  outfan_on      in_data.save_io_buf=in_data.save_io_buf|outfan_on_data
#define  outfan_off     in_data.save_io_buf=in_data.save_io_buf&outfan_off_data
#define  stf_on         in_data.save_io_buf=in_data.save_io_buf|stf_on_data
#define  stf_off        in_data.save_io_buf=in_data.save_io_buf&stf_off_data
#define  fsd_on         in_data.save_io_buf=in_data.save_io_buf|fsd_on_data
#define  fsd_off        in_data.save_io_buf=in_data.save_io_buf&fsd_off_data
#define  gzbf_on        in_data.save_io_buf=in_data.save_io_buf|gzbf_on_data
#define  gzbf_off       in_data.save_io_buf=in_data.save_io_buf&gzbf_off_data
#define  fan_on  in_data.save_io_buf=in_data.save_io_buf|fan_on_data
#define  fan_off in_data.save_io_buf=in_data.save_io_buf&fan_off_data
#define  hight_fan_on   in_data.save_io_buf=in_data.save_io_buf|hightfan_on_data
#define  hight_fan_off  in_data.save_io_buf=in_data.save_io_buf&hightfan_off_data
#define  mid_fan_on in_data.save_io_buf=in_data.save_io_buf|midfan_on_data
#define  mid_fan_off in_data.save_io_buf=in_data.save_io_buf&midfan_off_data
#define  low_fan_on     in_data.save_io_buf=in_data.save_io_buf|lowfan_on_data
#define  low_fan_off in_data.save_io_buf=in_data.save_io_buf&lowfan_off_data
#define  hight_on       in_data.save_io_buf=in_data.save_io_buf|hight_on_data
#define  hight_off      in_data.save_io_buf=in_data.save_io_buf&hight_off_data
#define  low_on       in_data.save_io_buf=in_data.save_io_buf|low_on_data
#define  low_off      in_data.save_io_buf=in_data.save_io_buf&low_off_data
#define  low_low_on       in_data.save_io_buf=in_data.save_io_buf|low_low_on_data
#define  low_low_off      in_data.save_io_buf=in_data.save_io_buf&low_low_off_data


/*****************************************************************************************
主功能函 数 名:cool_mode( )
功    能:制冷模式驱动
说    明  
入口参数:外部信号量
返 回 值:IO映射
设    计:FANZENGTING           日    期:2002-11-25
修    改:                      日    期:
/*****************************************************************************************/
unsigned char cool_mode(in_data)
struct data0 in_data;
{
  if(cool_mode_bit==0)
  {
   return(in_data.save_io_buf);
  }
  fan_on;
  if((in_data.room_temp>=in_data.set_temp+1)&&
    ((in_data.save_io_buf&fsd_on_data)==0))
  {
   motoer_on;
   outfan_on;
  }
  if((in_data.room_temp<=in_data.set_temp-1)||
    ((in_data.save_io_buf&fsd_on_data)==1))
  {
   motoer_off;
   outfan_off;
  }
  if(in_data.npg_temp<=9)
  {
   fsd_on;
  }
  if(in_data.npg_temp>=16)
  {
   fsd_off;
  }/*压机任务*/
/*****************************************************************************************/
  if(auto_fan_bit==1)
  {
   hight_fan_off;
   mid_fan_off;
   low_fan_off;
   if(in_data.room_temp<=(in_data.set_temp+1))
   {
    low_fan_on;
    return(in_data.save_io_buf);
   }
   if(in_data.room_temp>(in_data.set_temp+2))
   {
    hight_fan_on;
    return(in_data.save_io_buf);
   }
   mid_fan_on;
  }/*内风机任务*/
return(in_data.save_io_buf);
}
/*****************************************************************************************/


/***************************************************
公司名称:
模块名称:main.c
功    能:空调驱动模块           芯片型号:MB89P935C
说    明:
程序设计:FANZENGTING      
设计时间:2002.11.25        
版 本 号: 20021125
****************************************************/
#include <pic.h>
#include <pic1674.h>
#include <math.h>
#include <stdio.h>
#include "rest.c"
#include "int.c"
#include "temp.c"
#include "auto.c"
#include "cool.c"
#include "dar.c"
#include "fan.c"
#include "heat.c"
#include "bed.c"
#include "swing.c"
#include "disp.c"
#include "display.c"
/***************************************************/
extern unsigned char auto_mode( );
extern unsigned char cool_mode( );
extern unsigned char dar_mode( );
extern unsigned char fan_mode( );
extern unsigned char heat_mode( );
extern void int_task( );
extern unsigned char disp_task( );
extern void  swing_task( );
extern unsigned char temp_test_task( );
extern void  display( );
extern unsigned char  bed_task( );
/***************************************************/
void  pg_task( )
{
  return;
}
/****************************************************/
void  buzzer_task( )
{
  return;
}
/****************************************************/
void  test_task( )
{
  return;
}
/****************************************************/
void  err_task( )
{
  return;
}
/****************************************************/
void  io_send_task(unsigned char io_buf)
{
  return;
}
/****************************************************/
                  /*主函数*/
/****************************************************/
void main(void)
{
  int_task( );
  while(1)
  {
   disp_task( );
   io_buf=auto_mode(data);/*自动模式*/
   io_buf=cool_mode(data);/*制冷模式*/
   io_buf=dar_mode(data);/*除湿模式*/
   io_buf=fan_mode(data);/*通风模式*/
   io_buf=heat_mode(data);/*制热模式*/
   bed_task(data);/*睡眠模式*/
   swing_task( );/*摆风任务*/
   pg_task( );/*PG调速*/
   temp_test_task( );/*温度采集*/
   display( );/*显示任务*/
   buzzer_task( );/*提示音任务*/
   test_task( );/*测试任务*/
   err_task( );/*故障处理*/
   io_send_task(io_buf);/*I/O口驱动*/
  }
}
/****************************************************/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 03:26 , Processed in 0.050783 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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