Thứ Tư, 2 tháng 3, 2016

BÀI 34 : LED VÀ IC 74HC595 PIC16F877A CCS

IC 74HC595 còn được gọi là IC dịch chốt với mối quan hệ "vào nối tiếp và ra song song 8 bit". Để thực sự hiểu rỏ IC này chúng ta sẽ phải trả lời một số câu hỏi cơ bản nhất của vấn đề. Trước tiên, thế nào là dịch và chốt? Nói một chút lý thuyết kỹ thuật số về 2 thuật ngữ dịch và chốt trước khi tìm hiểu về 595 để ta nắm chắc vấn đề hơn.
1. Thế nào là dịch và chốt?
Dịch là gì?
- Thuật ngữ "Dịch" được dùng cho IC này thực chất là cách nói của dân kỹ thuật về đặt tính ngõ vào nối tiếp của IC. Vậy "đặt tính ngõ vào nối tiếp của IC" là như thế nào? Có thể nói 1 cách đơn giản là ta có thể đưa lần lượt nhiều giá trị logic vào 1 ngõ vào của IC đó để nó lưu vào bộ nhớ chờ đến khi có lệnh xử lí. Có thể hiểu ngõ vào nối tiếp tức là các giá trị được nạp vào IC một cách từ từ ở từng thời điểm khác nhau trên cùng 1 ngõ vào, còn nếu nói vào song song thì có nghĩa là sẽ có nhiều ngõ vào và các giá trị sẽ được nạp vào IC cùng 1 lúc. Thuật ngữ này đối với ngõ ra cũng tương tự!
Chốt là gì?
- Chốt là khi thoa mản 1 điều kiện nào đó nó sẽ cho phép IC giữ nguyên giá trị ngõ ra, không cho nó thay đổi  mặc dù tín hiệu ngõ vào có thay đổi thế nào.
=> Vậy tới đây các bạn cũng đã hình dung được phần nào chức năng của 1 IC dịch chốt rồi nhé. Bây giờ ta sẽ tìm hiểu cụ thể vấn đề với IC 74HC595.
2. Tìm hiểu IC 74HC595
Để hiểu rỏ về IC 595 các bạn cần có trong tay datasheet của nó tại đây
Hình bên dưới là sơ đồ chân của IC
  • Các chân từ 1 tới 7 và chân số 15 là ngõ ra của IC (ứng với Q 0 , Q 1 ,…,Q 7 )
  • Chân DS (chân số 14) là ngõ vào của IC (đây là IC vào nối tiếp nên ta chỉ cần 1 ngõ vào là đủ).
  • Chân 16 - VCC là chân cấp nguồn dương (từ 2V đến 6V)
  • Chân số 8 GND là chân cấp Ground – cực (-) của nguồn. 

  • Chân SHCP là chân đưa xung clock (xung nhịp) vào IC và khi có cạnh lên của xung thì IC đưa tín hiệu ở ngõ vào vào bộ nhớ của IC để chờ xử lý. Có thể hơi khó hiểu khi đọc đến đây nhưng các bạn đừng lo lắng, vì đây là muốn các bạn tập làm quen với các thuật ngữ kỹ thuật, cứ đọc để biết là có nó trên đời. Sau đây là phần giải thích ^^
    • Đầu tiên, thế nào là xung clock, thực ra xung clock là 1 chuỗi tín hiệu logic 0 và 1 có thể là 1 xen kẽ với 0 cũng có thể là 0,1 ngẫu nhiên, nhưng nói chung nó là 1 chuổi tín hiệu logic.
    • Còn cạnh lên và cạnh xuống của xung thì các bạn có thể thấy trên hình, cạnh lên là khi xung clock chuyển trạng thái từ 0 lên 1, còn cạnh xuống là thời điểm khi chuyển từ 1 xuống 0
    • Vậy khi có cạnh lên của xung tại chân SHCP thì 1 tín hiệu logic từ ngõ vào của IC sẽ được lưu trữ vào trong IC để chờ tín hiệu cho phép xử lý. Bộ nhớ tối đa của IC là 8 bit, nếu vượt quá ngưỡng này thì giá trị mới sẽ được đưa vào IC và đồng thời giá trị cũ nhất của IC sẽ được xoá đi. 
  • Chân STCP là chân đưa xung clock vào IC để khi có cạnh lên của xung thì IC đưa toàn bộ 8 bit data đã được lưu (đã nói ở chân SHCP) ra ngõ ra của IC.


  •  Chân MR| là chân reset IC (tức là trả IC về trạng thái ban đầu – giống như khi ta ghost máy tính vậy – khi chân này tích cực thì toàn bộ bộ nhớ của IC sẽ bị xoá tất cả bằng 0, tuy nhiên lưu ý là lúc này tín hiệu ở ngõ ra không bị xoá mà vẫn giữ nguyên giá trị trước đó) và chân này tích cực mức thấp (LOW active) có nghĩa là muốn reset IC thì phải đưa 0V vào chân này.
  • Chân EO| là chân Output Enable chân khi được tích cực thì mới cho phép ta điều chỉnh được giá trị ngõ ra. Khi tên chân IC mà có dấu gạch trên đầu tức là nó tích cực thấp (LOW active) tức là muốn tích cực chân này thì ta phải đưa 0v (GND) vào chân này. Còn nếu khi chân này không được tích cực (tức là đưa mức logic 1 vào chân này thì ngõ ra bị đưa lên trạng thái trở kháng cao – chỉ cần biết là vậy sau này các bạn sẽ được rõ hơn về trạng thái trở kháng cao – cao siêu lắm ^^). 
  • Bây giờ chúng ta đã đủ kiến thức để tìm hiểu chân số 9 chân Q7S. Chữ S ở đây là viết tắt cho từ Serial (nối tiếp) chân này thường được dùng khi ta nối tiếp các IC 74HC595 với nhau (chân Q7S của con trước nối vào chân DS của con sau) chân này sẽ có giá trị của bit trọng số cao của bộ nhớ IC (Bit mới được đưa vào sẽ nằm ở vị trí LSB – trong số thấp) nếu mắc nối tiếp các IC 74HC595 lại với nhau theo cách như vậy thì khi bit MSB bị đẩy ra khỏi bộ nhớ của IC sẽ không mất đi mà trước đó nó đã được sao chép qua IC phía sau. 
Sau đây là giản đồ thời gian về cách hoạt động của IC:

- Đây là ảnh mô phỏng protues.

ic 74hc595 pic16f877a

- Đây là code chương trình.
#include <16F877A.h>
#device *=16 ADC=10
#use delay(clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
/* Dinh nghia cac chan cua IC74HC595 */
#define SHCP_PIN  PIN_C0
#define DS_PIN   PIN_C1
#define STCP_PIN     PIN_C2
void IC_74hc595(int data) 
{
int i;
output_low(SHCP_PIN);
for(i=0;i<=7;i++)
{

if((data & 0x80)==0)

output_low(DS_PIN);
else
output_high(DS_PIN);
data=data<<1;
output_high(SHCP_PIN);
output_low(SHCP_PIN);
}
}
void IC_74HC595_Output()
{
output_low(STCP_PIN);
delay_us(5);
output_high(STCP_PIN);
output_low(STCP_PIN);
}
void main(void)
{
while(1)
{
IC_74hc595(0XAA);
IC_74HC595_Output(); 
delay_ms(100);
IC_74hc595(0X55);
IC_74HC595_Output(); 
delay_ms(100);
}
}
- Link download project Click here


EmoticonEmoticon