Chào các bạn, dạo này mình thấy trên diễn đàn nhiều người muốn làm bảng led matrix chạy chữ để trang trí cho noel hay ngày tết quá, mình cũng mới làm xong sản phẩm này cách đây 1 tháng. Hôm nay mình xin giới thiệu với mọi người để những ai muốn làm thì tham khảo.
Đây là sản phẩm của mình như thế này các bạn xem nhé.
digital clock - YouTube
Giới thiệu qua: Đồng hồ số hiển thị trên led matrix 16x48 sử dụng 89S52, DS1820 để điều khiển và hiển thị. Đồng hồ có các phím chức năng như sau:
+ Phím mode: dùng để chỉnh giờ, phút, giây…
+ Phìm up: dùng để tăng giờ, phút, giây...
+ Phím down: dùng để giảm giờ, phút, giây…
+ Phím select: dùng để chọn xem chỉnh giờ, phút hay cái gì nhé.
Hết các phím.
Cái này nó cũng tương tự như làm chạy chữ trên led matrix thôi, và ở phần đầu của đồng hồ mình cũng đã cho nó chạy chữ theo code mà mình tham khảo được trên diễn dàn của bác tienhuypro, mình up code và file mô phỏng ở đây các bạn down về tham khảo.
Các bạn có thể lược bỏ phần code cho đồng hồ cho đỡ phức tạp hoặc lấy code của bác tienhuypro sửa đổi chút là được. mình cũng đã sửa như vậy.
dongho16x48.zip
Code này không hẳn là tất cả do mình viết mà là cả 1 quá trình theo dõi, tham khảo và học hỏi các anh em trên diễn đàn rất nhiều và đặc biệt là phải cảm ơn bác tienhuypro về phần chạy chữ.
Như trong file gửi kèm thì mình dung 89c52 điều khiển, mình dùng theo phương pháp quét hàng và dung IC giải mã 4 -> 16 là 74HC154 để đưa data quét ra hàng. ở 74hc154 thì các chân 20,21,22,23 là các chân data input, chân 18,19 là các chân cho phép IC hoạt động, chân 1,2,3,…,11,13,…,17. là các chân output. Chân 12 là GND chân 24 là VCC
Ở cột thì mình dùng IC dịch từ nối tiếp sang song song là 74hc595 để đưa data ra cột. và cách hoạt động của 74hc595
74595 có các chân và hoạt tác dụng của chúng như sau:
- 8 chân xuất dữ liệu, chân reset (10), cho phép chip (13): Mấy chân này chắc ko phải nói j rồi.
- Một chân nhận dữ liệu vào nối tiếp (14): Bạn muốn dịch bit 0 hay 1 thì tác động vào đây.
- Một chân xung clock (11): Cứ mỗi xung tác động vào chân này thì bit logic tại chân nhận dữ liệu (14) sẽ đc dịch vào một lần.
- Một chân chốt dữ liệu (12): Mỗi lần có xung tác động vào chân này thì dữ liệu đc xuất ra một lần
- Còn chân 9: Thì cứ có 8 xung tác động vào chân clock nó lại xuất ra một xung.
VD: Bạn nối một chú LED 7 thanh vào 74595 (a nối Q0,..., g nối Q6) rồi thử cho hiện số 5 chẳng hạn:
- Muốn có số 5 thi Q0 - Q7 có mức logic là: 01001000.
- Đầu tiên cho chân 14 nhận mức logic 1
- Kick một xung clock vào chân 11 rồi lại đưa chân 14 xuống mức logic 0 sau đó tác động 2 xung vào chân 11 rồi lại đưa chân 14 lên mức logic 1 tác động một xung vào chân 11 rồi lại đưa 14 xuống 0. Cuối cùng tác động một xung vào chân 11, sau đó chốt bằng cách tác động một xung vào chân 12, nhìn trên Proteus bạn sẽ thấy kết quả.
Bài nguyên lý đưa data và chốt data của IC 74hc595
Mình lấy ở đây nhé :
http://www.dientuvietnam.net/forums/...74hc595-29976/
Nguyên lý hoạt động của led matrix nếu ai chưa rõ thì tham khảo ở đây nhé
Trao đổi học tập - chi tiết
mình nghĩ là nó sẽ dễ hiểu và hứng thú với các bạn mới tìm hiểu.
Tiếp đến là phần tính công suất cho mạch. Theo như các bài vở trên lớp thầy dạy thì mình tính như thế này. Matrix 16x48 thì có tổng cộng 16x48=768 led, mỗi led cần 10ma, => 768led sẽ cần 10x768=7680ma tính cho trường hợp tất cả các led sang cùng 1 lúc.
Nhưng theo mình nghĩ thì như thế này trong 1 thời điểm chỉ có 1 hàng được tích cực (quét 16 hàng) nên công suất chỉ tính cho 1 hàng ( cái này không biết có phải không các bác cho ý kiến nhé) => nguồn cần là 48x10ma=480ma + thêm dòng sử dụng cho các ic nữa chắc cũng tầm 700ma đấy nhỉ..
Cách thiết kế mạch này của mình đưa thẳng 5v vào các led, vì theo thầy giáo nói các led được quét sáng trong khoảng thời gian rất nhỏ nên sẽ không ảnh hưởng đến tuổi thọ của led cũng thấy đúng.
Ở con 74hc154 dữ liệu được quét ra mức 0 nên mình nhờ nó tính đưa data đó để kích các tran PNP để đưa data mức 1 ra các hàng.
Về phía con 74hc595 thì mình có biết qua qua là nó có thể nuốt dòng tới 30ma thì phải nên mình đã cho nối trực tiếp vào các cột ( cũng hơi liều nhưng giờ nó chạy rất ổn không sao cả). Theo như cách quét đưa mức 1 ra các hàng thì để tích cực các led (sáng) thì mình phải đưa data ra các cột ở mức 0.
Ở đây mình cũng chỉ nói về làm led matrix chạy chữ là như vậy, mình đã gửi code và mô phỏng có cả đồng hồ sử dụng IC thời gian thực DS1307 nếu ai muốn tìm hiểu thêm về đồng hồ với DS1307 thì tham khảo luôn code đó nhé
Nói chung là để tìm hiểu về cái này thì bạn phải biết về lập trình VXL 8051 , tìm hiểu nguyên lý hoạt động của con 74HC595, 74HC154 cách quét led matrix. Mình cũng chỉ biết nói như vậy thôi không được chi tiết cho lắm( do kiến thức còn hạn hẹp ) nếu các bạn trong quá trình làm có gì thắc mắc thì hỏi, mình biết đến đâu thì sẽ trả lời đến đó, vì cái này là cái để làm chơi nên sẽ không có chuyện giấu nghề hay gì cả. Mọi người ủng hộ nếu thấy thích nhé
cái này cũng quan trọng mà em quên mất.em bổ xung thêm phần mềm LCDFontmaker dùng để dịch mã cho led matrix các bác down ở đây nhé
http://www.mediafire.com/?ebf5n5bk1agf2qt
Đây là sản phẩm của mình như thế này các bạn xem nhé.
digital clock - YouTube
Giới thiệu qua: Đồng hồ số hiển thị trên led matrix 16x48 sử dụng 89S52, DS1820 để điều khiển và hiển thị. Đồng hồ có các phím chức năng như sau:
+ Phím mode: dùng để chỉnh giờ, phút, giây…
+ Phìm up: dùng để tăng giờ, phút, giây...
+ Phím down: dùng để giảm giờ, phút, giây…
+ Phím select: dùng để chọn xem chỉnh giờ, phút hay cái gì nhé.
Hết các phím.
Cái này nó cũng tương tự như làm chạy chữ trên led matrix thôi, và ở phần đầu của đồng hồ mình cũng đã cho nó chạy chữ theo code mà mình tham khảo được trên diễn dàn của bác tienhuypro, mình up code và file mô phỏng ở đây các bạn down về tham khảo.
Các bạn có thể lược bỏ phần code cho đồng hồ cho đỡ phức tạp hoặc lấy code của bác tienhuypro sửa đổi chút là được. mình cũng đã sửa như vậy.
dongho16x48.zip
Code này không hẳn là tất cả do mình viết mà là cả 1 quá trình theo dõi, tham khảo và học hỏi các anh em trên diễn đàn rất nhiều và đặc biệt là phải cảm ơn bác tienhuypro về phần chạy chữ.
Như trong file gửi kèm thì mình dung 89c52 điều khiển, mình dùng theo phương pháp quét hàng và dung IC giải mã 4 -> 16 là 74HC154 để đưa data quét ra hàng. ở 74hc154 thì các chân 20,21,22,23 là các chân data input, chân 18,19 là các chân cho phép IC hoạt động, chân 1,2,3,…,11,13,…,17. là các chân output. Chân 12 là GND chân 24 là VCC
Ở cột thì mình dùng IC dịch từ nối tiếp sang song song là 74hc595 để đưa data ra cột. và cách hoạt động của 74hc595
74595 có các chân và hoạt tác dụng của chúng như sau:
- 8 chân xuất dữ liệu, chân reset (10), cho phép chip (13): Mấy chân này chắc ko phải nói j rồi.
- Một chân nhận dữ liệu vào nối tiếp (14): Bạn muốn dịch bit 0 hay 1 thì tác động vào đây.
- Một chân xung clock (11): Cứ mỗi xung tác động vào chân này thì bit logic tại chân nhận dữ liệu (14) sẽ đc dịch vào một lần.
- Một chân chốt dữ liệu (12): Mỗi lần có xung tác động vào chân này thì dữ liệu đc xuất ra một lần
- Còn chân 9: Thì cứ có 8 xung tác động vào chân clock nó lại xuất ra một xung.
VD: Bạn nối một chú LED 7 thanh vào 74595 (a nối Q0,..., g nối Q6) rồi thử cho hiện số 5 chẳng hạn:
- Muốn có số 5 thi Q0 - Q7 có mức logic là: 01001000.
- Đầu tiên cho chân 14 nhận mức logic 1
- Kick một xung clock vào chân 11 rồi lại đưa chân 14 xuống mức logic 0 sau đó tác động 2 xung vào chân 11 rồi lại đưa chân 14 lên mức logic 1 tác động một xung vào chân 11 rồi lại đưa 14 xuống 0. Cuối cùng tác động một xung vào chân 11, sau đó chốt bằng cách tác động một xung vào chân 12, nhìn trên Proteus bạn sẽ thấy kết quả.
Bài nguyên lý đưa data và chốt data của IC 74hc595
Mình lấy ở đây nhé :
http://www.dientuvietnam.net/forums/...74hc595-29976/
Nguyên lý hoạt động của led matrix nếu ai chưa rõ thì tham khảo ở đây nhé
Trao đổi học tập - chi tiết
mình nghĩ là nó sẽ dễ hiểu và hứng thú với các bạn mới tìm hiểu.
Tiếp đến là phần tính công suất cho mạch. Theo như các bài vở trên lớp thầy dạy thì mình tính như thế này. Matrix 16x48 thì có tổng cộng 16x48=768 led, mỗi led cần 10ma, => 768led sẽ cần 10x768=7680ma tính cho trường hợp tất cả các led sang cùng 1 lúc.
Nhưng theo mình nghĩ thì như thế này trong 1 thời điểm chỉ có 1 hàng được tích cực (quét 16 hàng) nên công suất chỉ tính cho 1 hàng ( cái này không biết có phải không các bác cho ý kiến nhé) => nguồn cần là 48x10ma=480ma + thêm dòng sử dụng cho các ic nữa chắc cũng tầm 700ma đấy nhỉ..
Cách thiết kế mạch này của mình đưa thẳng 5v vào các led, vì theo thầy giáo nói các led được quét sáng trong khoảng thời gian rất nhỏ nên sẽ không ảnh hưởng đến tuổi thọ của led cũng thấy đúng.
Ở con 74hc154 dữ liệu được quét ra mức 0 nên mình nhờ nó tính đưa data đó để kích các tran PNP để đưa data mức 1 ra các hàng.
Về phía con 74hc595 thì mình có biết qua qua là nó có thể nuốt dòng tới 30ma thì phải nên mình đã cho nối trực tiếp vào các cột ( cũng hơi liều nhưng giờ nó chạy rất ổn không sao cả). Theo như cách quét đưa mức 1 ra các hàng thì để tích cực các led (sáng) thì mình phải đưa data ra các cột ở mức 0.
Ở đây mình cũng chỉ nói về làm led matrix chạy chữ là như vậy, mình đã gửi code và mô phỏng có cả đồng hồ sử dụng IC thời gian thực DS1307 nếu ai muốn tìm hiểu thêm về đồng hồ với DS1307 thì tham khảo luôn code đó nhé
Nói chung là để tìm hiểu về cái này thì bạn phải biết về lập trình VXL 8051 , tìm hiểu nguyên lý hoạt động của con 74HC595, 74HC154 cách quét led matrix. Mình cũng chỉ biết nói như vậy thôi không được chi tiết cho lắm( do kiến thức còn hạn hẹp ) nếu các bạn trong quá trình làm có gì thắc mắc thì hỏi, mình biết đến đâu thì sẽ trả lời đến đó, vì cái này là cái để làm chơi nên sẽ không có chuyện giấu nghề hay gì cả. Mọi người ủng hộ nếu thấy thích nhé
cái này cũng quan trọng mà em quên mất.em bổ xung thêm phần mềm LCDFontmaker dùng để dịch mã cho led matrix các bác down ở đây nhé
http://www.mediafire.com/?ebf5n5bk1agf2qt
Comment