微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机高电平输出4.9V,低电平输出3.6V左右,什么情况!?求教

单片机高电平输出4.9V,低电平输出3.6V左右,什么情况!?求教

时间:10-02 整理:3721RD 点击:
AT89C52RC芯片是用触摸模块在P1脚高电平输入3.6V,控制P0口LED亮灭,蓝而,唯独P1.0口和P0.0口特别,P1.0口由触摸模块输入3.6V至高电平,程序代码控制P0.0口由高电平转低电平(LED  5V共阳),P0.0口由4.9V降到3.6V左右(其他引脚降到2.8V),P0.0口LED不够亮,求解释!



你照片中明显可以看出来芯片是STC,怎么可能是AT89C52RC?虽然STC芯片是51核心,但在实际使用中还是有些许区别。PxM0、PxM1是I/O口模式寄存器,如果你的芯片是STC89C52RC,44个引脚,那么I/O口从P0~P4共有39个.你在程序中用STC官网头文件就不会报错了。如果仍用reg52.h头文件,只要声明一下I/O口模式寄存器地址也就不会报错了。
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;

P0口一般是要接上拉电阻的。

有的,10K。

看一下你的程序有没有问题?或者是硬件有什么错误的地方

程序会影响电压吗?硬件也没多少,触摸模块,触摸后3.6V给到P1.0口,至高电平,程序swhitc    case 0x80之后,P0=0xFE,程序很简单,给P0.0口至低电平,(当然还有其他IO口)。上拉电阻10K,单片机系统内置的。

你的照片不清楚,不能确定芯片什么型号,STC好多15系列的芯片P0和P1的部分引脚默认是高阻或推挽,建议程序初始化时把所有I/O口设为准双向口:
void main()       
{                       
        P0M0 = 0x00;
        P0M1 = 0x00;
        P1M0 = 0x00;
        P1M1 = 0x00;
        P2M0 = 0x00;
        P2M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        P4M0 = 0x00;
        P4M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;
        P6M0 = 0x00;
        P6M1 = 0x00;
        P7M0 = 0x00;
        P7M1 = 0x00;
        while(1)
        {
                ;
        }
}

AT89C52RC,P1M0    的M0是什么意思?我放进去会出错。这个和设置初始值有什么区别吗?

while(1)
? ? ? ? {
? ? ? ? ? ? ? ? ;
? ? ? ? }
请问这句是什么意思?

恩恩,对,是STC89C52RC,把代码加进去了,还是没效果呢,P1.0口3.6V输入,P0.0口高电平有4.9V,变至低电平还有3.8V,有10K的上拉电阻。P1.0口从低电平至高电平,P0.0口从高电平至低电平。试了一下,改了程序,把输出换成了P2口,高电平5V,低电平可以有0.6V左右,就好了,这是什么情况?大神指教


为了准确表示在程序中什么位置设置I/O口模式寄存器,while(1)这里表示主循环,花括号里内容省略为;

加代码进去,还是不行,怎么办

吧发光二极管拆下来看看电平怎么样,有可能是i的负载过大。你也可以测测这个io口的的电流,看看是不是很大啊!
再有你用的是stc的芯片,建议你去官方下载手册看看,吧io口设置为强推挽模式。

谢谢

看手册上说,P0口上电复位后是开漏输出,当P0管脚作IO口时,需要外加10K—4.7K的电阻,当P0口管教做为地址/数据复用线使用时,不用加外加电阻。
我把程序按你说的改,也没有反应呢。

看手册上说,P0口上电复位后是开漏输出,当P0管脚作IO口时,需要外加10K—4.7K的电阻,当P0口管教做为地址/数据复用线使用时,不用加外加电阻。
没有接负载电压也是那样,电流不大,有10K电阻在那,怎么设置为强推挽模式呢?

好帖,必须支持一下!

没有原理图,不好给你分析啊。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top