久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 溫控程序單片機IO口輸出高低電平控制L298N,如何修改程序? [打印本頁]

作者: Scorpionx    時間: 2019-10-30 20:34
標題: 溫控程序單片機IO口輸出高低電平控制L298N,如何修改程序?
用51單片機做恒溫實驗,DS18B20讀取溫度
低于溫度下限繼電器接通加熱棒加熱
高于溫度上限IO口輸出高低電平控制L298N啟動風扇降溫

繼電器的程序有了

但是IO口輸出高低電平去控制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);

//主函數,C語言的入口函數:
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--);
}


作者: 1915134278    時間: 2019-11-2 14:38
去搜搜PWM,應該對你有幫助吧
作者: man1234567    時間: 2019-11-6 10:55
你要的電扇只是停和轉兩個穩態,不需要搞那么多花花腸子。
真的精確用PWM控制電扇散熱的話,電加熱也應該有功率控制而不僅僅是繼電器開關的。
還有不明白的就是,如果僅PWM也不需要L298N,吹風和吸風對散熱的效率是怎么換算的呢 ?
感覺樓主就是和L298N干上了
作者: kmsj    時間: 2019-11-6 11:51
樓上回答正解!改繼電器為可控硅,單片機通過可控硅控對加熱棒調功,比如加熱棒50%功率發現溫度略低,加熱棒60%功率發現溫度略高,那就全功率加熱到設定溫度然后把功率降到50%,低于溫度設定值把加熱棒功率調整到60%,通過加熱棒50%和60%的功率轉換來恒溫,風扇最多起一個輔助作用,甚至可以不用風扇。樓主用加熱棒加溫,又用風扇降溫,按照我們當地的一句話,叫做:又傷馬達又費電!
作者: LIHUA李華    時間: 2019-11-6 15:21
學習下  PID 溫控吧
作者: 51凡塵    時間: 2019-11-6 18:03
溫度是有惰性的,一定是變化的值




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕在线观看一区二区 | 欧美日韩国产一区二区三区 | 欧美一区二区三区在线 | 一级片网址| 成人在线免费观看 | 日本小电影在线 | h视频在线免费观看 | 在线观看免费福利 | av一级毛片 | 久久久久久久一区 | 国产欧美日韩精品一区二区三区 | 一级黄在线观看 | 国产一区二区视频在线 | 国产精品免费观看 | 美女天天操 | 日韩色图视频 | 亚洲国产精品人人爽夜夜爽 | 伊人国产精品 | 麻豆视频在线免费看 | 日韩国产在线 | 99re在线视频 | av网站在线看 | 中文字幕久久精品 | 三级视频在线观看电影 | 天天操夜夜操 | 成人免费在线观看 | 久久久久亚洲 | 亚洲一区二区免费 | 欧美激情精品久久久久久 | 一区二区三区成人 | 国产精品视频一区二区三区 | 亚洲97 | 久久成人精品 | 成人精品一区亚洲午夜久久久 | 久久高清 | 日韩欧美中文在线 | 精产国产伦理一二三区 | 成人在线电影网站 | 欧美综合一区 | 黄a网 | 91 视频网站|