📄 yejing_main.c
字号:
#include<reg51.h>
#include<absacc.h>
#include<main.h>
#define uchar unsigned char
#define uint unsigned int
sbit IRPT5=P1^2;//ZLG7290中断
sbit bojing=P3^4;
void Reset();
void KeyDisposal();
void Show();
void imput();
uchar idata dat_time[3]={0,0,0}; //时间
uchar idata dat_date[3]={0x05,0x01,0x01}; //日期
uchar idata dat_wendu[3]={0x00,0x00,0x00}; //温度
uchar idata dat_votage[3]={0};
uchar idata dat_set_votage[2]={9,9};
uchar idata vota=0;
//页面显示
uchar data ScreenNum; //液晶屏上正在显示的页面号
uchar data item; //当前页面号中正选中的项(有的页面中无)
bit ScreenCHG; //页面内容是否有改变
//按键消息
uchar data KeyNum; //按下的键号
uchar data Shuz; //数字键值
bit KeyDown; //键盘有无键按下
void DS12887_init()
{
Registe_A=0x2f;
Registe_B=0x3e;
}
void DS12887()
{
dat_time[2]=Seconds;
dat_time[1]=Minutes;
dat_time[0]=Hours;
dat_date[2]=Day;
dat_date[1]=Month;
dat_date[0]=Year;
}
void main(void)
{
Reset();
DS12887_init();
while(1){
Show();
DS12887();
imput(); //读键值并处理
if(ScreenCHG){
Clear();
ScreenCHG=0;
}
}
}
void Reset()//初始化
{
bojing=0;
C_Write(LEFT,0x3f); //显示开关设置(左)
C_Write(RIGHT,0x3f); //显示开关设置(右)
C_Write(LEFT,0xc0); //显示起始行设置(左)
C_Write(RIGHT,0xc0); //显示起始行设置(右)
Clear();
/********************************变量初始化*********************************/
ScreenNum=0;
ScreenCHG=0;
KeyNum=0;
}
void Show()
{
switch(ScreenNum){
case 0:Show_Pinbao(dat_date,dat_time);break;
case 1:Show_Menu(item);break; //菜单
case 2:Set_Clock(item,dat_date,dat_time);break;//设定时间
case 3:TestTemperature(dat_wendu) ;
Show_temperature(dat_wendu);break;//显示温度
case 4:TestVotage(dat_votage,dat_set_votage);
Show_votage(dat_votage);
break;
case 5:Set_Votage(item,dat_set_votage);break;
default:break;
}
}
void imput()
{
uchar data inval;
KeyDown=IRPT5;
if(!KeyDown){
inval=ZLG7290_GetKey();
if(inval<0x14){ //数字键
switch(inval){
case 0x01:Shuz=1;break;
case 0x09:Shuz=2;break;
case 0x11:Shuz=3;break;
case 0x02:Shuz=4;break;
case 0x0A:Shuz=5;break;
case 0x12:Shuz=6;break;
case 0x03:Shuz=7;break;
case 0x0B:Shuz=8;break;
case 0x13:Shuz=9;break;
case 0x0C:Shuz=0;break;
case 0x04:Shuz=10;break;//小数点
default: break;
}
KeyNum=0;
}
else
switch(inval){
case 20:KeyNum=1;break;//确定键
case 26:KeyNum=2;break;//增键
case 27:KeyNum=3;break;//减键
case 28:KeyNum=4;break;//取消键
default:KeyNum=0;break;
}
KeyDisposal();
ScreenCHG=1;
}
}
//Show_Pinbao
void Disp0()
{
switch(KeyNum){
case 1:ScreenNum=1;
item=1;
break;
default: break;
}
}
//Show_Menu
void Disp1()
{
switch(KeyNum){
case 1:switch(item){
case 1:ScreenNum=2; //设定时间
item=1;
break;
case 2:ScreenNum=3; //显示温度
item=1;
break;
case 3:ScreenNum=4; //
item=1;
break;
case 4:ScreenNum=5; //
item=1;
vota=0;
break;
default:break;
}
break;
case 2:item--;
if(item<1)item=4;
break;
case 3:item++;
if(item>4)item=1;
break;
case 4:
ScreenNum=0;
break;
default:break;
}
}
//Set_Clock
void Disp2()
{
switch(KeyNum){
case 1:item++;
if(item>6){
ScreenNum=1;
item=1;
}
//调整时间芯片
break;
case 2:switch(item){
case 1:Year++;
if(Year>=100)Year=0;
break;
case 2:Month++;
if(Month>12)Month=1;
break;
case 3:Day++;
if(Day>31)Day=1;
break;
case 4:Hours++;
if(Hours>23)Hours=0;
break;
case 5:Minutes++;
if(Minutes>59)Minutes=0;
break;
case 6:Seconds++;
if(Seconds>59)Seconds=0;
break;
default:break;
}
break;
case 3:
switch(item){
case 1:Year--;
if(Year>=100)Year=99;
break;
case 2:Month--;
if(Month==0)Month=12;
break;
case 3:Day--;
if(Day==0)Day=31;
break;
case 4:Hours--;
if(Hours>24)Hours=23;
break;
case 5:Minutes--;
if(Minutes>60)Minutes=59;
break;
case 6:Seconds--;
if(Seconds>60)Seconds=59;
break;
default:break;
}
break;
case 4:item--;
if(item<1){
ScreenNum=1;
item=1;
//ScreenCHG=1;
}
break;
default:break;
}
}
//Show_temperature
void Disp3()
{
switch(KeyNum){
case 4:ScreenNum=1;
item=1;
break;
default:break;
}
}
void Disp4()
{
switch(KeyNum){
case 1:bojing=0;
break;
case 4:ScreenNum=1;
item=1;
break;
default:break;
}
}
void Disp5()
{uchar *p;
p=dat_set_votage;
if(vota<2&&(KeyNum==0))
dat_set_votage[vota++]=Shuz;
switch(KeyNum){
case 4:ScreenNum=1;
item=1;
vota=0;
break;
default:break;
}
}
void KeyDisposal() //键处理
{
switch(ScreenNum){
case 0:Disp0();break;
case 1:Disp1();break;
case 2:Disp2();break;
case 3:Disp3();break;
case 4:Disp4();break;
case 5:Disp5();break;
default:break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -