Các bạn giúp mình chương trình này, trong có cả file mô phỏng. sao khi ấn nút để tăng số thì led 7 thanh nháy 1 phát rồi tăng. Làm sao để các led không bi như vậy nữa.
lam sao để các led sáng ổn định không bi hiện tượng đó. link đây: http://www.mediafire.com/?sfrp8f8ggsps9ef
/*====================khai bao thu vien lenh va dinh nghia chan vdk ===========*/
#include<regx51.h> // thu vien lenh
#define leddata P2 // dinh nghia duong du lieu le 7 thanh noi P2
#define led1 P3_4 // dinh nghia nguon led1 noi voi P3.4
#define led2 P3_5 // dinh nghia nguon led2 noi voi P3.5
#define led3 P3_6 // dinh nghia nguon led3 noi voi P3.6
#define led4 P3_7 // dinh nghia nguon led4 noi voi P3.7
#define nut P1_3 // dinh nghia nut an noi voi P1.3
/*============================khai bao bien ===========*/
unsigned char sp,chuyen;
unsigned char so[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0}; // ma led 7 thanh anot chung tuong ung voi tu 0 den 9
unsigned char a,b,c,d;
/*============================chuong trinh con tao tre ===========*/
void delay( unsigned int m )
{
unsigned int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<125;j++)
{}
}
}
/*============================chuong trinh con hien thi quet led===========*/
void hien_thi(unsigned char chuyen,unsigned char sp)
{
a=chuyen/10;
b=(chuyen-a*10);
c=sp/10;
d=(sp-c*10);
led1=1;led2=0,led3=0,led4=0;
leddata=so[a];
delay(3);
led1=0;led2=1,led3=0,led4=0;
leddata=so[b];
delay(3);
led1=0;led2=0,led3=1,led4=0;
leddata=so[c];
delay(3);
led1=0;led2=0,led3=0,led4=1;
leddata=so[d];
delay(3);
}
/*============================chuong trinh chinh ===========*/
void main()
{
sp=0;
chuyen=0;
while(1)
{
if(nut==0)
{
delay(200);
sp=sp+1;
}
if(sp==10)
{
sp=0;
chuyen=chuyen+1;
}
if(chuyen==100)
chuyen=0;
hien_thi(chuyen,sp);
}
}
lam sao để các led sáng ổn định không bi hiện tượng đó. link đây: http://www.mediafire.com/?sfrp8f8ggsps9ef
/*====================khai bao thu vien lenh va dinh nghia chan vdk ===========*/
#include<regx51.h> // thu vien lenh
#define leddata P2 // dinh nghia duong du lieu le 7 thanh noi P2
#define led1 P3_4 // dinh nghia nguon led1 noi voi P3.4
#define led2 P3_5 // dinh nghia nguon led2 noi voi P3.5
#define led3 P3_6 // dinh nghia nguon led3 noi voi P3.6
#define led4 P3_7 // dinh nghia nguon led4 noi voi P3.7
#define nut P1_3 // dinh nghia nut an noi voi P1.3
/*============================khai bao bien ===========*/
unsigned char sp,chuyen;
unsigned char so[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0}; // ma led 7 thanh anot chung tuong ung voi tu 0 den 9
unsigned char a,b,c,d;
/*============================chuong trinh con tao tre ===========*/
void delay( unsigned int m )
{
unsigned int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<125;j++)
{}
}
}
/*============================chuong trinh con hien thi quet led===========*/
void hien_thi(unsigned char chuyen,unsigned char sp)
{
a=chuyen/10;
b=(chuyen-a*10);
c=sp/10;
d=(sp-c*10);
led1=1;led2=0,led3=0,led4=0;
leddata=so[a];
delay(3);
led1=0;led2=1,led3=0,led4=0;
leddata=so[b];
delay(3);
led1=0;led2=0,led3=1,led4=0;
leddata=so[c];
delay(3);
led1=0;led2=0,led3=0,led4=1;
leddata=so[d];
delay(3);
}
/*============================chuong trinh chinh ===========*/
void main()
{
sp=0;
chuyen=0;
while(1)
{
if(nut==0)
{
delay(200);
sp=sp+1;
}
if(sp==10)
{
sp=0;
chuyen=chuyen+1;
}
if(chuyen==100)
chuyen=0;
hien_thi(chuyen,sp);
}
}
Comment