Tải bản đầy đủ (.docx) (52 trang)

Thiết Kế Và Chế Tạo Lịch Vạn Niên

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (963.33 KB, 52 trang )

Mục lục

Danh mục hình vẽ

1


MỞ ĐẦU


Lý do chọn đề tài



Ngày nay khoa học công nghệ hiện đại đã có những bước tiến nhanh và xa
đi theo nó là những thành tựu ứng dụng trong các lĩnh vực đời sống, công nghiệp.
Kỹ thuật điều khiển trong tiến trình hoàn thiện lý thuyết cũng đã tạo cho mình
nhiều phát triển có ý nghĩa. Bây giờ khi nhắc tới điều khiển con người dường như
hình dung tới độ chính xác, tốc độ xử lý và thuật toán thông minh đồng nghĩa là
lượng chất xám cao hơn. Hiện nay trên thị trường có rất nhiều loại vi điều khiển
như 8051, Motorola 68HC, AVR, ARM,.... Ngoài họ 8051 được hướng dẫn một
cách căn bản ở môi trường đại học, chúng em đã chọn vi điều khiển PIC để mở
rộng vốn kiến thức và phát triển các ứng dụng trên công cụ này vì các nguyên nhân
sau:
Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam.
Có đầy đủ tính năng của một vi điều khiển khi hoạt động độc lập.
Là sự bổ sung rất tốt về kiến thức cũng như ứng dụng cho họ vi điều khiển mang



tính truyền thống: họ vi điều khiển 8051. Giá thành không đắt.


Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp chương



trình từ đơn giản tới phức tạp...
Các tính năng đa dạng của vi điều khiển PIC và các tính năng này không ngừng



được phát triển.
Số lượng người sử dụng họ vi điều khiển PIC trên thế giới cũng như Việt Nam khá



nhiều.Đã tạo thuận lợi trong quá trình tìm hiểu và phát 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, dễ dàng trao đổi, học
tập, dễ dàng tìm được hỗ trợ khi gặp khó khăn.
Vì vậy, sau một thời gian học tập và tìm hiểu tài liệu với sự giảng dạy của các thầy
cô giáo. Cùng với sự dẫn dắt nhiệt tình của giáo viên hướng dẫn thầy giáo Nguyễn
Văn Vĩnh .Chúng em đã chọn đề tài: “Thiết Kế Và Chế Tạo Lịch Vạn Niên” làm
đồ án của mình.
Đối tượng nghiên cứu



Với đề tài này chúng em tập trung vào:
Tìm hiểu về vi điều khiển PIC 16F877A




Nghiên cứu IC thời gian thực DS1307



2




Nghiên cứu cảm biếm nhiệt độ DS18B20



Mục đích nghiên cứu



Khi nghiên cứu đồ án này chúng em đã:
Hiểu được cách thức và chế độ hoạt động của VĐK PIC 16F877A



Hiểu được cách thức hoạt động của DS1307



Thiết kế, chế tạo mạch hiển thị thứ ,ngày ,tháng , năm dùng PIC 16F877A.






Phương pháp nghiên cứu
Do đây là một đồ án sản phẩm, nên chúng em đã áp dụng phương pháp nghiên cứu
lý thuyết, nghiên cứu thực nghiệm trực tiếp trên sản phẩm thật, chạy thử và hoàn
thiện chương trình.
Ý nghĩa nghiên cứu



Như đã nói ở trên thì nếu thực hiện thành công đề tài này sẽ mang lại ý nghĩa về cả
thực tiễn và lý luận.
Ý nghĩa lý luận:



Toàn bộ chương trình và bản thuyết minh của đề tài sẽ trở thành tài liệu, tham khảo
nhanh, dễ hiểu, thiết thực cho các bạn sinh viên, những người thích tìm hiểu về đề
tài này của chúng em.
Ý nghĩa thực tiễn:
Với sự thành công của đề tài sẽ góp phần giúp cho các bạn sinh viên mới nói chung
và các bạn sinh viên khoa Điện Điện Tử nói riêng thấy rõ được ý nghĩa thực tế và
thêm yêu thích chuyên ngành mình đã chọn.
Do kiến thức và trình độ năng lực hạn hẹp nên việc thực hiện đề tài này không thể
tránh được thiếu sót, kính mong nhận được sự thông cảm và góp ý của thầy giáo, cô
giáo và các bạn để đồ án này hoàn chỉnh hơn.
Chúng em xin trân thành cảm ơn!
Sinh viên thực hiện: Nguyễn Thị Thu Thảo.

3



CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Cách tính thời gian theo lịch dương và lịch âm.

Hình 1.1: Hệ Mặt Trời
1.1.1. Cách tính thời gian dương lịch.
Trái đất quay quanh Mặt trời là 365+ 1/4 ngày (hay 6 giờ). Nhưng theo quy
ước thì mỗi năm chỉ có 365 ngày, nên năm dương lịch sẽ lệch với thời gian thực là
1/4 ngày. Điều này cũng có nghĩa sau 4 năm thì dương lịch sẽ dư một ngày, do vậy,
cứ 4 năm sẽ có một năm 366 ngày, gọi là năm nhuận. Năm nhuận này theo quy ước
rơi vào tháng hai (tức là tháng có 29 ngày). Độ dài trung bình của năm dương lịch
hiện nay (còn gọi là Tân lịch hay lịch Gregorius) là 365.2425 chứ không phải
365.25 (365 1/4), độ dài 365 1/4 là độ dài của Cựu lịch (lịch Julius), lịch này không
còn sử dụng trên thế giới từ năm 1582 khi Giáo hoàng Gregorius XIII ban hành sắc
lệch cải cách lịch. Dương lịch của người La Mã cổ đại vì không biết là Trái Đất
4


quay xung quanh Mặt trời và năm của họ chỉ có 304 ngày (được chia thành 10
tháng chứ không phải 12 tháng).
1.1.2. Cách tính thời gian âm lịch.
Chu kỳ Mặt trăng quay quanh Trái đất 1 vòng hết 29,5 ngày. Âm lịch là loại
lịch dựa trên các chu kỳ của tuần trăng. Loại lịch duy nhất trên thực tế chỉ thuần
túy sử dụng âm lịch là lịch Hồi Giáo, trong đó mỗi năm chỉ chứa đúng 12 tháng
Mặt Trăng. Đặc trưng của âm lịch thuần túy, như trong trường hợp của lịch Hồi
Giáo, là ở chỗ lịch này là sự chu kỳ trăng tròn và hoàn toàn không gắn liền với các
mùa. Vì vậy năm âm lịch Hồi Giáo ngắn hơn mỗi năm dương lịch khoảng 11 hay
12 ngày, và chỉ trở lại vị trí ăn khớp với năm dương lịch sau mỗi 33 hoặc 34 năm
Hồi Giáo. Do âm lịch thuần túy chỉ có 12 tháng âm lịch ( tháng giao hội ) trong mỗi

năm, nên chu kỳ này (354 ngày) đôi khi cũng gọi là năm âm lịch.
1.1.3. Năm nhuận.
 Tính năm nhuận theo Dương lịch.



Muốn biết năm nào của Dương lịch là năm nhuận thì ta chỉ cần lấy số biểu
của năm đó đem chia cho 4 mà vừa đủ thì năm đó là năm Dương lịch có nhuận
tháng 2 thêm 1 ngày thành 29 ngày. Vì thông thường tháng 2 Dương lịch chỉ có 28
ngày mà thôi. Nhưng lưu ý rằng đối với những năm tròn Thế Kỷ ( tức số biểu của
năm đó có 2 con số không ở cuối thì ta phải lấy 2 con số đầu của số biểu để chia
cho 4. Nếu chia vừa đủ thì năm đó là năm Nhuận.
Tính năm nhuận theo Âm lịch.
Đối với năm Nhuận Âm lịch thì có một tháng nhuận. Tháng âm lịch phải lấy
ngày Nhật Nguyệt hợp sóc làm đầu ( tức là ngày Mặt Trời, Mặt Trăng, Trái Đất
cùng trên một trục đường thẳng). Hai lần hợp sóc cách nhau 29,5 ngày. Cho nên
tháng Âm lịch đủ 30 ngày và tháng thiếu là 29 ngày. Vì cách tính như vậy, nên Âm
lich bắt đầu vào ngày “ sóc” kề với “ tiết” Lập xuân. Sai số năm thực là 11 ngày
trong một năm. Dồn 3 năm lại thì dôi ra 33 ngày. Cho nên qua 3 năm phải nhuận 1
tháng, rồi dồn 2 năm nữa thì được 25 ngày là gần được nhuận 1 tháng. Tính bình
quân trong 19 năm thì có 7 tháng nhuận. Trong mỗi tháng bình thường có một ngày
5


“tiết” và một ngày “khí”. Số ngày tiết và ngày khí bình quân là 30,4 ngày. Do đó
ngày của tháng Âm lịch có 29,5 ngày. Cho nên sau 2,3 năm sẽ có một tháng chỉ có
ngày tiết mà không có ngày khí thì dùng tháng đó làm tháng Nhuận Âm lịch. Nói
như vậy nhưng đi vào tính cụ thể tháng nào trong năm nhuận âm lịch là tháng
nhuận thì rất phức tạp mà ta phải hiểu lịch pháp mới tính được chứ không tính dễ
dàng như tháng nhuận của năm Dương lịch. Nhưng tính năm âm lịch có nhuận thì

cũng không khó. Cụ thể tính như sau: Đếm số biểu của năm Dương lịch tương ứng
với năm âm lịch chia cho 19, nếu số dư là một trong các số : 0, 3, 6, 9 hoặc 11, 14,
17 thì năm âm lịch đó có tháng nhuận.
1.1.4. Tháng nhuận.
Dương lịch cứ 4 năm thêm 1 ngày thứ 29 của tháng 2.
Âm lịch cứ 3 năm thêm 1 tháng.
1.1.5. Cách tính âm lịch, dương lịch trong đồng hồ.
Cách tính âm lịch theo phương pháp tra bảng:
 Tính ngày âm lịch
Nếu ( ngày Dương lịch tương ứng với ngày đầu tháng Âm lịch) bằng ( ngày hiện
tại) thì ngày Âm lịch bằng 1 hoặc ( ngày Dương lịch tương ứng với ngày đầu tháng
Âm lịch ) trừ ( ngày hiện tại )
Nếu không có nhớ thì ngày âm lịch bằng ngày Dương lịch hiện tại cộng ngày Âm
lịch của đầu tháng Dương lịch rồi trừ 1
Nếu có nhớ ngày âm lich bằng ngày Dương lịch hiện tại trừ ngày Âm lịch của đầu
tháng Dương lịch rồi cộng1
 Tính tháng âm lịch.
Bằng cách lấy ngày Dương lịch tương ứng với đầu tháng âm lịch trong tháng trừ
ngày hiện tại.
Nếu không có nhớ thì tháng Âm lịch hiện tại = tháng Âm lịch của đầu tháng Dương
lịch.
Nếu có nhớ thì tháng Âm lịch hiện tại = tháng Âm lịch của ngày đầu tháng Âm lịch
 Tính năm âm lịch.
Bằng cách lấy tháng Dương lịch trừ cho tháng Âm lịch
Nếu không có nhớ thì năm Âm lịch = năm Dương lịch
Nếu có nhớ thì năm Âm lịch hiện tại = năm Dương lịch -1

6



1.2.

IC cảm biến nhiệt độ DS18B20.
DS18B20 là linh kiện điện tử thuộc loại cảm biến nhiệt độ kỹ thuật số giao
tiếp 1-Wire (1 dây duy nhất), bên trong IC được tích hợp sẵn cảm biến nhiệt và bộ
chuyển đổi, khối xử lý, giao tiếp 1 wire, bộ nhớ ROM, EEPROM, báo thức nhiệt độ
khi đạt ngưỡng..
IC cảm biến nhiệt độ, chỉ bao gồm 3 chân, đóng gói dạng TO-92 hay dạng SMD 8
chân

Hình 1.2. Cảm biến nhiệt độ DS18B20
Đặc điểm nổi bật:
Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho độ phân giải 12 bit.





1.3.

Lấy nhiệt độ theo giao thức 1 dây.
Cung cấp nhiệt độ với độ phân giải config 9, 10, 11, 12 bit, tùy theo sử dụng.

trong trường hợp không có config thì nó tự động ở chế độ 12 bit.
0
0
• khoảng nhiệt độ từ -10 C đến +85 C thì độ chính xác ±0.5°C.
Điện áp sử dụng: 3- 5.5V
IC thời gian DS1307.
DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm

thời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang
7


sử dụng, tình bằng giây, phút, giờ…DS1307 là một sản phẩm của Dallas
Semiconductor (một công ty thuộc Maxim Integrated Products). Chip này có 7
thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm.
Ngoài ra DS1307 còn có 1 thanh ghi điều khiển đầu ra phụ và 56 thanh ghi trống có
thể dùng như RAM. DS1307 được đọc và ghi thông qua giao diện nối tiếp I2C
(TWI của AVR) nên cấu tạo bên ngoài rất đơn giản. DS1307 xuất hiện ở 2 gói
SOIC và DIP có 8 chân như trong hình 1.3:

Hình 1.3. Hai gói cấu tạo chip DS1307.

-

-

-

Các chân của DS1307 được cấu tạo như sau:
X1 và X2: là 2 đầu kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động cho
chip.
VBAT: cực dương của một nguồn pin 3V nuôi chip.
GND: chân mass chung cho cả pin 3V và Vcc.
Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển.
Chú ý là nếu Vcc không được cấp nguồn nhưng V BAT được cấp thì DS1307 vẫn
đang hoạt động ( nhưng không ghi và đọc được).
SQW/ OUT: một đầu tạo xung vuông ( Square Wave/ Output Driver), tần số của
xung được tạo có thể lập trình. Như vậy chân này hầu như không liên quan đến

chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống chân này khi
nối mạch.
SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C mà chúng ta
đã tìm hiểu trong bài TWI của AVR.
8


Hình 1.3: Sơ đồ kết nối DS1307 bằng một mạch điện đơn giản
1.4.


-


-

Vi điều khiển PIC 16F877A.
1.4.1. PIC là gì?
PIC là viết tắt của “Programable Intellingent Computer”, có thể tạm dịch là
“máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều
khiển đầu tiên của họ. Hãng Micrchip tiếp tục phát triển sản phẩm này và cho đến
nay hãng đã tạo ra gần 100 loại sản phẩm khác nhau.
1.4.2. Các dòng PIC và cách lựa chọn vi điều khiển PIC
Các kí hiệu của 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 xxFxxx là EEPROM, nếu có thêm chữ
A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash).
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.
Cách lựa chọn một vi điều khiển PIC phù hợp:
Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng. Có
nhiềuvi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển chỉ

9


-

-

-

-

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.
Tiếp theo cần chú ý đến các khối 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. Sau cùng cần chú ý đến bộ nhớ chương trình
mà vi điều khiển cho phép. Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển
PIC có thể được tìm thấy trong cuốn sách “Select PIC guide” do nhà sản xuất
Microchip cung cấp.
Do thời gian làm đồ án có hạn nên chúng em chỉ tập trung tìm hiểu các tính năng
của PIC 16F877A có liên quan đến đề tài.
1.4.3.Cấu trúc vi điều khiển PIC16F877A

PIC 16F877A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu
hết tất cả các ứng dụng thực tế. Đây là dòng PIC khá dễ cho người mới làm quen
với PIC có thể học tập và tạo nền tảng về họ vi điều khiển PIC của mình.
PIC 16F877A thuộc họ vi điều khiển 16Fxxx có các đặc tính ngoại vi sau:
Ngôn ngữ lập trình đơn giản với 35 lệnh có độ dài 14 bit.
Tất cả các câu lệnh thực hiện trong một chu kì lệnh ngoại trừ một số câu lệnh rẽ
nhánh thực hiện trong hai chu kì lệnh. Chu kì lệnh bằng 4 lần chu kì dao động của
thạch anh.
Bộ nhớ chương trình Flash 8Kx14 words, với khả năng ghi xóa khoảng 100 ngàn
lần.
Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8byte RAM và bộ nhớ dữ liệu
EEPROM với dung lượng 256x8 byte. Số PORT I/O là 5 với 33pin I/O.
Khả năng ngắt (lên tới 14 nguồn cả ngắt trong và ngắt ngoài).
Ngăn nhớ Stack được chia làm 8 mức.
Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp.
Dải điện thế hoạt động rộng: 2.0V đến 5.5V.
Nguồn sử dụng 25mA.
Công suất tiêu thụ thấp:<0.6mA với 5V, 4MHz.
20µA với nguồn 3V, 32 KHz.
Có 3 timer:
Timer 0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer 1: 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.
Timer 2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
Hai bộ Capture/so sánh/điều chế độ rông xung.
10


-


-

-

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 Circuit Serial Programming)
thông qua 2 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.

11


Hình 1.4: Sơ đồ khối bộ vi điều khiển PIC 16F877X

12



PIC 16F877A có tất cả 40 chân,được chia thành 5 PORT, 2 chân cấp nguồn, 2
chân GND, 2 chân thạch anh và 1 chân dùng để RESET vi điều khiển.

Hình 1.5: Hình ảnh thực tế và sơ đồ chân của PIC 16F877A
5 port của PIC 16F877A bao gồm:
PORT B: 8 chân
PORT D: 8 chân
PORT C: 8 chân
PORT A: 6 chân
PORT E: 3 chân
Chức năng các chân:
+ Chân OSC1/CLK1(13): đầu vào kết nối với dao động thạch anh hoặc đầu vào
nhận xung clock từ bên ngoài.
+ Chân OSC2/CLK2(14): đầu ra dao động thạch anh hoặc đầu ra cấp xung clock.
+ Chân

(1) có 2 chức năng

: đầu vào reset tích cực ở mức thấp.
- Vpp: đầu vào nhận điện áp lập trình khi lập trình cho PIC.
+ Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 chức năng
- RA 0,1,2: xuất/ nhập số.
- AN 0,1,2: đầu vào tương tự của kênh thứ 0,1,2.
13


+ Chân RA2/AN2/VREF-/CVREF+(4): xuất nhập số/ đầu vào tương tự của kênh
thứ 2/ đầu vào điện áp chuẩn thấp của bộ AD/ đầu vào điện áp chẩn cao của bộ AD.
+ Chân RA3/AN3/VREF+(5): xuất nhập số/ đầu vào tương tự kênh 3/ đầu vào điện

áp chuẩn (cao) của bộ AD.
+ Chân RA4/TOCK1/C1OUT(6): xuất nhập số/ đầu vào xung clock bên ngoài cho
Timer 0/ đầu ra bộ so sánh 1.
+ Chân RA5/AN4/ / C2OUT(7): xuất nhập số/ đầu vào tương tự kênh 4/ đầu vào
chọn lựa SPI phụ/ đầu ra bộ so sánh 2.
+ Chân RB0/INT (33): xuất nhập số/ đầu vào tín hiệu ngắt ngoài.
+ Chân RB1(34), RB2(35): xuất nhập số.
+ Chân RB3/PGM(36): xuất nhập số/ cho phép lập trình điện áp thấp ICSP.
+ Chân RB4(37), RB5(38): xuất nhập số.
+ Chân RB6/PGC(39): xuất nhấp số/ mạch gỡ rối và xung clock lập trình ICSP.
+ Chân RB7/PGD(40): xuất nhập số/ mạch gỡ rối và dữ liệu lập trình ICSP.
+ Chân RC0/T1OCO/T1CKI(15): xuất nhập số/ đầu vào bộ giao động Timer1/ đầu
vào xung clock bên ngoài Timer 1.
+ Chân RC1/T1OSI/CCP2(16) : xuất nhập số/ đầu vào bộ dao động Timer 1/ đầu
vào Capture2, đầu ra compare2, đầu ra PWM2.
+ Chân RC2/CCP1(17): xuất nhập số/ đầu vào Capture1 ,đầu ra compare1, đầu ra
PWM1.
+ Chân RC3/SCK/SCL(18): xuất nhập số/ đầu vào xung clock nối tiếp đồng bộ,
đầu ra chế độ SPI./ đầu vào xung clock nối tiếp đồng bộ, đầu ra của chế độ I2C.
+ Chân RC4/SDI/SDA(23): xuất nhập số/ dữ liệu vào SPI/ xuất nhập dữ liệu I2C.
+ Chân RC5/SDO(24): xuất nhập số/ dữ liệu ra SPI.
+ Chân RC6/TX/CK(25): xuất nhập số/ truyền bất đồng bộ USART/ xung đồng bộ
USART.
+ Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART.
+ Chân RD0-7/PSP0-7(19-30): xuất nhập số/ dữ liệu port song song.
1.4.4. Tổ chức bộ nhớ.
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data memory).
14



Bộ nhớ chương trình.
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung
lượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang ( từ page
0 đến page 3). Như vậy bộ nhớ chương trình có thể chứa được 8*1024=8192 lệnh
(vì mỗi lệnh sau khi mã hóa sẽ có dung lượng 1 word=14 bit) .
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương
trình có dung lượng 13 bit.
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ
0000h(reset vector). Khi có ngắt xảy ra bộ đếm chương trình sẽ chỉ đến địa chỉ
0004h(interrupt vector).
Bộ nhớ chương trình không bao gồm bộ nhớ stack và không được địa chỉ hóa
bởi bộ đếm chương trình.

15


Hình 1.6: Bộ nhớ chương trình PIC 16F877A
Bộ nhớ dữ liệu của PIC là bộ nhớ EFPROM được chia ra làm nhiều bank. Đối
với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có dung lượng
128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special Funcition
Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung
GPR(General Purpose Register) nằm ở vùng địa chỉ trong bank. Các thanh ghi SFR
thường xuyên được sử dụng sẽ được đặt ở tất cả các bank của bộ nhớ dữ liệu giúp
thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình. Sơ đồ
cụ thể của bộ nhớ dữ liệu PIC 16F877A như sau:
16


Hình 1.7: Bộ nhớ dữ liệu của PIC


17


• Thanh ghi chức năng đặc biệt SFR

Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và
điều khiển các khối chức năng được tích hợp trong vi điều khiển. Có thể phân
thanh ghi SFR làm 2 loại: thanh ghi SFR liên quan đến chức năng bên trong(CPU)
và thanh ghi SFR dùng để thiết lập và điều khiển các khối bên ngoài(ví dụ ADC..).
Phần này sẽ đề cập đến các thanh ghi liên quan đến các chức năng bên trong. Các
thanh ghi dùng để thiết lập và điều khiển các khối chức năng sẽ được nhắc đến khi
ta đề cập đến các khối chức năng đó.
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực hiện phép
toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ nhớ
dữ liệu.

Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho
phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các tham số
về xung tácđộng, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0.

Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi, chứa
cácbit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT và
ngắt interrput-on-change tại các chân của PORTB.

Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối chức
năng ngoại vi.

Thanh ghi PIR1 (0Ch) : chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt
18



nàyđược cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1.

Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng
CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM.

Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi, các ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2.

Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset của vi
điều khiển.

• Thanh ghi mục đích chung GPR.

Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua
thanh ghi FSG(File Select Register). Đây là các thanh ghi dữ liệu thông thường,
người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi
này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương
trình.
1.5. LED 7 thanh.
Trong các thiết bị, để báo trạng thái hoạt động của thiết bị đó cho người sử
dụng với thông số chỉ là các dãy số đơn thuần, thường người ta sử dụng "led 7
thanh". Led 7 thanh được sử dụng khi các dãy số không đòi hỏi quá phức tạp, chỉ
cần hiện thị số là đủ, chẳng hạn led 7 thanh được dùng để hiển thị nhiệt độ phòng,
19


trong các đồng hồ treo tường bằng điện tử, hiển thị số lượng sản phẩm được kiểm
tra sau một công đoạn nào đó...

Led 7 thanh có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình và có
thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của
led 7 thanh. 8 led đơn trên led 7 thanh có Anode(cực +) hoặc Cathode(cực -) được
nối chung với nhau vào một điểm, được đưa chân ra ngoài để kết nối với mạch
điện. 8 cực còn lại trên mỗi led đơn được đưa thành 8 chân riêng, cũng được đưa ra
ngoài để kết nối với mạch điện.
Led 7 thanh có 2 loại:
 Anode (cực +) chung: đầu (+) chung này được nối với +Vcc, các chân còn lại dùng

để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào
các chân này ở mức 0.
 Cathode (cực -) chung: đầu( -) chung được nối xuống Ground (hay Mass), các

chân còn lại dung để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng
khi tín hiệu đặt vào các chân này ở mức 1.

Hình 1.8: Sơ đồ kết nối led đôi
Hiển thị LED 7 thanh là phần tử hiển thị thông dụng, để hiển thị các phần tử
số từ 0 đến 9 trong một số hệ thập phân. Nó gồm 7 thanh xếp thành hình số 8, mỗi
20




thanh là một diode ( LED ) phát quang hoặc hiển thị tinh thể lỏng. Điode thường
được cấu tạo từ các chất Ga, As, P …nó cũng có tính chất chỉnh lưu như diode
thường. Nhưng khi điện áp thuận đạt nên diode vượt quá mức ngưỡng U ng nào đó
thì diode sáng. Điện áp ngưỡng thay đổi từ 1,5 đến 5 v tuỳ theo từng loại có màu
sắc khác nhau.
LED màu đỏ có điện áp ngưỡng Ung = 1,6 đến 2V




LED màu cam có điện áp ngưỡng Ung = 2,2 đến 3V



LED màu xanh lá cây có điện áp ngưỡng Ung = 2,8 đến 3,2V



LED màu vàng có điện áp ngưỡng Ung = 2,4 đến 3, 2V



LED màu xanh ra trời có điện áp ngưỡng Ung = 3 đến 5V
Thiết kế bộ giải mã hiển thị cho LED 7 thanh với tín hiệu đầu vào là mã BCD
Dạng chỉ thị led 7 thanh :

Hình 1.9: Led 7 thanh
Vì led 7 thanh chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòng
qua mỗi led đơn trong khoảng 10mA-20mA để bảo vệ led. Nếu kết nối với nguồn
5V có thể hạn dòng bằng điện trở 220Ω trước các chân nhận tín hiệu điều hiển.
Các điện trở 220Ω là các điện trở bên ngoài được kết nối để giới hạn dòng điện qua
led nếu led 7 thanh được nối với nguồn 5V.

21


Chân nhận tín hiệu a điều khiển led a sáng tắt, đầu vào b để điều khiển, tương tự

với các chân và các led còn lại.
Trong mạch chúng em sử dụng Led7 thanh loại đôi Anode chung.

CHƯƠNG 2: THIẾT KẾ VÀ CHẾ TẠO MẠCH
2.1 Sơ đồ khối.

2.1.1. Sơ đồ.

Khối cảm biến
nhiệt độ

Khối thời gian thực

Khối điều khiển

Khối hiển thị

Khối cài đặt

Khối nguồn

Hình 2.1: Sơ đồ khối.



2.1.2.Phân tích chức năng các khối.
Khối thời gian thực: xác định thời gian thực (giờ, phút) để đưa vào khối điều khiển.
22





Khối cài đặt: sử dụng các nút nhấn có tác dụng hiệu chỉnh thời gian, ngày, tháng



trong mạch.
Khối điều khiển: lấy tín hiệu từ khối cài đặt, khối thời gian thực, khối cảm biến



nhiệt độ xử lý rồi đưa ra khối hiển thị.
Khối cảm biến:
Khối cảm biến có chức năng đo nhiệt độ của môi trường và đưa tín hiệu thu
được đến khối vi xử lí qua chân 15 của vi điều khiển PIC16F877A.




-

Khối hiển thị:
- Nhận tín hiệu từ vi điều khiển PIC16F877A
- Có chức năng hiển thị giờ-phút-giây và ngày-tháng-năm và nhiệt độ lên LED 7
thanh.
Khối nguồn:
Có chức năng cung cấp nguồn cho toàn mạch điện.
2.2. Sơ đồ toàn mạch.
2.2.1. Sơ đồ


23


Hình 2.2: Sơ đồ toàn mạch

24


2.2.2 . Phân tích nguyên lý hoạt động của toàn mạch.
Khối nguồn 5VDC cung cấp điện cho toàn mạch
IC DS1307 thời gian thực (được nuôi bằng pin 3v khi không có điện cung
cấp) và được đưa tín hiệu đến khối điều khiển. PIC16F877A nhận tín hiệu, xử lý và
đưa tới khối hiển thị. Tại khối hiển thị thời gian hiện tại giờ- phút và ngày- thángnăm dương lịch và âm lịch. Có thể điều chỉnh các giá trị trên thông qua khối cài
đặt.
DS18B20 cảm biến nhiệt độ dữ liệu chân 2- DQ đưa vào chân RC0 của
PIC16F877A nhận tín hiệu đưa tới khối hiển thị để hiển thị nhiệt độ.
Tạo dao động : gồm thạch anh 20MHz và 2 tụ đất 33pF.
Khối hiển thị gồm các led 7 thanh, hàng thứ nhất hiển thị giờ- phút, hàng thứ
2 ngày- tháng- năm dương lịch, hàng thứ 3 hiển thị ngày- tháng âm lịch và thứ,
hàng cuối cùng hiển thị nhiệt độ.
2.2 . Sơ đồ chi tiết các khối.

2.3.1. Khối nguồn.

Hình 2.3: Nguồn cung cấp cho mạch
Dùng nguồn adapter
Dải điện áp vào: AC 100-240V 50- 60Hz
Điện áp ra max: 5VDC- 1000mA
Made in China


25


×