Đếm xung Counter1, Đọc LM35 + Đếm sản phẩm + Lcd1602, Vi điều khiển

Dem-counter1-doc-nhiet-do-dem-san-pham-timer1-hien-thi-lcd1602-lap-trinh-pic
Đếm xung counter1 được sử dụng nhiều trong các hệ thống đếm sản phẩm, phân loại sản phẩm. Thường mang tính công nghiệp cao hơn, ngoài ra có chức năng chống trộm, chức năng cảnh báo hệ thống khi vượt ngưỡng. Đồng thời giúp hệ thống đếm có độ chính xác cao nhất có thể, ngoài ra khi sử dụng đếm counter thì tần số đếm lớn đáp ứng được nhiều yêu cầu đặt ra.

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

 

Các bạn xem Video Đếm xung Counter1, Đọc LM35 + Đếm sản phẩm + Lcd1602

 

Các bạn xem Blog Đếm xung Counter1, Đọc LM35 + Đếm sản phẩm + Lcd1602

Đề bài đếm xung counter1:

Dem-counter1-doc-nhiet-do-dem-san-pham-timer1-hien-thi-lcd1602-lap-trinh-pic-de-bai

Bài giải đếm xung counter1:

Phần cứng chương trình đếm xung counter1:

  • Đầ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.
  • Hệ thống có chương trình đếm Counter1 vì vậy phải kết nối vào chân RC1/T1CKI . Khi gắn mạch  thực tế các bạn nên dùng cảm biến hồng ngoại hoặc cảm biến quang để đếm giá trị.
  • 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. 
  • 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
    Nhiệt độ LM35Nhiệt độ LM35

Dem-counter1-doc-nhiet-do-dem-san-pham-timer1-hien-thi-lcd1602-lap-trinh-pic

Phần mềm đếm xung counter1:

Khai báo thư viện tiền sử lý của đếm xung counter1:

  • 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.
Dem-counter1-doc-nhiet-do-dem-san-pham-timer1-hien-thi-lcd1602-lap-trinh-pic-khai-bao

Chương trình hiển thị 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(12,1); là cần xuất dữ liệu ra LCD1602 vị trí hàng 1 cột 12. 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 t/100t/10%10, t%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.
Dem-counter1-doc-nhiet-do-dem-san-pham-timer1-hien-thi-lcd1602-lap-trinh-pic-hienthi

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 đếm xung counter1

  • 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 E, Port C dùng cho nhiệt độ LM35 và cảm biến đọc xung Counter1 để đưa vào Vi điều khiển vì thế khởi tạo giá trị là 0xff hoặc 0x01 Port D kết nối với màn hình LCD1602 đưa tín hiệu từ Vi điều khiển ra ngoài nên khởi tạo là 0x00.
  • 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 tín hiệu chân AN0 đọc nhiệt độ LM35 đồng thời khởi tạo kênh 0.
  • Sử dụng timer1 để đếm xung Counter1 nên khai báo t1_external tức là lấy xung đếm từ bên ngoài cụ thể từ chân RC0/T1CKI, và bắt đầu giá trị bằng 0.
  • Khởi tạo LCD1602 bằng lệnh lcd_init();

  • Tiến hành đọc nhiệt độ về, vì không yêu cầu đọc trung bình nên chỉ cần đọc trực tiếp giá trị, sau khi đọc xong chia 2.046 đây là độ lệch độ phân giải của Vi điều khiển với độ phân giải của nhiệt độ LM35, các bạn có thể tham khảo cách tính tại giáo trình của thầy Nguyễn Đình Phú.
  • Kiểm tra nếu nhiệt độ nhỏ hơn hoặc bằng 100 thì khởi tạo chương trình đếm countrer 1 lần. Nếu tt=0 thì cho tt=1 sau đó khởi tạo điều này có nghĩa chỉ khởi động 1 lần duy nhất và chờ thay đổi nhiệt độ lớn hơn 100. Sau đó đọc sản phẩm, nếu sản phẩm vượt ngưỡng 50 thì khởi tạo về 1 đồng thời tăng box lên 1 đơn vị.
  • Ngược lại khi nhiệt độ lớn hơn 100 thì tắt counter1 và gán tt=0 chuẩn bị cho phần khởi tạo timer.
  • Cuối cùng hiển thị toàn bộ thông tin ra màn hình LCD1602 thông qua hàm hienthi(); sau mỗi lần thực hiện hết một chương trình.

Dem-counter1-doc-nhiet-do-dem-san-pham-timer1-hien-thi-lcd1602-lap-trinh-pic-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 *