Mục lục:

Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift: 5 bước
Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift: 5 bước

Video: Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift: 5 bước

Video: Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift: 5 bước
Video: 8051 | Bai 11 - Led Matrix 8x8 2024, Tháng bảy
Anonim
Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift
Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift
Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift
Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift
Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift
Sử dụng đèn LED ma trận điểm với thanh ghi Arduino và Shift

Đèn LED ma trận điểm Siemens DLO7135 là một trong những thiết bị quang điện tử tuyệt vời. Nó được quảng cáo là Màn hình thông minh ma trận chấm 5x7 (r) với Bộ nhớ / Bộ giải mã / Trình điều khiển. Cùng với bộ nhớ đó, nó có bộ màn hình ASCII 96 ký tự với các ký tự chữ hoa và chữ thường, bộ tạo ký tự và bộ ghép kênh tích hợp, bốn mức cường độ ánh sáng và tất cả đều chạy trên 5V., và ở mức 16 đô la một lần, nó chắc chắn nên làm như vậy. Trong khi dành nửa ngày tại cửa hàng điện tử địa phương yêu thích của mình, tôi tìm thấy một thùng đầy những thứ này với giá 1,5 đô la một chiếc. Tôi rời khỏi cửa hàng với một số. Tài liệu hướng dẫn này sẽ chỉ cho bạn cách kết nối với các đèn LED ma trận điểm này và hiển thị các ký tự bằng Arduino dựa trên AVR. Nếu bạn đã đọc bất kỳ hướng dẫn nào trước đây của tôi, bạn có thể có ý tưởng rằng tôi thường ủng hộ giải pháp phù hợp nhất và bạn sẽ không sai, ngay cả khi thỉnh thoảng tôi không đạt được mục tiêu. Do đó, tôi cũng sẽ đi một bước khác trong hướng dẫn này và chỉ cho bạn cách bạn có thể giảm số lượng cổng I / O cần thiết để điều khiển các đèn LED ma trận điểm lớn, honkin 'này.

Bước 1: Nhận hàng…

Nhận hàng hóa…
Nhận hàng hóa…

Đối với dự án nhỏ ngắn hạn này, bạn sẽ cần:

  • một bộ vi điều khiển dựa trên AVR như Arduino hoặc bất kỳ bộ vi điều khiển nào của nó. Các hướng dẫn này có thể được điều chỉnh cho phù hợp với MCU mà bạn lựa chọn.
  • đèn LED ma trận điểm DLO7135 hoặc đèn LED khác trong cùng một họ
  • một thanh ghi dịch chuyển 8-bit như 74LS164, 74C299 hoặc 74HC594
  • một breadboard
  • dây móc, máy cắt dây, v.v.

Mỏ hàn là không cần thiết, mặc dù tôi sử dụng sau này; bạn có thể nhận được mà không cần nó.

Bước 2: Kết nối trực tiếp với màn hình LED

Kết nối trực tiếp với màn hình LED
Kết nối trực tiếp với màn hình LED
Kết nối trực tiếp với màn hình LED
Kết nối trực tiếp với màn hình LED
Kết nối trực tiếp với màn hình LED
Kết nối trực tiếp với màn hình LED

Sắp xếp danh sách các bộ phận nhỏ của bạn và lấy đèn LED. Đặt nó trên breadboard có tâm một chút, nằm giữa rãnh giữa. Phần đầu tiên của kết nối diễn ra tất cả ở phía bên trái của đèn LED. Ghim số 1 nằm ở trên cùng bên trái như được chỉ ra bởi hình tam giác / mũi tên. Tôi đặt các chức năng pin trên một bức ảnh để bạn tham khảo khi bạn đang đọc hoặc kết nối đèn LED của mình.

Phía bên trái

Tích cực và tiêu cực Bắt đầu ở trên cùng bên trái, kết nối Vcc với 5V. Có thể là một ý kiến hay nếu không cung cấp điện cho bảng mạch của bạn cho đến khi bạn hoàn thành toàn bộ phần bên trái; đèn LED có thể sáng nếu bạn đang cố gắng nhìn thấy các lỗ nhỏ để chọc vào dây điện. Kết nối GND phía dưới bên trái với mặt đất. Kiểm tra đèn, Kích hoạt chip và Ghi Thứ 2 và 3 từ trên cùng bên trái là Kiểm tra đèn và Kích hoạt chip. Cả hai đều là logic phủ định, nghĩa là chúng được kích hoạt khi chúng ở mức logic 0 thay vì 1. Hình ảnh của tôi bên dưới phải có các thanh trên chúng, nhưng tôi không chú thích điều đó cho bất kỳ hình ảnh nào trong số chúng. Chốt LT khi được bật sẽ sáng lên mọi điểm trong ma trận điểm ở độ sáng 1/8. Đây là một bài kiểm tra pixel nhiều hơn, nhưng điều thú vị về pin LT là nó không ghi đè lên bất kỳ ký tự nào trong bộ nhớ, vì vậy nếu bạn có một số trong số này được xâu chuỗi lại với nhau (chúng có khoảng cách xem 20ft), hãy vuốt LT có thể làm cho nó trông giống như một con trỏ. Để đảm bảo nó bị vô hiệu hóa, hãy kết nối nó với 5V. Các chân CE và WR cũng là logic âm và được yêu cầu bật để thiết bị thông minh này được ghi vào. Bạn có thể quản lý vi mô các chân này bằng các cổng I / O dự phòng trên bộ vi điều khiển của mình, nhưng chúng tôi sẽ không bận tâm ở đây. Chỉ cần kết nối chúng với mặt đất để giữ chúng được bật. Mức độ sáng Có bốn mức độ sáng có thể lập trình trên dòng đèn LED DLO:

  • Chỗ trống
  • 1/7 độ sáng
  • 1/2 độ sáng
  • Độ sáng đầy đủ

BL1 HIGH và BL0 LOW là 1/2 độ sáng. Cả hai CAO đều là độ sáng đầy đủ. Đặt nó thành bất cứ điều gì bạn thích. Một lần nữa, nếu bạn có các cổng I / O để dự phòng và nó đủ quan trọng đối với bạn, thì điều này cũng có thể được điều khiển bởi Arduino của bạn. Nếu bạn cấp nguồn cho bo mạch của mình, bạn sẽ thấy đèn LED sáng lên. Chơi với các điều khiển độ sáng và kiểm tra đèn để làm quen với nó, nếu bạn tò mò.

Phía bên phải

Phía bên phải bao gồm hoàn toàn các cổng dữ liệu. Chính xác là phía dưới bên phải, chân 8 hoặc D0, đại diện cho Bit quan trọng nhất trong ký tự 7 bit. Trên cùng bên phải, chân 14 hoặc D6 đại diện cho Bit quan trọng nhất. Điều này cho phép bạn biết thứ tự xáo trộn các bit của bạn khi ghi vào đèn LED. Khi bạn đã nối dây các cổng đầu vào dữ liệu, hãy tìm bảy cổng I / O kỹ thuật số trống trên Arduino hoặc AVR của bạn và kết nối chúng. Có thể bạn sẽ muốn nhớ cổng đầu ra dữ liệu nào trên AVR của bạn sẽ đi đến cổng đầu vào dữ liệu nào trên đèn LED. Bây giờ bạn đã sẵn sàng để đẩy một số dữ liệu lên đèn LED thông minh đó. Bạn đã run lên vì phấn khích chưa? Tôi biết tôi đang…

Bước 3: Chỉ định một ký tự sẽ được hiển thị

Chỉ định một nhân vật được hiển thị
Chỉ định một nhân vật được hiển thị

Bộ ký tự được sử dụng trên CMOS LED này là ASCII hàng loạt của bạn bắt đầu từ 0x20 (số thập phân 32; dấu cách) và kết thúc ở 0x7F (số thập phân 127; xóa, mặc dù được biểu thị trên đèn LED dưới dạng đồ họa con trỏ). Vì vậy, để đèn LED hiển thị một ký tự không đòi hỏi gì khác hơn là đẩy logic 1 hoặc 0 trên các chân đầu ra dữ liệu của bạn, thường được theo sau bởi một xung WR, nhưng tôi đã nói trước điều đó cho bài tập này. nhớ những gì chân đi đến những cổng, phải không? Tôi đã chọn PD [2..7] và PB0 (chân kỹ thuật số từ 2 đến 8 trong Arduino-speak). Tôi thường không đề xuất sử dụng PD [0..1] vì tôi dành nó cho giao tiếp nối tiếp của mình trở lại hộp FreeBSD và Arduino's et al. ánh xạ các chân đó tới kênh giao tiếp FTDI USB của chúng và mặc dù "chúng" SAY các chân 0 và 1 sẽ hoạt động nếu bạn không khởi tạo giao tiếp nối tiếp, tôi chưa bao giờ có thể sử dụng các chân đó làm I / O kỹ thuật số bình thường. Trên thực tế, tôi đã dành hai ngày để khắc phục sự cố khi tôi cố gắng sử dụng PD0 và PD1 và nhận thấy rằng chúng luôn ở mức CAO. * nhún vai * Có lẽ sẽ rất tốt nếu có một số loại đầu vào bên ngoài, chẳng hạn như có thể là bàn phím, bánh xe đẩy hoặc công tắc vòng xoay, hoặc thậm chí có thể đầu vào từ một thiết bị đầu cuối (ArduinoTerm của tôi chưa sẵn sàng ra mắt…). Sự lựa chọn là của bạn. Hiện tại, tôi sẽ chỉ minh họa cách lấy mã để đưa ký tự bạn muốn lên đèn LED. Có một tệp zip để tải xuống bao gồm mã nguồn và Makefile và cũng có một đoạn phim ngắn cho thấy đèn LED in ra bộ ký tự của nó. Xin lỗi vì chất lượng video kém cỏi. Đoạn mã dưới đây in chuỗi "Chào mừng đến với Tài liệu hướng dẫn của tôi!" sau đó chuyển động qua toàn bộ bộ ký tự mà đèn LED hỗ trợ.

DDRD = 0xFF; // Đầu raDDRB = (1 << DDB0); char msg = "Chào mừng bạn đến với Tài liệu hướng dẫn của tôi!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _delay_ms (150); } for (i = 0x20; i <0x80; i ++) {Print2LED (i); _delay_ms (150); } Print2LED (& apos * & apos);}Đầu ra cổng được thực hiện trong hàm Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); if (i & 0b01000000) PORTB = (1 <

Mã và Makefile được bao gồm trong một tệp zip bên dưới.

Bước 4: Bảo tồn các cổng I / O với một thanh ghi Shift

Bảo tồn các cổng I / O với một thanh ghi Shift
Bảo tồn các cổng I / O với một thanh ghi Shift
Bảo tồn các cổng I / O với một thanh ghi Shift
Bảo tồn các cổng I / O với một thanh ghi Shift
Bảo tồn các cổng I / O với một thanh ghi Shift
Bảo tồn các cổng I / O với một thanh ghi Shift

Vì vậy, bây giờ bộ vi điều khiển của chúng tôi có thể gửi dữ liệu đến đèn LED ma trận điểm nhưng nó sử dụng tám cổng I / O. Điều đó không bao gồm việc sử dụng ATtiny trong gói DIP 8 chân và thậm chí với Arduino mới hơn có ATmega328p có rất nhiều cổng I / O cho một đèn LED. Tuy nhiên, chúng ta có thể giải quyết vấn đề này bằng cách sử dụng một vi mạch được gọi là thanh ghi dịch chuyển. Một lúc để "sang số" bánh răng … Thanh ghi sang số có thể được hiểu rõ nhất bằng cách nghĩ về hai từ tạo nên tên của nó: "shift" và "register". Từ dịch chuyển đề cập đến cách dữ liệu di chuyển qua thanh ghi. Ở đây (như trong Arduino và vi điều khiển của chúng tôi, nói chung) một thanh ghi là một vị trí chứa dữ liệu. Nó thực hiện điều này bằng cách triển khai một chuỗi mạch logic kỹ thuật số tuyến tính được gọi là "flip flops" có hai trạng thái ổn định có thể được biểu diễn bằng 1 hoặc 0. Vì vậy, bằng cách đặt tám flip flops với nhau, bạn có một thiết bị có khả năng giữ và đại diện cho một byte 8-bit. Cũng như có một số loại flip flops và một số biến thể về chủ đề của thanh ghi shift (nghĩ đến bộ đếm lên / xuống và bộ đếm Johnson), cũng có một số loại thanh ghi dịch chuyển dựa trên cách dữ liệu được chốt vào thanh ghi và cách dữ liệu đó được xuất ra. Dựa trên điều này, hãy xem xét các loại thanh ghi dịch chuyển sau:

  • Nối tiếp vào / ra song song (SIPO)
  • Nối tiếp vào / ra nối tiếp (SISO)
  • Song song In / Serial Out (PISO)
  • Song song vào / ra song song (PIPO)

Hai đáng chú ý là SIPO và PISO. Các thanh ghi SIPO lấy dữ liệu theo thứ tự, nghĩa là hết bit này đến bit khác, chuyển bit đầu vào trước đó sang lần lật tiếp theo và gửi dữ liệu ra trên tất cả các đầu vào cùng một lúc. Điều này làm cho một bộ chuyển đổi nối tiếp sang song song tốt đẹp. Ngược lại, các thanh ghi dịch chuyển PISO có các đầu vào song song, vì vậy tất cả các bit được nhập cùng một lúc, nhưng được xuất ra từng bit một. Và bạn đoán nó, điều này tạo ra một bộ chuyển đổi song song sang nối tiếp tốt đẹp. Thanh ghi dịch chuyển mà chúng tôi muốn sử dụng để giảm số lượng chân I / O sẽ cho phép chúng tôi lấy 8 chân IO mà chúng tôi đã sử dụng trước đó và giảm chúng xuống một hoặc có thể chỉ là một vài chân, xem xét chúng tôi có thể cần phải kiểm soát cách chúng tôi nhập liệu. các bit. Do đó, thanh ghi dịch chuyển mà chúng ta sẽ sử dụng là một Đầu ra Nối tiếp / Song song. Nối dây thanh ghi dịch chuyển giữa đèn LED và Arduino Sử dụng thanh ghi dịch chuyển rất dễ dàng. Phần khó nhất chỉ là hình dung các chân đầu ra dữ liệu và các chữ số nhị phân sẽ kết thúc như thế nào trong IC, và cuối cùng chúng sẽ hiển thị như thế nào trên đèn LED. Hãy dành một chút thời gian để lập kế hoạch này. 1. Gắn 5V vào chân 14 (trên cùng bên phải) và lấy chân 7 (dưới cùng bên trái) xuống đất. Thanh ghi dịch chuyển có hai đầu vào nối tiếp nhưng chúng tôi sẽ chỉ sử dụng một đầu vào, vì vậy hãy kết nối chân hai với 5V3. Chúng tôi sẽ không sử dụng chân rõ ràng (được sử dụng để loại bỏ tất cả các đầu ra) vì vậy hãy để nó nổi hoặc tấn công nó thành 5V4. Kết nối một cổng IO kỹ thuật số để ghim một trong các thanh ghi dịch chuyển. Đây là chân đầu vào nối tiếp. 5. Kết nối một cổng IO kỹ thuật số với chân 8 (dưới cùng bên phải). Đây là chân đồng hồ. 6. Kết nối các đường dữ liệu của bạn từ Q0 đến Q6. Chúng tôi chỉ sử dụng 7 bit vì bộ ký tự ASCII chỉ sử dụng 7 bit. Tôi đã sử dụng PD2 để xuất dữ liệu nối tiếp và PD3 cho tín hiệu đồng hồ. Đối với các chân dữ liệu, tôi kết nối Q0 với D6 trên đèn LED và tiếp tục theo cách đó (Q1 đến D5, Q2 đến D4, v.v.). Vì chúng tôi đang gửi dữ liệu theo thứ tự, chúng tôi sẽ phải kiểm tra biểu diễn nhị phân của mỗi ký tự mà chúng tôi muốn gửi, xem xét số 1 và số 0, và xuất ra từng bit trên dòng nối tiếp. Tôi đã bao gồm phiên bản thứ hai của nguồn dotmatrixled.c cùng với Makefile bên dưới. Nó xoay vòng qua bộ ký tự và hiển thị tất cả các ký tự chẵn (nếu bạn nghĩ rằng một chữ cái có thể là lẻ hoặc chẵn thì thật kỳ lạ, hãy nghĩ về biểu diễn nhị phân trong giây lát). Cố gắng tìm ra cách làm cho nó xoay vòng thông qua việc hiển thị tất cả các ký tự lẻ. Bạn có thể thử nghiệm thêm với các kết nối giữa thanh ghi dịch chuyển, đèn LED ma trận điểm và Arduino của bạn. Có một số tính năng điều khiển giữa đèn LED và thanh ghi có thể cho phép bạn tinh chỉnh điều khiển của mình về thời điểm dữ liệu được hiển thị.

Bước 5: Tóm tắt

Tóm lược
Tóm lược
Tóm lược
Tóm lược

Trong hướng dẫn này, tôi đã trình bày về LED ma trận điểm DLO7135 và cách làm cho nó hoạt động. Tôi đã thảo luận thêm về cách giảm số lượng cổng I / O cần thiết từ tám xuống chỉ còn hai bằng cách sử dụng thanh ghi dịch chuyển. Đèn LED ma trận điểm DLO7135 có thể được xâu chuỗi lại với nhau để tạo ra những tiếng kêu rất bắt mắt và thú vị. Tôi hy vọng bạn đã vui vẻ khi đọc hướng dẫn này! Nếu có bất kỳ cải tiến nào mà bạn nghĩ rằng tôi có thể thực hiện hoặc đề xuất bạn muốn đưa ra cho điều này hoặc bất kỳ 'quý tử nào của tôi, tôi rất vui khi nghe chúng! Chúc bạn AVR'ing vui vẻ!

Đề xuất: