You are on page 1of 8

1/Viết ct điều khiển 24 led đơn anode chung để thực hiện các hiệu ứng sau

a/24 led đơn sáng và tắt dần từ trái sang phải


b/24 led đơn sáng và tắt dần từ phải sang trái
c/24 led đơn sáng dần từ trái sang phải và tắt dần từ phải sang trái
c/24 led đơn sáng dần từ phải sang trái và tắt dần từ trái sang phải

#INCLUDE<16F877A.h>

#use delay(clock=8M)

signed int8 n;

unsigned int32 LED;


void sangdanpst()

for(n=0;n<=24;n++)

LED=0xFFFFFF<<n;

output_B(LED);

output_C(LED>>8);

output_D(LED>>16);

delay_ms(200);

void tatdanpst()

for(n=24;n>=0;n--)

LED=0xFFFFFF>>n; // 1111 1111 1111 1111 1111 1111

output_B(LED);

output_C(LED>>8);

output_D(LED>>16);

delay_ms(200);

void sangdantsp()

for(n=0;n<=24;n++)

LED=0xFFFFFF>>n; // 1111 1111 1111 1111 1111 1111

output_B(LED);

output_C(LED>>8);
output_D(LED>>16);

delay_ms(200);

void tatdantsp()

for(n=24;n>=0;n--)

LED=0xFFFFFF<<n; // 1111 1111 1111 1111 1111 1111

output_B(LED);

output_C(LED>>8);

output_D(LED>>16);

delay_ms(200);

void sangdanpstvatatdantsp()

for(n=0;n<=24;n++)

LED=0xFFFFFF<<n; // 1111 1111 1111 1111 1111 1111

output_B(LED);

output_C(LED>>8);

output_D(LED>>16);

delay_ms(200);

for(n=24;n>=0;n--)

LED=0xFFFFFF<<n; // 1111 1111 1111 1111 1111 1111

output_B(LED);
output_C(LED>>8);

output_D(LED>>16);

delay_ms(200);

void sangdantspvatatdanpst()

for(n=0;n<=24;n++)

LED=0xFFFFFF>>n; // 1111 1111 1111 1111 1111 1111

output_B(LED);

output_C(LED>>8);

output_D(LED>>16);

delay_ms(200);

for(n=24;n>=0;n--)

LED=0xFFFFFF>>n; // 1111 1111 1111 1111 1111 1111

output_B(LED);

output_C(LED>>8);

output_D(LED>>16);

delay_ms(200);

void main()
{

set_tris_B(0x00);

set_tris_C(0x00);

set_tris_D(0x00);

output_B(0xff);

output_C(0xff);

output_D(0xff);

while(TRUE) ////////////////// ANODE CHUNG

sangdantsp();

tatdantsp();

sangdanpst();

tatdanpst();

sangdantspvatatdanpst();

sangdanpstvatatdantsp();

delay_ms(200);

}
2/Viết Ct dk led 7 đoạn anode chung thực hiện các lệnh sau
a/ Đếm lên 0-9 và đếm xuống 9-0
b/Đếm lên các giá trị lẻ từ 0-9 và từ 9-0
c/Đếm lên các giá trị chẵn 02468 và xuống 86420
d/ Hiển thị từ 0-F và từ F-0

#include<16f877a.h>

#fuses nowdt,hs,put,noprotect

#use delay(clock=20M)

const unsigned int8


L7D[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

void main()

signed int8 DEM=0;


set_tris_D(0x00);

output_D(0xFF);

while(true)

for(DEM=0;DEM<=9;DEM++)

output_D(L7D[DEM]);

delay_ms(200);

/////////////////////////////////////////

for(DEM=9;DEM>=0;DEM--)

output_D(L7D[DEM]);

delay_ms(200);

//////////////////////////////////////////

for(DEM=1;DEM<=9;DEM=DEM+2)

output_D(L7D[DEM]);

delay_ms(200);

/////////////////////////////////////////

for(DEM=9;DEM>=1;DEM=DEM-2)

output_D(L7D[DEM]);

delay_ms(200);

/////////////////////////////////////////

for(DEM=0;DEM<=8;DEM=DEM+2)
{

output_D(L7D[DEM]);

delay_ms(200);

////////////////////////////////////////

for(DEM=8;DEM>=0;DEM=DEM-2)

output_D(L7D[DEM]);

delay_ms(200);

////////////////////////////////////////

for(DEM=0;DEM<=15;DEM++)

output_D(L7D[DEM]);

delay_ms(200);

////////////////////////////////////////

for(DEM=15;DEM>=0;DEM--)

output_D(L7D[DEM]);

delay_ms(200);

You might also like