驱动用的l298n。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar rec_int_flag=0
void delay_ms(uint x)
void motor_con(uchar angle,uchar speed ,uchar back,uchar direction)
uchar code Fan[8]={0x0a, 0x0b, 0x09, 0x0d, 0x05, 0x07, 0x06, 0x0e}
//1010 ,1011, 1001 ,1101,0101,0111,0110, 1110
uchar code Zhen[8] ={0x0e, 0x06, 0x07, 0x05, 0x0d, 0x09, 0x0b, 0x0a}
// 1110 ,0110 ,0111, 0101,1101,1001,1011,1010
void main()
{
while(1)
{
motor_con(1,20,0,2)
if(rec_int_flag==1)
{
while(1)
}
}
}
void delay_ms(uint x)
{
uchar i,j
for(i=0i<xi++)
for(j=0j<120j++)
}
void rev_int(void) interrupt 0
{
rec_int_flag=1
}
/***********************************************************
函数说明:
direction==0时左轮动,为1时右轮动,为2时直行。
转动角度为(7.2度*angle)。
back==1时代表后退,back==0时代表前进。
speed用于延时speed毫秒来调速。
P0为左轮电机,P1为右轮电机
***********************************************************/
void motor_con(uchar angle,uchar speed ,uchar back,uchar direction)
{
uchar m,n
switch(back)
{
case 1: //判断前进后退与否 0代表前进
{
for(m=0m<anglem++) //前进角度
{
for(n=0n<8n++)
{
if(direction==0) P1=Fan[n]//左转右转或直行。
else if(direction==1) P0=Fan[n]
else {P1=Fan[n]P0=Fan[n]}
delay_ms(speed) //调速
}
}
}break
case 0:
{
for(m=0m<anglem++)
{
for(n=0n<8n++)
{
if(direction==0) P1=Zhen[n]
else if(direction==1) P0=Zhen[n]
else {P1=Zhen[n]P0=Zhen[n]}
delay_ms(speed)
}
}
}break
default: break
}
}
不是很复杂,自己编就行,找片两路pwm的stc片,用定时器0做它的时钟,再用定时器1做个定时中断,定时刷新两路pwm的占空比,在存储器上开一片数据区存下正弦表给定时器1用。定时器0的定时长度决定画圆的大小,数据区决定圆的平滑度60分钟。海尔创立于1984年,是全球领先的美好生活和数字化转型解决方案服务商。海尔298洗烘一体机时间则为60分钟。洗衣机将显示在标准烘干程序,显示时间为2小时,同时按下启动键,洗衣机即可启动运行。连续按3下烘干键,洗衣机将显示在60分烘干程序。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)