找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4124|回复: 17
打印 上一主题 下一主题
收起左侧

为什么用低电平驱动灯泡不亮啊

  [复制链接]
跳转到指定楼层
楼主
当温度低于30度时,单片机控制P2.3输出低电平,可是灯泡不亮,是程序问题还是原理图呀
主程序如下:#include<reg52.h>
#include "LCD.h"
#include "DS18B20.h"
#include "DS1302.h"
sbit  outv=P2^0;           //电机转动时PWM输出口;
sbit  ctr =P2^3;           //控制加热设备输出
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();
/*****************主函数**********************/
void  main()
{   
    initall();
    while(1)
    {   
        DispTemp(gettemp());
        DispTime();
        if(timeflag)
           DispSP();   
    }
}
/******************温度显示函数*******************/
void  DispTemp(uint tem)        
{
    if(tflag)               //第一次调用温度显示函数
    {
        tflag=0;
        write_string(0,10,"Tem:");
    }
    if(tem<300)            //随着温度的改变,PWM的占空比发生变化,同时加热设备也发生变化
    {   
        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时间显示函数*********************/
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,即是否处于低功耗状态(振荡器停止)
    {
       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;           
}
/*****************中断函数*********************/
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;     
    }   
}
/*******************电机转速显示函数*********************************/
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, 下载次数: 102)

1.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:202637 发表于 2017-7-1 11:37 | 只看该作者
求大神指点
回复

使用道具 举报

板凳
ID:179958 发表于 2017-7-1 13:08 | 只看该作者
先不管其它功能,写个程序验证一下这电路有没有问题,就只让P23为低电平,看看亮不亮先。
另外,我感觉proteus里的三极管也是有点问题
回复

使用道具 举报

地板
ID:82765 发表于 2017-7-1 13:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5#
ID:216359 发表于 2017-7-1 16:47 | 只看该作者
先看看你的电源是不是够驱动继电器,方法为在PNP的C脚接一个电流表,看一下是否有毫安的电流流过
这样你就可以判断是不是在低电平时电流输出来,
回复

使用道具 举报

6#
ID:216359 发表于 2017-7-1 17:01 | 只看该作者
加一个12V的VCC1接到PNP的E-------你会加的,给P2.3一个低电平,   在继电器的线圈端加一个小灯泡,仿真在PROTEUS 里做,单独的做一个程序,就上述几句
回复

使用道具 举报

7#
ID:202637 发表于 2017-7-1 17:03 | 只看该作者
cjjcjj1 发表于 2017-7-1 13:45
你好!程序不全,仿真截图没法测试,直接把程序和仿真打包发一下吧
加我QQ 1413753805

已加qq
回复

使用道具 举报

8#
ID:202637 发表于 2017-7-1 17:03 | 只看该作者
吕强军 发表于 2017-7-1 14:01
你把你的程序和仿真图以文件的形式发给我,加我QQ 2211818451

已经加了qq
回复

使用道具 举报

9#
ID:202637 发表于 2017-7-1 19:57 | 只看该作者
aiohu 发表于 2017-7-1 17:01
加一个12V的VCC1接到PNP的E-------你会加的,给P2.3一个低电平,   在继电器的线圈端加一个小灯泡,仿真在PR ...

已经解决谢谢
回复

使用道具 举报

10#
ID:202637 发表于 2017-7-1 19:58 | 只看该作者
aiohu 发表于 2017-7-1 17:01
加一个12V的VCC1接到PNP的E-------你会加的,给P2.3一个低电平,   在继电器的线圈端加一个小灯泡,仿真在PR ...

已解决,谢谢
回复

使用道具 举报

11#
ID:111634 发表于 2017-7-1 20:55 | 只看该作者
加一个12V的VCC1接到PNP的E,结果是无论输出高低电平,小灯泡都会亮!
回复

使用道具 举报

12#
ID:159139 发表于 2017-7-2 16:26 来自手机 | 只看该作者
你把三极管B级电阻改为200R,保证灯的工作电压设置为5v灯就亮了。
回复

使用道具 举报

13#
ID:216683 发表于 2017-7-3 09:13 | 只看该作者
一般去推继电器我喜欢用NPN的管子,PNP老是怕不饱合
回复

使用道具 举报

14#
ID:216740 发表于 2017-7-3 11:14 | 只看该作者
用万用表测量一下,看到底是不是低电平。看看灯泡两端有没有电压。
回复

使用道具 举报

15#
ID:216988 发表于 2017-7-4 09:47 | 只看该作者
先不管其它功能,写个程序验证一下这电路有没有问题,就只让P23为低电平,看看先。 另外,我感觉proteus里的三极管也是有点问题
回复

使用道具 举报

16#
ID:7485 发表于 2017-7-4 21:01 | 只看该作者
继电器吸合不吸合?
回复

使用道具 举报

17#
ID:217428 发表于 2017-7-5 17:30 | 只看该作者
来个上拉电阻
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表