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 Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
-
bởi namlangnhoXin chào mọi người. E có sử dụng 1 cục nguồn tổ ong 12v-30A chạy đèn led xe trà sữa. Mà thợ thi công bị rò điện nên điện rò ra khung xe. E dùng đồng hồ đo điện ở khung xe và cả output thì thấy có dòng điện xoay chiều hơn 100v. Nên chạm...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 00:12 -
-
bởi Manh.n.trCác bác cho em hỏi cách điều chế xung răng cưa sang xung vuông với ạ. Em đang thấy khó ạ...
-
Channel: Kỹ thuật điện tử tương tự
13-12-2024, 20:46 -
-
Trả lời cho hỏi về thiết kế mạch tuần tự trên proteusbởi Hatruong1309
-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
-
bởi Hatruong1309Cho e hỏi là phần chân X thì nối cái j thì mạch mới chạy được ạ và kiểm tra đúng sai kiểu j ạ
Đề bài thiết kế mạch dãy đồng bộ nhận biết dãy tín hiệu vào ở dạng nhị phân được đưa liên tiếp ở đầu vào X và được đồng...-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
Comment