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

2019-07-15 09:49发布

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不够亮,求解释!!!!
IMG_20170822_140334.jpg
U169XJA`RHFPG9X6)CJLNU2.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
达菲奇
1楼-- · 2019-07-15 19:09
人中狼 发表于 2017-8-22 14:38
P0口一般是要接上拉电阻的。

有的,10K。。。。。。
太子的空间
2楼-- · 2019-07-15 21:08
看一下你的程序有没有问题?或者是硬件有什么错误的地方
达菲奇
3楼-- · 2019-07-16 02:35
 精彩回答 2  元偷偷看……
wulinwl
4楼-- · 2019-07-16 04:43
达菲奇 发表于 2017-8-22 16:25
程序会影响电压吗?硬件也没多少,触摸模块,触摸后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)
        {
                ;
        }
}
达菲奇
5楼-- · 2019-07-16 05:45
本帖最后由 达菲奇 于 2017-8-22 17:58 编辑
wulinwl 发表于 2017-8-22 16:53
你的照片不清楚,不能确定芯片什么型号,STC好多15系列的芯片P0和P1的部分引脚默认是高阻或推挽,建议程序初始化时把所有I/O口设为准双向口:
void main()        
{                        

AT89C52RC,P1M0    的M0是什么意思?我放进去会出错。。这个和设置初始值有什么区别吗?
asusyt
6楼-- · 2019-07-16 06:40
wulinwl 发表于 2017-8-23 07:21
你照片中明显可以看出来芯片是STC,怎么可能是AT89C52RC?虽然STC芯片是51核心,但在实际使用中还是有些许区别。PxM0、PxM1是I/O口模式寄存器,如果你的芯片是STC89C52RC,44个引脚,那么I/O口从P0~P4共有39个.你在程序中用STC官网头文件就不会报错了。如果仍用reg52.h头文件,只要声明一下I/O口模式寄存器地址也就不会报 ...

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

一周热门 更多>