Tình hình là mình đã đọc vài bài viết trên diễn đàn về con ic 74hc595 nhưng vẫn chưa hình dung được hết cách truyền dữ liệu 2 byte trở lên vào con này thế nào.Ví dụ như mình muốn điều khiển 2 led matrix 8x8 dùng 2 con 74hc595 đưa dữ liệu từ 89c51 hiển thị ra led ma trận.Ở đây mình muốn hiển thị 2 chử A và B chạy ngang .Mong các anh chị diễn đàn giúp đỡ về code và giải thuật thế nào.Mình đang học code c nên chỉ biết code C và chưa tìm hiểu về timer và ngắt nên chỉ dùng được hàm delay ^^.
Thông báo
Collapse
No announcement yet.
Cần ACE giúp đỡ về ic 74hc595
Collapse
X
-
Vào mà đọc nguyên lý của 595
IC ghi dịch 74HC595
Matrix có số cột lớn người ta sẽ quét hàng để đảm bảo độ sáng của led lớn hơn 50%
-
Nguyên văn bởi chung1608 Xem bài viếtVào mà đọc nguyên lý của 595
IC ghi dịch 74HC595
Matrix có số cột lớn người ta sẽ quét hàng để đảm bảo độ sáng của led lớn hơn 50%
Comment
-
Nguyên văn bởi phanthienvu Xem bài viếtCảm ơn anh chung nha nhưng thực sự mình chỉ biết cách đưa dữ liệu 1 byte vào đó thôi còn 2 byte thì chưa biết cách làm sao để chốt để có thể đưa tiếp byte tiếp theo.Anh có thể viết 1 ví dụ bằng code c về cách dịch 2 byte không ?.Cám ơn anh nhiều ^^.
Code:for(i=0;i<16;i++){ DATAS=cái gì đó; CLOCK=0; CLOCK=1; } LATCH=0; LACTH=1;
Comment
-
Nguyên văn bởi chung1608 Xem bài viếtkhi kết nối nhiều 595, ta quang tâm số lượng cổng ra cảu tất cả 595. Ví dụ: nếu bạn kết nối 2 con 595 ta sẽ dịch 16 bit ra cho 595.
Code:for(i=0;i<16;i++){ DATAS=cái gì đó; CLOCK=0; CLOCK=1; } LATCH=0; LACTH=1;
#include"regx52.h"
sbit DATA = P2^1;
sbit SCK = P2^0;
sbit SCL = P2^2;
void quet(unsigned char x)
{int i,temp;
for(i=0;i<8;i++)
{temp=x;//gan bien
temp=temp&0x80;//lay ra bit dau tien (bit 7)
if(temp==0x80)//so sanh bit
DATA=1; //bang 1 thi xuat vao chip =1
else
DATA=0; //nguoc lai bang 0
x*=2; //dich bit lay bit trong so thap
SCK=0; //tao xung tren chan 11
SCK=1; //1 xung dua vào 1 bít
}SCL=0; //xuat du lieu ra output
SCL=1;}
Như vậy để có thể xuất 16 bit thì mình sẽ đổi số 8 bằng số 16 và 0x80 bằng 0x8000 phải không anh?
Comment
-
Nguyên văn bởi phanthienvu Xem bài viếtHI.Cuối cùng thì mình cũng hình dung ra được.Không ngờ nó đơn giản vậy.Mình có code này mong anh Chung xem nhé.
#include"regx52.h"
sbit DATA = P2^1;
sbit SCK = P2^0;
sbit SCL = P2^2;
void quet(unsigned char x)
{int i,temp;
for(i=0;i<8;i++)
{temp=x;//gan bien
temp=temp&0x80;//lay ra bit dau tien (bit 7)
if(temp==0x80)//so sanh bit
DATA=1; //bang 1 thi xuat vao chip =1
else
DATA=0; //nguoc lai bang 0
x*=2; //dich bit lay bit trong so thap
SCK=0; //tao xung tren chan 11
SCK=1; //1 xung dua vào 1 bít
}SCL=0; //xuat du lieu ra output
SCL=1;}
Như vậy để có thể xuất 16 bit thì mình sẽ đổi số 8 bằng số 16 và 0x80 bằng 0x8000 phải không anh?
- Để quét hàng thì bạn sử dụng 1 phần mềm dịch mã ma trận và dịch ra 1 bảng tra theo cột.
- Tiếp theo, ví dụ bạn có 16 cột, bạn sẽ nạp vào 1 vùng RAM 16 giá trị của bảng mã. Khi dịch, bạn dịch 16 bit ra cho 595 với các bit theo vị trí theo hàng. Ví dụ bảng 16 giá trị thì bạn dịch hết bit đầu tiên của 16 giá trị vào hàng 1, rồi bạn dịch bit thứ 2 của 16 giá trị vào hàng 2 cứ thế cho cả 8 bit.
Bạn có thể xem ví dụ dưới mình viết cho ATmega 8x40
Code:#include "tableMT.c" sfr io unsigned short ROW absolute 0x38; //PORTB sbit SH at PORTC0_bit; sbit DS at PORTC1_bit; sbit EO at PORTC2_bit; const int lens=400; char m; unsigned int start_addr; char tempR[100] absolute 500; void shift595(); void copy_to_ram(); void main() { DDRC=0b00010111; PORTC=0xFF; DDRB=0xFF; ROW=0xFF; delay_ms(500); while(1){ start_addr=0; while(start_addr<lens){ for(m=0;m<2;m++){ copy_to_ram(); shift595(); } start_addr++; } } } void shift595(){char i,j; SH=0;EO=0; j=0x80; while(j!=0){ for(i=0;i<40;i++){ DS=tempR[i]; SH=1; SH=0; tempR[i]=tempR[i]>>1; } EO=1;EO=0; ROW=j; j=j>>1; delay_ms(2); ROW=0; } } void copy_to_ram(){short i;unsigned int L; L=start_addr; for(i=0;i<40;i++) tempR[i]=table[L++]; }
Attached Files
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Năm mới dientuvietnam.netbởi mèomướpDạ năm mới cháu xin kính chúc ông, bà, cô, dì, chú, bác, anh, chị, em, các bạn, các cháu... trong diễn đàn sức khỏe dồi dào, gặp nhìu may mắn và thành công...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 05:42 -
-
Trả lời cho Năm mới dientuvietnam.netbởi nhathung1101Chúc cả nhà ăn no mặc ấm, quần lúc có lúc không.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:02 -
-
Trả lời cho Năm mới dientuvietnam.netbởi vandong1111Năm mới 2025 cháu chúc các chú, các bác mạnh khỏe, vui vẻ, gặp nhiều may mắn.
-
Channel: Tâm tình dân kỹ thuật
29-01-2025, 20:59 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi bqvietNói một cách xây dựng thì kiểu đồng hồ kiêm kẹp dòng NJTY3266 mà bạn Mèo đề cập là đúng nhu cầu người hỏi rồi. Một số cửa hàng bán trên 200ng, vài sàn thương mại điện tử bán dưới - thế là đúng nhu cầu về giá. Nếu khéo săn...
-
Channel: Điện tử dành cho người mới bắt đầu
27-01-2025, 20:02 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Đa năng còn chưa dùng hết, nếu không biết cách dùng.
200k thì hơi khó mua, nhưng 50k chắc là có. Cứ bảo bán cho tôi cái đồng hồ hỏng.-
Channel: Điện tử dành cho người mới bắt đầu
26-01-2025, 23:21 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nhathung1101Lão Đinh Vặn học giải phương trình hồi đi trẻ mà. Mẫu giáo học lập trình AI rồi. Lớp lão ấy gần lớp em nên em biết....
-
Channel: Điện tử công suất
26-01-2025, 23:11 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vậy chú đã hỏi hãng SIEMEN chưa? Tại sao cái PLC S7-200 cổ lỗ mà họ vẫn thiết kế riêng cho thị trường TQ với chữ SMART? Thậm chí phần mềm riêng để đọc file ngu.smart?
Vấn đề không còn là công nghệ "cốt lõi" nữa, mà là giá thành quyết định. Ham rẻ là trả giá mà....-
Channel: Điện tử công suất
26-01-2025, 23:01 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi vi van phamĐồng ý với Bqv.
50 năm làm nghề, tôi đã chứng kiến 3 lần máy x quang mới nhập từ nước ngoài về bị lỗi.
- Lần thứ 1 máy xq của Pháp được ks Pháp lằp đặt bị lỗi 1 con didode, đưa cho ks Pháp con didode khác cùng mã số, ông...-
Channel: Điện tử công suất
26-01-2025, 08:09 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú dinh... muốn sửa lỗi cho hãng thì chú cứ gửi những hình ảnh, video cho họ đi ạ, chú có thể tìm thông tin của những lãnh đạo bên ấy để gửi thì sẽ hiệu quả hơn ạ. Về tổng quan thì họ sẽ ko phản hồi rõ ràng đâu ạ, vì nhận...
-
Channel: Điện tử công suất
26-01-2025, 06:19 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietCuối năm bàn thêm chuyện to hơn chút, đấy là 2 vụ rơi đám 737 đời mới và trục trặc ở cả tá chiếc khác. Ngay cả những thứ tưởng như cao siêu sang xịn thật thì vẫn có thể gặp trường hợp oái oăm như thường. Từ hồi đó bqv đã thấy khó hiểu làm sao lại đẻ ra đám MCAS quái thai đến thế được. Rồi...
-
Channel: Điện tử công suất
24-01-2025, 19:40 -
Comment