Đếm sản phẩm Counter gửi lên máy tính qua UART RS232, Lập trình Pic

dem-san-pham-hien-thi-may-tinh-uart-rs232-lap-trinh-pic
Đếm sản phẩm là hệ thống được giám sát sản phẩm và đếm số lượng sản phẩm thông qua bộ đếm Counter của vi điều khiển. Sử dụng đếm Counter tạo độ chính xác và tốc độ được cao hơn. Việc đếm và giám sát thông qua máy tính được sử dụng nhiều trong công nghiệp, đề tạo ra tính thực tế vô cùng lớn cho sinh viên trải nghiệm.

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 Đếm sản phẩm Counter gửi lên máy tính qua UART RS232

Blog Đếm sản phẩm Counter gửi lên máy tính qua UART RS232

Đề bài đếm sảm phẩm:

dem-san-pham-hien-thi-may-tinh-uart-rs232-de-bai

Bài giải đếm sản phẩm:

Phần cứng chương trình đếm sản phẩm:

  • Đề yêu cầu sử dụng đếm COUNTER vì thế phải đấu cảm biến vào chân RC0 được ký hiệu là T1CKI tức sử dụng bộ đếm Timer1.
  • Giao tiếp UART bắt buộc phải sử dụng chân TX (truyền) , RX(nhận) tức phải đấu vào chân RC6, RC7. Vì mô phỏng nên sử dụng Teaminal còn trong lúc thi phải gắn cổng COM loại VGA theo sách giáo trình của thầy Nguyễn Đình Phú.
  • Sử dụng dao động ngoài thạch anh 20M gắn vào chân OSC1 OSC2.
dem-san-pham-hien-thi-may-tinh-uart-rs232-phan-cung

Phần mềm đếm sản phẩm:

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

  • Vi điều khiển hiện tại mình đan dùng là Pic16F887
  • Hiện đan dùng thạch anh ngoài và thạch anh ngoài 20M bằng lệnh #Fuses    hs     và    #delay(clock=20M)
  • Khai báo thư viện “#use rs232(baud=4800,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) sử dụng giao thức RS232, tốc độ Baud4800, không kiểm tra tính chẵn lẻ, khai báo theo chân TX, RX, Truyền nhận dữ liệu là 8bit.
  • Tên khai báo biến thì cái này tùy thuộc vào chức năng sử dụng. Sử dụng biến datachar vì từ giao diện máy tính gửi xuống sẽ là ký tự thuộc bảng mã ASCII. Biến tt là một biết đặt biết, khi thấy trong yêu cầu có 1 sự kiện đối lập ví dụ RUN – STOP, THUẬN – NGHỊCH, LÊN-XUỐNG,… thì đều dùng biến trung gian 1bit để giải quyết.
dem-san-pham-hien-thi-may-tinh-uart-rs232-khai-bao

Chương trình con kiểm tra nút nhấn của đếm sảm phẩm:

  • Chương trình con nhận dữ liệu từ máy tính gửi xuống, theo yêu cầu đưa ra khi giao diện nhấn RUN đồng nghĩa với việc gửi ký tự số “1” xuống vi điều khiển để cho phép đếm sản phẩm. Ngược lại khi nhấn STOP đồng nghĩa với việc gửi ký tự số “0” xuống vi điều khiển thì dừng đếm sản phẩm.
  • Lệnh kiểm tra điều kiện if(kbit()) kiểm tra có dữ liệu gửi xuống không. Nếu có tiến hành nhận dữ liệu bằng lệnh data=getc(), nếu nhận được ký tự “1” cho tt=1 đồng thời cho phép timer1 hoạt động. Cụ thể T1_EXTERNAL sử dụng xung bên ngoài tức là xung được đưa vào từ chân T1CKI, vì mỗi lần đưa vào 1 xung nên chỉ có thể chọn bộ chia 1 cho timer1. Ngược lại nếu nhận ký tự “0” cho tt=0 đồng thời dừng hoạt động của timer1 thông qua T1_DISABLED.
dem-san-pham-hien-thi-may-tinh-uart-rs232-chuong-trinh-con

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 sản phẩm

  • Bắt đầu chương trình chính phải khỏi rạ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 đấu dùng cảm biến đếm sản phẩm và chân RX tức chân RC7 dùng để đưa tín hiệu vào vi điều khiển cách tính như phần note.
  • Ban đầu thì tắt timer1, và khởi tạo giá trị ban đầu bằng 0 thông qua lệnh set_timer1(0);
  • Các biến ban đầu đều cho bằng 0 đồng thời gửi giá trị 0 lên màn hình máy tính thông qua UART bằng lệnh Printf(“P=%ld,B=%ld”,sp,thung); lệnh nếu ra đầu tiên gửi ký tự PB đại diện cho sản phẩmBox đếm được, %ld cách truyền tham số 16bit32bit vào chuỗi string, \r\n là lệnh nhảy và xuống dòng để set không bị trung lặp mỗi lần gửi trên một hàng.
  • Tiến hành nhận dữ liệu từ giao diện máy tính gửi xuống thông qua hàm nhan_dulieu(). Kiểm tra nếu tt=1 tức nhận được ký tự “1” cho phép đếm sản phẩm. Khi có tín hiệu từ chân T1CKI thì hàm get_timer1 tăng lên một giá trị sau đó tiến hành gán lại cho biến sp.
  • Nếu sp lớn hơn 50 thì cho sp=1 và phải set giá trị timer1 bằng 1, đồng thời tăng giá trị thùng lên một đơn vị.
  • Nếu sản phẩm hoặc số lượng thùng thay đổi thì sẽ gửi lên trên máy tính một lần. Giá trị spt chỉ thay đổi khi sp thay đổi.
dem-san-pham-hien-thi-may-tinh-uart-rs232-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 *