单片机数码管显示的程序有错误详情看问题补充
发布网友
发布时间:2023-03-22 22:13
我来回答
共3个回答
热心网友
时间:2023-05-15 10:49
好奇怪,你显示第一个数码管一直让P2_0=0不就得了。要关掉其它数码管,另其控制IO为1不就得了。
void main()
{
P2=0xff;
P2_0=0;
while(1)
{
P0=table[0];
shanshuo(1500);
P0=table[1];
shanshuo(1500);
}
}
此外,会有鬼影产生除了程序问题外,电路也是很重要的。像采用扫描方式驱动LED数码管的,布线也会有串扰现象。解决方法:1、布线合理,不要使用太多飞线,并且不要把飞线缠在一起。
2、增强驱动三极管抗扰能力。NPN型三极管可在基极与地之间接10K左右下拉电阻。PNP可在基极与VCC之间接10K左右上拉电阻。这很大程度上能避免鬼影产生。
最后提点建议,子程序或变量命名不要采用中文拼音的形式啦!看得好辛苦,虽然我们是中国人,但编程无国界,还是与国际接轨好!追问这样还是有鬼影 不知道难道是单片机本身问题
追答如果按我的程序都还会有鬼影,应该就是线间串扰的结果。你是不是用万用板搭的电路?三极管上拉做好没?先不要闪烁显示,先稳定显示试试。
热心网友
时间:2023-05-15 10:50
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P2_0 = P2^0;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void shanshuo(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
P2=0xff;
while(1)
{
P2_0 = 0;
P0=table[0];
shanshuo(1500);
P0=0xff;
shanshuo(5);
P0=table[1];
shanshuo(1500);
P0=0xff;
shanshuo(5);
}
}追问这样还是有鬼影
热心网友
时间:2023-05-15 10:50
是不是for太短了,