Thursday, April 17, 2014

// // Leave a Comment

002. LED 1: LED nhấp nháy

Yêu cầu: Dùng vđk 8051 nhấp nháy 1 led (sáng 500ms tắt 500ms)
Thực hành: gồm 2 phần:  mắc mạch và viết code nhé

     +Mắc mạch mô phỏng:

  -Chúng ta mở Proteus lên chọn Isis:



  -Kích P, và pick các Devices sau:



  • AT89C52: Vi điều khiển 8051
  • Resistor: trở
  • Capacitor: tụ
  • Crystal: thạch anh tạo xung
  • Led-Red: Led màu đỏ, bạn có thể pick led màu khác tùy ý :D
  • Button: Nút reset
 -Mắc mạch như hình: Ta chọn device cần mắc rồi click lần nữa lên vị trí cần mắc. Chúng ta cũng có thể xoay device 1 cách đơn giản bằng cách đặt phím tắt cho nó, trong trường hợp này mình chọn Space (phím cách nhé) chúng ta vào System->Keyboard matching->chọn Orien....


-Tiếp theo chúng ta đi dây (dj :v) cho mạch bằng cách click vào cực này xong đi dây sao cho gọn rồi click lên cực đích.


-Để nối đất hay nối nguồn bạn chọn biểu tượng    nhé: Ground (đất), Power (nguồn).
   Trên hình chúng ta thấy có 2 phần khó hiểu 1,2: thực ra đây là 2 mạch con điều kiện thôi. Nếu làm trên mạch thật bạn mới cần chú ý, còn trên mạch mô phỏng bỏ qua cũng được. Nhưng dù sao chúng ta cũng cần phải biết để lắp mạch thật nhỉ!
 Ở hình số 1: đây là mạch tạo xung với con X1 crystal nhé. Nó sẽ được nối với 2 chân XTAL 1 và XTAL 2 giúp tạo xung cho vi điều khiển hoạt động. Trong ví dụ này, chúng ta xét xung 12MHz. //trong mạch mô phỏng ta có thể bỏ qua mạch này nhưng vẫn tạo được xung 12MHz bằng cách kích đúp vào con AT89C52 và ghi giá trị vào phần "Clock frequency" nhé//
  Ở hình số 2: Đây là mạch reset, đôi khi chúng ta không thấy nút bấm trong một số trường hợp. mạch này nối với chân RST của vi điều khiển nhé// trong mạch mô phỏng cũng có thể bỏ qua mạch này luôn vì chúng ta có các nút mô phỏng bên góc trái rồi.//
  Ngoài ra trong mạch mô phỏng chúng ta cũng bỏ qua điện trở hạn chế dòng vào LED. Trong trường hợp này là 280 ôm nhé. Ta có thể tính được điện trở này: R=(Vcc-Vled)/I trong đó Vcc=5V, Vled=2.2V, I=10mA nhé 


     +Code:

-Chúng ta vào KeilC chọn Project-> New uvision Project để tạo project mới (chọn Atmel -> chọn AT89C52 để chọn vi điều khiển 89C52 nhé), đặt tên project là bai1 đi ha.



-tiếp theo ấn Ctrl+N để tạo file mới: chúng ta nhập code:

#include<regx52.h>           
//khai báo thư viện
sbit LED_PIN = P0^2;      
//khai báo nối LED vào chân P0.2 của vdk

void Delay_ms(unsigned int t)     

//chương trình con tạo trễ (delay)
{
unsigned int x,y;             
for (x=0; x<t; x++) 
    {   
            for (y=0; y<123; y++);   
//đối với xung 12MHz ta chọn 123 nhé 
    }
}

void main()

{ 
     while(1) 
     {
LED_PIN= !LED_PIN; 
//dấu "!" là NOT  
          Delay_ms(500);               
//Delay 500ms trước khi đảo trạng thái 
      }
}
- Sau khi viết xong chúng ta lưu thành bai1.c nhé
- Tiếp đến chúng ta ấn  Alt+F7 chọn tab Output -> tick vào Create HEX file

- Sau đó ấn


để tạo HEX
- vậy là phần code đã xong rồi đó

     +Nạp Code cho vi điều khiển:

- Bằng cách kích đúp vào vi điều khiển, chúng ta chọn đường dẫn đến file hex vừa tạo trong mục Program file.
- Cuối cùng bạn kích chuột vào tam giác xanh góc trái hoặc ấn phím F12 để tận hưởng nhớ :D 

     +Kết luận:

- Qua ví dụ hôm nay, chúng ta đã nắm được các bước cơ bản để mô phỏng bằng proteus và cấu trúc lập trình vi điều khiển với C bằng keilC, ngày mai chúng ta sẽ làm thêm một số ví dụ về LED nhé! 


thân


Phong'S

0 comments:

Post a Comment