|

楼主 |
发表于 2022-11-6 10:41:19
|
显示全部楼层
代码:
#include<reg52.h>
#include"LCD1602.H"
unsigned int wupin;
sbit PWM1=P1^6; sbit PWM2=P1^7;
sbit IND=P1^0; sbit INC=P1^1;
sbit INB=P1^2; sbit INA=P1^3;
sbit sw=P3^2;
unsigned char hl1,hl2;
unsigned int num;
unsigned int i;
void main()
{
wupin=0;
TMOD=0X25; //0010 0101
TH0=0;
TL0=0;
TR0=1;
EA=1;
EX0=1;
IE0=1;
PX0=1;
IT0=1;
num=0;
hl1=400;
hl2=400;
PWM1=1;
PWM2=1;
INA=1;INB=0;
INC=1;IND=0;
TR1=1;
TH1=236;
TL1=236;
ET1=1;
LCD_Init();
while(1)
{
LCD_ShowNum(1,1,wupin,5);
}
}
void Timer0_() interrupt 0
{
wupin++;
}
void Timer1() interrupt 4 //20us
{TF1=0;
num++;
if(num<=hl1)
{PWM1=1;
}
if(hl1<num<500)
{PWM1=0;
}
if(num<=hl2)
{PWM2=1;
}
if(hl2<num<500)
{PWM2=0;
}
if(num==45)
{PWM1=1;
PWM2=1;
num=0;
}
}
void LCD_Init()
{
LCD_WriteCommand(0x38);
LCD_WriteCommand(0x0c);
LCD_WriteCommand(0x06);
LCD_WriteCommand(0x01);
}
#ifndef __LCD1602_H__
#define __LCD1602_H__
void LCD_Init();
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char);
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String);
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length);
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void lcd1602_clear(void);
#endif
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--)
{
LCD_WriteData(Number/LCD_Pow(10,i-1)%10+'0');
}
}
老师,这是修改后的二次仿真。
进度:新增加驱动和转机,更新完成驱动程序,仿真已添加驱动和转机,以上为仿真图和程序代码。
问题:L298N驱动提供给电机的电压过低,无法带动传送带滚动,应该如何改进?
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|