📄 minsys.c
字号:
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
}
else
{
DispOver();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
}
LiuCheng1 = 1;
LiuCheng1_1 = 1;
LiuCheng2Enable = 1;
LiuCheng3Enable = 1;
DispWelcome();
}
}
}
//查询流程
if((LiuCheng2 == 1)&&(LiuCheng2Enable == 1))
{
if(KEYB == 0)//按了“上翻/查询”键
{
LiuCheng2 = 0;
LiuCheng1Enable = 0;
LiuCheng3Enable = 0;
DispSearch();
putchar(0xaa);//发开始码
putchar(DataSeclete[1]);//发功能号
GetAll(DataReceive);//接收查询结果
DispFindNow(GetShiwei(DataReceive[3]),GetGewei(DataReceive[3]),GetShiwei(DataReceive[2]),GetGewei(DataReceive[2]),DataReceive[0],DataReceive[1]);//显示查询结果
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
LiuCheng2 = 1;
LiuCheng1Enable = 1;
LiuCheng3Enable = 1;
DispWelcome();
}
}
//工作流程
if((LiuCheng3 == 1)&&(LiuCheng3Enable == 1))
{
if(LiuCheng3_1 == 1)
{
if(KEYD == 0)//按了“确定/下一步”键
{
LiuCheng3 = 0;
LiuCheng3_1 = 0;
LiuCheng1Enable = 0;
LiuCheng2Enable = 0;
DispSetTime(GetShiwei(DataBase[3]),GetGewei(DataBase[3]),GetShiwei(DataBase[2]),GetGewei(DataBase[2]),LiuCheng3_1_Sign);
Delay400Ms();Delay400Ms();
}
}
}
else
{
//第一个子目录 设置时间
if(LiuCheng3_1 == 0)
{
LiuCheng1Enable = 0;
LiuCheng2Enable = 0;
LiuCheng3_1_HH = GetShiwei(DataBase[3]);//小时十位
LiuCheng3_1_HL = GetGewei(DataBase[3]);//小时个位
LiuCheng3_1_LH = GetShiwei(DataBase[2]);//分钟十位
LiuCheng3_1_LL = GetGewei(DataBase[2]);//分钟个位
if(KEYC == 0)//按了“上翻/查询”键
{
if(LiuCheng3_1_Sign == 1)
{
LiuCheng3_1_HH ++;
if(LiuCheng3_1_HH > 9)
{
LiuCheng3_1_HH -= 10;
}
}
else if(LiuCheng3_1_Sign == 2)
{
LiuCheng3_1_HL ++;
if(LiuCheng3_1_HL > 9)
{
LiuCheng3_1_HL -= 10;
}
}
else if(LiuCheng3_1_Sign == 3)
{
LiuCheng3_1_LH ++;
if(LiuCheng3_1_LH > 5)
{
LiuCheng3_1_LH -= 6;
}
}
else if(LiuCheng3_1_Sign == 4)
{
LiuCheng3_1_LL ++;
if(LiuCheng3_1_LL > 9)
{
LiuCheng3_1_LL -= 10;
}
}
DataBase[3] = LiuCheng3_1_HH*10+LiuCheng3_1_HL; //把结果统计进数组
DataBase[2] = LiuCheng3_1_LH*10+LiuCheng3_1_LL;
DispSetTime(LiuCheng3_1_HH,LiuCheng3_1_HL,LiuCheng3_1_LH,LiuCheng3_1_LL,LiuCheng3_1_Sign);
Delay400Ms();
}
if(KEYB == 0)//按了“左翻”键
{
LiuCheng3_1_Sign --;
if(LiuCheng3_1_Sign == 0)
{
LiuCheng3_1_Sign = 4;
}
DataBase[3] = LiuCheng3_1_HH*10+LiuCheng3_1_HL; //把结果统计进数组
DataBase[2] = LiuCheng3_1_LH*10+LiuCheng3_1_LL;
DispSetTime(LiuCheng3_1_HH,LiuCheng3_1_HL,LiuCheng3_1_LH,LiuCheng3_1_LL,LiuCheng3_1_Sign);
Delay400Ms();
}
if(KEYD == 0)//按了“确定/下一步”键
{
LiuCheng3_1 = 1;
LiuCheng3_2 = 0;
DispSetRevise(DataBase[4]-24);
Delay400Ms();Delay400Ms();
}
}
//第二个子目录 设置时间修正值
else if(LiuCheng3_2 == 0)
{
LiuCheng1Enable = 0;
LiuCheng2Enable = 0;
LiuCheng3_2_Num = DataBase[4]-24;
if(KEYC == 0)//按了“上翻/查询”键
{
LiuCheng3_2_Num ++;
if(LiuCheng3_2_Num > 9)
{
LiuCheng3_2_Num -= 10;
}
DataBase[4] = LiuCheng3_2_Num + 24; //把结果统计进数组
DispSetRevise(LiuCheng3_2_Num);
Delay400Ms();
}
if(KEYD == 0)//按了“确定/下一步”键
{
LiuCheng3_2 = 1;
LiuCheng3_3 = 0;
//读取下一个
if(DataBase[5] < 0x80)//为负时
{
LiuCheng3_3_Sign = 0;
LiuCheng3_3_HH = 0;
LiuCheng3_3_HL = GetGewei(DataBase[5]);
}
else//为正时
{
LiuCheng3_3_Sign = 1;
LiuCheng3_3_HH = GetShiwei(DataBase[5] - 0x80);
LiuCheng3_3_HL = GetGewei(DataBase[5] - 0x80);
}
//显示下一个
DispTemUp(LiuCheng3_3_HH,LiuCheng3_3_HL,LiuCheng3_3_Sign,LiuCheng3_3_WeiZhi);
Delay400Ms();Delay400Ms();
}
}
//第三个子目录 设置温度上限
else if(LiuCheng3_3 == 0)
{
LiuCheng1Enable = 0;
LiuCheng2Enable = 0;
//判断按键
if(KEYC == 0)//按了“上翻/查询”键
{
//改变数值
if(LiuCheng3_3_WeiZhi == 1)
{
if(LiuCheng3_3_Sign == 1)//为正
{
LiuCheng3_3_Sign = 0;//变成负以后
LiuCheng3_3_HH = 0;
}
else//为负
{
LiuCheng3_3_Sign = 1;//变成正以后
}
}
else if(LiuCheng3_3_WeiZhi == 2)
{
if(LiuCheng3_3_Sign == 1)//符号为正时,取模的最大值为9
{
LiuCheng3_3_HH ++;
if(LiuCheng3_3_HH > 9)
{
LiuCheng3_3_HH -= 10;
}
}
else if(LiuCheng3_3_Sign == 0)//符号为负时,取模的最大值为1
{
LiuCheng3_3_Sign = 0;
}
}
else if(LiuCheng3_3_WeiZhi == 3)
{
LiuCheng3_3_HL ++;
if(LiuCheng3_3_HL > 9)
{
LiuCheng3_3_HL -= 10;
}
}
//保存
if(LiuCheng3_3_Sign == 0)
{
DataBase[5] = LiuCheng3_3_HH*10+LiuCheng3_3_HL; //把结果统计进数组
if(DataBase[5] == 0x00)
{
DataBase[5] = 0x80;
}
}
else if(LiuCheng3_3_Sign == 1)
{
DataBase[5] = LiuCheng3_3_HH*10+LiuCheng3_3_HL+0x80; //把结果统计进数组
}
//显示
DispTemUp(LiuCheng3_3_HH,LiuCheng3_3_HL,LiuCheng3_3_Sign,LiuCheng3_3_WeiZhi);
Delay400Ms();
}
if(KEYB == 0)//按了“左翻”键
{
//移动焦点
LiuCheng3_3_WeiZhi --;
if(LiuCheng3_3_WeiZhi == 0)
{
LiuCheng3_3_WeiZhi = 3;
}
//保存
if(LiuCheng3_3_Sign == 0)
{
DataBase[5] = LiuCheng3_3_HH*10+LiuCheng3_3_HL; //把结果统计进数组
if(DataBase[5] == 0x00)
{
DataBase[5] = 0x80;
}
}
else if(LiuCheng3_3_Sign == 1)
{
DataBase[5] = LiuCheng3_3_HH*10+LiuCheng3_3_HL+0x80; //把结果统计进数组
}
//显示
DispTemUp(LiuCheng3_3_HH,LiuCheng3_3_HL,LiuCheng3_3_Sign,LiuCheng3_3_WeiZhi);
Delay400Ms();
}
if(KEYD == 0)//按了“确定/下一步”键
{
LiuCheng3_3 = 1;
LiuCheng3_4 = 0;
//显示下一个
if(DataBase[6] < 0x80)//为负时
{
LiuCheng3_4_Sign = 0;
LiuCheng3_4_HH = 0;
LiuCheng3_4_HL = GetGewei(DataBase[6]);
}
else//为正时
{
LiuCheng3_4_Sign = 1;
LiuCheng3_4_HH = GetShiwei(DataBase[6] - 0x80);
LiuCheng3_4_HL = GetGewei(DataBase[6] - 0x80);
}
DispTemDown(LiuCheng3_4_HH,LiuCheng3_4_HL,LiuCheng3_4_Sign,LiuCheng3_4_WeiZhi);
Delay400Ms();Delay400Ms();
//DataBase[2]分钟,[3]小时,[4]时间修正,[5]温度上限,[6]温度下限,[7]震动灵敏度
}
}
//第四个子目录 设置温度下限
else if(LiuCheng3_4 == 0)
{
LiuCheng1Enable = 0;
LiuCheng2Enable = 0;
//判断按键
if(KEYC == 0)//按了“上翻/查询”键
{
//改变数值
if(LiuCheng3_4_WeiZhi == 1)
{
if(LiuCheng3_4_Sign == 1)//为正
{
LiuCheng3_4_Sign = 0;//变成负以后
LiuCheng3_4_HH = 0;
}
else//为负
{
LiuCheng3_4_Sign = 1;//变成正以后
}
}
else if(LiuCheng3_4_WeiZhi == 2)
{
if(LiuCheng3_4_Sign == 1)//符号为正时,取模的最大值为9
{
LiuCheng3_4_HH ++;
if(LiuCheng3_4_HH > 9)
{
LiuCheng3_4_HH -= 10;
}
}
else if(LiuCheng3_4_Sign == 0)//符号为负时,取模的最大值为1
{
LiuCheng3_4_Sign = 0;
}
}
else if(LiuCheng3_4_WeiZhi == 3)
{
LiuCheng3_4_HL ++;
if(LiuCheng3_4_HL > 9)
{
LiuCheng3_4_HL -= 10;
}
}
//保存
if(LiuCheng3_4_Sign == 0)
{
DataBase[6] = LiuCheng3_4_HH*10+LiuCheng3_4_HL; //把结果统计进数组
if(DataBase[6] == 0x00)
{
DataBase[6] = 0x80;
}
}
else if(LiuCheng3_4_Sign == 1)
{
DataBase[6] = LiuCheng3_4_HH*10+LiuCheng3_4_HL+0x80; //把结果统计进数组
}
//显示
DispTemDown(LiuCheng3_4_HH,LiuCheng3_4_HL,LiuCheng3_4_Sign,LiuCheng3_4_WeiZhi);
Delay400Ms();
}
if(KEYB == 0)//按了“左翻”键
{
//移动焦点
LiuCheng3_4_WeiZhi --;
if(LiuCheng3_4_WeiZhi == 0)
{
LiuCheng3_4_WeiZhi = 3;
}
//保存
if(LiuCheng3_4_Sign == 0)
{
DataBase[6] = LiuCheng3_4_HH*10+LiuCheng3_4_HL; //把结果统计进数组
if(DataBase[6] == 0x00)
{
DataBase[6] = 0x80;
}
}
else if(LiuCheng3_4_Sign == 1)
{
DataBase[6] = LiuCheng3_4_HH*10+LiuCheng3_4_HL+0x80; //把结果统计进数组
}
//显示
DispTemDown(LiuCheng3_4_HH,LiuCheng3_4_HL,LiuCheng3_4_Sign,LiuCheng3_4_WeiZhi);
Delay400Ms();
}
if(KEYD == 0)//按了“确定/下一步”键
{
LiuCheng3_4 = 1;
LiuCheng3_5 = 0;
//显示下一个
LiuCheng3_5_Num = (DataBase[7]-2)/2;
DispShake(LiuCheng3_5_Num);//震动灵敏度,输入数值0 ~ 9 。灵敏度是25毫秒内震动的次数2-20,设置时对应为0~9,设置值*2+2=灵敏度
Delay400Ms();Delay400Ms();
}
}
//第五个子目录 设置时间修正值
else if(LiuCheng3_5 == 0)
{
LiuCheng1Enable = 0;
LiuCheng2Enable = 0;
if(KEYC == 0)//按了“上翻/查询”键
{
LiuCheng3_5_Num ++;
if(LiuCheng3_5_Num > 9)
{
LiuCheng3_5_Num -= 10;
}
DataBase[7] = LiuCheng3_5_Num * 2 + 2; //把结果统计进数组
DispShake(LiuCheng3_5_Num);
Delay400Ms();
}
if(KEYD == 0)//按了“确定/下一步”键
{
LiuCheng3_5 = 1;
LiuCheng3_6 = 0;
//读取下一个
CalculatePassword(LiuCheng3_password,DataBase[0]);
//显示
DispSetAddress(LiuCheng3_password,LiuCheng3_6_Sign);
DispPassWord(5,6,7,1,DataBase[0]);//输入显示的x1,x2,x3,y,数值(5.6.7.1.DataBase[0])
Delay400Ms();Delay400Ms();
}
}
//第六个子目录 设置密码
else if(LiuCheng3_6 == 0)
{
LiuCheng1Enable = 0;
LiuCheng2Enable = 0;
if(KEYC == 0)//按了“上翻/查询”键
{
//上翻
LiuCheng3_password[LiuCheng3_6_Sign -1] ++;
if(LiuCheng3_password[LiuCheng3_6_Sign-1] > 1)
{
LiuCheng3_password[LiuCheng3_6_Sign-1] -= 2;
}
//保存
ReCalculatePassword(LiuCheng3_password);//把结果统计进数组
DispSetAddress(LiuCheng3_password,LiuCheng3_6_Sign);
DispPassWord(5,6,7,1,DataBase[0]);//输入显示的x1,x2,x3,y,数值(5.6.7.1.DataBase[0])
Delay400Ms();
}
if(KEYB == 0)//按了“左翻”键
{
//左翻
LiuCheng3_6_Sign --;
if(LiuCheng3_6_Sign == 0)
{
LiuCheng3_6_Sign = 8;
}
//保存
ReCalculatePassword(LiuCheng3_password);//把结果统计进数组
DispSetAddress(LiuCheng3_password,LiuCheng3_6_Sign);
DispPassWord(5,6,7,1,DataBase[0]);//输入显示的x1,x2,x3,y,数值(5.6.7.1.DataBase[0])
Delay400Ms();
}
if(KEYD == 0)//按了“确定/下一步”键
{
DispConnect();
putchar(0xaa);//发开始码
putchar(DataSeclete[2]);//发功能号
putchar(DataBase[0]);//发密码
temp = getchar();//接收密码回馈
if(temp == Retry)//判断密码
{
DispPasswordError();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
}
else
{
PutAll(DataBase);//从串口发送一个8位数组(第一个为密码)
DispOver();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
}
LiuCheng3 = 1;
LiuCheng3_6 = 1;
LiuCheng1Enable = 1;
LiuCheng2Enable = 1;
DispWelcome();
}
}
}
KEYA = 1;//释放按键
KEYB = 1;
KEYC = 1;
KEYD = 1;
EA = 1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////硬件初始化和主函数
void UART_INIT(void)//串口初始化,不要中断
{
TMOD = 0x20;
TL1 = 0x00; //300拨特率
TH1 = 0x00;
TR1 = 1;
SCON = 0x50; //方式1,允许接收
PCON = 0x00;
}
void main(void)
{
Delay400Ms(); //等待lcm进入工作状态
LcdReset(); //工作初始化
UART_INIT();
EX0 = 1; //允许外部中断
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
EA = 1;
DispWelcome();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -