📄 mainfile.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 + -