标题:
单片机遥感控制系统程序
[打印本页]
作者:
梦不虚存
时间:
2019-5-30 03:27
标题:
单片机遥感控制系统程序
通过遥感对数据的采集送到单片机
单片机源程序如下:
/*坐标系:以接口一边为前。
前:X:0.04 Y:0.02 左前: X:0.04 Y:0.00 右前: X:0.04 Y:0.04
后:X:0.00 Y:0.02 左后: X:0.00 Y:0.00 右后: X:0.00 Y:0.04
左:X:0.02 Y:0.00
右:X:0.02 Y:0.04
*/
/***********************主函数模块****************************/
#include "api_t.h"
#include "stc12.h"
#include "intrins.h"
#include "htc12_ad.h"
#include "lcd.h"
#define uchar unsigned char
extern uchar RX_BUF[TX_PLOAD_WIDTH];
extern uchar TX_BUF[TX_PLOAD_WIDTH];
float value0=0,value1=0;
uchar Disp[]=" Pechin Science ";
uchar renddata[4]={0};
uchar i,bb=0;
int deal_rand_data[3];
int deal_rand_data2[3];
sbit k1=P1^2;
void function_handle(int b)//函数处理
{
if(b==1)
deal_rand_data2[1]=255-(deal_rand_data[2]*0.0512-0.5);//y 的ad返回值转化成0~255的pwm值
if(b==2)
deal_rand_data2[2]=deal_rand_data[2]*0.0513-0.5;//x 的ad返回值转化成0~255的pwm值
}
void dealdata() //处理数据
{
float a0,a1;
a0=value0*1000;
a1=value1*1000;
deal_rand_data[1]=(int)a0/1000%10*1000+(int)a0/100%10*100+(int)a0/10%10*10+(int)a0%10; // y
function_handle(1); //函数处理y得到0~255的pwm值
deal_rand_data[2]=(int)a1/1000%10*1000+(int)a1/100%10*100+(int)a1/10%10*10+(int)a1%10;
function_handle(2); //函数处理x得到0~255的pwm值
}
void direction_data_dealing() //遥感模块,控制各方向
{
if(deal_rand_data[1]>=2490 && deal_rand_data[1]<=2520 && deal_rand_data[2]>=2520 && deal_rand_data[2]<=2550)//静止 y x
{
renddata[1]=deal_rand_data2[1];
renddata[2]=deal_rand_data2[2];
renddata[3]='j';
renddata[4]=1;
}
if(deal_rand_data[1]>=2500 && deal_rand_data[1]<=2510 && deal_rand_data[2]>=0000 && deal_rand_data[2]<=2519
|| deal_rand_data[1]>=2500 && deal_rand_data[1]<=4200 && deal_rand_data[2]>=0000 && deal_rand_data[2]<=2519
|| deal_rand_data[1]>=0000 && deal_rand_data[1]<=2520 && deal_rand_data[2]>=0000 && deal_rand_data[2]<=2519)//前进 y x
{
renddata[1]=deal_rand_data2[1];
renddata[2]=deal_rand_data2[2];
renddata[3]='q';
renddata[4]=2;
}
if(deal_rand_data[1]>=2530 && deal_rand_data[1]<=5000 && deal_rand_data[2]>=2520 && deal_rand_data[2]<=2550)//左转 y x
{
renddata[1]=deal_rand_data2[1];
renddata[2]=deal_rand_data2[2];
renddata[3]='z';
renddata[4]=3;
}
if(deal_rand_data[1]>=0000 && deal_rand_data[1]<=2480 && deal_rand_data[2]>=2520 && deal_rand_data[2]<=2550)//右转 y x
{
renddata[1]=deal_rand_data2[1];
renddata[2]=deal_rand_data2[2];
renddata[3]='y';
renddata[4]=4;
}
if(deal_rand_data[1]>=2490 && deal_rand_data[1]<=2520 && deal_rand_data[2]>=2550 && deal_rand_data[2]<=5000
|| deal_rand_data[1]>=2530 && deal_rand_data[1]<=5000 && deal_rand_data[2]>=2550 && deal_rand_data[2]<=5000
|| deal_rand_data[1]>=0000 && deal_rand_data[1]<=2480 && deal_rand_data[2]>=2600 && deal_rand_data[2]<=5000)//后退 y x
{
renddata[1]=deal_rand_data2[1];
renddata[2]=deal_rand_data2[2];
renddata[3]='h';
renddata[4]=5;
}
}
void keydoing()
{
TX_BUF[4]=1;
}
void keypros()
{
if(k1==1) //检测按键K1是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k1==1) //再次判断按键是否按下
{
bb=1;
}
while(k1); //检测按键是否松开
}
}
void main()
{
ADC_Init();
init_io(); //函数初始化
k1=0;
while(1)
{
value0=ADC_AV(0xe0);
value1=ADC_AV(0xe1); //ad模块电压提取
dealdata();
direction_data_dealing(); //遥感函数处理
TX_BUF[0]=renddata[1];
TX_BUF[1]=renddata[2]; // y
TX_BUF[2]=renddata[4];
TX_BUF[3]=renddata[3]; // x
TX_Mode(TX_BUF); //以wifi模块发送出数据
Check_ACK(1);
delay_ms(250);
}
}
复制代码
所有资料51hei提供下载:
遥控.rar
(54.65 KB, 下载次数: 13)
2019-5-30 03:26 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-5-30 06:00
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
小橙子6969
时间:
2020-6-25 15:32
为啥我的软件打不来的程序
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1