【毕业设计】64-基于单片机智能电池监控温度电压监控装置(原理图工程_仿真工程_源代码)


typora-root-url: ./

【毕业设计】64-基于单片机智能电池监控温度电压监控装置(原理图工程_仿真工程_源代码)

文章目录

    • typora-root-url: ./
  • 【毕业设计】64-基于单片机智能电池监控温度电压监控装置(原理图工程_仿真工程_源代码)
    • 资料链接
    • 设计说明书
      • 源码展示

资料链接

资料链接
基于单片机智能电池监控/温度/电压监控装置(原理图工程/仿真工程/源代码)

资料包含:

原理图工程

仿真工程

源代码

注意:仿真工程需要proteus 8.11版本及以上可运行

设计说明书

【毕业设计】64-基于单片机智能电池监控温度电压监控装置(原理图工程_仿真工程_源代码)_第1张图片
【毕业设计】64-基于单片机智能电池监控温度电压监控装置(原理图工程_仿真工程_源代码)_第2张图片
【毕业设计】64-基于单片机智能电池监控温度电压监控装置(原理图工程_仿真工程_源代码)_第3张图片
【毕业设计】64-基于单片机智能电池监控温度电压监控装置(原理图工程_仿真工程_源代码)_第4张图片

源码展示

#include
#include
#include
#include
#include
uchar WenduData[5]; //实时温度
uchar ad_0;  //AD转换后的初始值
uint AD;    //实时电压
uchar p[4]={'0','0','0','\0'};
sbit mode=P2^2;   //模式选择键
sbit key1=P2^0;  //温度报警指示
sbit key2=P2^1;  //电量不足报警指示
int i1=5;

//----------------------------------------------------------------
//	      电压显示函数
//----------------------------------------------------------------
void voltage_out()
{
	  delay_ad(100);
	  ad_0=TLC549_ADC();
	  AD=ad_0*1.96*2;   //计算实际电压值
	//显示电压信息
	  gotoxy(8,1);
	  LCD_disp_char(0,1,'U');
	  LCD_disp_char(1,1,'=');
	  LCD_disp_char(2,1,0x30+AD/1000);
  	LCD_disp_char(3,1,0x30+AD%1000/100);
	  LCD_disp_char(4,1,'.');
	  LCD_disp_char(5,1,0x30+AD%100/10);
	  LCD_disp_char(6,1,0x30+AD%10);
	  LCD_disp_char(7,1,'v');
}

//----------------------------------------------------------------
//	      温度显示函数
//----------------------------------------------------------------
void temp_out()
{
	uint a,b,c,d,e; 
  e=ReadTemperature();  //获取温度值 	
	if(e>3000){
		key1=1;
		delay_ad(100);
		key1=0;
	}
  a=e/1000;             //计算得到十位数
  b=e/100-a*10;         //计算得到个位数字  
  d=e%10;               //计算得到小数点后两位 
  c=(e%100)/10;         //计算得到小数点后一位 
	//LCD显示温度数据
	WenduData[0] = a+'0';
	WenduData[1] = b+'0';
	WenduData[2] = '.';
	WenduData[3] = c+'0';
	WenduData[4] = '\0';
	gotoxy(9,1);
	LCD_display("T:");
	gotoxy(11,1);
	LCD_display(WenduData);
	gotoxy(15,1);
	LCD_display("C");
}

//----------------------------------------------------------------
//	      电压百分比函数
//----------------------------------------------------------------
void Percen_out(uint u)
{
	p[0]=p[1]='0';
	//按电压值将电量百分比分成10个等级
  if(u>520){p[0]=1+'0';}       
	else if(u>510){p[1]=9+'0';}
	else if(u>499){p[1]=8+'0';}
	else if(u>488){p[1]=7+'0';}
	else if(u>476){p[1]=6+'0';}
	else if(u>462){p[1]=5+'0';}
	else if(u>446){p[1]=4+'0';}
	else if(u>426){p[1]=3+'0';}
	else if(u>398){p[1]=2+'0';}
	else if(u>370){p[1]=1+'0';}
  //小于等于20%时led闪灯警报,Lcd显示Low power!
	if(u<398){
		key2=1;
		delay_ad(100);
		key2=0;
		gotoxy(6,2);
		LCD_display("Low power!");
	}
	else{
	for(i1=6;i1<16;i1++)
		{
			LCD_disp_char(i1,2,0x20);
		}
	}
	//显示剩余电量数据
	gotoxy(0,2);
	LCD_display(p);  
	LCD_disp_char(3,2,'%');
}

//----------------------------------------------------------------
//	       主函数 
//----------------------------------------------------------------
void main()
{
	uart_init();   //串口初始化
	LCD_init();    //LCD初始化
while(1)
{
	  voltage_out();    //执行电压显示函数
		temp_out();       //执行温度显示函数
	  Percen_out(AD);   //执行电量显示函数
}
}

你可能感兴趣的:(单片机,c语言,嵌入式硬件)