THIẾT KẾ VÀ THI CÔNG ĐỒNG HỒ THỜI GIAN THỰC<br />
TỰ ĐỘNG BÁO GIỜ HỌC ỨNG DỤNG VI ĐIỀU KHIỂN PIC<br />
NGUYỄN TÚ HÀ<br />
Trường Đại học Sư phạm - Đại học Huế<br />
Tóm tắt: Bài báo trình bày quá trình thiết kế và thi công mạch đồng hồ thời<br />
gian thực (RTC- RealTime Clock) tự động báo giờ vào và ra tiết học sử dụng<br />
vi điều khiển PIC. Mạch hiển thị giờ, phút, giây, thứ, ngày, tháng, năm và<br />
nhiệt độ bằng Led 7 đoạn. Dữ liệu thời gian được đọc từ IC thời gian thực<br />
DS12C887; dữ liệu nhiệt độ được đọc từ IC cảm biến nhiệt độ LM35. Quá<br />
trình đọc dữ liệu và hiển thị thời gian nhiệt độ được điều khiển bởi vi điều<br />
khiển PIC16F877A.<br />
Từ khóa: Vi điều khiển PIC, đồng hồ thời gian thực.<br />
<br />
1. ĐẶT VẤN ĐỀ<br />
Kỹ thuật vi điều khiển hiện nay phát triển rất mạnh mẽ, nó được ứng dụng vào rất nhiều<br />
lĩnh vực từ trong đời sống sinh hoạt hàng ngày (mạch quang báo, mạch chống trộm,<br />
khóa số, tủ lạnh, ti vi) cho tới các lĩnh vực trong công nghiệp cũng như trong quân sự.<br />
Do có nhiều ưu điểm như nhỏ gọn, khả năng lập trình để điều khiển theo ý muốn, giá<br />
thành thấp, có khả năng xử lí được nhiều công việc nên vi điều khiển trở thành linh kiện<br />
không thể thiếu được trong các thiết bị phục vụ con người chúng ta.<br />
Họ vi điểu khiển PIC là một trong những họ vi điều khiển mới sau này, có rất nhiều ưu<br />
điểm vượt trội so với các họ vi điều khiển trước đó. Hiện nay, các trường kỹ thuật đã bắt<br />
đầu đưa họ vi điều khiển PIC vào giảng dạy và thực hành cũng như ứng dụng trong các<br />
đề tài khoa học (đặc biệt trong các cuộc thi ROBOCON sử dụng rất nhiều). Vì vậy, việc<br />
nghiên cứu và ứng dụng họ vi điều khiển PIC là vấn đề cấp thiết cần được quan tâm.<br />
Hiện nay đã có một số trường học sử dụng mạch tự động báo giờ học. Việc sử dụng<br />
mạch này giúp cho các trường học tiết kiệm được công cử người trực theo dõi giờ để<br />
bấm chuông báo giờ vào, ra tiết học. Tuy nhiên vẫn còn rất nhiều trường vẫn chưa lắp<br />
đặt mạch báo giờ tự động này và các mạch tự động báo giờ thực tế hiện nay chủ yếu sử<br />
dụng các linh kiện, vi điều khiển đơn giản nên gây khó khăn cho việc mở rộng thiết kế,<br />
thi công. Từ nhu cầu thực tế đó, cần đến mạch đồng hồ thời gian thực và tự động báo<br />
giờ học sử dụng vi điều khiển PIC với ưu điểm tiết kiệm kinh phí, nâng cao độ chính<br />
xác, ổn định trong việc báo giờ học và tiện lợi khi sử dụng.<br />
2. GIỚI THIỆU VI ĐIỀU KHIỂN PIC<br />
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology.<br />
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer".<br />
Họ vi điều khiển này được sử dụng rộng rãi vì có các ưu điểm:[1]Dễ dàng tìm mua tại<br />
thị trường Việt Nam với giá thành không quá đắt; có đầy đủ các tính năng của một vi<br />
Tạp chí Khoa học và Giáo dục, Trường Đại học Sư phạm Huế<br />
ISSN 1859-1612, Số 03(31)/2013: tr. 35-40<br />
<br />
36<br />
<br />
NGUYỄN TÚ HÀ<br />
<br />
điều khiển khi hoạt động độc lập; sự hỗ trợ của nhà sản xuất về trình biên dịch, các công<br />
cụ lập trình, nạp chương trình từ đơn giản đến phức tạp; các tính năng đa dạng của vi<br />
điều khiển PIC, và các tính năng này không ngừng được phát triển; PIC là một sự bổ<br />
sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi điều khiển mang tính truyền<br />
thống: họ vi điều khiển 8051.<br />
Ngoài ra số lượng người sử dụng họ vi điều khiển PIC hiện nay tại Việt Nam cũng như<br />
trên thế giới rất rộng rãi. Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và phát<br />
triển các ứng dụng như: số lượng tài liệu, số lượng các ứng dụng mở đã được phát triển<br />
thành công, dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn.<br />
<br />
Hình 1. Sơ đồ chân của vi điều khiển PIC16F874A/16F877A<br />
<br />
PIC sử dụng tập lệnh RISC. Tập lệnh bao gồm các lệnh tính toán trên các thanh ghi, với<br />
các hằng số, hoặc các vị trí bộ nhớ, cũng như có các lệnh điều kiện, lệnh nhảy/gọi hàm,<br />
và các lệnh để quay trở về, nó cũng có các tính năng phần cứng khác như ngắt hoặc<br />
sleep (chế độ hoạt động tiết kiệm điện). Microchip cung cấp môi trường lập trình<br />
MPLAB, nó bao gồm phần mềm mô phỏng và trình dịch ASM. Một số công ty khác<br />
xây dựng các trình dịch C, Basic, Pascal cho PIC [1].<br />
Để nạp chương trình cho PIC, ta có thể sử dụng các mạch nạp được cung cấp bởi nhà<br />
sản xuất là hãng Microchip hoặc các mạch nạp khác được thiết kế dành cho từng loại vi<br />
điều khiển PIC.<br />
Trong bài báo này, chúng tôi lựa chọn sử dụng PIC16F877A. Đây là vi điều khiển thuộc<br />
họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit. Mỗi lệnh đều được thực thi<br />
trong một chu kì xung clock. Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kì<br />
lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ<br />
nhớ dữ liệu EEPROM với dung lượng 256x8 byte. Số PORT I/O là 5 với 33 pin I/O. [2]<br />
<br />
THIẾT KẾ VÀ THI CÔNG ĐỒNG HỒ THỜI GIAN THỰC TỰ ĐỘNG BÁO GIỜ HỌC...<br />
<br />
37<br />
<br />
3. THIẾT KẾ MẠCH ĐỒNG HỒ THỜI GIAN THỰC RTC<br />
Đây là ứng dụng sử dụng vi điều khiển PIC để thiết kế một đồng hồ điện tử treo tường<br />
có các chức năng sau:<br />
- Hiển thị giờ, phút, giây; thứ, ngày, tháng, năm; nhiệt độ;<br />
- Điều chỉnh được giờ, phút, giây, thứ, ngày, tháng, năm;<br />
- Hẹn giờ để báo chuông giờ vào/ra tiết học theo yêu cầu.<br />
* Sơ đồ khối của mạch RTC:<br />
<br />
Hình 2. Sơ đồ khối mạch RTC<br />
<br />
Khối điều khiển sẽ đọc dữ liệu thời gian và nhiệt độ; sau đó sẽ hiển thị lên Led 7 đoạn.<br />
Đồng thời, mạch điều khiển luôn kiểm tra tín hiệu từ nút bấm để điều chỉnh thời gian<br />
hoặc hẹn giờ.<br />
3.1. Khối hiệu chỉnh nút bấm - Khối đo nhiệt độ<br />
Mạch sử dụng 4 nút bấm để điều chỉnh đồng hồ gồm: nút chỉnh giờ, nút hẹn giờ, nút<br />
tăng, nút giảm. (Hình 3)<br />
LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu ra của nó tỷ lệ<br />
tuyến tính với nhiệt độ theo thang độ Celsius [2]. Nhiệt độ được xác định bằng cách đo<br />
hiệu điện thế ngõ ra của LM35. (Hình 4)<br />
<br />
Hình 3. Sơ đồ kết nối nút bấm<br />
<br />
Hình 4. Sơ đồ kết nối LM35<br />
<br />
38<br />
<br />
NGUYỄN TÚ HÀ<br />
<br />
3.2. Khối hiển thị<br />
Mạch sử dụng 16 LED 7 đoạn để hiển thị thời gian giờ, phút, giây, thứ, ngày, tháng,<br />
năm và nhiệt độ. Để điều khiển các LED 7 đoạn, chúng tôi kết nối PORT D với các<br />
chân DATA của LED 7 đoạn và sử dụng IC giải mã 74LS154 kết hợp với Transistor để<br />
điều khiển sáng LED. (Hình 5)<br />
<br />
Hình 5. Sơ đồ nguyên lý mạch hiển thị LED 7 đoạn.<br />
<br />
3.3. Khối thời gian thực<br />
Dữ liệu thời gian sẽ được cập nhật từ IC thời gian thực DS12C887. Đây là IC thời gian<br />
thực được sản xuất bởi hãng Dallas với một vài đặc tính cơ bản sau: [2]<br />
- Chứa các giá trị thời gian giây, phút, giờ, thứ, ngày, tháng, năm với thời gian hoạt<br />
động đúng đến năm 2100;<br />
- Bộ đếm hoạt động với thời gian 10 năm nếu không có nguồn điện ngoài cung cấp;<br />
- Các hệ thống bên trong bao gồm hệ thống thời gian thực, nguồn nội bằng Lithium<br />
và bộ tạo dao động với bộ chia tần số đính kèm cho phép lập trình được. Ngoài ra<br />
còn hỗ trợ các ngắt phục vụ cho quá trình xử lí thông tin của hệ thống bên ngoài.<br />
DS12C887 gồm 24 chân và có thể được chia làm 3 nhóm như sau:<br />
- Nhóm chân DATA: bao gồm các chân AD7:AD0. Đây là các chân mà DS12C887<br />
dùng để đưa dữ liệu ra hay nhận dữ liệu vào;<br />
- Nhóm chân điều khiển giao tiếp BUS: bao gồm các chân MOT, AS, DS, R/W với<br />
các chức năng phụ thuộc vào việc lựa chọn chế độ giao tiếp BUS theo chuẩn của<br />
Intel (MOT=1) hay Motorola (MOT= 0);<br />
- Nhóm chân chức năng: bao gồm các chân RESET (dùng để reset IC), IRQ (chân tác<br />
động của các ngắt trong DS12C887) và chân SQW (chân tạo sóng vuông ngõ ra).<br />
3.4. Khối báo giờ<br />
Khối báo giờ sẽ thực hiện chức năng đổ chuông để báo giờ vào và ra tiết học. Dựa vào<br />
thời gian quy định tiết học của trường, vi điều khiển PIC sẽ so sánh thời gian thực và<br />
thời gian vào và ra tiết học. Nếu thời gian giống nhau thì sẽ điều khiển đổ chuông để<br />
báo giờ.<br />
<br />
THIẾT KẾ VÀ THI CÔNG ĐỒNG HỒ THỜI GIAN THỰC TỰ ĐỘNG BÁO GIỜ HỌC...<br />
<br />
39<br />
<br />
3.5. Khối điều khiển<br />
Khối điều khiển là mạch gồm vi điều khiển PIC 16F877A và các cổng kết nối để giao<br />
tiếp với các khối khác. (Hình 6)<br />
<br />
Hình 6. Sơ đồ nguyên lý mạch điều khiển.<br />
<br />
4. XÂY DỰNG CHƯƠNG TRÌNH CHO PIC<br />
Dựa vào thiết kế phần cứng, nguyên lý làm việc của mạch, chúng tôi sử dụng phần mềm<br />
CCS viết chương trình nạp cho PIC để điều khiển mạch [3]. Lưu đồ chương trình chính<br />
được thực hiện như sau:<br />
<br />
Hình 7. Lưu đồ chương trình chính.<br />
<br />