wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4803|回復(fù): 0
收起左側(cè)

stm32航模無刷電機(jī)遙控驅(qū)動(dòng)程序-里面有很多模塊lcd鍵盤24l01主機(jī)和叢機(jī)程序一體

[復(fù)制鏈接]
ID:130231 發(fā)表于 2017-5-10 15:55 | 顯示全部樓層 |閱讀模式
stm32航模無刷電機(jī)遙控驅(qū)動(dòng)程序-里面有很多模塊lcd鍵盤24l01主機(jī)和叢機(jī)程序一體

單片機(jī)源碼:
  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);//復(fù)位中斷掛起標(biāo)志位,防止因?yàn)橹袛鄴炱饦?biāo)志位置位,反復(fù)進(jìn)入中斷
  46.         EXTI->IMR&=~(EXTI_Line12|EXTI_Line13|EXTI_Line14|EXTI_Line15);//暫時(shí)關(guān)閉中斷,防止抖動(dòng)觸發(fā)中斷,待處理完成后再次開啟中斷
  47.         DelayMs(30);//消除抖動(dòng)
  48.         if((GPIO_ReadInputData(GPIOB)&0XF000)!=0X0000)//檢查是否按鍵仍舊處于按下狀態(tài)。無按鍵按下時(shí)GPIOB Bit15_12(下拉電阻)的值都為低。
  49.         {
  50.                 //Led亮
  51.                 KeyValueStatus=GPIO_ReadInputData(GPIOB);
  52.                 KeyValueY=(uchar)(KeyValueStatus>>12)&0X0F;
  53.                 for(Times=0;Times<4;Times++)        //檢測(cè)縱軸
  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++)//檢測(cè)橫軸
  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)//檢查當(dāng)前頁面,以確定需要傳遞處理和屏蔽的干擾按鍵
  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);                        //發(fā)送
  215.                                         printf("已經(jīng)向從機(jī)發(fā)送了將至最低功率命令\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);                        //發(fā)送
  222.                                         printf("已經(jīng)向從機(jī)發(fā)送了將至最低功率命令\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);                                                //發(fā)送
  234.                                                 printf("已經(jīng)向從機(jī)發(fā)送了無操作命令\n");
  235.                                         }
  236.                                         else
  237.                                         {
  238.                                                 Lcd_RefreshCommandStatus(1);        //顯示加速
  239.                                                 Motor_PowerLevelSatatus++;
  240.                                                 Motor_SendCammand(Motor_SetMotorPowerHigher,Motor_PowerLevelSatatus);                                                //發(fā)送
  241.                                                 printf("已經(jīng)向從機(jī)發(fā)送了加速命令\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);                                                //發(fā)送
  251.                                                 printf("已經(jīng)向從機(jī)發(fā)送了無操作命令\n");
  252.                                         }
  253.                                         else
  254.                                         {
  255.                                                 Lcd_RefreshCommandStatus(0);//顯示減速
  256.                                                 Motor_PowerLevelSatatus--;
  257.                                                 Motor_SendCammand(Motor_SetMotorPowerLower,Motor_PowerLevelSatatus);                                                //發(fā)送
  258.                                                 printf("已經(jīng)向從機(jī)發(fā)送了減速命令\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("已將功率大小信息發(fā)送到從機(jī)(提速)\n");
  272.                                 }
  273.                                 if(Motor_PowerLevelPast>Motor_PowerLevelSatatus)
  274.                                 {
  275.                                                 Lcd_RefreshCommandStatus(0);//顯示減速
  276.                                                 printf("已將功率大小信息發(fā)送到從機(jī)(減速)\n");
  277.                                 }
  278.                                 if(Motor_PowerLevelPast==Motor_PowerLevelSatatus)
  279.                                 {
  280.                                         Lcd_RefreshCommandStatus(2);//顯示無操作
  281.                                                 printf("已將功率大小信息發(fā)送到從機(jī)(無操作)\n");
  282.                                 }
  283.                                 Motor_SendCammand(Motor_SetPowerLevel,Motor_PowerLevelSatatus);                        //發(fā)送
  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))//密碼正確,驗(yàn)證輸入次數(shù)的目的是防止密碼是8個(gè)0
  308.                                                 {
  309.                                                         Key_ClearInputInformation();
  310.                                                         Lcd_PageCreate(Lcd_PasswordRightPage);
  311.                                                         Motor_SendCammand(Motor_InitESC,1);
  312.                                                         DelayMs(5000);//等待電調(diào)初始化才能操作
  313.                                                         Lcd_PageCreate(Lcd_MainPage);//進(jìn)入主菜單
  314.                                                         printf("已經(jīng)向從機(jī)發(fā)送了解鎖命令\n");
  315.                                                 }               
  316.                                                 else
  317.                                                 {
  318.                                                         Key_ClearInputInformation();
  319.                                                         Lcd_PageCreate(Lcd_PasswordFaultPage);//進(jìn)入輸入密碼出錯(cuò)頁面
  320.                                                 }
  321.                                         break;
  322.                                         default:break;
  323.                                 }
  324.                         }
  325.                         else//數(shù)字輸入
  326.                         {
  327.                                 Key_NumberKeyInputTimes=Key_NumberKeyInputTimes+1;
  328.                                 printf("輸入數(shù)字次數(shù)是:%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)//電調(diào)沒完成初始化時(shí)用戶不能自行操作,要等待系統(tǒng)完成初始化后自動(dòng)返回.
  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;//我規(guī)定了鍵0-9是數(shù)字鍵.11-16是功能鍵
  376. //        }
  377. //        //下面啟動(dòng)頁的
  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);//進(jìn)入調(diào)速頁
  396. //                        break;               
  397. //                }
  398. ////密碼輸入錯(cuò)誤頁面
  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)//檢查是否是數(shù)字輸入
  414. //                        {
  415. //                                Key_NumberKeyInputTimes++;//開啟數(shù)字進(jìn)入次數(shù)計(jì)數(shù);
  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))//密碼正確,驗(yàn)證輸入次數(shù)的目的是防止密碼是8個(gè)0
  445. //                                                {
  446. //                                                        Key_ClearInputInformation();
  447. //                                                        Lcd_PageCreate(Lcd_MainPage);//進(jìn)入主菜單
  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))//數(shù)字輸入
  496. //                        switch(KeyValue)
  497. //                        {
  498. //                                case KeyEnter:
  499. //                                {
  500. //                                        if(Key_NumberKeyInputTimes==MotorPasswordLength)
  501. //                                        {
  502. //                                                if(Motor_CheckPassword()==1)//密碼正確
  503. //                                                {
  504. //                                                        //提示密碼正確,等待機(jī)器初始化
  505. //                                                        Key_ClearInputInformation();
  506. //                                                        Lcd_PageCreate(Lcd_PasswordRightPage);
  507. //                                                }
  508. //                                                else
  509. //                                                {
  510. //                                                        //頁面提示密碼錯(cuò)誤,清楚輸入并返回輸入界面
  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. ////                                                        //提示密碼正確,等待機(jī)器初始化
  567. ////                                                        Key_ClearInputInformation();
  568. ////                                                        Lcd_PageCreate(Lcd_PasswordRightPage);
  569. ////                                                }
  570. ////                                                else
  571. ////                                                {
  572. ////                                                        //頁面提示密碼錯(cuò)誤,清楚輸入并返回輸入界面
  573. ////                                                        Key_ClearInputInformation();
  574. ////                                                        Lcd_PageCreate(Lcd_PasswordInputPage);

  575. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

完整代碼:
stm32航模無刷電機(jī)遙控驅(qū)動(dòng)程序-里面有很多模塊lcd鍵盤24l01主機(jī)和叢機(jī)程序一體.rar (331.18 KB, 下載次數(shù): 51)


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
久久婷婷一区| 热re66久久精品国产99re| 久久白虎精品| 经典一区二区| 亚洲欧美色图小说| 欧美一级视频免费在线观看| 久久久久国产精品熟女影院| 亚洲av少妇一区二区在线观看| 视频一区二区三区不卡| 亚洲一区欧美激情| 日韩欧美激情四射| 日韩国产精品一区二区| 亚洲一区二区三区午夜| 黄色小视频在线免费看| 国产在线制服美女| 久久久久免费av| 色哦色哦哦色天天综合| 国产一区二区在线观看免费播放| 女人18毛片毛片毛片毛片区二 | 成人国产在线激情| 熟女少妇一区二区三区| 黄色影院在线观看| 亚洲人成网77777色在线播放| 亚洲成人777| 国产精品入口免费| 国产在线视频第一页| 中文在线√天堂| 激情综合电影网| 精品卡一卡二卡三卡四在线| 青草全福视在线| av在线亚洲天堂| 91精品论坛| 久久亚洲综合色一区二区三区| 欧美激情一级二级| 国产乱国产乱老熟300部视频| 欧美卡一卡二卡三| 免费观看又污又黄在线观看国产| 国产精品观看| 亚洲成人1234| 国产黄色一级网站| 亚洲综合激情六月婷婷在线观看| av亚洲一区| 成人免费在线播放视频| 91在线观看网站| 日韩av男人天堂| 免费的黄网站在线观看| 国产麻豆成人精品| 国模精品视频一区二区| 中文字幕被公侵犯的漂亮人妻| ckplayer中文字幕| 亚洲国内自拍| 伊人久久久久久久久久| www.国产福利| 成年免费插网| 欧美一区亚洲| 亚洲天天在线日亚洲洲精| 污污的视频免费| 日本成址在线观看| 婷婷成人基地| 精品亚洲精品福利线在观看| 久久久国产欧美| 韩国18福利视频免费观看| 天堂网av成人| 7777精品伊人久久久大香线蕉经典版下载| 制服丝袜综合日韩欧美| 香蕉视频黄在线观看| 伊人久久影院| 欧美日免费三级在线| 国产一区二区三区小说| 日韩a视频在线观看| 亚洲自拍电影| 日韩免费电影一区| 深夜黄色小视频| freexxxx性特大另类| 欧美午夜电影在线观看 | 亚洲av片在线观看| 成人动漫av| 午夜亚洲精品| 成人免费一区二区三区视频| 91精品国产入口在线| 欧美亚洲日本一区二区三区| 青春娱乐分类视频精品2动漫| 亚欧洲精品视频在线观看| 91精品午夜视频| 四虎永久在线精品无码视频| 青青操视频在线观看| 欧美久久一区| 日韩中文有码在线视频| 免费一级做a爰片久久毛片潮| 三级视频在线播放| 成人aaaa免费全部观看| 91系列在线播放| 中文字幕一区二区人妻| 中文字幕日韩亚洲| 欧美三级三级三级| 欧美大尺度做爰床戏| 91xxxxx| 蜜臀精品久久久久久蜜臀| 热久久这里只有| 99久热在线精品996热是什么| 姬川优奈av一区二区在线电影| 午夜国产精品影院在线观看| 野外做受又硬又粗又大视频√| 成人精品美女隐私视频| 亚洲日韩视频| 国外成人在线直播| 亚洲日本韩国在线| 国产精品天堂蜜av在线播放 | 亚洲精品在线a| 欧美群妇大交群中文字幕| 亚洲77777| 天天操夜夜干| 国产成人av自拍| 99精彩视频| 亚洲AV无码一区二区三区性| 午夜视频在线免费| 国产麻豆91精品| 亚洲在线视频观看| www.亚洲黄色| 少妇精品久久久一区二区| 亚洲天堂免费视频| 性爱在线免费视频| 草草视频在线| 在线观看91视频| 国产三级国产精品国产专区50| 欧美高清xxxxxkkkkk| 懂色av一区二区三区免费观看| 国产精品日本一区二区| 四虎海外影库www4hu| 激情文学一区| 国产精品久久久久久久久久三级| 一级特黄色大片| 女厕嘘嘘一区二区在线播放| 在线一区二区日韩| 久久久久久久久艹| 成人污版视频| 亚洲精品自产拍| 任我爽在线视频| 91看片一区| 日韩一区二区精品| 一区二区伦理片| 在线观看特色大片免费视频| 欧美久久婷婷综合色| 日本一区二区在线观看视频| av文字幕在线观看| 日本精品一区二区三区高清| 少妇高潮一69aⅹ| 黄色网在线播放| 欧美性xxxx在线播放| 原创真实夫妻啪啪av| 久cao在线| 91福利国产精品| 黄色国产在线视频| a级片免费在线观看| 欧美精品日韩一本| 51妺嘿嘿午夜福利| 成人在线观看免费视频| 日韩精品视频观看| 国产亚洲欧美精品久久久久久| 日韩精品成人| 久久精品人人做人人爽| 国产精品视频一区在线观看| 网曝91综合精品门事件在线| 亚洲欧美另类色图| 美女少妇全过程你懂的久久| 日韩色av导航| 黄网在线观看视频| 美女视频亚洲色图| 久久精品影视伊人网| 成人av网站在线播放| 国产一区二区精品福利地址| 97香蕉超级碰碰久久免费的优势| 99热这里只有精品1| 欧美福利电影在线观看| 国产精品日韩一区| 免费男女羞羞的视频网站中文字幕妖精视频 | 午夜激情在线观看| 日本在线丨区| 亚洲成人高清在线| 最好看的中文字幕| 狠狠操一区二区三区| 欧美精品一区二区三区蜜桃视频| 精品自拍偷拍视频| 乱亲女h秽乱长久久久| 欧美黑人xxxx| 亚洲欧美黄色片| 美女国产精品| 欧美日本韩国国产| 91美女在线免费观看| 久久久9色精品国产一区二区三区| 7m第一福利500精品视频| 欧性猛交ⅹxxx乱大交| 日韩有码一区二区三区| 亚洲精品美女久久7777777| 91精品国产高久久久久久五月天| 最新久久zyz资源站| 人妻巨大乳一二三区| xx欧美视频| 中文字幕久热精品视频在线| 91av久久久| 免费av成人在线| 国产精品h片在线播放| 亚洲图区综合网| 狠狠色综合日日| 99精品视频网站| 日本a一级在线免费播放| 欧美日韩中文字幕在线| 色一情一交一乱一区二区三区| 日本免费精品| 国产不卡视频在线| 国产精品久久人| 中文字幕不卡在线观看| 欧美体内she精高潮| 97精品国产综合久久久动漫日韩 | 亚洲一二三四2021不卡| 激情成人午夜视频| 九一国产精品视频| 丁香花在线观看完整版电影| 亚洲欧美中文在线视频| 国产精品国产一区二区三区四区| 丝袜亚洲精品中文字幕一区| 中文字幕乱码免费| 蜜桃视频在线观看www社区| 精品久久久久久久久久久久包黑料| 中文字幕超碰在线| 99精品视频免费| 福利在线小视频| 最新日本在线观看| 色av中文字幕一区| 香蕉视频网站在线| 97se亚洲国产综合在线| 99视频在线观看视频| 国产一区二区av在线| 国产精品九九九| 天天综合天天| 欧美亚洲国产一区二区三区| 日韩久久久久久久久| 中文在线不卡| 人妻夜夜添夜夜无码av | 欧美福利视频在线观看| 久久综合精品视频| 日韩码欧中文字| 中文字幕欧美激情极品| 清纯唯美亚洲综合一区| 欧美一区二区三区精美影视 | 亚洲偷熟乱区亚洲香蕉av| 日韩中文字幕免费观看| 91原创在线视频| chinese麻豆新拍video| 视频福利一区| 国产欧美日韩综合一区在线观看| 污视频在线看操| 日韩经典中文字幕| 亚洲不卡1卡2卡三卡2021麻豆| 久久青草欧美一区二区三区| 国产老熟女伦老熟妇露脸| 精品高清在线| 色999日韩自偷自拍美女| 国产三区视频在线观看| 欧美理论电影在线播放| 可以www视频| 在线观看国产日韩| 在线免费一级片| 成人高清免费观看| 亚洲一区二区三区四区五区六区| 欧美一区电影| 正在播放国产精品| 日本在线播放一二三区| 欧美专区在线视频| 午夜免费性福利| 精品99久久久久久| 亚欧在线观看视频| 亚洲欧美偷拍另类a∨色屁股| 国产一二三区精品| 天堂成人免费av电影一区| 啊啊啊国产视频| 久久精品色播| 日本一区二区三区视频免费看| 中文字幕资源网在线观看| 欧美黑人xxxx| 国产美女被遭强高潮免费网站| 欧美美女视频在线观看| www.xxxx国产| 成人欧美一区二区三区1314| 国产真实乱偷精品视频| 麻豆成人91精品二区三区| 91亚洲一区二区| 人人狠狠综合久久亚洲婷| 国产专区在线视频| 欧美极品在线| 久久99导航| 福利影院在线看| 国产日韩综合一区二区性色av| 在线观看av网| 精品国产一区二区三区四区在线观看| 青青青爽在线视频免费观看| 91精品啪在线观看国产60岁| 亚洲大肥女ass| 亚洲成人在线观看视频| 伊人网站在线观看| 中文字幕精品—区二区四季| 国语对白一区二区| 国产白丝网站精品污在线入口| v8888av| 亚洲神马久久| 国产xxxxhd| 欧美一区二区三区久久精品茉莉花 | 人妖精品videosex性欧美| 四虎精品在线| 免费av一区二区| 全部孕妇毛片丰满孕妇孕交| 精品亚洲男同gayvideo网站| 免费三级毛片| 亚洲精品久久久久久久久久久| 国产亚洲精品久久久久久移动网络| 欧美久久久久久久久中文字幕| 色偷偷av男人的天堂| 91成人免费网站| 亚洲色图欧美视频| 欧美性猛交xxxx免费看漫画| 空姐吹箫视频大全| 精品久久久久久久中文字幕| 精品人妻午夜一区二区三区四区 | 成人高h视频在线| 高清免费电影在线观看| 国产精品看片资源| 九色porny在线| 国产免费一区二区三区在线观看| 老司机精品影院| 国产精品视频白浆免费视频| 黄视频网站在线| 91精品国产综合久久香蕉922| 污污网站在线看| 91黄色精品| 美女高潮视频在线看| 国产私拍一区| 国产一区二区三区朝在线观看| 久久涩涩网站| 日韩三级成人| 中国成人亚色综合网站| 欧美一级三级| 亚洲人成色77777| 97国产成人高清在线观看| 五月婷婷六月丁香激情| 国自产拍偷拍福利精品免费一| 欧洲成人午夜精品无码区久久| 国产精品日本| 性欧美精品男男| 粉嫩aⅴ一区二区三区四区五区| 欧美成人精品一区二区免费看片 | 久久亚洲综合国产精品99麻豆精品福利| 国产视频二区| 午夜精品一区二区三区在线播放| 在线免费看黄| 91性高湖久久久久久久久_久久99| 超碰在线99| 日韩亚洲视频| 欧洲亚洲视频| 日本中文字幕精品—区二区| 亚洲深夜av| 久久人妻无码aⅴ毛片a片app| 91免费国产视频网站| 伊人网视频在线| 欧美综合视频在线观看| 91av视频| 菠萝蜜影院一区二区免费| 巨骚激情综合| 91免费看片在线| 成人精品国产亚洲| 日韩人妻一区二区三区蜜桃视频| 欧美精品一二| 乱码一区二区三区| 国内久久精品视频| 亚洲精品午夜国产va久久成人| 亚洲综合视频在线观看| 久久久久久久久综合影视网| 亚洲高清一二三区| 最新中文字幕av专区| 国产精品久久久av久久久| 精品国产第一福利网站| 男人天堂新网址| 欧美全黄视频| 精品一区二区三孕妇视频| 国产人伦精品一区二区| 亚洲老妇色熟女老太| 欧美成人精品二区三区99精品| av二区三区| 国产精品白嫩初高中害羞小美女| 超碰一区二区| 女人帮男人橹视频播放| 伊人久久亚洲影院| 少妇aaaaa| 亚洲午夜久久久久| 九色91播放| 国内揄拍国内精品少妇国语| 亚洲人体影院| 妞干网在线视频观看| 亚洲欧美日本国产专区一区| 国产一级大片在线观看| 精品国产31久久久久久|