📄 main.c
字号:
dh(4,64,67,0);
dh(4,80,68,0);
dh(4,96,69,0);
df(4,112,24,0);//:
}
#pragma disable
void History_Data_Display_Current()
{
Input_Serial_Number();
df(4,120,Serial_Number[0],1);
df(4,128,Serial_Number[1],0);
df(4,136,Serial_Number[2],0);
df(4,144,32,0); //#
df(4,152,10,0); //A
Number_Set(1);
History_Data_Display();
}
#pragma disable
void History()
{
lcd_init() ; //清屏,我加的
dh(0,52,24,0); //历史数据,我加的
dh(0,68,32,0);
dh(0,76,25,0);
dh(0,92,32,0);
dh(0,100,26,0);
dh(0,116,32,0);
dh(0,124,27,0);//我加的
History_Data_Display_Current();
}
//显示设定前初始值
#pragma disable
void Disset()
{
df(4,16,TimeBuffer[0],1); //设置年、月、日、时、分
df(4,24,TimeBuffer[1],0);
dh(4,32,39,0);
df(4,48,TimeBuffer[2],0);
df(4,56,TimeBuffer[3],0);
dh(4,64,40,0);
df(4,80,TimeBuffer[4],0);
df(4,88,TimeBuffer[5],0);
dh(4,96,41,0);
df(4,112,TimeBuffer[6],0);
df(4,120,TimeBuffer[7],0);
dh(4,128,42,0);
df(4,144,TimeBuffer[8],0);
df(4,152,TimeBuffer[9],0);
dh(4,160,43,0);
}
//时钟设置显示
#pragma disable
void Dis_SetTime()
{
lcd_init() ; //清屏
EA = 0;
ET0 = 0;
EX0 = 0;
EX1 = 0;
dh(0,52,28,0); //显示"时 钟 设 置"标题
dh(0,68,32,0);
dh(0,76,29,0);
dh(0,92,32,0);
dh(0,100,30,0);
dh(0,116,32,0);
dh(0,124,31,0);
Disset(); //显示设定前初始值
}
uchar code Yp[]={16,24,48,56,80,88,112,120,144,152}; //时钟设置界面时间列号
//修改时间函数
#pragma disable
void Time_Modify()
{
uchar idata KeyPosition = 0; //该数据值 保存着要修改的 数值信息,光标起始位置在0列
uchar idata keytmp = 0,Keyc = 0;
EA = 0;
ET0 = 0;
while (1)
{
keytmp = namekey(); //读键值
switch ( keytmp)
{
case 1 : //上键,增加数字
switch ( KeyPosition )//光标起始位置
{
case 0: //光标在年的十位
if ( TimeBuffer[0] == 9 ) //9+1=0
TimeBuffer[0] = 0;
else
TimeBuffer[0]++;
df(4,Yp[0],TimeBuffer[0],1);
break;
case 1: //光标在年的个位
if ( TimeBuffer[1] == 9 )
TimeBuffer[1] = 0;
else
TimeBuffer[1]++;
df(4,Yp[1],TimeBuffer[1],1);
break;
case 2: //光标在月的十位
if ( TimeBuffer[2] == 1 ) //月_十位=0,1
TimeBuffer[2] = 0;
else
TimeBuffer[2]++;
df(4,Yp[2],TimeBuffer[2],1);
break;
case 3: //光标在月的个位
if ( TimeBuffer[3] == 9 )
TimeBuffer[3] = 0;
else
TimeBuffer[3]++;
df(4,Yp[3],TimeBuffer[3],1);
break;
case 4: //光标在日的十位
if ( TimeBuffer[4] == 3 ) //日_十位=0,1,2,3
TimeBuffer[4] = 0;
else
TimeBuffer[4]++;
df(4,Yp[4],TimeBuffer[4],1);
break;
case 5: //光标在日的个位
if ( TimeBuffer[5] == 9 )
TimeBuffer[5] = 0;
else
TimeBuffer[5]++;
df(4,Yp[5],TimeBuffer[5],1);
break;
case 6: //光标在时的十位
if ( TimeBuffer[6] == 2 ) //时_十位=0,1,2
TimeBuffer[6] = 0;
else
TimeBuffer[6]++;
df(4,Yp[6],TimeBuffer[6],1);
break;
case 7: //光标在时的个位
if ( TimeBuffer[7] == 9 )
TimeBuffer[7] = 0;
else
TimeBuffer[7]++;
df(4,Yp[7],TimeBuffer[7],1);
break;
case 8: //光标在分的十位
if ( TimeBuffer[8] == 5 ) //分_十位=0,1,2,3,4,5
TimeBuffer[8] = 0;
else
TimeBuffer[8]++;
df(4,Yp[8],TimeBuffer[8],1);
break;
case 9: //光标在分的个位
if ( TimeBuffer[9] == 9 )
TimeBuffer[9] = 0;
else
TimeBuffer[9]++;
df(4,Yp[9],TimeBuffer[9],1);
break;
}
break;
case 2 : //下键,减少数字
switch ( KeyPosition )
{
case 0: //光标在年的十位
if ( TimeBuffer[0] == 0 ) //9+1=0
TimeBuffer[0] = 9;
else
TimeBuffer[0]--;
df(4,Yp[0],TimeBuffer[0],1);
break;
case 1: //光标在年的个位
if ( TimeBuffer[1] == 0 )
TimeBuffer[1] = 9;
else
TimeBuffer[1]--;
df(4,Yp[1],TimeBuffer[1],1);
break;
case 2: //光标在月的十位
if ( TimeBuffer[2] == 0 ) //月_十位=0,1
TimeBuffer[2] = 1;
else
TimeBuffer[2]--;
df(4,Yp[2],TimeBuffer[2],1);
break;
case 3: //光标在月的个位
if ( TimeBuffer[3] == 0 )
TimeBuffer[3] = 9;
else
TimeBuffer[3]--;
df(4,Yp[3],TimeBuffer[3],1);
break;
case 4: //光标在日的十位
if ( TimeBuffer[4] == 0 ) //日_十位=0,1,2,3
TimeBuffer[4] = 3;
else
TimeBuffer[4]--;
df(4,Yp[4],TimeBuffer[4],1);
break;
case 5: //光标在日的个位
if ( TimeBuffer[5] == 0 )
TimeBuffer[5] = 9;
else
TimeBuffer[5]--;
df(4,Yp[5],TimeBuffer[5],1);
break;
case 6: //光标在时的十位
if ( TimeBuffer[6] == 0 ) //时_十位=0,1,2
TimeBuffer[6] = 2;
else
TimeBuffer[6]--;
df(4,Yp[6],TimeBuffer[6],1);
break;
case 7: //光标在时的个位
if ( TimeBuffer[7] == 0 )
TimeBuffer[7] = 9;
else
TimeBuffer[7]--;
df(4,Yp[7],TimeBuffer[7],1);
break;
case 8: //光标在分的十位
if ( TimeBuffer[8] == 0 ) //分_十位=0,1,2,3,4,5
TimeBuffer[8] = 5;
else
TimeBuffer[8]--;
df(4,Yp[8],TimeBuffer[8],1);
break;
case 9: //光标在分的个位
if ( TimeBuffer[9] == 0 )
TimeBuffer[9] = 9;
else
TimeBuffer[9]--;
df(4,Yp[9],TimeBuffer[9],1);
break;
}
break;
case 3 : //右移键
if ( KeyPosition == 9) //光标停留在分的个位
{
df(4,Yp[KeyPosition],TimeBuffer[KeyPosition],0); //将该位数字正显
KeyPosition = 0; //该值复0,即将光标移到首位(年之十位)
df(4,Yp[KeyPosition],TimeBuffer[KeyPosition],1);//将首位数字反显
break ;
}
else
{
df(4,Yp[KeyPosition],TimeBuffer[KeyPosition],0); //将该位数字正显
KeyPosition++;
df(4,Yp[KeyPosition],TimeBuffer[KeyPosition],1); //将该位数字反显
break;
}
case 4: Time_Dispose_Set(); //返回键,确认已设置的时间,并返回主菜单
lcd_init();
dierping(); //返回主菜单
}
}
}
//主菜单下按确定键处理程序
#pragma disable
void Enter_Dispose()
{
switch(KeyCount)
{
case 0:
Test();
break; //启动进入测试程序
case 1: History();
break; //进入历史查询
case 2:
Dis_SetTime(); //进入时钟设置
Time_Modify(); //修改时间函数
break;
}
}
//主菜单读取键值1(上)、2(下)、7(确定键)
#pragma disable
void key_chuli_1(uchar key) //按键处理1,键值为3、4、5、6均不起作用
{
switch(key)
{
case 1: if( KeyCount > 0 ) //光标上移
KeyCount--;
else
KeyCount = 2; //光标初始位置0减1等于2,到时间设定位置
Menu_Move();
break;
case 2: if( KeyCount < 2 ) //光标下移
KeyCount++;
else
KeyCount = 0;//光标停留在时间设定位置,下移到测试位置2+1=0
Menu_Move();
break;
case 7: Enter_Dispose(); //确定
break;
}
}
//主菜单
void dierping()
{
Real_Display_Time(); //显示实时时间
Battery(); //显示电池电量
// EA = 1; //开总中断
// ET0 = 0;
Menu_Move(); //根据KeyCount值确定光标显示位置
while (1)
{
do
{ //等待有键被按下
key=namekey();
}while(!key); //key=0,表示无键按下,继续扫描键盘
key_chuli_1(key); //有键被按下,转键盘处理1
}
}
//第一屏,产品厂家信息
void diyiping()
{
dh(0,52,0,0);
dh(0,76,1,0);
dh(0,100,2,0);
dh(0,124,3,0);
dh(3,24,4,0);
dh(3,40,5,0);
dh(3,56,6,0);
dh(3,72,7,0);
dh(3,88,8,0);
dh(3,104,9,0);
dh(3,120,10,0);
dh(3,136,11,0);
dh(3,152,12,0);
dh(6,8,13,0);
dh(6,24,14,0);
dh(6,40,15,0);
dh(6,56,16,0);
dh(6,72,17,0);
dh(6,88,18,0);
dh(6,104,19,0);
dh(6,120,20,0);
dh(6,136,21,0);
dh(6,152,22,0);
dh(6,168,23,0);
}
//外部中断0处理程序,故障报警,高压模块保护
void Int0_Interrupt_Dispose() interrupt 0
{
lcd_init();
shipin_error1();
shipin_error3();
daCount = 0;
Tlc5615(daCount);
while(1);
}
//外部中断1处理,1mA电流到
void Int1_Interrupt_Dispose() interrupt 2
{
daFlag = 1; //da送数标志位
}
void main()
{
/* P1=0XFF;
P3=0XFF;
EA = 0; //关总中断
ET0 = 0; //关定时器0中断
EX0 = 0; //关外部中断0
EX1 = 0; //关外部中断1
IT0 = 0; //外部中断0低电平触发,故障报警
IT1 = 1; //外部中断1下降沿触发,1mA电流到
PX1 = 1; //中断优先级顺序:外部中断0(故障)→外部中断1(1mA到)→定时器0(时间电量)
PX0 = 1;
TMOD = 0x01; //定时器0定时方式1
TH0 = 0xdc; //定时器0置初值
TL0 = 0x00;
TR0 = 1; //启动定时器0
lcd_init(); //液晶屏初始化,清屏
diyiping(); //产品信息显示
while(1)
{
if ( namekey()== 7)
{
lcd_init() ; //清屏
dierping(); //主菜单
break;
}
}
*/
Print_Data();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -