Báo cáo: "Đồng hồ thời gian thực dùng DS 1307" - Pdf 16



Báo cáo: "Đồng hồ thời gian thực dùng DS 1307"

Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
1 Đồng hồ RTC_DS1307_ HC3T
Mục Lục
LỜI NÓI ĐẦU 3
CHƯƠNG 1 . PHÂN TÍCH BÀI TOÁN 4
1.1.Khảo sát và phân tích bài toán 4
1.2. Lựa chọn giải pháp 7
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 8
2.1. Sơ đồ tổng quát 8
2.2. Sơ đồ CallGraph 9
2.3. Sơ đồ đặc tả 9
2.4. Sơ đồ thuật toán 10
2.5.Các module trong hệ thống 12
2.6.Lựa chọn linh kiện 14
CHƯƠNG 3. xây dựngLuận Văn - Đề Án - Tiểu Luận Xây Dựng HỆ THỐNG 35
3.1.Thiết kế phần cứng 35
3.2.Thiết kế phần mềm 37
3.3.Kết quả mô phỏng 47
3.4.Mạch thi công thực tế 47
KẾT LUẬN 48
Môn vi xử lý
Đề tài : đồng hồ thời gian thực dùng DS 1307
Giáo viên hướng dẫn: ThS Hàn Huy Dũng
Nhóm thực hiện: Sinh viên lớp điện tử 2-K48
Các thành viên:
+ Lê Thị Hằng.
+ Đỗ Minh Châu.

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

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
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
5 Đồng hồ RTC_DS1307_ HC3T
đượ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.
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:
Seconds
00h
Minutes
Hours
Day
Date
Month
Year
Control
07h

1 1 32,768kHz
DS1307 hỗ trợ bus 2 dây 2 chiều và giao thức truyền dữ liệu. thiết bị gửi dữ liệu lên bus được
gọi là bộ phát và thiết bị nhận gọi là bộ thu. thiết bị điều khiển quá trình này gọi là master. thiết bị
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
7 Đồng hồ RTC_DS1307_ HC3T
nhận sự điều khiển của master gọi là slave. Các bus nhận sự điều khiển của master,là thiết bị phát
ra chuỗi xung clock(SCL),master sẽ điều khiển sự truy cập bus,tạo ra các chỉ thị START và STOP
Sự truyền nhận dữ liệu trên chuỗi bus 2 dây
Tuỳ thuộc vào bit R/ w mà 2 loại truyền dữ liệu sẽ được thực thi:
truyền dữ liệu từ master truyền và slave nhận: Master sẽ truyền byte đầu tiên là địa chỉ của 
slave. Tiếp sau đó là các byte dữ liệu . slave sẽ gửi lại bit thông báo đã nhận được (bit
acknowledge) sau mỗi byte dữ liệu nhận được. dữ liệu sẽ truyền từ bit có giá trị nhất (MSB).
truyền dữ liệu từ slave và master nhận: byte đầu tiên (địa chỉ của slave) được truyền tới slave 
bởi master. Sau đó slave sẽ gửi lại master bit acknowledge. tiếp theo đó slave sẽ gửi các byte
dữ liệu tới master. Master sẽ gửi cho slave các bit acknowledge sau mỗi byte nhận được trừ
byte cuối cùng,sau khi nhận được byte cuối cùng thì bit acknowledge sẽ không được gửi .
Master phát ra tất cả các chuỗi xung clock và các chỉ thị START và STOP. sự truyền sẽ kết thúc
với chỉ thị STOP hoặc chỉ thị quay vòng START. Khi chỉ thị START quay vòng thì sự truyền chuỗi dữ
liệu tiếp theo được thực thi và các bus vẫn chưa được giải phóng. Dữ liệu truyền luôn bắt đầu bằng bit MSB.
2, DS1307 có thể hoạt động ở 2 chế độ sau:
chế độ slave nhận( chế độ DS1307 ghi):chuỗi dữ liệu và chuỗi xung clock sẽ được nhận 
thông qua SDA và SCL. Sau mỗi byte được nhận thì 1 bit acknowledge sẽ được truyền.
các điều kiện START và STOP sẽ được nhận dạng khi bắt đầu và kết thúc một truyền 1
chuỗi. nhận dạng địa chỉ được thực hiện bởi phần cứng sau khi chấp nhận địa chỉ của slave
và bit chiều. Byte địa chỉ là byte đầu tiên nhận được sau khi điều kiện START được phát
ra từ master. Byte địa chỉ có chứa 7 bit địa chỉ của DS1307, là 1101000, tiếp theo đó là bit
chiều (R/ w) cho phép ghi khi nó bằng 0. sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ phát
đi 1 tín hiệu acknowledge lên đường SDA. Sau khi DS1307 nhận dạng được địa chỉ và bit ghi
thì master sẽ gửi một địa chỉ thanh ghi tới DS1307 , tạo ra một con trỏ thanh ghi trên DS1307 và
master sẽ truyền từng byte dữ liệu cho DS1307 sau mỗi bit acknowledge nhận được. sau đó

nhớ một cách riêng rẽ.
Bộ đếm chương trình có 13 bit vì vậy không gian địa chỉ sẽ là 8k word x 8bit. Truy cập ngoài vùng không
gian trên sẽ gây lỗi.
Bộ nhớ dữ liệu được chia thành 4 bank (Bank0÷Bank3) ,trong các bank chứa các thanh ghi thường và các
thanh ghi chức năng đặc biệt. Bank được chọn phụ thuộc vào bit RP1 và RP0 (bit thứ 6 và bit thứ 5) của
thanh ghi trạng thái status.
RP1:RP0 Bank
00 0
01 1
10 2
11 3
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
11 Đồng hồ RTC_DS1307_ HC3T
Các thanh ghi chức năng đặc biệt được CPU và bộ ngoại vi sử dụng để điều khiển các thiết bị. các thanh ghi
này hoạt động như một thanh RAM tĩnh.
Thanh ghi trạng thái chứa trạng thái số học của ALU,trạng thái Reset và các bit chọn bank ở bộ nhớ
dữ liệu.
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP RP1 RP0
TO PD
Z DC C
Bit 7 bit 0
Các cổng vào ra của pic:
Port A: có 6 bit (tương ứng với 6 chân RA0÷RA5) các chân của cổng A có tích hợp một số chức
năng ngoại vi,nếu một thiết bị ngoại vi được enable thì cổng này sẽ không hoạt động như một cổng
vào ra .
Bình thường Port A sẽ là một cổng vào ra 2 chiều. Thanh ghi xác đinh chiều tương ứng của các chân
port A là thanh ghi TrisA. Các bit ở thanh ghi TrisA bằng 1 sẽ xác định các chân ở port A là đầu vào
ngược lại sẽ là đầu ra.
Port B: rộng 8 bit(tương ứng với 8 chân RB0÷RB7),là một cổng vào ra 2 chiều. Thanh ghi qui đinh chiều

Tất cả các led chung đường tín hiệu a,…,g còn các chân điều khiển thì mắc với các khoá điện tử (8
Tranzito A1015) để điều khiển việc đóng ngắt các led.
- việc cấp nguồn cho các led dựa trên thuật quét led.
Sơ đồ thuật quét led:
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
13 Đồng hồ RTC_DS1307_ HC3T
bắt đầu quét led
khởi tạo hệ thống
gửi dữ liệu cho led 1
cấp nguồn cho led 1
trễ 1ms
ngắt nguồn led 1
gửi dữ liệu cho led 8
cấp nguồn cho led 8
trễ 1ms
ngắt nguồn led 8
VII/ khối điều khiển :
Gồm 4 phím bấm: status-mode(button1)-increase(button2)-decrease(button3)
- Phím status dùng để chọn chế độ hiển thị trên các led là hiển thị ngày ,tháng , năm hay là giờ
,phút, giây,thứ
- Phím mode dùng để chỉnh giờ,phút,giây,ngày,tháng,năm
- Phím increase để tăng giá trị
- Phím decrease để giảm giá trị
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
14 Đồng hồ RTC_DS1307_ HC3T
- Thuật toán điều khiển:
+ , thay đổi chế độ hiển thị:
S
Status=0
Đ

- sử dụng I2C tích hợp sẵn trong PIC để giao tiếp với DS1307
- sử dụng các hàm có sẵn trong CCS là:I2C_START;I2C_STOP; I2C_READ; I2C_WRITE
dùng để khởi tạo,đọc giá trị từ DS1307 sang PIC.
-
việc hiển thị thời gian là liên tục ,ta dùng 8 byte RAM để làm bộ đệm hiển thị (các biến
led1, led8), các giá trị thời gian đọc từ DS1307 sau khi đã chuyển sang BCD sẽ được lưu trong
các biến này.
- Ta sẽ đọc các giá trị thời gian từ DS1307 nhưng chỉ đọc giá trị giây, sau 1 phút ta mới cập nhật
toàn bộ thanh ghi thời gian của DS1307 và đưa ra hiển thị.
- Chương trình quét bàn phím sẽ xác định phím chức năng và gọi hàm xử lý tương ứng như:
chuyển chế độ, chỉnh giờ ,tăng,giảm giá trị…
X/ Code:
//#include <16F877A.h>
#include <led7seg.h>
#include <def_877a.h>
#use delay(clock=20000000)
#use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3)
// Cac dinh nghia
#define status rd4
#define mode rd5
#define increase rd6
#define decrease rd7
#define led1 ra0
#define led2 ra1
#define led3 ra2
#define led4 ra3
#define led5 ra4
#define led6 ra5
#define led7 re0
#define led8 re1


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status