Mua linh kiện điện tử tại Điện tử Nhật Tùng
Khóa học Vi điều khiển có phí Hình thức học: Video hoặc Kèm trực tiếp ===>>>> Kích vào hình để được biết thêm chi tiếtTable of Contents
Tải File bài giải
Pass giải nén: Huynhnhattung.com
===>>> Nếu bạn chưa có phần mềm giải nén:
Các bạn xem Video Nhấp nháy led đơn, Giao tiếp UART 2 Pic16F + Nút nhấn
Các bạn xem Blog Nhấp nháy led đơn, Giao tiếp UART 2 Pic16F + Nút nhấn
Đề bài lập trình nhấp nháy led đơn:
Bài giải lập trình nhấp nháy led đơn:
Phần cứng chương trình nhấp nháy led đơn:
- Xét trường hợp bên phát yêu cầu sử dụng 2 nút nhấn để điều khiển RUN và STOP ở ngõ ra của Led đơn bên thu.
- Việc sử dụng hai Vi điều khiển giao tiếp với nhau thông qua UART giúp tối ưu được chương trình và phần cứng. Khi giao tiếp UART thì kết nối sẽ chân RC6/TX của VĐK thứ nhất kết nối với chân RC7/RX VĐK thứ hai, ngược lại chân RC7/RX VĐK thứ nhất kết nối với chân RC6/TX của VĐK thứ hai. Chân RX có chức năng nhận dữ liệu, chân TX có chức năng truyền dữ liệu.
- Sử dụng 1 led đơn được kết nối theo Catot chung được điều khiển tử bên phát đồng thời điều khiển led đơn bên phát nhấp nháy. Cách tính trở 330 xem trong giáo trình thầy Nguyễn Đình Phú
- Các linh kiện chính cần sử dụng tham khảo tại.
Thông số kỹ thuật | Mua Linh kiện |
Pic16F887 | Pic16F887 |
Điện trở | Điện trở |
Nút nhấn | Nút nhấn |
Thạch anh | Thạch anh |
Led đơn | Led đơn |
Phần mềm nhấp nháy led đơn:
Xét Vi điều khiển 1 tức bên phát nhấp nháy led đơn:
Khai báo thư viện tiền sử lý của nhấp nháy led đơn:
- Vi điều khiển hiện tại mình đan dùng là Pic16F887.
- Hiện dùng thạch anh nội và thạch anh nội khai báo 8M bằng lệnh #Fuses intrc_io và #delay(clock=8M).
- Khai báo giao tiếp UART chuẩn rs232 ” #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)” gồm tốc độ truyền bằng 9600, không kiểm tra tính chắn lẻ, đồng thời dữ liệu truyền đi 8bit trong đó có 1bit STOP. Khi sử dụng UART bắt buộc phải dùng chân RC6/TX, RC7/RX
- Định nghĩa chân: tùy theo chức năng của chân mà tên định nghĩa được bám sát vào nội dung đan thực hiện.
- Tên khai báo biến phụ thuộc vào chức năng để khai báo cho phù hợp.
- Khi các biến không biết được giá trị cuối thì nên khai báo signed int32 tức khai báo biến có dấu 32bit, lúc này giá trị rất rộng không sợ bị thiếu.
Chương trình chính nhấp nháy led đơn:
- Bắt đầu chương trình chính phải khởi tạo ngõ vào ra cho vi điều khiển. Một chân của vi điều khiển thì làm nhiệm vụ I/O vì thế phải khỏi tạo. Port D dùng cho nút nhấn để đưa vào Vi điều khiển vì thế khởi tạo giá trị là 0x03. Port C có chân RC7/RX nhận tín hiệu từ máy tính gửi xuống nên đóng vai trò nhận tín hiệu vì vậy phải khởi tạo mức 1 nên khởi tạo là 0x80.
- Kiểm tra nếu có tín hiệu phản hồi từ vi điều khiển thu gửi qua thì tiến hành nhận tín hiệu, giá trị gửi qua là kiểu ký tự nên khi nhận dữ liệu cũng phải dùng kiểu char để nhận, Nếu giá trị nhận được là chữ b thì bật led ngược lại nếu nhận được chữ t thì tắt led.
- Kiểm tra có nhấn nút không, nếu có thì sẽ trả về mức 0 theo thiết kế của phần cứng, nếu có thì chống dội, thời gian dội phím ít nhấn 20ms, tùy vào từng nút nhấn mà thời gian dội sẽ khác nhau, nhưng ít nhấn vẫn là 20ms.
- Sau đó gửi giá trị qua bên thu và kiểm tra nếu chưa nhả phím thì làm nhiệm vụ chờ nhả, vòng lặp While chỉ thoát khi điều kiện sai, vậy nếu còn nhấn ngõ vào luôn bằng 0.
Xét Vi điều khiển 2 tức bên thu nhấp nháy led đơn:
Khai báo thư viện tiền sử lý của nhấp nháy led đơn:
- Vi điều khiển hiện tại mình đan dùng là Pic16F887.
- Hiện dùng thạch anh nội và thạch anh nội khai báo 8M bằng lệnh #Fuses intrc_io và #delay(clock=8M).
- Khai báo giao tiếp UART chuẩn rs232 ” #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)” gồm tốc độ truyền bằng 9600, không kiểm tra tính chắn lẻ, đồng thời dữ liệu truyền đi 8bit trong đó có 1bit STOP. Khi sử dụng UART bắt buộc phải dùng chân RC6/TX, RC7/RX
- Định nghĩa chân: tùy theo chức năng của chân mà tên định nghĩa được bám sát vào nội dung đan thực hiện.
- Tên khai báo biến phụ thuộc vào chức năng để khai báo cho phù hợp.
- Khi các biến không biết được giá trị cuối thì nên khai báo signed int32 tức khai báo biến có dấu 32bit, lúc này giá trị rất rộng không sợ bị thiếu.
Chương trình chính nhấp nháy led đơn:
- Bắt đầu chương trình chính phải khởi tạo ngõ vào ra cho vi điều khiển. Một chân của vi điều khiển thì làm nhiệm vụ I/O vì thế phải khỏi tạo. Port C có chân RC7/RX nhận tín hiệu từ máy tính gửi xuống nên đóng vai trò nhận tín hiệu vì vậy phải khởi tạo mức 1 nên khởi tạo là 0x80. Port E kết nối với led đơn xuất tín hiệu từ Vi điều khiển đi ra ngoài nên khởi tạo giá trị là 0x00.
- Kiểm tra nếu có tín hiệu phản hồi từ vi điều khiển phát gửi qua thì tiến hành nhận tín hiệu, giá trị gửi qua là kiểu ký tự nên khi nhận dữ liệu cũng phải dùng kiểu char để nhận, Nếu giá trị nhận được là chữ b thì tt=1 ngược lại nếu nhận được chữ t thì tt=0.
- Nếu tt=1 thì nhấp nháy led tần số 2Hz đồng thời tại mỗi trạng thái led sáng hoặc tắt sẽ gửi ký tự b hoặc t tương ứng qua vi điều khiển phát. Ngược lại thì tắt led đồng thời gửi ký tự t qua bên phát.
Chúc các bạn có một kỳ thi thành công…!!!