找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于51单片机的帆板控制系统仿真及源码与实物制作

  [复制链接]
跳转到指定楼层
楼主
最近由于要参加电子设计大赛,想拿点东西练练手,随便玩玩,花了一天时间做个帆板控制系统,虽然做的一般,但也是个经验,有兴趣的可以看看,有程序,仿真,实物图都在此,全套资料可下载参考:

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):


下面是一个帆板的参考论文:


单片机源程序如下:
  1. #include"main.h"
  2. uint V_0832 =0,key_value;
  3. uint i=0,angle_test=48,angle=48;
  4. uint tab[4]={0};          //定义数组,以保存设置角度值
  5. /***************电机相关定义**********************/
  6. sbit en1=P3^7; /* L298的Input 1 */
  7. sbit s1=P3^5; /* L298的Input 1 */
  8. sbit s2=P3^6; /* L298的Input 2 */
  9. uchar t=0; /* 中断计数器 */
  10. uchar m1=90; /* 电机1速度值 */
  11. uchar tmp1; /* 电机当前速度值 */
  12. /***************电机结束*********************/
  13. void Init_interrupt()
  14. {
  15.         TMOD=0x12; /* 设定T0的工作模式为2 */
  16.         TH0=0x9B; /* 装入定时器的初值155 0.1ms*/
  17.         TL0=0x9B;
  18.         TH1=(65536-155)/256;
  19.         TL1=(65536-155)%256;
  20.         EA=1; /* 开中断 */
  21.         ET1=1;
  22.         ET0=1; /* 定时器0允许中断 */
  23.         TR0=1; /* 启动定时器0 */
  24.         TR1=1;
  25. }
  26. void main()
  27. {        
  28.         Init_interrupt();
  29.         init_1602();
  30.         s1=1;                //电机设置
  31.           s2=0;
  32.         while(1)
  33.         {        
  34. //                V_0832 = (uint)(ad0832read(1,0)*1.3);
  35.                 V_0832 = (uint)(Get_AD_Result()*1.41);        
  36.                 write_sfm3(1,10,V_0832);
  37.                 key_value=key16();
  38.                 if(key_value < 10)                                                                                        //如果输入的键值是数字键
  39.                 {
  40.                         tab[i]=key_value;
  41.                         angle_test=angle_test*10+tab[i];
  42.                         i++;                                                                                //每输入一位密码,位数自增1.
  43.                         if(i == 4)                                                                //密码输入位数控制在6位
  44.                         {
  45.                                 i = 0;
  46.                                 angle_test=0;
  47.                         }                                                                                
  48.                 }
  49.                 angle=angle_test;
  50.                 write_sfm3(2,10,angle);
  51.                
  52.         }
  53. }
  54. void timer0() interrupt 1 /* T0中断服务程序 0.1ms一次中断*/
  55. {
  56.         if(t==0) /* 1个PWM周期完成后才会接受新数值 */
  57.                 {
  58.                 tmp1=m1;
  59.                 }
  60.         if(t<tmp1) en1=1; else en1=0; /* 产生电机1的PWM信号 */
  61.         t++;
  62.         if(t>=100) t=0; /* 1个PWM信号由100次中断产生   100HZ */
  63. }
  64. void timer1() interrupt 3 /* T0中断服务程序 0.1ms一次中断*/
  65. {
  66.         TH1=(65536-155)/256;
  67.         TL1=(65536-155)%256;
  68.         if(V_0832<angle-2)
  69.                 {
  70. ……………………

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

所有资料51hei提供下载:
电赛测试.zip (1.56 MB, 下载次数: 112)


评分

参与人数 2黑币 +103 收起 理由
zhangli019 + 3 赞一个!
admin + 100 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:550094 发表于 2019-5-29 14:26 | 只看该作者
我想问adxl345可以用那个替换
回复

使用道具 举报

板凳
ID:564840 发表于 2019-6-17 17:56 | 只看该作者
你好。关于帆板控制系统的资料我下载不了,你能不能分享给我一下。十分感谢
回复

使用道具 举报

地板
ID:921538 发表于 2021-5-15 08:16 | 只看该作者
大赞,I LIKE
回复

使用道具 举报

5#
ID:922269 发表于 2021-5-16 17:52 | 只看该作者
角度传感器用的是mpu6050吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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