Showing posts with label led7seg. Show all posts
Showing posts with label led7seg. Show all posts

Thursday, April 17, 2014

// // 1 comment

007. 7-SEG-LED 2: Một số ví dụ về LED 7 thanh (Phần 2) mô phỏng hiển thị đồng hồ số

Hôm nay chúng ta sẽ tiếp tục làm bài ví dụ về LED 7 thanh nhé...

Ví dụ 3: Làm một đồng hồ đếm giây đơn giản

Trong ví dụ này chúng ta sẽ mô phỏng hiển thị của một đồng hồ sử dụng 3 LED-7SEG đôi. Từ ví dụ này ở bài viết sau chúng ta sẽ thử làm 1 Project đồng hồ bấm giây đơn giản (simple stopwatch) sử dụng phương pháp ngắt định thời (Timer) để hiển thị chính xác.

Đầu tiên, chúng ta sẽ mắc mạch:

Sử dụng các thiết bị sau:

+AT89C52
+7SEG-MPX2-CA
+BUTTON
+NOT
+CRYSTAL
+RESISTOR (250~300 ohm)
+CRYSTAL
+CAPACITOR

và đi dây như hình:


Chú ý:  phải mắc cổng NOT vào chân điều khiển LED7 các bạn nhé.


CODE:


//daiphongselectronics@gmail.com
#include<regx52.h>
//ket noi LED7
#define LED_PORT P0
//ket noi chan dieu khien
sbit LED11_PIN=P2^0;
sbit LED12_PIN=P2^1;
sbit LED21_PIN=P2^2;
sbit LED22_PIN=P2^3;
sbit LED31_PIN=P2^4;
sbit LED32_PIN=P2^5;
//code hien         thi tu 0-9 cho LED7
unsigned char code Code7Seg[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
//delay_ms ham tao tre
void Delay_ms(unsigned int t)
{
                //xoa dau // khi viet vao keil. Do loi Blog, minh k go lenh binh thuong duoc
unsigned int x,y;
                for(x//=0;x//<t;x//++)
                {
                                //su dung XTAL=12MHz
                                for(y//=0;y//<123;y//++);
                }
}

//main prop
void main()
{
                                unsigned char gio,phut,giay,chuc,dvi,i;
                                while(1)
                                {
                                                //giai thich o duoi
                                                for (i=0;i<167;i++)
                                                {
                                                                //hienthigio
                                                                chuc=gio/10;
                                                                dvi=gio%10;
                                                               
                                                                LED_PORT=Code7Seg[chuc];
                                                                LED11_PIN=0;
                                                                Delay_ms(1);
                                                                LED11_PIN=1;
                               
                                                                LED_PORT=Code7Seg[dvi];
                                                                LED12_PIN=0;
                                                                Delay_ms(1);
                                                                LED12_PIN=1;
                               
                                                                //hienthiphut
                                                                chuc=phut/10;
                                                                dvi=phut%10;
                                                               
                                                                LED_PORT=Code7Seg[chuc];
                                                                LED21_PIN=0;
                                                                Delay_ms(1);
                                                                LED21_PIN=1;
                               
                                                                LED_PORT=Code7Seg[dvi];
                                                                LED22_PIN=0;
                                                                Delay_ms(1);
                                                                LED22_PIN=1;
                               
                                                                //hienthigiay
                                                                chuc=giay/10;
                                                                dvi=giay%10;
                                                               
                                                                LED_PORT=Code7Seg[chuc];
                                                                LED31_PIN=0;
                                                                Delay_ms(1);
                                                                LED31_PIN=1;
                               
                                                                LED_PORT=Code7Seg[dvi];
                                                                LED32_PIN=0;
                                                                Delay_ms(1);
                                                                LED32_PIN=1;
                                                }
                                                giay++;
                                                if (giay>59)
                                                {
                                                                giay=0;phut++;
                                                                if (phut>59)
                                                                {
                                                                                phut=0;gio++;
                                                                                if(gio>23)
                                                                                {
                                                                                                gio=0;
                                                                                }
                                                                }
                                                }
                                                }
                 
}                 

      Chúng ta cần để ý vòng lặp for() trong chương trình chính:
      Vòng lặp này sẽ lặp đúng 167 lần: do chương trình hiển thị của chúng ta cần tổng thời gian thực hiện khoảng 1+1+1+1+1+1=6 ms do vậy để LED7 hiển thị giây tăng mỗi 1 giây (1000ms) 1 lần, ta cần lặp 1000/6=166,666667 lần. Trong trường hợp này, mình chọn ~167.
      Xuất ra file HEX rồi nạp vào vi điều khiển và thưởng thức nhé~~

      Như vậy ở phương pháp này, chúng ta sẽ không áp dụng cho những trường hợp yêu cầu độ chính xác cao. Mà chúng ta sẽ phải sử dụng phương pháp khác để có thể đưa ra 1s chính xác hơn. Mình sẽ giới thiệu kĩ hơn ở những bài viết sau..

thân 
Phong'S
Read More
// // Leave a Comment

006. 7-SEG-LED 2: Một số ví dụ về LED 7 thanh (Phần 1)

    Hôm nay, chúng ta sẽ cùng nhau làm một số ví dụ về LED 7 thanh để làm rõ hơn những lý thuyết đã tìm hiểu ở bài viết trước.




     Chúng ta sẽ làm 3 ví dụ nhỏ về LED 7 thanh:

Ví dụ 1: Hiển thị số 0-9 sử dụng LED 7 và điều khiển bằng một nút bấm.
Ví dụ 2: Hiển thị số tự động tăng mỗi một s từ 00-99 sử dụng LED 7 thanh đôi.
Ví dụ 3: Làm một đồng hồ đếm giờ đơn giản.
       
Read More
// // Leave a Comment

005. 7-SEG-LED 1: Làm quen với LED 7 thanh

   Qua các bài viết trước, chúng ta đã cùng nhau tìm hiểu về Vi điều khiển AT89C52, LED và một số ví dụ cơ bản về điều khiển LED đơn cũng như nhiều LED một lúc. Bài viết hôm nay sẽ đề cập đến 1 thành phần khác có ứng dụng khá nhiều trong một mạch điều khiển: để hiện thị nhiệt độ, độ ẩm, điện áp... trong một số mạch đo hay để hiển thị thông tin được lập trình sẵn như thời gian đếm trên đèn giao thông...



  Hôm nay chúng ta sẽ tìm hiểu về sơ đồ chân,  cách hiển
Read More