Ngày khoa học cơng nghệ kỹ thuật đóng vai trị quan trọng đời sống người Bên cạnh đó, thời gian trở thành tài sản quý mong muốn tận dụng cách tối đa Tuy nhiên, việc quản lý thời gian cách hiệu vấn đề nan giải cần giải cách triệt để đề tài mà nhóm ln muốn tìm cách giải Kết hợp với kiến thức thiết kế lập trình hệ thống nhúng, nhóm định lựa chọn đề tài “Thiết kế đồng hồ số vi xử lý PIC16F877A” Nhiệm vụ đề tài phân công công việc: Phú Nhật + Tìm hiểu sở lí thuyết PIC (cụ thể PIC16F877A), LCD, + Viết giải thuật + code thời gian, lịch dương, lịch âm, thứ, tùy chỉnh cài đặt thời gian, làm báo cáo word + Viết giải thuật + code cài đặt hiển thị báo thức, giao tiếp hiển thị LCD Tổng hợp code tổng, làm báo cáo powerpoint X X + Thực sơ đồ nguyên lí, mơ phỏng, layout X X X mạch X + Thi công mạch + Nạp code cho mạch X X II LÝ THUYẾT Vi điều khiển PIC 1.1 Giới thiệu vi điều khiển PIC - PIC bắt nguồn chữ viết tắt “Programmable Intelligent Computer” (Máy tính khả trình thơng minh) sản phẩm hãng General - PIC họ vi điều khiển RISC sản xuất cơng ty Microchip Technology Dịng PIC PIC1650 phát triển Microelectronics Division thuộc General Instrument - Instrument đặt cho dòng sản phẩm họ PIC1650 Lúc này, PIC1650 dùng để giao tiếp với thiết bị ngoại vi cho máy chủ 16bit CP1600, vậy, người ta gọi PIC với tên “Peripheral Interface Controller” (Bộ điều khiển giao tiếp ngoại vi) CP1600 CPU tốt, lại hoạt động xuất nhập, PIC 8-bit phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC
Trang 1TRƯỜNG ĐẠI HỌC QUỐC GIA TPHCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Khoa Điện - Điện Tử
Trang 2LỜI CẢM ƠN
Lời đầu tiên nhóm em xin cảm ơn chân thành đến thầy
Hồ Trung Mỹ đã giúp đỡ cho nhóm em hoàn thành đồ án
này.
Trong quá trình thực hiện đề tài, không tránh khỏi
những sai xót Kính mong nhận được sự giúp đỡ và góp ý
của quý thầy cô để nhóm hoàn thiện hơn sau này.
Tp Hồ Chí Minh,ngày 23 tháng 12 năm 2019
Sinh viên Trần Đình Nhật Bùi văn
Trang 3TÓM TẮT ĐỒ ÁN
Thiết kế đồng hồ và lịch điện tử dùng PIC có các chức năng:
Yêu cầu :
Đề tài đồ án là dựa vào chức năng timer PIC để tạo nên chuẩn 1 giây Cứ
sau 1 giây thì cập nhập phút, giờ, ngày, tháng và năm ( dương lịch )
Hiển thị và cho phép điều chỉnh thời gian trên LCD
Phần làm thêm:
Cho phép đặt báo thức
Tính toán quy đổi dương lịch thành âm lịch và hiển thị LCD ( nhóm
thực hiện tính toán được trong vòng 5 năm từ 2020-2025)
Hiển thị được các thứ trong tuần
Trang 4MỤC LỤC
I GIỚI THIỆU
1.1 Tổng quan
1.2 Nhiệm vụ đề tài và phân công công việc
II LÝ THUYẾT
1 Vi điều khiển PIC
2 PIC16F877A
3 LCD 20x4
III THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG
1 Sơ đồ khối
2 Sơ đồ nguyên lý
IV THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM (Mô tả bằng Pseucode)
V KẾT QUẢ THỰC HIỆN
VI KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1 Kết luận
2 Hướng phát triển
VII TÀI LIỆU THAM KHẢO
Trang 5DANH SÁCH HÌNH MINH HỌA
Hình 1 Hình ảnh thực tế của PIC 16F877A
Hình 2 Sơ đồ chân vi điều khiển PIC
16F877A Hình 3 Sơ đồ chức năng của PIC
16F877A Hình 4 Sơ đồ khối vi điều khiển
Trang 6I GIỚI THIỆU ĐỀ TÀI
1 Tổng quan
- Ngày nay khoa học công nghệ và kỹ thuật đang đóng một vai trò quan trọng
trong đời sống con người Bên cạnh đó, thời gian luôn trở thành một tài sản
quý giá mà bất kì ai cũng mong muốn được tận dụng một cách tối đa Tuy
nhiên, việc quản lý thời gian một cách hiệu quả vẫn là một trong những vấn
đề nan giải cần được giải quyết một cách triệt để và đây là một đề tài mà
nhóm luôn muốn tìm cách giải quyết Kết hợp với kiến thức thiết kế và lập
trình hệ thống nhúng, nhóm đã quyết định lựa chọn đề tài “Thiết kế đồng hồ
+ Viết giải thuật + code thời gian, lịch dương, lịch
âm, thứ, tùy chỉnh cài đặt thời gian, làm báo cáo
word
X
+ Viết giải thuật + code cài đặt hiển thị báo thức,
giao tiếp hiển thị LCD Tổng hợp code tổng, làm
báo cáo powerpoint
Trang 7II LÝ THUYẾT
1. Vi điều khiển PIC
1.1. Giới thiệu vi điều khiển PIC
- PIC bắt nguồn là chữ viết tắt của “Programmable Intelligent
Computer” (Máy tính khả trình thông minh) là một sản phẩm của hãng
General
- PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip
Technology Dòng PIC đầu tiên là PIC1650 được phát triển bởi
Microelectronics Division thuộc General Instrument
- Instrument đặt cho dòng sản phẩm đầu tiên của họ là PIC1650 Lúc
này, PIC1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ
16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên “Peripheral
Interface Controller” (Bộ điều khiển giao tiếp ngoại vi) CP1600 là một CPU
tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát
triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC
sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa
được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến
trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động)
1.2. Các dòng PIC và cách chọn vi điều khiển
a Các kí hiệu trên vi điều khiển PIC:
PIC12xxxx: độ dài lệnh 12 bit
PIC16xxxx: độ dài lệnh 14 bit
PIC18xxxx: độ dài lệnh 16 bit
C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ flash
LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
LV: tương tụ như LF, đây là ký hiệu cũ
- Bên cạnh đó một số vi điều khiển có kí hiệu xXxxx là EEPROM, nếu
có thêm chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn
PIC16F877A là flash)
Trang 8- Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC Ở Việt Nam
phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất
b Cách lựa chọn một vi điều khiển phù hợp
- Cần để ý đến số chân của vi điều khiển cần thiết cho ứng dụng Có nhiều
vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển
PIC chỉ có 8 chân, ngoài ra còn có các vi điều khiển 28, 40, 44… chân
- Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương
trình được nhiều lần hơn
- Cần chú ý đến khối lượng chức năng được tích hợp sẵn trong vi điều
khiển, các chuẩn giao tiếp bên trong
- Cuối cùng là cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép
1.3. Một vài tính năng của PIC
- Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần
cứng, nhưng chúng ta có thể điểm qua một vài nét như sau:
8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa đổi
FLASH và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
Các cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V đến 5.5V, ứng với
logic 0 và logic 1)
8/16 Bit Timer
Công nghệ Nanowatt
Các chuẩn Giao Tiếp Ngoại Vi nối tiếp Đồng bộ/Không đồng bộ
USART, AUSART, EUSARTs
Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
Bộ so sánh điện áp (Voltage Comparators)
Các module Capture/Compare/PWM
LCD
MSSP Peripheral dùng cho các giao tiếp I²C, SPI, và I²S
Trang 9 Bộ nhớ nội EEPROM – có thể ghi/xoá lên tới 1 triệu lần
FLASH (dùng cho bộ nhớ chương trình) có thể ghi/xóa 10.000 lần
Module Điều khiển động cơ, đọc encoder
Hỗ trợ giao tiếp USB
Hỗ trợ điều khiển Ethernet
Hỗ trợ giao tiếp CAN
Hỗ trợ giao tiếp LIN
Hỗ trợ giao tiếp IrDA
Một số dòng có tích hợp bộ RF (PIC16F639, và rfPIC)
KEELOQ Mã hoá và giải mã
DSP những tính năng xử lý tín hiệu số (dsPIC)
2. PIC 16F877A
Hình 1 Hình ảnh thực tế của PIC 16F877A
Trang 102.1. Sơ đồ chân của PIC 16F877A
Hình 2 Sơ đồ chân vi điều khiển PIC 16F877A
Trang 112.2. Một vài thông số về vi điều khiển PIC 16F877A
Hình 3 Sơ đồ chức năng của PIC 16F877A
- Đây là vi điều khiển thuộc 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 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ì lệnh là 200ns Bộ nhớ
chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu
EEPROM với dung lượng 256x8 byte Số PORT I/O là 5 với 33 pin I/O
- Các đặc tính ngoại vi bao gồm các khối chức năng sau:
Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm
dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ
sleep
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
Trang 12 Hai bộ Capture/so sánh/điều chế độ rộng xung.
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng giao tiếp song song PSP ( Parallel Slave Port) với các chân điều
khiển RD, WR, CS ở bên ngoài
- Các đặc tính Analog:
8 kênh chuyển đổi ADC 10 bit
Hai bộ so sánh
- Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
Khả năng tự nạp chương trình với sự điều khiển của phần mềm
Nạp được chương trình ngay trên mạch điện ICSP (In Ciruit Serial
Programming) thông qua hai chân
Watchdog Timer với bộ dao động trong
Chức năng bảo mật mã chương trình
Chế độ sleep
Có thể hoạt động với nhiều dạng Oscillator khác nhau
Trang 132.3. Sơ đồ vi điều khiển PIC 16F877A
Hình 4 Sơ đồ khối vi điều khiển PIC16F877A
Trang 143. LCD 20x4
3.1. Khái niệm LCD
- Text LCD là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thị các dòng
chữ hoặc số trong bảng mã ASCII
- Kích thước của Text LCD được định nghĩa bằng số ký tự có thể hiển thị trên
1 dòng và tổng số dòng mà LCD có Một số kích thước Text LCD thông
thường gồm 16x1, 16x2, 16x4, 20x2, 20x4…
Hình 5 LCD 20x4
3.2. Chức năng các chân LCD:
Trang 15Hình 6 Sơ đồ chân và chức năng của LCD
Ghi chú: ở chế độ “ đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua
các chân DBx Còn ở chế độ “ghi”, nghĩa là MCU xuất thông tin điều khiển
cho LCD thông qua các chân DBx
Trang 163.3. Bảng mã kí tự của LCD
Hình 7 Bảng mã kí tự (ROM code A00)
Trang 173.4. Các lệnh điều khiển LCD.
- Để điều khiển được LCD thì cần có IC chuyên dùng được tích hợp bên
dưới LCD có mã số 447801 đến các IC 447809 Trong IC này có bộ nhớ
RAM dùng để lưu trữ dữ liệu cần hiển thị và thực hiện việc điều khiển LCD
hiển thị
Trang 18Real time (timer 0)
PIC 16F877A
Âm thanh
Khối nguồn Button
- Nút nhấn giao tiếp ngoài cho phép chỉnh ngày giờ
- Real time sử dụng timer 0 tạo chuẩn 1s
- Âm thanh là mạch còi báo cuả báo thức
- Hiển thị LCD 20*4 các thông số ngày giờ lịch và thứ
Trang 192 Sơ đồ nguyên lí.
Hình 9 Sơ đồ nguyên lí
3 Khối nguồn.
Hình 10 Khối nguồn
Trang 20- Khối nguồn sử dụng Adaptor 9V-1A làm nguồn vào chính, mạch nguồn có công
tấc và đèn báo để tiện cho bật tắt thiết bị.
- Tụ C5 giá trị 470u-35V có tác dụng lọc nguồn cấp vào để tăng tính ổn định cho
nguồn và cho mạch IC 7805 làm nhiệm vụ ổn áp cho ra nguồn điện ổn định 5V
với dòng tối đa là 1A cho toàn mạch hoạt động Nguồn 5V này sẽ được lọc lại một
lần nữa bằng tụ C6 có giá trị 47u-16V
4 Khối xử lí (vi điều khiển).
Hình 11 Khối vi điều khiển
- Khối xử lí sử dụng IC chính là PIC 16F877A.
- Sử dụng thạch anh 16MHz cùng với 2 tụ điện 22pF (có tác dụng ổn định xung,
tránh được xảy ra sai số xung của thạch anh) đưa vào chân số 13 OSC1/CLKIN và
chân số 14 OSC2/CLKOUT tạo xung clock để tính toán cho mạch.
- Tụ C1 10uF chống nhiễu cho mạch reset R1 (10k) là điện trở kéo lên, mạch sẽ
reset khi Button được nhấn và giá trị mức logic cấp cho chân số 1 MCLR là 0.
Trang 21- Sử dụng các chân RB0-RB7 kết nối với các nút nhấn Các chân RD4-RD7 kết nối
Data của LCD ở chế độ 4 bit Chân RD0 nối với chân E, RD1 nối với chân Rs điều
khiển cho LCD Chân RD2 dùng để kích hoạt còi báo.
5 Khối nút nhấn.
Hình 12 Khối nút nhấn
- Sử dụng nút nhấn để có tiếp điểm tạo ra sự thay đổi mức logic từ của mạch, giúp
cho vi điểu khiển biết được có sự tác động từ bên ngoài, các nút được nối với các
chân khác nhau và số lượng nút tùy vào mục đích của người lập trình.
6 Khối hiển thị
Hình 13 Khối hiển thị
Trang 22- Khối hiển thị cụ thể là LCD 20*4, sử dụng giao tiếp 4 bít với vi điều khiển, biến
trở 10k cài đặt độ tương phản của nội dung hiển thị lên LCD
7 Khối âm thanh
Hình 14 Khối âm thanh
- Sử dụng còi báo buzzer để phát ra âm thanh, được cấp nguồn điều khiển bởi BJT
Q1 C1815 có tác dụng khuếch đại dòng điều khiển đủ cung cấp cho còi báo, điền
trở R4 là điện trở phân cực cho Q1 Tín hiệu được cấp từ VĐK sẽ qua R4 rồi đi
vào Q1 cấp dòng cho còi báo.
- Dòng của Q1 C1815 có thể lên đến 50mA Hệ số khuếch đại là 120
- Vậy để C1815 dẫn bảo hòa thì
Ib = Icmaxbeta
Trang 238 Sơ đồ layout mạch
Hình 15 Mạch layout
IV THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM
- Về cơ bản, đồng hồ hiển ghị ngày – tháng – năm và giờ – phút – giây bao
gồm các thông số cùng với tầm hoạt động sau đây:
Trang 24 Thứ : Monday – Tuesday – Wednesday– Thursday – Friday – Saturday –
Sunday tương ứng với thứ hai, thứ ba, thứ tư, thứ năm, thứ sáu, thứ bảy, chủ
nhật trong tuần
- Tùy chỉnh cài đặt thời gian mong muốn
- Cho phép cài đặt báo thức ( tối thiểu 4 báo thức)
- Cho phép hiển thị lịch âm vài năm nhất định
2 Giải thuật timer.
Chương trình thực hiện đếm xung 1s để cập nhập phút, giờ, ngày, tháng,
{ giây quay lại bằng 0 ,
Phút sẽ tăng lên 1 đơn vị}
if (phút lớn hơn 59)
{ phút sẽ quay lại bằng 0
giờ sẽ tăng lên 1 đơn vị}
if (giờ lớn hơn 23)
{ giờ sẽ quay lại bằng 1
ngày sẽ tăng lên 1 đơn vị}
Trang 25Thứ sẽ tăng lên 1 đơn vị
if ( tháng là tháng 4, 6, 9,11)
if (ngày lớn hơn 31){ ngày quay lại bằng 0}
if ( tháng là tháng 2)
if ( năm chia hết cho 4 và không chia hết
cho 100 hoặc chia hết cho 400 )
if ( ngày lớn hơn 28)
{ ngày sẽ quay lại bằng không}
if ( năm không chia hết cho 4)
if( ngày lớn hơn 29)
{ ngày sẽ quay lại bằng không}
}
Tháng sẽ tăng lên 1 đơn vị
if( tháng lớn hơn 12)
{ tháng quay lại bằng không}
Năm sẽ tăng lên 1 đơn vị
End
Trang 263 Giải thuật chỉnh thời gian
- Chương trình được thực hiện với mục đích chỉnh được thời gian mong muốn
cài đặt của người
dùng -Begin
if( nút tùy chỉnh được nhấn)
{
hiển thị giá trị cần chỉnh trên LCD
if( nút tăng được nhấn)
{ tăng tới giá trị mong muốn chỉnh}
if( nút giảm được nhấn)
{ giảm tới giá trị mong muốn chỉnh}
}
if( nút break được nhấn)
{ thoát khỏi hàm tùy chỉnh}
End
Trang 274 Giải thuật chỉnh báo thức
- Chương trình cho phép người dùng cài đặt các báo thức mong muốn—
Begin
if( nút báo thức được nhấn)
{
Hiển thị giá trị cần cài đặt lên LCD
if( khi nút tăng được nhấn)
{ cài đặt thông số báo thức cần tăng}
if( khi nút giảm được nhấn)
{ cài đặt các thông số cần giảm}
If( khi nhấn nút chuyển mode)
{ chuyển tới thông số cần cài đặt tiếp theo}
if( khi nút báo thức được nhấn lần nữa)
{ chuyển báo thức tiếp theo}
If( khi nhấn nút báo thức 4 lần)
{ thoát khỏi hàm báo thức }
}
End
Trang 28V KẾT QUẢ THỰC HIỆN.
1 Kết quả mô phỏng proteus.
Hình 16 Mô phỏng hiển thị giờ
Hình 17 Mô phỏng báo thức
Trang 292 Sản phẩm sau khi thi công mạch.
Hình 18 Mạch sau khi hoàn thành
Trang 30- Mạch làm thực tế hiển thị và chạy đúng với mô phỏng, tuy nhiên vẫn còn
một số lỗi nhiễu hiển thị trên LCD
Trang 31Sau khi kiểm tra và chỉnh sửa, ta thu được kết quả cụ thể sau đây:
- Sau khi hoàn thành đề tài đồ án, nhóm em đã có thêm nhiều kinh nghiệm
trong làm việc nhóm, từng bước vận dụng những kiến thức đã học và học
hỏi được nhiều kinh nghiệm làm mạch và tiếp thu được nhiều kiến thức mới
- Qua thực hiện đồ án giúp sinh viên làm quen với những đồ án tốt ngiệp hay
luận văn khi ra trường
2 Hướng phát triển
- Có thể phát triển thêm nhiều tính năng khác tích hợp trên đồng hồ như đo độ ẩm,
nhiệt độ trong nhà,…
- Có thể cài đặt hẹn lịch nhắc nhở các sự kiện quan trọng.
VII TÀI LIỆU THAM KHẢO
[1] Giáo trình Vi xử lý – Th.S Hồ Trung Mỹ, NXB Đai học Quốc gia Tp.HCM
[2] Tài liệu vi điều khiển – Nguyễn Đình Phú 2014
[3] Diễn đàn điện tử Việt Nam, http://www.dientuvietnam.net/
[4] Tài liệu thiết kế hệ thống nhúng – Th.s Bùi Quốc Bảo.