找回密码
 立即注册

QQ登录

只需一步,快速开始

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

自动巡航小船制作 北斗导航+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, 下载次数: 318)



评分

参与人数 3黑币 +115 收起 理由
vvv64 + 5 共享资料的黑币奖励!
tieq1952 + 10 很给力!
admin + 100 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2017-7-4 01:28 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:217359 发表于 2017-7-5 14:47 | 只看该作者
厉害了 我的哥
回复

使用道具 举报

地板
ID:48413 发表于 2017-8-7 19:47 | 只看该作者
楼主高手啊,赞一个
回复

使用道具 举报

5#
ID:165117 发表于 2017-8-9 17:11 | 只看该作者
楼主厉害了 都应用北斗导航了!!
回复

使用道具 举报

6#
ID:277616 发表于 2018-1-19 09:27 来自手机 | 只看该作者
楼主好厉害~正好有船模比赛,受用了~
回复

使用道具 举报

7#
ID:253767 发表于 2018-1-20 11:48 | 只看该作者
北斗导航应用,可以玩一玩
回复

使用道具 举报

8#
ID:302512 发表于 2018-4-5 20:11 | 只看该作者
想知道楼主怎么解决精确度的问题,GPS误差肯定很大的,怎么处理的呀。如果有视频就好了。
回复

使用道具 举报

9#
ID:302512 发表于 2018-5-8 11:25 | 只看该作者
给力给力  就不知道定位 精度如何
回复

使用道具 举报

10#
ID:281465 发表于 2018-5-16 16:07 | 只看该作者
下载看看,多学习一下
回复

使用道具 举报

11#
ID:385137 发表于 2018-8-27 10:18 | 只看该作者
感谢共享  正好需要 谢谢
回复

使用道具 举报

12#
ID:105688 发表于 2018-10-2 15:21 来自手机 | 只看该作者
学习一下
回复

使用道具 举报

13#
ID:517990 发表于 2019-4-21 19:34 | 只看该作者
厉害了,谢谢
回复

使用道具 举报

14#
ID:484435 发表于 2019-5-15 18:58 | 只看该作者
谢谢分享
回复

使用道具 举报

15#
ID:314732 发表于 2019-8-22 21:18 | 只看该作者
学习一下
回复

使用道具 举报

16#
ID:605186 发表于 2019-8-29 19:44 来自手机 | 只看该作者
好厉害
回复

使用道具 举报

17#
ID:494344 发表于 2020-2-2 20:25 | 只看该作者
感谢分享
回复

使用道具 举报

18#
ID:128989 发表于 2020-2-5 13:21 | 只看该作者
有没有做成实物啊
回复

使用道具 举报

19#
ID:687469 发表于 2020-3-29 12:14 | 只看该作者
谢谢分享!先下载学习。
回复

使用道具 举报

20#
ID:373684 发表于 2020-4-10 23:53 | 只看该作者
搞1个巡逻机器人也好啊
回复

使用道具 举报

21#
ID:727275 发表于 2020-4-13 17:09 | 只看该作者
感谢楼主共享楼主厉害了 都应用北斗导航了!
回复

使用道具 举报

22#
ID:787412 发表于 2020-6-23 11:15 | 只看该作者
谢谢分享!先下载学习。
回复

使用道具 举报

23#
ID:517951 发表于 2020-11-15 17:14 | 只看该作者
不错,值得学习。51hei有你更精彩!!
回复

使用道具 举报

24#
ID:923469 发表于 2021-5-18 20:02 | 只看该作者
厉害, 都应用北斗导航了!!
回复

使用道具 举报

25#
ID:826754 发表于 2021-5-20 11:35 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

26#
ID:603812 发表于 2021-6-22 01:21 | 只看该作者
顶贴别沉了,没有做的吗?
回复

使用道具 举报

27#
ID:980503 发表于 2022-6-2 00:34 | 只看该作者
51hei有你更精彩
回复

使用道具 举报

28#
ID:704640 发表于 2022-6-4 10:50 | 只看该作者
太强大了,虽然现在看不懂,先学习先
回复

使用道具 举报

29#
ID:25103 发表于 2022-9-14 13:40 | 只看该作者

楼主高手啊,赞一个
回复

使用道具 举报

30#
ID:51321 发表于 2022-10-28 12:13 | 只看该作者

好资料,51黑有你更精彩!!!
回复

使用道具 举报

31#
ID:824664 发表于 2023-3-14 21:42 | 只看该作者
真正你的强大,能自动驾驶的车。
回复

使用道具 举报

32#
ID:363917 发表于 2023-3-18 14:50 | 只看该作者
都是大神
回复

使用道具 举报

33#
ID:1018021 发表于 2024-4-10 09:11 | 只看该作者
还有北斗,好厉害呀
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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