Mục lục:
- Bước 1: Yêu cầu
- Bước 2: Xây dựng Lập trình viên
- Bước 3: Cài đặt phần mềm lập trình viên
- Bước 4: Lập trình chip
- Bước 5: Lắp ráp
- Bước 6: Giải thích mã
- Bước 7: Tài nguyên bổ sung
Video: Giới thiệu về Lập trình 8051 Với AT89C2051 (Khách mời: Arduino): 7 bước (có Hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
8051 (còn được gọi là MCS-51) là một thiết kế MCU từ những năm 80 vẫn còn phổ biến cho đến ngày nay. Các bộ vi điều khiển hiện đại tương thích với 8051 có sẵn từ nhiều nhà cung cấp, ở mọi hình dạng và kích cỡ, và với nhiều loại thiết bị ngoại vi. Trong hướng dẫn này, chúng ta sẽ xem xét MCU AT89C2051 của Atmel.
AT89C2051 là một bộ vi điều khiển nhỏ (2Kbyte Flash, 128byte RAM), giá rẻ (~ $ 1,40 mỗi chip).
- Hoạt động 2.7-6V
- 15 dòng I / O
- 2 bộ hẹn giờ (16 bit)
- Ngắt bên trong và bên ngoài
- UART
- Bộ so sánh tương tự trên chip
- Lên đến 2MIPS với xung nhịp 24MHz
Bước 1: Yêu cầu
Yêu cầu:
- PC Linux (phần mềm bắt buộc: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Chip AT89C2051 (gói DIP20)
- Ổ cắm ZIF 20 chân
- Optocoupler (tốt nhất là đầu ra MOSFET)
- Lá chắn tạo mẫu Arduino
- Nguồn điện 12V
- Nguồn điện 5V
- Bộ dao động tinh thể 16MHz
- Tụ điện 2x 30pF
- Tụ điện 100nF
- Diode (ví dụ: 1N400X)
- Điện trở (1K, 3K3)
- Protoboard
- Người nhảy
- Dây đồng
Kiểm tra phần mềm được yêu cầu:
con trăn nào3
cái nào tạo ra sdcc nào git
Bước 2: Xây dựng Lập trình viên
Phần này sẽ ngắn gọn, vì tôi đã xây dựng lá chắn lập trình của mình cách đây một thời gian. Tôi đã đính kèm sơ đồ và hình ảnh của bảng đã lắp ráp. Bản PDF của giản đồ có thể được tìm thấy trong kho lưu trữ.
Bạn sẽ phải lập trình bảng lập trình viên:
1. Sao chép kho lưu trữ.
git clone
2. Mở tệp AT89C2051_programmer / AT89_prog / AT89_prog.ino trong Arduino IDE.
3. Xây dựng và tải lên bản phác thảo từ Arduino IDE.
Bước 3: Cài đặt phần mềm lập trình viên
1. Tạo môi trường ảo python.
python3 -m venv venv
. venv / bin / kích hoạt
2. Cài đặt at89overlord. at89overlord là một lập trình viên Mã nguồn mở cho chip AT89C2051 do tôi viết. Bạn có thể tìm thấy mã nguồn của nó tại đây.
pip cài đặt at89overlord
3. Xác minh cài đặt.
at89overlord -h
Bước 4: Lập trình chip
1. Sao chép một dự án nhấp nháy đơn giản.
cd ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051 /
2. Xây dựng ứng dụng.
chế tạo
3. Kết nối Arduino với PC, kết nối nguồn cung cấp 12V, đặt chip AT89C2051 vào ổ cắm ZIF.
4. Xác định vị trí cổng nối tiếp của Arduino.
ls / dev / tty *
5. Tải tệp IntelHex đã xây dựng lên chip. Nếu cổng Arduino của bạn khác với / dev / ttyACM0, bạn phải chuyển giá trị chính xác với tham số dòng lệnh -p.
at89overlord -f./hello.ihx
Bước 5: Lắp ráp
Lắp ráp mạch theo sơ đồ. Có thể tìm thấy phiên bản PDF trong kho lưu trữ.
Bạn sẽ thấy đèn LED nhấp nháy màu xanh lục với tần số khoảng 0,5Hz.
Bước 6: Giải thích mã
#bao gồm
#bao gồm
Chúng tôi bắt đầu bằng cách bao gồm tiêu đề AT89X051 từ sdcc. Nó chứa các macro để tương tác với các thanh ghi như thể chúng là các biến. Chúng tôi cũng bao gồm stdint.h chứa định nghĩa của các kiểu số nguyên uint8_t và uint16_t.
// Giả sử bộ dao động là 16MHz
#define INTERRUPTS_PER_SECOND 5208
Ngắt xảy ra khi tràn Timer0. Nó được định cấu hình như một bộ đếm thời gian 8bit duy nhất, vì vậy điều này xảy ra sau mỗi 2 ^ 8 chu kỳ xử lý. Một chu kỳ xử lý mất 12 chu kỳ xung nhịp, và do đó chúng tôi đến 16000000/12/2 ^ 8 = 5208.33333.
dễ bay hơi uint8_t led_state = 0;
dễ bay hơi uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Chúng tôi khai báo các biến điều khiển trạng thái dẫn và bộ đếm ngắt.
void Timer0_ISR (void) _interrupt (1) {
timer_counter--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Mỗi khi Timer0 tràn bộ đếm được giảm xuống. Nếu nó bằng 0, nó sẽ được đặt lại và trạng thái dẫn được thay đổi. Điều này xảy ra khoảng một lần mỗi giây, dẫn đến tần số nhấp nháy của đèn LED ~ 0,5Hz.
int main () {
TMOD = 0x3; // Chế độ hẹn giờ - 8bits, không có bộ đếm trước. freq = OSCFREQ / 12/2 ^ 8 TL0 = 0; // Xóa bộ đếm TH0 = 0; // Xóa thanh ghi TR0 = 1; // Đặt hẹn giờ để chạy. ET0 = 1; // Đặt ngắt. EA = 1; // Đặt ngắt toàn cục. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Chúng tôi cấu hình mô-đun hẹn giờ và chờ đợi những thay đổi trong biến điều khiển trạng thái dẫn. TMOD là thanh ghi điều khiển chế độ hẹn giờ. TL0 và TH0 là các thanh ghi điều khiển Timer0. ET0 là bit enable-timer0 trong thanh ghi điều khiển bộ định thời (TCON). TR0 và EA là các bit trong thanh ghi cho phép ngắt (IE).
Bước 7: Tài nguyên bổ sung
- Biểu dữ liệu AT89C2051:
- Trình biên dịch C cho thiết bị nhỏ (sdcc):
- Tài nguyên của 8051:
- Kho lập trình AT89C2051:
- kho lưu trữ hello-8051:
Đề xuất:
(gần như) Lập trình viên MIDI SysEx CC đa năng (và Trình tự lập trình tự ): 7 bước (có Hình ảnh)
(gần như) Lập trình viên MIDI SysEx CC đa năng (và Trình lập trình …): Vào giữa những năm tám mươi, các bộ sản xuất tổng hợp bắt đầu " ít hơn là tốt hơn " quá trình dẫn đến synths barebone. Điều này cho phép giảm chi phí về mặt sản xuất, nhưng làm cho quá trình vá lỗi trở nên thành công nếu không muốn nói là không thể sử dụng cuối cùng
Bộ lập trình LED RGB có thể lập trình (sử dụng Arduino và Adafruit Trellis): 7 bước (có hình ảnh)
Bộ lập trình LED RGB có thể lập trình (sử dụng Arduino và Adafruit Trellis): Các con trai của tôi muốn các dải LED màu để thắp sáng bàn làm việc của chúng và tôi không muốn sử dụng bộ điều khiển dải RGB đóng hộp, vì tôi biết chúng sẽ cảm thấy nhàm chán với các mẫu cố định những bộ điều khiển này có. Tôi cũng nghĩ rằng đó sẽ là một cơ hội tuyệt vời để tạo ra
Làm thế nào để tổ chức một buổi giới thiệu và giới thiệu các tài liệu hướng dẫn: 8 bước
Làm thế nào để tổ chức một buổi trình diễn và kể về những người có thể hướng dẫn: Đây là một hướng dẫn để chạy một Buổi trình diễn và Kể về những người có thể hướng dẫn. Nó chủ yếu dựa trên một sự kiện được tổ chức tại Guiductables vào thứ Sáu, ngày 9 tháng 3 năm 2007, nhưng cũng dựa trên hiện thân trước đó của sự kiện này, Squid Labs Light Salons
Chuyển đổi (chỉ Giới thiệu) Bất kỳ Tập tin Phương tiện nào sang (Chỉ Giới thiệu) Bất kỳ Tập tin Phương tiện nào Khác miễn phí !: 4 bước
Chuyển đổi (chỉ Giới thiệu) Bất kỳ tệp phương tiện nào thành (chỉ Giới thiệu) Bất kỳ tệp phương tiện nào khác miễn phí !: Lời hướng dẫn đầu tiên của tôi, xin chúc mừng! Dù sao, tôi đã lên Google để tìm kiếm một chương trình miễn phí có thể chuyển đổi tệp Youtube.flv của tôi sang định dạng phổ biến hơn, như.wmv hoặc.mov. Tôi đã tìm kiếm vô số diễn đàn và trang web và sau đó tìm thấy một chương trình có tên
Hướng dẫn lập trình thú vị cho nhà thiết kế - Kiểm soát quy trình chương trình- Tuyên bố vòng lặp: 8 bước
Hướng dẫn lập trình thú vị cho nhà thiết kế - Điều khiển quy trình chương trình- Tuyên bố vòng lặp: Điều khiển quy trình chương trình- Tuyên bố vòng lặp Từ chương này, bạn sẽ tiếp xúc với một điểm kiến thức quan trọng và mạnh mẽ - Câu lệnh vòng lặp. Trước khi đọc chương này, nếu bạn muốn vẽ 10.000 vòng tròn trong chương trình, bạn chỉ có thể thực hiện với một