标题: p_out用万用表量只有0.6v,单片机怎样设置输出模式输出5v呢 [打印本页]

作者: a超人    时间: 2018-11-6 10:48
标题: p_out用万用表量只有0.6v,单片机怎样设置输出模式输出5v呢
这个设置输出模式的单片机代码怎么写呢  继电器不动作


  1. #include<reg52.h>

  2. sbit P_out=P3^6;

  3. void main()
  4. {
  5.      P_out=1;
  6.          while(1);
  7. }
复制代码



作者: cuihaodianzi    时间: 2018-11-6 11:29
1,电源 VCC 电压是多少
2,继电器工作电压多少
3,继电器线圈电阻多少
4,三极管放大倍数多少
作者: 杨雪飞    时间: 2018-11-6 11:54
换个单片机型号,比如89C52试下
作者: 杨雪飞    时间: 2018-11-6 11:59
12C5A60S2需要在循环语句前加端口模式设置,
比如
P1M1=0X00;  
P1M0=0XFF;
上边两句是把P1口八个IO口设置推挽输出,如果单独使用一个口,把P1M0=  这个后边的改成所需引脚就可以了
作者: yzwzfyz    时间: 2018-11-6 12:28
R6 820欧再与继电器串联,电流够不够?
从P_out至VCC之间接一只3K的电阻试试。
作者: a超人    时间: 2018-11-6 13:19
杨雪飞 发表于 2018-11-6 11:54
换个单片机型号,比如89C52试下
  1. #include<reg52.h>

  2. sbit P_out=P3^6;
  3. unsigned char P1M1;
  4. unsigned char P1M0;
  5. void main()
  6. {
  7.      P_out=1;
  8.          P1M1=0x00;
  9.          P1M0=P_out;
  10.          while(1);
  11. }
复制代码

作者: a超人    时间: 2018-11-6 13:22
杨雪飞 发表于 2018-11-6 11:59
12C5A60S2需要在循环语句前加端口模式设置,
比如
P1M1=0X00;  
  1. #include<reg52.h>

  2. sbit P_out=P3^6;
  3. unsigned char P1M1;
  4. unsigned char P1M0;
  5. void main()
  6. {
  7.      P_out=1;
  8.          P1M1=0x00;
  9.          P1M0=P_out;
  10.          while(1);
  11. }
复制代码
单片机本身输出的电压

念之前,望之后 2018/11/6 9:25:20
引脚得设置下

念之前,望之后 2018/11/6 9:26:01
你得看下是开漏还是浮空,推挽?

笨小孩 2018/11/6 9:26:03
是啊我设置的是1啊 我就写了个简单的程序 给了1  想看他动不动

念之前,望之后 2018/11/6 9:26:15
输出模式……

笨小孩 2018/11/6 9:26:22

作者: lanshi08    时间: 2018-11-6 13:24
设置为推完输出,驱动能力要是不够就加上拉
作者: a超人    时间: 2018-11-6 13:25
杨雪飞 发表于 2018-11-6 11:59
12C5A60S2需要在循环语句前加端口模式设置,
比如
P1M1=0X00;  

都试过了 还是没有输出电压
  1. #include<reg52.h>

  2. sbit P_out=P3^6;
  3. unsigned char P1M0;
  4. void main()
  5. {
  6.      P_out=1;
  7.          P1M0=P_out;
  8.          while(1);
  9. }
复制代码

作者: a超人    时间: 2018-11-6 13:26
cuihaodianzi 发表于 2018-11-6 11:29
1,电源 VCC 电压是多少
2,继电器工作电压多少
3,继电器线圈电阻多少

1:24伏  2:24伏 谢谢
作者: a超人    时间: 2018-11-6 13:46
杨雪飞 发表于 2018-11-6 11:59
12C5A60S2需要在循环语句前加端口模式设置,
比如
P1M1=0X00;  

我都试过了  还是不正确啊
  1. #include<reg52.h>

  2. sbit P_out=P3^6;
  3. unsigned char P1M0;
  4. void main()
  5. {
  6.      
  7.          P1M0=P_out;
  8.          P1M0=0X00;
  9.          P1M0=1;
  10.          while(1);
  11. }
复制代码

作者: a超人    时间: 2018-11-6 14:19
yzwzfyz 发表于 2018-11-6 12:28
R6 820欧再与继电器串联,电流够不够?
从P_out至VCC之间接一只3K的电阻试试。

我就是想写个一个代码让P_OUT输出一个高电平 控制继电器动作 帮我看看这个代码还有哪里需要改的
作者: ysandi    时间: 2018-11-6 15:30
去掉R6和D3。
代码如下:
#include<reg52.h>
sbit  P_out=P3^6;
void main(void)
{
    while(1)
     {
         P_out=1;
     }
}
作者: a超人    时间: 2018-11-6 15:54
lanshi08 发表于 2018-11-6 13:24
设置为推完输出,驱动能力要是不够就加上拉

我知道是要设置为推挽输出 但是不知道用代码怎么实现啊 谢谢
作者: wulin    时间: 2018-11-6 16:23
如果你确认使用的是STC12C5A32S2芯片和所示电路,按下面程序保准能行。
#include<reg52.h>
//#include "STC12C5A60S2.H"//如用此头文件,以下两行去掉。
sfr P3M0 = 0xB2;//定义寄存器地址
sfr P3M1 = 0xB1;//定义寄存器地址

sbit P_out=P3^6;

void main()
{
        P3M0 = 0x40;//端口设置推挽
        P3M1 = 0x00;//端口设置推挽
        P_out=1;
        while(1);
}
作者: a超人    时间: 2018-11-6 19:43
wulin 发表于 2018-11-6 16:23
如果你确认使用的是STC12C5A32S2芯片和所示电路,按下面程序保准能行。
#include
//#include "STC12C5A60 ...

你好编译无法通过呢  按照你写的编了

QQ截图20181106193812.png (30.85 KB, 下载次数: 36)

QQ截图20181106193812.png

作者: a超人    时间: 2018-11-6 20:22
wulin 发表于 2018-11-6 16:23
如果你确认使用的是STC12C5A32S2芯片和所示电路,按下面程序保准能行。
#include
//#include "STC12C5A60 ...

麻烦你了 谢谢

2.png (42.26 KB, 下载次数: 33)

2.png

作者: wulin    时间: 2018-11-6 21:30
a超人 发表于 2018-11-6 19:43
你好编译无法通过呢  按照你写的编了

如使用STC12C5A60S2.H头文件需要去掉#include<reg52.h>
作者: a超人    时间: 2018-11-7 07:47
wulin 发表于 2018-11-6 21:30
如使用STC12C5A60S2.H头文件需要去掉#include

你好 这样也不行呢 谢谢

3.png (38.72 KB, 下载次数: 35)

3.png





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1