找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机太阳能自动追光系统程序+电路+仿真

  [复制链接]
跳转到指定楼层
楼主
用51单片机做的太阳能自动追光系统仿真图 电路图(proteus仿真文件可以从51黑本贴附件下载):

太阳能自动追光系统的全部文件:


全部资料(压缩包)下载: 太阳能自动追光系统.zip (48.51 KB, 下载次数: 1172)



下面是部分程序预览(完整版本请下载本帖附件):
  1. #include <reg52.h>                                                                                
  2. #include <intrins.h>                                                                        
  3. sbit            spb=P1^0;                                                                            //水平方向反转使能端
  4. sbit            czb=P1^1;                                                                        //垂直方向反转使能端
  5. sbit     spa=P1^2;                                                                                //水平方向正传使能端
  6. sbit     cza=P1^3;                                                                                //垂直方向正传使能端
  7. char    zhuan[8]={0xe6,0xc7,0xd3,0x9b,0xb9,0x3d,0x7c,0x6e};
  8. bit      ka,kb,ma,mb;                                                                        
  9. int      ia,ib;                                                                                       
  10. /*******************************************************
  11.                      电机转动延时子函数
  12. ********************************************************/
  13. void delay_dianji(unsigned int t)                                                        //电机转动延时函数
  14. {                           
  15.    unsigned int k;                                                                                
  16.    while(t--)                                                                                       
  17.    {
  18.      for(k=0; k<300; k++)                                                                //k从0自加一至300
  19.      { }
  20.    }
  21. }                                                                                                                                                
  22. /*******************************************************
  23.                      电机运转子函数
  24. ********************************************************/
  25. void  dianji()                                                                                        //电机运转子函数
  26. {                                                                                                                 
  27.     if(ma==1)                                                                                       
  28.         {                                                                                                
  29.             if(ka==0)                                                                                //若正传标志位有效
  30.             {                                                                                                                           
  31.                 ia++;                                                                                //水平数据位自加一
  32.                 if(ia>7)ia=0;                                                                //数据位大于7,变为0
  33.             }
  34.         if(ka==1)                                                                                //若反转标志位有效
  35.         {   
  36.                 ia--;                                                                                //水平数据位自减一
  37.                     if(ia<0)ia=7;                                                                   //数据位小于0,变为7
  38.         }
  39.         }
  40.         if(ma==0)ia=ia;                //若水平方向转动标志位失效,水平方向数据位维持不变
  41.         if(mb==1)                                                                                        //垂直转动标志位有效
  42.         {
  43.             if(kb==0)                                                                                 //若正转标志位有效
  44.             {   
  45.                     ib++;                                                                                //垂直数据位自加一
  46.                     if(ib>7)ib=0;                                                                //数据位大于7,变为0
  47.             }
  48.             if(kb==1)                                                                            //若反转标志有效
  49.             {                                                                                                                           
  50.                     ib--;                                                                            //垂直数据位自减一
  51.                     if(ib<0)ib=7;                                                            //数据位小于0,变为7
  52.             }
  53.         }
  54.         if(mb==0)ib=ib;                //若垂直方向转动标志位失效,垂直方向数据位维持不变
  55.         P0=zhuan[ia];                                                                            //P0发送水平转动码
  56.         P2=zhuan[ib];                                                                            //P2发送垂直转动码
  57.         delay_dianji(15);                                                                            //调用电机延时函数
  58.         ma=0;                                                                                            //水平转动标志位失效
  59.         mb=0;                                                                                            //垂直转动标志位失效
  60. }
  61. //*******************************************************
  62.                   
  63. //********************************************************
  64. void fangxiang()                                                                                    //识别方向子函数
  65. {
  66.     if(spa==1)                                                                                        //水平正传使能端有效
  67.         {
  68.             ma=1;                                                                                        //水平方向电机转动
  69.                 ka=0;                                                                                        //转动方向为正向
  70.         }
  71.         if(spb==1)                                                                               //水平反转使能端有效
  72.         {
  73.             ma=1;                                                                                        //水平方向电机转动
  74.                 ka=1;                                                                                        //转动方向为反向
  75.         }
  76.     if(cza==1)                                                                                        //垂直正传使能端有效
  77.         {                                                                                                                                       
  78.             mb=1;                                                                                        //垂直方向电机转动
  79.                 kb=0;                                                                                        //转动方向为正向
  80.         }                                                                                                                                       
  81.     if(czb==1)                                                                                        //垂直反转使能端有效
  82.         {                                                                                                                  
  83.             mb=1;                                                                                        //垂直方向电机转动
  84.                 kb=1;                                                                                        //转动方向为反向
  85.         }
  86. }
  87. /*******************************************************
  88.                         主程序
  89. ********************************************************/
  90. main()                                                                                                         
  91. {
  92.     while(1)                                                                                        //死循环
  93.         {
  94.             fangxiang();                                                                                //识别方向子函数
  95.             dianji();                                                                                 //电机运行子函数
  96.         }
  97. }
复制代码

评分

参与人数 9黑币 +92 收起 理由
wenkang + 5 共享资料的黑币奖励!
13622983180 + 7 绝世好帖!
yuan960221 + 5 赞一个!
zwjviki + 5 很给力!
GloomyHeart + 5 很给力!
一笑泯恩仇啊 + 5 绝世好帖!
ggg620 + 5
杰克稻草 + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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