📄 key.c.bak
字号:
#include <mega128.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "typedef.h"
#include "app.h"
#include "attention.h"
#include "Flash.h"
#include "g20modem.h"
#include "g20serialdrv.h"
#include "ombro.h"
#include "rtc.h"
#include "serialdrv.h"
#include "timer.h"
#include "UDP.h"
#include "protocol.h"
#include "key.h"
#include "lcdzk.h"
#include "print.h"
#include "ombrodb.h"
#pragma warn-
eeprom unsigned char MobilePhone[12]; //"13611218204\0"
#pragma warn+
unsigned char keyvalue;
//unsigned char strdata[15];
unsigned char num[25];
bit sclk;
unsigned char check_key(void)
{
unsigned char i=0;
unsigned char key=0;
KEY_OUT0=0;
nop();
i=~KEY_IN&0x0f;
switch (i)
{
case 1:
key=1;
break;
case 2:
key=2;
break;
case 4:
key=3;
break;
case 8:
key=4;
break;
}
KEY_OUT0=1;
KEY_OUT1=0;
nop();
i=~KEY_IN&0x0f;
switch (i)
{
case 1:
key=5;
break;
case 2:
key=6;
break;
case 4:
key=7;
break;
case 8:
key=8;
break;
}
KEY_OUT1=1;
KEY_OUT2=0;
nop();
i=~KEY_IN&0x0f;
switch (i)
{
case 1:
key=9;
break;
case 2:
key=10;
break;
case 4:
key=11;
break;
case 8:
key=12;
break;
}
KEY_OUT2=1;
KEY_OUT3=0;
nop();
i=~KEY_IN&0x0f;
switch (i)
{
case 1:
key=13;
break;
case 2:
key=14;
break;
case 4:
key=15;
break;
case 8:
key=16;
break;
}
KEY_OUT3=1;
wdr();
return(key);
}
unsigned char read_key(void)
{
unsigned char key;
key=0;
while (key==0)
{
while (check_key()==0);
delay_ms(25);
key=check_key();
while (check_key()!=0);
}
return(key);
}
unsigned char input_num(unsigned char si)
{
unsigned char point=0;
unsigned char key_value;
unsigned char strdata[15];
memset(num, 0x00, 25);
LCD_CursorSize(0xf0);
strdata[1]=0;
while(1)
{
wdr();
if (check_key())
{
key_value=read_key();
switch(key_value)
{
case ZERO:
key_value=0;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case ONE:
key_value=1;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case TWO:
key_value=2;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case THREE:
key_value=3;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case FOUR:
key_value=4;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case FIVE:
key_value=5;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case SIX:
key_value=6;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case SEVEN:
key_value=7;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case EIGHT:
key_value=8;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case NINE:
key_value=9;
if (point<si-1)
{
sprintf(&num[point],"%u",key_value);
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case UP:
if (point<si-1)
{
sprintf(&num[point],"-");
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case DOWN:
if (point<si-1)
{
sprintf(&num[point],":");
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case SETUP:
if (point<si-1)
{
sprintf(&num[point]," ");
strdata[0]=num[point++];
// strdata[1]=0;
disp_string(CursorX,CursorY,strdata);
CursorX++;
LCD_CursorXY(CursorX,CursorY);
}
break;
case OK:
LCD_CursorSize(0x20);
return(1);
// break;
case PSW:
LCD_CursorSize(0x20);
return(0);
// break;
case DELETE:
if (point>0)
{
LCD_CursorXY(CursorX-1,CursorY);
point--;
}
break;
default:
break;
}
}
}
}
unsigned int set_rain(void)
{
unsigned char i;
unsigned int rain;
memset(num, 0x00, 25);
i=input_num(4);
if (i)
{
if (num[0]>0x39 || num[0]<0x30)
{
num[0]=0x31;
num[1]=0x20;
}
rain=atoi(num);
return rain;
}
return 1;
}
void set_mobilephone(void)
{
unsigned char i;
unsigned char key_value;
unsigned char strdata[15];
disp_title(7);
LCD_CursorSize(0x20);
LCD_CursorOn();
LCD_CursorXY(14,28);
delay_ms(1000);
while(1)
{
wdr();
if (check_key())
{
key_value=read_key();
switch(key_value)
{
case UP:
LCD_CursorXY(14,28);
break;
case DOWN:
LCD_CursorXY(16,68);
break;
case SETUP:
LCD_CursorSize(0x20);
LCD_CursorOff();
disp_title(1);
return;
// break;
case OK:
switch (CursorY)
{
case 28:
memset(num, 0x00, 25);
i=input_num(12);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -