亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
溫控程序單片機(jī)IO口輸出高低電平控制L298N,如何修改程序?
[打印本頁]
作者:
Scorpionx
時(shí)間:
2019-10-30 20:34
標(biāo)題:
溫控程序單片機(jī)IO口輸出高低電平控制L298N,如何修改程序?
用51單片機(jī)做恒溫實(shí)驗(yàn),DS18B20讀取溫度
低于溫度下限繼電器接通加熱棒加熱
高于溫度上限IO口輸出高低電平控制L298N啟動(dòng)風(fēng)扇降溫
繼電器的程序有了
但是IO口輸出高低電平去控制L298N的程序不知道怎么添加了
希望大神幫忙加一段輸出高低電平控制的程序
現(xiàn)有程序如下
//頭文件:
#include <reg52.h>
#include <ds18b20.h> //引入DS18B20頭文件
//引腳定義:
sbit JDQ=P1^4; //繼電器控制
sbit SMG_q = P1^0; //定義數(shù)碼管陽級(jí)控制腳(千位)
sbit SMG_b = P1^1; //定義數(shù)碼管陽級(jí)控制腳(百位)
sbit SMG_s = P1^2; //定義數(shù)碼管陽級(jí)控制腳(十位)
sbit SMG_g = P1^3; //定義數(shù)碼管陽級(jí)控制腳(個(gè)位)
//變量定義:
unsigned char ly_dis[4];//定義顯示緩沖區(qū)
unsigned char DSU=30; //上線溫度
unsigned char DSD=25; //下線溫度
code unsigned char table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//表:共陽數(shù)碼管 0-9
unsigned char l_posit=0; //顯示位置
//函數(shù)聲明:
void display(void);//顯示函數(shù),顯示緩沖區(qū)內(nèi)容
void delay(void);
//主函數(shù),C語言的入口函數(shù):
void main()
{
unsigned int i=0;
float tt;
int ltemp;
while(1){
if(i==0)
tmpchange(); //溫度轉(zhuǎn)換
if(i==100){
tt=tmp()*0.0625; //得到真實(shí)十進(jìn)制溫度值,因?yàn)镈S18B20
//可以精確到0.0625度,所以讀回?cái)?shù)據(jù)的最低位代表的是0.0625度。
if(tt<=DSD) //低于下線溫度啟動(dòng)繼電器
JDQ=0;
if(tt>=DSU) //達(dá)到上線溫度關(guān)閉繼電器
JDQ=1;
ltemp=tt*10+0.5; //放大十倍,這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時(shí)進(jìn)行一個(gè)四舍五入操作。
if(ltemp<0){ //判斷第一位顯示整數(shù)還是負(fù)號(hào)
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; //顯示溫度個(gè)位值
ly_dis[3]=ltemp%10; //顯示小數(shù)點(diǎn)后一位
}
i++;
if(i==3000)
i=0;
display(); //調(diào)用顯示
delay();
}
}
//顯示函數(shù),參數(shù)為顯示內(nèi)容
void display()
{
P0=0XFF; //
switch(l_posit){
case 0: //選擇千位數(shù)碼管,關(guān)閉其它位
SMG_q=0;
SMG_b=1;
SMG_s=1;
SMG_g=1;
P0=table[ly_dis[0]]; //輸出顯示內(nèi)容
break;
case 1: //選擇百位數(shù)碼管,關(guān)閉其它位
SMG_q=1;
SMG_b=0;
SMG_s=1;
SMG_g=1;
P0=table[ly_dis[1]];
break;
case 2: //選擇十位數(shù)碼管,關(guān)閉其它位
SMG_q=1;
SMG_b=1;
SMG_s=0;
SMG_g=1;
P0=table[ly_dis[2]]&0x7f;
break;
case 3: //選擇個(gè)位數(shù)碼管,關(guān)閉其它位
SMG_q=1;
SMG_b=1;
SMG_s=1;
SMG_g=0;
P0=table[ly_dis[3]];
break;
}
l_posit++; //每調(diào)用一次將輪流顯示一位
if(l_posit>3)
l_posit=0;
}
//延時(shí)子函數(shù),短暫延時(shí)
void delay(void){
unsigned char i=10;
while(i--);
}
作者:
1915134278
時(shí)間:
2019-11-2 14:38
去搜搜PWM,應(yīng)該對(duì)你有幫助吧
作者:
man1234567
時(shí)間:
2019-11-6 10:55
你要的電扇只是停和轉(zhuǎn)兩個(gè)穩(wěn)態(tài),不需要搞那么多花花腸子。
真的精確用PWM控制電扇散熱的話,電加熱也應(yīng)該有功率控制而不僅僅是繼電器開關(guān)的。
還有不明白的就是,如果僅PWM也不需要L298N,吹風(fēng)和吸風(fēng)對(duì)散熱的效率是怎么換算的呢 ?
感覺樓主就是和L298N干上了
作者:
kmsj
時(shí)間:
2019-11-6 11:51
樓上回答正解!改繼電器為可控硅,單片機(jī)通過可控硅控對(duì)加熱棒調(diào)功,比如加熱棒50%功率發(fā)現(xiàn)溫度略低,加熱棒60%功率發(fā)現(xiàn)溫度略高,那就全功率加熱到設(shè)定溫度然后把功率降到50%,低于溫度設(shè)定值把加熱棒功率調(diào)整到60%,通過加熱棒50%和60%的功率轉(zhuǎn)換來恒溫,風(fēng)扇最多起一個(gè)輔助作用,甚至可以不用風(fēng)扇。樓主用加熱棒加溫,又用風(fēng)扇降溫,按照我們當(dāng)?shù)氐囊痪湓挘凶觯河謧R達(dá)又費(fèi)電!
作者:
LIHUA李華
時(shí)間:
2019-11-6 15:21
學(xué)習(xí)下 PID 溫控吧
作者:
51凡塵
時(shí)間:
2019-11-6 18:03
溫度是有惰性的,一定是變化的值
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1