📄 key5._c
字号:
// key_5.c
//
#include <io8515v.h>
#include <macros.h>
#include "1602LCD.h"
#include "key5.h"
#include "init.h"
#include "main.h"
/////////////////////////////////////////////
// key_san()
// 四键扫描函数
//
unsigned char key_scan(void)
{
unsigned char temp=0;
PORTD|=0X3B; //高四位置高
DDRD&=0XC4; //高四位输入
temp=PIND&0X3B;
if(temp!=0x3B)
{
delay_nms(15);
temp=PIND&0X3B;
if(temp!=0x3B)
switch(temp)
{
case 0x3A:temp=1;break;
case 0x39:temp=2;break;
case 0x33:temp=3;break;
case 0x2B:temp=4;break;
case 0x1B:temp=5;break;
}
}
return (temp);
}
/////////////////////////////////////////////
// key_san()
// 四键扫描函数(按键释放检查)
//
unsigned char keypad(void)
{
unsigned char temp1,temp2;
temp1=key_scan();
if (temp1==0x3B)
return 0x3B;
do
temp2=key_scan();
while(temp1==temp2);
return temp1;
}
///////////////////////////////////////////////////
// key_service
// 按键服务函数:
// x ——数据显示列
// y ——数据显示行
// data_lentgh —— 数据长度
// *value —— 数据指针
// MODE: 1 2
// KEY: 1 确定
// 2 step+ +
// 3 step- -
// 4 移动光标
// 5 模式选择
//
void key_service(unsigned char x,unsigned char y,unsigned char data_length,unsigned int *value)
{
unsigned char temp;
temp=keypad();
value_temp=*value;
if(mode==1)
{
switch (temp)
{
case KEY_FN:
mode=2;
LCD_write_string(0,1," ^ seting...");
j=0;
LCD_display(2,0,4,*value);
data_init(*value); // 送缓冲
break;
case KEY_INC:
(*value)++;
if(*value>2000) (*value)=2000;
ADC_GD=(*value)*K1;
LCD_display(2,0,4,*value);
break;
case KEY_DEC:
(*value)--;
if(*value>2000) (*value)=0;
ADC_GD=(*value)*K1;
LCD_display(2,0,4,*value);
break;
}
}
else
{
switch (temp)
{
case KEY_INC:
value_table[j+1]++;
if(value_table[j+1]>9) value_table[j+1]=0;
LCD_write(2+j,0,'0'+value_table[j+1]);
break;
case KEY_DEC:
value_table[j+1]--;
if(value_table[j+1]>9) value_table[j+1]=9;
LCD_write(2+j,0,'0'+value_table[j+1]);
break;
case KEY_CU:
LCD_write(2+j,1,' ');
j++;
j&=0x3;
LCD_write(2+j,1,'^');
break;
case KEY_OK:
*value=value_table[1]*1000+ value_table[2]*100+value_table[3]*10+value_table[4];
if(*value>2000) *value=2000;
ADC_GD=(*value)*K1;
case KEY_FN:
mode=1;
LCD_write_string(0,1," ^ +/-ing...");
LCD_display(2,0,4,*value);
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -