本人初学单片机,希望大神能够帮忙一下。仿真正常,焊接到电路板上不工作,电路板只亮第一个LED灯,数码管不亮。单片机供电正常。。。EA为高电平,9号复位引脚为低电平
#include
unsigned char ledxs[]={0x00,0x10,0x80,0x90,0x40,0x50,0xC0,0xD0,0x20,0x30};
unsigned char ledd[4][25]={{0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0x7f,0x3f,0x9f,0xcf,0xe7,0xf3,0xf9,0xfc,0xfe,0xff},
{0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff},
{0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xaa,0x55,0xaa,0x55},
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0x00,0xff,0x00}};
int i=0,j=0,k=0,jscs=0;
void ys(unsigned int time){
unsigned int m=0;
for(;time>0;time--)
for(m=0;m<125;m++);
}
timer1() interrupt 3{
jscs++;
if(jscs==20)
{ jscs=0;
i++;
if(i==10){
i=0;
j++;
k=0;
if(j==4) j=0;
}
P2=ledxs[i];}
TH1=0x3c;
TL1=0xb0;
}
void main(){
TR1=1;
EA=1;
TMOD=0x10;
TH1=0x3c;
TL1=0xb0;
ET1=1;
while(1)
{
switch(j)
{
case 0: P1=ledd[0][k];
ys(200);
k++;
if(k==20) k=0;
break;
case 1: P1=ledd[1][k];
ys(250);
k++;
if(k==16) k=0;
break;
case 2: P1=ledd[2][k];
ys(300);
k++;
if(k==21) k=0;
break;
case 3: P1=ledd[3][k];
ys(350);
k++;
if(k==22) k=0;
break;
}
}
}
电路和程序并不复杂,,,protues仿真这种51单片机很成熟,如果仿真成功
建议检查实际焊接装配,,,
楼主用的是什么型号地单片机,单片机工作就三个条件,电源,复位,晶振,从现象看,楼主的晶振好像有毛病,应是没有焊牢。
http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
好好检查元件参数是否正确、程序是否正确烧录(注意要先编译的,然后烧HEX文件或BIN文件)、然后查焊接。小白一般犯的都是初级错误。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
LED灯有正反之分,友情提醒一下。
看看有没有接反,反了也不亮的哦。
最主要的问题是晶振,你把晶振接的离单片机尽可能的近,最好是直接焊到单片机引脚上,一般情况下都能解决