欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2224|回復: 1
收起左側

STM32實現(xiàn)WiFi控制步進電機+顯示屏代碼

[復制鏈接]
ID:496954 發(fā)表于 2019-7-30 17:48 | 顯示全部樓層 |閱讀模式
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"  
  6. #include "key.h"     
  7. #include "usmart.h"
  8. #include "malloc.h"
  9. #include "sdio_sdcard.h"  
  10. #include "w25qxx.h"   
  11. #include "ff.h"  
  12. #include "exfuns.h"   
  13. #include "text.h"       
  14. #include "touch.h"               
  15. #include "usart3.h"
  16. #include "common.h"
  17. #include "driver.h"
  18. #include "beep.h"

  19. void display(int i,int f_data);
  20. void StepControl(u8 f_data);
  21. void ClockStepControl(u8 f_data);
  22. void ZeroStepControl(u8 f_data);
  23. void clock_display(int f_data);
  24. extern u16 SpeechData;
  25. int main(void)
  26. {         
  27.         u8 timex=0;
  28.         u8 constate=0;        //連接狀態(tài)
  29.         u8 r_data[2];
  30.         u8 s_data[2];
  31.   u8 data[10]={0};         
  32.         u16 t=999;                //加速第一次獲取鏈接狀態(tài)       
  33.   u8 i=0;       
  34.         u8 j=0;       
  35.         u8 k=0;       
  36.         u8 Speech=0;
  37.         //u8 m_data[1]={0};
  38.        
  39.        
  40.         delay_init();                     //延時函數(shù)初始化          
  41.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
  42.         uart_init(9600);                 //串口初始化為115200
  43.         usmart_dev.init(72);                //初始化USMART               
  44.         LED_Init();                                          //初始化與LED連接的硬件接口
  45.         KEY_Init();                                        //初始化按鍵
  46.         LCD_Init();                                           //初始化LCD  
  47.   BEEP_Init();                //初始化蜂鳴器
  48.         W25QXX_Init();                                //初始化W25Q128
  49.         tp_dev.init();                                //初始化觸摸屏
  50.         usart3_init(115200);                //初始化串口3
  51.   TIM8_OPM_RCR_Init(999,72-1); //1MHz計數(shù)頻率  單脈沖+重復計數(shù)模式       
  52.         Driver_Init();                        //驅動器初始化
  53.         my_mem_init(SRAMIN);                //初始化內(nèi)部內(nèi)存池
  54.         exfuns_init();                                //為fatfs相關變量申請內(nèi)存  
  55.         f_mount(fs[1],"1:",1);                 //掛載FLASH.
  56.   
  57.          
  58.         set_lcd();//配置LCD屏幕
  59.         atk_8266_test();                //進入ATK_ESP8266測試
  60.         POINT_COLOR=RED;
  61.         Show_Str(15,160,100,12,"1號分區(qū):",12,0);       
  62.         Show_Str(15,180,100,12,"2號分區(qū):",12,0);        
  63.         Show_Str(15,200,100,12,"3號分區(qū):",12,0);       
  64.         Show_Str(15,220,100,12,"4號分區(qū):",12,0);        
  65.         Show_Str(15,240,100,12,"5號分區(qū):",12,0);       
  66.         Show_Str(15,260,100,12,"6號分區(qū):",12,0);
  67.         Show_Str(15,280,100,12,"7號分區(qū):",12,0);       
  68.         Show_Str(15,300,100,12,"8號分區(qū):",12,0);        
  69.         Show_Str(15,340,100,12,"定時狀態(tài):",12,0);
  70.         Show_Str(15,360,100,12,"物品選擇:",12,0);
  71.   Show_Str(15,380,100,12,"是否提醒:",12,0);  
  72.         POINT_COLOR=BLUE;
  73.         for(j=1;j<9;j++)
  74.         {
  75.                 display(j,0);
  76.         }
  77.         //主循環(huán)
  78.         while(1)
  79.         {
  80.         delay_ms(5);
  81.         //Show_Str(90,350,100,12,m_data,12,0);               
  82.         if(USART_RX_STA==1&&Speech==0)
  83.         {
  84.                 if(SpeechData==1)
  85.                 {
  86.                         LCD_Fill(90,160+0*20,190,160+0*20+20,WHITE);
  87.                         Show_Str(90,160+0*20,100,12,"鑰匙",12,0);       
  88.                         Control(1);
  89.                   delay_ms(1000);
  90.       delay_ms(1000);
  91.                   Control(0);
  92.                        
  93.                        
  94.                        
  95.                 }
  96.                 else if(SpeechData==2)
  97.                 {
  98.                         LCD_Fill(90,160+0*20,190,160+0*20+20,WHITE);
  99.                         Show_Str(90,160+0*20,100,12,"無",12,0);       
  100.                        
  101.                         Control(1);
  102.                   delay_ms(1000);
  103.       delay_ms(1000);
  104.                   Control(0);
  105.                        
  106.                 }
  107.                
  108.           if(SpeechData==3)
  109.                 {
  110.                         //m_data[0]=SpeechData+0x30;
  111.                         LCD_Fill(90,160+1*20,190,160+1*20+20,WHITE);
  112.                         Show_Str(90,160+1*20,100,12,"藥品",12,0);       
  113.                         Control(2);
  114.                   delay_ms(1000);
  115.       delay_ms(1000);
  116.                   Control(0);
  117.                 }
  118.                 else if(SpeechData==4)
  119.                 {
  120.                         LCD_Fill(90,160+1*20,190,160+1*20+20,WHITE);
  121.                         Show_Str(90,160+1*20,100,12,"無",12,0);       
  122.                        
  123.                         Control(2);
  124.                   delay_ms(1000);
  125.       delay_ms(1000);
  126.                   Control(0);
  127.                        
  128.                 }
  129.                 else if(SpeechData==5)
  130.                 {
  131.                         LCD_Fill(90,160+2*20,190,160+2*20+20,WHITE);
  132.                         Show_Str(90,160+2*20,100,12,"充電寶",12,0);       
  133.                         Control(3);
  134.                   delay_ms(1000);
  135.       delay_ms(1000);
  136.                   Control(0);
  137.                 }
  138.                 else if(SpeechData==6)
  139.                 {
  140.                         LCD_Fill(90,160+2*20,190,160+1*20+20,WHITE);
  141.                         Show_Str(90,160+2*20,100,12,"無",12,0);       
  142.                        
  143.                         Control(3);
  144.                   delay_ms(1000);
  145.       delay_ms(1000);
  146.                   Control(0);
  147.                 }
  148.                 else if(SpeechData==7)
  149.                 {
  150.                         LCD_Fill(90,160+3*20,190,160+3*20+20,WHITE);
  151.                         Show_Str(90,160+3*20,100,12,"手機",12,0);       
  152.                         Control(4);
  153.                   delay_ms(1000);
  154.       delay_ms(1000);
  155.                   Control(0);
  156.                 }
  157.                 else if(SpeechData==8)
  158.                 {
  159.                         LCD_Fill(90,160+3*20,190,160+3*20+20,WHITE);
  160.                         Show_Str(90,160+3*20,100,12,"無",12,0);       
  161.                        
  162.                         Control(4);
  163.                   delay_ms(1000);
  164.       delay_ms(1000);
  165.                   Control(0);
  166.                 }
  167.                 else if(SpeechData==9)
  168.                 {
  169.                         LCD_Fill(90,160+4*20,190,160+4*20+20,WHITE);
  170.                         Show_Str(90,160+4*20,100,12,"筆",12,0);       
  171.                         Control(5);
  172.                   delay_ms(1000);
  173.       delay_ms(1000);
  174.                   Control(9);
  175.                 }
  176.                 else if(SpeechData==10)
  177.                 {
  178.                         LCD_Fill(90,160+4*20,190,160+4*20+20,WHITE);
  179.                         Show_Str(90,160+4*20,100,12,"無",12,0);       
  180.                        
  181.                         Control(5);
  182.                   delay_ms(1000);
  183.       delay_ms(1000);
  184.                   Control(9);
  185.                 }
  186.                  
  187. //                if(SpeechData%2==0)
  188. //                {
  189. //                        StepControl(SpeechData/2);
  190. //                                delay_ms(50);
  191. //                        display(SpeechData/2,0);
  192. //                }
  193. //                else
  194. //                {
  195. //                        StepControl(SpeechData/2+1);
  196. //                                delay_ms(50);
  197. //                        display(SpeechData/2+1,SpeechData/2+1);
  198. //                }
  199.                
  200.                 USART_RX_STA=0;
  201.         }
  202.         if(USART3_RX_STA&0X8000)                //接收到一次數(shù)據(jù)了
  203.         {
  204.                 Speech=1;
  205.                 r_data[0]=USART3_RX_BUF[13];
  206.                 r_data[1]=USART3_RX_BUF[14];
  207.                 //將狀態(tài)賦值給data數(shù)組
  208.                 switch(r_data[0])
  209.                  {
  210.                         case 1 :
  211.                                 data[0]=r_data[1];
  212.                                 break;
  213.                         case 2 :
  214.                                 data[1]=r_data[1];
  215.                                 break;
  216.                         case 3 :
  217.                                 data[2]=r_data[1];
  218.                                 break;
  219.                         case 4 :
  220.                                 data[3]=r_data[1];
  221.                                 break;
  222.                         case 5 :
  223.                                 data[4]=r_data[1];
  224.                                 break;
  225.                         case 6 :
  226.                                 data[5]=r_data[1];
  227.                                 break;
  228.                         case 7 :
  229.                                 data[6]=r_data[1];
  230.                                 break;
  231.                         case 8 :
  232.                                 data[7]=r_data[1];
  233.                                 break;
  234.                         case 9 :
  235.                                 data[8]=r_data[1];
  236.                           break;
  237.                  }
  238.                  
  239.         //顯示
  240.         if(r_data[0]==0x09)//定時服務
  241.         {
  242.         clock_display(data[8]);
  243.         }
  244.   else//非定時服務
  245.   {
  246.                 switch(r_data[0])
  247.                 {
  248.                         case 1 :
  249.                           display(r_data[0],r_data[1]);
  250.                                 break;
  251.                         case 2 :
  252.                                 display(r_data[0],r_data[1]);
  253.                                 break;
  254.                         case 3 :
  255.                                 display(r_data[0],r_data[1]);
  256.                                 break;
  257.                         case 4 :
  258.                                 display(r_data[0],r_data[1]);
  259.                                 break;
  260.                         case 5 :
  261.                                 display(r_data[0],r_data[1]);
  262.                                 break;
  263.                         case 6 :
  264.                                 display(r_data[0],r_data[1]);
  265.                                 break;
  266.                         case 7 :
  267.                                 display(r_data[0],r_data[1]);
  268.                                 break;
  269.                         case 8 :
  270.                                 display(r_data[0],r_data[1]);
  271.                                 break;
  272.                         case 9 :
  273.                           break;
  274.                 }
  275.         }
  276.        
  277.                 //控制
  278.                 if(r_data[0]!=0x09)//沒有選擇定時服務
  279.                 {
  280.                   if(r_data[1]!=0x00)//存
  281.                   {
  282.                          StepControl(r_data[0]);
  283.                    }
  284.                   else if(r_data[1]==0x00)//取
  285.                   {
  286.                    StepControl(r_data[0]);
  287.              }
  288.           }
  289.                
  290.                 else if(r_data[0]==0x09)//選擇定時服務
  291.                 {
  292.                   if((r_data[1]!=0x09)&&(r_data[1]!=0x00))
  293.                   {
  294.                          for(k=0;k<8;k++)//尋找空盒子
  295.                          {
  296.                           if(data[k]==0)
  297.         break;                                 
  298.                          }
  299.                    StepControl(k+1);//k+1就是選擇的盒子
  300.             }
  301.                   else if( r_data[1]==0x09)
  302.                   {
  303.        ClockStepControl(k+1);//定時到
  304.                          BEEP=1;        //蜂鳴器提醒          
  305.                    delay_ms(300);//延時300ms
  306.                          BEEP=0;                  
  307.                    delay_ms(300);//延時300ms
  308.                   }
  309.                   else if(r_data[1]==0x00)
  310.                   {
  311.                          ZeroStepControl(k+1);//回原位置
  312.                          k=0;
  313.                   }
  314.     }
  315.        

  316.                 USART3_RX_STA=0;
  317.                
  318.                 if(constate!='+')t=1000;                //狀態(tài)為還未連接,立即更新連接狀態(tài)
  319.                 else t=0;                   //狀態(tài)為已經(jīng)連接了,10秒后再檢查
  320.         }  
  321.         if(t==1000)//連續(xù)10秒鐘沒有收到任何數(shù)據(jù),檢查連接是不是還存在.
  322.         {
  323.                 constate=atk_8266_consta_check();//得到連接狀態(tài)
  324.                 if(constate=='+')Show_Str(30+40,95,200,12,"連接成功",12,0);  //連接狀態(tài)
  325.                 else Show_Str(30+40,95,200,12,"連接失敗",12,0);                    
  326.                 t=0;
  327.         }
  328.         atk_8266_at_response(1);
  329. }
  330. }


  331. void display(int i,int f_data)
  332. {
  333.         i=i-1;
  334.         switch(f_data)
  335.         {
  336.                 case 0 :
  337.                         LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
  338.                         Show_Str(90,160+i*20,100,12,"無",12,0);       
  339.                         break;
  340.                
  341.                 case 1 :
  342.                         LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
  343.                         Show_Str(90,160+i*20,100,12,"鑰匙",12,0);       
  344.                         break;
  345.                
  346.                 case 2 :
  347.                         LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
  348.                         Show_Str(90,160+i*20,100,12,"藥品",12,0);       
  349.                         break;
  350.                
  351.                 case 3 :
  352.                         LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
  353.                         Show_Str(90,160+i*20,100,12,"充電寶",12,0);       
  354.                         break;               
  355.                
  356.                 case 4 :
  357.                         LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
  358.                         Show_Str(90,160+i*20,100,12,"手機",12,0);       
  359.                         break;
  360.                                
  361.                 case 5 :
  362.                         LCD_Fill(90,160+i*20,190,160+i*20+20,WHITE);
  363.                         Show_Str(90,160+i*20,100,12,"筆",12,0);       
  364.                         break;
  365.                
  366.                 case 6 :
  367.                        
  368.                         break;
  369.                                
  370.                 case 7 :
  371.                        
  372.                         break;
  373.                
  374.                 case 8 :
  375.                        
  376.                         break;
  377.                 case 9 :
  378.                         //Show_Str(90,340,100,12,"到時",12,0);
  379.                         break;
  380.     }
  381. }
  382. void clock_display(int f_data)
  383. {
  384.          Show_Str(90,340,100,12,"開",12,0);
  385.          switch(f_data)
  386.          {
  387.                 case 0 :
  388.                         LCD_Fill(90,360,190,380,WHITE);
  389.                   LCD_Fill(90,340,190,360,WHITE);
  390.                         Show_Str(90,360,100,12,"無",12,0);       
  391.                   LCD_Fill(90,380,190,400,WHITE);
  392.                         break;
  393.                
  394.                 case 1 :
  395.                         LCD_Fill(90,360,190,380,WHITE);
  396.                         Show_Str(90,360,100,12,"鑰匙",12,0);       
  397.                         break;
  398.                
  399.                 case 2 :
  400.                         LCD_Fill(90,360,190,380,WHITE);
  401.                         Show_Str(90,360,100,12,"藥品",12,0);       
  402.                         break;
  403.                
  404.                 case 3 :
  405.                         LCD_Fill(90,360,190,380,WHITE);
  406.                         Show_Str(90,360,100,12,"充電寶",12,0);       
  407.                         break;               
  408.                
  409.                 case 4 :
  410.                         LCD_Fill(90,360,190,380,WHITE);
  411.                         Show_Str(90,360,100,12,"手機",12,0);       
  412.                         break;
  413.                                
  414.                 case 5 :
  415.                         LCD_Fill(90,360,190,380,WHITE);
  416.                         Show_Str(90,360,100,12,"筆",12,0);       
  417.                         break;
  418.                
  419.                 case 6 :
  420.                        
  421.                         break;
  422.                                
  423.                 case 7 :
  424.                        
  425.                         break;
  426.                
  427.                 case 8 :
  428.                        
  429.                         break;
  430.                 case 9 :
  431.                         Show_Str(90,380,100,12,"提醒",12,0);
  432.                         break;
  433.         }
  434.        
  435.        
  436.        
  437. }
  438. //控制電機轉動
  439. void StepControl(u8 f_data)
  440. {
  441. switch(f_data)
  442. {
  443.         case 1 :
  444.           Control(1);
  445.                 delay_ms(1000);
  446.     delay_ms(1000);
  447.                 Control(0);
  448.                 break;
  449.         case 2 :
  450.           Control(2);
  451.                 delay_ms(1000);
  452.     delay_ms(1000);
  453.                 Control(0);
  454.                 break;
  455.   case 3 :
  456.                 Control(3);
  457.                 delay_ms(1000);
  458.     delay_ms(1000);
  459.                 Control(0);
  460.                 break;
  461.         case 4 :
  462.                 Control(4);
  463.                 delay_ms(1000);
  464.     delay_ms(1000);
  465.                 Control(0);
  466.           break;
  467.         case 5 :
  468.                 Control(5);
  469.                 delay_ms(1000);
  470.     delay_ms(1000);
  471.                 Control(9);
  472.                 break;
  473.         case 6 :
  474.                 Control(6);
  475.                 delay_ms(1000);
  476.     delay_ms(1000);
  477.                 Control(9);
  478.                 break;
  479.         case 7 :
  480.                 Control(7);
  481.                 delay_ms(1000);
  482.     delay_ms(1000);
  483.                 Control(9);
  484.                 break;
  485.         case 8 :
  486.                 Control(8);
  487.                 delay_ms(1000);
  488.     delay_ms(1000);
  489.                 Control(9);
  490.                 break;
  491.         case 9 :
  492.                 break;
  493.         }       
  494. }
  495. //控制電機轉動,定時時間到
  496. void ClockStepControl(u8 f_data)
  497. {
  498.         switch(f_data)//k+1就是選擇的盒子
  499.         {
  500.         case 1 :
  501.                 Control(1);
  502.           break;
  503.         case 2 :
  504.                 Control(2);
  505.                 break;
  506.         case 3 :
  507.                 Control(3);
  508.                 break;
  509.         case 4 :
  510.                 Control(4);
  511.                 break;
  512.         case 5 :
  513.                 Control(5);
  514.                 break;
  515.         case 6 :
  516.                 Control(6);
  517.                 break;
  518.         case 7 :
  519.                 Control(7);
  520.                 break;
  521.         case 8 :
  522.                 Control(8);
  523.                 break;
  524.         case 9 :
  525.          break;
  526.         }
  527. }
  528. //控制電機轉動,定時時間到
  529. void ZeroStepControl(u8 f_data)
  530. {
  531.         switch(f_data)//k+1就是選擇的盒子
  532.         {
  533.         case 1 :
  534.                 Control(0);
  535.           break;
  536.         case 2 :
  537.                 Control(0);
  538.                 break;
  539.         case 3 :
  540.                 Control(0);
  541.                 break;
  542.         case 4 :
  543.                 Control(0);
  544.                 break;
  545.         case 5 :
  546.                 Control(9);
  547.                 break;
  548.         case 6 :
  549.                 Control(9);
  550.                 break;
  551.         case 7 :
  552.                 Control(9);
  553.                 break;
  554.         case 8 :
  555.                 Control(9);
  556.                 break;
  557.         case 9 :
  558.          break;
  559.         }
  560. }
復制代碼

最終程序.7z (1.3 MB, 下載次數(shù): 42)
回復

使用道具 舉報

ID:1 發(fā)表于 2019-7-30 23:24 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

ID:631878 發(fā)表于 2019-11-5 09:22
你好,可以聯(lián)系下嗎?正在開發(fā)這個,1253182555

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表