
Đề tài : đồng hồ thời gian thực dùng DS 1307
http://machdientu.net Page 1
Môn vi xử lý
Đề tài : đồng hồ thời gian thực dùng DS 1307
I, Chức năng của mạch điện:
- Hiển thị : giờ ,phút,giây, ngày , tháng,năm,thứ trong tuần
- giao tiếp với 4 phím : status-mode-increase-decrease. Phím status dùng để chuyển chế độ từ hiển thị
giờ ,phút ,giây,thứ sang ngày ,tháng, năm. Phím mode dùng để điều chỉnh ngày, tháng, năm và giờ
,phút ,giây,thứ
II, Mô tả mạch:
-Mạch sử dụng IC thời gian thực DS 1307 giao tiếp I2C với Pic.
Pic16F877A
- Dùng 8 led 7 thanh loại 4 led/1 con.
- Dùng 8 Tranzito để điều khiển việc đóng ngắt các led.
- Vi điều khiển được dùng là PIC 16F877A
- Dùng thạch anh 20MHz để tạo dao động cho PIC.
- Dùng một mạch tiny Bootloaderđể kết nối giữa pic và máy tính , nạp chương trình trực tiếp từ
máy tính vào PIC mà không cần thông qua mạch nạp cho PIC.
III/ Cơ bản về tiny bootloader:
Đây là bootloader cho các vi điều khiển Microchip PIC
* Nó là bootloader có kích thước nhỏ nhất, ít hơn 100 word bộ nhớ chương trình
* Nó là bootloader duy nhất hỗ trợ tất cả các dòng PIC: 16F, 18F, dsPIC (những dòng
có hỗ trợ chế độ self-programming - tự nạp lại).

Đề tài : đồng hồ thời gian thực dùng DS 1307
http://machdientu.net Page 2
Đặc điểm của firmware:
* Kích thước chỉ có khoảng 100word (cho tất cả các dòng 16F, 18F, dsPIC, thực ra là nó ít hơn
100 word);
* Có thể ghi vào flash, eeprom, và có thể ghi vào các bytes cài đăt (configuration bytes) của
dòng 18F
* Khi reset, đợi 1 giây để nhận chương trình nạp, nếu không nhận được thì chuyển qua chạy
chương trình
* File .asm của bootloader rất dễ để chỉnh sửa lại,cho phù hợp với từng chip, tốc độ truyền
nhận.
Đặc điểm của phần mềm trên máy tính
* Có thể tải chương trình vào flash (trong phiên bản này của bootloader, cho phép cài đặt các
byte cài đặt (configuration bytes) và có thể thay đổi dễ dàng theo từng loại PIC)
* Làm việc với tất cả các dòng PIC đã nêu trên; tự động nhận ra nội dung file HEX và dòng PIC
* Ghi nhớ cài đặt cuối (thuận tiện cho người dùng khi thao tác với một loại PIC)
* Trong trường hợp lỗi, nó sẽ truyền một tín hiệu ngược lại cho máy tính để tái đồng bộ giữa
máy tính và PIC;
* Chế độ giao tiếp có thể được thay đổi, có thể dùng bất kỳ cổng COM nào với tốc độ baud nào
Khái niệm chung về bootloader Một bootloader là một chương trình nằm trong vi điều khiển, và
giao tiếp với máy tính (thông qua giao tiếp nối tiếp). Bootloader nhận một chương trình (đã được
dịch ra thành file HEX) từ máy tính và ghi nó vào bộ nhớ flash của vi điều khiển thông qua một
phần mềm trên máy tính, sau đó chạy chương trình đó trên vi điều khiển. Bootloader chỉ có thể
được dùng với những vi điều khiển nào cho phép ghi vào bộ nhớ flash thông qua phần mềm trên
máy tính. Bản thân bootloader phải được ghi vào trong bộ nhớ flash bằng một mạch nạp khác. Để
bootloader hoạt động, sau khi nhấn reset, một lệnh "goto bootloader" phải nằm ở địa chỉ đầu tiên
của chương trình vi điều khiển. Có 2 loại bootloader, một số loại đôi khi cần người dùng đặt lại địa
chỉ các dòng lệnh đầu, một số khác thì tự bản thân nó đặt những dòng lệnh đầu của người dùng vào
một địa chỉ khác khi mà bootloader đã nằm sẵn ở đó, và quay trở lại chương trình của người dùng
khi kết thúc đoạn chương trình bootloader.
Trong trường hợp này, tiny bootloader tự động đem các vị trí đầu của chương trình người viết, và
đặt ở phía dưới cùng với chương trình bootloader (thực ra đoạn chương trình này chỉ tối đa có 4
dòng lệnh). địa chỉ 0x0004 đã là địa chỉ bắt đầu ngắt. Chính vì vậy, nếu lập trình từ vị trí 0x0000
thì cũng chỉ viết được tối đa 4 dòng lệnh, sau đó phải nhảy đến chương trình chính. Như vậy, tiny
bootloader sẽ thực hiện thao tác, cắt 4 dòng đầu tiên từ 0x0000 đến 0x0003 , thay bằng dòng lệnh
GOTO BOOTLOADER. Và nó tự động đặt 4 dòng lệnh nằm ngay phía trên chương trình
bootloader .Sau đó, chạy chương trình tinybootloader phía bên dưới. Rồi nó quay lên chạy 4 dòng
lệnh . Kết thúc 4 dòng này, nó lại trở về vị trí chương trình chạy bình thường ở bên trên. . phiên
bản mới nhất của tiny bootloader cho phép reset trên máy tính, không cần phải bấm reset
nữa.
Đây là m ột loại t iny boot loader : m ax232

Đề tài : đồng hồ thời gian thực dùng DS 1307
http://machdientu.net Page 3
IV/ Cơ chế hoạt động và chức năng của DS1307:
Vcc: nối với nguồn
X1,X2: nối với thạch anh 32,768 kHz
Vbat: đầu vào pin 3V
GND: đất
SDA: chuỗi data
SCL: dãy xung clock
SQW/OUT: xung vuông/đầu ra driver
· DS1307 là một IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhật thời gian và
ngày tháng với 56 bytes SRAM. Địa chỉ và dữliệu được truyền nối tiếp qua 2 đường bus
2 chiều. Nó cung cấp thông tin về giờ,phút,giây ,thứ,ngày ,tháng, năm.Ngày cuối tháng
sẽ tự động được điều chỉnh với các tháng nhỏ hơn 31 ngày,bao gồm cả việc tự động nhảy
năm. Đồng hồ có thể hoạt động ở dạng 24h hoặc 12h với chỉ thị AM/PM. DS1307 có

Đề tài : đồng hồ thời gian thực dùng DS 1307
http://machdientu.net Page 4
một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động đóng ngắt với nguồn
pin cung cấp.
· DS 1307 hoạt động với vai trò slave trên đường bus nối tiếp. Việc truy cập được thi hành
với chỉ thị START và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi.
Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP được thực thi.
Sơ đồ khối của DS1307:
Mô tả hoạt động của các chân:
· Vcc,GND: nguồn một chiều được cung cấp tới các chân này. Vcc là đầu vào 5V. Khi 5
V được cung cấp thì thiết bị có thể truy cập hoàn chỉnh và dữ liệu có thể đọc và viết.
Khi pin 3 V được nối tới thiết bị này và Vcc nhỏ hơn 1,25Vbat thì quá trình đọc và viết
không được thực thi,tuy nhiên chức năng timekeeping không bị ảnh hưởng bởi điện áp
vào thấp. Khi Vcc nhỏ hơn Vbat thì RAM và timekeeper sẽ được ngắt tới nguồn cung
cấp trong (thường là nguồn 1 chiều 3V)
· Vbat: Đầu vào pin cho bất kỳ một chuẩn pin 3V . Điện áp pin phải được giữ trong
khoảng từ 2,5 đến 3V để đảm bảo cho sự hoạt động của thiết bị.
· SCL(serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữ liệu trên đường
dây nối tiếp.
· SDA(serial data input/out): là chân vào ra cho 2 đường dây nối tiếp. Chân SDA thiết kế
theo kiểu cực máng hở , đòi hỏi phải có một điện trở kéo trong khi hoạt động.
· SQW/OUT(square wave/output driver)- khi được kích hoạt thì bit SQWE được thiết lập
1, chân SQW/OUT phát đi 1 trong 4 tần số (1Hz,4kHz,8kHz,32kHz). Chân này cũng
được thiết kế theo kiểu cực máng hở vì vậy nó cũng cần có một điện trở kéo trong. Chân
này sẽ hoạt động khi cả Vcc và Vbat được cấp.

Đề tài : đồng hồ thời gian thực dùng DS 1307
http://machdientu.net Page 5
· X1,X2: được nối với một thạch anh tần số 32,768kHz.Là một mạch tạo dao động ngoài ,
để hoạt động ổn định thì phải nối thêm 2 tụ 33pF
· Cũng có DS1307 với bộ tạo dao động trong tần số 32,768kHz, với cấu hình này thì chân
X1 sẽ được nối vào tín hiệu dao động trong còn chân X2 thì để hở.
1, Sơ đồ địa chỉ RAM và RTC:
00h
07h
08h
3Fh
· Thông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các byte thanh ghi thích
hợp. thời gian và ngày tháng được thiết lập cũng thông qua các byte thanh ghi này bằng
cách viết vào đó những giá trị thích hợp. nội dung của các thanh ghi dưới dạng mã
BCD(binary coded decreaseimal). Bit 7 của thanh ghi seconds là bit clock halt(CH),khi bit
này được thiết lập 1 thì dao động disable,khi nó được xoá về 0 thì dao động được enable.
Chú ý là phải enable dao động trong suốt quá trình cấu hình thiết lập (CH=0). Thanh ghi
thời gian thựuc được mô tả như sau:
Seconds
Minutes
Hours
Day
Date
Month
Year
Control
Ram 58x8

