📄 key.h
字号:
delay600ms();
display_output_word(0,96,cur_wait,11,1);
set_current();
}
}
}
else{}
}
//////////////////////////////////数字键部分//////////////////////////////////////
//无返回值,无输入参数,用到全局变量page_number,xposition,yposition,scroll_value//
//////////////////////////////////////////////////////////////////////////////////
void key_number(uchar m)
{
uchar *p;
uchar idata i;
if(page_number==0) //开机画面页
{
page_number=1;
scroll_value=0;
xposition=1;
yposition=2;
display_page(page_number,scroll_value,1);
}
//对不同功能页面移动光标有不同限制限制
if(page_number==2) //input parameter value
{
//在屏幕上画数字
p=numcode; //由键值指向所对应的数字字模首地址
p=p+m*16;
if(yposition<8)//左半屏
{
send_command_l(xposition*2+184);//上半数字
send_command_l(yposition*8+64);
for(i=0;i<8;i++)
{
send_data_l(*p);
p++;
}
send_command_l(xposition*2+184+1);//下半数字
send_command_l(yposition*8+64);
for(i=0;i<8;i++)
{
send_data_l(*p);
p++;
}
}
else //右半屏
{
send_command_r(xposition*2+184);//上半数字
send_command_r(yposition*8);
for(i=0;i<8;i++)
{
send_data_r(*p);
p++;
}
send_command_r(xposition*2+184+1);//下半数字
send_command_r(yposition*8);
for(i=0;i<8;i++)
{
send_data_r(*p);
p++;
}
}
//在缓冲区存储数字
p=key_buffer; //指向键盘缓冲区
p=p+xposition*3+yposition-5; //移动到光标位置的缓冲区
*p=m; //存储数字
if(yposition==7 && xposition<3)
{
yposition=5;
xposition++;
}
else if(yposition<7)
{
yposition++;
}
else{}
}
else if(page_number==3)
{
if(m==8)
{
//add wave display function here
if(wave_num>0)
{
wave_num--;
wave_move=0;
wave_display();
}
}
else if(m==9)
{
//add wave display function here
if(wave_num<total_array-1)
{
wave_num++;
wave_move=0;
wave_display();
}
}
else if(m==4)
{
wave_position-=4;
wave_display();
}
else if(m==5)
{
wave_position+=4;
wave_display();
}
else{}
}
else{}
}
void key_measure()
{
if(page_number==2)//begain measure
{
display_output_word(0,96,test_wait,11,1);
measure();
}
else //back
{
page_number=1;
scroll_value=0;
xposition=1;
yposition=2;
display_page(page_number,scroll_value,1);
}
}
////////////////////////////////缓冲区清零////////////////////////////
//清零键盘缓冲区,便于读写.无返回值。 //
//////////////////////////////////////////////////////////////////////
void clear_key_buffer(uchar n)
{
uchar idata i;
for(i=0;i<3;i++)
{
key_buffer[n*3+i]=11;
}
}
/////////////////////////////读取缓冲区函数/////////////////////////////////////////
//无返回值,有三个输入变量,x表示要读取缓冲区所在的行,取值为0,1,2,3。整型指针变量p1//
//负责向输入的整型变量地址内赋值,即把缓冲区中的数据传递出去.
////////////////////////////////////////////////////////////////////////////////////
void read_key_buffer(uchar x,uint *p1)
{
uchar i;
uchar *p;
bit sign;
sign=0;
*p1=0;
p=key_buffer;//移动到所要读的行位置
p=p+x*3;
for(i=0;i<3;i++)
{
if(*p<10) //非小数点并且非空位
{
sign=1;
*p1=*p1*10 + *p; //累加求值
}
if(*p==11 && sign==1)//键盘数字输入结束
{
return;
}
p++;
}
}
////////////////////////////////class key_value to fit functions////////////////////
//with out return value,with out input value,using key_value public variers. //
////////////////////////////////////////////////////////////////////////////////////
void scan_key()
{
if(key_value==key0)
{
key_number(0);
key_value=0;
}
else if(key_value==key1)
{
key_number(1);
key_value=0;
}
else if(key_value==key2)
{
key_number(2);
key_value=0;
}
else if(key_value==key3)
{
key_number(3);
key_value=0;
}
else if(key_value==key4)
{
key_number(4);
key_value=0;
}
else if(key_value==key5)
{
key_number(5);
key_value=0;
}
else if(key_value==key6)
{
key_number(6);
key_value=0;
}
else if(key_value==key7)
{
key_number(7);
key_value=0;
}
else if(key_value==key8)
{
key_number(8);
key_value=0;
}
else if(key_value==key9)
{
key_number(9);
key_value=0;
}
else if(key_value==keymeasure)
{
key_measure();
key_value=0;
}
else if(key_value==keyok)
{
key_ok();
key_value=0;
}
else if(key_value==keyup)
{
key_up();
key_value=0;
}
else if(key_value==keydown)
{
key_down();
key_value=0;
}
else if(key_value==keyleft)
{
key_left();
key_value=0;
}
else if(key_value==keyright)
{
key_right();
key_value=0;
}
else
{ }
key_sign=0;
}
/////////////////////////////read key/////////////////////////////////
void key() interrupt 2
{
key_sign=1; //there is a key put down
IO_CS=0;
COM8155=0x0d;
COM8155=0x0d;
delay20ms();
key_value=PB8155; //读键盘
key_value=PB8155; //读键盘
delay20ms();
IO_CS=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -