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

Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD

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 (424.68 KB, 25 trang )

CHƯƠNG 1 :
TỔNG QUAN VỀ NỘI DUNG ĐỀ TÀI
1.1. Đặt

vấn đề
Cùng với sự phát triển của khoa học và công nghệ , các thiết bị điện tử đã ,
đang và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong
hầu hết các lĩnh vực khoa học kĩ thuật cũng như đời sống xã hội.
Việc gia công, xử lý các tín hiệu điện tử hiện đại đều dựa trên cơ sở nguyên
lý số . Vì các thiết bị làm việc trên cơ sở nguyên lý số có ưu điểm hơn hẳn so với
các thiết bị làm việc dựa trên cơ sở nguyên lý tương tự , đặc biệt là trong kĩ thuật
tính toán.
Sự phát triển mạnh mẽ của công nghệ điện tử đã cho ra đời nhiều vi mạch số
cỡ lớn với giá thành rẻ và khả năng lập trình cao đã mang lại những thay đổi lớn
trong ngành điện tử. Mạch số ở những mức độ khác nhau đang thâm nhập trong
các lĩnh vực điện tử thông dụng và chuyên nghiệp một cách nhanh chóng. Các
trường kĩ thuật là nơi mạch số thâm nhập mạnh mẽ và được học sinh , sinh viên
ưa chuộng do lợi ích và tính khả thi của nó. Vì thế sự hiểu biết sâu sắc về kĩ thuật
số là không thể thiếu với sinh viên ngành điện tử hiện nay. Nhu cầu hiểu biết kĩ về
kĩ thuật số không chỉ riêng đối với những người theo chuyên ngành điện tử mà
còn đối với những cán bộ kĩ thuật khác có sử dụng thiết bị điện tử.

1.2. Khảo

sát vấn đề

Hiện nay những ứng dụng của phần cứng được sử dụng ngày càng nhiều và
phổ biến , đảo qua các con phố chúng ta có thể thấy những bảng quảng cáo có sử
dụng đèn led hoặc sử dụng vi xử lý để hiển thị thời gian hay nhiệt độ . Chúng
trông khá đẹp mắt và tiện lợi. Trong đồ dung gia đình cũng có rất nhiều đồ điện tử
mang tính năng tự động như : tivi , máy vi tính …


Đề tài chúng em chọn xuất phát từ ý tưởng sử dụng IC DS1307 thời gian
thực, cùng với việc mọi người phải biết chính xác ngày , giờ để thu xếp việc làm
cho hợp lý . Với ý tưởng này chúng em đã kết hợp lý thuyết và thực tế để làm đồ
án “ Thiết kế lịch vạn niên điện tử hiển thị trên LCD” .


1.3. Các

vấn đề cần giải quyết của bài toán

Bài toán “Thiết kế lịch vạn niên điện tử hiển thị trên LCD” đặt ra các yêu cầu
sau :
- Đảm bảo hiển thị đúng thời gian ngày tháng năm, giờ phút giây.
- Có khả năng phát triển và mở rộng vào các ứng dụng khác trong thực tế.
- Có độ bền cao , hệ thống chạy ổn định .
- Lập trình thời gian thực cho AT 89S52 rồi từ đó áp dụng cho ứng dụng.
- Mạch có hiển thị nhiệt độ.
1.4. Giải

pháp
Giải pháp đưa ra để đáp ứng yêu cầu bài toán :
- Sử dụng Vi điều khiển AT 89S52.
- Sử dụng chip thời gian thực DS1307.
- Xây dụng chương trình phần mềm điều khiển.
- Lập trình cho nút bấm để tăng giảm giờ phút.
- Sử dụng cảm biến nhiệt để đo nhiệt độ.

1.5. Mục

-


đích đề tài
Sự cần thiết, quan trọng cũng nhưu tính khả thi và lợi ích của mạch số cũng
chính là lý do để chúng em chọn và thực hiện đồ án Thiết kế lịch vạn niên điện tử
hiển thị trên LCD” nhằm ứng dụng kiến thức dã học vào thực tế.
Sử dụng một con IC thời gian thực DS1307 kết hợp với vi điều khiển 89S52 ,
89S52 có nhiệm vụ đọc/ghi ( giờ, phút, giây, ngày, tháng, năm…..) từ chip
DS1307 . Hiển thị ngày tháng năm, giờ phút giây , nhiệt độ trên LCD.
Mục đích của yêu cầu đề tài như sau :
Mạch hiển thị ngày ,tháng ,năm ,thứ ,giờ ,phút ,giây chính xác trên LCD.
Khi thời gian báo thức trùng với thời gian thực thì loa sẽ phát ra âm thanh.
Mạch có sử dụng đo nhiệt độ hiển thị LCD.

Chương ll:
GIỚI THIỆU MỘT SỐ IC ĐƯỢC SỬ DỤNG TRONG MẠCH
2.1. Giới thiệu về PIC:


2.1.1. Tổng quan về họ vi điều khiển:
Dòng PIC đầu tiên là PIC1650 được phát triển Microelectronics Division
thuộc General_Instrument. PIC bắt nguồn từ chữ viết tắc 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 Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650.
Lúc này, PIC 1650 được Pic là một ho vi điều khiển RISC được sản xuất bởi
công ty Mirochip Technology dùng để giao tiếp với các thiết bị ngoại vi cho các
máy chủ 15 bit CP1600, vì vậy, người ta cũng gọi PIC “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ậ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ật 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). Năm 1985 General
Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu hũy bỏ hầu hết các dự
án lúc đó quá lỗi thời. Tuy nhiên, PIC được bổ xung EPROM để tạo thành một
bộ điều khiển vào ra khả trình. Ngày nay rất nhiều dòng PIC được sản xuất với
hàng loạt các module ngoại vi tích hợp sẵn (như USART,PWM,ADC….), với
bộ nhớ chương trình từ 512 Word đến 32k Word.
2.1.1.1.Một số đặc tính của Vi điều khiển 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 sau:


8/16 bit CPU, xây dựng theo kiến trúc Harward có sữa đổi.



Flsah và ROM có thể tùy chọn từ 256 byte đến 256 Kbyte.



Các cổng xuất/nhập (I/O) mức logic thường từ 0V đến 5.5V, ứng với
logic 0 và 1.



8/16 bit timer.



Các chuẩn giao tiếp nối tiếp đồng bộ, khung đồng bộ USART.




Bộ chuyển đổi ADC Analog_to_digital converters, 10/12 bit.




Bộ so sánh điện áp.



Các module Capture/Campare/PWM.



LCD.



MSSP Peripheral dựng cho các giao tiếp IC2,SPI.



Bộ nhớ nội EPROM-có thể ghi/xóa lên tới một triệu lần.



Moudle điều khiển động cơ,đọc encoder.




Hỗ trợ giao tiếp USB.



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 7675bộ RF (PIC16f639,và RFPIC).



KEELOQ mã hóa và giải mã.



DSP những tính năng xử lý tín hiệu số (dsPIC) đặc điểm thực thi tốc độ
cao của RISC CPU của họ vi điều khiển PIC16F87XA.




Chỉ gồm 35 lệnh đơn.



Tất cả các lệnh là một chu kỳ ngoại trừ chương trình con là hai chu kỳ.



Tốc độ hoạt động:



DC_20MHz ngõ vào xung clock.



DC_200ns chu kỳ lệnh.
2.1.1.2. Những đặc tính ngoại vi:





Timer0 : 8_bit định thời/đếm với 8_bit, prescaler.
Timer1 : 16_bit định thời/đếm với prescaler, có thể được tăng lên trong
suốt chế độ Sleep qua thạch anh/xung clock bên ngoài.




Timer2 : 8_bit định thời/đếm với 8_bit, prescaler, postscaler.



Hai module Capture, Compare,PWM:



Capture có độ rộng 16 bit, độ phân giải 12,5ns.



Compare có độ rộng 16 bit, độ phân giải 200ns.



Độ phân giải lớn nhất của PWM là 10bit.



Có 13 ngõ I/O có thể điều khiển trực tiếp.



Dòng vào và ra lớn:



25mA dòng vào cho mỗi chân.




20mA dòng ra cho mõi chân.
2.1.1.3. Đặc điểm về tương tự:
10 bit, với 8 kênh của bộ chuyển đổi tương tự sang số (A/D).
Brown_out Reset(BOR).
Module so sánh về tương tự:



Hai bộ so sánh tương tự.



Module điện áp chuẩn VREF có thể lập trình trên PIC.

Có thể lập trình ngõ vào đến từ những ngõ vào của PIC và trên điện áp bên
trong.
Những ngõ ra của bộ so sánh có thể sử dụng cho bên ngoài.
2.1.1.4. Các đặc điểm đặc biệt của vi điều khiển Pic:




Có thề ghi/xóa tới 100.000 lần với kiểu bộ nhớ chương trình Enhanced
Flash.



1000.000 lần ghi/xóa với kiểu bộ nhớ EPROM.




EPROM có thể lưu trữ dữ liệu hơn 40 năm.



Có thể lập trình lại dưới sự điều khiển của phần mềm.



Mạch lập trình nối tiếp qua hai chân.



Nguồn đơn 5V cấp cho mạch lập trình nối tiếp.



Watchdog Timer (WDT) với bộ dao dộng RC tích hợp sẵn trên Chip cho
hoạt động đáng tin cậy.



Có thể lập trình màng bảo vệ.



Tiết kiệm năng lượng với chế độ Sleep.




Có thể lựa chọn bộ dao động.

2.1.2 . Giới thiệu về PIC16F8XX và PIC16F877A:
PIC16F8XX lò nhóm PIC trong họ PIC16FXX của họ vi điều khiển 8_bit,
tiêu tốn năng lượng thấp, đáp ứng nhanh, chế tạo theo công nghệ CMOS,
chống tĩnh điện tuyệt đối. Bao gồm các nhóm sau:
o

PIC16F83

o

PIC16CR83

o

PIC16F84

o

PIC16CR84


Tất cả các PIC16/17 điều có cấu trúc RICS. PIC16CXX các đặc tính nổi
bậc, 8 mắc ngăn xếp tack, nhiều nguồn ngắt tích hợp bên trong lẫn bên
ngoài. Có cấu trúc Haward với các bus dữ liệu và bus thực thi chương trình
riêng biệt nhau cho phép độ dài một lệnh là 14_bit và bus dữ liệu 8_bit cách
biệt nhau. Tất cả các lệnh điều mất một chu kỳ lệnh, ngoại trừ các lệnh rẽ

nhánh chương trình mất hai chu kỳ lệnh. Chỉ có 35 lệnh và một lượng lớn
các thanh ghi cho phép đáp ứng cao trong ứng dụng.
Họ PIC16F8XX có nhiều tính năng đặc biệt làm giảm các thiết bị ngoại
vi, vì vậy kinh tế cao, có hệ thống nổi bật đáng tin cậy và sự tiêu thụ năng
lượng thấp. Ở dây có bốn sự lựa chọn bộ dao động và chỉ có chân kết nối bộ
dao dộng RC nên có giải pháp tiết kiệm cao. Chế độ SLEEP tiết kiệm nguồn
và có thể được đánh thức bởi các nguồn reset. Và còn nhiều phần khác đó
được giới thiệu bên trên sẽ được nói ở các phần kế tiếp.
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng,
40 chân, bộ nhớ đủ cho hầu hết các ứng dụng thông thường). Cấu trúc tổng
quát của PIC16F877A như sau:


8 K Flash ROM.



368 Bytes RAM.



256 Bytes EEPROM.



5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập.



2 bộ định thời 8 bits (Timer 0 và Timer 2).




Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiết kiệm
năng lượng (SLEEP MODE) với nguồn xung Clock ngoài.



2 bô CCP( Capture / Compare/ PWM).



1 bộ biến đổi AD 10 bits, 8 ngõ vào.



2 bộ so sánh tương tự (Compartor).




1 bộ định thời giám sát (WatchDog Timer).



Một cổng song song 8 bits với các tín hiệu điều khiển.



Một cổng nối tiếp.




15 nguồn ngắt.



Có chế độ tiết kiệm năng lượng.



Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial
Programming)



Được chế tạo bằng công nghệ CMOS



35 tập lệnh có độ dài 14 bits.



Tần số hoạt động tối đa 20MHz.
2.1.2.1. Các đặc tính ngoại vi bao gồm :





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.



Hai bộ Capture/so sánh/điều chế độ rộng xung.



Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.



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ộ nhớ flash với khả năng ghi xóa được 100.000 lần.



Cổng 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.



Có thể hoạt động với nhiều dạng Oscillator khác nhau.
2.1.2.2. Sơ lược về vi điều khiển PIC 16F877A:
-


Sơ đồ chân :

Hình 2.1 Sơ đồ khối PIC 16F877A


Nhận xét:
Từ sơ đồ chân và sơ đồ nguyên lý, ta rút ra các nhận xét ban đầu như sau
o
o

PIC16F877A có tất cả 40 chân
40 chân trê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à một chân dùng để RESET vi điều khiển.

o

5 port của PIC16F877A bao gồm :



PORTB : 8 chân



PORTD : 8 chân



PORTA : 6 chân




PORT E : 3 chân



PORT C : 8 chân

Mỗi chân của vi điều khiển PIC 16F877A có một chức năng khác nhau.
Trong đó có một số chân đa công dụng: mỗi chân có thể hoạt động như một
đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với các
thiết bị ngoại vi.
2.1.2.3. Cấu trúc phần cứng của PIC 16F877A:
PIC là tên viết tắt của “ Programmable Intelligent computer” do hãng
General Instrument đặt tên cho con 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 hàng đã tạo ra gần 100
loại sản phẩm khác nhau.
PIC16F887A 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ản về họ vi điều khiển PIC của
mình.


Cấu trúc tổng quát của PIC16F877A như sau :


o

8K Flash Rom


o

368 bytes Ram

o

256 bytes EFPROM

o

5 port vào ra với tín hiệu điều khiển độc lập

o

2 bộ định thời Timer0 và Timer2 8 bit

o

1 bộ định thời Timer1 16 bit có thể hoạt động ở cả chế độ tiết kiệm
năng lượng với nguồn xung clock ngoài

o

2 bộ Capture/ Compare/ PWM

o

1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào


o

2 bộ so sánh tương tự

o

1 bộ định thời giám sát (Watch Dog Timer)

o

1 cổng song song 8 bit với các tín hiệu điều khiển

o

1 cổng nối tiếp

o

15 nguồn ngắt

2.1.2.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).

2.1.2.4.1. 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 8K word (1 word chứa 14bit) và được phân thành nhiều trang như hình
dưới.



Hình 2.2 Bộ nhớ chương trình PIC 16F877A
Để mã hóa được địa chỉ 8K word bộ nhớ chương trình, thanh ghi đếm
chương trình PC có dung lượng 13 bit.
Khi vi điều khiển reset, bộ đếm chương trình sẽ trỏ về địa chỉ 0000h. Khi
có ngắt xảy ra thì thanh ghi PC sẽ trỏ đến địa chỉ 0004h.
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.
2.1.2.4.2. Bộ nhớ dữ liệu:
Bộ nhớ dữ liệu của PIC l bộ nhớ EEPROM được chia ra làm nhiều bank.
Bộ nhớ dữ liệu của PIC16F877A được chia thành 4 bank. Mỗi bank có
dụng lượng 128 byte.


Nếu như 2 bank bộ nhớ dữ liệu của 8051 phân chia riêng biệt : 128 byte
đầu tiên thuộc bank1 là vùng Ram nội chỉ để chứa dữ liệu, 128 byte còn lại
thuộc bank 2 là cùng các thanh ghi có chức năng đặc biệt SFR mà người dùng
không được chứa dữ liệu khác trong đây thì 4 bank bộ nhớ dữ liệu của
PIC16F877A được tổ chức theo cách khác.
Mỗi bank của bộ nhớ dữ liệu PIC16F877A bao gồm cả các thanh ghi có
chức năng đặc biệt SFR nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục
đích dùng chung GPR nằm ở vùng địa chỉ còn lại của mỗi bank thanh ghi. Vùng
ô nhớ các thanh ghi mục đích dùng chung này chính là nơi người dùng sẽ lưu dữ
liệu trong quá trình viết chương trình. Tất cả các biến dữ liệu nên được khai báo
chứa trong vùng địa chỉ này.
Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào
mà thường xuyên được sử dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả
các bank để thuận tiện trong việc truy xuất. Sở dĩ như vậy là vì, để truy xuất một
thanh ghi nào đó trong bộ nhớ của 16F877A ta cần phải khai báo đúng bank
chứa thanh ghi đó, việc đặt các thanh ghi sử dụng thường xuyên giúp ta thuận
tiện hơn rất nhiều trong quá trình truy xuất, làm giảm lệnh chương trình.



Hinh 2. 3 : Bộ nhớ dữ liệu PIC16F877A


Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét
như sau :
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi dùng
chung để chứa dữ liệu của người dùng địa chỉ từ 20h đến 7Fh. Các thanh ghi
PORTA, PORTB, PORTC, PORTD, PORTE đều chứa ở bank0, do đó để truy
xuất dữ liệu các thanh ghi này ta phải chuyển đến bank0. Ngoài ra một vài các
thanh ghi thông dụng khác ( sẽ giới thiệu sau) cũng chứa ở bank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh. Các thanh ghi dùng
chung có địa chỉ từ A0h đến Efh. Các thanh ghi TRISA, TRISB, TRISC,
TRISD, TRISE cũng được chứa ở bank1
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên sơ
đồ trên.Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có
mặt trên cả 4 bank. Một điều quan trọng cần nhắc lại trong việc truy xuất dữ liệu
của PIC16F877A là : phải khai báo đúng bank chứa thanh ghi đó. Nếu thanh ghi
nào mà 4 bank đều chứa thì không cần phải chuyển bank.
2.1.3 Khái quát chức năng các Port trong vi điều khiển PIC 16F877A:
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để
tương tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua quá
trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy
theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và
số lượng chân trong mỗi cổng có thể khác nhau. Bên cạnh đó, do vi điều khiển
được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức
năng là cổng xuất nhập thông thường, một số chân xuất nhập còn có thêm các
chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối

với thế giới bên ngoài. Chức năng của từng chân xuất nhập trong mỗi cổng hoàn
toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên
quan đến chân xuất.Vi điều khiển PIC16F877A có 5 cổng xuất nhập,
gồm PORTA, PORTB, PORTC, PORTDvà PORTE.


2.2. Chip DS1307
Chip 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 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 ngõ 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 2.4 :

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

Các chân của DS1307 được mô tả như sau:
- X1 và X2: là 2 ngõ 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 VBAT được cấp thì
DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được).
- SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output Driver), tần
số của xung được tạo có thể được 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.
Cấu tạo bên trong DS1307 bao gồm một số thành phần như mạch nguồn,
mạch dao động, mạch điều khiển logic, mạch giao điện I2C, con trỏ địa chỉ và các
thanh ghi (hay RAM). Do đa số các thành phần bên trong DS1307 là thành phần
“cứng” nên chúng ta không có quá nhiều việc khi sử dụng DS1307. Sử dụng
DS1307 chủ yếu là ghi và đọc các thanh ghi của chip này. Vì thế cần hiểu rõ 2 vấn
đề cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh ghi này thông
qua giao diện I2C. Phần này chúng ta tìm hiểu cấu trúc các thanh ghi trước và cách
truy xuất chúng sẽ tìm hiểu trong phần 2, điều khiển DS1307 bằng AVR.
Như tôi đã trình bày, bộ nhớ DS1307 có tất cả 64 thanh ghi 8-bit được đánh
địa chỉ từ 0 đến 63 (từ 0x00 đến 0x3F theo hệ hexadecimal). Tuy nhiên, thực chất
chỉ có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ” (tôi sẽ gọi là RTC) còn lại
56 thanh ghi bỏ trông có thể được dùng chứa biến tạm như RAM nếu muốn. Bảy
thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm: giây
(SECONDS), phút (MINUETS), giờ (HOURS), thứ (DAY), ngày (DATE), tháng
(MONTH) và năm (YEAR). Việc ghi giá trị vào 7 thanh ghi này tương đương với
việc “cài đặt” thời gian khởi động cho RTC. Việc đọc giá từ 7 thanh ghi là đọc thời
gian thực mà chip tạo ra. Ví dụ, lúc khởi động chương trình, chúng ta ghi vào
thanh ghi “giây” giá trị 42, sau đó 12s chúng ta đọc thanh ghi này, chúng ta thu
được giá trị 54. Thanh ghi thứ 8 (CONTROL) là thanh ghi điều khiển xung ngõ ra
SQW/OUT (chân 6). Do chúng ta không dùng chân SQW/OUT nên có thề bỏ qua
thanh ghi thứ 8.Tổ chức bộ nhớ của DS1307 được trình bày trong hình 2.5


Hình 2.5. Tổ chức bộ nhớ của DS1307.


Vì 7 thanh ghi đầu tiên là quan trọng nhất trong hoạt động của DS1307,
chúng ta sẽ khảo sát các thanh ghi này một cách chi tiết.
Thanh ghi giây (SECONDS): thanh ghi này là thanh ghi đầu tiên trong bộ
nhớ của DS1307, địa chỉ của nó là 0x00. Bốn bit thấp của thanh ghi này chứa mã
BCD 4-bit của chữ số hàng đơn vị của giá trị giây. Do giá trị cao nhất của chữ số
hàng chục là 5 (không có giây 60 !) nên chỉ cần 3 bit (các bit SECONDS6:4) là có
thể mã hóa được (số 5 =101, 3 bit). Bit cao nhất, bit 7, trong thanh ghi này là 1
điều khiển có tên CH (Clock halt – treo đồng hồ), nếu bit này được set bằng 1 bộ
dao động trong chip bị vô hiệu hóa, đồng hồ không hoạt động. Vì vậy, nhất thiết
phải reset bit này xuống 0 ngay từ đầu.
Thanh ghi phút (MINUTES): có địa chỉ 0x01, chứa giá trị phút của đồng hồ.
Tương tự thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này được dùng lưu mã
BCD của phút, bit 7 luôn luôn bằng 0.
Thanh ghi giờ (HOURS): có thể nói đây là thanh ghi phức tạp nhất trong
DS1307. Thanh ghi này có địa chỉ 0x02. Trước hết 4-bits thấp của thanh ghi này
được dùng cho chữ số hàng đơn vị của giờ. Do DS1307 hỗ trợ 2 loại hệ thống hiển
thị giờ (gọi là mode) là 12h (1h đến 12h) và 24h (1h đến 24h) giờ, bit6
(màu green trong hình 4) xác lập hệ thống giờ. Nếu bit6=0 thì hệ thống 24h được
chọn, khi đó 2 bit cao 5 và 4 dùng mã hóa chữ số hàng chục của giá trị giờ. Do giá
trị lớn nhất của chữ số hàng chục trong trường hợp này là 2 (=10, nhị phân) nên 2
bit 5 và 4 là đủ để mã hóa. Nếu bit6=1 thì hệ thống 12h được chọn, với trường hợp
này chỉ có bit 4 dùng mã hóa chữ số hàng chục của giờ, bit 5 (màu orangetrong
hình 4) chỉ buổi trong ngày, AM hoặc PM. Bit5 =0 là AM và bit5=1 là PM. Bit 7
luôn bằng 0. (thiết kế này hơi dở, nếu dời hẳn 2 bit mode và A-P sang 2 bit 7 và 6
thì sẽ đơn giản hơn).
Thanh ghi thứ (DAY – ngày trong tuần): nằm ở địa chĩ 0x03. Thanh ghi
DAY chỉ mang giá trị từ 1 đến 7 tương ứng từ Chủ nhật đến thứ 7 trong 1 tuần. Vì
thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa.
Các thanh ghi còn lại có cấu trúc tương tự, DATE chứa ngày trong tháng (1
đến 31), MONTH chứa tháng (1 đến 12) và YEAR chứa năm (00 đến 99). Chú ý,

DS1307 chỉ dùng cho 100 năm, nên giá trị năm chỉ có 2 chữ số, phần đầu của năm


do người dùng tự thêm vào (ví dụ 20xx).
Ngoài các thanh ghi trong bộ nhớ, DS1307 còn có một thanh ghi khác nằm
riêng gọi là con trỏ địa chỉ hay thanh ghi địa chỉ (Address Register). Giá trị của
thanh ghi này là địa chỉ của thanh ghi trong bộ nhớ mà người dùng muốn truy cập.
Giá trị của thanh ghi địa chỉ (tức địa chỉ của bộ nhớ) được set trong lệnh Write mà
chúng ta sẽ khảo sát trong phần tiếp theo, AVR và DS1307. Thanh ghi địa chỉ
được tôi tô đỏ trong hình 2.6, cấu trúc DS1307.

Hình 2.6. Cấu trúc DS1307.


2.3.

Giới thiệu về cảm biến nhiệt độ LM 35 DZ

Hình 2.7 : Sơ đồ chân của cảm biến nhiệt độ LM 35

LM35 là cảm biến nhiệt độ analog ,nhiệt độ được xác định bằng cách đo hiệu
điện thế ngõ ra của LM 35


Đơn vị nhiệt độ : 0C



Có mức điện áp thay đổi trực tiếp theo 0C ( 10 mV/0C)




Có hiệu năng cao,công suất tiêu thụ là 60 uA



Sản phẩm không cần phải căn chỉnh nhiệt đội khi sử dụng



Độ chính xác thực tế : 1/4 0C ở nhiệt độ phòng và ¾ 0C ở ngoài khoảng -55
0
C tới 150 0C



Chân + Vs (1) là chân cung cấp điện áp cho LM 35DZ hoạt động từ 4 – 20 V




Chân Vout ( 2) là chân điện áp đầu ra LM35 được đưa vào chân Analog của
các bộ ADC



Chân GND là chân nối mass: Chân này này tránh hỏng cảm biến cũng như
làm giảm sai số quá trình đo.

2.4. Giới thiệu về LCD 16TC2A

• LCD (Liquid Crytal Direct) TC16C2 là màn hình hiển thị thể lỏng gồm có:
+ LCD
+Bộ Driver (Mạch điều khiển )
Màn hình LCD và bộ Driver đã được thiết kế tích hợp sẵn với nhau bởi
nhà sản xuất,khi sử dụng chỉ cần giao tiếp với bộ Driver qua các chân. LCD
TC16C2. Là loại màn hình hiển thị được 16 kí tự x2 dòng, bao gồm tất cả
các kí tự chuẩn và một số kí tự đặc biệt nhưng không có kí tự có dấu tiếng
Việt.
2.4.1: Sơ đồ chân của LCD 16TC2A:

Hình 2.7: Sơ đồ chân của LCD 16TC2A


2.4.2:Chức năng và nhiệm vụ của các chân:
STT chân

Kí hiệu

Chức năng chân

1

Vss

Chân nối đất cho LCD, khi thiết kế mạch ta nối
chân này với GND của mạch điều khiển

2

Vdd


Chân cấp nguồn cho LCD, khi thiết kế mạch ta
nối chân này với VCC=5V của mạch điều khiển

3

Vee

Lựa chọn độ tương phản của màn hình

4

RS

Chân chọn thanh ghi (Register select). Nối
chân RS với logic “0” (GND) hoặc logic “1” (VCC)
để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh
IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ
đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ
liệu DR bên trong LCD.

5

R/w

Chân chọn chế độ đọc/ghi (Read/Write). Nối
chân R/W với logic “0” để LCD hoạt động ở chế độ
ghi, hoặc nối với logic “1” để LCD ở chế độ đọc.


6

E

Chân cho phép (Enable). Sau khi các tín hiệu
được đặt lên bus DB0-DB7, các lệnh chỉ được chấp
nhận khi có 1 xung cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển
vào(chấp nhận) thanh ghi bên trong nó khi phát hiện
một xung (high-to-low transition) của tín hiệu chân
E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0DB7 khi phát hiện cạnh lên (low-to-high transition) ở


chân E và được LCD giữ ở bus đến khi nào chân E
xuống mức thấp.
7

D0

8

D1

9

D2

10


D3

11

D4

12

D5

13

D6

14

D7

15

Vdd

Nguồn dương cho đèn nền

16

Vss

GND cho đèn nền


Tám đường của bus dữ liệu dùng để trao đổi thông tin với M
chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB
DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7
là DB7

Bảng 2.1: Chức năng và nhiệm vụ của các chân
2.4.3. Giá trị điện áp:

Điện áp
vào
Dòng
cung cấp
hiện thời
Điện



Điều

hiệu

kiện

Min

Typ


Max

Vdd = +5v

4,7

5

5,3

Vdd Vdd= +3v

2,7

3

5,3

Idd

Vdd

Giá trị chuẩn

Vdd= 5V

-

Đơn


1,2

3
-

-200C

-

-

00C

4.2

4.8

5.1

vị

V

mA


áp ở
nhiệt độ
bình
thường

Điện
áp led
màn
hình
LCD

-

250C

3,8

4,2

4,6

Vo

500C

3,6

4,0

4,4

700C

-


-

-

4,2

4,6

VF

250C

-

Bảng 1.2: Bảng giá trị điện áp của màn hình LCD

V

V



×