Giao tiếp LCD1602, Hiển thị LM35 + Nút nhấn + Cảnh báo, Lập trình Pic

giao-tiep-lcd1602-hien-thi-nhiet-do-lm35-chinh-gioi-han-nut-nhan-canh-bao-lap-trinh-pic
Giao tiếp LCD1602 được sử dụng rộng rãi bởi dễ giao tiếp và số lượng ký tự lớn, được sử dụng khá nhiều trong các máy hộ gia đình và các tủ điện công nghiệp. Tính ứng dụng dùng để hiển thị các ký tự trong bảng mã ASCII hoặc hiển thị được một vài ký tự tự tạo theo mong muốn người dùng. LCD có nhiều loại trên thị trường như LCD802, LCD1602, LCD2004,…. đây được xem là phương pháp hiển thị thông tin có số lượng lựa chọn lớn nhất hiện nay.

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 Giao tiếp LCD1602, Hiển thị LM35 + Nút nhấn + Cảnh báo

 

Blog Giao tiếp LCD1602, Hiển thị LM35 + Nút nhấn + Cảnh báo

Đề bài Giao tiếp LCD1602:

giao-tiep-lcd1602-hien-thi-nhiet-do-lm35-chinh-gioi-han-nut-nhan-canh-bao-lap-trinh-pic-de-bai

Bài giải Giao tiếp LCD1602:

Phần cứng chương trình Giao tiếp LCD1602:

  • Đầu tiên yêu cầu đưa ra có nhiệt độ LM35 vì vậy bắt buộc phải gắn vào chân ANxx tức chân đọc tín hiệu Analog chuyển sang Digital.
  • Hiển thị LCD1602 dùng giao tiếp 4bit sẽ giúp tối ưu tốc phần cứng hơn, và việc sử dụng thư viện do phần mềm hổ trợ cũng là một cách tối ưu chương trình khá tốt. 
  • Nút nhấn C_DOI dùng để chuyển đổi hiển thị từ nhiệt độ C sang nhiệt độ K.
  • Loa 5V hàn board dùng để cảnh báo khi nhiệt độ vượt ngưỡng giới hạn cài đặt.
  • 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
    LCD1602LCD1602
    Điện trởĐiện trở
    Nút nhấnNút nhấn
    Thạch anhThạch anh
    Led đơnLed đơn
    Loa 5V hàn boardLoa 5V hàn board
    Nhiệt độ LM35Nhiệt độ LM35

giao-tiep-lcd1602-hien-thi-nhiet-do-lm35-chinh-gioi-han-nut-nhan-canh-bao-lap-trinh-pic

Phần mềm Giao tiếp LCD1602:

Khai báo thư viện tiền sử lý của Giao tiếp LCD1602:

  • Vi điều khiển hiện tại mình đan dùng là Pic16F887
  • Theo yêu cầu hệ thống có đọc giá trị ADC vì vậy phải khai báo ADC bằng lệnh #device  adc=10 tức sử dụng bộ ADC 10bit. Ngoài ra có thể chọn ADC 8bit16bit.
  • 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).  
  • Thư viện LCD1602 sử dụng 4bit, thư viện sử dụng do phần mềm hổ trợ. Giúp đơn giản trong quá trình lập trình hơn.
  • Đị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.
giao-tiep-lcd1602-hien-thi-nhiet-do-lm35-chinh-gioi-han-nut-nhan-canh-bao-lap-trinh-pic-khai-bao

Chương trình con Giao tiếp LCD1602:

  • Theo yêu cầu đề bài việc định vị trí hiển thị theo hình của yêu cầu. Khi khởi tạo là lcd_gotoxy(1,1); hoặc lcd_gotoxy(1,2); là cần xuất dữ liệu ra LCD1602 vị trí hàng 2 cột 1. Tương tự cho các vị trí khác chỉ cần xem định vị theo yêu cầu. 
  • Khi các phép chia xx/100xx/10%10, xx%10 đây là phương pháp tách số, lý do mỗi ô của LCD1602 chỉ hiển thị một ký tự duy nhất tại một thời điểm nhất định. Ví dụ 123 là một số nhưng có 3 giá trị. Sau khi tách số xong đem +0x30 chuyển giá trị thập phân sang bảng mã ASCII. Mã lệnh 0xdfdấu độ trong bảng mã ASCII, mọi thông tin các bạn tra bảng sẽ hiểu rõ hơn.
  • Khi giá trị nhiệt độ lớn hơn hoặc bằng giới hạn cài đặt thì bật loa 5V đồng thời xuất giá trị nhiệt độ ra màn hình sau thời gian tạo trễ 500ms, sau đó xóa vị trí giá trị nhiệt độ sau thời gian 500ms. Cứ lặp đi lặp lại đi khi nhiệt độ nhỏ hơn giá trị giới hạn khi đó sẽ thấy rõ hiệu ứng nhấp nháy vị trí nhiệt độ tần số 1Hz, ngược lại nếu nhiệt độ nhỏ hơn thì tắt loa về chế độ bình thường.
giao-tiep-lcd1602-hien-thi-nhiet-do-lm35-chinh-gioi-han-nut-nhan-canh-bao-lap-trinh-pic-hien-thi

Chương trình kiểm tra nút nhấn C_DOI

  • Nút nhấn có nhiều chức năng, sau mỗi lần nhấn giá trị trả về thay đổi tt bằng cách đảo trạng thái trước đó vì vậy phải chống dội cho nút nhấn. Việc chống dội ở đây không hướng dẫn chi tiết các bạn có thể tham khảo sách giáo trình thầy Nguyễn Đình Phú.
  • Khi nhấn nút C_DOI đảo trạng thái bằng lệnh tt=~tt theo yêu cầu của đề bài đưa ra, từ kết quả tt sẽ phục vụ cho các chương trình khác..
giao-tiep-lcd1602-hien-thi-nhiet-do-lm35-chinh-gioi-han-nut-nhan-canh-bao-lap-trinh-pic-chuong-trinh-nut-nhan

Chương trình chính thực hiện toàn bộ hoạt động của vi điều khiển dùng Giao tiếp LCD1602

  • 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 nhiệt độ LM35 để đưa vào Vi điều khiển vì thế khởi tạo giá trị là 0xff, Port D sử dụng tín hiệu cho LCD1602 tức đưa tín hiệu từ Vi điều khiển ra ngoài nên khởi tạo là 0x00. Port C ở chân RC0 kết nối nút nhấn, chân RC1 kết nối loa vì vậy phải khởi tạo là 0x01.
  • Sử dụng ADC khởi tạo bộ chia 32 để số lần đọc ADC trên 1s được xem nhỏ nhất. Yêu cầu sử dụng hai tín hiệu sử dụng chân AN4.
  • Bắt đầu khởi tạo tt = 0; tức sẽ hiển thị lên màn hình LCD1602 là nhiệt độ ở độ C
  • Sau đó kiểm tra nút nhấn C_DOI có nhấn không nếu có thì đảo trạng thái hiển thị. Tiến hành đọc nhiệt độ LM35 về sau đó chia 2.046độ lệch độ phân giải của Vi điều khiển với độ phân giải của nhiệt độ LM35, rồi tính toán giá trị chuyển sang độ K, từ độ C chuyển sang độ K thì +273.
  • Kiểm tra nếu tt=0 thì cho hiển thị màn hình LCD1602độ C, ngược lại thì cho phép hiển thị độ K.

giao-tiep-lcd1602-hien-thi-nhiet-do-lm35-chinh-gioi-han-nut-nhan-canh-bao-lap-trinh-pic-chuong-trinh-chinh

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 *