Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Các Pác ơi cho em hỏi ! tác dụng của 2 cổng NAND măc chéo vào chân START và ALE của ADC. và tác dụng chân 3 của LM35 nối vào chân 10 ADC. mặc dù mach em chạy nhưng em hiểu ,mong các pác giúp em với !
em cảm ơn ạ!
tác dụng của 2 cổng NAND măc chéo vào chân START và ALE của ADC
- Hai cổng này NAND mắc như vậy để tạo xung cho phép ADC bắt đầu chuyển đổi. Lệnh cho phép chuyển đổi ra lệnh bằng tay từ SW. Bạn thử nghiên cứu mạch này, kết hợp với xem dạng xung START,ALE trong datasheet của ADC0809 để giải thích hoạt động của nó xem. Như thế bạn sẽ hiểu rõ hơn.
tác dụng chân 3 của LM35 nối vào chân 10 của ADC
- Để ADC0809 hoạt động được cần có một nguồn xung clock đưa đến chân 10 của nó. Tần số clock này nhỏ nhất là 10kHz, lớn nhất là 1280kHz và bình thường là 640kHz (theo datasheet) . LM555 là IC dùng để tạo xung. Xung đầu ra trên chân 3 của LM555 có tần số trong dải cho phép của ADC đưa vào chân 10 làm xung clock cho ADC.
sẵn đây hỏi luôn, đang xai pic 16f877a nối với con 74hc595 để mở rộng port. nối 4 pin out của portB Rb0>Rb3 vào con này thì cho ra 8 pin out àh, vậy khi viết code trên con vi xử lý thì sao nhỉ , lập trình cho 4 chân out cua port B thì nó tác động đến 8 chân out của con 595 như thế nào nhỉ. mong các bác chỉ giúp, cũng đang làm quang báo
Anh em nào hiểu sâu về 595 lên cho anh em 1 mạch làm vd và 1 đoạn code đi! Em cũng đang xem xét con này! trước giờ chỉ dùng 138! chuyển sang con này chưa hiểu lắm! mong các anh chỉ giáo! thanks
Web: ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<- -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--
sẵn đây hỏi luôn, đang xai pic 16f877a nối với con 74hc595 để mở rộng port. nối 4 pin out của portB Rb0>Rb3 vào con này thì cho ra 8 pin out àh, vậy khi viết code trên con vi xử lý thì sao nhỉ , lập trình cho 4 chân out cua port B thì nó tác động đến 8 chân out của con 595 như thế nào nhỉ. mong các bác chỉ giúp, cũng đang làm quang báo
- 74595 là thanh ghi dịch vào nối tiếp ra song song. Nó có một đầu vào nối tiếp, 8 đầu ra song song, 1 đầu ra nối tiếp và một số đường điều khiển. Các tín hiệu điều khiển này bao gồm: 1 chân clock cho phép dịch, 1 chân clock cho phép chốt, một chân cho phép đầu ra, mà một chân cho phép clear thanh ghi dịch. Nếu nối phần cứng và viết code đúng thì bạn có thể gửi dữ liệu đến các đầu ra của nó theo ý muốn.
- Vì nó là thanh ghi dịch vào nối tiếp cho nên tại một thời điểm, chỉ có thể đưa vào từng bít dữ liệu. Mỗi lần đưa vào một bít, cần có một xung clock trên chân cho phép dịch. Mỗi khi dịch đủ 8 bít, thì cần có 1 xung clock trên chân cho phép chốt để chốt 8 bít dữ liệu đó lại, nếu chân cho phép đầu ra tích cực, 8 bít này được đẩy ra các đầu ra của 74595. Chân cho phép clear nếu ở mức tích cực thì thanh ghi dịch để xóa, nếu không có mục đích muốn xóa nội dung của thanh ghi này thì nối lên 5V, nếu cần dk thì nối với 1 chân của VDK.
Mình cũng đang làm mạch này, có vài chỗ hơi thắc mắc là mình dùng 74HC595 để quét hàng. Phần cứng gồm 1 em 89S52, 4 em 74HC595 2 em LMD 8x8x2.
Tớ có thể mô phỏng được 1 74HC595 điều khiển 1 LMD sáng, nhưng cái khó là mỗi lần chỉ đưa ra được 1 bit dữ liệu thôi, nếu quét hàng thì tớ phải đưa ra tới 8x4=32 bit dữ liệu, rất tốn ram, 89 có cơ chế chuyển 1 lúc 8 bit vào 74HC595 không.?
Mình cũng đang làm mạch này, có vài chỗ hơi thắc mắc là mình dùng 74HC595 để quét hàng. Phần cứng gồm 1 em 89S52, 4 em 74HC595 2 em LMD 8x8x2.
Tớ có thể mô phỏng được 1 74HC595 điều khiển 1 LMD sáng, nhưng cái khó là mỗi lần chỉ đưa ra được 1 bit dữ liệu thôi, nếu quét hàng thì tớ phải đưa ra tới 8x4=32 bit dữ liệu, rất tốn ram, 89 có cơ chế chuyển 1 lúc 8 bit vào 74HC595 không.?
- Cơ chế chuyển cùng lúc 8 bit dữ liệu không được cho phép bởi 74HC595 vì nó chỉ có một đường vào nối tiếp là SI (chân 14). Nó chỉ có một đầu vào nối tiếp cho nên tại một thời điểm, chỉ có thể đưa một bít vào. Nếu muốn có 1 byte thì cần phải đưa vào 8 lần, mỗi lần 1 bít.
- Đối với quét LED matrix thì việc tốn bộ nhớ Ram của chíp không liên quan đến việc phần cứng dùng 74595 hay không, mà nó liên quan đến nội dung mình muốn hiển thị. Tuy nhiên so với việc đưa dữ liệu ra song song thì rõ ràng dùng 74595 sẽ tốn thời gian của CPU hơn.
- Xin post mẫu một chương trình con cho phép gửi 1 byte dữ liệu ra 74HC595 như sau:
void SendByte(unsigned char byte)
{
unsigned char i,temp;
for (i=0;i<8;i++)
{
temp = byte & (1 << i);//nhan bit o vi tri i voi 1 de giu nguyen gia tri cua no
if (temp)
{
Serial_data = 1;//Neu bit do bang 1 thi gui 1 ra chan noi tiep cua 595
}
else
{
Serial_data = 0;//Neu bit do bang 0 thi gui 0 ra chan noi tiep cua 595
}
clock_dich = 1;//
clock_dich = 0;//Sau khi gui ra 1 bit, tao xung clock cho phep dich
}
clock_chot = 1;//
clock_chot = 0;//Khi dich du 8 bit, tao xung clock cho phep chot
}
Nguyên lý hoạt động của 74HC595 được trình bày như trong blockdiagram của nó (ảnh gửi kèm)
- Cấu trúc của nó gồm 3 phần:
1/ 8-Stage shift register: Phần này liên quan đến 4 chân của 74HC595 là SI (serial input - chân 14), sck (shift clock - chân 11), sclr (shift clear - chân 10), và SO (serial output- chân 9).
2/ 8 - bit Storage register phần này liên quan đến chân Rck (clock cho phép chốt dữ liệu - chân 12)
3/3 - stage buffer Phần này liên quan đến chân G (cho phép đầu ra song song - chân 13)
- Tính năng từng chân điều khiển của 74HC595:
1/ Chân SI: Đầu vào nối tiếp, tại một thời điểm chỉ đưa vào được 1 bít.
2/Chân SO: Đầu ra nối tiếp, nếu dùng nhiều 74595 mắc nối tiếp nhau thì chân này đưa vào đầu vào của con tiếp theo
3/sck: Tạo ra xung clock cho phép dịch dữ liệu nối tiếp.
4/sclr: chân cho phép xóa thanh ghi dịch, tích cực ở mức thấp. Khi chân này ở mức thấp thì nội dung của 74595 bị xóa.
5/Chân rck: Clock cho phép chốt, tạo ra tín hiệu chốt dữ liệu vào 74595
6/G: Cho phép đầu ra song song, tích cực ở mức thấp. Khi ở mức cao, tất cả các đầu ra của 74595 trở về trạng thái cao trở, không có đầu ra nào được cho phép.
- Các bước làm việc với 74595 được mô tả như sau:
1/Đưa một bít vào chân SI (chân 14)
2/cần tạo một sườn xung từ cao xuống thấp trên chân sck (chân 11) để dịch bít này vào. Khi có xung này, bít dữ liệu sẽ được dịch vào thanh ghi lưu trữ (8 bit storage register).
3/Khi dịch đủ 8 bít, cần tạo một sườn xung từ cao xuống thấp trên chân rck (chân 12), 8 bít dữ liệu được lưu trong thanh ghi 8 bit storage register được chốt vào vùng buffer 3 trạng thái (3 - stage buffer).
4/Đưa tín hiệu G xuống mức thấp để out nội dung của 3-stage buffer ra ngoài các đầu ra song song.
Block diagram và bảng sự thật của 74595 được gửi trong ảnh đính kèm.
Nguyên lý hoạt động của 74HC595 được trình bày như trong blockdiagram của nó (ảnh gửi kèm)
- Cấu trúc của nó gồm 3 phần:
1/ 8-Stage shift register: Phần này liên quan đến 4 chân của 74HC595 là SI (serial input - chân 14), sck (shift clock - chân 11), sclr (shift clear - chân 10), và SO (serial output- chân 9).
2/ 8 - bit Storage register phần này liên quan đến chân Rck (clock cho phép chốt dữ liệu - chân 12)
3/3 - stage buffer Phần này liên quan đến chân G (cho phép đầu ra song song - chân 13)
- Tính năng từng chân điều khiển của 74HC595:
1/ Chân SI: Đầu vào nối tiếp, tại một thời điểm chỉ đưa vào được 1 bít.
2/Chân SO: Đầu ra nối tiếp, nếu dùng nhiều 74595 mắc nối tiếp nhau thì chân này đưa vào đầu vào của con tiếp theo
3/sck: Tạo ra xung clock cho phép dịch dữ liệu nối tiếp.
4/sclr: chân cho phép xóa thanh ghi dịch, tích cực ở mức thấp. Khi chân này ở mức thấp thì nội dung của 74595 bị xóa.
5/Chân rck: Clock cho phép chốt, tạo ra tín hiệu chốt dữ liệu vào 74595
6/G: Cho phép đầu ra song song, tích cực ở mức thấp. Khi ở mức cao, tất cả các đầu ra của 74595 trở về trạng thái cao trở, không có đầu ra nào được cho phép.
- Các bước làm việc với 74595 được mô tả như sau:
1/Đưa một bít vào chân SI (chân 14)
2/cần tạo một sườn xung từ cao xuống thấp trên chân sck (chân 11) để dịch bít này vào. Khi có xung này, bít dữ liệu sẽ được dịch vào thanh ghi lưu trữ (8 bit storage register).
3/Khi dịch đủ 8 bít, cần tạo một sườn xung từ cao xuống thấp trên chân rck (chân 12), 8 bít dữ liệu được lưu trong thanh ghi 8 bit storage register được chốt vào vùng buffer 3 trạng thái (3 - stage buffer).
4/Đưa tín hiệu G xuống mức thấp để out nội dung của 3-stage buffer ra ngoài các đầu ra song song.
Block diagram và bảng sự thật của 74595 được gửi trong ảnh đính kèm.
Thân!
Tớ cũng đã phải viết hàm sendbyte vì không còn cách nào khác.
Hướng giải quyết của tớ là đưa dữ liệu vào 4 ic 74HC595, sau đó mới kích hoạt hàng đầu tiên. Sau đó tớ lại delay 2ms. Rồi tớ tắt hàng 1 đi để chống lem, rồi đưa dữ liệu mới vào 4 ic 74HC595. Trong thời gian này, có lẽ sẽ không thể giữ được thời gian lưu ảnh trên mắt nó. Vì thực chất đưa dữ liệu vào 4 ic là đưa từng bit vào, tổng cộng quá trình là đưa 32 bit vào, tớ viết bằng ASM.
Cậu có giải thuật nào hay hơn để giải quyết trường hợp này không? Còn nữa. Tớ đã thử mô phỏng trên proteus, hình như mô phỏng với nhiều LMD thì proteus hoạt động không hiệu quả, tớ đang cố thử trên phần cứng, nhưng không hiểu sao phần cứng vẫn chưa chạy. Có lẽ có vấn đề.
Trong bài trích dẫn trên, cậu có viết là tạo 1 xung từ cao xuống thấp để đưa bit dữ liệu vào 74HC595, nhưng tớ thì lại tạo 1 xung từ thấp lên cao. Tớ chưa có time để test thử, nhưng nếu được thì tớ có thể lấy bù giá trị hiện có trên chân SCK (11) không, khỏi phải mất công tạo lại.
Hướng giải quyết của tớ là đưa dữ liệu vào 4 ic 74HC595, sau đó mới kích hoạt hàng đầu tiên. Sau đó tớ lại delay 2ms. Rồi tớ tắt hàng 1 đi để chống lem, rồi đưa dữ liệu mới vào 4ic 74HC595. Trong thời gian này, có lẽ sẽ không thể giữ được thời gian lưu ảnh trên mắt nó. Vì thực chất đưa dữ liệu vào 4 ic là đưa từng bit vào, tổng cộng quá trình là đưa 32 bit vào, tớ viết bằng ASM.
- Giải pháp của cậu đúng rồi, ta nối 4 IC 74595 như những toa tàu, đầu ra nối tiếp con trước đưa tới đầu vào nối tiếp con sau. Mỗi lần quét, dịch 4 byte mới chốt một lần. Bạn đừng lo về thời gian quét. Nếu nhiều đến chục con hoặc nhiều hơn thì chưa biết thế nào (vì chưa có điều kiện làm bảng to), nhưng mà với 4 con thì vẫn quét vô tư.
Cậu có giải thuật nào hay hơn để giải quyết trường hợp này không? Còn nữa. Tớ đã thử mô phỏng trên proteus, hình như mô phỏng với nhiều LMD thì proteus hoạt động không hiệu quả, tớ đang cố thử trên phần cứng, nhưng không hiểu sao phần cứng vẫn chưa chạy. Có lẽ có vấn đề.
- Vì tớ không mô phỏng trên proteus bao giờ nên không biết về nó. Còn về phần cứng mạch này thì tớ có làm qua rồi, chạy tốt. Bạn có thể tham khảo mạch tớ gửi kèm bên dưới.
Trong bài trích dẫn trên, cậu có viết là tạo 1 xung từ cao xuống thấp để đưa bit dữ liệu vào 74HC595, nhưng tớ thì lại tạo 1 xung từ thấp lên cao. Tớ chưa có time để test thử, nhưng nếu được thì tớ có thể lấy bù giá trị hiện có trên chân SCK (11) không, khỏi phải mất công tạo lại.
Trong bài trước tớ gửi có một sự nhầm lẫn, xin đính chính là clock dịch và chốt của 74595 tích cực theo sườn lên, vì thế xung của bạn tạo đúng. Vui lòng tham khảo thêm truth table của 74595.
-
- Xin post mẫu một chương trình con cho phép gửi 1 byte dữ liệu ra 74HC595 như sau:
void SendByte(unsigned char byte)
{
unsigned char i,temp;
for (i=0;i<8;i++)
{ temp = byte & (1 << i);//nhan bit o vi tri i voi 1 de giu nguyen gia tri cua no
if (temp)
{
Serial_data = 1;//Neu bit do bang 1 thi gui 1 ra chan noi tiep cua 595
}
else
{
Serial_data = 0;//Neu bit do bang 0 thi gui 0 ra chan noi tiep cua 595
}
clock_dich = 1;//
clock_dich = 0;//Sau khi gui ra 1 bit, tao xung clock cho phep dich
}
clock_chot = 1;//
clock_chot = 0;//Khi dich du 8 bit, tao xung clock cho phep chot
}
Bạn Toản nhầm chỗ temp = byte & (1 << i); <=> Truyền bit thấp nhất đầu tiên
Nếu như vậy vị trí bit ra tại các đầu Q0 - Q7 bị đảo ngược. Tức là vị trí của Bit cao bị đổi cho bit Thấp.
void Init_595(void)
{
Shcp = 0;
Stcp = 0;
Data = 0;
Enable = 1;
}
/* num1 duoc gui ra truoc
num2 duoc gui ra sau
*/
void Out_595(unsigned char num1,unsigned char num2)
{
char i;
unsigned int data;
data = ((unsigned int)num1<<8) | num2; //gop 2 byte num1 va num2 gan cho data (16bit)
//ket qua data = 0xnum1num2
Enable = 1; //cam xuat du lieu ra khi chua chuyen doi xong
for(i = 0;i<16;i++)
{
if(data & 0x8000)//truyen bit co trong so cao truoc
Data = 1;
else
Data = 0;
Shcp = 1; //xung nhip
Shcp =0;
data =data<<1; //dich tra 1 bit
}
Stcp = 1; //chot du lieu
Stcp = 0;
Enable = 0; //cho phep xuat du lieu ra
}
while (1)
{
Out_595(0xD2,0x6E); //xuat du lieu de test
delay_ms(5000);
Out_595(0x00,0x00);
delay_ms(5000);
Out_595(0x2D,0xE6);
delay_ms(5000);
};
}
File đính kèm bao gồm phần mềm và phần mô phỏng bằng Proteus.
Với 8051 tương tự. Bạn chỉ cần khai báo lại thư viện và PORT như sau:
#include<atmel/at89x51.h>
#define Shcp P2_1
#define Stcp P2_3
#define Enable P2_5
#define Data P2_2
Em chào các anh và mọi người.
Hiện em đang có 1 con bơm màng trong thiết bị y tế đang gặp tình trạng yếu dần hoặc ngừng hoạt động sau thời gian sử dụng
Sau khi tìm hiểu về thông tin của bơm trên mạng thì em được biết...
Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
Comment