找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于单片机的太阳能自动寻光装置仿真与源码

  [复制链接]
跳转到指定楼层
楼主
能够自动寻光,追寻太阳,开关的作用就是相当于光敏电阻,当为低电平是,停止寻光

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


单片机源程序如下:
  1. #include <reg52.h>                                                                               
  2. #include <intrins.h>
  3. #define uint  unsigned int
  4. #define uchar unsigned char
  5.                                                                
  6. sbit         hor1=P1^0;                                                                            //水平方向正转使能端
  7. sbit     hor2=P1^1;                                                                                //水平方向反传使能端
  8. sbit         ver1=P1^2;                                                                        //垂直方向正转使能端
  9. sbit     ver2=P1^3;                                                                                //垂直方向反传使能端
  10. uchar code FWD[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}; //正转
  11. uchar code REV[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //反转

  12. bit      ka1,ka2,kb1,kb2,hormotor,vermotor;                                                               
  13. uint      ia,ib;                                                                                       
  14. /*******************************************************
  15.                      电机转动延时子函数
  16. ********************************************************/
  17. void delay_dianji(unsigned int t)                                                        //电机转动延时函数
  18. {                           
  19.    unsigned int k;                                                                               
  20.    while(t--)                                                                                       
  21.    {
  22.      for(k=0; k<300; k++)                                                                //k从0自加一至300
  23.      { }
  24.    }
  25. }
  26.                                                                                                                                                
  27. void fangxiang()                                                                                    //识别方向子函数
  28. {
  29.     if(hor1==0)                                                                                        //水平正传使能端有效
  30.         {
  31.             ia++;
  32.                 if(ia>7)                                       
  33.                 ia=0;
  34.                 P0=FWD[ia];                                                                        //转动方向为正向
  35.                 delay_dianji(15);                                                               
  36.         }                               
  37.         if(hor2==0)                                                                               //水平反转使能端有效
  38.         {
  39.                 ia++;
  40.                 if(ia>7)                                                                               
  41.                 ia=0;
  42.                 P0=REV[ia];                                                                            //转动方向为反向
  43.                 delay_dianji(15);                                                               
  44.         }
  45.     if(ver1==0)                                                                                        //垂直正传使能端有效
  46.         {
  47.                  ib++;
  48.                 if(ib>7)                                       
  49.                 ib=0;                                                                                                                                        
  50.                 P2=FWD[ib];                                                                                  //转动方向为正向
  51.                 delay_dianji(15);                                                                                       
  52.         }                                                                                                                                       
  53.     if(ver2==0)                                                                                        //垂直反转使能端有效
  54.         {                                                                                                                  
  55.             ib++;
  56.                 if(ib>7)                                       
  57.                 ib=0;                                        
  58.                 P2=REV[ib];                                                            //转动方向为反向
  59.                 delay_dianji(15);
  60.         }

  61. }

  62. main()                                                                                                        
  63. {
  64.     while(1)                                                                                        //死循环
  65.         {
  66.             fangxiang();                                                                                //识别方向子函数
  67. ……………………

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

所有资料51hei提供下载:
电机.rar (81.24 KB, 下载次数: 108)




评分

参与人数 2黑币 +58 收起 理由
13622983180 + 8
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:252768 发表于 2018-4-22 12:44 | 只看该作者
感谢分享
回复

使用道具 举报

板凳
ID:335855 发表于 2018-5-23 18:00 | 只看该作者
大佬有没有做出实物出来啊    仿真里面四个舵机是干嘛的
回复

使用道具 举报

地板
ID:336749 发表于 2018-5-23 19:32 | 只看该作者
666666
回复

使用道具 举报

5#
ID:335855 发表于 2018-5-26 19:14 | 只看该作者
还有你这个仿真里的电机是什么型号的啊    为啥转360度    而且程序驱动好像也没用PWM?不太懂
回复

使用道具 举报

6#
ID:76455 发表于 2018-5-26 21:39 | 只看该作者
不错。这个搞得可以可以
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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