《键盘C语言程序》word版.docx
- 文档编号:7705936
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:10
- 大小:19.60KB
《键盘C语言程序》word版.docx
《《键盘C语言程序》word版.docx》由会员分享,可在线阅读,更多相关《《键盘C语言程序》word版.docx(10页珍藏版)》请在冰豆网上搜索。
《键盘C语言程序》word版
查看文章
在DSP2812上的键盘C++程序
#include"main.h"
classSystemObjSystem;
classTimerObjTimer;
classLcdObjLcd;
classKeyboardObjKeyboard;
intmain(void)
{
Lcd.SetDisplayPos(0,0);//汉字定位到上行左端
Lcd.Display("汉字显示演示12");
Lcd.SetDisplayPos(1,0);//汉字定位到上行左端
Lcd.Display("汉字显示演示34");
Lcd.SetDisplayPos(2,0);//汉字定位到上行左端
Lcd.Display("汉字显示演示56");
Lcd.SetDisplayPos(3,0);//汉字定位到上行左端
Lcd.Display("汉字显示演示78");
EALLOW;
// PieCtrlRegs.PIEACK.all=0xFFFF;//PIEACK_GROUP1;
PieCtrlRegs.PIEACK.bit.ACK7=1;
EDIS;
EINT; //EnableGlobalinterruptINTM
ERTM; //EnableGlobalrealtimeinterruptDBGM
for(;;)
{
asm("nop");
//Resetthewatchdogcounter
KickDog();
}
}
#include"keyboard.h"
KeyboardObj:
:
KeyboardObj(void)
{
Init();
}
voidKeyboardObj:
:
Init(void)
{
for(inti=0;i { PressCount[i]=0; } Count=0; } voidKeyboardObj: : Exec(void) { typedefvoid(KeyboardObj: : *FunctionPtr)(void);//函数指针 staticconstFunctionPtrKeyboardCommandTab[3][KeyboardNumbers]= { { &KeyboardObj: : Key01, &KeyboardObj: : Key02, &KeyboardObj: : Key03, &KeyboardObj: : Key04, &KeyboardObj: : Key05, &KeyboardObj: : Key06, &KeyboardObj: : Key07, &KeyboardObj: : Key08 },//放键表 { &KeyboardObj: : Key11, &KeyboardObj: : Key12, &KeyboardObj: : Key13, &KeyboardObj: : Key14, &KeyboardObj: : Key15, &KeyboardObj: : Key16, &KeyboardObj: : Key17, &KeyboardObj: : Key18 },//短压表 { &KeyboardObj: : Key21, &KeyboardObj: : Key22, &KeyboardObj: : Key23, &KeyboardObj: : Key24, &KeyboardObj: : Key25, &KeyboardObj: : Key26, &KeyboardObj: : Key27, &KeyboardObj: : Key28 }//长压表 }; unsignedcharKeyCount; Count%=KeyboardNumbers; KeyCount=PressCount[Count];//取压键次数 if(Scan()==Count+1)//有键压下 { KeyCount++;//压键计数 if(KeyCount>=KeyboardPushTimes) { if(KeyCount==KeyboardPushTimes)//短压键 { // System.BeepOn(); (: : Keyboard.*KeyboardCommandTab[1][Count])(); } if(KeyCount==KeyboardLongPushTimes)//长压键 { (: : Keyboard.*KeyboardCommandTab[2][Count])(); KeyCount=KeyboardPushTimes; } } } else//无键压下 { if(KeyCount>0)//以前有键压下 { if(KeyCount>KeyboardPushTimes) { KeyCount=KeyboardPushTimes; } else { KeyCount--;//放键计数 if(KeyCount==0)//键释放 { System.BeepOff(); (: : Keyboard.*KeyboardCommandTab[0][Count])(); } } } else { KeyCount=0; } } PressCount[Count]=KeyCount; Count++; Count%=KeyboardNumbers; } unsignedcharKeyboardObj: : Scan(void) { volatileunsignedcharKeyVal=0; Count%=KeyboardNumbers; KeyVal=LedKeyRegs; switch(Count) { case0: if(! (KeyVal&ConstKEY1)) { KeyVal=Count+1; } break; case1: if(! (KeyVal&ConstKEY2)) { KeyVal=Count+1; } break; case2: if(! (KeyVal&ConstKEY3)) { KeyVal=Count+1; } break; case3: if(! (KeyVal&ConstKEY4)) { KeyVal=Count+1; } break; case4: if(! (KeyVal&ConstKEY5)) { KeyVal=Count+1; } break; case5: if(! (KeyVal&ConstKEY6)) { KeyVal=Count+1; } break; case6: if(! (KeyVal&ConstKEY7)) { KeyVal=Count+1; } break; case7: if(! (KeyVal&ConstKEY8)) { KeyVal=Count+1; } break; } returnKeyVal; } //KEY1放键事件处理 voidKeyboardObj: : Key01(void) { Lcd.SetDisplayPos(3,0);//汉字定位到上行左端 Lcd.Display("KEY1键释放事件"); } //KEY2放键事件处理 voidKeyboardObj: : Key02(void) { Lcd.SetDisplayPos(3,0);//汉字定位到上行左端 Lcd.Display("KEY2键释放事件"); } //KEY3放键事件处理 voidKeyboardObj: : Key03(void) { Lcd.SetDisplayPos(3,0);//汉字定位到上行左端 Lcd.Display("KEY3键释放事件"); } //KEY4放键事件处理 voidKeyboardObj: : Key04(void) { Lcd.SetDisplayPos(3,0);//汉字定位到上行左端 Lcd.Display("KEY4键释放事件"); } //KEY5放键事件处理 voidKeyboardObj: : Key05(void) { Lcd.SetDisplayPos(3,0);//汉字定位到上行左端 Lcd.Display("KEY5键释放事件"); } //KEY6放键事件处理 voidKeyboardObj: : Key06(void) { Lcd.SetDisplayPos(3,0);//汉字定位到上行左端 Lcd.Display("KEY6键释放事件"); } //KEY7放键事件处理 voidKeyboardObj: : Key07(void) { Lcd.SetDisplayPos(3,0);//汉字定位到上行左端 Lcd.Display("KEY7键释放事件"); } //KEY8放键事件处理 voidKeyboardObj: : Key08(void) { Lcd.SetDisplayPos(3,0);//汉字定位到上行左端 Lcd.Display("KEY8键释放事件"); } //KEY1压键事件处理 voidKeyboardObj: : Key11(void) { //特别注意菜农的组合键用法,可以看出"零耗时键盘"的非典之处 if(PressCount[7]>=KeyboardPushTimes)//KEY8已先压下 { Key8_Key1();//执行KEY8_KEY1组合键事件 } else { // System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY1键单击事件"); } } //KEY2压键事件处理 voidKeyboardObj: : Key12(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY2键单击事件"); } //KEY3压键事件处理 voidKeyboardObj: : Key13(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY3键单击事件"); } //KEY4压键事件处理 voidKeyboardObj: : Key14(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY4键单击事件"); } //KEY5压键事件处理 voidKeyboardObj: : Key15(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY5键单击事件"); } //KEY6压键事件处理 voidKeyboardObj: : Key16(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY6键单击事件"); } //KEY7压键事件处理 voidKeyboardObj: : Key17(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY7键单击事件"); } //KEY8压键事件处理 voidKeyboardObj: : Key18(void) { //特别注意菜农的组合键用法,可以看出"零耗时键盘"的非典之处 if(PressCount[0]>=KeyboardPushTimes)//KEY1已先压下 { Key1_Key8();//执行KEY1_KEY8组合键事件 } else { // System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY8键单击事件"); } } //KEY1长压键事件处理 voidKeyboardObj: : Key21(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY1键长压事件"); } //KEY2长压键事件处理 voidKeyboardObj: : Key22(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY2键长压事件"); } //KEY3长压键事件处理 voidKeyboardObj: : Key23(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY3键长压事件"); } //KEY4长压键事件处理 voidKeyboardObj: : Key24(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY4键长压事件"); } //KEY5长压键事件处理 voidKeyboardObj: : Key25(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY5键长压事件"); } //KEY6长压键事件处理 voidKeyboardObj: : Key26(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY6键长压事件"); } //KEY7长压键事件处理 voidKeyboardObj: : Key27(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY7键长压事件"); } //KEY8长压键事件处理 voidKeyboardObj: : Key28(void) { System.BeepOn(); Lcd.SetDisplayPos(2,0);//汉字定位到上行左端 Lcd.Display("KEY8键长压事件"); } //KEY1-KEY8组合键事件处理 voidKeyboardObj: : Key1_Key8(void) { Lcd.SetDisplayPos(1,0);//汉字定位到上行左端 Lcd.Display("KEY1KEY8键事件"); } //KEY8-KEY1组合键事件处理 voidKeyboardObj: : Key8_Key1(void) { Lcd.SetDisplayPos(1,0);//汉字定位到上行左端 Lcd.Display("KEY8KEY1键事件"); } 类别: Dsp| |添加到搜藏|分享到i贴吧|浏览(247)|评论 (0) 上一篇: DSP281x_Adc.h修改以便访问 下一篇: DSP2812串口波特率正确和良好的... 最近读者: 欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 键盘C语言程序 键盘 语言 程序 word