微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 程序正常,但P23换成1数码管就完全点不亮了。

程序正常,但P23换成1数码管就完全点不亮了。

时间:10-02 整理:3721RD 点击:
我用的实验板是用138进行共阴数码管选择的。然后发现相邻位的数码管能点亮(如可以点亮最右边的两个数码管),但不能点亮相隔的数码管。不知有老鸟能看出原因么。
以下程序正常,但P23换成1数码管就完全点不亮了。
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x07f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0123456789ABCDEF 共阴
void delay(uchar c)
{
uchar x,y;
for(x=0;x<c;x++)
  for(y=0;y<110;y++);
}
void main()
{
while(1)
{
P24=0;
P23=0;
P22=0;
P0=table[1];
delay(5);
P24=0;
P23=0;     //比如改成P23=1,照理应该是右边倒数第一和第四个能显示字符,但实际是数码管完全不显示
P22=1;   
P0=table[2];
delay(5);
}
}


首先你确定你的接线是否有问题。J21接VCC,J15接J16。也可能是线松了,先将LED1~LED8接LED,再写一个简单的程序逐个点亮。看看LED显示正常不正常。如果不正常有可能是P2.2~p2.4的问题。

你好,其实之前试过从左到右依次显示8~1,显示效果OK的数码管和对应的顺序也正确。
J21跳线帽接的VCC,开发板上没有J15和J16.
单个数码管的话,试了几个,都点不亮
单个数码管程序:
#include <STC89.H>
void main()
{
while(1)
{
P24=1;
P23=0;
P22=0;
P0=0x3f;
}   
}

先测一下LED0~LED8的电平有没发生对应的变化。如果没有就是138的问题。如果138没问题很大可能是数码管的问题了。一步步分析问题到底出现在哪里

嗯,之前也想用万用表的,可惜手头没有。等改天拿去公司测一下了。

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

网站地图

Top