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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main._c

?? 單片機 mega16L 電池放電器源碼
?? _C
字號:
//項目名稱:電池放電器
//功能描述:
//外部模塊:1602LCD    LM35
//開發人員:書生
//開發日期:2006年1月20日
//*********************************************************
#include <iom8v.h>
#include <macros.h>
#include "discharge.h"
#include "eeprom.h"
#include "LCD_1602.h"
  unsigned char keyboard;
  unsigned char RunTab=0;
  unsigned char RunTab_old;
  
  unsigned char time;
  unsigned char sec=0;
  unsigned char min=0;
  unsigned char hour=0;
  
  unsigned int sc_key,sc_bt1,sc_bt_ctrl,
  sc_discharge,sc_eeprom,sc_lcd_write,
  sc_bt1_record,sc_key_delay,sc_bt1_v_temp;
 
 // discharge
  unsigned char BT1_state;
  unsigned int BT1_V;
  unsigned int BT1_I;
  unsigned int BT1_T;
  unsigned int BT1_V_num;
  unsigned int BT1_V_num_temp;
  unsigned int bt1_v_temp;
  unsigned int bt1_v_temp_1;
  
  unsigned int BT1_I_SET;
  unsigned int PWM;
  unsigned long BT1_mAh;
  unsigned long BT1_time;
  unsigned int mAh;
  unsigned int D882_P;
  
  unsigned int mAh_set=1000;
  unsigned char speed=10;
  unsigned int BT1_P;
//T2溢出中斷服務程序 8ms
#pragma interrupt_handler timer2_ovf_isr:5
void timer2_ovf_isr(void)
{
  TCNT2 = 0x06;//重裝計時值0xFF=32us  0x00=8.192ms
  timer();//實時時鐘
/*----------------------------------
    以下是任務管理器 
----------------------------------*/
  system();//系統后臺服務程序
  taskmgr();//任務管理程序
  system_clock();
}

/*----------------------------------
    系統后臺服務程序
-----------------------------------*/
void system(void)
{ 
  if((sc_key_delay==0)&&(keyboard!=0)){sc_key_delay=50;}
  if(sc_key_delay==1){keyboard=0;}
  if(sc_key==0)
    {keyboard=key(keyboard);sc_key=16;}//鍵盤掃描間隔為32*8ms
 
  if(sc_lcd_write==0)
   {
    desktop1();desktop2();desktop3();desktop4();
	Capacitance_setting();discharge_speed();
	record_setting();welcome();
	LCD_write_new();
	sc_lcd_write=32;
	}
	if(BT1_I_SET)
	{
 if(sc_bt1==0)
  {BT1_mAh+=BT1_I;sc_bt1=450;}//容量統計,每3.6秒計一次
 if(sc_discharge==0)
  {BT1_time++;sc_discharge=125;}//放電時間統計
 if(sc_eeprom==0) 
  {
   if(BT1_V<2000)
	{discharge_stop();} 
    EEPROM_WRITE(0x01F0,BT1_mAh);
    EEPROM_WRITE(0x01F4,BT1_time);
    sc_eeprom=1250;
	}
  if(sc_bt_ctrl==0)
    {
	 BT1_I_Ctrl();
      if((BT1_I>BT1_I_SET+5)||(BT1_I<BT1_I_SET-5))
	    sc_bt_ctrl=2;
		else sc_bt_ctrl=48;
	 }
  }
  if(sc_bt1_v_temp==0)
    {bt1_v_temp+=BT1_V;sc_bt1_v_temp=500;}
  if(sc_bt1_record==0)
    {bt1_v_record();sc_bt1_record=7500;}//每分鐘記錄一次電壓
}

/*----------------------------------
        任務管理程序
----------------------------------*/
void taskmgr(void)
  {  
	 if(keyboard==pageup)
	   {
		 if(RunTab!=3){RunTab++;keyboard=0;}
	   }
	 if(keyboard==pagedown)
	   {
	     if(RunTab!=1){RunTab--;keyboard=0;}
	   }
	  if(RunTab_old!=RunTab)
	     {LCD_clear();RunTab_old=RunTab;}
  }

void system_clock(void)
  {  //每個節拍為8ms
	 if(sc_key!=0)  sc_key--; 
	 if(sc_bt1!=0)  sc_bt1--; 
	 if(sc_discharge!=0)  sc_discharge--; 
	 if(sc_eeprom!=0)  sc_eeprom--; 
	 if(sc_lcd_write!=0)  sc_lcd_write--;
	 if(sc_bt1_record!=0)  sc_bt1_record--;
	 if(sc_bt1_v_temp!=0)  sc_bt1_v_temp--;
	 if(sc_key_delay!=0)  sc_key_delay--;
	 if(sc_bt_ctrl!=0)  sc_bt_ctrl--;
  }
void bt1_v_record(void)
  {  
     bt1_v_temp/=15;
     EEPROM_READ(0x01F8,BT1_V_num);
     EEPROM_WRITE(BT1_V_num*2,bt1_v_temp);
	
	if(BT1_V_num<249)
	   {BT1_V_num++;EEPROM_WRITE(0x01F8,BT1_V_num);} 
	   
	 bt1_v_temp=0;
  }
/*------------------------------------
          主程序
-------------------------------------*/
void main(void)
  { 
	 sc_eeprom=500;
	 delay_nms(20);	 
	 init_devices();	 
	 LCD_clear();
	 LED2_OFF;
     LED1_OFF; 
	 RunTab=5;
	 delay_nms(2000);
 while(1)
       { 
	     discharge_init();
		 discharge();
		 delay_nms(100);
       }
  }
void welcome(void)
  {
     unsigned char ID=5;
	  if(RunTab==ID)
		{   
		  LCD_write_string(4,0,"Welcome",15);
		  LCD_write_string(1,1,"Discharger xp",15);   
		}
  }
void discharge_stop(void)
  {
     BT1_I_SET=0;BT1_I=0;
	 BT1_state&=~(1<<1);//已停止放電
	 BT1_state|=(1<<2);//已放完電
	 DDRB&=~(1<<1);G_F;
	 PWM=100;
  }
void discharge_init(void)
  {
      BT1_V=T_BT1_V();
	  if((BT1_V>2000)&&BT1_state==0)//
	    {
		  BT1_state|=(1<<0);
		  RunTab=10;
		}
  }
void Capacitance_setting(void)
  {
    unsigned char ID=10; 
    if(RunTab==ID)
		  {     
		    if((keyboard==up)&&mAh_set<4000)
		     {keyboard=0;mAh_set+=100;}
		    else if((keyboard==down)&&mAh_set>100)
		     {keyboard=0;mAh_set-=100;}
			else if(keyboard==pagedown)
	        { 
			 keyboard=0;
             EEPROM_READ(0x01F0,BT1_mAh);	
	         EEPROM_READ(0x01F4,BT1_time);
			 EEPROM_READ(0x01FC,mAh_set);
			 EEPROM_READ(0x01FE,speed);
			 RunTab=12;
	        }
			LCD_write_string(0,0,"Capacitance",0);
			LCD_write_number(0,1,0,mAh_set,"mAh",8);
			LCD_write_number(10,1,3,BT1_V,"V",15);
		  }
  }
void discharge_speed(void)
  {
      unsigned char ID=11; 
      if(RunTab==ID)
		  { 
		    LCD_write_string(0,0,"speed",0);
			LCD_write_number(9,0,0,6000/speed,"min",15);
			LCD_write_number(0,1,2,speed,"C",8);
			LCD_write_number(9,1,3,mAh_set/100*speed,"A",15);
		     
		    if((keyboard==up)&&speed<120)
		     {keyboard=0;speed+=5;}
		    else if((keyboard==down)&&speed>5)
		     {keyboard=0;speed-=5;}
			else if(keyboard==pagedown)
	        { 
			 keyboard=0;
	         RunTab--;LCD_clear();
	        }
			}
  }
void record_setting(void)
  {
      unsigned char ID=12; 
      if(RunTab==ID)
		  {     
		    EEPROM_WRITE(0x01FC,mAh_set);
			EEPROM_WRITE(0x01FE,speed);
			PWM=500;sc_bt1_record=7500;
			sc_eeprom=1250;sc_bt1_v_temp=500;
	        BT1_I_SET=mAh_set/100*speed;
	        DDRB|=(1<<1);G_N; 
			BT1_state|=(1<<1);
			RunTab=1;
			LCD_clear();
		  }
  }
/*---------------------------------------
             放電程序
----------------------------------------*/
void discharge (void)
  {    
      unsigned long v_temp,i_temp;
	  unsigned char v,i;
	 
	  while(BT1_state&(1<<1))
	  {G_N;
		if(i<4)
		 {i_temp+=T_BT1_I();i++;}
		else
		 {i=0;BT1_I=i_temp>>2;i_temp=0;}	
		delay_nms(5);
		if(v<64)
		 {v_temp+=T_BT1_V()+(BT1_I>>1); v++;}
		else 
		 {v=0;BT1_V=v_temp>>6;v_temp=0;}
		
		delay_nms(5);
		D882_P=(BT1_V-(BT1_I>>1))/100;
		D882_P*=(BT1_I/10);
		BT1_T=T_BT1_T();
		delay_nms(5);
		}
		G_F;
  }
  
/*---------------------------------------
             桌面程序
----------------------------------------*/
void desktop2(void)
  {     
     unsigned char ID=2; //程序標識
		 if(RunTab==ID)
		 {
		    LCD_write_time(7,1,hour,min,sec); //200us發送時間到LCD			
		    LCD_write_number(7,0,0,BT1_time,"sec",10);	
			LCD_write_number(0,1,1,BT1_T,"C",0); 
			LCD_write_number(0,0,0,D882_P,"mW",0);  
		 }
  }	
  
void desktop1(void)
 {
   unsigned char ID=1; 
   if(RunTab==ID)
		  {     
		    if(keyboard==up)
		     {keyboard=0;BT1_I_SET+=50;}
		    else if(keyboard==down)
		     {keyboard=0;BT1_I_SET-=50;}
			else if(keyboard==clear)
	        { 
			 keyboard=0;
	         BT1_mAh=0;
			 BT1_time=0;
		     EEPROM_WRITE(0x01F0,BT1_mAh);
		     EEPROM_WRITE(0x01F4,BT1_time);
		     BT1_V_num=0;BT1_V_num_temp=0;
		     EEPROM_WRITE(0x01F8,BT1_V_num);
		     sec=0;min=0;hour=0;
		     sc_bt1_record=7500;
	        }
		    LCD_write_number(0,0,3,BT1_V,"V",6);
			LCD_write_number(0,1,3,BT1_I,"A",6);
			if(BT1_state&(1<<2))
			LCD_write_string(7,0,"Finish",15);
			  else
			LCD_write_number(7,0,0,PWM,"PWM",0);
			LCD_write_number(7,1,1,BT1_mAh/100,"mAh",15);
		  }
 }
void desktop3(void)
  {     
     unsigned char ID=3; //程序標識
		 if(RunTab==ID)
		 {  
		    if(BT1_V_num_temp<BT1_V_num-1)
			 {
			   if(keyboard==up)
			    { 
				  keyboard=0;
				  BT1_V_num_temp++;
				  EEPROM_READ(BT1_V_num_temp*2,bt1_v_temp_1);
				 }
			  }
			  
			  if(BT1_V_num_temp<BT1_V_num-10)
			 {
			   if(keyboard==Turn)
			    { 
				  keyboard=0;
				  BT1_V_num_temp+=10;
				  EEPROM_READ(BT1_V_num_temp*2,bt1_v_temp_1);
				 }
			  }
			
			if(BT1_V_num_temp>0)
			 {
			   if(keyboard==down)
			    { 
				  keyboard=0;
				  BT1_V_num_temp--;
				  EEPROM_READ(BT1_V_num_temp*2,bt1_v_temp_1);
				 }
			  }
			  
			 if(BT1_V_num_temp>10)
			 {
			   if(keyboard==Return)
			    { 
				  keyboard=0;
				  BT1_V_num_temp-=10;
				  EEPROM_READ(BT1_V_num_temp*2,bt1_v_temp_1);
				 }
			  }
			  
			LCD_write_number(0,1,3,bt1_v_temp_1,"V",8);
			LCD_write_number(0,0,0,BT1_V_num_temp,"min",8);
		    LCD_write_number(10,0,0,BT1_V_num,"min",15);
	        LCD_write_number(10,1,3,BT1_V,"V",15);
		 }
} 

void desktop4(void)
  {     
     unsigned char ID=4; //程序標識
		 if(RunTab==ID)
		 { 
		   if(PWM<250)
		   {
		    if(keyboard==up)
			   {
			     keyboard=0;
				 PWM+=5;
				 OCR1A=PWM-1;
				 LCD_write_number(0,1,3,534/1*PWM/25,"V",0);  
			   }
			 }
			if(PWM>5)
		   {
		    if(keyboard==down)
			   {
			     keyboard=0;
				 PWM-=5;
				 OCR1A=PWM-1;
				 LCD_write_number(0,1,3,534/1*PWM/25,"V",0);  
			   }
			 } 
		    LCD_write_time(8,1,hour,min,sec); //200us發送時間到LCD			
		    LCD_write_number(7,0,0,PWM,"PWM",15);	
			LCD_write_number(0,0,3,BT1_P,"V",0);
			 
		 }
  }	


void BT1_I_Ctrl (void)
  { 
   if(BT1_I_SET!=0)
   {
     if(BT1_I>BT1_I_SET+1)
	  {
	  if(PWM!=0)
	  PWM-=1;
	  OCR1A=PWM;
	  }
	  else if(BT1_I<BT1_I_SET-1)
	  {
	  if(PWM!=1900)
	  PWM+=1;
	  OCR1A=PWM;
	  }
	  }
	  else
	   {PWM=300;OCR1A=PWM;}
  }

/*-------------------------
        實時時鐘
--------------------------*/
void timer(void)
{ 
  ++time;//秒計時
 if(time==125)//125分頻8*125=1s
   {
      time=0;
      ++sec; 
	 if(sec==60)
	 {
	  sec=0;
	  min++;
	   if(min==60)
	   {
	    min=0;
		hour++;		
		 if(hour==24)
		 {
		   hour=0;		   
		 }
	   }
	 }
   //LCD_check(0,0);
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av动漫在线| 亚洲日穴在线视频| 国产亚洲欧美在线| 国产精品麻豆一区二区| 亚洲国产成人精品视频| 精油按摩中文字幕久久| 欧美亚洲综合在线| 国产精品久久久久一区| 精品伊人久久久久7777人| 99re视频这里只有精品| 2023国产精品自拍| 亚洲图片欧美色图| aaa欧美日韩| 国产喂奶挤奶一区二区三区| 强制捆绑调教一区二区| 色婷婷av一区二区三区之一色屋| 精品黑人一区二区三区久久| 亚洲综合精品久久| 91片黄在线观看| 国产精品美女久久久久久久 | 国产欧美一区二区在线观看| 一个色综合av| 99re这里都是精品| 中文字幕av一区二区三区| 韩国精品免费视频| 精品毛片乱码1区2区3区| 亚洲国产sm捆绑调教视频| 色香蕉成人二区免费| 综合精品久久久| 成人国产一区二区三区精品| 久久精品人人做人人综合| 国产一区二区伦理| 久久久久久亚洲综合影院红桃| 日韩av一级电影| 欧美一区二区黄色| 美国十次综合导航| 精品久久久久香蕉网| 久久电影网站中文字幕 | 天天影视涩香欲综合网 | 亚洲一卡二卡三卡四卡无卡久久 | 亚洲第一福利视频在线| 欧美视频日韩视频| 首页国产欧美久久| 欧美一区二区性放荡片| 秋霞电影网一区二区| 欧美一级爆毛片| 久久精品国内一区二区三区| 在线综合视频播放| 六月丁香婷婷色狠狠久久| 精品91自产拍在线观看一区| 麻豆成人久久精品二区三区小说| 日韩一区和二区| 激情综合网激情| 国产欧美日韩三区| 一本到三区不卡视频| 亚洲国产精品精华液网站| 8x8x8国产精品| 狠狠色综合日日| 亚洲欧洲国产专区| 欧美综合在线视频| 精品一区二区三区久久久| 欧美精彩视频一区二区三区| 91亚洲永久精品| 亚洲午夜精品在线| 亚洲精品一区二区三区蜜桃下载| 成人夜色视频网站在线观看| 亚洲欧美一区二区三区国产精品| 欧美日韩国产片| 国产精品一区专区| 一区二区三区在线视频观看| 欧美videossexotv100| 国产suv精品一区二区6| 性做久久久久久免费观看| 日韩免费高清视频| 99久久婷婷国产综合精品电影| 一区二区三区四区蜜桃| 欧美mv日韩mv国产网站app| 成人黄色一级视频| 久久精品国产网站| 亚洲精品乱码久久久久久久久| 日韩免费高清av| 91免费视频网| 国产精品亚洲综合一区在线观看| 亚洲与欧洲av电影| 久久久久国色av免费看影院| 在线免费观看不卡av| 成人中文字幕在线| 日韩影院精彩在线| 亚洲美女电影在线| 国产欧美一区在线| 欧美一级高清大全免费观看| 91片黄在线观看| 粉嫩av一区二区三区粉嫩| 日本亚洲电影天堂| 亚洲激情自拍偷拍| 欧美激情在线免费观看| 欧美一区午夜视频在线观看| 成人一道本在线| 国产伦精品一区二区三区免费| 婷婷久久综合九色国产成人| 亚洲色图一区二区三区| 久久伊人蜜桃av一区二区| 制服丝袜国产精品| 在线免费视频一区二区| aaa亚洲精品一二三区| 国产高清不卡二三区| 久久精品国产77777蜜臀| 亚洲777理论| 一区二区三区精品视频在线| 国产精品理伦片| 日本一区二区三区久久久久久久久不| 日韩免费观看2025年上映的电影| 欧美日韩精品综合在线| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩小视频| 色94色欧美sute亚洲线路一久| 国产91丝袜在线观看| 国产成人精品免费视频网站| 国产一区中文字幕| 国产一区 二区 三区一级| 国产在线视频一区二区| 久久97超碰色| 国内精品久久久久影院薰衣草| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲小少妇裸体bbw| 亚洲一级电影视频| 午夜精品视频一区| 日本不卡一二三区黄网| 精品亚洲aⅴ乱码一区二区三区| 久久精品国产99国产| 国内不卡的二区三区中文字幕| 老司机免费视频一区二区| 黑人巨大精品欧美一区| 国产91精品在线观看| av资源网一区| 日本韩国精品在线| 欧美狂野另类xxxxoooo| 精品日产卡一卡二卡麻豆| www久久久久| 国产精品乱码一区二三区小蝌蚪| 国产精品久久久久久久岛一牛影视| 国产精品视频在线看| 一卡二卡欧美日韩| 免费成人在线观看视频| 国产成人丝袜美腿| 色综合天天综合网天天狠天天| 精品视频一区 二区 三区| 欧美一区二区三区四区五区| 久久众筹精品私拍模特| 亚洲欧洲国产专区| 婷婷激情综合网| 国产成人精品影视| 欧美亚洲另类激情小说| 日韩免费观看2025年上映的电影| 中文字幕乱码亚洲精品一区| 亚洲一区二区三区美女| 精品亚洲免费视频| 在线这里只有精品| 精品国产一区久久| 亚洲图片欧美综合| 久久爱另类一区二区小说| 不卡的av电影| 在线成人午夜影院| 亚洲欧洲成人自拍| 久久er99精品| 在线看国产一区二区| 久久久久久免费毛片精品| 亚洲国产成人高清精品| 岛国av在线一区| 日韩欧美国产三级| 一区二区高清免费观看影视大全 | 91精品国产欧美日韩| 国产精品妹子av| 蜜臀国产一区二区三区在线播放 | 欧美疯狂做受xxxx富婆| 国产精品久线观看视频| 日韩不卡一区二区| 在线观看亚洲a| 中文字幕精品—区二区四季| 看片网站欧美日韩| 欧美电影一区二区三区| 亚洲另类春色校园小说| www.欧美色图| 久久精品人人做| 蜜桃精品视频在线观看| 精品视频在线免费观看| 亚洲精品中文在线影院| 99麻豆久久久国产精品免费 | 看电影不卡的网站| 91精品国产综合久久精品性色 | 精品电影一区二区| 免费看欧美女人艹b| 欧美日韩午夜在线视频| 亚洲国产综合视频在线观看| 91在线精品一区二区| 中文字幕av一区二区三区| 国产99久久久国产精品免费看| 久久久久久久网| 激情av综合网| 久久久蜜臀国产一区二区|