#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);
}
}
为什么数码管显示与编程不符,想显示9,却显示88?
答案:1 悬赏:80 手机版
解决时间 2021-03-09 13:36
- 提问者网友:浪荡绅士
- 2021-03-09 04:37
最佳答案
- 五星知识达人网友:患得患失的劫
- 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后要灭掉
}
}
有问题请追问。以后问程序问题,最好连同原理图一起提供。
#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后要灭掉
}
}
有问题请追问。以后问程序问题,最好连同原理图一起提供。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯