亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c.bak

?? 充電器源代碼 才有AVR CPU 控制 可以對(duì)大部分電池充電
?? BAK
字號(hào):
/******************************************************************************
*   name: main.c
*   project: 智能充電器
*   author: fengzai(panda)
*   date: 2007.1.14
*
*   感謝ouravr一直以來對(duì)我提供的幫助,感謝論壇上的朋友。
*   特別向 armork  章其波bozai 表示感謝,謝謝你們不厭其煩的回答我的提問。
*   功能描述:
*   自動(dòng)判斷電池狀態(tài),對(duì)空電池進(jìn)行預(yù)放電,250ma預(yù)充電,800ma快充電,當(dāng)溫度
*   參數(shù)呈現(xiàn)下降趨勢(shì)的時(shí)候,停止充電,進(jìn)行15分鐘的涓流充電。
*   其中的各項(xiàng)參數(shù)可以在頭文件里修改。
*   具有自動(dòng)保護(hù)功能。
*   溫度測(cè)量采用芝浦熱敏電阻,電路連接見temp.h頭文件。
*   暫時(shí)未設(shè)計(jì)人機(jī)界面,打算用個(gè)8字LED,后續(xù)版本推出。
*
*   特別說明:這是本人第一個(gè)GCC項(xiàng)目,很多地方很不成熟,充電器的各項(xiàng)充電參數(shù)也是
*   想當(dāng)然的,沒有經(jīng)過嚴(yán)格的測(cè)試。我的實(shí)驗(yàn)電池為600ma 7號(hào)GP充電電池,可能代表性
*   也不強(qiáng)。我會(huì)逐步完善代碼。敬請(qǐng)各位大蝦指出問題所在,謝謝!
*
*                           楓 仔fengzai   martin7wind     martin7wind@163.com
*                                                                   2007.1.28
******************************************************************************/

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "i_output.h"
#include "adc.h"
#include "usart.h"
#include "temp.h"
#include "time.h"
#include "main.h"

#define uchar	unsigned char
#define uint	unsigned int
#define BIT(x)	(1<<(x))
#define NOP()	asm("nop")
#define WDR() 	asm("wdr")

uint time_t=0;
volatile uint time=0;    //全局變量,定義系統(tǒng)時(shí)鐘
volatile uint detect_dt_time=0; //全局變量,用來判斷合適檢測(cè)溫度
volatile uint purling_time=0;   //標(biāo)志開始涓流充電的時(shí)間

volatile uchar purling_status=1;

volatile uchar work_status=2;  //全局變量,定義系統(tǒng)工作狀態(tài)
volatile uint dt = 50;            //溫度上升幅度
volatile uchar current_status = CURRENT_WAIT; //充電標(biāo)志,描述電流是否調(diào)整完畢

uint c_current;  //充電電流
uint b_vol;      //電池電壓
uint b_temp;     //電池溫度
uint b_temp_pre = 0;  //用來計(jì)算溫度變化的量

/*------------------------------------------------------------------------------
*  系統(tǒng)時(shí)鐘程序,OK!
*-----------------------------------------------------------------------------*/
//T2溢出中斷服務(wù)程序
//#pragma interrupt_handler timer2_ovf_isr:6
//void timer2_ovf_isr(void)
SIGNAL(SIG_OVERFLOW2)
{
	TCNT2 = 0x28;
	time_t++;
	if(time_t==100)
   {
     time++;
     detect_dt_time++;
     time_t=0;
   }
	TCCR2  = 0x07;//啟動(dòng)定時(shí)器
}


//端口初始化
void port_init(void)
{
	PORTA = 0x00;
	DDRA  = 0x00;   //DDRA = 0b00000000
	PORTB = 0x00;
	DDRB  = 0x00;
	PORTC = 0x00;
	DDRC  = 0x00;
	PORTD = 0x22;  //PORTD = 0x00000010
	DDRD  = 0xa2;  //DDRD = 0x10000010
}


void init_devices(void)
{
	cli(); //禁止所有中斷
	MCUCR  = 0x00;
	MCUCSR = 0x80;//禁止JTAG
	GICR   = 0x00;
	port_init();
	timer1_init();
	timer2_init();
	usart_init();
	sei();//開全局中斷
}

/*------------------------------------------------------------------------------
*  測(cè)量模塊,測(cè)量系統(tǒng)各參數(shù),
*-----------------------------------------------------------------------------*/
void system_test(void)
{
  if (work_status==WORK_DISCHARGE)
     STOP_DISCHARGE;
  _delay_ms(100);
  c_current = charge_current();  //充電電流
  b_vol = battery_vol();      //電池電壓
  b_temp = temp();
  
  put_s("I:");  //分別測(cè)出電流、電壓、溫度
  send_int(c_current);
  put_s("V:");
  send_int(b_vol);
  put_s("T:");
  send_int(b_temp);
  put_s("Time:");
  send_int(time);
  
  if (work_status==WORK_DISCHARGE)
     START_DISCHARGE;
  _delay_ms(100);
}

/*------------------------------------------------------------------------------
* 測(cè)量dt,即溫度變化的曲線,每2分鐘檢測(cè)一次dt
*-----------------------------------------------------------------------------*/
void detect_dt(void)
{
  if(detect_dt_time>=40)
   {
     detect_dt_time = 0;
     dt = b_temp - b_temp_pre;
     b_temp_pre = b_temp;
     put_s("dt=\n");
     send_int(dt);
   }
}

/*------------------------------------------------------------------------------
* 第一次決定充電工作狀態(tài)
*  TOP_CHARGE_VOL 1350
*  NORMAL_CHARGE_VOL 1300
*  START_DISCHARGE_VOL 1200
*  STOP_DISCHARGE_VOL 1000
*------------------------------------------------------------------------------*/
void pre_choose_work(void)
{
  if( b_vol > TOP_CHARGE_VOL )
    {
      work_status = WORK_FULL;  //電壓大于極限電壓,表示電池本來就是滿的。
      put_s("Battery is Full!");
    }
  if( b_vol > NORMAL_CHARGE_VOL && b_vol <= TOP_CHARGE_VOL ) //是否進(jìn)行涓流充電
    {
    work_status = WORK_PURLING;
    put_s("Purling Charge!\n");
    }
  if( b_vol > START_DISCHARGE_VOL && b_vol <= NORMAL_CHARGE_VOL) //是否直接進(jìn)入正常充電
    {
     work_status = WORK_CHARGE;
     put_s("Charging!\n");
    }
  if( b_vol > STOP_DISCHARGE_VOL && b_vol <= START_DISCHARGE_VOL )   //放入電池,如果小于設(shè)定值,進(jìn)入放電狀態(tài)
    {
    work_status = WORK_DISCHARGE;
    put_s("Start Discharge!\n");
    }
  if( b_vol > EMPTY_VOL && b_vol < STOP_DISCHARGE_VOL ) //電池小于空電壓,直接進(jìn)入充電狀態(tài)
    {
    work_status = WORK_PRE_CHARGE;
    put_s("Start PreCharge!\n");
    }
  if( b_vol <= EMPTY_VOL )  //電池小于最低電壓,認(rèn)為沒有電池存在或電池已損壞
    {
    work_status = WORK_EMPTY;
    put_s("No Battery In!\n");
    }
}


/*------------------------------------------------------------------------------
* 保護(hù)函數(shù),當(dāng)電壓過高,溫度過高,充電時(shí)間過長(zhǎng)時(shí),自動(dòng)停止一切動(dòng)作
*------------------------------------------------------------------------------*/
void protect(void)
{
  /* while( (b_vol > DANGER_VOL) || (b_temp > DANGER_T) || (time > MAX_TIME) )*/
  //put_s("protecting!\n");
  if ( b_temp > DANGER_T )
  {
   put_s("The temprature is too high! Stop charging!\n");
   work_status = WORK_ERROR;
  }
  if ( time > MAX_TIME )
  {
   put_s("The charging is too long! Stop charging1\n");
   work_status = WORK_ERROR;
  }
  if ( b_vol > DANGER_VOL )
  {
   put_s("The voltage is too high! Stop Charging!\n");
   work_status = WORK_ERROR;
  }
}



int main()
{

  init_devices();
  put_s("ok!\n");
  pwm_output(1000);
  //current_control(0);
  
  //STOP_DISCHARGE;
  
  put_s("Battery Detecting......\n");
  system_test();
  put_s("Battery Voltage is:");
  send_int(b_vol);

  pre_choose_work();
  //START_DISCHARGE;
  put_c(work_status+48);
  put_c('\n');
  
  while(1)
  {
   system_test();
   protect();
   //_delay_ms(1000);
  //put_c(work_status+48);
  //put_c('\n');
   //put_s("start dt!\n");
   detect_dt();  //第一次結(jié)果舍棄
   //detect_dt();

  // put_s("?\n");
   //put_c(work_status+48);
   
   switch(work_status)
     {

       case WORK_ERROR:  //錯(cuò)誤狀態(tài),停止充電,停止放電,報(bào)錯(cuò)
         {
           //current_control(1);
           STOP_DISCHARGE;
           if (b_vol > EMPTY_VOL)
            pre_choose_work();
           put_s("Error!\n");
         }break;
         
       case WORK_EMPTY:  //沒有電池,停止放電
         {
           STOP_DISCHARGE;
           //current_control(1);  錯(cuò)誤所在,沒有電池,電流肯定是0
           put_s("No Battery!\n");
           if (b_vol < EMPTY_VOL)
            pre_choose_work();
         }break;


       case WORK_DISCHARGE:  //放電態(tài),檢查是否達(dá)到停止放電的程度
         {
           put_s("Discharging!\n");
           pwm_output(1023); //關(guān)閉充電電流
           START_DISCHARGE;
           _delay_ms(60000);
           _delay_ms(60000);
           _delay_ms(60000);
           _delay_ms(60000);
           _delay_ms(60000);
           _delay_ms(60000);
           if ( b_vol < STOP_DISCHARGE_VOL && b_vol > EMPTY_VOL )
            {
             STOP_DISCHARGE;
             work_status = WORK_PRE_CHARGE;
            }
           if ( b_vol <= EMPTY_VOL )
            {
             STOP_DISCHARGE;
             work_status = WORK_EMPTY;
             put_s("No Battery In!");
            }
         }break;

       case WORK_PRE_CHARGE:  //預(yù)充電態(tài),當(dāng)電池達(dá)到1300mv時(shí),開始快充
         {
           STOP_DISCHARGE;
           put_s("preCharging!\n");
           while(current_status)
           {
            current_control(PRE_CHARGE_CURRENT);
            current_status = CURRENT_OK;
           }
           if ( b_vol >= NORMAL_CHARGE_VOL )
           {
            work_status = WORK_CHARGE;
            current_status = CURRENT_WAIT;
           }
           
           if( b_vol < EMPTY_VOL )
           {
             current_control(1);
             work_status = WORK_EMPTY;
             put_s("No Battery!\n");
           }
           
         }break;

       case WORK_CHARGE:  //快速充電狀態(tài),默認(rèn)充電電流800MA
         {
           STOP_DISCHARGE;
           put_s("Normal Charging!\n");
           while(current_status)
           {
            current_control(CHARGE_CURRENT);
            current_status = CURRENT_OK;
           }
           if( dt <= STOP_CHARGE_DT )
           {
            pwm_output(1023); //關(guān)閉電流
            work_status = WORK_PURLING;
            current_status = CURRENT_WAIT;
           }
           
           if( b_vol < EMPTY_VOL )
           {
             pwm_output(1023); //關(guān)閉電流
             work_status = WORK_EMPTY;
             put_s("No Battery!\n");
           }
           
         }break;

       case WORK_PURLING:  //涓流充電,大約持續(xù)10分鐘就充滿電池了,OK!
         {
           STOP_DISCHARGE;
           uint dtime;
           while(purling_status)
           {
             purling_status = 0;
             purling_time = time;
           }
           put_s("Purling Charging!\n");
           pwm_output(1023);  //關(guān)閉電流
           _delay_ms(PURLING_DELAY);
           purling_current_control(PURLING_CURRENT);

           dtime = time;
           dtime -= purling_time;
           
           send_int(dtime);
           
           if( dtime >= PURLING_TIME )
           {
             work_status = WORK_FULL;
             current_control(1);  //涓流充電完成,關(guān)閉電流
             purling_status = 1;
           }
           
           if( b_vol < EMPTY_VOL )
           {
             current_control(1);
             work_status = WORK_EMPTY;
             put_s("No Battery!\n");
           }
           
         }break;

       case WORK_FULL:   //電池已經(jīng)滿的狀態(tài)。OK!
         {
            put_s("The Battery is Full!\n");
            
            system_test();
            if( b_vol < EMPTY_VOL )
           {
             work_status = WORK_EMPTY;
             put_s("No Battery!\n");
           }
         }break;

     }

  }
}

/*------------------------------------------------------------------------------
*   end of file
*-----------------------------------------------------------------------------*/


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区成人久久免费影院| 麻豆国产精品一区二区三区 | 欧美久久一二区| 国产成人亚洲综合色影视| 亚洲成人精品一区二区| 亚洲欧洲日韩av| 亚洲精品一区二区三区精华液| 欧美视频一区在线| aa级大片欧美| 国产成人综合自拍| 久久成人精品无人区| 亚洲一二三四区| 国产精品国产三级国产普通话蜜臀 | 色网综合在线观看| 成人夜色视频网站在线观看| 国内久久精品视频| 久久 天天综合| 日本大胆欧美人术艺术动态| 亚洲综合一二区| 亚洲精品视频自拍| 国产精品电影一区二区| 国产欧美日韩另类视频免费观看 | 国产精品成人在线观看| 国产欧美一区二区在线| 久久男人中文字幕资源站| 欧美电影精品一区二区| 91精品国产色综合久久不卡蜜臀| 欧美色图激情小说| 欧美伊人久久大香线蕉综合69| 97超碰欧美中文字幕| 99久久精品免费看国产免费软件| 成人午夜视频网站| 波多野结衣一区二区三区| 国产a精品视频| 成人a区在线观看| 成人一区二区三区视频在线观看| 国产精品一二三四| 成人性色生活片| av在线这里只有精品| 波多野结衣中文字幕一区二区三区| 国产高清不卡二三区| 顶级嫩模精品视频在线看| 国产不卡高清在线观看视频| 丰满少妇久久久久久久| 成人av午夜电影| 91老师片黄在线观看| 色综合天天综合| 在线观看www91| 538在线一区二区精品国产| 日韩亚洲欧美一区二区三区| 久久综合久久鬼色中文字| 欧美激情一区二区三区不卡| 亚洲色图丝袜美腿| 午夜欧美2019年伦理| 麻豆91在线看| 丁香激情综合国产| 色婷婷久久久久swag精品| 欧美疯狂做受xxxx富婆| 欧美成人三级在线| 国产精品乱人伦| 亚洲一二三级电影| 日韩激情在线观看| 国产福利不卡视频| 在线一区二区三区| 国产精品久久久久婷婷二区次 | 精品一区二区三区免费毛片爱 | 日韩高清不卡一区二区三区| 免费观看日韩av| 成人在线综合网| 欧美日韩三级视频| 久久日韩精品一区二区五区| 国产精品超碰97尤物18| 五月激情丁香一区二区三区| 国产一区二区三区国产| 色欧美片视频在线观看在线视频| 欧美日韩极品在线观看一区| 国产人久久人人人人爽| 亚洲综合一区在线| 国产成人午夜精品影院观看视频| 欧美亚洲一区二区在线观看| 欧美精品一区二区久久久| 一区二区三区中文在线| 国内成人免费视频| 欧美亚洲动漫精品| 国产清纯白嫩初高生在线观看91| 性做久久久久久久免费看| 国产suv精品一区二区三区| 欧美精品乱码久久久久久按摩 | 91精品国产全国免费观看| 国产精品久久三区| 美日韩一区二区三区| 韩国理伦片一区二区三区在线播放| 美腿丝袜亚洲三区| 99久久精品国产观看| 日韩一区二区三区免费看 | 五月婷婷综合激情| 成人av在线资源网| 欧美大黄免费观看| 一区二区三区 在线观看视频| 国产一区二区三区观看| 欧美精品三级在线观看| 综合色中文字幕| 成人一区在线观看| 精品欧美黑人一区二区三区| 一区二区三区影院| 成人h版在线观看| 久久久久久麻豆| 九九九久久久精品| 欧美剧情电影在线观看完整版免费励志电影| 日韩视频在线你懂得| 欧美大片在线观看| 亚洲成在人线在线播放| 91在线观看免费视频| 国产精品天干天干在线综合| 亚洲一区二三区| 99免费精品视频| 国产日韩综合av| 精品夜夜嗨av一区二区三区| 欧美精品成人一区二区三区四区| 亚洲日本一区二区| 99视频精品全部免费在线| 免费观看久久久4p| 欧美年轻男男videosbes| 亚洲午夜精品久久久久久久久| 97久久超碰国产精品| 亚洲欧洲色图综合| zzijzzij亚洲日本少妇熟睡| 中文字幕不卡的av| 成人av在线播放网站| 中文成人综合网| hitomi一区二区三区精品| 国产日韩欧美制服另类| 国产在线不卡一卡二卡三卡四卡| 日韩三级中文字幕| 久久97超碰国产精品超碰| 久久综合狠狠综合| 国产精品自在在线| 亚洲国产精品二十页| 99精品在线免费| 亚洲最新在线观看| 欧美日韩一区二区欧美激情| 亚洲国产aⅴ天堂久久| 欧美视频三区在线播放| 亚洲福利视频一区| 91精品国产91久久综合桃花| 久久国产精品99久久久久久老狼| 欧美电视剧免费观看| 国产另类ts人妖一区二区| 国产欧美va欧美不卡在线| 99久久综合国产精品| 亚洲免费在线电影| 欧美欧美午夜aⅴ在线观看| 久久成人免费电影| 欧美激情中文不卡| 欧美在线一区二区三区| 日本在线不卡视频| 久久综合精品国产一区二区三区| 成人免费黄色大片| 亚洲精品第1页| 欧美一二三四在线| 国产精品亚洲一区二区三区在线| 中文字幕av一区二区三区| 91久久精品网| 极品美女销魂一区二区三区免费| 久久蜜桃香蕉精品一区二区三区| 国产91精品久久久久久久网曝门| 亚洲精品免费一二三区| 日韩精品专区在线影院重磅| 国产成人av一区二区三区在线观看| 亚洲欧洲日产国码二区| 欧美精三区欧美精三区| 国产成人综合在线播放| 一区二区三区在线观看网站| 日韩亚洲欧美在线| 成人毛片在线观看| 视频一区二区三区入口| 久久久久97国产精华液好用吗| 91论坛在线播放| 激情另类小说区图片区视频区| 亚洲免费av高清| 精品理论电影在线观看| 欧美综合久久久| 国产黄人亚洲片| 日本最新不卡在线| 国产精品国产三级国产普通话三级 | 99精品在线观看视频| 美国欧美日韩国产在线播放| 亚洲视频1区2区| 精品99一区二区三区| 欧美日韩一区小说| 成人18精品视频| 激情五月激情综合网| 亚洲成人久久影院| 亚洲欧洲性图库| 久久久午夜精品理论片中文字幕| 欧美日韩亚洲不卡| 成人av在线一区二区| 国产一区二区不卡在线| 日本伊人色综合网| 9色porny自拍视频一区二区|