📄 key.c
字号:
#include "data.h"
/*---外部数据引用区---*/
extern uchar str[25]; //存储需要在显示屏显示的字符
extern uchar PageFlage; //显示的当前页号
extern uchar up; //上键按下次数
extern uchar down; //下键按下次数
extern uchar left; //左键按下次数
extern uchar right; //右键按下次数
extern uchar xdata sec1;
extern uchar xdata min1;
extern uchar xdata hour1;
extern uchar xdata day1;
extern uchar xdata month1;
extern uchar xdata year1;
extern uchar xdata week1;
extern uchar xdata sec2;
extern uchar xdata min2;
extern uchar xdata hour2;
extern uchar xdata day2;
extern uchar xdata month2;
extern uchar xdata year2;
extern uchar xdata week2;
extern uchar xdata cal[8][7]; //日历表存储
/*---外部数据引用区---*/
/*---外部函数引用区---*/
extern void cls(); //显示屏清屏函数
extern int GetTemperature(); //读取温度函数
//显示器显示函数
extern uchar dprintf(uchar x,uchar y,char *string,uchar mod);
extern void MainPage(); //主页显示函数
/*---外部函数引用区---*/
/*---内部函数定义区---*/
uchar KeyScan(); //键盘扫描函数
uchar KeyProcess(uchar KeyNum); //按键处理函数
void LeftProcess(); //左键处理函数
void RightProcess(); //左键处理函数
void EnterProcess(); //确定按键处理函数
void Calendar(); //日历处理函数
/*---内部函数定义区---*/
uchar KeyScan()
{
uchar key;
key=0;
P1_0=0;
P1_1=1;
P1_2=1;
P1_3=1;
P1_4=1;
P1_5=1;
P1_6=1;
P1_7=1;
_nop_();_nop_();
if(!P1_4)key=1;
if(!P1_5)key=2;
if(!P1_6)key=3;
if(!P1_7)key=4;
P1_0=1;
P1_1=0;
P1_2=1;
P1_3=1;
_nop_();_nop_();
if(!P1_4)key=5;
if(!P1_5)key=6;
if(!P1_6)key=7;
if(!P1_7)key=8;
P1_0=1;
P1_1=1;
P1_2=0;
P1_3=1;
_nop_();_nop_();
if(!P1_4)key=9;
if(!P1_5)key=10;
if(!P1_6)key=11;
if(!P1_7)key=12;
P1_0=1;
P1_1=1;
P1_2=1;
P1_3=0;
_nop_();_nop_();
if(!P1_4)key=13;
if(!P1_5)key=14;
if(!P1_6)key=15;
if(!P1_7)key=16;
_nop_();_nop_();
return key;
}
uchar KeyProcess(uchar KeyNum)
{
switch(KeyNum)
{
case 1:
cls();
dprintf(0,0,"测试1",1);
PageFlage = 0;
break;
case 2:
cls();
dprintf(0,0,"测试2",1);
PageFlage = 0;
break;
case 3:
LeftProcess();
break;
case 4:
RightProcess();
break;
case 5:
cls();
dprintf(0,0,"测试5",1);
PageFlage = 0;
break;
case 6:
cls();
dprintf(0,0,"测试6",1);
PageFlage = 0;
break;
case 7:
cls();
dprintf(0,0,"测试7",1);
PageFlage = 0;
break;
case 8:
cls();
dprintf(0,0,"测试8",1);
PageFlage = 0;
break;
case 9:
cls();
dprintf(0,0,"测试9",1);
PageFlage = 0;
break;
case 10:
cls();
dprintf(0,0,"测试10",1);
PageFlage = 0;
break;
case 11:
cls();
dprintf(0,0,"测试11",1);
PageFlage = 0;
break;
case 12:
cls();
dprintf(0,0,"测试12",1);
PageFlage = 0;
break;
case 13:
cls();
dprintf(0,0,"测试13",1);
PageFlage = 0;
break;
case 14:
EnterProcess();
break;
case 15:
cls();
dprintf(0,0,"测试15",1);
PageFlage = 0;
break;
case 16:
cls();
MainPage();
PageFlage = 1;
break;
}
return PageFlage;
}
void LeftProcess()
{
left++;
right--;
if(PageFlage == 1)
{
if(left == 4)
{
left = 1;
right = 3;
}
if(left == 1)
{
dprintf(0,48,"遥控",1);
dprintf(40,48,"日历",1);
dprintf(80,48,"计算器",0);
}
else if(left == 2)
{
dprintf(0,48,"遥控",1);
dprintf(40,48,"日历",0);
dprintf(80,48,"计算器",1);
}
else
{
dprintf(0,48,"遥控",0);
dprintf(40,48,"日历",1);
dprintf(80,48,"计算器",1);
}
}
}
void RightProcess()
{
left--;
right++;
if(PageFlage == 1)
{
if(right == 4)
{
left = 3;
right = 1;
}
if(right == 1)
{
dprintf(0,48,"遥控",0);
dprintf(40,48,"日历",1);
dprintf(80,48,"计算器",1);
}
else if(right == 2)
{
dprintf(0,48,"遥控",1);
dprintf(40,48,"日历",0);
dprintf(80,48,"计算器",1);
}
else
{
dprintf(0,48,"遥控",1);
dprintf(40,48,"日历",1);
dprintf(80,48,"计算器",0);
}
}
}
void EnterProcess()
{
if(PageFlage == 1)
{
if(right == 1)
{
cls();
dprintf(0,0,"测试遥控",1);
PageFlage = 2;
}
else if(right == 2)
Calendar();
else
{
cls();
dprintf(0,0,"计算器测试",1);
PageFlage = 4;
}
}
}
void Calendar()
{
uchar x,y,i,str1[5],t,t1,m,j;
cls();
PageFlage = 3;
up = 1;
down = 8;
left = 2;
right = 1;
dprintf(8,0,"-",0);
for(i=0;i<5;i++)
str1[i] = '\0';
for(i=0;i<25;i++)
str[i] = '\0';
strcat(str,"20");
str1[0] = (year1 >> 4) | 0x30;
str1[1] = (year1 & 0x0f) | 0x30;
strcat(str,str1);
dprintf(24,0,str,1);
dprintf(64,0,"+",1);
for(i=0;i<5;i++)
str1[i] = '\0';
for(i=0;i<25;i++)
str[i] = '\0';
str1[0] = (month1 >> 4) | 0x30;
str1[1] = (month1 & 0x0f) | 0x30;
strcat(str,str1);
dprintf(96,0,"-",1);
dprintf(112,0,str,1);
dprintf(136,0,"+",1);
dprintf(0,16,"星期 一二三四五六日",0);
// day1 = (day1 >> 4) * 10 + (day1 & 0x0f);
// month1 = (month1 >> 4) * 10 + (month1 & 0x0f);
// year1 = (year1 >> 4) * 10 + (year1 & 0x0f);
// i = fmod((double)day1,7);
// i = (int)week1 + 7 - (int)i;
//
// if(month1<8)
// {
// if((month1 & 0x01) == 0x01)
// t = 31;
// else
// t = 30;
// }
// else
// {
// if((month1 & 0x01) == 0x01)
// t = 30;
// else
// t = 31;
// }
// m = fmod((double)year1,4);
// if(month1 == 2)
// {
// if(m == 0)
// t = 29;
// else
// t = 28;
// }
// for(t1=1;t1<=t;t1++)
// {
// y = fmod((double)t1,7);
// y = (y + i)%7 - 1;
// x = t1/7;
// if(y == 0xff)
// {
// y = y + 7;
// x = x - 1;
// }
// cal[x][y] = t1;
// }
//
// for(i=0;i<5;i++)
// str1[i] = '\0';
// for(i=0;i<25;i++)
// str[i] = '\0';
// x = 40;
// y = 32;
// for(t1=0;t1<5;t1++)
// {
// for(i=0;i<7;i++)
// {
// m = cal[t1][i];
// if(m != 0x00)
// {
// str1[0] = (m/10) | 0x30;
// str1[1] = (m - (m/10)*10) | 0x30;
// strcat(str,str1);
// if(m == day1)
// dprintf(x,y,str,0);
// else
// dprintf(x,y,str,1);
// x = x + 16;
// }
//
// for(j=0;j<5;j++)
// str1[j] = '\0';
// for(j=0;j<25;j++)
// str[j] = '\0';
// }
// x = 40;
// y = y+16;
// }
// dprintf(0,112,"确定",1);
// dprintf(127,112,"返回",1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -