标题:
51单片机L298N控制小电机,程序修改
[打印本页]
作者:
Scorpionx
时间:
2019-10-28 19:29
标题:
51单片机L298N控制小电机,程序修改
用51单片机做恒温实验,DS18B20读取温度,低于温度下限继电器吸合加热棒加热,高于温度上限启动风扇降温,
启动风扇用L298N,
师傅要求从单片机引脚输出高低电平控制
目前降温如何用L298N没有一点思绪求大神指点程序如何修改,还有就是L298N如何接
现有程序如下
#include <reg52.h>
#include <ds18b20.h> //引入DS18B20头文件
//引脚定义:
sbit JDQ=P1^4; //继电器控制
sbit SMG_q = P1^0; //定义数码管阳级控制脚(千位)
sbit SMG_b = P1^1; //定义数码管阳级控制脚(百位)
sbit SMG_s = P1^2; //定义数码管阳级控制脚(十位)
sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)
//变量定义:
unsigned char ly_dis[4];//定义显示缓冲区
unsigned char DSU=30; //上线温度
unsigned char DSD=25; //下线温度
code unsigned char table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//表:共阳数码管 0-9
unsigned char l_posit=0; //显示位置
//函数声明:
void display(void);//显示函数,显示缓冲区内容
void delay(void);
//主函数
void main()
{
unsigned int i=0;
float tt;
int ltemp;
while(1){
if(i==0)
tmpchange(); //温度转换
if(i==100){
tt=tmp()*0.0625; //得到真实十进制温度值,因为DS18B20
//可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度。
if(tt<=DSD) //低于下线温度启动继电器
JDQ=0;
if(tt>=DSU) //达到上线温度关闭继电器
JDQ=1;
ltemp=tt*10+0.5; //放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入操作。
if(ltemp<0){ //判断第一位显示整数还是负号
ly_dis[0]=0xbf;
ltemp=0-ltemp;
}
else
ly_dis[0]=ltemp/1000;//显示百位值
ltemp=ltemp%1000;
ly_dis[1]=ltemp/100; //显示温度十位值
ltemp=ltemp%100;
ly_dis[2]=ltemp/10; //显示温度个位值
ly_dis[3]=ltemp%10; //显示小数点后一位
}
i++;
if(i==3000)
i=0;
display(); //调用显示
delay();
}
}
//显示函数,参数为显示内容
void display()
{
P0=0XFF; //
switch(l_posit){
case 0: //选择千位数码管,关闭其它位
SMG_q=0;
SMG_b=1;
SMG_s=1;
SMG_g=1;
P0=table[ly_dis[0]]; //输出显示内容
break;
case 1: //选择百位数码管,关闭其它位
SMG_q=1;
SMG_b=0;
SMG_s=1;
SMG_g=1;
P0=table[ly_dis[1]];
break;
case 2: //选择十位数码管,关闭其它位
SMG_q=1;
SMG_b=1;
SMG_s=0;
SMG_g=1;
P0=table[ly_dis[2]]&0x7f;
break;
case 3: //选择个位数码管,关闭其它位
SMG_q=1;
SMG_b=1;
SMG_s=1;
SMG_g=0;
P0=table[ly_dis[3]];
break;
}
l_posit++; //每调用一次将轮流显示一位
if(l_posit>3)
l_posit=0;
}
//延时子函数,短暂延时
void delay(void){
unsigned char i=10;
while(i--);
}
IMG_20191028_191812.jpg
(3.9 MB, 下载次数: 45)
下载附件
2019-10-28 19:31 上传
作者:
New_star
时间:
2019-10-28 21:38
你查下L298N,试着编看看。做单片机很多都是试出来的!(我也是新手)
作者:
来51学习的
时间:
2019-10-28 21:44
你好!
1、L298模块有输入、输出和使能控制
2、输入端和使能端,接单片机IO口
3、输出端接电机(风扇)
4、L298模块,一般供电12V,风扇也选12V
作者:
1915134278
时间:
2019-11-2 14:56
IN1和IN2输入PWM,他们控制的是OUT1和OUT2,OUT1和2接同一个电机,IN3和IN4同理
作者:
man1234567
时间:
2019-11-4 21:44
如果只是低温加热高温散热的话,用两个口驱动两个继电器就可以了,一个开关电热器一个开关电风扇。程序就是读温度,在相应的温度区域驱动存放易燃继电器就可以。
L298N控制小电机是控制2路电机正反转的,你根本不需要。另从图上看,模块的2个使能口全部跳在高电平上已经有效,只要控制IN1-4口就可以在OUT1-4上控制两路电机正反转了。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1