打印

单片机控制设备,有十几个按键,每按一次按键蜂鸣器就响一声

[复制链接]
5385|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lihui567|  楼主 | 2016-8-17 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lpzailushang| | 2016-9-6 08:45 | 只看该作者
这个比较简单,你是做什么的

使用特权

评论回复
板凳
lihui567|  楼主 | 2016-9-17 16:38 | 只看该作者
就是一个按键控制的的小仪器,

使用特权

评论回复
地板
billliu66| | 2016-9-23 21:59 | 只看该作者
我以前设计的一台仪器的程序中有类似的东西,看下这个函数**********************************************************************
Function name: SetParameter()
Parameter:void
Return: void
Description: set test parameter
Version: 0.0
Author:Bill Liu
Last update date: 2015/10
**********************************************************************/
void SetParameter()
{
        static ui8 spt = 0;    //define first into set parameter interface flag
        static ui8 spn = 1;   // define parameter number variable
        static ui8 i = 0;
        ui8 ktem = 0;   //define keyboard in temp variable
  if(spt == 0)
        {       
                Soundbell100ms();
                LCDClearScreen();   // clear screen
                memset(interface.String,0,strlen(interface.String));
                spt = 1;
                LCDDisplayString(1, 0,"Dis:");
                LCDDisplayString(1, 10,"II:");
          LCDDisplayString(2, 0,"Speed:");
          LCDDisplayString(3, 0,"Freq:");
          LCDDisplayString(4, 0,"T_Cycle:");
                Displayfloat(1,4,parameter.Displacement,1);
                DisplayLongInt(1,13,parameter.WCycles);
                DisplayLongInt(2,6,parameter.SpeedL);
                DisplayLongInt(3,5,parameter.SpeedC);
                DisplayLongInt(4,8,parameter.TCycleValue);
                LCDCurPOn(1, 4);
        }
        Delayxms(200,SYSCLOCK);
        ktem = GetKeyboardIn();
        switch(ktem)
        {
                case 0x70: //F1 key down
                        spt = 0;
                        interface.flag = 'P'; //to set accelerate interface
                        break;
                case 0x26: //Arrow(up) key down
                        Soundbell100ms();
                        switch(spn)
                        {
                                case 1:
                                        memset(interface.String,0,strlen(interface.String));
                                  i = 0;
                                        LCDDisplayString(1,4,"     ");
                                        Displayfloat(1,4,parameter.Displacement,1);
                                        spn = 5;
                                        LCDCurPOn(4, 8);
                                        break;
                                case 2:
                                        memset(interface.String,0,strlen(interface.String));
                                        i = 0;
                                        LCDDisplayString(1,13,"       ");
                                        DisplayLongInt(1,13,parameter.WCycles);
                                        spn = 1;
                                        LCDCurPOn(1, 4);
                                        break;
                                case 3:
                                        memset(interface.String,0,strlen(interface.String));
                                        i = 0;
                                        LCDDisplayString(2,6,"              ");
                                        DisplayLongInt(2,6,parameter.SpeedL);
                                        spn = 2;
                                        LCDCurPOn(1, 13);
                                        break;
                                case 4:
                                        memset(interface.String,0,strlen(interface.String));
                                        i = 0;
                                        LCDDisplayString(3,5,"               ");
                                        DisplayLongInt(3,5,parameter.SpeedC);
                                        spn = 3;
                                        LCDCurPOn(2, 6);
                                        break;
                                case 5:
                                        memset(interface.String,0,strlen(interface.String));
                                        i = 0;
                                        LCDDisplayString(4,8,"            ");
                                        DisplayLongInt(4,8,parameter.TCycleValue);
                                        spn = 4;
                                        LCDCurPOn(3, 5);
                                        break;
                        }
                        break;
                case 0x28: //Arrow(down) key down
                        Soundbell100ms();
                        switch(spn)
                        {
                                case 1:
                                        memset(interface.String,0,strlen(interface.String));
                                  i = 0;
                                        LCDDisplayString(1,4,"     ");
                                        Displayfloat(1,4,parameter.Displacement,1);
                                        spn = 2;
                                        LCDCurPOn(1, 13);
                                        break;
                                case 2:
                                        memset(interface.String,0,strlen(interface.String));
                                        i = 0;
                                        LCDDisplayString(1,13,"       ");
                                        DisplayLongInt(1,13,parameter.WCycles);
                                        spn = 3;
                                        LCDCurPOn(2, 6);
                                        break;
                                case 3:
                                        memset(interface.String,0,strlen(interface.String));
                                        i = 0;
                                        LCDDisplayString(2,6,"              ");
                                        DisplayLongInt(2,6,parameter.SpeedL);
                                        spn = 4;
                                        LCDCurPOn(3, 5);
                                        break;
                                case 4:
                                        memset(interface.String,0,strlen(interface.String));
                                        i = 0;
                                        LCDDisplayString(3,5,"               ");
                                        DisplayLongInt(3,5,parameter.SpeedC);
                                        spn = 5;
                                        LCDCurPOn(4, 8);
                                        break;
                                case 5:
                                        memset(interface.String,0,strlen(interface.String));
                                        i = 0;
                                        LCDDisplayString(4,8,"            ");
                                        DisplayLongInt(4,8,parameter.TCycleValue);
                                        spn = 1;
                                        LCDCurPOn(1, 4);
                                        break;
                        }
                        break;
                case 0x1B: //Esc key down
                        spt = 0;
                        spn = 1;
                  i = 0;
                  LCDCurOff();
                  GetSpeedL(parameter.SpeedC, parameter.Displacement);
                        if(parameter.SpeedL>7500)
                        {
                                parameter.SpeedL = 7500;
                                if(mode.testmode == 1)
                                        parameter.SpeedC = parameter.SpeedL * 30 / parameter.Displacement;
                        }
                        InitPCAflag = 0;
                        interface.flag = '2'; //enter new test interface
                        break;
                case 0x6C://Enter key down
                        Soundbell100ms();
                        switch(spn)
                        {
                                case 1:
                                        if(interface.String[0] != 0)
                                                parameter.Displacement = atof(interface.String);
                                        memset(interface.String,0,strlen(interface.String));
                                        if(parameter.Displacement <0.1 )
                                                parameter.Displacement = 0.1;
                                        else if(parameter.Displacement > 100)
                                                parameter.Displacement = 98;
                                  i = 0;
                                        LCDDisplayString(1,4,"     ");
                                        Displayfloat(1,4,parameter.Displacement,1);
                                        spn = 2;
                                        LCDCurPOn(1, 13);
                                  break;
                                case 2:
                                        if(interface.String[0] != 0)
                                                parameter.WCycles = atol(interface.String);
                                        memset(interface.String,0,strlen(interface.String));
                                  i = 0;
                                        LCDDisplayString(1,13,"       ");
                                        DisplayLongInt(1,13,parameter.WCycles);
                                        if(mode.Warning != 0)
                                        {
                                                        parameter.Wcounts = parameter.Tcounts + parameter.WCycles;
                                        }
                                        spn = 3;
                                        LCDCurPOn(2, 6);
                                  break;
                                case 3:
                                        if(interface.String[0] != 0)
                                                parameter.SpeedL = atol(interface.String);
                                        memset(interface.String,0,strlen(interface.String));
                                  if(parameter.SpeedL < 23)
                                                parameter.SpeedL = 23;
                                        else if(parameter.SpeedL > 7500)
                                                parameter.SpeedL = 7500;
                                        memset(interface.String,0,strlen(interface.String));
                                  i = 0;
                                        LCDDisplayString(2,6,"              ");
                                        DisplayLongInt(2,6,parameter.SpeedL);
                                        spn = 4;
                                        LCDCurPOn(3, 5);
                                        break;
                                case 4:
                                        if(interface.String[0] != 0)
                                                parameter.SpeedC = atol(interface.String);
                                        memset(interface.String,0,strlen(interface.String));
                                        if(parameter.SpeedC>7200)
                                                parameter.SpeedC = 7200;
                                        memset(interface.String,0,strlen(interface.String));
                                  i = 0;
                                        LCDDisplayString(3,5,"               ");
                                        DisplayLongInt(3,5,parameter.SpeedC);
                                        spn = 5;
                                        LCDCurPOn(4, 8);
                                        break;
                                case 5:
                                        if(interface.String[0] != 0)
                                                parameter.TCycleValue = atol(interface.String);
                                        memset(interface.String,0,strlen(interface.String));
                                        if(parameter.TCycleValue > 1000000)
                                                parameter.TCycleValue = 1000000;
                                        memset(interface.String,0,strlen(interface.String));
                                  i = 0;
                                        LCDDisplayString(4,8,"            ");
                                        DisplayLongInt(4,8,parameter.TCycleValue);
                                        spn = 1;
                                        LCDCurPOn(1, 4);
                                        break;
                        }
                        break;
                default:
                        if(ktem > 0x29 && ktem <=0x39 )
                        {
                                Soundbell100ms();
                                interface.String[i] = ktem;
                                i++;
                                switch(spn)
                                {
                                        case 1:
                                                LCDDisplayString(1,4,"     ");
                                                LCDDisplayString(1,4,interface.String);
                                          break;
                                        case 2:
                                                LCDDisplayString(1,13,"       ");
                                                LCDDisplayString(1,13,interface.String);
                                          break;
                                        case 3:
                                                LCDDisplayString(2,6,"              ");
                                                LCDDisplayString(2,6,interface.String);
                                          break;
                                        case 4:
                                                LCDDisplayString(3,5,"               ");
                                                LCDDisplayString(3,5,interface.String);
                                          break;
                                        case 5:
                                                LCDDisplayString(4,8,"            ");
                                                LCDDisplayString(4,8,interface.String);
                                          break;
                                }
                        }
                        break;
        }
}
//End of function SetParameter()

使用特权

评论回复
5
lihui567|  楼主 | 2016-9-24 11:50 | 只看该作者
这个是不是触摸屏的一块程序啊

使用特权

评论回复
6
liufabing| | 2016-10-31 15:28 | 只看该作者
什么蜂鸣器,有源?无源?
按键触发后,调用蜂鸣器使能函数就好(同时启动蜂鸣器输出计时,100毫秒后关闭蜂鸣器就好).

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

54

主题

3745

帖子

20

粉丝