用51单片机做的太阳能自动追光系统仿真图 电路图(proteus仿真文件可以从51黑本贴附件下载):
太阳能自动追光系统的全部文件:
全部资料(压缩包)下载:
太阳能自动追光系统.zip
(48.51 KB, 下载次数: 1172)
下面是部分程序预览(完整版本请下载本帖附件):
- #include <reg52.h>
- #include <intrins.h>
- sbit spb=P1^0; //水平方向反转使能端
- sbit czb=P1^1; //垂直方向反转使能端
- sbit spa=P1^2; //水平方向正传使能端
- sbit cza=P1^3; //垂直方向正传使能端
- char zhuan[8]={0xe6,0xc7,0xd3,0x9b,0xb9,0x3d,0x7c,0x6e};
- bit ka,kb,ma,mb;
- int ia,ib;
- /*******************************************************
- 电机转动延时子函数
- ********************************************************/
- void delay_dianji(unsigned int t) //电机转动延时函数
- {
- unsigned int k;
- while(t--)
- {
- for(k=0; k<300; k++) //k从0自加一至300
- { }
- }
- }
- /*******************************************************
- 电机运转子函数
- ********************************************************/
- void dianji() //电机运转子函数
- {
- if(ma==1)
- {
- if(ka==0) //若正传标志位有效
- {
- ia++; //水平数据位自加一
- if(ia>7)ia=0; //数据位大于7,变为0
- }
- if(ka==1) //若反转标志位有效
- {
- ia--; //水平数据位自减一
- if(ia<0)ia=7; //数据位小于0,变为7
- }
- }
- if(ma==0)ia=ia; //若水平方向转动标志位失效,水平方向数据位维持不变
- if(mb==1) //垂直转动标志位有效
- {
- if(kb==0) //若正转标志位有效
- {
- ib++; //垂直数据位自加一
- if(ib>7)ib=0; //数据位大于7,变为0
- }
- if(kb==1) //若反转标志有效
- {
- ib--; //垂直数据位自减一
- if(ib<0)ib=7; //数据位小于0,变为7
- }
- }
- if(mb==0)ib=ib; //若垂直方向转动标志位失效,垂直方向数据位维持不变
- P0=zhuan[ia]; //P0发送水平转动码
- P2=zhuan[ib]; //P2发送垂直转动码
- delay_dianji(15); //调用电机延时函数
- ma=0; //水平转动标志位失效
- mb=0; //垂直转动标志位失效
- }
- //*******************************************************
-
- //********************************************************
- void fangxiang() //识别方向子函数
- {
- if(spa==1) //水平正传使能端有效
- {
- ma=1; //水平方向电机转动
- ka=0; //转动方向为正向
- }
- if(spb==1) //水平反转使能端有效
- {
- ma=1; //水平方向电机转动
- ka=1; //转动方向为反向
- }
- if(cza==1) //垂直正传使能端有效
- {
- mb=1; //垂直方向电机转动
- kb=0; //转动方向为正向
- }
- if(czb==1) //垂直反转使能端有效
- {
- mb=1; //垂直方向电机转动
- kb=1; //转动方向为反向
- }
- }
- /*******************************************************
- 主程序
- ********************************************************/
- main()
- {
- while(1) //死循环
- {
- fangxiang(); //识别方向子函数
- dianji(); //电机运行子函数
- }
- }
复制代码
|