51单片机,共阴数码管显示问题。

烧录到单片板上没显示,蜂鸣器反而会叫。。。而仿真的时候却显示不出8023,而是3802。。是不是哪里错了?程序如下。#include<reg52.h>voiddelay(... 烧录到单片板上没显示,蜂鸣器反而会叫。。。而仿真的时候却显示不出8023,而是3802。。是不是哪里错了?程序如下。

#include<reg52.h>
void delay(unsigned int t);
unsigned char code lun[]={0x7F,0X3F,0X5B,0X4F};
void main()
{
unsigned char aa,i;
while(1)
{
aa=0x01;
for(i=0;i<4;i++)
{
P2=aa;
P3=lun[i];
delay(5);
aa=aa<<1;
}
}

}
void delay(unsigned int t)
{
unsigned int j,k;
for(j=t;j>0;j--)
for(k=100;k>0;k--);
}
展开
 我来答
飞雪流星HH
2014-03-03 · TA获得超过275个赞
知道小有建树答主
回答量:312
采纳率:100%
帮助的人:179万
展开全部

首先,你的数码管是共阴极的,那么位选为0时点亮

所以是

while(1)	
{
    aa=0x01;
    for(i=0;i<4;i++)
    {    
        P2=aa;
        P3=lun[i];
        delay(5);
        P3=0x00;        //关掉段选,防止显示混乱,即消影
        aa=~(aa<<1);
    }
}

另外你这只是仿真,实际电路中,驱动电流够不够还不一定

再者,你拿万用表测,看你的板子上的接线和你仿真图中的接线是一样的吗

更多追问追答
追问
p3=0x00,让数码管工作低电平???0000-0000??才能亮??
追答
0x7F,0X3F,0X5B,0X4F 都是高电平点亮的
那么P3=0x00就是让数码管不亮,只是这一瞬间关掉数码管
下次循环再重新设定段选码和位选码
枉生残梦
2014-03-03 · 超过22用户采纳过TA的回答
知道答主
回答量:88
采纳率:100%
帮助的人:34.1万
展开全部
位选 顺序有问题,反了,至于下载到板子上有问题是因为你使用的P口不对,换个没有使用的P口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式