Em muốn dùng 595 để quét 6 con LED 7 nhưng loay hoay ko biết làm cách nào để on rồi off trên từng chân 595 nối với LED 7.Các bác giúp cho em đoạn Code on off chắc em hiểu luôn.
Thông báo
Collapse
No announcement yet.
Ai có thể chỉ giúp em cách dùng 74hc595 để quét LED 7 thanh
Collapse
X
-
Nguyên văn bởi vuquangpsoc Xem bài viếtEm muốn dùng 595 để quét 6 con LED 7 nhưng loay hoay ko biết làm cách nào để on rồi off trên từng chân 595 nối với LED 7.Các bác giúp cho em đoạn Code on off chắc em hiểu luôn.
Nhưng mà mình không biết!
Bạn xem cái file kèm theo nhé!
Nó trong cái này:
http://www.attiny.com/7segments.htmAttached Files
-
Nguyên văn bởi mrgiang99 Xem bài viếtTưởng gì! chip AT đây mà! Dễ ợt!
Nhưng mà mình không biết!
Bạn xem cái file kèm theo nhé!
Nó trong cái này:
http://www.attiny.com/7segments.htmMobile: 0914.658.856
Yahoo: quang85_2004
Comment
-
Dùng 6 con 595.
Cách kết nối:
- Các chân shcp và stcp nối chung với nhau và nối vào vi điều khiển.
- Chân DS của 595 đầu tiên nối vào một chân của vi điều khiển để đưa dữ liệu dạng nối tiếp ra ngoài.
- Chân DS của 595 thứ 2 nối vào chân D7' của 595 thứ nhất.
- Chân DS của 595 thứ 3 nối vào chân D7' của 595 thứ 2.
....................
- Chân DS của 595 thứ 6 nối vào chân D7' của 595 thứ 5.
Đây là một ví dụ để dịch giá trị của biến data ra các chân D0-->D7 của 595.
void shift_out(unsigned char data)
{
unsigned char i;
unsigned int k;
k=128;
for(i=0;i<8;i++)
{
if((data & k)==k)
DS=1;
else
DS=0;
SHCP=0;
SHCP=1;
STCP=1;
STCP=0;
k >>= 1;
}
}
Comment
-
Nguyên văn bởi hungnp Xem bài viếtDùng 6 con 595.
Cách kết nối:
- Các chân shcp và stcp nối chung với nhau và nối vào vi điều khiển.
- Chân DS của 595 đầu tiên nối vào một chân của vi điều khiển để đưa dữ liệu dạng nối tiếp ra ngoài.
- Chân DS của 595 thứ 2 nối vào chân D7' của 595 thứ nhất.
- Chân DS của 595 thứ 3 nối vào chân D7' của 595 thứ 2.
....................
- Chân DS của 595 thứ 6 nối vào chân D7' của 595 thứ 5.
Đây là một ví dụ để dịch giá trị của biến data ra các chân D0-->D7 của 595.
shift_out(dữ liệu cho LED 6);
shift_out(dữ liệu cho LED 5);
shift_out(dữ liệu cho LED 4);
shift_out(dữ liệu cho LED 3);
shift_out(dữ liệu cho LED 2);
shift_out(dữ liệu cho LED 1);
led6=1;delay_us(500);led6=0;
led5=1;delay_us(500);led5=0;
led4=1;delay_us(500);led4=0;
led3=1;delay_us(500);led3=0;
led2=1;delay_us(500);led2=0;
led1=1;delay_us(500);led1=0;
với led6,....,led1 là các chân Anode chung của các led.Em nghĩ là phải xuất dữ liệu cho 595 liên tục như trên mới đc và dữ liệu đầu tiên xuất sẽ nằm ở con 595 cuối cùng đúng ko anh.
với 595 thì ko làm theo kiểu này đc đúng ko anh?
shift_out(dữ liệu cho LED 6);
led6=1;delay_us(500);led6=0;
shift_out(dữ liệu cho LED 5);
led5=1;delay_us(500);led5=0;
..........................
led1=1;delay_us(500);led1=0;
shift_out(dữ liệu cho LED 1);
Rất mong anh cho ý kiến.Mobile: 0914.658.856
Yahoo: quang85_2004
Comment
-
Không hiểu bạn định quét led hay cấp nguồn cố định?
Nếu cấp nguồn cố định led bạn dùng phải là led đơn. Các Anode của led được nối lên nguồn qua một trở hạn dòng còn 7 Katot của led và dot được nối vào 8 chân song song của 595.
Nếu dùng pp Quét led thì mạch in sẽ đơn giản hơn, Không cần dùng 595, Nhưng viết code sẽ vất vả hơn nếu chip phải làm nhiều nhiệm vụ.
Comment
-
Nguyên văn bởi hungnp Xem bài viếtKhông hiểu bạn định quét led hay cấp nguồn cố định?
Nếu cấp nguồn cố định led bạn dùng phải là led đơn. Các Anode của led được nối lên nguồn qua một trở hạn dòng còn 7 Katot của led và dot được nối vào 8 chân song song của 595.
Nếu dùng pp Quét led thì mạch in sẽ đơn giản hơn, Không cần dùng 595, Nhưng viết code sẽ vất vả hơn nếu chip phải làm nhiều nhiệm vụ.Mobile: 0914.658.856
Yahoo: quang85_2004
Comment
-
Nguyên văn bởi vuquangpsoc Xem bài viếtVì em muốn quét LED 7 thanh mà anh em muốn quét 20 con LED 7 thanh cơ nếu ko dùng 595 thì ko đủ chân vì em còn fải dùng chân VĐK làm việc khác nữa.Lần trước em cứ nghĩ là dùng 595 nối vào Anode hoặc Cathode chung của LED 7 thanh để on/off cơ nhưng em thấy mọi người toàn hướng dẫn là dùng 595 để xuất dữ liệu nếu xuất dữ liệu thì cũng tiết kiệm được chân.Anh xem kỹ lại thắc mắc của em bên trên.Em rất cảm ơn anh.Em nghĩ anh có thể giúp đc em mà.
Còn nếu bạn vẫn muốn dùng 595 để quét LED - giảm chân nối với VĐK thì bạn làm như sau:
-1 con 595 nối 8 cổng ra // với 8 LED của 20 con LED 7 thanh.
-3 con 595 có 24 cổng ra - bạn dùng 20 cổng để làm on-off chọn LED ( có thể thêm transitor).
cả 4 con này nối tiếp nhau, con 595 để nối // với 20 LED 7 thanh có thể đặt ở đầu hoặc cuối dẫy 595.
trong VĐK bạn làm bộ đệm 4 byte, Mỗi lần quét bạn đặt lại byte dữ liệu và các byte chọn LED (on-off) và dùng 4 lần shift_out để đưa dữ liệu ra. Bạn lặp 20 lần là quét đủ 20 LED-hix tốn thời gian lắm đấy.
Ví dụ: con 595 để nối // với 20 LED 7 thanh đặt ở đầu
cho sáng con LED đầu- dữ liệu xếp như sau:
10101010b(dữ liệu),0,0,00000001b
cho sáng con LED 2- dữ liệu xếp như sau:
10101000b(dữ liệu),0,0,00000010b
....
email:mahaco@fpt.vn
Comment
-
Nguyên văn bởi hoctro89xxx Xem bài viếtThế này bạn ạ, thường đã dùng 595 để hiển thị LED 7 thanh thì ít ai dùng PP quét cả. Vì mỗi con 595 - 8 cổng ra nối luôn 8 LED của LED 7 thanh rồi, 20 con LED 7 thanh thì hết 20 con 595. Nối tiếp data 3 con này lại , CLK và STR nối chung. Như vậy VĐK chỉ tốn có 3 chân mà code lại gọn, trong lúc hiển thị giá trị hiện tại thì VĐK vẫn làm được việc khác.
....
Dùng 6 con 595.
Cách kết nối:
- Các chân shcp và stcp nối chung với nhau và nối vào vi điều khiển.
- Chân DS của 595 đầu tiên nối vào một chân của vi điều khiển để đưa dữ liệu dạng nối tiếp ra ngoài.
- Chân DS của 595 thứ 2 nối vào chân D7' của 595 thứ nhất.
- Chân DS của 595 thứ 3 nối vào chân D7' của 595 thứ 2.
....................
- Chân DS của 595 thứ 6 nối vào chân D7' của 595 thứ 5.
Đây là một ví dụ để dịch giá trị của biến data ra các chân D0-->D7 của 595.
Vậy còn chân Anode/Cathode chung thì vẫn sử dụng như phương pháp quét thông thường hả anh mỗi chân chung nối với Tranzitor rồi nối với VĐK hả anh?Mobile: 0914.658.856
Yahoo: quang85_2004
Comment
-
e hiểu ý a là dùng tín hiệu nối tiếp (qua 1 chân) để hiển thị led nhưng vẫn dùng phương pháp quét chứ gì, làm thế làm gì cho phức tạp, sợ thiếu chân thì gắn thêm con mega8 nữa vào thực hiện riêng việc quét led cho thoải mái mà tốc độ lại nhanh, hơn nữa mình dễ dàng thay đổi (mềm)Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
Anh hungnp ơi
Em đã hiểu cách nối anh nói rồi như vậy là bi h em chỉ cần dùng shift_out() để xuất dữ liệu ra thôi đúng ko anh.
nếu dùng con 6 LED 7thanh thì xuất dữ liệu như thế này ạ
shift_out(dữ liệu cho LED 1);
delay_ms(100);//chẳng hạn
shift_out(dữ liệu cho LED 2);
delay_ms(100);
shift_out(dữ liệu cho LED 3);
delay_ms(100);
shift_out(dữ liệu cho LED 4);
delay_ms(100);
shift_out(dữ liệu cho LED 5);
delay_ms(100);
shift_out(dữ liệu cho LED 6);
delay_ms(100);
dữ liệu cho LED1 sẽ nằm ở con 595 cuối cùng còn dữ liệu cho LED6 sẽ nằm ở con 595 đầu tiên có chân DS nối với VĐK.Em hiểu thế này đã đúng chưa các anh.Em là người mới nên hỏi hơi nhiều mong mọi người thông cảm.Rất cảm ơn mọi người về sự giúp đỡ.Last edited by vuquangpsoc; 25-10-2008, 22:18.Mobile: 0914.658.856
Yahoo: quang85_2004
Comment
-
Nguyên văn bởi vuquangpsoc Xem bài viếtAnh hungnp ơi
Em đã hiểu cách nối anh nói rồi như vậy là bi h em chỉ cần dùng shift_out() để xuất dữ liệu ra thôi đúng ko anh.
nếu dùng con 6 LED 7thanh thì xuất dữ liệu như thế này ạ
shift_out(dữ liệu cho LED 1);
delay_ms(100);//chẳng hạn
shift_out(dữ liệu cho LED 2);
delay_ms(100);
shift_out(dữ liệu cho LED 3);
delay_ms(100);
shift_out(dữ liệu cho LED 4);
delay_ms(100);
shift_out(dữ liệu cho LED 5);
delay_ms(100);
shift_out(dữ liệu cho LED 6);
delay_ms(100);
dữ liệu cho LED1 sẽ nằm ở con 595 cuối cùng còn dữ liệu cho LED6 sẽ nằm ở con 595 đầu tiên có chân DS nối với VĐK.Em hiểu thế này đã đúng chưa các anh.Em là người mới nên hỏi hơi nhiều mong mọi người thông cảm.Rất cảm ơn mọi người về sự giúp đỡ.hãy cố gắng dù vướn phải thất bại!!!!!!!!
Comment
-
Nguyên văn bởi vuquangpsoc Xem bài viếtAnh hungnp ơi
Em đã hiểu cách nối anh nói rồi như vậy là bi h em chỉ cần dùng shift_out() để xuất dữ liệu ra thôi đúng ko anh.
nếu dùng con 6 LED 7thanh thì xuất dữ liệu như thế này ạ
shift_out(dữ liệu cho LED 1);
delay_ms(100);//chẳng hạn
shift_out(dữ liệu cho LED 2);
delay_ms(100);
shift_out(dữ liệu cho LED 3);
delay_ms(100);
shift_out(dữ liệu cho LED 4);
delay_ms(100);
shift_out(dữ liệu cho LED 5);
delay_ms(100);
shift_out(dữ liệu cho LED 6);
delay_ms(100);
dữ liệu cho LED1 sẽ nằm ở con 595 cuối cùng còn dữ liệu cho LED6 sẽ nằm ở con 595 đầu tiên có chân DS nối với VĐK.Em hiểu thế này đã đúng chưa các anh.Em là người mới nên hỏi hơi nhiều mong mọi người thông cảm.Rất cảm ơn mọi người về sự giúp đỡ.
Nếu chương trình của bạn phải làm nhiều nhiệm vụ khác thì nên sử dụng pp này, nó vừa tiết kiệm chân cho vi điều khiển, vi điều khiển làm các việc khác mà không ảnh hưởng đến led(Led không nháy). Tuy nhiên, sẽ tốn nhiều IC và mạch cũng cồng kềnh hơn, Tùy vào ứng dụng của bạn để chọn pp nào cho hợp lý. Nếu dùng pp quét thì làm như bài viết phía trên.
Comment
-
mình làm theo mạch vẽ bên trên, code đơn giản thử cái cho nó hiện từ 0..9 rồi quay lại 0
Code:/***************************************************** This program was produced by the CodeWizardAVR V1.25.9 Standard Automatic Program Generator © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 4/6/2009 Author : HoangNQ Company : hn Comments: Chip type : ATmega8 Program type : Application Clock frequency : 8.000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega8.h> #include <delay.h> #define DS PORTC.0 #define SHCP PORTC.1 #define STCP PORTC.2 void shift_out(unsigned char data) { unsigned char i; unsigned int k; k=128; //k=1000 0000 for(i=0;i<8;i++) { if((data & k)==0) DS=0; else DS=1; SHCP=0; //delay_us(100); SHCP=1; k>>=1; } STCP=0; //delay_us(100); STCP=1; } void shift_number(unsigned char x)// Ham dua chu so ra led { switch(x) // Tuy thuoc vao bien dau vao ma dua du lieu ra tu 0...9 { case 0: { shift_out(0xC0); break; } // So 0 case 1: { shift_out(0xF9); break; } // So 1 case 2: { shift_out(0xA4); break; } // So 2 case 3: { shift_out(0xB0); break; } // So 3 case 4: { shift_out(0x99); break; } // So 4 case 5: { shift_out(0x92); break; } // So 5 case 6: { shift_out(0x82); break; } // So 6 case 7: { shift_out(0xF8); break; } // So 7 case 8: { shift_out(0x80); break; } // So 8 case 9: { shift_out(0x90); break; } // So 9 } } // Declare your global variables here void main(void) { // Declare your local variables here unsigned char count = 0; // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out // State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=0 PORTB=0x00; DDRB=0x00; // Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x07; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped TCCR0=0x00; TCNT0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; while (1) { // Place your code here count++; if(count>9) count = 0; shift_number(count); delay_ms(100); }; }
nghi ngờ tần số con 595 ko tương thích với cái đoạn lật chân SHCP,STCP , cho thêm cái delay vào nhưng mà tình hình vẫn thế
ai chỉ giúp mình với|
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