Em mới bắt đầu tìm hiểu về VDK 89S52 và ứng dụng em đang làm là mạch đếm từ 0->99 sử dụng 2 led 7 đoạn. Nhưng khi em nạp vào mạch thì nó chỉ chạy có 1 con Led hàng đơn vị , còn Led hàng chục thì ko sáng . Con Led hàng đơn vị tuy sáng nhưng nó nhảy số lung tung và sáng yếu nữa. Bác nào rành về cái này chỉ giúp em với. Thanks trước!
Mạch của em đây:
Code C:
File download: http://www.mediafire.com/?r6x0ri1wchqw4vp
Mạch của em đây:
Code C:
#include "AT89X52.H"
sbit Led1 = P0^0;
sbit Led2 = P0^1;
unsigned char led7_data[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; //Decimal to Led7seg
unsigned char i,k;
void delay(unsigned int ms)
{
unsigned int i,j;
for(i = 0; i < ms; i++)
for(j = 0;j < 125;j++);
}
void led7seg()
{
Led1 = 1; // turn on LED1
P2 = led7_data[i/10];
delay(30);
Led1 = 0;
P2 = 0xff;
// LED2
Led2 = 1; // turn on led2
P2 = led7_data[i%10];
delay(30);
Led2 = 0;
P2 = 0xff;
}
void main(void)
{
//P1 = 0x00;
while(1)
{
// Led dem len tu 0->99
for(i = 0; i <= 99; i++)
{ P1 = i;
led7seg();
delay(1000);
}
}
}
sbit Led1 = P0^0;
sbit Led2 = P0^1;
unsigned char led7_data[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; //Decimal to Led7seg
unsigned char i,k;
void delay(unsigned int ms)
{
unsigned int i,j;
for(i = 0; i < ms; i++)
for(j = 0;j < 125;j++);
}
void led7seg()
{
Led1 = 1; // turn on LED1
P2 = led7_data[i/10];
delay(30);
Led1 = 0;
P2 = 0xff;
// LED2
Led2 = 1; // turn on led2
P2 = led7_data[i%10];
delay(30);
Led2 = 0;
P2 = 0xff;
}
void main(void)
{
//P1 = 0x00;
while(1)
{
// Led dem len tu 0->99
for(i = 0; i <= 99; i++)
{ P1 = i;
led7seg();
delay(1000);
}
}
}
Comment