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

📄 mainfile.c

📁 多功能智能充电器
💻 C
字号:
#include "reg5410.h"
#include "head.h"


extern void InitLCD();


extern unsigned char read(unsigned char ADDRH,unsigned char ADDRL);
extern void write(unsigned char ADDRH,unsigned char *p,unsigned char k);
extern void DispShuzi0(unsigned char x,unsigned char y,unsigned int n);	 //8*16数字显示
extern void DispShuzi(unsigned char x,unsigned char y,unsigned int n);	 //8*16数字显示
extern void DispShuzi1(unsigned char x,unsigned char y,unsigned int n);	 //8*16数字显示
extern void DispShuzi2(unsigned char x,unsigned char y,unsigned int n);	 //8*16数字显示
extern void DispZimu(unsigned char x,unsigned char y,unsigned char how,unsigned char *stri);
extern void DispHanzi(unsigned char x,unsigned char y,unsigned char how,unsigned char *stri);
extern void send_command(unsigned char command_data) ;


void System_init(void);
void Disp_Page0(void);
void Disp_Page1(void);
void Disp_Page2(void);
void Disp_Page3(void);
void GetADCaiJiDL(unsigned int *ADData);
void GetADCaiJiDY(unsigned int *ADData);
void jiemian(void);

unsigned char dat[2];
unsigned int Sec;
unsigned int Min;
unsigned char ti=0,page=0;

main()
{	
	Sec=0;Min=0;page=0;
//	dat[0]=Sec/256;dat[1]=Sec%256;write(0x28,dat,2);
//	dat[0]=Min/256;dat[1]=Min%256;write(0x2a,dat,2); 
	InitLCD();
	Disp_Page0();
	System_init();
	while(1)
	{
		jiemian();
	}
}
void System_init(void)
{
	TMOD=0x21;
	TH0=0xee;
	TL0=0x00;
	TH1=TL1=0xfd;
	SCON=0x50;
	REN=1;
	CMOD=0x00;
	ET0=1;
	EA=1;
	P1M0=0x02;
	P1M1=0x00;
	ADC_CONTR =0x81;
	TR0=1;TR1=1;
}


void inte(void) interrupt 1
{
	static unsigned int t=0;
	TH0=0xee;
	TL0=0x00;

	if(++t==200)
	{
		t=0;
//		dat[0]=Sec/256;dat[1]=Sec%256;write(0x28,dat,2);
		if(++Sec>59)
		{
			Sec=0;
			Min++;
//			dat[0]=Min/256;dat[1]=Min%256;write(0x2a,dat,2); 
		}
	}
//	if(page==1)
//	DispShuzi0(3,6,Sec);	 
}

void jiemian(void)
{
	unsigned int tmpDL=0,tmpDY=0,S=0;
	GetADCaiJiDL(&tmpDL);
	GetADCaiJiDY(&tmpDY);	//电压代码每100代表实际电压0.6V

	if(tmpDY<=700&&page!=0)			 
		{page=0;Disp_Page0();}
	else if(tmpDY>=900&&page!=2)
		{page=2;Disp_Page2();}
	else if(tmpDY>700&&tmpDY<900&&page!=1)
		{page=1;Disp_Page1();}

	if(page==1)
	{	 
		
		 DispShuzi(2,4,tmpDL/16);
		 DispShuzi(1,4,tmpDY);
		 DispShuzi0(3,6,Sec);
		 DispShuzi0(3,4,Min);
		 S=Sec%5;
		 if(S==0)
		 	DispHanzi(0,4,4,"□□□□");
		 else if(S==1)
		 	DispHanzi(0,4,2,"■□□□");
		 else if(S==2)
		 	DispHanzi(0,4,4,"■■□□");
		 else if(S==3)
		 	DispHanzi(0,4,4,"■■■□");
		 else if(S==4)
		 	DispHanzi(0,4,4,"■■■■");
	}	  
}

void Disp_Page0(void)
{		
	send_command(0x01);
	DispHanzi(0,0,5,"多功能智能");
	DispHanzi(1,0,5,"电池充电器");
}

void Disp_Page1(void)
{
	unsigned int td=0;
	send_command(0x01);
	DispHanzi(0,0,4,"充电中■");
	DispHanzi(1,0,4,"充电电压");
		DispZimu(1,7,1,"V");
	DispHanzi(2,0,4,"充电电流");
		DispZimu(2,7,1,"A");
	DispHanzi(3,0,4,"充电时间");
//		td=read(0x2a,0x00);Min=td*256+read(0x2a,0x01);
//			DispShuzi0(3,4,Min);
		
//		td=read(0x28,0x00);Sec=td*256+read(0x28,0x01);
//			DispShuzi0(3,6,Sec);
			DispHanzi(3,5,1,"分");
			DispHanzi(3,7,1,"秒");
}	

void Disp_Page2(void)
{
	send_command(0x01);
	DispHanzi(0,0,4,"充电完成");
}


void Disp_Page3(void)
{
 	send_command(0x01);
	DispHanzi(0,0,5,"电池被移除" );
	DispHanzi(1,0,4,"充电中止");
}


void GetADCaiJiDL(unsigned int *ADData)
{
	unsigned int i, j, Sum;
	ADC_CONTR=0x80|0x05;
	for(i=0; i<100; i++);
	Sum = 0;
	for(i=0; i<64; i++)
	{
		ADC_CONTR|=0x08;
		while((ADC_CONTR&0x10)==0x00);			//等待变成flag=1
		Sum = Sum + (ADC_DATA*4+ADC_LOW2);
		for(j=0; j<100;j++);
	}
	*ADData =Sum/64;
}

void GetADCaiJiDY(unsigned int *ADData)
{
	unsigned int i, j, Sum;
	ADC_CONTR=0x80|0x06;
	for(i=0; i<100; i++);
	Sum = 0;
	for(i=0; i<64; i++)
	{
		ADC_CONTR|=0x08;
		while((ADC_CONTR&0x10)==0x00);			//等待变成flag=1
		Sum = Sum + (ADC_DATA*4+ADC_LOW2);
		for(j=0; j<100;j++);
	}
	*ADData =Sum/64;
}	  

⌨️ 快捷键说明

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