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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)遙感控制系統(tǒng)程序

[復(fù)制鏈接]
ID:150530 發(fā)表于 2019-5-30 03:27 | 顯示全部樓層 |閱讀模式
通過(guò)遙感對(duì)數(shù)據(jù)的采集送到單片機(jī)

單片機(jī)源程序如下:
  1. /*坐標(biāo)系:以接口一邊為前。
  2.         前:X:0.04  Y:0.02        左前: X:0.04        Y:0.00        右前:        X:0.04        Y:0.04
  3.         后:X:0.00  Y:0.02  左后: X:0.00        Y:0.00        右后:        X:0.00        Y:0.04
  4.         左:X:0.02  Y:0.00       
  5.         右:X:0.02  Y:0.04
  6. */
  7. /***********************主函數(shù)模塊****************************/
  8. #include "api_t.h"
  9. #include "stc12.h"
  10. #include "intrins.h"
  11. #include "htc12_ad.h"
  12. #include "lcd.h"
  13. #define uchar unsigned char  
  14. extern uchar RX_BUF[TX_PLOAD_WIDTH];  
  15. extern uchar TX_BUF[TX_PLOAD_WIDTH];  
  16. float value0=0,value1=0;
  17. uchar Disp[]=" Pechin Science ";

  18. uchar renddata[4]={0};
  19. uchar i,bb=0;

  20. int deal_rand_data[3];

  21. int deal_rand_data2[3];

  22. sbit k1=P1^2;



  23. void function_handle(int b)//函數(shù)處理
  24. {
  25.         if(b==1)
  26.         deal_rand_data2[1]=255-(deal_rand_data[2]*0.0512-0.5);//y 的ad返回值轉(zhuǎn)化成0~255的pwm值
  27.         if(b==2)
  28.         deal_rand_data2[2]=deal_rand_data[2]*0.0513-0.5;//x 的ad返回值轉(zhuǎn)化成0~255的pwm值
  29. }

  30. void dealdata()           //處理數(shù)據(jù)
  31. {
  32.         float a0,a1;
  33.         a0=value0*1000;
  34.         a1=value1*1000;
  35.         deal_rand_data[1]=(int)a0/1000%10*1000+(int)a0/100%10*100+(int)a0/10%10*10+(int)a0%10;  //  y
  36.        
  37.         function_handle(1); //函數(shù)處理y得到0~255的pwm值
  38.        
  39.         deal_rand_data[2]=(int)a1/1000%10*1000+(int)a1/100%10*100+(int)a1/10%10*10+(int)a1%10;
  40.        
  41.         function_handle(2); //函數(shù)處理x得到0~255的pwm值
  42. }

  43. void direction_data_dealing()         //遙感模塊,控制各方向
  44. {
  45.         if(deal_rand_data[1]>=2490 && deal_rand_data[1]<=2520 && deal_rand_data[2]>=2520 && deal_rand_data[2]<=2550)//靜止 y x
  46.         {
  47.                 renddata[1]=deal_rand_data2[1];
  48.                 renddata[2]=deal_rand_data2[2];
  49.                 renddata[3]='j';
  50.                 renddata[4]=1;
  51.         }
  52.        
  53.         if(deal_rand_data[1]>=2500 && deal_rand_data[1]<=2510 && deal_rand_data[2]>=0000 && deal_rand_data[2]<=2519
  54.                  || deal_rand_data[1]>=2500 && deal_rand_data[1]<=4200 && deal_rand_data[2]>=0000 && deal_rand_data[2]<=2519
  55.                  || deal_rand_data[1]>=0000 && deal_rand_data[1]<=2520 && deal_rand_data[2]>=0000 && deal_rand_data[2]<=2519)//前進(jìn) y x
  56.         {
  57.                 renddata[1]=deal_rand_data2[1];
  58.                 renddata[2]=deal_rand_data2[2];
  59.                 renddata[3]='q';
  60.                 renddata[4]=2;
  61.         }
  62.        
  63.         if(deal_rand_data[1]>=2530 && deal_rand_data[1]<=5000 && deal_rand_data[2]>=2520 && deal_rand_data[2]<=2550)//左轉(zhuǎn) y x
  64.         {
  65.                 renddata[1]=deal_rand_data2[1];
  66.                 renddata[2]=deal_rand_data2[2];
  67.                 renddata[3]='z';
  68.                 renddata[4]=3;
  69.         }
  70.        
  71.         if(deal_rand_data[1]>=0000 && deal_rand_data[1]<=2480 && deal_rand_data[2]>=2520 && deal_rand_data[2]<=2550)//右轉(zhuǎn) y x
  72.         {
  73.                 renddata[1]=deal_rand_data2[1];
  74.                 renddata[2]=deal_rand_data2[2];
  75.                 renddata[3]='y';
  76.                 renddata[4]=4;
  77.         }
  78.        
  79.         if(deal_rand_data[1]>=2490 && deal_rand_data[1]<=2520 && deal_rand_data[2]>=2550 && deal_rand_data[2]<=5000
  80.                  || deal_rand_data[1]>=2530 && deal_rand_data[1]<=5000 && deal_rand_data[2]>=2550 && deal_rand_data[2]<=5000
  81.                  || deal_rand_data[1]>=0000 && deal_rand_data[1]<=2480 && deal_rand_data[2]>=2600 && deal_rand_data[2]<=5000)//后退 y x
  82.         {
  83.                 renddata[1]=deal_rand_data2[1];
  84.                 renddata[2]=deal_rand_data2[2];
  85.                 renddata[3]='h';
  86.                 renddata[4]=5;
  87.         }
  88. }


  89. void keydoing()
  90. {
  91.        
  92.         TX_BUF[4]=1;
  93. }

  94. void keypros()
  95. {
  96.         if(k1==1)                  //檢測(cè)按鍵K1是否按下
  97.         {       
  98.                 delay(1000);   //消除抖動(dòng) 一般大約10ms
  99.                 if(k1==1)         //再次判斷按鍵是否按下
  100.                 {
  101.                         bb=1;
  102.                 }
  103.                 while(k1);         //檢測(cè)按鍵是否松開(kāi)
  104.         }               
  105. }

  106. void main()
  107. {
  108.        
  109.         ADC_Init();
  110.         init_io();        //函數(shù)初始化
  111.         k1=0;
  112.         while(1)
  113.         {
  114.                 value0=ADC_AV(0xe0);
  115.                 value1=ADC_AV(0xe1);         //ad模塊電壓提取
  116.                
  117.                 dealdata();
  118.                 direction_data_dealing();          //遙感函數(shù)處理
  119.        
  120.                
  121.                 TX_BUF[0]=renddata[1];
  122.                 TX_BUF[1]=renddata[2]; // y
  123.                 TX_BUF[2]=renddata[4];
  124.                 TX_BUF[3]=renddata[3]; // x
  125.        
  126.                
  127.                 TX_Mode(TX_BUF);    //以wifi模塊發(fā)送出數(shù)據(jù)
  128.                 Check_ACK(1);   
  129.                 delay_ms(250);  
  130.        
  131.         }
  132. }
復(fù)制代碼

所有資料51hei提供下載:
遙控.rar (54.65 KB, 下載次數(shù): 13)

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:742823 發(fā)表于 2020-6-25 15:32 | 顯示全部樓層
為啥我的軟件打不來(lái)的程序
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表