Mạch em làm là quét 8 led 7 đoạn (nhưng chỉ dùng 2 con đầu và 2 con cuối) đếm từ 00 đến 99
Không biết em viết sai code hay do kết nối phần cứng sai mà nó chạy k đúng, cám ơn các anh chị!
#include <AT89X52.h>
#define start P3_2
#define up P3_1
#define down P3_0
char tt, i, j;
unsigned char dv, ch, dv1, ch1;
unsigned char code ma7[10]={0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80, 0X90};
void delay(unsigned int i)
{
while(i--)
{}
}
void giaima()
{
dv=i%10;
ch=i/10;
dv1=j%10;
ch1=j/10;
}
void hienthi()
{
unsigned int x;
for (x=0; x<10000; x++)
{
P1=ma7[dv]; P2_0=0; delay(100); P2_0=1;
P1=ma7[ch]; P2_1=0; delay(100); P2_1=1;
P1=ma7[dv1]; P2_6=0; delay(100); P2_6=1;
P1=ma7[ch1]; P2_7=0; delay(100); P2_7=1;
}
}
void main()
{
tt=0; i=0; j=99;
while(1)
{
giaima();
hienthi();
if (up==0)
{
tt=1;
}
if (down==0)
{
tt=2;
}
if (tt=1)
{
i++;
if (i==100)
{
i=0;
}
}
if (tt==2)
{
j--;
if (j==-1)
{
j=99;
}
}
}
}
Không biết em viết sai code hay do kết nối phần cứng sai mà nó chạy k đúng, cám ơn các anh chị!
#include <AT89X52.h>
#define start P3_2
#define up P3_1
#define down P3_0
char tt, i, j;
unsigned char dv, ch, dv1, ch1;
unsigned char code ma7[10]={0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80, 0X90};
void delay(unsigned int i)
{
while(i--)
{}
}
void giaima()
{
dv=i%10;
ch=i/10;
dv1=j%10;
ch1=j/10;
}
void hienthi()
{
unsigned int x;
for (x=0; x<10000; x++)
{
P1=ma7[dv]; P2_0=0; delay(100); P2_0=1;
P1=ma7[ch]; P2_1=0; delay(100); P2_1=1;
P1=ma7[dv1]; P2_6=0; delay(100); P2_6=1;
P1=ma7[ch1]; P2_7=0; delay(100); P2_7=1;
}
}
void main()
{
tt=0; i=0; j=99;
while(1)
{
giaima();
hienthi();
if (up==0)
{
tt=1;
}
if (down==0)
{
tt=2;
}
if (tt=1)
{
i++;
if (i==100)
{
i=0;
}
}
if (tt==2)
{
j--;
if (j==-1)
{
j=99;
}
}
}
}
Comment