⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 solar_ctrl.h

📁 利用ATTINY26 mcu开发的一款太阳能电源箱的程序
💻 H
字号:
//C++头文件                                                  //
//定义了太阳能板类、电池类、输出类、定时类                   //
//***********************************************************//
///////////////////////////////////////////////////////////////
//----------------------数据定义-----------------------------// 
///////////////////////////////////////////////////////////////

#define    bool              char
#define     null             0x00
#define     NULL             null

#define     full             ~NULL
#define     FULL             full

#define     false            0x00
#define     true             ~false

#define     FALSE            false
#define     TRUE             ~FALSE
#define    debug             false
#define    tra_data          FALSE//数据监控 

//#define     Stop_SYS         0x00
//#define     Start_SYS        ~stop
//寄存器位定义 
#define      bit7            0x7
#define      bit6            0x6
#define      bit5            0x5
#define      bit4            0x4
#define      bit3            0x3
#define      bit2            0x2
#define      bit1            0x1
#define      bit0            0x0

//++++++++++++++++++
//太阳能电池管理类
//++++++++++++++++++
#define      turnoff_solar()    PORTB&=~(1<<PORTB0)
#define      turnon_solar()     PORTB|=1<<PORTB0

#define      SLMIN                0X01E//最小电压为:1.5V ,在此电压开启关闭负载
#define      SLMAX                0X2D//最小电压为:1.5V ,在此电压开启关闭负载

int       solar_vmax;
int       solar_vmin;
int       solar_nmv;

//++++++++++++++++++
//可充电电池管理类
//++++++++++++++++++
#define     BATT12VMAX           0X8B//13.9X10V-10
#define     BATT12VMIN           0X69//10.5X10V-10
#define     STOP_LOAD            0X6F//11.1V
#define     DISCHARGE_ARLAM      0X73//11.5V
#define     THRESHOLD_Q_CH       0X78//12V
#define     THRESHOLD_F_CH       0X87//13.5V
#define     THRESHOLD_V_CH       0X91 //14.5V
#define     SYSTEM12V            TRUE
bool         sunup;//日出标志 
bool         low_v;//欠压标志 
int          battery_nmv;
int          solar_ch;
//++++++++++++++++++
//电源输出管理类
//++++++++++++++++++
#define     turnon_load()        PORTB|=1<<PORTB5
#define     turnoff_load()       PORTB&=~(1<<PORTB5)
#define     LOAD12V_MAX           0XD2//20X 10+40
#define     LOAD12V_MIN           0X69//18.0X 10

#define     low_cycle             0x06
#define     hi_cycle              0x03
int     output_nmv;
int     load_nmv; 
char    cycle_num;
//++++++++++++++++++
//定时管理类
//++++++++++++++++++
#define    TIMER_TMAX     0xA8C0//12小时 
#define    TIMER_TMIN     0x0E10//1小时 
#define    TIMERADC_SCALE 0X53//每小时采集值约为83 
#define    timer_second   0x7D
int        timer_tc; //  
int        timer_th;//用户设定时间值 
//++++++++++++++++++
//LED管理类 
//++++++++++++++++++
#define    WORK_LED       0X04
#define    OVERCH_LED     0X01
#define    CHARGE_LED     0X02
//++++++++++++++++++
//温度管理类
//++++++++++++++++++
#define     OVERTEM_BATTMAX   0X32
#define     OVERTEM_BATTMIN   0X14
bool over_tem;
bool first_tem;
int  init_tem; 

///////////////////////////////////////////////////////////////
//-----------------------程序定义----------------------------//
///////////////////////////////////////////////////////////////
#define     MCUCLK             4000000
#define     nop()	           __asm__ __volatile__ ("nop")		//空指令
#define     WD1CK              0X00;
#define     WD2CK              0X01;
#define     WD3CK              0X02;//68.5ms
#define     WD4CK              0X03;
#define     WD5CK              0X04;
#define     WD6CK              0X05;
#define     WD7CK              0X06;
#define     WD8CK              0X07;
#define     WDOG_CK(N)         {WDTCR&=-XF8;WDTCR|=N;}
#define     ENWATCH_DOG        WDTCR|=1<<bit3;
#define     sleep()	           __asm__ __volatile__ ("sleep")	//休眠指令
#define     feed_dog()	       __asm__ __volatile__ ("wdr")	    //看门狗复位指令

#define     T0stoptimer()      TCCR0=NULL                       //停止定时器0
#define     T01CK()            TCCR0=0X01 
#define     T08CK()            TCCR0=0X02 
#define     T064CK()           TCCR0=0X03 
#define     T0256CK()          TCCR0=0X04 
#define     T01024CK()         TCCR0=0X05 

#define     ENT1CA()           TIMSK|=1<<bit6                    //使能T1CA
#define     ENT1CB()           TIMSK|=1<<bit5                    //使能T1CB
#define     ENT0IE()           TIMSK|=1<<bit1                    //使能定时器0
#define     ENT1IE()           TIMSK|=1<<bit2                   //使能定时器1
  
#define     DIST1CA()          TIMSK&=~(1<<bit6)                    //禁止T1CA
#define     DIST1CB()          TIMSK&=~(1<<bit5)                   //禁止T1CB
#define     DIST0IE()          TIMSK&=~(1<<bit1)                   //禁止定时器0
#define     DIST1IE()          TIMSK&=~(1<<bit0)                   //禁止定时器1

#define     CTROC1A()          TCCR1A|=1<<bit6
#define     CTROC1B()          TCCR1A|=1<<bit4
#define     PWMOC1A()          TCCR1A|=1<<bit1
#define     PWMOC1B()          TCCR1A|=1<<bit0
//#define     CTROC1A()          TCCR1A|=1<<bit6
//#define     CTROC1B()          TCCR1A|=1<<bit4
#define     T11CK()            TCCR1B=(1<<bit0)
#define     T12CK()            TCCR1B=(1<<bit1)
#define     T14CK()            TCCR1B=(1<<bit1)|(1<<bit0)
#define     T18CK()            TCCR1B=(1<<bit2)
#define     T116CK()           TCCR1B=(1<<bit2)|(1<<bit0)
#define     T132CK()           TCCR1B=(1<<bit2)|(1<<bit1)
#define     STOPT1CK()         TCCR1B&=0XF0

#define     TOFF_CYCLE         0X50//在主频2000000Hz下1分频得到的PWM频率为50000Hz
#define     OC_CYCLE           0xFF//50//OC_CYCLE=MCUCK/50000=(80)d=0X50
                                    //在主频4000000Hz下4分频得到的PWM频率为8333Hz
#define     BTON_CYCLE         0x18//OC_CYCLE=MCUCK/50000=(80)d=0X50
                                    //在主频4000000Hz下4分频得到的PWM频率为8333Hz

#define     OC1A_V(N)          OCR1A=N
#define     OC1B_V(N)          OCR1B=N
#define     OC1C_V(N)          OCR1C=N


//////////////////////////////////////////

#define     ADC_ERRO           0X14                             //ADC误差为0.05v 
#define     ADC_REF_AVCC       0X00                             // ADC参考电压定义 
#define     ADC_REF_PA3        0X40
#define     ADC_REF_25         0X80
#define     ADC_REF_25P        0XC0

#define     ADCMIN_CH          0X00                             //ADC最小与最大通道号 
#define     ADCMAX_CH          0X04

#define     ADCCH0             0X00                             //ADC通道号 
#define     ADCCH1             0X01
#define     ADCCH2             0X02
#define     ADCCH3             0X03
#define     ADCCH4             0X04
#define     ADC_CH(n)         ADMUX=ADC_REF_25P+n               //通道选择N<5 

#define	    ENADC()	           ADCSR|=1<<bit7                     //使能ADC
#define	    DISADC()	       ADCSR&=~(1<<bit7)                     //关闭ADC
#define     START_ADC()        ADCSR|=1<<bit6                     //启动单次ADC
#define     ENADCIE()          ADCSR|=1<<bit3                     //ADC中断使能 

#define     ADCCK2             0X01
#define     ADCCK4             0X02
#define     ADCCK8             0X03
#define     ADCCK16            0X04
#define     ADCCK32            0X05
#define     ADCCK64            0X06
#define     ADCCK128           0X07

#define     ADCCK(N)           ADCSR=(ADCSR&0XC8)|N             //ADC分频器 

#define     ADC_ADD_CT         0X03
char        ADC_CH;
int         ADC_variable;
#define     MEM_IO(mem_addr)          _MMIO_BYTE(mem_addr)

    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -