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:
Video Điều khiển nhiệt độ, LM35 + UART + Nút nhấn + Led 7 đoạn
Blog Điều khiển nhiệt độ, LM35 + UART + Nút nhấn + Led 7 đoạn
Đề bài điều khiển nhiệt độ:
Bài giải điều khiển Nhiệt độ:
Phần cứng chương trình điều khiển nhiệt độ:
- Đầ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.
- Giao tiếp với máy tính thông qua giao tiếp UART và sử dụng chuẩn RS232 được xem là phương pháp giao tiếp đơn giản và có độ ổn định rất cao. Việc sử dụng UART bắt buộc phải sử dụng hai chân TX, RX của Vi điều khiển tức là chân RC6, RC7
- Hiển thị hai led 7 đoạn anot chung theo phương pháp xuất tín hiệu trực tiếp nên phải gắn vào 2 Port là Port D và Port B. Nếu làm mạch thực tế phải gắn trở cho led, cách tính trở 330 xem trong giáo trình thầy Nguyễn Đình Phú
- Sử dụng một loa Buzzer, ở đây tính chất mô phỏng nên sử dụng một led đơn để thay thế, nhưng khi làm mạch thực tế thì sử dụng loa 5V hàn board hoặc tùy thuộc vào yêu cầu đưa ra.
- 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 |
Led 7 đoạn | Led 7 đoạn |
Điện trở | Điện trở |
Nút nhấn | Nút nhấn |
Thạch anh | Thạch anh |
Led đơn | Led đơn |
Loa 5V hàn board | Loa 5V hàn board |
Nhiệt độ LM35 | Nhiệt độ LM35 |
Phần mềm điều khiển nhiệt độ:
Khai báo thư viện tiền sử lý của Random ngẫu nhiên:
- 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 8bit và 16bit.
- 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=4800,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)” gồm tốc độ truyền bằng 4800, 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.
Chương trình con điều khiển nhiệt độ:
Chương trình con nhận dữ liệu từ máy tính gửi xuống
- Kiểm tra nếu KBHIT()=1 tức có dữ liệu gửi xuống, khi đó tiến hành nhận dữ liệu nếu giá trị nhận được là ký tự “S” thì gửi giá trị nhiệt độ lên máy tính thông qua giao tiếp UART chuẩn RS232 một lần để đáp ứng được yêu cầu đề bài đưa ra.
- Ngược lại nếu KBHIT()=0 thì kiểm tra nếu giá trị nhiệt độ bị thay đổi thì gửi lên máy tính thông qua giao tiếp UART chuẩn RS232 một lần đồng thời gán ndt=nd để chuẩn bị cho chu kỳ tiếp theo.
Chương trình con đọc nhiệt độ LM35
- Sau khi đọc xong chuyển đổi giá trị nhiệt độ sang giá trị thực bằng cách chia 2.046 tức chia cho độ lệch độ phần giải của Vi điều khiển với độ phân giải của nhiệt độ LM35.
- Đầu tiên phải tách số giá trị nhiệt độ ở hàng chục. Nếu kết quả nd/10=0 thì ma7doan trả về sẽ làm biến ch=0x30. Từ đó kiểm tra nếu ch=0x30 thì gán ch=0xff tức tắt led ở hàng chục.
- Sử dụng biến chay để tạo thời gian nhấp nháy khi thoải mãn điều kiện của đề đã đặt ra. Sau 10ms chay sẽ thay đổi 1 đơn vị vậy nếu chay nhỏ hơn 51 tức được 500ms đầu thì xuất giá trị ra led 7 đoạn, theo phần cứng thì hàng chục sẽ được gán vào Port D hàng đơn vị sẽ gán vào Port B. Ngược lại nếu chạy nhỏ hơn 60 tức 100ms tiếp theo nếu nhiệt độ nhỏ hơn 35 thì hiển thị bình thường điều này có nghĩa toàn bộ thời gian đều là hiển thị, ngược lại tức nhiệt độ lớn hơn hoặc bằng 35 thì xuất giá trị cho hai Port là 0xff tức tắt hết hai led sau đó cho giá trị chay=0 khi chay=61.
Chương trình chính điều khiển nhiệt độ:
- 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, nếu đúng thì chỉ cần khởi tạo 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 sử dụng xuất tiến hiệu cho led 7 đoạn vì vậy khởi tạo là 0x00.
- Khởi tạo ADC sử dụng bộ chia 32 để số lần đọc nhiệt độ trên 1s ít. Vì sử dụng chân AN4 đọc nhiệt độ LM35 vì thế khai báo phải khai báo ports là sAN4, đồng thời
- Gán giá trị ban đầu bằng 0 đồng thời tắt còi khi khởi động..
- Kiểm tra nhận dữ liệu và đọc nhiệt độ như đã trang bị ở chương trình con, nếu nhiệt độ trả về nhỏ hơn 55 độ thì tắt còi Buzzer ngược lại thì bật khi vượt ngưỡng cho phép.
Chúc các bạn có một kỳ thi thành công…!!!