一秒内按键超过10次。
//调试时如果发现LED屏对光笔的反应比较慢,则需要修改getkey()在一秒内的时间占用比例,
//即也意味着getkey()在一秒内的执行次数。可以这样:设定一个计数器,每dis_play()一次就+1,初值
//为0,到了1就清零,并且调用get_key(),否则不执行get_key().
if(KEYS) //getkey()检测到按键按下就返回按键的值,没按键按下就返回0
{
switch(KEYS)
{
case key_enter : break; //”确定“在这里没意义
case key_esc : break; //没得退出,已经是最底的一层了
case key_words_modle : fourwords();break; //进入多字连写功能
case key_light_level : lightlev(LEDDATA0);break; //调整屏幕亮度级别的参数
case key_sleep_time : sleeptim(LEDDATA0);break; //调整超时待机的超时时间
case key_fanxian : fanxian(LEDDATA0);break; //反显操作
case key_cachu : LEDcachu(LEDDATA0);break; //擦除操作
case key_tuoyi : obj_move(LEDDATA0);break; //对象拖移
case key_all_screen_del : del_all(LEDDATA0);break; //
case key_tuoyi_quxiao : break; //”对象选定确认后取消“在这里没意义
case key_crease : break; //”数据+1“在这里没意义
case key_decrease : break; //”数据-1“在这里没意义
default : break; //没按键匹配的,直接退出。虽然在这里不发生,但安全起见加上去
}
}
KEYS=0;
light_T++;
if(light_T>5){light_T=0;light();} //一秒内自动调光4次左右
}
}
void one_word(uchar dat_addr[32][4],uchar caozuo) //一秒钟的一部分,大概是1/20秒。进行一个点的扫描并显示在LED屏上显示,
//以及更新数码管的显示
{
if(!pen_key)
{ saomiao(); //光笔上的按键被按下就扫描,光笔这里占时间笔也算是一个大块头,3DU33的
//响应时间保险点来计算大约需要延时5uS。这样,每次扫描按最坏打算则需要时
//长为:T=(5+5)*32*N+(5+5)*N=330N(uS).N为给32列LED的高->低变换次数,同时也为
//计数器计满溢出的次数。
LED_GAI(dat_addr,caozuo,LED_ROW,LED_LINE); //修改当前屏幕数据内容以便下面更新显示,writting意味着LED_GAI()函数
// 对L
EDDATA1[LED_ROW][LED_LINE/8]中的第LED_LINE%8位数据作”与0“操作。
//因为给74HC595的输出端口低电平对应选通该列。
//而相反,假如参数为erasure,则对同样一位数据作”或1“运算
//另外,如果pen_key没被按下,那数据没更新