- Vật liệu thiết yếu:
- Bộ nhớ flash:
- ICSP (Trong lập trình nối tiếp mạch):
- Mạch và phần cứng:
- Ghi mã bằng MPLAB IPE:
Trong hai hướng dẫn trước, chúng tôi đã thảo luận về Cách bắt đầu với PIC bằng trình biên dịch MPLABX và XC8, chúng tôi cũng đã thực hiện Chương trình nhấp nháy đèn LED đầu tiên với PIC và xác minh nó bằng mô phỏng. Bây giờ đã đến lúc chúng ta bắt tay vào phần cứng. Trong hướng dẫn này, chúng tôi sẽ xây dựng một mạch nhỏ trên Bảng Perf để nhấp nháy đèn LED bằng PIC. Chúng tôi sẽ kết xuất chương trình vào bộ vi điều khiển PIC của chúng tôi và xác minh Đèn LED nhấp nháy. Để lập trình MCU PIC, chúng tôi sẽ sử dụng MPLAB IPE.
Vật liệu thiết yếu:
Như đã thảo luận trong hướng dẫn trước của chúng tôi, chúng tôi sẽ cần các tài liệu sau:
- PicKit 3
- IC PIC16F877A
- 40 - Giá đỡ IC chân
- Bảng Perf
- OSC tinh thể 20 MHz
- Ghim Bergstick nữ và nam
- Tụ điện 33pf - giới hạn 2Nos, 100uf và 10uf.
- Điện trở 680 ohm, 10K và 560ohm
- LED của bất kỳ màu nào
- 1 Bộ đặt hàng
- IC 7805
- Bộ chuyển đổi 12V
Điều gì sẽ xảy ra khi chúng ta "Đốt cháy" một Vi điều khiển !!
Việc tải mã lên MCU và làm cho nó hoạt động bên trong MCU là một cách thông thường.
Để hiểu điều này, hãy xem chương trình của chúng tôi
Như chúng ta có thể thấy mã này được viết bằng ngôn ngữ C và nó sẽ không có ý nghĩa gì đối với MCU của chúng tôi. Đây là nơi mà một phần của trình biên dịch của chúng tôi xuất hiện; một trình biên dịch là một trong đó chuyển đổi mã này thành một dạng có thể đọc được máy. Dạng có thể đọc được của máy này được gọi là mã HEX, mọi dự án mà chúng tôi tạo sẽ có mã HEX nằm trong thư mục sau
** Vị trí của bạn ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Nếu bạn muốn biết mã HEX này trông như thế nào, chỉ cần mở nó bằng cách sử dụng notepad. Đối với chương trình Blink của chúng tôi, mã HEX sẽ giống như sau:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Có nhiều cách về cách đọc nó và cách hiểu và chuyển ngược nó trở lại ngôn ngữ Assembly, nhưng nó hoàn toàn nằm ngoài phạm vi của hướng dẫn này. Vì vậy, nói một cách ngắn gọn đơn giản; HEX là kết quả phần mềm cuối cùng trong quá trình mã hóa của chúng tôi và đây là những gì sẽ được MPLAB IPE gửi ra để ghi MCU.
Bộ nhớ flash:
Các mã HEX được lưu trữ vào MCU trong một nơi gọi là bộ nhớ flash. Bộ nhớ flash là nơi chương trình của chúng ta sẽ được lưu trữ bên trong MCU và được thực thi từ đó. Khi chúng tôi biên dịch chương trình trong MPLABX của mình, chúng tôi sẽ có thông tin sau về loại bộ nhớ trên bảng điều khiển Đầu ra
Vì chúng tôi vừa mới biên dịch một chương trình nhấp nháy đèn LED nhỏ, bản tóm tắt bộ nhớ cho thấy rằng chúng tôi chỉ tiêu thụ 0,5% không gian chương trình có sẵn và 1,4% không gian dữ liệu.
Bộ nhớ của vi điều khiển PIC16F877 về cơ bản được chia thành 3 loại:
Bộ nhớ chương trình: Bộ nhớ này chứa chương trình (mà chúng tôi đã viết), sau khi chúng tôi ghi nó. Xin nhắc lại, Bộ đếm chương trình thực hiện lần lượt các lệnh được lưu trong bộ nhớ chương trình. Vì chúng tôi đã viết một chương trình rất nhỏ, chúng tôi chỉ tiêu thụ 0,5% tổng dung lượng. Đây là bộ nhớ không dễ bay hơi, có nghĩa là dữ liệu được lưu trữ sẽ không bị mất sau khi tắt nguồn.
Bộ nhớ dữ liệu: Đây là loại bộ nhớ RAM, có chứa các thanh ghi đặc biệt như SFR (Thanh ghi chức năng đặc biệt) bao gồm bộ định thời Watchdog, Brown out Reset, v.v. và GPR (Thanh ghi mục đích chung) bao gồm TRIS và PORT, v.v. Các biến được lưu trữ trong Bộ nhớ dữ liệu trong suốt chương trình sẽ bị xóa sau khi chúng tôi tắt MCU. Bất kỳ biến nào được khai báo trong chương trình sẽ nằm trong bộ nhớ Dữ liệu. Đây cũng là một kỷ niệm đầy biến động.
Data EEPROM (Bộ nhớ chỉ đọc lập trình có thể xóa bằng điện): Bộ nhớ cho phép lưu trữ các biến do ghi chương trình đã viết. Ví dụ, nếu chúng ta gán một biến "a" để lưu giá trị 5 vào nó và lưu trữ trong EEPROM thì dữ liệu này sẽ không bị mất ngay cả khi Nguồn được TẮT. Đây là một bộ nhớ không bay hơi.
Bộ nhớ Chương trình và EEPROM là những bộ nhớ không thay đổi, và được gọi là Bộ nhớ Flash hoặc EEPROM.
ICSP (Trong lập trình nối tiếp mạch):
Chúng tôi sẽ lập trình PIC16F877A của mình bằng cách sử dụng tùy chọn ICSP có sẵn trong MCU của chúng tôi.
Bây giờ, ICSP là gì?
ICSP là một cách đơn giản giúp chúng tôi lập trình MCU ngay cả khi nó được đặt bên trong bảng Dự án của chúng tôi. Không cần phải có bảng lập trình riêng để lập trình MCU, tất cả những gì chúng ta cần là 6 kết nối từ bộ lập trình PicKit3 với bảng của chúng ta như sau:
1 |
VPP (hoặc MCLRn) |
Để vào chế độ lập trình. |
2 |
Vcc |
Pin nguồn 11 hoặc 32 |
3 |
GND |
Mã PIN mặt đất 12 hoặc 31 |
4 |
PGD - Dữ liệu |
RB7. PIN40 |
5 |
PGC - Đồng hồ |
RB6. PIN 39 |
6 |
PGM - Cho phép LVP |
RB3 / RB4. Không bắt buộc |
ICSP phù hợp với tất cả các gói PIC; tất cả những gì chúng ta cần là rút năm chân này ra (PGM chân thứ 6 là tùy chọn) từ MCU đến Pickit3 như trong hình bên dưới.
Mạch và phần cứng:
Bây giờ, chúng tôi đã sẵn sàng mã HEX và chúng tôi cũng biết cách kết nối PicKit 3 với MCU PIC của chúng tôi bằng ICSP. Vì vậy, hãy tiếp tục và hàn mạch với sự trợ giúp của các sơ đồ dưới đây:
Trong mạch trên, tôi đã sử dụng một 7805 để điều chỉnh đầu ra 5V đến MCU PIC của tôi. Bộ điều chỉnh này sẽ được cấp nguồn bởi bộ chuyển đổi ổ cắm trên tường 12V. Đèn LED ĐỎ được sử dụng để cho biết PIC có được cấp nguồn hay không. Đầu nối J1 được sử dụng để lập trình ICSP. Các chân được kết nối như đã thảo luận trong bảng trên.
MCLR chân đầu tiên phải được giữ ở mức cao với sự trợ giúp của 10k theo mặc định. Điều này sẽ ngăn MCU đặt lại. Để thiết lập lại MCU, chân MCLR phải được giữ xuống đất có thể được thực hiện với sự trợ giúp của công tắc SW1.
Đèn LED được kết nối với chân RB3 thông qua một điện trở có giá trị 560 ohms (Xem máy tính điện trở LED). Nếu mọi thứ đều phù hợp sau khi chương trình của chúng tôi được tải lên, đèn LED này sẽ nhấp nháy dựa trên chương trình. Toàn bộ mạch được xây dựng trên Perfboard bằng cách hàn tất cả các thành phần trên đó như bạn có thể thấy trong hình ảnh ở trên cùng.
Ghi mã bằng MPLAB IPE:
Để ghi mã, hãy làm theo các bước sau:
- Khởi chạy MPLAB IPE.
- Kết nối một đầu của PicKit 3 với PC và đầu kia với các chân ICSP của bạn trên bo mạch hoàn hảo.
- Kết nối với thiết bị PIC của bạn bằng cách nhấp vào nút kết nối.
- Duyệt qua tệp Blink HEX và nhấp vào Chương trình.
Nếu mọi thứ diễn ra theo đúng kế hoạch, bạn sẽ nhận được thông báo thành công trên màn hình. Kiểm tra Mã và Video bên dưới để biết phần trình bày đầy đủ và sử dụng phần bình luận nếu bạn có bất kỳ nghi ngờ nào.
Cảm ơn bạn!!!
Chúng ta hãy gặp nhau trong hướng dẫn tiếp theo, nơi chúng ta sẽ chơi với nhiều đèn LED hơn và công tắc.