Tình hình e mới học về con 89c51, và em cũng tìm đc code điều khiển led 7 thanh, nhưng nó mới chỉ đếm được từ 0-9. Vậy em muốn xin các pro giúp đỡ e phần code chăn lẻ với ạ. Và liệu từ cái code này có thể biến thể thành đếm chẵn lẻ được ko ạ. Thạnks các bác trc ạ
#include <REGX51.H>
#define Q0 P1_0
#define Q1 P1_1
#define Q2 P1_2
#define Q3 P1_3
#define sang 1
#define tat 0
//========khai bao ham delay(tao ra do tre bang phan mem)
void delay(unsigned int ms)
{
unsigned int i,j;
for (i=0; i<ms; i++)
{ for (j=0; j<120; j++);
}
}
//======== hien thi ra led 7 thanh
void display(unsigned char number)
{
switch (number)
{
case 0:
Q0=Q1=Q2=Q3=0;
break;
case 1:
Q1=Q2=Q3=0;
Q0=1;
break;
case 2:
Q1=1;
Q0=Q2=Q3=0;
break;
case 3:
Q0=Q1=1;
Q2=Q3=0;
break;
case 4:
Q0=Q1=Q3=0;
Q2=1;
break;
case 5:
Q1=Q3=0;
Q2=Q0=1;
break;
case 6:
Q3=Q0=0;
Q2=Q1=1;
break;
case 7:
Q3=0;
Q0=Q1=Q2=1;
break;
case 8:
Q3=1;
Q0=Q1=Q2=0;
break;
case 9:
Q3=Q0=1;
Q1=Q2=0;
break;
default:Q0=Q1=Q2=Q3=0;break;
}
}
main ()
{
unsigned char m;
while(1)
{
for (m=0;m<10;m++)
{ display(m);delay(1000);}
}
}
#define Q0 P1_0
#define Q1 P1_1
#define Q2 P1_2
#define Q3 P1_3
#define sang 1
#define tat 0
//========khai bao ham delay(tao ra do tre bang phan mem)
void delay(unsigned int ms)
{
unsigned int i,j;
for (i=0; i<ms; i++)
{ for (j=0; j<120; j++);
}
}
//======== hien thi ra led 7 thanh
void display(unsigned char number)
{
switch (number)
{
case 0:
Q0=Q1=Q2=Q3=0;
break;
case 1:
Q1=Q2=Q3=0;
Q0=1;
break;
case 2:
Q1=1;
Q0=Q2=Q3=0;
break;
case 3:
Q0=Q1=1;
Q2=Q3=0;
break;
case 4:
Q0=Q1=Q3=0;
Q2=1;
break;
case 5:
Q1=Q3=0;
Q2=Q0=1;
break;
case 6:
Q3=Q0=0;
Q2=Q1=1;
break;
case 7:
Q3=0;
Q0=Q1=Q2=1;
break;
case 8:
Q3=1;
Q0=Q1=Q2=0;
break;
case 9:
Q3=Q0=1;
Q1=Q2=0;
break;
default:Q0=Q1=Q2=Q3=0;break;
}
}
main ()
{
unsigned char m;
while(1)
{
for (m=0;m<10;m++)
{ display(m);delay(1000);}
}
}
Comment