恒拓飞控地面控制系统
【 请允许软件访问、操作注册表 】
1、15个独立通道的启用和关闭可通过单击通道对应的数码管来调整
2、双击通道对应的数码管来调整通道颜色
3、各通道颜色及开关状态均会在软件关闭时保存在电脑内
4、各项PID参数在重启软件后不会清空,保持关闭前的数据
5、RC通道最大最小值可设定
6、根据串口通讯状况及下位机字节发送速度来调整帧时间间隔,以确保上位机解析正确
7、可根据电脑配置情况来调整UI刷新率(fps),以防止软件占用过多系统资源及卡顿
单片机源程序如下:
- /*
- 上位机测试程序,
-
- 下位机循环发送各功能模块数据帧至上位机。
-
- Hto_ES.C 为协议帧生成库函数
-
- */
- #include <stm32f10x.h>
- #include <stdlib.h>
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "led.h"
- #include "lcd.h"
- #include "adc.h"
- #include "dma.h"
- #include "Hto_ES.h"
-
- float Tmp,test_1,test_2,test_3;
-
- int i,F,sw;
- int main(void)
- {
- Stm32_Clock_Init(9); //系统时钟设置
- delay_init(72); //延时初始化
-
- uart_init(72,115200); //串口1初始化
-
- LCD_Init(); //初始化液晶
- LED_Init(); //LED初始化
- POINT_COLOR=RED; //设置字体为红色
-
- BACK_COLOR = BLACK;
-
- LCD_Clear(BLACK);
-
- LCD_ShowString(80,0,200,16,16,"ACE-Tech");
-
- POINT_COLOR = WHITE;
-
- sw = 0;
-
- test_1 = test_2 = test_3 = 0;
-
-
- //////////////////////////////////////////////////////////////////////
-
-
- while(1)
- {
- Tmp = 1.0;
-
- Tmp += 0.184;
-
- CH1_data = rand()%200;
- CH2_data = rand()%200; //15通道独立数据
- CH3_data = rand()%200;
- CH4_data = rand()%200;
- CH5_data = rand()%200;
- CH6_data = rand()%200;
- CH7_data = rand()%200;
- CH8_data = rand()%200;
- CH9_data = rand()%200;
- CH10_data = rand()%200;
- CH11_data = rand()%200;
- CH12_data = rand()%200;
- CH13_data = rand()%200;
- CH14_data = rand()%200;
- CH15_data = rand()%200;
-
- //-------------------------------------------------------------------------------
-
- Longitude_val = 11.234; //经度
- Latitude_Val = 15.634; //纬度
- Altitude_Val = 56.687; //高度
- Dir_Val = 98.685; //方位角
- SPD_Val = 12.568; //速度
-
- Voltage_Val = 11.25*100; //假定电池电压11.25v,放大100倍
- Temperture_Val = 25.67*100; //假定温度为25.67℃,放大100倍
- Satellite_Val = 7; //假定7颗可用卫星
-
- Location_Sta = 1; //假定定位ok
-
- Longitude_WE = 'W';
- Latitude_NS = 'N';
- //-------------------------------------------------------------------------------
- Pitch_Val = test_1;
- Roll_Val = test_2; //测试姿态数据
- Yaw_Val = test_3;
- test_1 += 0.078;
- test_2 += 0.088;
- test_3 += 0.098;
-
- if ( test_1 >= 180 ) test_1 = -test_1;
- if ( test_2 >= 180 ) test_2 = -test_2;
- if ( test_3 >= 360 ) test_3 = 0;
-
- //-------------------------------------------------------------------------------
- Gyro_X = 0.065;
- Gyro_Y = -5.896;
- Gyro_Z = 0.102;
-
- Accel_X = 0.008;
- Accel_Y = -0.003; //传感器校准
- Accel_Z = 1.021;
-
- Mag_X = 85.659;
- Mag_Y = 268.475;
- Mag_Z = 5.784;
- //-------------------------------------------------------------------------------
-
- PoressBar_1 = 700;
- PoressBar_2 = 800;
- PoressBar_3 = 900;
- PoressBar_4 = 1000;
- PoressBar_5 = 1200;
- PoressBar_6 = 1400; //RC 通道数据
- PoressBar_7 = 1600;
- PoressBar_8 = 1800;
- PoressBar_9 = 2000;
-
- //-------------------------------------------------------------------------------
-
- Pitch_PID_P = -569;
- Pitch_PID_I = 48;
- Pitch_PID_D = 79;
-
- Roll_PID_P = 89;
- Roll_PID_I = 21;
- Roll_PID_D = 34;
-
- Yaw_PID_P = 14;
- Yaw_PID_I = 10589;
- Yaw_PID_D = 30549;
-
- Alt_PID_P = -30468;
- Alt_PID_I = -26;
- Alt_PID_P = -1;
-
- Pos_PID_P = 5684;
- Pos_PID_I = -2;
- Pos_PID_D = 568;
-
- //////////////////////////////////////////////////////////////////////////////////
- //协议帧生成
-
- switch(sw) //循环发送各模块数据
- {
- case 1: F = HtoEs_Chart_Data_Generate(); break; //测试独立通道,返回需发送字节数
- case 2: F = HtoEs_GPS_Data_Generate(); break; //测试GPS,返回需发送字节数
- case 3: F = HtoEs_Attitude_Data_Generate(); break; //测试姿态,返回需发送字节数
- case 4: F = HtoEs_RC_Data_Generate(); break; //测试RC通道,返回需发送字节数
- case 5: F = HtoEs_PID_Data_Generate(); break; //测试PID参数,返回需发送字节数
- case 6: F = HtoEs_Senosrs_Data_Generate(); break; //测试传感器标定,返回需发送字节数
- case 7: sw = 0; break;
- }
-
- sw++;
-
- //////////////////////////////////////////////////////////////////////////////////
- // 发送部分
-
- for( i = 0 ; i < F; i++) //循环发送,直到发送完毕
- {
- while((USART1->SR&0X40)==0);
- USART1->DR = HtoEs_OutPut_Buffer[i];
- }
-
- delay_ms(3); //帧空闲时间
-
- LED1=!LED1;
- }
- }
复制代码
所有资料51hei提供下载:
HT-Hawk四轴飞行器地面站.rar
(2.32 MB, 下载次数: 52)
|