键盘C语言程序.docx

上传人:b****6 文档编号:4589179 上传时间:2022-12-07 格式:DOCX 页数:10 大小:19.53KB
下载 相关 举报
键盘C语言程序.docx_第1页
第1页 / 共10页
键盘C语言程序.docx_第2页
第2页 / 共10页
键盘C语言程序.docx_第3页
第3页 / 共10页
键盘C语言程序.docx_第4页
第4页 / 共10页
键盘C语言程序.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

键盘C语言程序.docx

《键盘C语言程序.docx》由会员分享,可在线阅读,更多相关《键盘C语言程序.docx(10页珍藏版)》请在冰豆网上搜索。

键盘C语言程序.docx

键盘C语言程序

键盘C语言程序

查看文章

 

在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串口波特率正确和良好的...

 

最近读者:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1