Ðăng Nhập

View Full Version : [Help]Dùng ic 74HC595 quet led matrix hiện chữ chạy


vunam1990
18-04-2011, 04:30 PM
Đề tài mình viết để hiện chữ chạy trên 4 con led matrix dùng ic ghi dịch 74HC595. Nhưng sao chạy 1 lúc nó lại chạy ko đúng ý mình. Mong Các tiền bối cho ý kiến :(
Đây là file code và mô phỏng của mình
http://www.mediafire.com/?jgb8gyiub6bkj66

vunam1990
18-04-2011, 11:33 PM
Không ai cho ý kiến gì thế :(

bongbk
19-04-2011, 01:45 AM
e cũng đang bị mắc cái này , có pro nào giúp e cái

tdm
19-04-2011, 01:35 PM
Không ai cho ý kiến gì thế :(
bạn lên đưa dữ liệu ra 32 cột rồi quét theo hàng thì sẽ khả thi hơn.

friend_1990
22-04-2011, 12:33 AM
Đề tài mình viết để hiện chữ chạy trên 4 con led matrix dùng ic ghi dịch 74HC595. Nhưng sao chạy 1 lúc nó lại chạy ko đúng ý mình. Mong Các tiền bối cho ý kiến :(
Đây là file code và mô phỏng của mình
http://www.mediafire.com/?jgb8gyiub6bkj66

sao protuse mình mở ko lên bạn mình là protuse 7.4 sp3 của bạn là bao nhiêu thế

tdm
23-04-2011, 03:00 PM
Đề tài mình viết để hiện chữ chạy trên 4 con led matrix dùng ic ghi dịch 74HC595. Nhưng sao chạy 1 lúc nó lại chạy ko đúng ý mình. Mong Các tiền bối cho ý kiến :(
Đây là file code và mô phỏng của mình
http://www.mediafire.com/?jgb8gyiub6bkj66
phần cứng kết nối sai ở con matrix thứ 4.
phần cứng và code đã sửa lại:

duchoadt
24-04-2011, 01:53 AM
Mình chạy thử và thấy có báo lỗi không bít là sai ở đâu nữa . Báo lỗi #bit d7=send_reg.31
nếu có thể giải thích từng dòng lệnh jum em dc khong các anh. Cảm ơn các anh nhiều

Trong chuỗi dữ liệu . EM đang làm đồ án mong mọi nguòi giúp đỡ
#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG,NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use fast_io(b)
#use fast_io(d)
#use delay(clock=20000000)
int32 send_reg;
int8 m,l,x,lap;

int32 const chay[]={0x80000000,0x40000000,0x20000000,0x10000000,
0x08000000,0x04000000,0x02000000,0x01000000,0x0080 0000,0x00400000,0x00200000,0x00100000,0x00080000,0 x00040000,0x00020000,0x00010000,
0x00008000,0x00004000,0x00002000,0x00001000,0x0000 0800,0x00000400,0x00000200 ,0x00000100,
0x00000080,0x00000040,0x00000020,0x00000010,0x0000 0008,0x00000004,0x00000002,0x00000001};
int8 const data[]={255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,25 5,255,255,255,255,255,255,
247,176,182,190,193,
128,239,247,251,128,
224,215,183,215,224,
128,239,247,251,128,255,
128,
224,215,183,215,224,
191,191,128,191,191,255,
129,254,254,129,
185,182,182,206,255,
128,
190,221,235,128,
255,255,255,255,255,255,255,255,255,255,255,255,25 5,255,255255,255,255,255,255,255,255,255,255,255,2 55,255,255,255,255,255};
#bit d7=send_reg.31
void serout(){
int8 n;
for(n=0;n<32;n++)
{
output_low(pin_b0);
if(d7!=0) output_high(pin_b0);
output_low(pin_b1);
output_high(pin_b1);
send_reg=send_reg<<1;
}
}
void display(){
set_tris_b(0xf0);
output_low(pin_b2);
output_high(pin_b2);
serout();
output_low(pin_b3);
output_high(pin_b3);
}
void hc595(){
m=0;
for(m=0;m<32;m++){
x=m+l;
if(x<109){
send_reg=chay[m];
display();
output_d(data[x]);
delay_ms(2);

}
else {
send_reg=chay[m];
display();
output_d(data[x-109]);
delay_ms(2);

}
}
}
void main(){
set_tris_d(0);
output_d(255);
while(1){
l=0;
for(l=109;l>0;l--){
for(lap=0;lap<3;lap++)
{
hc595();
}
}
}
}

Huynh Thanh San
06-04-2012, 07:31 AM
#bit d7=send_reg.31

}

----------------

#bit id = x.y
id is a valid C identifier,
x is a constant or a C variable,
y is a constant 0-7.

--------- Nếu code đúng thì --------------------
#bit d7=send_reg.7
send_reg=send_reg <<1 dịch phải

-------------------------------

Để chạy mà theo kiểu sửa file mô phỏng thì các bạn sửa như sau :

sửa này lại xíu " #bit d7=send_reg.31 " thành " #bit d7=send_reg.0 " vậy là hết báo lổi thôi
và chỗ này " send_reg=send_reg << 1" thành " send_reg=send_reg >>1 " cho nó dịch trái -> phải .

----------------
Ở phần cứng, các bạn sửa lại . tại IC HC595 . Thứ tự trong file cũ ỡ phần trên thì PIC -> U1 -> U2 -> U3 -> U4.

- Zờ chỉ sửa lại tại chân ký hiệu (DS) .
- Từ Pic 16F877A (Rb0)--> Chân DS của U4 và tại chân ký hiệu Q7' thì đưa vào DS của U3 , tương tự lấy Q7' của U3 đưa vào DS của U2. .....
- Thêm 1 cái nữa đổi vị trí của các cột hết như trong mạch cũ là " d0 > d1> ..> d7 thì sữa lại d7>d6>...>d0. Tương tự các chân kia cũng vậy
Vậy là nó chạy từ phải sang trái rùi đó , chúc mọi người vui vẻ.
---------------------------
Hix chỉ biết vậy thui, nghiệp dư , nhờ các pro giải đáp dùm

" #bit d7=send_reg.31 " làm sao để gán vào :D, xin củm ơn nhiều

msh_mta
29-11-2012, 09:21 AM
các bạn có thể giải thích câu lệnh #bit d7=send_reg.31 là gì không ? nó dùng để làm gì ?
if(d7!=0) output_high(pin_b0); câu lệnh này có phải là truyền bit có trọng số cao không ?

vb_bk
02-12-2012, 07:34 PM
mọi người cho em hỏi với ạ..có thể đặt vòng lặp for() trong phần code xử lý ngắt timer0 được không ạ. e làm mãi không được, không biết lỗi do gì nữa..hix

cuongquy
25-12-2012, 10:25 PM
cứu..........cứu........cứu.......! xin chào các bậc tiền bối chuyện là e mới nhập môn vdk mà sắp tới tụi e phải làm pài thuyết trình về led 7 thanh có ic 74hc595 giải mã nữa chứ? tụi em k pit phải lam ntn de lap trình đua dữ liệu zo thang 595 để led đếm tu 0----->.............. nên e mạo muội lên diễn đàn để gặp các tiền bối xin tài liệu về thằng 595 này hj vọng các tiền bối đi trước cho e xin ít tài liệu về học tiện thể cho em xin 1 đoạn code asm dua du lieu zo thằng 595 nay vì e mới nhập môn nên dang còn mu muội lắm nen các pác cho tài liệu cụ thể hì va sau mỗi dòng code cho e mấy lời giải thích nhé càng cu thể càng tốt. nhu vậy e mới hiu dc vì e mới nhập môn mà. hj vọng các bậc tiền bối jup e. mail e nak cuongquy90@gmail.com