ButtonLedTL CHUYÊN NGÀNHVi điều khiển

Led đơn-led 7 đoạn- button-interrupt

Sử dụng button và ngắt interrupt để điều khiển led đơn và led 7 đoạn (7 segments) .

Trong project này, chúng ta sử dụng chức năng interrupt trên portb để chọn giữa hai mode: 7 segment và led đơn. Khi mode Led đơn được chọn thì 8 led đơn sẽ chạy theo hiệu ứng dịch qua trái <-> phải cho đến khi một mode khác được chọn. Khi mode 7 Segment được chọn, các led đơn tắt, 3 digit 7 segment bắt đầu tăng từ 0. Các mode này được chọn thông qua 2 button.

Bạn có thể  xem thêm 2 bài viết sau để có thể thực hiện project này dễ dàng.

Code Project:
/*Chuong trinh thuc hanh hien thi led 7seg, chay den led va ngat ngoai
Ngay: 15/12/2010
Nguoi viet: Huynh Minh Trung
Website: giaoan.link
*/

unsigned short i,j,num,dv,chuc,dk,dataeeprom; // Khai bao bien

//Chuong trinh chuyen doi so thap phan sang led 7 doan
unsigned short mask(unsigned short num){
switch (num){
case 0: return 0xc0;
case 1: return 0xf9;
case 2: return 0xa4;
case 3: return 0xb0;
case 4: return 0x99;
case 5: return 0x92;
case 6: return 0x82;
case 7: return 0xf8;
case 8: return 0x80;
case 9: return 0x90;
}
}

///////Chuong trinh led 2 digit 7seg///////////////////////
void led7seg(){
for(i=0;i<=99;i++){
for(j=0;j<=20;j++){
PORTD=mask(i%10);
PORTE.F0=1;
delay_ms(10);
PORTE.F0=0;
PORTD=mask(i/10);
PORTE.F1=1;
delay_ms(10);
PORTE.F1=0;
}
if(PORTB.F1==0)
break; // nhay ra khoi chuong trinh dem led khi portb.f1 ==0
}
}

///////////////CHUONG TRINH CHAY 8 LED DON//////////////////
void chayled(){
for(;;){
PORTC=0X01;
delay_ms(500);
for(i=0;i<=7;i++){
PORTC = PORTC<<1 ;
if(PORTB.f0==0){ //dung cho nut bam 2 mode kiem tra portb.f0
PORTC=0x00;
break;
}
delay_ms(500);
}
PORTC=0X80;
delay_ms(500);
for(i=0;i<=7;i++){
PORTC= PORTC>>1;
if(PORTB.f0==0){
PORTC=0x00;
break;
}
delay_ms(500);
}
if(PORTB.f0==0){
PORTC=0x00;
break;
}
}
}

void main(){

///////////Khai bao bien///////////////////////
//OPTION_REG=0x00;
// TMR0=0;
INTCON=0x84;

TRISA=0X00;

TRISB=0xFF;

TRISD=0x00;
PORTD=0X00;

TRISC=0X00;
TRISE=0X00;
PORTE=0X00;

while(1){
if(PORTB.F1==0){ // neu portb.f1==0 ->cac led o porc nhay 5 lan
chayled();
}
if(PORTB.F0==0){ //neu portb.f0==0 -> dem 2 led7seg
led7seg();

}
} // ket thuc dong lap while
}

Tải project mikroc và proteus:



Nguồn: giaoan.link






giaoanppt

Giaoan.link trang chia sẽ giáo án điện tử, bài giảng powerpoint, template powerpoint, nguyên liệu làm bài giảng, tài liệu, biểu mẫu miễn phí!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

This site uses Akismet to reduce spam. Learn how your comment data is processed.