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}

Mô phỏng vi điều khiển 8051 và Led 7 đoạ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
    [IMG]
    Trên đây là hình thể hiện 2 loại led 7 thanh, 1 cái anot chung( mắc dương chung), 1 cái Ktot chung( mắc đất chung. 7 thanh của led được đánh theo thứ tự a,b,c,d,e,f,g điều khiển như các led đơn nhưng khác ở chỗ 7 led cùng trên 1 khối vì thế ta có thể tạo ra các số từ 1-> 9, từ a-->z:D
    Tiếp theo là hình mô phỏng:
    [IMG]
    Trong hình dùng anot chung, vì thế muốn thanh led nào sáng thì cho cổng tương ứng =0, nhân tiện mình bổ sung thêm hình led đơn, chân nào là chân anot, chân nào là ktot
    [IMG]
    Giải thuật để led hiện từ 0-9, các bạn có thể ngồi mò khi cho từng led sáng:D, hoặc là tra mã có sẵn trên mạng, mình sẽ đưa 1 số mã sau:

    Anod chung Cathode chung

    0 C0h 3Fh

    1 F9h 06h

    2 A4h 5Bh

    3 B0h 4Fh

    4 99h 66h

    5 92h 6Dh

    6 82h 7Dh

    7 F8h 07h

    8 80h 7Fh

    9 98h 67h

    A 88h 77h

    B C6h 39h

    C 86h 79h

    D 8Eh 71h

    E 82h 70h

    F 89h 76h

    . 7Fh 80h

    [trắng] FFh 00h
    Mã:
    //khai bao thu vien
    #include <at89x51.h>
    //dinh nghia nut nhan
    #define nutnhan	  P1_7
    
    //Ham tao tre~
    void delay( unsigned int ms )
    {
    unsigned int i,j;
    for (i=0;i<ms;i++)
    for (j=0;j<120;j++)
    {} 
    }
    //=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 chinh===
    void main()
    {
    int m;
    while(1)   //Vong lap. vo^ han.
    	{
    	for(m=0;m<10;m++) {	  //Vong lap hien thi led tu 1->9
        display_led(m); 
        delay(1000);	   }
    
    
    	}	  //ket thuc While(1)
    }	   //END
    Trong hình mô phỏng mình vẽ có cả nút ấn, nếu các bạn muốn bao jo ấn nút đó, led mới sáng thì thêm như sau:
    Mã:
    ...
    //===Chuong trinh chinh===
    void main()
    {
    int m;
    while(1)   //Vong lap. vo^ han.
    	{
    	if(nutnhan==0){           //Nhan nut led moi' sang'
            for(m=0;m<10;m++) {	  //Vong lap hien thi led tu 1->9
             display_led(m); 
             delay(1000);	   }}
    
    
    	}	  //ket thuc While(1)
    
    }	   //END
    Ở bài 2 này mình kô đi quá sâu để các bạn tự tìm hiểu thêm, đặc biệt phần code, đoạn chương trình hiển thị led mình viết thế dễ hiểu nhưng dài, vì có thể ngắn hơn nếu dùng mảng.
    Link dow file mô phỏng+file Hex nha( kô có nút ấn trong code):
    http://www.mediafire.com/file/mzhmnyl0ymy/led7thanh.rar

  2. dinhngaictu New Member

    Số bài viết: 12
    Đã được thích: 0
    Điểm thành tích: 1
  3. thuy2410 New Member

    Số bài viết: 20
    Đã được thích: 0
    Điểm thành tích: 0
  4. tieutathan021 New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0

Chia sẻ trang này