永发信息网

为什么数码管显示与编程不符,想显示9,却显示88?

答案:1  悬赏:80  手机版
解决时间 2021-03-09 13:36
  • 提问者网友:浪荡绅士
  • 2021-03-09 04:37
#include<reg52.h>
#define uc unsigned char
#define ui unsigned int
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
uc code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void delay1ms(ui i)
{
uc j;
while(i--)
for(j=0;j<115;j++);
}
void main()
{
ui i=9;
while(1)
{
P0=tab[i/10];
p26=0; //改为P2=0xDF时正常
delay1ms(5);
P0=tab[i%10];
p27=0;//改为P2=0xBF时正常 delay1ms(5);
}
}
最佳答案
  • 五星知识达人网友:患得患失的劫
  • 2021-03-09 05:32
//其实你应该提供更多信息的,比如说原理图。
#include<reg52.h>
#define uc unsigned char 
#define ui unsigned int
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
uc code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//【共阳极数码管段码】
void delay1ms(ui i)
{
 uc j;
 while(i--)
 for(j=0;j<115;j++);
}
void main()

 ui i=9;
 while(1)
 {
  p26=1;//开始送值之前要先灭显示。
  p27=1;
  P0=tab[i/10];
  p26=0;   //改为P2=0xDF时正常 1101 1111
  delay1ms(5);
  p26=1;//显示5ms后要灭掉
  P0=tab[i%10];
  p27=0;//改为P2=0xBF时正常  1011 1111
  delay1ms(5);
  p27=1;//显示5ms后要灭掉
 }
}
有问题请追问。以后问程序问题,最好连同原理图一起提供。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯