Đề 10. Th[FONT="Arial"][I][B][I]iết kế hệ thống dàn đèn.
Yêu cầu:
Các linh kiện: 02 Led 7 vạch; 08 Led thường; 01 bàn phím 2x2.
Thiết kế mạch điều khiển sáng đèn LD thường và LED 7 vạch.
Bấm phím 1: 8 LD nhấp nháy, đếm tăng số chẵn 00->02->..98 trên LED 7 vạch.
Nhấn phím 2: 8 LD nháy dồn, đếm giảm số lẻ 99->97->..01 trên LED 7 vạch.
Nhấn phím 3: Nháy đuổi 2 LED, đếm thuận 00-99 trên Led 7 vạch
Nhấn phím 4: nháy dồn 2 LED, đếm nghịch 99-00 trên Led 7 vạch.
đây là đề bài . mình viết code jui . Nhưng mình găpk rắc rối la` khi bấm nút mình không biết làm thế nào cho 2 cái yêu cầu "vd như 8 LD nháy dồn, đếm giảm số lẻ 99->97->..01 trên LED 7 vạch. " được thực hiện đồng thời cả , vấn đề là dùng hàm ngắt . (mình mới học cái này nên hàm ngắt chưa biết gi` ). mong các ban xử lý hộ. thanks nhiều .///// day là code mình viết
#include<regx51.h>
sbit phim1=P0^0;
sbit phim2=P0^1;
sbit phim3=P0^2;
sbit phim4=P0^3;
unsigned char led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
unsigned char i,j;
void dem (unsigned char chuc,vi );
void delay(long ms);
void quetphim_hienthi();
void delay(long ms)
{
long i;
for(i=0;i<=ms;i++)
;
}
void tamlednhapnhay()
{
P1=0Xff;delay(5000);
P1=0X00;delay(5000);
}
void tamlednhaydon()
{
P1=0xff;delay(1000);
P1=0xfe;delay(1000);
P1=0xfc;delay(1000);
P1=0xf8;delay(1000);
P1=0xf0;delay(1000);
P1=0xe0;delay(1000);
P1=0xc0;delay(1000);
P1=0x80;delay(1000);
P1=0x00;delay(1000);
P1=0xff;delay(1000);
}
void nhayduoi2led()
{
P1=0Xfc;delay(2000);
P1=0Xf3;delay(2000);
P1=0Xcf;delay(2000);
P1=0X3f;delay(2000);
P1=0xff;delay(2000);
}
void nhaydon2led()
{
P1=0Xfc;delay(2000);
P1=0Xf0;delay(2000);
P1=0Xc0;delay(2000);
P1=0X00;delay(2000);
P1=0XFF;delay(2000);
}
void dem1 ()
{
int i,j,c,v;
for(j=0;j<=99;j++)
{
if(j%2==0)
{ tamlednhapnhay();
c=j/10;
v=j%10;
for(i=0;i<=25;i++)
{
P3=led7[v];P2_1=1;delay(100);P2_1=0;
delay(30);
P3=led7[c]; P2_0=1;delay(100);P2_0=0;
delay(30); }}}}
// ham con 2
void dem2 ()
{
int i,j,c,v;
for(j=99;j>0;j--)
{
if(j%2==1)
{ tamlednhaydon();
c=j/10;
v=j%10;
for(i=0;i<=30;i++)
{
P3=led7[v];P2_1=1;delay(50);P2_1=0;
delay(15);
P3=led7[c]; P2_0=1;delay(50);P2_0=0;
delay(15); }}}}
// dem 3
void dem3 ()
{
int i,j,c,v;
for(j=0;j<=99;j++)
{
nhayduoi2led();
c=j/10;
v=j%10;
for(i=0;i<=30;i++)
{
P3=led7[v];P2_1=1;delay(50);P2_1=0;
delay(15);
P3=led7[c]; P2_0=1;delay(50);P2_0=0;
delay(15); }}}
// nhaydon2led
void dem4 ()
{
int i,j,c,v;
for(j=99;j>0;j--)
{
nhaydon2led();
c=j/10;
v=j%10;
for(i=0;i<=30;i++)
{
P3=led7[v];P2_1=1;delay(50);P2_1=0;
delay(15);
P3=led7[c]; P2_0=1;delay(50);P2_0=0;
delay(15); }}}
void main()
{while(1)
{
if(phim1==0) { dem1(); break; }
if(phim2==0) { dem2(); break; }
if(phim3==0) {dem3(); break;}
if(phim4==0) {dem4(); break;}
P2_1=1;
P2_0=1;
P3=led7[0];
}
}
mạch mo pong cua minh day :
Yêu cầu:
Các linh kiện: 02 Led 7 vạch; 08 Led thường; 01 bàn phím 2x2.
Thiết kế mạch điều khiển sáng đèn LD thường và LED 7 vạch.
Bấm phím 1: 8 LD nhấp nháy, đếm tăng số chẵn 00->02->..98 trên LED 7 vạch.
Nhấn phím 2: 8 LD nháy dồn, đếm giảm số lẻ 99->97->..01 trên LED 7 vạch.
Nhấn phím 3: Nháy đuổi 2 LED, đếm thuận 00-99 trên Led 7 vạch
Nhấn phím 4: nháy dồn 2 LED, đếm nghịch 99-00 trên Led 7 vạch.
đây là đề bài . mình viết code jui . Nhưng mình găpk rắc rối la` khi bấm nút mình không biết làm thế nào cho 2 cái yêu cầu "vd như 8 LD nháy dồn, đếm giảm số lẻ 99->97->..01 trên LED 7 vạch. " được thực hiện đồng thời cả , vấn đề là dùng hàm ngắt . (mình mới học cái này nên hàm ngắt chưa biết gi` ). mong các ban xử lý hộ. thanks nhiều .///// day là code mình viết
#include<regx51.h>
sbit phim1=P0^0;
sbit phim2=P0^1;
sbit phim3=P0^2;
sbit phim4=P0^3;
unsigned char led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
unsigned char i,j;
void dem (unsigned char chuc,vi );
void delay(long ms);
void quetphim_hienthi();
void delay(long ms)
{
long i;
for(i=0;i<=ms;i++)
;
}
void tamlednhapnhay()
{
P1=0Xff;delay(5000);
P1=0X00;delay(5000);
}
void tamlednhaydon()
{
P1=0xff;delay(1000);
P1=0xfe;delay(1000);
P1=0xfc;delay(1000);
P1=0xf8;delay(1000);
P1=0xf0;delay(1000);
P1=0xe0;delay(1000);
P1=0xc0;delay(1000);
P1=0x80;delay(1000);
P1=0x00;delay(1000);
P1=0xff;delay(1000);
}
void nhayduoi2led()
{
P1=0Xfc;delay(2000);
P1=0Xf3;delay(2000);
P1=0Xcf;delay(2000);
P1=0X3f;delay(2000);
P1=0xff;delay(2000);
}
void nhaydon2led()
{
P1=0Xfc;delay(2000);
P1=0Xf0;delay(2000);
P1=0Xc0;delay(2000);
P1=0X00;delay(2000);
P1=0XFF;delay(2000);
}
void dem1 ()
{
int i,j,c,v;
for(j=0;j<=99;j++)
{
if(j%2==0)
{ tamlednhapnhay();
c=j/10;
v=j%10;
for(i=0;i<=25;i++)
{
P3=led7[v];P2_1=1;delay(100);P2_1=0;
delay(30);
P3=led7[c]; P2_0=1;delay(100);P2_0=0;
delay(30); }}}}
// ham con 2
void dem2 ()
{
int i,j,c,v;
for(j=99;j>0;j--)
{
if(j%2==1)
{ tamlednhaydon();
c=j/10;
v=j%10;
for(i=0;i<=30;i++)
{
P3=led7[v];P2_1=1;delay(50);P2_1=0;
delay(15);
P3=led7[c]; P2_0=1;delay(50);P2_0=0;
delay(15); }}}}
// dem 3
void dem3 ()
{
int i,j,c,v;
for(j=0;j<=99;j++)
{
nhayduoi2led();
c=j/10;
v=j%10;
for(i=0;i<=30;i++)
{
P3=led7[v];P2_1=1;delay(50);P2_1=0;
delay(15);
P3=led7[c]; P2_0=1;delay(50);P2_0=0;
delay(15); }}}
// nhaydon2led
void dem4 ()
{
int i,j,c,v;
for(j=99;j>0;j--)
{
nhaydon2led();
c=j/10;
v=j%10;
for(i=0;i<=30;i++)
{
P3=led7[v];P2_1=1;delay(50);P2_1=0;
delay(15);
P3=led7[c]; P2_0=1;delay(50);P2_0=0;
delay(15); }}}
void main()
{while(1)
{
if(phim1==0) { dem1(); break; }
if(phim2==0) { dem2(); break; }
if(phim3==0) {dem3(); break;}
if(phim4==0) {dem4(); break;}
P2_1=1;
P2_0=1;
P3=led7[0];
}
}
mạch mo pong cua minh day :
Comment