標(biāo)題: 為什么用低電平驅(qū)動(dòng)燈泡不亮啊 [打印本頁]
作者: 程成成 時(shí)間: 2017-7-1 11:32
標(biāo)題: 為什么用低電平驅(qū)動(dòng)燈泡不亮啊
當(dāng)溫度低于30度時(shí),單片機(jī)控制P2.3輸出低電平,可是燈泡不亮,是程序問題還是原理圖呀
主程序如下:#include<reg52.h>
#include "LCD.h"
#include "DS18B20.h"
#include "DS1302.h"
sbit outv=P2^0; //電機(jī)轉(zhuǎn)動(dòng)時(shí)PWM輸出口;
sbit ctr =P2^3; //控制加熱設(shè)備輸出
uchar flag2=1;
uchar tflag=1;
uchar timeflag=0;
uchar per=10; //PWM低電平所占時(shí)間
void initall();
void chesu();
void initT0();
void DispTemp(uint tem);
void DispTime();
void DispSP();
/*****************主函數(shù)**********************/
void main()
{
initall();
while(1)
{
DispTemp(gettemp());
DispTime();
if(timeflag)
DispSP();
}
}
/******************溫度顯示函數(shù)*******************/
void DispTemp(uint tem)
{
if(tflag) //第一次調(diào)用溫度顯示函數(shù)
{
tflag=0;
write_string(0,10,"Tem:");
}
if(tem<300) //隨著溫度的改變,PWM的占空比發(fā)生變化,同時(shí)加熱設(shè)備也發(fā)生變化
{
per=10;
ctr=0;
}
else
{
ctr=1;
if(tem>=300&&tem<=330)
per=5;
else
per=0;
}
write_com(0x80+14);
write_data(tem/100+48);
write_data(tem%100/10+48);
write_data('.');
write_data(tem%10+48);
write_data(0); //顯示攝氏度
}
/***************DS1302時(shí)間顯示函數(shù)*********************/
void DispTime()
{
uchar j;
gettime();
write_com(0x80);
for(j=0;j<8;j++)
write_data(buf[j]);
}
/*******************初始化****************************/
void initall()
{
initLCD();
if((read(0x83)==0x00)&(read(0x81)==0x80)) //判斷1302的秒的第8位是否為1,即是否處于低功耗狀態(tài)(振蕩器停止)
{
write(0x8E,0x00);//取消寫保護(hù)
write(0x80,0x00);
write(0x8E,0x80);//寫保護(hù)
}
initT0();
outv=0;
write_string(1,0,"Speed: 000r/min");
}
/**********************中斷初始化**********************/
void initT0()
{
TMOD=0x51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0;
TL1=0;
EA=1;
ET0=1;
TR0=1;TR1=1;
}
/*****************中斷函數(shù)*********************/
void T0_time() interrupt 1
{
uchar times;
times++;
if(times%20>per)
outv=1;
else
outv=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(times==200)
{
times=0;
timeflag=1;
}
}
/*******************電機(jī)轉(zhuǎn)速顯示函數(shù)*********************************/
void DispSP()
{
uint count=0;
timeflag=0;
write_com(0xc0+7);
count=TH1*256+TL1;
write_data(count*6/100+48);
write_data(count*6%100/10+48);
write_data(count*6%10+48);
TH1=0;
TL1=0;
}
-
1.png
(20.37 KB, 下載次數(shù): 120)
下載附件
2017-7-1 11:31 上傳
作者: 程成成 時(shí)間: 2017-7-1 11:37
求大神指點(diǎn)
作者: 小潘哥 時(shí)間: 2017-7-1 13:08
先不管其它功能,寫個(gè)程序驗(yàn)證一下這電路有沒有問題,就只讓P23為低電平,看看亮不亮先。
另外,我感覺proteus里的三極管也是有點(diǎn)問題
作者: cjjcjj1 時(shí)間: 2017-7-1 13:45
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: aiohu 時(shí)間: 2017-7-1 16:47
先看看你的電源是不是夠驅(qū)動(dòng)繼電器,方法為在PNP的C腳接一個(gè)電流表,看一下是否有毫安的電流流過
這樣你就可以判斷是不是在低電平時(shí)電流輸出來,
作者: aiohu 時(shí)間: 2017-7-1 17:01
加一個(gè)12V的VCC1接到PNP的E-------你會(huì)加的,給P2.3一個(gè)低電平, 在繼電器的線圈端加一個(gè)小燈泡,仿真在PROTEUS 里做,單獨(dú)的做一個(gè)程序,就上述幾句
作者: 程成成 時(shí)間: 2017-7-1 17:03
已加qq
作者: 程成成 時(shí)間: 2017-7-1 17:03
已經(jīng)加了qq
作者: 程成成 時(shí)間: 2017-7-1 19:57
已經(jīng)解決謝謝
作者: 程成成 時(shí)間: 2017-7-1 19:58
已解決,謝謝
作者: zl2168 時(shí)間: 2017-7-1 20:55
加一個(gè)12V的VCC1接到PNP的E,結(jié)果是無論輸出高低電平,小燈泡都會(huì)亮!
作者: 3760609865 時(shí)間: 2017-7-2 16:26
你把三極管B級(jí)電阻改為200R,保證燈的工作電壓設(shè)置為5v燈就亮了。
作者: mszhappy 時(shí)間: 2017-7-3 09:13
一般去推繼電器我喜歡用NPN的管子,PNP老是怕不飽合
作者: wangyuan06 時(shí)間: 2017-7-3 11:14
用萬用表測(cè)量一下,看到底是不是低電平?纯礋襞輧啥擞袥]有電壓。
作者: 112384 時(shí)間: 2017-7-4 09:47
先不管其它功能,寫個(gè)程序驗(yàn)證一下這電路有沒有問題,就只讓P23為低電平,看看先。 另外,我感覺proteus里的三極管也是有點(diǎn)問題
作者: ahshmj 時(shí)間: 2017-7-4 21:01
繼電器吸合不吸合?
作者: lllllllllxxxxx 時(shí)間: 2017-7-5 17:30
來個(gè)上拉電阻
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |