Đồng hồ Điện áp Số sử dụng Vi điều khiển PIC16F73A
Trong bài viết này, chúng tôi đã đưa ra một dự án mới sử dụng vi điều khiển PIC. Tác giả của chúng tôi, Mithun, đã tạo ra một mạch Đồng hồ Điện áp Số sử dụng PIC16F73A và hiển thị 7 đoạn được multiplexed. Mạch được giải thích rõ ràng với sơ đồ và mã nguồn (viết bằng ngôn ngữ lập trình Embedded C) có sẵn để tải về. Nếu bạn có bất kỳ thắc mắc nào khi triển khai dự án này, xin vui lòng đặt câu hỏi trong phần bình luận.
Ghi chú: Bạn cũng có thể muốn đọc về Đồng hồ Điện áp Số sử dụng 8051 mà chúng tôi đã tạo trước đó. Trong mạch này, chúng tôi đã tạo ra một đồng hồ điện áp sử dụng AT89S51. Ngoài ra, bạn sẽ tìm hiểu về cách giao tiếp với hiển thị 7 đoạn và ADC với vi điều khiển 8051.
Màn hình bảy đoạn ghép kênh hoạt động như thế nào?
Trước hết, chúng ta cần hiểu cách một hiển thị 7 đoạn multiplexed hoạt động. Khi 4 hiển thị 7 đoạn được kết nối như một đơn vị hiển thị, dữ liệu của tất cả các đoạn đến song song và chân kích hoạt (enable pin) là khác nhau cho mỗi đoạn. Điều này giúp chúng ta điều khiển từng đoạn một. Hãy xem hình ảnh dưới đây:
Ở hình trên, chúng ta có 4 hiển thị 7 đoạn được kết nối như một đơn vị. Mỗi hiển thị có 7 chân (A, B, C, D, E, F, G) đại diện cho 7 đèn LED trong hiển thị 7 đoạn, cùng với chân kích hoạt (EN) riêng biệt.
Thực hiện chương trình:
Trước hết, chúng ta cần viết mã cho thời gian chính xác để có thể gửi dữ liệu khác nhau vào các thời điểm khác nhau bằng cách giữ mã kích hoạt tương ứng ở mức cao của phân khúc. Vì vậy chúng ta cần tận dụng ngắt hẹn giờ.
Cài đặt ngắt hẹn giờ được đưa ra dưới đây.
Bước tiếp theo của chương trình là khởi tạo cổng. Bạn có thể khởi tạo các cổng bằng đoạn mã sau.
Bước tiếp theo là thiết lập các giá trị ban đầu khác. Đoạn mã sau khởi tạo tất cả các biến cần thiết.
Tập khởi tạo cuối cùng dành cho kênh ADC bên trong PIC, như được đưa ra dưới đây.
Bây giờ chúng ta đã hoàn thành tất cả các bước khởi tạo và chúng nên được gọi bên trong hàm main void main(). Trong các bước tiếp theo, chúng ta sẽ tạo các phần quan trọng khác của chương trình như vòng lặp để đọc đầu vào. Hãy đọc các đoạn mã được đưa ra bên trong vòng lặp while(1).
Trong đoạn mã, ở dòng đầu tiên, chúng ta khởi tạo kênh ADC0 để lấy tín hiệu analog đầu vào. Dòng thứ hai là để lấy tín hiệu, chuyển đổi và lưu trữ nó trong thanh ghi adc. Dòng mã thứ ba, tlong = (float)adc_rd0*1.9607843, thực chất là việc chuyển đổi đầu ra adc thành mili-volts. Hệ số nhân 1.9607843 được lấy từ phương trình (5/255)X100; trong đó 5= VDD, 255 cho 8 bit và 100 để giảm lỗi phân số.
Trong đoạn mã bạn thấy, giá trị chuyển đổi thành mili-volts được lưu vào biến 'number'. Bây giờ, 'number' ở đây là gì? Để biết 'number' là gì, chúng ta cần xem hàm con display() làm gì.
Bằng cách phân tích đoạn mã, bạn có thể đã hiểu rằng 'number' được sử dụng để trích xuất dữ liệu. Vì vậy, 'number' là một biến tạm thời được sử dụng để lưu trữ dữ liệu trong suốt hàm con display(). Mỗi chữ số được trích xuất được truyền qua một hàm con có tên là 'mask'. Hàm con 'mask' này thực chất là một bảng tra cứu (look-up table) chọn ra mẫu hiển thị bảy đoạn cho chữ số tương ứng. Hàm con 'mask' được trình bày dưới đây.
Tóm tắt dự án
Tôi muốn bạn xem sơ đồ mạch chi tiết bây giờ. Vi điều khiển lấy tín hiệu analog thông qua chân AN0 của PIC16F73. Bộ chuyển đổi ADC tích hợp trong PIC16F73 chuyển đổi đầu vào analog thành giá trị số. Một quá trình chuyển đổi phân số được áp dụng cho dữ liệu số này bằng cách sử dụng một phương trình và dữ liệu được chuyển đổi thành mili-volts. Mỗi chữ số được trích xuất một cách tuần tự bằng cách sử dụng hàm con void display(). Chữ số được trích xuất được so khớp và mẫu hiển thị bảy đoạn tương ứng được lấy từ bảng tra cứu (LUT) viết trong hàm con mask. Dữ liệu từ LUT sau đó được chuyển đến bus dữ liệu của màn hình 7 đoạn được nhiều kênh sử dụng các chân 21 đến 28 của PIC16F73. Các chân kích hoạt được kết nối với vi điều khiển tại các chân 11, 12, 13 và 14. Cuối cùng, các dữ liệu khác nhau được gửi đến các màn hình đoạn khác nhau bằng cách chuyển đổi lần lượt các chân kích hoạt trong vòng 10 ms. Như vậy, mắt chúng ta chỉ nhìn thấy một số có 4 chữ số. Đây là dự án đầy đủ của chúng ta.
Mã nguồn
Chúng tôi đã cung cấp mã nguồn hoàn chỉnh của dự án này, máy đo điện áp kỹ thuật số sử dụng vi điều khiển PIC để tải xuống miễn phí. Bạn có thể tải mã nguồn bằng cách sử dụng liên kết dưới đây.
Digital Voltmeter – Project [Source Code]
Hotline: 0979 466 469