1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

led 7 thanh với nút nhấn

Thảo luận trong 'Vi điều khiển - Mạch Số' bắt đầu bởi admin, 11 Tháng mười một 2010.

  1. admin Administrator

    Số bài viết: 683
    Đã được thích: 64
    Điểm thành tích: 28
    Bài này cũng vẫn hiển thị led 7 thanh từ 0 --> 9 nhưng khác ở chỗ có thêm nút nhấn, và nhấn 1 lần thì hiện số 1, 2 lần thì hiện số 2 cứ thế cho đến số 9. Vì vậy giai thuật của bài toán là phải làm sao đếm được số lần nhấn nút để hiển thị số led tương ứng. Và khi lập trình với nút nhấn cần chú ý đến phần delay nếu kô khi ấn nút mấy lần mà vẫn chưa thấy led chuyển sang số khác! Khi làm thực tế cũng vậy, làm sao để khi ấn nút kô bị nhiễu, có thể khắc phục bằng phần cứng hay bănhf lập tình hoặc cả 2! Cái này các bạn tự tìm hiểu thêm nha

    [IMG]

    Đây là hìn mô phỏng, kô khác j bài 2 cả, chỉ khác là bây giờ dùng thêm nút nhấn như hình dưới:


    Mã:
    //khai bao thu vien
    #include <at89x51.h>
    
    //dinh nghia nut nhan
    #define key	P1_7
    
    // Khai bao cac bien'
    unsigned char number;
    unsigned char dem=0;
    unsigned int i;
    int m;
    
    //Ham tao tre~
    void delay_1ms(){
    	TH1=0xFB; // Dung timer 1 phuc vu cho delay
    	TL1=0x00;
    	TR1=1;
    	while(1){
    	if(TF1==1) break;
    	}
    	TR1=0;
    	TF1=0;
    }
    void delay(unsigned char t){
    	unsigned char i;
    	for(i=0;i<t;i++)
    	delay_1ms();
    }
    
    //=Chuong trinh hien thi led 7 thanh tu 1 den 9==
    void display_led(unsigned char number)
    {
      
      switch (number)
      {
       case 0:
     P3=0xc0;
      break;
     case 1:
     P3=0xf9;
      break;
       case 2:
     P3=0xa4;
      break;
       case 3:
     P3=0xb0;
      break;
       case 4:
     P3=0x99;			
    	break;
       case 5:
     P3=0x92;
      break;
       case 6:
     P3=0x82;
      break;
       case 7:
     P3=0xf8;
      break;
       case 8:
     P3=0x80;
      break;
       case 9:
     P3=0x90;
      break;
    	 
      }
    }
    //==Chuong trinh con nut nhan====
    unsigned char nutnhan()			  // dem' so lan an' nut' de? hien thi
    {								  // le^n led 7 thanh
    if(key==0)
    {
    delay(3000);
    while(key==0)
    {
    ;
    }
    dem++;
    if(dem==10)
    {dem=0;}
    }
    return dem;
    }
    //*****Chuong trinh chinh*********//
    void main()
    {
    int m;
    while(1) 
    	{
    
    	m=nutnhan();   //So lan nhan nut tuong ung' voi so' led hien thi
        display_led(m);
        }
    }
    

Chia sẻ trang này