标题: 自动巡航小船制作 北斗导航+SI4432通讯+stm32主控 [打印本页]

作者: 1511032143    时间: 2017-7-3 21:50
标题: 自动巡航小船制作 北斗导航+SI4432通讯+stm32主控
这是一个以stm32为主控芯片制作的小船,通过51单片机制作遥控器并以si4432作为通讯模块进行通讯,可以进行设点自动巡航操作,作为一个刚入门的菜逼程序写的有点抠脚,大神们多多包涵。(遥控器原理图已丢失,附件中只有船的原理图以及船和遥控器的程序)
原理图:

北斗导航系统的stm32单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "pwm.h"
  5. #include "usart.h"
  6. #include "GY273.h"
  7. #include "huo.h"
  8. #include "nokia_5110.h"
  9. #include "rf4432.h"
  10. extern struct _pid pid;
  11. extern struct autoturn hello;

  12. int main(void)
  13. {        
  14.          int iii;  
  15.          
  16.          delay_init();                     //延时函数初始化         
  17.          LED_Init();                          //初始化与LED连接的硬件接口
  18.          LCD_init();
  19.          delay_ms(500);
  20.          Init_HMC5883();
  21.          uart_init(9600);
  22.    uart_init2(9600);
  23.    TIM2_PWM_Init(10000,0);
  24.          PID_init();
  25.          RF4432_Init();
  26.          RF4432_SetRxMode();
  27.          order();/*向北斗发送AT指令*/
  28.    LCD_write_english_string(0,3,"wait");
  29.          hello.juli=3.5;
  30.          hello.num=3;
  31.   while(1)
  32.         {
  33.                 if(iii==hello.Actual_du){iii=hello.Actual_du-1;}//无用语句
  34.     get_lc(&hello);//无线处理
  35.                 TIM_SetCompare1(TIM2,(uint)(10000-(hello.su1)*10.0));                //A1左轮
  36.                 TIM_SetCompare2(TIM2,(uint)(10000-(hello.su2)*10.0));                //A0右轮
  37.                
  38. ……………………

  39. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

遥控器51单片机源程序如下:
  1. #include <STC12C5A60S2.H>

  2. #include <intrins.h>
  3. #include <string.h>
  4. #include "uart.h"
  5. #include "spi.h"
  6. #include "rf4432.h"
  7. #include "tm1638.h"
  8. #define uchar  unsigned char
  9. #define uint   unsigned int
  10. #define RF4432_TxBuf_Len 4
  11. #define RF4432_RxBuf_Len 4   //定义RF4432数据包长度
  12. #define IAP_ADDRESS 0x0000
  13. typedef unsigned char BYTE;
  14.   typedef unsigned int WORD;
  15. extern void Delay(unsigned int n);
  16. extern void IapWriteByte(WORD addr, BYTE dat);
  17. extern void IapEraseSector(WORD addr);
  18. extern BYTE IapReadByte(WORD addr);
  19. sbit deng=P1^4;
  20. //sbit set1=P4^0;
  21. //sbit set2=P0^1;
  22. //sbit set3=P0^3;
  23. //sbit set4=P0^5;
  24. //sbit set5=P0^7;
  25. //sbit set6=P2^1;
  26. //sbit go=P4^2;
  27. //sbit left=P2^3;
  28. //sbit right=P2^7;
  29. //sbit stop=P2^5;
  30. //sbit ji1=P1^0;

  31. void main(void)
  32. {
  33.         unsigned char i;         unsigned int h;
  34.         deng=0;
  35.         SPI_Init();
  36.         UART_Init();
  37.         RF4432_Init();
  38.         RF4432_SetRxMode();         //设置成接收模式
  39.         init_TM1638();
  40.     P1 = 0xfe;
  41.     Delay(10);
  42.     IapEraseSector(IAP_ADDRESS);

  43.     P1 = 0xfc;
  44.     Delay(10);
  45.     for (h=0; h<512; h++)
  46.     {
  47.         IapWriteByte(IAP_ADDRESS+h, 10);
  48.     }

  49.     P1 = 0xf8;
  50.     Delay(10);
  51.     /*for (h=0; h<512; h++)
  52.     {
  53.         if (IapReadByte(IAP_ADDRESS+h) != (BYTE)h)
  54.             goto Error;
  55.     } */

  56.         while(1)
  57.         {        
  58.         /*        i=Read_key();                          //读按键值
  59.                 if(i<8)//如果有数字被按下
  60.                 {
  61.                         //Write_DATA(i<<1,tab[i]);
  62.                         Write_allLED(1<<i);
  63.                         while(Read_key()==i);                       //等待按键释放
  64.                         switch (i)
  65.                         {
  66.                                 case 0 :RF4432_TxBuf[0]='P';RF4432_TxBuf[1]='F';break;
  67.                                 case 1 :RF4432_TxBuf[0]='P';RF4432_TxBuf[1]='L';break;
  68.                                 case 2 :RF4432_TxBuf[0]='P';RF4432_TxBuf[1]='R';break;
  69.                                 case 3 :RF4432_TxBuf[0]='P';RF4432_TxBuf[1]='P';break;
  70.                                 case 4 :RF4432_TxBuf[0]='S';RF4432_TxBuf[1]=0;break;
  71.                                 case 5 :RF4432_TxBuf[0]='S';RF4432_TxBuf[1]=1;break;
  72.                                 case 6 :RF4432_TxBuf[0]='S';RF4432_TxBuf[1]=2;break;
  73.                                 case 7 :RF4432_TxBuf[0]='R';RF4432_TxBuf[1]='R';break;
  74.                         }
  75.                         
  76.                 }
  77.                
  78. //                if(RF4432_RxPacket())
  79. //                {
  80. //                        
  81. //                        RF4432_ReadBurestReg(FIFO_ACCESS,RF4432_RxBuf,RF4432_RxBuf_Len);
  82. //                        RF4432_SetRxMode();
  83. //                        send_str_len(RF4432_RxBuf,32);
  84. //                        deng = ~deng;
  85. //                }
  86.                 RF4432_TxPacket();
  87.                 deng = ~deng; */
  88.          }
  89. }


  90. /* void main()
  91. {
  92.     WORD h;
  93.     P1 = 0xfe;
  94.     Delay(10);
  95.     IapEraseSector(IAP_ADDRESS);
  96.     for (h=0; h<512; h++)
  97.     {
  98.         if (IapReadByte(IAP_ADDRESS+h) != 0xff)
  99.             goto Error;
  100.     }

  101.     P1 = 0xfc;
  102.     Delay(10);
  103.     for (h=0; h<512; h++)
  104.     {
  105. ……………………

  106. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


所有资料51hei提供下载:
无人船.rar (525.5 KB, 下载次数: 324)




作者: admin    时间: 2017-7-4 01:28
好资料,51黑有你更精彩!!!
作者: asdsadsadasd    时间: 2017-7-5 14:47
厉害了 我的哥
作者: meilidianzhi    时间: 2017-8-7 19:47
楼主高手啊,赞一个
作者: gdatgb    时间: 2017-8-9 17:11
楼主厉害了 都应用北斗导航了!!
作者: echoma    时间: 2018-1-19 09:27
楼主好厉害~正好有船模比赛,受用了~
作者: tieq1952    时间: 2018-1-20 11:48
北斗导航应用,可以玩一玩
作者: 有八块腹肌的鱼    时间: 2018-4-5 20:11
想知道楼主怎么解决精确度的问题,GPS误差肯定很大的,怎么处理的呀。如果有视频就好了。
作者: 有八块腹肌的鱼    时间: 2018-5-8 11:25
给力给力  就不知道定位 精度如何
作者: eastwin    时间: 2018-5-16 16:07
下载看看,多学习一下
作者: zhoubujin    时间: 2018-8-27 10:18
感谢共享  正好需要 谢谢
作者: 学员    时间: 2018-10-2 15:21
学习一下
作者: ngrakj    时间: 2019-4-21 19:34
厉害了,谢谢
作者: 迁就    时间: 2019-5-15 18:58
谢谢分享
作者: 夕阳醉了I    时间: 2019-8-22 21:18
学习一下
作者: 3424773030    时间: 2019-8-29 19:44
好厉害
作者: WQY123654    时间: 2020-2-2 20:25
感谢分享
作者: yhgwork    时间: 2020-2-5 13:21
有没有做成实物啊
作者: rm3721    时间: 2020-3-29 12:14
谢谢分享!先下载学习。
作者: cr8526    时间: 2020-4-10 23:53
搞1个巡逻机器人也好啊
作者: whwitp    时间: 2020-4-13 17:09
感谢楼主共享楼主厉害了 都应用北斗导航了!
作者: liang_work    时间: 2020-6-23 11:15
谢谢分享!先下载学习。
作者: rayin    时间: 2020-11-15 17:14
不错,值得学习。51hei有你更精彩!!
作者: cccao1    时间: 2021-5-18 20:02
厉害, 都应用北斗导航了!!
作者: 川蜀浪子    时间: 2021-5-20 11:35
好资料,51黑有你更精彩!!!
作者: 我来了来了    时间: 2021-6-22 01:21
顶贴别沉了,没有做的吗?

作者: sabo1655    时间: 2022-6-2 00:34
51hei有你更精彩

作者: chenyucy72    时间: 2022-6-4 10:50
太强大了,虽然现在看不懂,先学习先
作者: huaishang    时间: 2022-9-14 13:40

楼主高手啊,赞一个
作者: lyhot    时间: 2022-10-28 12:13

好资料,51黑有你更精彩!!!
作者: sdlyyy    时间: 2023-3-14 21:42
真正你的强大,能自动驾驶的车。
作者: szmj    时间: 2023-3-18 14:50
都是大神
作者: xxxx13    时间: 2024-4-10 09:11
还有北斗,好厉害呀




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1