⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.c.bak

📁 使用avr--cc2420模块程序,需要原理图的联系 QQ:120304948
💻 BAK
📖 第 1 页 / 共 2 页
字号:
#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 + -