找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机遥感控制系统程序

[复制链接]
跳转到指定楼层
楼主
ID:150530 发表于 2019-5-30 03:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过遥感对数据的采集送到单片机

单片机源程序如下:
  1. /*坐标系:以接口一边为前。
  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. /***********************主函数模块****************************/
  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)//函数处理
  24. {
  25.         if(b==1)
  26.         deal_rand_data2[1]=255-(deal_rand_data[2]*0.0512-0.5);//y 的ad返回值转化成0~255的pwm值
  27.         if(b==2)
  28.         deal_rand_data2[2]=deal_rand_data[2]*0.0513-0.5;//x 的ad返回值转化成0~255的pwm值
  29. }

  30. void dealdata()           //处理数据
  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); //函数处理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); //函数处理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)//前进 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)//左转 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)//右转 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)                  //检测按键K1是否按下
  97.         {       
  98.                 delay(1000);   //消除抖动 一般大约10ms
  99.                 if(k1==1)         //再次判断按键是否按下
  100.                 {
  101.                         bb=1;
  102.                 }
  103.                 while(k1);         //检测按键是否松开
  104.         }               
  105. }

  106. void main()
  107. {
  108.        
  109.         ADC_Init();
  110.         init_io();        //函数初始化
  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();          //遥感函数处理
  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模块发送出数据
  128.                 Check_ACK(1);   
  129.                 delay_ms(250);  
  130.        
  131.         }
  132. }
复制代码

所有资料51hei提供下载:
遥控.rar (54.65 KB, 下载次数: 13)

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

使用道具 举报

沙发
ID:1 发表于 2019-5-30 06:00 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

板凳
ID:742823 发表于 2020-6-25 15:32 | 只看该作者
为啥我的软件打不来的程序
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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