找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3913|回复: 0
打印 上一主题 下一主题
收起左侧

stm32航模无刷电机遥控驱动程序-里面有很多模块lcd键盘24l01主机和丛机程序一体

[复制链接]
跳转到指定楼层
楼主
ID:130231 发表于 2017-5-10 15:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32航模无刷电机遥控驱动程序-里面有很多模块lcd键盘24l01主机和丛机程序一体

单片机源码:
  1. #include "Defineall.h"
  2. #include "stm32f10x.h"
  3. #include "stdio.h"
  4. uchar Key_NumberKeyInputTimes=0;

  5. void Key_Init(void)
  6. {
  7.         GPIO_InitTypeDef        GPIO_InitStructure;
  8.         EXTI_InitTypeDef        EXTI_InitStructure;
  9.         NVIC_InitTypeDef        NVIC_InitStructure;
  10.        
  11.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
  12.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//键盘纵轴,用作中断输入(下拉电阻,上升沿)
  13.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;
  14.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  15.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//键盘横轴,输出
  16.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  17.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
  18.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  19.        
  20.         GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);//拉高X轴

  21.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource12);                //将GPIO连接到外部中断
  22.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource13);
  23.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);
  24.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource15);
  25.        
  26.         EXTI_InitStructure.EXTI_Line=EXTI_Line12|EXTI_Line13|EXTI_Line14|EXTI_Line15;//Y轴做中断
  27.         EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
  28.         EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿
  29.         EXTI_InitStructure.EXTI_LineCmd=ENABLE;
  30.         EXTI_Init(&EXTI_InitStructure);
  31. //        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  32.         NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
  33.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
  34.         NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
  35.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  36.         NVIC_Init(&NVIC_InitStructure);
  37. }
  38. void EXTI15_10_IRQHandler(void)
  39. {
  40.         char KeyValue=0;
  41.         uint16_t KeyValueStatus=0;
  42.         uchar KeyValueY=0,KeyValueX=0;
  43.         uchar Times=0;
  44.         uint TestKeyValue=GPIO_Pin_6;
  45.         EXTI_ClearITPendingBit(EXTI_Line12|EXTI_Line13|EXTI_Line14|EXTI_Line15);//复位中断挂起标志位,防止因为中断挂起标志位置位,反复进入中断
  46.         EXTI->IMR&=~(EXTI_Line12|EXTI_Line13|EXTI_Line14|EXTI_Line15);//暂时关闭中断,防止抖动触发中断,待处理完成后再次开启中断
  47.         DelayMs(30);//消除抖动
  48.         if((GPIO_ReadInputData(GPIOB)&0XF000)!=0X0000)//检查是否按键仍旧处于按下状态。无按键按下时GPIOB Bit15_12(下拉电阻)的值都为低。
  49.         {
  50.                 //Led亮
  51.                 KeyValueStatus=GPIO_ReadInputData(GPIOB);
  52.                 KeyValueY=(uchar)(KeyValueStatus>>12)&0X0F;
  53.                 for(Times=0;Times<4;Times++)        //检测纵轴
  54.                 {
  55.                         if((KeyValueY&0X01)==0X01)
  56.                         {
  57.                                 KeyValueY=Times*4;
  58.                                 break;
  59.                         }
  60.                         KeyValueY=KeyValueY>>1;
  61.                 }
  62.                 for(Times=0;Times<4;Times++)//检测横轴
  63.                 {
  64.                         GPIO_ResetBits(GPIOB,TestKeyValue);
  65.                         if((GPIO_ReadInputData(GPIOB)&0XF000)==0X0000)
  66.                         {
  67.                                 KeyValueX=Times+1;
  68.                                 break;
  69.                         }
  70.                         TestKeyValue=TestKeyValue<<1;
  71.                 }
  72.                 KeyValue=KeyValueX+KeyValueY;
  73.                 GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);//拉高X轴
  74.                 do
  75.                 {
  76.                         KeyValueStatus=GPIO_ReadInputData(GPIOB)&0XF000;
  77.                         DelayMs(1);
  78.                 }
  79.                 while(KeyValueStatus==0X0000);//等待按键释放
  80.                 //led灭
  81. //                printf("KeyValueY:%d\n",KeyValueY+KeyValueX);
  82.                         Key_Redefine((char)KeyValue);
  83.         }
  84.         EXTI->IMR|=(EXTI_Line12|EXTI_Line13|EXTI_Line14|EXTI_Line15);//开启中断
  85. }
  86. /***************************
  87. 按键分布
  88. 1        2        3 Enter                                //        1                2                3                4
  89. 4        5        6        Return                        //        5                6                7                8
  90. 7        8        9        Delete                        //        9                10        11        12
  91.                 0                        Home                        //        13        14        15        16
  92. ****************************/
  93. void Key_Redefine(uchar KeyValue)//重定义按键
  94. {
  95.         switch(KeyValue)
  96.         {
  97.                 case        1:        KeyValue=1;break;
  98.                 case        2:        KeyValue=2;break;
  99.                 case        3:        KeyValue=3;break;
  100.                 case        4:        KeyValue=KeyEnter;break;//11
  101.                 case        5:        KeyValue=4;break;
  102.                 case        6:        KeyValue=5;break;
  103.                 case        7:        KeyValue=6;break;
  104.                 case        8:        KeyValue=KeyReturn;break;//12
  105.                 case        9:        KeyValue=7;break;
  106.                 case        10:        KeyValue=8;break;
  107.                 case        11:        KeyValue=9;break;
  108.                 case        12:        KeyValue=KeyDelete;break;//13
  109.                 case        13:        KeyValue=KeyUp;break;//15
  110.                 case        14:        KeyValue=0;break;
  111.                 case        15:        KeyValue=KeyDown;break;//16
  112.                 case        16:        KeyValue=KeyHome;break;//14
  113.                 default:break;
  114.         }
  115.         printf("键值是:%d\n",KeyValue);
  116.         Key_Check(KeyValue);
  117. }
  118. void Key_Check(uchar KeyValue)//检查当前页面,以确定需要传递处理和屏蔽的干扰按键
  119. {
  120.         uchar LcdPageChecked=Lcd_PageStatusCheck();
  121.         switch(LcdPageStatus)
  122.         {
  123.                 case Lcd_LogoPage:       
  124.                 {
  125.                         Key_Proccess(LcdPageChecked,KeyValue);
  126.                         break;               
  127.                 }
  128.                
  129.                 case        Lcd_PasswordInputPage:
  130.                 {
  131.                                 if((KeyValue!=KeyUp)||(KeyValue!=KeyDown))
  132.                                 {
  133.                                         Key_Proccess(LcdPageChecked,KeyValue);
  134.                                 }
  135.                                 break;
  136.                 }
  137.                        
  138.                 case Lcd_MainPage:       
  139.                 {
  140.                                 if((KeyValue!=KeyDelete)||(KeyValue!=KeyEnter))
  141.                                 {
  142.                                         Key_Proccess(LcdPageChecked,KeyValue);
  143.                                 }                                       
  144.                                 break;
  145.                 }
  146.                 case Lcd_PasswordRightPage:
  147.                 {
  148.                                 Key_Proccess(LcdPageChecked,KeyValue);
  149.                                 break;
  150.                 }
  151.                 case Lcd_PasswordFaultPage:
  152.                 {
  153.                         Key_Proccess(LcdPageChecked,KeyValue);
  154.                         break;
  155.                 }
  156.                 default:break;
  157.         }
  158. }
  159. void Key_ClearInputInformation(void)//清除输入信息
  160. {
  161.         uchar Times=0;
  162.         Key_NumberKeyInputTimes=0;
  163.         for(Times=0;Times<MotorPasswordLength;Times++)
  164.         {
  165.                 MotorPassWordInput[Times]=0;
  166.         }
  167. }
  168. void Lcd_RefreshCommandStatus(uchar Selection)
  169. {
  170.                 Lcd_ClearScreen(1,1,16);
  171.                 if(Selection==1)
  172.                 {
  173.                         Lcd_PrintString(1,1,"Rsing");
  174.                 }
  175.                 else if(Selection==0)
  176.                 {
  177.                         Lcd_PrintString(1,1,"Downiing");                       
  178.                 }
  179.                 else
  180.                 {
  181.                         Lcd_PrintString(1,1,"No Operation");                                       
  182.                 }
  183.                 Lcd_PrintAByte(4,6,Motor_PowerLevelSatatus+0x30);
  184.                 Lcd_DisplayPosition(4,8);
  185.                 Lcd_PrintString(4,1,"Th");
  186.                 //Lcd_PrintAByte(4,7,'%');
  187. }
  188. void Key_Proccess(uchar PageStatusChecked,uchar KeyValue)
  189. {
  190.         uchar Times=0;
  191.         switch(PageStatusChecked)
  192.         {
  193.                 case Lcd_LogoPage:
  194.                         if(MotorPasswordRightFlag==1)
  195.                         {
  196.                                 Lcd_PageCreate(Lcd_MainPage);
  197.                         }
  198.                         else
  199.                         {
  200.                                 Lcd_PageCreate(Lcd_PasswordInputPage);
  201.                         }
  202.                 break;
  203.                        
  204.                 case Lcd_MainPage:
  205.                 if(KeyValue>9)
  206.                 {
  207.                         switch(KeyValue)
  208.                         {
  209.                                 case KeyHome:
  210.                                         Motor_PowerLevelSatatus=0;
  211.                                         Motor_PowerLevelSatatus=0;
  212.                                         Motor_PowerLevelPast=0;
  213.                                         Lcd_PageCreate(Lcd_LogoPage);
  214.                                         Motor_SendCammand(Motor_SetPowerLevel,Motor_PowerLevelSatatus);                        //发送
  215.                                         printf("已经向从机发送了将至最低功率命令\n");
  216.                                 break;
  217.                                 case KeyReturn:
  218.                                         Motor_PowerLevelSatatus=0;
  219.                                         Motor_PowerLevelPast=0;
  220.                                         Lcd_PageCreate(Lcd_LogoPage);
  221.                                         Motor_SendCammand(Motor_SetPowerLevel,Motor_PowerLevelSatatus);                        //发送
  222.                                         printf("已经向从机发送了将至最低功率命令\n");
  223.                                 break;
  224.                                
  225.                                 case KeyDelete:__nop();break;
  226.                                 case KeyEnter:__nop();break;
  227.                                
  228.                                 case KeyUp:
  229.                                         if(Motor_PowerLevelSatatus>=9)
  230.                                         {
  231.                                                 Motor_PowerLevelSatatus=9;
  232.                                                 Lcd_RefreshCommandStatus(2);//无操作
  233.                                                 Motor_SendCammand(Motor_SetMotorPowerHigher,Motor_PowerLevelSatatus);                                                //发送
  234.                                                 printf("已经向从机发送了无操作命令\n");
  235.                                         }
  236.                                         else
  237.                                         {
  238.                                                 Lcd_RefreshCommandStatus(1);        //显示加速
  239.                                                 Motor_PowerLevelSatatus++;
  240.                                                 Motor_SendCammand(Motor_SetMotorPowerHigher,Motor_PowerLevelSatatus);                                                //发送
  241.                                                 printf("已经向从机发送了加速命令\n");
  242.                                         }                                                       
  243.                                 break;
  244.                                        
  245.                                 case KeyDown:
  246.                                         if(Motor_PowerLevelSatatus<=0)               
  247.                                         {
  248.                                                 Motor_PowerLevelSatatus=0;
  249.                                                 Lcd_RefreshCommandStatus(2);//无操作
  250.                                                 Motor_SendCammand(Motor_SetMotorPowerLower,Motor_PowerLevelSatatus);                                                //发送
  251.                                                 printf("已经向从机发送了无操作命令\n");
  252.                                         }
  253.                                         else
  254.                                         {
  255.                                                 Lcd_RefreshCommandStatus(0);//显示减速
  256.                                                 Motor_PowerLevelSatatus--;
  257.                                                 Motor_SendCammand(Motor_SetMotorPowerLower,Motor_PowerLevelSatatus);                                                //发送
  258.                                                 printf("已经向从机发送了减速命令\n");
  259.                                         }                                                       
  260.                                 break;
  261.                                 default:break;
  262.                         }
  263.                 }
  264.                 else
  265.                 {
  266.                                 Motor_PowerLevelPast=Motor_PowerLevelSatatus;
  267.                                 Motor_PowerLevelSatatus=KeyValue;
  268.                                 if(Motor_PowerLevelPast<Motor_PowerLevelSatatus)
  269.                                 {
  270.                                                 Lcd_RefreshCommandStatus(1);//显示提速
  271.                                                 printf("已将功率大小信息发送到从机(提速)\n");
  272.                                 }
  273.                                 if(Motor_PowerLevelPast>Motor_PowerLevelSatatus)
  274.                                 {
  275.                                                 Lcd_RefreshCommandStatus(0);//显示减速
  276.                                                 printf("已将功率大小信息发送到从机(减速)\n");
  277.                                 }
  278.                                 if(Motor_PowerLevelPast==Motor_PowerLevelSatatus)
  279.                                 {
  280.                                         Lcd_RefreshCommandStatus(2);//显示无操作
  281.                                                 printf("已将功率大小信息发送到从机(无操作)\n");
  282.                                 }
  283.                                 Motor_SendCammand(Motor_SetPowerLevel,Motor_PowerLevelSatatus);                        //发送
  284.                 }
  285.                 break;
  286.                
  287.                 case Lcd_PasswordInputPage:
  288.                         if(KeyValue>9)
  289.                         {
  290.                                 switch(KeyValue)
  291.                                 {
  292.                                         case KeyDelete:
  293.                                                 Key_ClearInputInformation();//        清除输入信息
  294.                                                 Lcd_PageCreate(Lcd_PasswordInputPage);//返回重新输入                                               
  295.                                         break;
  296.                                        
  297.                                         case        KeyHome:
  298.                                                 Key_ClearInputInformation();//        清除输入信息
  299.                                                 Lcd_PageCreate(Lcd_LogoPage);//返回logo               
  300.                                         break;                                       
  301.                                        
  302.                                         case        KeyReturn:
  303.                                                 Key_ClearInputInformation();//        清除输入信息
  304.                                                 Lcd_PageCreate(Lcd_LogoPage);//返回logo                                       
  305.                                         break;               

  306.                                         case KeyEnter:
  307.                                                 if((Key_NumberKeyInputTimes==MotorPasswordLength)&&(Motor_CheckPassword()==1))//密码正确,验证输入次数的目的是防止密码是8个0
  308.                                                 {
  309.                                                         Key_ClearInputInformation();
  310.                                                         Lcd_PageCreate(Lcd_PasswordRightPage);
  311.                                                         Motor_SendCammand(Motor_InitESC,1);
  312.                                                         DelayMs(5000);//等待电调初始化才能操作
  313.                                                         Lcd_PageCreate(Lcd_MainPage);//进入主菜单
  314.                                                         printf("已经向从机发送了解锁命令\n");
  315.                                                 }               
  316.                                                 else
  317.                                                 {
  318.                                                         Key_ClearInputInformation();
  319.                                                         Lcd_PageCreate(Lcd_PasswordFaultPage);//进入输入密码出错页面
  320.                                                 }
  321.                                         break;
  322.                                         default:break;
  323.                                 }
  324.                         }
  325.                         else//数字输入
  326.                         {
  327.                                 Key_NumberKeyInputTimes=Key_NumberKeyInputTimes+1;
  328.                                 printf("输入数字次数是:%d\n",Key_NumberKeyInputTimes);
  329.                                 if(Key_NumberKeyInputTimes>8)
  330.                                 {
  331.                                                 Key_NumberKeyInputTimes=0;
  332.                                 }
  333.                                 else
  334.                                 {
  335.                                         MotorPassWordInput[Key_NumberKeyInputTimes-1]        =KeyValue;                               
  336.                                         Lcd_DisplayPosition(4,Key_NumberKeyInputTimes);                       
  337.                                         Lcd_WriteAByte(0,MotorPassWordInput[Key_NumberKeyInputTimes-1]+0X30);
  338.                                         Lcd_DisplayPosition(4,Key_NumberKeyInputTimes);                       
  339.                                         Lcd_WriteAByte(0,MotorPassWordInput[Key_NumberKeyInputTimes-1]+0X30);
  340.                                         for(Times=0;Times<8;Times++)
  341.                                         {
  342.                                                 printf("输入的密码是:%d\n",MotorPassWordInput[Times]);
  343.                                         }
  344.                                 }
  345.                         }
  346.                         break;
  347.                        
  348.                         case Lcd_PasswordFaultPage:
  349.                                 Lcd_PageCreate(Lcd_PasswordInputPage);
  350.                         break;
  351.                        
  352.                         case Lcd_PasswordRightPage:
  353.                                 if(Motor_BSCInitCompleteFlag==1)//电调没完成初始化时用户不能自行操作,要等待系统完成初始化后自动返回.
  354.                                 {
  355.                                         switch(KeyValue)
  356.                                         {
  357.                                                 case KeyHome:Lcd_PageCreate(Lcd_LogoPage);break;
  358.                                                 case KeyReturn:Lcd_PageCreate(Lcd_LogoPage);break;
  359.                                                 default:break;
  360.                                         }
  361.                                 }
  362.                                 else       
  363.                                 {
  364.                                         __nop();
  365.                                 }
  366.                         break;
  367.                         default:break;
  368.         }
  369. }

  370. //void Key_Proccess(char KeyValue)
  371. //{
  372. //        uchar Key_NumberInputFlag=1;
  373. //        if(KeyValue>9)
  374. //        {
  375. //                Key_NumberInputFlag=0;//我规定了键0-9是数字键.11-16是功能键
  376. //        }
  377. //        //下面启动页的
  378. //        switch(KeyValue)
  379. //        {
  380. //                case Lcd_LogoPage:
  381. //                {
  382. //                        if(Motor_CheckPassword()==1)//先检查密码是否正确
  383. //                        {
  384. //                                Lcd_PageCreate(Lcd_MainPage);
  385. //                        }
  386. //                        else
  387. //                        {
  388. //                                        Lcd_PageCreate(Lcd_PasswordInputPage);
  389. //                        }
  390. //                        break;
  391. //                }

  392. ////下面是密码输入正确的页面       
  393. //                case Lcd_PasswordRightPage:
  394. //                {
  395. //                        Lcd_PageCreate(Lcd_MainPage);//进入调速页
  396. //                        break;               
  397. //                }
  398. ////密码输入错误页面
  399. //                case Lcd_PasswordFaultPage:
  400. //                {
  401. //                        switch(KeyValue)
  402. //                        {
  403. //                                case KeyReturn:Lcd_PageCreate(Lcd_PasswordInputPage);break;
  404. //                                case        KeyHome:Lcd_PageCreate(Lcd_LogoPage);break;
  405. //                                case KeyEnter:Lcd_PageCreate(Lcd_PasswordInputPage);break;
  406. //                                default:break;
  407. //                        }
  408. //                        break;
  409. //                }
  410. ////密码输入页面
  411. //                case        Lcd_PasswordInputPage:
  412. //                {
  413. //                        if(Key_NumberInputFlag==1)//检查是否是数字输入
  414. //                        {
  415. //                                Key_NumberKeyInputTimes++;//开启数字进入次数计数;
  416. //                                        if(Key_NumberKeyInputTimes<=MotorPasswordLength)
  417. //                                        {
  418. //                                                MotorPassWordInput[Key_NumberKeyInputTimes-1]        =KeyValue;       
  419. //                                                Lcd_PrintAByte(4,Key_NumberKeyInputTimes,MotorPassWordInput[Key_NumberKeyInputTimes-1]+0X30);
  420. //                                        }       
  421. //                                        if(Key_NumberKeyInputTimes>=MotorPasswordLength)
  422. //                                        {
  423. //                                                Key_NumberKeyInputTimes=0;
  424. //                                        }
  425. //                        }
  426. //                        else
  427. //                        {
  428. //                                switch(KeyValue)
  429. //                                {
  430. //                                        case KeyReturn:
  431. //                                        {
  432. //                                                Lcd_PageCreate(Lcd_LogoPage);
  433. //                                                Key_ClearInputInformation();
  434. //                                                break;
  435. //                                        }
  436. //                                        case        KeyHome:
  437. //                                        {
  438. //                                                Lcd_PageCreate(Lcd_LogoPage);
  439. //                                                Key_ClearInputInformation();
  440. //                                                break;                                               
  441. //                                        }
  442. //                                        case KeyEnter:
  443. //                                        {
  444. //                                                if((Key_NumberKeyInputTimes==MotorPasswordLength)&&(Motor_CheckPassword()==1))//密码正确,验证输入次数的目的是防止密码是8个0
  445. //                                                {
  446. //                                                        Key_ClearInputInformation();
  447. //                                                        Lcd_PageCreate(Lcd_MainPage);//进入主菜单
  448. //                                                }
  449. //                                                break;
  450. //                                        }
  451. //                                        case KeyDelete:
  452. //                                        {
  453. //                                                Key_ClearInputInformation();//        清除输入信息
  454. //                                                Lcd_PageCreate(Lcd_PasswordInputPage);//返回重新输入
  455. //                                                break;
  456. //                                        }
  457. //                                        default:break;
  458. //                                }
  459. //                        }
  460. //                        break;
  461. //                }
  462. ////下面是主页的       
  463. //                case Lcd_MainPage:
  464. //                {
  465. //                        if((KeyValue==KeyReturn)||(KeyValue==KeyHome))
  466. //                        {
  467. //                                Lcd_PageCreate(Lcd_LogoPage);
  468. //                                Key_ClearInputInformation();
  469. //                        }
  470. //                        break;
  471. //                }

  472. //                default:break;
  473. //        }
  474. //}


  475. //void Key_Proccess(char KeyValue)
  476. //{
  477. //        uchar Motor_PowerLevelPast=0;
  478. //        switch(LcdPageStatus)
  479. //        {
  480. //                case Lcd_LogoPage:       
  481. //                {
  482. //                                if(Motor_CheckPassword())
  483. //                                {
  484. //                                        Lcd_PageCreate(Lcd_MainPage);                                       
  485. //                                }
  486. //                                else
  487. //                                {
  488. //                                        Lcd_PageCreate(Lcd_PasswordInputPage);                               
  489. //                                }
  490. //                                break;
  491. //                }
  492. //               
  493. //                case        Lcd_PasswordInputPage:                       
  494. //                {
  495. ////                                if((KeyValue>=0)||(KeyValue<=9))//数字输入
  496. //                        switch(KeyValue)
  497. //                        {
  498. //                                case KeyEnter:
  499. //                                {
  500. //                                        if(Key_NumberKeyInputTimes==MotorPasswordLength)
  501. //                                        {
  502. //                                                if(Motor_CheckPassword()==1)//密码正确
  503. //                                                {
  504. //                                                        //提示密码正确,等待机器初始化
  505. //                                                        Key_ClearInputInformation();
  506. //                                                        Lcd_PageCreate(Lcd_PasswordRightPage);
  507. //                                                }
  508. //                                                else
  509. //                                                {
  510. //                                                        //页面提示密码错误,清楚输入并返回输入界面
  511. //                                                        Key_ClearInputInformation();
  512. //                                                        Lcd_PageCreate(Lcd_PasswordFaultPage);
  513. //                                                }
  514. //                                        }                                       
  515. //                                        break;
  516. //                                }
  517. //                               
  518. //                                case KeyDelete:
  519. //                                {
  520. //                                        Key_ClearInputInformation();
  521. //                                        Lcd_PageCreate(Lcd_PasswordInputPage);                                               
  522. //                                        break;
  523. //                                }
  524. //                                case KeyHome:
  525. //                                {
  526. //                                        Key_ClearInputInformation();
  527. //                                        Lcd_PageCreate(Lcd_LogoPage);                                               
  528. //                                        break;
  529. //                                }
  530. //                               
  531. //                                case KeyReturn:
  532. //                                {
  533. //                                        Key_ClearInputInformation();
  534. //                                        Lcd_PageCreate(Lcd_LogoPage);                                               
  535. //                                        break;
  536. //                                }
  537. //                               
  538. //                                default:
  539. //                                {
  540. //                                        Key_NumberKeyInputTimes++;
  541. //                                        if(Key_NumberKeyInputTimes<=MotorPasswordLength)
  542. //                                        {
  543. //                                                MotorPassWordInput[Key_NumberKeyInputTimes-1]        =KeyValue;       
  544. //                                                Lcd_PrintAByte(4,Key_NumberKeyInputTimes,MotorPassWordInput[Key_NumberKeyInputTimes-1]+0X30);
  545. //                                        }               
  546. //                                                break;
  547. //                                }
  548. //                        }
  549. //                }
  550. ////                        if(KeyValue<=9)
  551. ////                                {
  552. ////                                        if(Key_NumberKeyInputTimes<=MotorPasswordLength)
  553. ////                                        {
  554. ////                                                Key_NumberKeyInputTimes++;
  555. ////                                                MotorPassWordInput[Key_NumberKeyInputTimes-1]        =KeyValue;       
  556. ////                                                Lcd_PrintAByte(4,Key_NumberKeyInputTimes,MotorPassWordInput[Key_NumberKeyInputTimes-1]+0X30);
  557. ////                                        }
  558. ////                                }
  559. ////                               
  560. ////                                if(KeyValue==KeyEnter)
  561. ////                                {
  562. ////                                        if(Key_NumberKeyInputTimes==MotorPasswordLength)
  563. ////                                        {
  564. ////                                                if(Motor_CheckPassword()==1)//密码正确
  565. ////                                                {
  566. ////                                                        //提示密码正确,等待机器初始化
  567. ////                                                        Key_ClearInputInformation();
  568. ////                                                        Lcd_PageCreate(Lcd_PasswordRightPage);
  569. ////                                                }
  570. ////                                                else
  571. ////                                                {
  572. ////                                                        //页面提示密码错误,清楚输入并返回输入界面
  573. ////                                                        Key_ClearInputInformation();
  574. ////                                                        Lcd_PageCreate(Lcd_PasswordInputPage);

  575. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

完整代码:
stm32航模无刷电机遥控驱动程序-里面有很多模块lcd键盘24l01主机和丛机程序一体.rar (331.18 KB, 下载次数: 50)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表