找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么用低電平驅(qū)動燈泡不亮啊

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:202637 發(fā)表于 2017-7-1 11:32 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
當溫度低于30度時,單片機控制P2.3輸出低電平,可是燈泡不亮,是程序問題還是原理圖呀
主程序如下:#include<reg52.h>
#include "LCD.h"
#include "DS18B20.h"
#include "DS1302.h"
sbit  outv=P2^0;           //電機轉(zhuǎn)動時PWM輸出口;
sbit  ctr =P2^3;           //控制加熱設(shè)備輸出
uchar  flag2=1;
uchar  tflag=1;
uchar  timeflag=0;
uchar  per=10;             //PWM低電平所占時間
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è)備也發(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ù)*********************/
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);//取消寫保護
       write(0x80,0x00);
       write(0x8E,0x80);//寫保護
    }
    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;     
    }   
}
/*******************電機轉(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)

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

使用道具 舉報

沙發(fā)
ID:202637 發(fā)表于 2017-7-1 11:37 | 只看該作者
求大神指點
回復(fù)

使用道具 舉報

板凳
ID:179958 發(fā)表于 2017-7-1 13:08 | 只看該作者
先不管其它功能,寫個程序驗證一下這電路有沒有問題,就只讓P23為低電平,看看亮不亮先。
另外,我感覺proteus里的三極管也是有點問題
回復(fù)

使用道具 舉報

地板
ID:82765 發(fā)表于 2017-7-1 13:45 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

5#
ID:216359 發(fā)表于 2017-7-1 16:47 | 只看該作者
先看看你的電源是不是夠驅(qū)動繼電器,方法為在PNP的C腳接一個電流表,看一下是否有毫安的電流流過
這樣你就可以判斷是不是在低電平時電流輸出來,
回復(fù)

使用道具 舉報

6#
ID:216359 發(fā)表于 2017-7-1 17:01 | 只看該作者
加一個12V的VCC1接到PNP的E-------你會加的,給P2.3一個低電平,   在繼電器的線圈端加一個小燈泡,仿真在PROTEUS 里做,單獨的做一個程序,就上述幾句
回復(fù)

使用道具 舉報

7#
ID:202637 發(fā)表于 2017-7-1 17:03 | 只看該作者
cjjcjj1 發(fā)表于 2017-7-1 13:45
你好!程序不全,仿真截圖沒法測試,直接把程序和仿真打包發(fā)一下吧
加我QQ 1413753805

已加qq
回復(fù)

使用道具 舉報

8#
ID:202637 發(fā)表于 2017-7-1 17:03 | 只看該作者
呂強軍 發(fā)表于 2017-7-1 14:01
你把你的程序和仿真圖以文件的形式發(fā)給我,加我QQ 2211818451

已經(jīng)加了qq
回復(fù)

使用道具 舉報

9#
ID:202637 發(fā)表于 2017-7-1 19:57 | 只看該作者
aiohu 發(fā)表于 2017-7-1 17:01
加一個12V的VCC1接到PNP的E-------你會加的,給P2.3一個低電平,   在繼電器的線圈端加一個小燈泡,仿真在PR ...

已經(jīng)解決謝謝
回復(fù)

使用道具 舉報

10#
ID:202637 發(fā)表于 2017-7-1 19:58 | 只看該作者
aiohu 發(fā)表于 2017-7-1 17:01
加一個12V的VCC1接到PNP的E-------你會加的,給P2.3一個低電平,   在繼電器的線圈端加一個小燈泡,仿真在PR ...

已解決,謝謝
回復(fù)

使用道具 舉報

11#
ID:111634 發(fā)表于 2017-7-1 20:55 | 只看該作者
加一個12V的VCC1接到PNP的E,結(jié)果是無論輸出高低電平,小燈泡都會亮!
回復(fù)

使用道具 舉報

12#
ID:159139 發(fā)表于 2017-7-2 16:26 來自手機 | 只看該作者
你把三極管B級電阻改為200R,保證燈的工作電壓設(shè)置為5v燈就亮了。
回復(fù)

使用道具 舉報

13#
ID:216683 發(fā)表于 2017-7-3 09:13 | 只看該作者
一般去推繼電器我喜歡用NPN的管子,PNP老是怕不飽合
回復(fù)

使用道具 舉報

14#
ID:216740 發(fā)表于 2017-7-3 11:14 | 只看該作者
用萬用表測量一下,看到底是不是低電平。看看燈泡兩端有沒有電壓。
回復(fù)

使用道具 舉報

15#
ID:216988 發(fā)表于 2017-7-4 09:47 | 只看該作者
先不管其它功能,寫個程序驗證一下這電路有沒有問題,就只讓P23為低電平,看看先。 另外,我感覺proteus里的三極管也是有點問題
回復(fù)

使用道具 舉報

16#
ID:7485 發(fā)表于 2017-7-4 21:01 | 只看該作者
繼電器吸合不吸合?
回復(fù)

使用道具 舉報

17#
ID:217428 發(fā)表于 2017-7-5 17:30 | 只看該作者
來個上拉電阻
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表