📄 main.c
字号:
if(timea_m<10)
{lcd_num_display(0);}
lcd_num_display(timea_m);
lcd_text_display(":");
if(timea_s<10)
{lcd_num_display(0);}
lcd_num_display(timea_s);
lcd_text_display(" ");
}
}
/**********显示菜单信息**********/
void page1_cn(void)
{
//lcd_box_display(79,0,176,17,1);
lcd_cmd_send(0x60);lcd_cmd_send(0x08);
lcd_cmd_send(0x70);lcd_cmd_send(0x00);
lcd_cmd_send(0xf1);lcd_cmd_send(0x0f);
lcd_text_display("各节电池电压(V)");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x10);
lcd_text_display("01号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x20);
lcd_text_display("03号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x30);
lcd_text_display("05号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x40);
lcd_text_display("07号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x50);
lcd_text_display("09号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x60);
lcd_text_display("11号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x70);
lcd_text_display("13号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x10);
lcd_text_display("02号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x20);
lcd_text_display("04号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x30);
lcd_text_display("06号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x40);
lcd_text_display("08号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x50);
lcd_text_display("10号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x60);
lcd_text_display("12号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x70);
lcd_text_display("14号:");
}
void page1_en(void)
{
lcd_cmd_send(0x60);lcd_cmd_send(0x08);
lcd_cmd_send(0x70);lcd_cmd_send(0x00);
lcd_cmd_send(0xf1);lcd_cmd_send(0x0f);
lcd_text_display("Each voltage(V)");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x10);
lcd_text_display("NO.01:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x20);
lcd_text_display("NO.03:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x30);
lcd_text_display("NO.05:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x40);
lcd_text_display("NO.07:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x50);
lcd_text_display("NO.09:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x60);
lcd_text_display("NO.11:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x70);
lcd_text_display("NO.13:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x10);
lcd_text_display("NO.02:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x20);
lcd_text_display("NO.04:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x30);
lcd_text_display("NO.06:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x40);
lcd_text_display("NO.08:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x50);
lcd_text_display("NO.10:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x60);
lcd_text_display("NO.12:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x70);
lcd_text_display("NO.14:");
}
void page2_cn(void)
{
//lcd_box_display(79,0,176,17,1);
lcd_cmd_send(0x60);lcd_cmd_send(0x08);
lcd_cmd_send(0x70);lcd_cmd_send(0x00);
lcd_cmd_send(0xf1);lcd_cmd_send(0x0f);
lcd_text_display("电池温度(℃)");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x18);
lcd_text_display("01号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x18);
lcd_text_display("02号:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x30);
lcd_text_display("充电电流:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x48);
lcd_text_display("错误代码:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x60);
lcd_text_display("充电时间:");
}
void page2_en(void)
{
lcd_cmd_send(0x60);lcd_cmd_send(0x08);
lcd_cmd_send(0x70);lcd_cmd_send(0x00);
lcd_cmd_send(0xf1);lcd_cmd_send(0x0f);
lcd_text_display("Temperature(℃)");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x18);
lcd_text_display("NO.01:");
lcd_cmd_send(0x60);lcd_cmd_send(0x0f);
lcd_cmd_send(0x70);lcd_cmd_send(0x18);
lcd_text_display("NO.02:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x30);
lcd_text_display("Current:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x48);
lcd_text_display("Error Code:");
lcd_cmd_send(0x60);lcd_cmd_send(0x00);
lcd_cmd_send(0x70);lcd_cmd_send(0x60);
lcd_text_display("Charge Time:");
}
void adc_display(void)
{
lcd_cmd_send(0x60);lcd_cmd_send(0x06);
lcd_cmd_send(0x70);lcd_cmd_send(0x10);
num_m=receive_num[5];
num_m<<=8;
num_m|=receive_num[4];
num_x=num_m;
num_x/=10000;
lcd_float_display(num_x);
lcd_cmd_send(0x60);lcd_cmd_send(0x16);
lcd_cmd_send(0x70);lcd_cmd_send(0x10);
num_m=receive_num[7];
num_m<<=8;
num_m|=receive_num[6];
num_x=num_m;
num_x/=10000;
lcd_float_display(num_x);
}
void ds18b20_display(void)
{
lcd_cmd_send(0x60);lcd_cmd_send(0x06);
lcd_cmd_send(0x70);lcd_cmd_send(0x18);
num_m=receive_num[33];
num_m<<=8;
num_m|=receive_num[32];
num_x=num_m;
num_x/=100;
lcd_float_display(num_x);
lcd_cmd_send(0x60);lcd_cmd_send(0x16);
lcd_cmd_send(0x70);lcd_cmd_send(0x18);
num_m=receive_num[35];
num_m<<=8;
num_m|=receive_num[34];
num_x=num_m;
num_x/=100;
lcd_float_display(num_x);
}
/**********串口初始化函数**********/
void uart_init()
{
SCON=0x50; //使能接收选择串口模式1
SSTAT=0x60; //选择独立的Tx/Rx中断
BRGR0=0xF0; //9600 baud @ 7.373MHz
BRGR1=0x02;
//BRGR0=0x70; //19200 baud @ 7.373MHz
//BRGR1=0x01;
//BRGR0=0x30; //115200 baud @ 7.373MHz
//BRGR1=0x00;
BRGCON =0x03; //使能BRG
ESR=1; //接收中断开
}
/**********串口接收中断函数**********/
void uart_rcv() interrupt 4 //当接收完一个字节,RI置1进入Recieve中断
{
uart_temp=SBUF;
if((uart_temp==0xaa)&&(flag0==0))
{flag0=1;}
else if(flag0==1)
{
num_flag=uart_temp;
flag0=2;
}
else if(flag0==2)
{
receive_num[num_flag++]=uart_temp;
flag0=3;
}
else if(flag0==3)
{
receive_num[num_flag]=uart_temp;
flag0=0;
}
RI=0; //RI清0以等待下次发送
}
/**********串口发送函数**********/ /*
void uart_send(uchar send_num)
{
TI=0; //TI清0准备发送
SBUF=send_num;//发送数据
while(!TI); //当TI为1时发送完毕
} */
void main(void)
{
EA=0;//关总中断
port_init();
rtc_init();
uart_init();
lcd_init();
lcd_clean();
delay_ms(500);
EA=1;//开总中断
while(1)
{
if((page!=receive_num[2])||(language!=receive_num[0])) //页面或语言变换
{
page=receive_num[2];
language=receive_num[0];
lcd_clean();
if(page==1)
{
if(language==0)
{page1_cn();}
else page1_en();
adc_display();
}
else if(page==2)
{
if(language==0)
{page2_cn();}
else page2_en();
ds18b20_display();
time_display();
}
}
else if(page==1) //第一页数据更新
{adc_display();}
else if(page==2) //第二页数据更新
{
ds18b20_display();
time_display(); //每秒数据更新一次
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -