RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Đồng hồ số dùng 4 LED 7 đoạn

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts

  • vuhung0708
    replied
    mình muốn thiết kế đồng hồ số dùng xung 2 Hz từ 4060 và thạch anh 32368 hz để làm bộ đếm còn quét led thì dùng timer của 8051 thì khai báo như thế nào ???????????????????

    Leave a comment:


  • legosse
    replied
    Nguyên văn bởi demon52 Xem bài viết
    Mình tưởng phải kiếm 1 con 10 chân chứ! ngoài đời con led 7 đoạn 10 chân đúng không?
    Uh quên mất

    Leave a comment:


  • demon52
    replied
    Nguyên văn bởi legosse Xem bài viết
    Trong thư viện có LED 7 đoạn chứ:LDS-A50R, nhưng mà không nhất thiết phải dùng chính xác vậy, cư kiếm đại 1 con 7 chân,sữa lại thứ tự các chân cho đúng là được.
    Mình tưởng phải kiếm 1 con 10 chân chứ! ngoài đời con led 7 đoạn 10 chân đúng không?

    Leave a comment:


  • vns159
    replied
    Nguyên văn bởi legosse Xem bài viết
    4 chân A,B,C,D của 7447 nối vào 4 chân của 89, thay đổi 0 1 ở các chân này là được, cái bảng mả thì bạn coi trong datasheet ấy
    VD:
    số 0 -> 0 0 0 0 (A B C D)
    số 1 -> 0 0 0 1
    ...
    số 9 -> 1 0 0 1
    Các chân B của BJT bạn có thể nối vào các chân của 89, kích bình thường
    Còn nếu muốn tiết kiệm chân cho 89 hơn nữa thì dùng thêm 1 chip giải mã 3bit (74138) hoặc 4 bit (74154), các chân đầu ra của chip giải mã thứ 2 này nối vào chận B của transitor để kích.
    Nếu dùng con 3 bit (8 đầu ra) thì có thể kích được 8 LED 7 đoạn, 4 bit thì có thể kích được tới 16 LED.
    2 con này có bảng trạng thái, trong datasheet ghi rõ lắm
    VD con 3 bit
    C B A Y8 Y7 ... Y0
    0 1 1 1 1 1 0 1 1 1 1 1
    3 bit CBA tạo thành số mấy thì đầu ra tương ứng ở mức 0 -> LED tương ứng được cấp nguồn ...
    Thử dùng con cỡ 10 bit thì có thể kích được vo số LED mà chỉ dùng có 7 chân của 89 thôi con chip này có chắc to bằng ngôi nhà quá

    Bác nào coi dùm cái chương trình ở trên dùm với
    Cám ơn cậu đã trả lời cụ thể, nhưng tại câu hỏi mình chưa rỏ :
    Ý mình là lúc lập trình, nếu bình thường thì mình khai báo

    #define LED_DATA = P0
    và sử dụng bảng mã dành cho led 7 đoạn để hiển thị LED_DATA này, nhưng bây h thì mình 7447, LED_DATA sẽ được thay bằng 4 cổng A,C,B,D. tương ứng với P0_0,P_01,P0_2,P_03 chẳng hạn. Mục đích của mình là muốn 4 chân này thành một mảng để dùng bảng mã cho tiện, chứ ko thể gán giá trị cho từng chân để hiển thị số cho led 7 đoạn đc. Mình muốn hỏi cách định nghĩa cho kái mảng 4 chân đó.
    thanxx

    Leave a comment:


  • legosse
    replied
    Nguyên văn bởi demon52 Xem bài viết
    Híc các bác toàn dùng orcad em chỉ biết dùng protues thôi! mà sao bạn không dùng 74ls47 cho dễ viết code! mình còn gà quá! nhìn mấy hàm timer choáng thật!
    Mà trong thư viện layout của orcad có con 7seg không? còn trong protues phải tạo linh kiện mới chuyển xang layout được!
    à còn điều này nữa mạch layout trong protues đẹp hơn orcad nhiều
    Trong thư viện có LED 7 đoạn chứ:LDS-A50R, nhưng mà không nhất thiết phải dùng chính xác vậy, cư kiếm đại 1 con 7 chân,sữa lại thứ tự các chân cho đúng là được.

    Leave a comment:


  • demon52
    replied
    Híc các bác toàn dùng orcad em chỉ biết dùng protues thôi! mà sao bạn không dùng 74ls47 cho dễ viết code! mình còn gà quá! nhìn mấy hàm timer choáng thật!
    Mà trong thư viện layout của orcad có con 7seg không? còn trong protues phải tạo linh kiện mới chuyển xang layout được!
    à còn điều này nữa mạch layout trong protues đẹp hơn orcad nhiều

    Leave a comment:


  • legosse
    replied
    Nguyên văn bởi vns159 Xem bài viết
    Cho tớ hỏi : nếu thiết kế đồng hồ số 4 led 7đoạn dùng bộ giải mã 7447 thì khi định nghĩa 4 chân A,B,C,D như thế nào ???
    4 chân A,B,C,D của 7447 nối vào 4 chân của 89, thay đổi 0 1 ở các chân này là được, cái bảng mả thì bạn coi trong datasheet ấy
    VD:
    số 0 -> 0 0 0 0 (A B C D)
    số 1 -> 0 0 0 1
    ...
    số 9 -> 1 0 0 1
    Các chân B của BJT bạn có thể nối vào các chân của 89, kích bình thường
    Còn nếu muốn tiết kiệm chân cho 89 hơn nữa thì dùng thêm 1 chip giải mã 3bit (74138) hoặc 4 bit (74154), các chân đầu ra của chip giải mã thứ 2 này nối vào chận B của transitor để kích.
    Nếu dùng con 3 bit (8 đầu ra) thì có thể kích được 8 LED 7 đoạn, 4 bit thì có thể kích được tới 16 LED.
    2 con này có bảng trạng thái, trong datasheet ghi rõ lắm
    VD con 3 bit
    C B A Y8 Y7 ... Y0
    0 1 1 1 1 1 0 1 1 1 1 1
    3 bit CBA tạo thành số mấy thì đầu ra tương ứng ở mức 0 -> LED tương ứng được cấp nguồn ...
    Thử dùng con cỡ 10 bit thì có thể kích được vo số LED mà chỉ dùng có 7 chân của 89 thôi con chip này có chắc to bằng ngôi nhà quá

    Bác nào coi dùm cái chương trình ở trên dùm với

    Leave a comment:


  • baviet05dt2
    replied
    trước tiên bạn phải đưa cái lưu đồ thuật toán lên rồi mọi người mới giải quyết dùm bạn đươc.còn dùng bộ định thời timer 1 hay 0 gì cũng như nhau thôi.chỉ cần tính chính xác thời gian trể là được.ok.

    Leave a comment:


  • vns159
    replied
    Cho tớ hỏi : nếu thiết kế đồng hồ số 4 led 7đoạn dùng bộ giải mã 7447 thì khi định nghĩa 4 chân A,B,C,D như thế nào ???

    Leave a comment:


  • legosse
    replied
    Nguyên văn bởi Toan.Lv Xem bài viết
    Đối với 8051, để nó có thể chạy được bạn cần phải đảm bảo tối thiểu 4 điều kiện sau:

    1/Cấp nguồn đầy đủ: Chân 40 nối nguồn +5V, chân 20 nối mass
    2/Mạch reset nối đúng, tối thiểu phải nối +5V--->tụ--->tro--->mass, lấy tín hiệu tại cực âm của tụ (giữa tụ và trở) đưa vào chân 9.
    3/Mạch dao động nối đúng: dao động thạch anh nối vào chân 18,19, cần thêm hai tụ 33pF.
    4/EA nối đúng: EA nối với nguồn thì 8051 sẽ chạy với bộ nhớ chương trình on-chip. EA nối với mass thì 8051 sẽ chạy với bộ nhớ chương trình ngoài, bỏ qua bộ nhớ chương trình on-chip.(Nếu EA nối mass mà không có bộ nhớ chương trình ngoài thì 8051 không chạy được.)
    Đây là chương trình mình viết bằng C
    Nạp vào chip -> đồng hồ chỉ hiển thị: 0000
    Mọi người xem dùm sai ở đâu nhé
    Thanks!
    HTML Code:
    #include <AT89x51.h>
    #include <intrins.h>
    //Dinh nghia I/O
    #define LED_DATA P0
    #define key1 P2_3
    #define key2 P2_2
    #define key3 P2_1
    #define key4 P2_0
    #define LED1 P2_7
    #define LED2 P2_6
    #define LED3 P2_5
    #define LED4 P2_4
    //Khai bao cac chuong trinh con
    void setup_timer(void);
    void quet_phim(void);
    void delay(unsigned int number);
    //Khai bao bien
    unsigned char code bang_ma[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
    unsigned char count1,count2,sec,h1,h2,m1,m2;
    char hour,minute;
    //Ham khai bao dung ngat timer
    void setup_timer(void)
    { TMOD=0x11;
      TH1=0x3C;
      TL1=0xAF;
      TH0=0x3C;
      TL0=0xAF;
      ET1=1;
      ET0=1;
      EA=1;
      TF1=0;
      TR1=1;
      TF0=0;
      TR0=1;
    }
    //Ham ngat timer0 dung de tao clock
    void T0_ISR(void) interrupt 1
    { TR0=0;							
      TH0=0x3C;
      TL0=0xAF;
      count1++;
      if(count1==20)
      { count1=0;
        sec++;
      }
      if(sec==60)
      { sec=0;
        minute++;
    	if(minute==60)
        { minute=0;
          hour++;
    	  if(hour==24) hour=0;
        }
      }
      TF0=0;
      TR0=1;
    }
    //Ham ngat timer1 dung de quet
    void T1_ISR(void) interrupt 3
    { TR1=0;							
      TH1=0xEC;	 //5000us
      TL1=0x77;
      count2++;
      LED1=1;
      LED2=1;
      LED3=1;
      LED4=1;
      if(count2==1)
      { LED_DATA=bang_ma[h1];
        LED1=0;
      }
      if(count2==2)
      { LED_DATA=bang_ma[h2];
        LED2=0;
      }
      if(count2==3)
      { LED_DATA=bang_ma[m1];
        LED3=0;
      }
      if(count2==4)
      { LED_DATA=bang_ma[m2];
        LED4=0;
    	count2=0;	//Khoi dong lai bien dem
      }
      TF1=0;
      TR1=1;
    }
    //Ham quet phim
    void quet_phim(void)
    { if(key1==0)        //Neu phim duoc an key1=0
      { while(key1==0);	 //Chong nay phim
        delay(30);		 //Chong soc dien
    	hour++;
    	if(hour>23) hour=0;
      }
      if(key2==0)        //Neu phim duoc an key2=0
      { while(key2==0);	 //Chong nay phim
        delay(30);		 //Chong soc dien
    	hour--;
    	if(hour<0) hour=23;
      }
      if(key3==0)        //Neu phim duoc an key3=0
      { while(key3==0);	 //Chong nay phim
        delay(30);		 //Chong soc dien
    	minute++;
    	if(minute>59) minute=0;
      }
      if(key4==0)        //Neu phim duoc an key4=0
      { while(key4==0);	 //Chong nay phim
        delay(30);		 //Chong soc dien
    	minute--;
    	if(minute<0) minute=59;
      }
    }
    //Dinh nghia ham delay
    void delay(unsigned int number)
    { unsigned char j;
      unsigned char i;
      for(i=0;i<=number;i++)
      { for(j=0;j<=1000;j++)
          {}
      }
    }
     //Chuong trinh chinh
    void main(void){ 
      count1=0;
      count2=0;
      sec=0;
      hour=0;
      h1=hour/10;
      h2=hour%10;
      minute=0;
      m1=minute/10;
      m2=minute%10;
      setup_timer();
      while(1) {
       quet_phim();
       m1=minute/10;
       m2=minute%10;
       h1=hour/10;
       h2=hour%10;
      }
    }

    Leave a comment:


  • Toan.Lv
    replied
    cảm ơn bác nha,mình làm được rồi
    Cho mình hỏi cách nối dây cho con 89c51, Vcc nối vào chân nào 31 hay 40 hay cả 2, bác xem mạch này đúng không dùm nge
    Click vào đây để xem rộng hơn Name: Dong ho.jpg Views: 1 Size: 114.6 KB
    Đối với 8051, để nó có thể chạy được bạn cần phải đảm bảo tối thiểu 4 điều kiện sau:

    1/Cấp nguồn đầy đủ: Chân 40 nối nguồn +5V, chân 20 nối mass
    2/Mạch reset nối đúng, tối thiểu phải nối +5V--->tụ--->tro--->mass, lấy tín hiệu tại cực âm của tụ (giữa tụ và trở) đưa vào chân 9.
    3/Mạch dao động nối đúng: dao động thạch anh nối vào chân 18,19, cần thêm hai tụ 33pF.
    4/EA nối đúng: EA nối với nguồn thì 8051 sẽ chạy với bộ nhớ chương trình on-chip. EA nối với mass thì 8051 sẽ chạy với bộ nhớ chương trình ngoài, bỏ qua bộ nhớ chương trình on-chip.(Nếu EA nối mass mà không có bộ nhớ chương trình ngoài thì 8051 không chạy được.)

    Leave a comment:


  • legosse
    replied
    cảm ơn bác nha,mình làm được rồi
    Cho mình hỏi cách nối dây cho con 89c51, Vcc nối vào chân nào 31 hay 40 hay cả 2, bác xem mạch này đúng không dùm nge
    Click image for larger version

Name:	Dong ho.jpg
Views:	1
Size:	114.6 KB
ID:	1337784
    Last edited by legosse; 21-05-2009, 05:59.

    Leave a comment:


  • Toan.Lv
    replied
    Sao a e vào nhiều mà không thấy chỉ giúp mình với, mình loay hoay mãi mà chưa xử lí được chân cẳng của cái con LED đó, không sữa chân được đâu làm j tiếp được đâu, mấy bác giúp em đi
    Vấn đề của bạn nằm ở việc đồng bộ giữa biểu tượng nguyên lý của linh kiện và biểu tượng của nó trong layout. Bạn thử kiểm tra điểm này xem:
    - Trong sơ đồ nguyên lý bạn muốn nối a với P0.0, b với P0.1 ....Trong biểu tượng nguyên lý của LED 7 thanh, với mỗi chân có 2 thông số là tên, và số thứ tự. Ví dụ chân a - số thứ tự 1, b số thứ tự 2 chẳng hạn...Tuy nhiên trong mạch in, các chân (pad) thường đánh số, các số này tương ứng với số thứ tự chân bên biểu tượng nguyên lý. Vì thế giả sử ở nguyên lý a số thứ tự là 1 và nối với chân P0.0, thì khi sang mạch in, P0.0 sẽ nối với chân (pad) đánh số 1.
    - Khi muốn nối đúng chân thì bạn phải kiểm tra con LED thực tế xem chân số mấy là a, chân số mấy là b,...và đánh số cho đúng. Bạn đánh số đúng thì giữa mạch in và mạch nguyên lý sẽ tương thích với nhau. Nhưng láp con LED thực tế vào có đúng hay không lại phụ thuộc vào việc các chân bạn vẽ có phù hợp với con thực hay không. Cho nên khi vẽ bạn hãy kiểm tra con thật trước đã

    Leave a comment:


  • legosse
    replied
    Mình nghĩ sẽ giữ nguyên các chân của con LED 7 đoạn thay vào đó nối các chân 89 vào LED cho đúng là được,đang thử làm
    Nhân tiện xin hỏi mọi người 1 í
    mình đọc lại ly thuyết thấy có nói Port 0 có 2 chức năng
    - BUS dữ liệu/địa chỉ
    - I/O (bắt buộc nối P0 với 1 điện trở thanh lên Vcc)
    Như vậy nếu mình muốn dùng Port 0 để nối với 4 LED 7 đoạn (tạo đồng hồ) thì có phải nối với điện trở thanh không mấy bác? (còn Port 1,2,3 thì không cần trở thanh vì bình thường nó đã làm I/O rồi?)

    Leave a comment:


  • hoang_tuan
    replied
    Nguyên văn bởi legosse Xem bài viết
    Mình hiểu về điều kiện if(key==0) rồi
    Chương trình vậy là ổn
    H cho mình hỏi về cái mạch
    Khi chuyên qua layout các chân của Port 0 không nối đúng với các chân của LED 7 đoạn theo thứ tự P0_0 -> a,....P0_6 ->g
    mà lại P0_0 -> chân số 5 của LED là b ,...
    mặc dù mình đã sửa lại các chân trong sơ đồ nguyên lí đúng thứ tự là a-4,b-5,....
    Với lại cái LED nó nằm không đúng
    10 9 8 7 6
    1 2 3 4 5
    Đáng lẽ là
    1 2 3 4 5
    10 9 8 7 6
    Mình dùng lệnh xoay ngang(H) xoạy dọc (V) đều không được
    Mọi người xem hình vẽ cho dễ hiểu
    Sơ đồ nguyên lí
    Layout
    theo tôi bạn cứ đo các chân của led 7 thanh đi xem no có thứ tự như thế nào rùi bạn tự tạo ra một linh kiện mới ở trong layoat thế là được rùi vì trên thị trường có rất nhìu loại led 7 thanh mù trong thư viện không có mình phải tự tao thui

    Leave a comment:

Về tác giả

Collapse

legosse Tìm hiểu thêm về legosse

Bài viết mới nhất

Collapse

Đang tải...