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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3227|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

溫控程序單片機IO口輸出高低電平控制L298N,如何修改程序?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:622126 發(fā)表于 2019-10-30 20:34 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
30黑幣
用51單片機做恒溫實驗,DS18B20讀取溫度
低于溫度下限繼電器接通加熱棒加熱
高于溫度上限IO口輸出高低電平控制L298N啟動風扇降溫

繼電器的程序有了

但是IO口輸出高低電平去控制L298N的程序不知道怎么添加了
希望大神幫忙加一段輸出高低電平控制的程序




現(xiàn)有程序如下
//頭文件:
#include <reg52.h>
#include <ds18b20.h> //引入DS18B20頭文件

//引腳定義:  
sbit JDQ=P1^4;  //繼電器控制
sbit SMG_q = P1^0; //定義數(shù)碼管陽級控制腳(千位)
sbit SMG_b = P1^1; //定義數(shù)碼管陽級控制腳(百位)
sbit SMG_s = P1^2; //定義數(shù)碼管陽級控制腳(十位)
sbit SMG_g = P1^3; //定義數(shù)碼管陽級控制腳(個位)

//變量定義:
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;   //得到真實十進制溫度值,因為DS18B20
        //可以精確到0.0625度,所以讀回數(shù)據(jù)的最低位代表的是0.0625度。
   if(tt<=DSD)  //低于下線溫度啟動繼電器
    JDQ=0;  
   if(tt>=DSU)  //達到上線溫度關(guān)閉繼電器
    JDQ=1;

     ltemp=tt*10+0.5;    //放大十倍,這樣做的目的將小數(shù)點后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時進行一個四舍五入操作。
   if(ltemp<0){  //判斷第一位顯示整數(shù)還是負號
    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;  //顯示小數(shù)點后一位
  }
  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:  //選擇個位數(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ù),短暫延時
void delay(void){  
unsigned char i=10;
while(i--);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

5#
ID:424408 發(fā)表于 2019-11-6 18:03 | 只看該作者
溫度是有惰性的,一定是變化的值
回復(fù)

使用道具 舉報

地板
ID:121029 發(fā)表于 2019-11-6 15:21 | 只看該作者
學(xué)習(xí)下  PID 溫控吧
回復(fù)

使用道具 舉報

板凳
ID:383215 發(fā)表于 2019-11-6 11:51 | 只看該作者
樓上回答正解!改繼電器為可控硅,單片機通過可控硅控對加熱棒調(diào)功,比如加熱棒50%功率發(fā)現(xiàn)溫度略低,加熱棒60%功率發(fā)現(xiàn)溫度略高,那就全功率加熱到設(shè)定溫度然后把功率降到50%,低于溫度設(shè)定值把加熱棒功率調(diào)整到60%,通過加熱棒50%和60%的功率轉(zhuǎn)換來恒溫,風扇最多起一個輔助作用,甚至可以不用風扇。樓主用加熱棒加溫,又用風扇降溫,按照我們當?shù)氐囊痪湓挘凶觯河謧R達又費電!
回復(fù)

使用道具 舉報

沙發(fā)
ID:584814 發(fā)表于 2019-11-6 10:55 | 只看該作者
你要的電扇只是停和轉(zhuǎn)兩個穩(wěn)態(tài),不需要搞那么多花花腸子。
真的精確用PWM控制電扇散熱的話,電加熱也應(yīng)該有功率控制而不僅僅是繼電器開關(guān)的。
還有不明白的就是,如果僅PWM也不需要L298N,吹風和吸風對散熱的效率是怎么換算的呢 ?
感覺樓主就是和L298N干上了
回復(fù)

使用道具 舉報

樓主
ID:496421 發(fā)表于 2019-11-2 14:38 | 只看該作者
去搜搜PWM,應(yīng)該對你有幫助吧
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 丝袜美腿一区二区三区动态图 | 精品福利一区二区三区 | 亚洲成人三级 | 国内精品一区二区三区 | 国产aaaaav久久久一区二区 | 成人精品视频在线观看 | 日韩精品久久 | 欧美网站一区二区 | 在线不卡视频 | 国产精品一区二区三区四区五区 | 成人午夜精品一区二区三区 | 中文字幕在线看 | 一区二区欧美在线 | 在线观看国产 | 精品欧美一区二区三区久久久 | 97成人精品 | 别c我啊嗯国产av一毛片 | 午夜视频在线观看网站 | 爱爱免费视频 | 奇米影视在线 | 日韩精品无码一区二区三区 | 久久精品com | 国产三区精品 | 一区二区三区四区电影视频在线观看 | 伊人久久精品一区二区三区 | 在线视频中文字幕 | 欧美精品一区二区在线观看 | 亚洲免费人成在线视频观看 | 午夜爽爽爽男女免费观看影院 | 精品国产一区二区三区久久久蜜月 | 午夜影视 | 精品国产一区二区 | 亚洲成av人影片在线观看 | 亚州影院| 蜜桃视频在线观看免费视频网站www | 国产精品区一区二 | 一区二区手机在线 | 国产在线高清 | 国产特级毛片 | 玖玖综合网| 久久免费精品视频 |