Lập trình uart, Giao tiếp 2 Pic + Đếm + Led 7 đoạn, Lập trình Vi điều khiển

Lap-trinh-UART-giao-giap-giua-2-vi-dieu-khien-dem-san-pham-hien-thi-led-7doan-lap-trinh-pic
Lập trình UART đây là một loại giao tiếp khá rộng rất dễ dàng kết hợp với các module và các vi điều khiển khác, như giao tiếp Bluetooth, Wifi, cảm biến có chuẩn giao tiếp UART, giao tiếp giữ hai vi điều khiển với nhau và còn nhiều hệ thống khác, đồng thời có thể mở rộng ra các chuẩn khác nhau như RS232, RS485, CAN, Modbus,… Sử dụng đơn giản và được tối ưu khá nhiều trong thanh ghi của các vi điều khiển hoặc cảm biến.

Mua linh kiện điện tử tại Điện tử Nhật Tùng

Liên hệ làm mạch  Phone: 0967.551.477 Zalo: 0967.551.477 Email: dientunhattung@gmail.com Địa Chỉ: 171/25 Lê Văn Thọ, P8, Gò Vấp, Tp HCM Chi tiết: Nhận làm mạch và đồ án Điện tử  
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ết khóa học lập trình vi điều khiển online

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:

Hướng dẫn Tải và Cài đặt phần mềm giải nén Winrar

 

Video Lập trình uart, Giao tiếp 2 Pic + Đếm + Led 7 đoạn

 

Blog Lập trình uart, Giao tiếp 2 Pic + Đếm + Led 7 đoạn

Đề bài lập trình UART:

Lap-trinh-UART-giao-giap-giua-2-vi-dieu-khien-dem-san-pham-hien-thi-led-7doan-lap-trinh-pic-de-bai

Bài giải lập trình UART:

Phần cứng chương trình lập trình UART:

  • 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 cho phépdừng ở xung 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 hai nút nhấn của VĐK thứ hai để tăng hoặc giảm thời gian nhấp nháy của Led đơn. Cách tính trở 330 xem trong giáo trình thầy Nguyễn Đình Phú
  • Hiển thị thời gian được quy định ra một Led 7 đoạn anot chung được nối vào Port D. 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
Pic16F887Pic16F887
Led 7 đoạnLed 7 đoạn
Điện trởĐiện trở
Nút nhấnNút nhấn
Thạch anhThạch anh
Led đơnLed đơn

Lap-trinh-UART-giao-giap-giua-2-vi-dieu-khien-dem-san-pham-hien-thi-led-7doan-lap-trinh-pic

Phần mềm lập trình UART:

Xét Vi điều khiển 1 tức bên phát lập trình UART

Khai báo thư viện tiền sử lý của lập trình UART:

  • 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 
  • Mã 7 đoạn là đoạn mã Anot: Cấu trúc lệnh cho bạn nào cần copy : ” unsigned int8 ma7doan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8.0x80,0x90,0xff} “.
  • Đị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.
Lap-trinh-UART-giao-giap-giua-2-vi-dieu-khien-dem-san-pham-hien-thi-led-7doan-lap-trinh-pic-khai-bao

Chương trình chính lập trình UART:

  • 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 A dùng cho nút nhấn để đưa vào Vi điều khiển vì thế khởi tạo giá trị là 0x01. 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 D, Port B kết nối với  led 7 đoạ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.
  • Nếu có dữ liệu gửi đến thì kbhit()=1, tiến hành nhận dữ liệu bằng biến data kiểm tra nếu data=1 thì cho giá trị demlen=0 và gửi qua vi điều khiển B.  
  • Đầu tiên 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.
  • Kiểm tra lại lần nữa nếu vẫn còn giữ phím thì cho phép biến demlen tăng lên một đơn vị, khi demlen vượt ngưỡng 99 gán giá trị demlen=1  và xuất giá trị hiển thị ra hai led 7 đoạn đồng thời gửi giá trị demlen qua bên vi điều khiển B.
  • 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.
Lap-trinh-UART-giao-giap-giua-2-vi-dieu-khien-dem-san-pham-hien-thi-led-7doan-lap-trinh-pic-chuong-trinh-chinh

Xét Vi điều khiển 2 tức bên thu lập trình UART

Khai báo thư viện tiền sử lý của lập trình UART:

  • 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.
  • Mã 7 đoạn là đoạn mã Anot: Cấu trúc lệnh cho bạn nào cần copy : ” unsigned int8 ma7doan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8.0x80,0x90,0xff} “.
  • 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.
Lap-trinh-UART-giao-giap-giua-2-vi-dieu-khien-dem-san-pham-hien-thi-led-7doan-lap-trinh-pic-khai-bao-thu

Chương trình chính lập trình UART:

  • 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 D, Port B kết nối với  led 7 đoạ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.
  • Các biến ban đầu gán bằng 0, nếu không gán giá trị ban đầu thì các biến sẽ Random một giá trị nằm trong giới hạn cho phép của biến đó.
  • Hiển thị giá trị lên hai led 7 đoạn theo thiết kế của phần cứng và vị trí hàng chục với hàng đơn vị được đảo lộn ví trí so với bên phát.
  • Nếu có dữ liệu gửi đến thì kbhit()=1, tiến hành nhận dữ liệu bằng biến data sau đó gán giá trị nhận được cho biến demlen vì giá trị gửi qua là kiểu số nguyên nên không cần phải quy đổi.  
  • Nếu có nhấn reset thì gửi qua giá trị số 1 và đây cũng là một số nguyên nên khi nhận phải khai báo biến data bên phát cũng là kiểu số nguyên.
Lap-trinh-UART-giao-giap-giua-2-vi-dieu-khien-dem-san-pham-hien-thi-led-7doan-lap-trinh-pic-chuong-trinh-chinh-thu

Chúc các bạn có một kỳ thi thành công…!!!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *