然后这是我的程序,大佬们也帮忙看一看
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit PWM2A=P1^4;//定义M1电机为P1.4的I/O口,即为小车右边第一个电机
sbit PWM2B=P1^5;//定义M2电机为P1.5的I/O口,即为小车左边第一个电机
sbit PWM0B=P1^6;//定义M3电机为P1.6的I/O口,即为小车左边第二个电机
sbit PWM0A=P1^7;//定义M4电机为P1.7的I/O口,即为小车右边第二个电机
sbit SER =P3^4;//定义74hc595芯片 DS脚数据线
sbit RCK =P3^5;//定义 LATCH脚 输出存储器锁存时钟线
sbit SCK =P3^6;//定义输入时钟线
void delay(void)//延迟500ms
{
unsigned char a,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}
void HC595SendData(u8 SendVal)
{
u8 i;
for(i=0;i<8;i=i++)
{
SER=SendVal&0x80;//1000 0000 1000 0000
SendVal=SendVal<<1;//0000 0000 0000 0000 每次取1位左移
SCK=0; //先将串行时钟输入端SH_CP置成低电平
_nop_();
_nop_(); //两个时钟周期
SCK=1; //数据在串行时钟输入端SH_CP的上升沿输入到移位寄存器
}
RCK=0; //锁存
_nop_();
_nop_();
RCK=1; //移位寄存器上升沿时,数据进入存储寄存器
}
void main()
{
PWM2A=1; //M1电机使能
PWM2B=1; //M2电机使能
PWM0B=1; //M3电机使能
PWM0A=1; //M4电机使能
HC595SendData(0x6a);//01101010 全部电机正转,小车前进
delay();
while(1);
} |