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

Đồ án tốt nghiệp Đồng hồ thời gian thực DS1307

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 (1.04 MB, 63 trang )

ĐỒ ÁN TỐT NGHIỆP

LỜI C ẢM ƠN

Ngày nay thế giới đã bước sang kỷ nguyên mới, kỷ nguyên của ky
thuật công nghệ nói chung, ky thuật điều khiển nói riêng. Hệ thống điều khiển
khiển tự động có ứng dụng rộng rãi trong các lĩnh vực như: Ky thuật điện tử,
Viễn thông, Điều khiển tự động… Trong xu thế phát triển hiện nay mọi hoạt
động đều được tự động hóa bằng các thiết bị điện tử. Các thiết bị điện tử đang
dần thay thế mọi hoạt động của con người. Theo dòng phát triển công nghệ,
công nghệ bán dẫn đã và đang phát triển rất mạnh. Thành tựu của nó là sự ra
đơì của các mạch diều khiển bằng vi xử lý. Từ khi ra đời đến nay mạch vi xử
lý đóng góp vai trò hết sức quan trọng trong các hệ thống điều khiển .
Sau gần 2 năm học tập và nghiên cứu ở trường, chúng em đã được làm
quen với các môn học chuyên ngành.Với mục đích nhằm hiểu rõ, nắm bắt công
nghệ dòng vi xử lý vi điều khiển và khai thác các ứng dụng của nó trong cuộc
sống, để gắn liền được lý thuyết với thực tế và để thấy được những tính năng ưu
việt của dòng vi xử lý vi điều khiển và chúng em đã chọn đề tài : “lịch vạn niên
kết hợp quang báo” để rút kết lại kiến thức mình đã học tại trường trong hai
năm và chuẩn bị kiến thức cho công viêc sau này.
Chúng em xin chân thành cảm ơn các thầy cô bộ môn của khoa ĐIỆN
TỬ-TIN HỌC trường CĐKT CAO THẮNG và sự hướng dẫn tận tình cùa thầy
TỐNG THANH NHÂN đã giúp chúng em hoàn thành đề tài này.
Chúng em xin chân thành cảm ơn!

1


ĐỒ ÁN TỐT NGHIỆP

CHƯƠNG I - MỤC ĐÍCH YÊU CẦU ĐỀ TÀI


1.Giới Thiệu :
1.1. Lịch Vạn Niên (đồng hồ thời gian thực) :
Trong lĩnh vực công nghệ thông tin, người ta nói về hệ thống thông tin
thời gian thực khi hệ thống đó điều khiển một vật thể vật lý với một tốc độ
phù hợp với sự tiến triển của tiến trình chủ. Một ví dụ dễ hiểu (hệ thống thông
tin điều khiển màn hình hiển thị giờ chính xác của các tàu điện ngầm sẽ đến
và đi tại một gare nhất định). Hệ thống thông tin thời gian thực khác với
những hệ thống thông tin khác bởi sự gò bó về thời gian, do đó việc tuân thủ
các nguyên tắc cũng quan trọng như độ chính xác của kết quả, nói một cách
khác, hệ thống không chỉ đơn giản là đưa ra kết quả chính xác mà nó còn phải
thực hiện một xử lý trong một thời gian rất ngắn. Hệ thống thông tin thời gian
thực ngày nay được ứng dụng trong rất nhiều lĩnh vực như: trong ngành công
nghiệp sản xuất, kiểm soát tiến trình (trong đời sống hàng ngày ,trong nhà
máy, hay trong viện hạt nhân, trong hệ thống hàng không, thông qua các hệ
thống dẫn đường tích hợp trên máy bay và vệ tinh). Sự phát triển của hệ
thống thông tin thời gian thực yêu cầu mỗi phần tử của hệ thống phải ở thời
gian thực.Vì vậy nhóm chúng em đã chọn LỊCH VAN NIÊN (đồng hồ thời
gian thực) hiển thị lên led 7 đoạn làm một phần trong đồ án tốt nghiệp của
nhóm.
1.2. Quang Báo :
Quang báo là hình thức thông báo trên bảng đèn. Bảng đèn quang báo
gồm nhiều ma trận LED ghép lại, mỗi một ma trận biểu diễn một kí tự. Tùy
chiều dài của bảng đèn mà có thể hiển thị những bản tin có độ dài khác
nhau.Với sự ra đời của máy tính điện tử đặc biệt là máy vi tính, chúng có
những tính năng ưu việt như khả năng xử lý dữ liệu nhanh chóng, độ tin cậy
cao, lưu trữ lượng thông tin lớn và quan trọng hơn cả là máy tính có thể kết
hợp với nhiều thiết bị ngoại vi tùy theo mục đích ứng dụng cụ thể, mà việc
trao đổi và điều khiển trở nên đơn giản, chúng phụ thuộc vào phần mềm điều
khiển. Dựa vào tính đa dạng và mềm dẻo của máy tính người ta tìm cách ứng
dụng nó vào mục đích quảng cáo, chẳng hạn như dùng trong quang báo. Nhờ

vậy, việc thiết kế phần cứng cho quang báo trở thành ít phức tạp hơn, nhưng
2


ĐỒ ÁN TỐT NGHIỆP

độ tin cậy cao hơn. Trong thực tế để hiển thị các văn bản, người ta dùng các
kiểu chữ là các Ma Trận LED 8x32, 8x12 hoặc 8x14 tuỳ thuộc vào mục đích
sử dụng và độ phân giải.
Các công nghệ thiết kế quang báo hiện nay gồm nhiều công nghệ ,song
thường sủ dụng Led 7 thanh, Led ma trận, LCD, Led đơn.Nhóm chúng em đã
chọn quang báo hiển thị lên led ma trận 8 x 32 làm một phần trong đồ án tốt
nghiệp của nhóm.
2.Mục Đích :
2.1.Lịch Vạn Niên (đồng hồ thời gian thực):
- Đầu vào hệ thống lấy dữ liệu từ DS1307, là IC thời gian thực nhằm cung cấp giờ
cho hệ thống,để cập nhật thời gian,ngày tháng năm.
-Xử lý,điều khiển dùng viđiều khiển 16F877A.Lập trình viđiều khiển
để xử lý đọc ghi giờ, tính toán hiển thị thời gian.
-Để hiển thị dùng led 7 thanh: lấy tín hiệu ra từ vi điều khiển thông
báo thời gian,ngày,tháng năm.
-Điều chỉnh thời gian thông qua nút bấm: lựa chọn cài đặt giờ, tăng
giảm thời gian.
2.2. Quang Báo :
Có rất nhiều các để điều khiển một bảng LED ma trận, trong đề tài này
chúng em sử dụng vi điều khiển PIC 16F877A.
Để có thể điều khiển được một khối LED ma trận 8x32 chúng ta không
thể chỉ sử dụng các chân của vi điều khiển nên ở đây em sử dụng thêm IC
dịch 74HC595 để mở rộng cổng, tiết kiệm chân cho vi điều khiển.
Để cấp đủ nguồn cho các LED và cho các LED sáng đều, chúng em sử

dụng IC đệm dòng ULN2803.
3.Yêu Cầu :
3.1.Lịch Vạn Niên (đồng hồ thời gian thực):
- Đồng hồ thời gian thực hiển thị lịch dương:
-Đầu vào hệ thống lấy dữ liệu từ DS1307, là IC thời gian thực nhằm cung
cấp giờ cho hệ thống. Đầu ra được hiển thị trên LED 7 thanh.
3


ĐỒ ÁN TỐT NGHIỆP

- Hiển thị chính xác thời gian thực, ngày tháng năm dương lịch.
- Làm việc với điện áp cấp từ nguồn 5v Dc.
- Làm việc được lâu dài và ổn định
- Quan sát dễ dàng,có thể quan sát được thời gian ở khoảng cách xa.

3.2. Quang Báo :
Hệ thống điều khiển 4 LED ma trận ,bảng led bao gồm 8 cột và 32
hàng
Hiển
thị
chữ
“"CDKT
CAO
THANG_LOP
TCDT09C_DATN_GVHD:TONG THANH NHAN_SVTH:VAN THUADUY QUANG-ANH TUAN "” trên nền led ma trận 8x32
Dòng chữ chạy từ phải qua trái.
CH ƯƠNG II -PHÂN TÍCH VÀ THIẾT KẾ
1. Sơ Đồ Khối :
1.1.Lịch Vạn Niên (đồng hồ thời gian thực):

Khối nguồn
Khối hiển thị
Tạo xung dao động

Khối xử lý
Điều khiển

khối đo nhiệt dộ
Tạo thời gian thực
Reset

1.1.1.khối nguồn :
-Chức năng : cung cấp nguồn cho hệ thống.
4


ĐỒ ÁN TỐT NGHIỆP

-sơ đồ nguyên l ý :
12V

1

-

+

1
C 1
C


IN

7805

O U T

3

2

4

U 4
G N D

1
2

3

220V~

D io t c a u

2

L1

J2


B ie n a p

-Nguyên lý hoạt động :
Đây là module cấp nguồn cho hệ thống nhằm cung cấp điện áp chuẩn
+5V.
-Yêu cầu đối với khối này:
+Có thể lấy nguồn từ điện áp xoay chiều (hoặc pin) để cấp nguồn cho
hệ thống.
+Điện áp đầu ra của khối ( điện áp đầu vào của hệ thống) luôn
ổn định tại mọi thời điểm.Mạch ổn áp cần cho vi điều khiển vì nếu nguồn cho
vi điều khiển không ổn định thì sẽ treo VĐK, không chạy đúng hoặc reset
liên tục thậm chí là chết chíp.
Với yêu cầu như trên ta lựa chọn mạch biến đổi điện áp xoay chiều
thành 1 chiều qua máy biến thế.Sử dụng IC7805 để ổn áp. Điện áp xoay
chiều qua biến áp hạ xuống theo yeu cầu khoảng 12V qua cầu diot nắng lọc
là :
π

1
2 2U 2 2U 2 m
Ud =
2 ∫ 2U 2 sinθdθ =
=
= 2U 2 m = 0.9U 2 = 0.9 × 12 = 10.8V
2π 0
π
π

Dòng điện trung bình qua diot :

Ip =

Id
2

5

V c c -5 V
C 2
C


ĐỒ ÁN TỐT NGHIỆP

Dòng điện trung bình chạy qua mỗi điot khi dẫn điện =1/2 dòng trung bình
qua tải.
Qua IC ổn áp 7805 với V ngõ vào là 10.8V.
Giá trị điện áp của I C 7805 là từ 8-35V và điện áp ra là 5
1.1.2

khối tạo xung dao động:

-Chức năng : có tác dụng tạo xung nhịp với tần số 12MHz cho VĐK hoạt
động.
-sơ đồ nguyên l ý :

1

C2
33P


X1
12MHZ
2

C1
33P

-Nguyên lý hoạt động : Đây là bộ dao động thạch anh có tác dụng tạo xung
nhịp với tần số 12MHz cho VĐK hoạt động. Hai đầu này được nối vào 2chân
OSC1 và OSC2 của VĐK.

1.1.3khối reset:
-Khối RESET có tác dụng đưa vi điều khiển về trạng thái ban đầu.
-sơ đồ nguyên l ý :

6


ĐỒ ÁN TỐT NGHIỆP

R23

1

10K

K5

C4


KEY-TRON
2

10MF

-Nguyên lý hoạt động : Khối RESET có tác dụng đưa vi điều khiển về
trạng thái ban đầu. Khi nút Reset được ấn điện áp +5V từ nguồn được nối vào
chân Reset của vi điều khiển được chạy thẳng xuống đất lúc này điện áp tại
chân vi điều khiển thay đổi đột ngột về 0, VĐK nhận biết được sự thay đổi
này và khởi động lại trạng thái ban đầu cho hệ thống.

1.1.4khối hiển thị :
-Chức năng : Lấy tín hiệu ra từ chân IC để hiển thị thời gian, ngày tháng trên
Led 7 thanh.
-sơ đồ nguyên l ý :

1
2
3
4
5
6
7
8
9

RP2

A0

A1
A2
A3
A4
A5
A6
A7

J1
B0
B1
B2
B3
B4
B5
B6
B7

18
17
16
15
14
13
12
11

19
1
CE AB/BA

10
20
GND VCC

J3

D7
RA1
D5
D4
D3
D2
D1
D0

1
2
3
4
5
6
7
8
PIN-DUC-8

U4

1
1
2

3
4
5
6
7
8

1
2
3
4
5
6
7
8
9

U2
2
3
4
5
6
7
8
9

LP
LG
LF

LE
LD
LC
LB
LA

27.0

VOUT
PIN-DUC-8

RP1

74HC245

2

3 LM35

RN-8

RN-8

KHOI LED 7 DOAN HIEN THI GIO PHUT GAY
7

RA0

C3
1nF



ĐỒ ÁN TỐT NGHIỆP

-Nguyên lý hoạt động : Lấy tín hiệu ra từ chân IC để hiển thị thời gian, ngày
thángnăm.Khối hiển thị yêu cầu:
+Sử dụng nguồn chung toàn hệ thống,hoặc có thể dùng nguồn riêng
tùy người thiết kế.
+Độ sáng đủ lớn để có thể quan sát được trong phạm vi trong
phòng,góc nhìn rộng.màu sắc của số khi hiển thị dễ quan sát.
Lựa chọn hiển thị qua led 7 thanh,màu đỏ.
Mỗi thanh của led 7 đoạn để một led sang cần dòng 10mA , ta có thể xem led
7 đoạn như 7 led đơn:
Dòng qua led :

I led = 10mA × 7 = 70mA

Giá trị trung bình dòng qua led :
T0

T

chọn thời gian sang là thời gian led sang , là thời gian led tắt. chọn thời
gian sang một led là 100ms thời gian khong có dong qua led là 600ms.
I led =

T0
100
× I led =
× 70mA = 28.5mA

T
600

Suy ra :
Rled =

(Vcc − Vled − V − Voutpic)
I led

=

5V − 1.8V − 4.5V
= 325Ω
330Ω



(chọn 330

Để sang hết 7 thanh cuả led 7 đoạn cần dòng :
I led = 10mA × 7 = 70mA

Xét điều kiện BJT bão hoà chọn BJT A1015 có
Thông số của vi điều khiển pic ta có
8

β

=70


)


ĐỒ ÁN TỐT NGHIỆP
I0
V0

=3mA
=0.7V

Từ đó suy ra :
Rb =

Vcc − Vγ − Vled 5V − 0.8V − 2V
=
= 1kΩ
I0
0.003

1.1.5khối điều khiển :
-Chức năng : Gồm 4 nút ấn có tác dụng điều chỉnh thời gian, ngày tháng
trong mạch.
-sơ đồ nguyên l ý :

K6
1

2
KEY-SET


K7
1

2
KEY-MOD

R6
R7
R9
R10

K8

10k
10k
10k
10k
1

2
KEY-TANG

K9
1

2
KEY-GIAM

1.1.6khối tạo thời gian thực :
-Chức năng : cung cấp thông tin về giờ,phút,giây ,thứ,ngày,tháng, năm.


9


ĐỒ ÁN TỐT NGHIỆP

U2
R5

SCL
SDA

10k

6
5
7
3

U18

SCL
SDA

X1

1

SOUT
VBAT X2


2

DS1307

SQW

NOT

KHOI DALAS 1307
-sơ đồ nguyên l ý :
-Nguyên lý hoạt động :
+IC thời gian thực cần hoạt động được với nguồn cung cấp nhỏ, dùng
để cập nhật thời gian và ngày tháng.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.
+Khi mất nguồn IC thời gian thực vẫn duy trỳ hoạt động không cần
điều chỉnh lại thời gian.IC có thêm nguồn riêng từ pin 3V.
+Với điều kiện như trên ta lựa chọn IC thời gian thực là IC DS1307.
1.1.7Khối Xử lý :
-Chức năng : Dùng VDK để lấy tín hiệu từ khối điều khiển, tạo xung
giao động, tạo thời gian thực… và đưa ra khối hiển thị.
-sơ đồ nguyên l ý :

10


ĐỒ ÁN TỐT NGHIỆP


C2

U17
1

13
14

33P

X1
12MHZ
2

C1

RA0
RA1

33P

OSC1/CLKIN
OSC2/CLKOUT

2
3
4
5
6
7


RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT

8
9
10
R23

1

10K

11

32

VCC
VCC1

1

K5

C4

KEY-TRON

12
31

GND
GND1

2

10MF

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC

RB7/PGD

RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7

33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21

22
27
28
29
30

PIC16F877A

-Nguyên lý hoạt động :
Dùng VDK để lấy tín hiệu từ khối điều khiển, tạo xung giao động, tạo
thời gian thực… và đưa ra khối hiển thị. Yêu cầu.
+ Tốc độ xử lý nhanh, chính xác.
+ Bộ nhớ không cần lớn.
Lựa chọn vi điều khiển 16f877a.
1.1.8khối đo nhiệt độ :
- Đo và hiển thị nhiệt độ của môi trường một thời điểm bất kỳ trong
khoảng từ 0 đến 99 độ C.
- Chịu được nhiệt độ thay đổi.

11

LA
LB
LC
LD
LE
LF
LG
LP
RST1302

SCLK1302
IO1302

D0
D1
D2
D3
D4
D5
D6
D7


ĐỒ ÁN TỐT NGHIỆP

- Sử dụng sensor cảm biến nhiệt.

- Hiển thị trên led 7 thanh.
1.2. Quang Báo :

KHỐI NGUỒN

KHỐI
XỬ LÝ
TRUNG
TÂM

KHỐI
ĐIỀU KHIỂN
LED

MA TRẬN

KHỐI HIỂN THỊ

1.2.1.khối điều khiển led ma trận:
-Chức năng : Nhận tín hiệu từ khối xử lý trung tâm, giải mã và cung cấp
nguồn ổn định và đủ lớn để chuyển ra khối hiển thị.
-Nguyên lý hoạt động :

12


ĐỒ ÁN TỐT NGHIỆP

Khối điều khiển LED được kết nối như hình dưới đây. Module sử
dụng IC chốt dịch 74HC595 và IC đệm dòng ULN2803.
Các chân Clock và Latch của IC 74HC595 được mắc song song như
hình vẽ. Chân Data của IC 74HC595 đầu tiên được nối vào vi điều khiển. Các
chân Data của 3 IC còn lại được mắc vào chân số 9 của IC 74HC595 trước
đó.

13


ĐỒ ÁN TỐT NGHIỆP

Các đầu ra của IC chốt dịch 74HC595 được mắc vào các cổng vào của
IC đệm dòng ULN2803, các đầu ra của ULN2803 sẽ được nối trực tiếp với
các chân cho phép cột của các LED ma trận trong module hiển thị.
1.2.2. khối hiển thị:

Nhận tín hiệu từ khối xử lý trung tâm và khối điều khiển LED ma trận
để hiển thị các ký tự theo chương trình đã trong khối xử lý trung tâm

Module hiển thị sử dụng 4 led ma trận 8x8 ghép nối lại với nhau thành một
ma trận 8x32. Các LED ma trận được nối chung các chân cho phép hàng với
nhau(H1 đến H8). Các chân cho phép cột được tách riêng và nối vào Module
điều khiển LED ma trận (C1 đến C32)
CH ƯƠNG III- LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TR ÌNH
1. Lịch Vạn Niên (đồng hồ thời gian thực):

1.1. lưu đồ chính :

14


ĐỒ ÁN TỐT NGHIỆP

CT
điều khiển chính

Giao tiếp RTC

Đọc, bấm nút
Điều khiển hiển thị

RTC

Nút bấm
Hiển thị


1.2.lưu đồ chi tiết
1.2.1.Thuật toán giao tiếp với IC thời gian thực DS1307:

15


ĐỒ ÁN TỐT NGHIỆP

*chương trình
#include <16f877a.h>
#device adc=10
#fuses XT,NOWDT,NOPROTECT
#use delay (clock=20000000)
#include <DS1307.c>
#include <math.h>
#define set pin_c4
#define mod pin_c5
#define tang pin_c6
#define giam pin_c7
byte giay,phut,gio,ngay,thang,nam,ngtuan;
char

16


ĐỒ ÁN TỐT NGHIỆP

displthang1_onlar,displthang1_birler,displthang2_onlar,displthang2_birler,dis
plthang3_onlar,displthang3_birler;
const int

displthang_digit[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x1
0}; // ortak anotlu için
int i;
int set_degeri=0; // 1=gio 2=ngay
int mod_degeri=0; // 1=gio,ngay 2=phut,thang 3=giay
unsigned long int sicaklik_bilgisi;
float sicaklik_degeri,sicaklik_voltaj;
int sicaklik_ekrani=0;

1.2.2. Thuật toán điều chỉnh thời gian:
-Chỉnh giờ:

17


ĐỒ ÁN TỐT NGHIỆP

Chỉnh giờ
Đ
Nút2=0

S

Nhả phím giờ+1

10giờ=2
Giờ=5

Đ
Giờ=10


10giờ+1
Giờ=0

S

Đ

10giờ=0
Giờ=0

S
Đ
Nút3=0

Nhả phím
giờ-1

Đ

Giờ=-1

S

S

Đ

10giờ =0
S


10 giờ =-1
giờ =9

Quét LED hiển thị 10 giờ, giờ

Nút1=0
Đ

Kết thúc

-chỉnh phút :

18

10giờ=2
giờ =4


ĐỒ ÁN TỐT NGHIỆP

Chỉnh phút

Nút2=0

Đ

S

10phút=6

Phút=0

Nhả phím phút+1

Đ

phút=10

10phút+1
phút=0

S

Đ

10phút=6
phút=0

S

Nút3=0

Đ

Nhả phím
phút-1

phút= -1

S


S

Đ 10phút =0

S

10 phút = -1
phút =9

Quét LED hiển thị 10 phút, phút

Nút1=0

Đ
Kết thúc

*chương trình:
19

Đ

10phút=51
phút =9


ĐỒ ÁN TỐT NGHIỆP

void thangarlar()
{

if (input(set))
{
while(input(set))
{
if(sicaklik_ekrani==1){ sicaklik_tara(); }
else { displthang_tara(); }
output_low(pin_a1);output_low(pin_a2);
}
set_degeri=1;
}
else { goto thangardan_cik; }
while(set_degeri==1)
{
output_e(0b001);
rtc_get_time(gio,phut,giay);
displthang1_birler=gio%10;
displthang1_onlar=gio/10;
displthang2_birler= phut%10;
displthang2_onlar=phut/10;
displthang3_birler=giay%10;
displthang3_onlar=giay/10;
set_konumunda_displthang_tara();
if(input(set)){ while(input(set)){displthang_tara();}
set1_den_cik; }

set_degeri=2;

if(input(mod)){ while(input(mod)){displthang_tara();} mod_degeri=1; }
while(mod_degeri==1)
{

for(;;)
{
displthang1_birler=gio%10;
displthang1_onlar=gio/10;
displthang1_tara();

20

goto


ĐỒ ÁN TỐT NGHIỆP

if(input(tang)){gio++; while(input(tang)){displthang1_tara();} if(gio==24)
{gio=0;} }
if(input(giam)){gio--; while(input(giam)){displthang1_tara();} if(gio==-1)
{gio=23;} }
if(input(mod)){while(input(mod)){displthang1_tara();} mod_degeri=2; goto
mod1s_cik;}
write_ds1307(0x84,get_bcd(gio)); //lay gia tri gio. 0-23
delay_ms(5);
} //for smod1
} //trong khi mode = 1
mod1s_cik:
while(mod_degeri==2)
{
for(;;)
{
displthang2_birler=phut%10;
displthang2_onlar=phut/10;

displthang2_tara();
if(input(tang)){phut++;
while(input(tang)){displthang2_tara();}
if(phut==60){phut=0;} }
if(input(giam)){phut--; while(input(giam)){displthang2_tara();} if(phut==1){phut=59;} }
if(input(mod)){while(input(mod)){displthang2_tara();} mod_degeri=3; goto
mod2s_cik;}
write_ds1307(0x82,get_bcd(phut)); //lay gia tri phut. 00-59
delay_ms(5);
} //for smod2
} //trong khi mod = 2
mod2s_cik:
while(mod_degeri==3)
{
for(;;)
{
displthang3_birler=giay%10;
displthang3_onlar=giay/10;
displthang3_tara();

21


ĐỒ ÁN TỐT NGHIỆP

if(input(tang)){giay++;
while(input(tang)){displthang3_tara();}
if(giay==60){giay=0;} }
if(input(giam)){giay--; while(input(giam)){displthang3_tara();} if(giay==1){giay=59;} }
if(input(mod)){while(input(mod)){displthang3_tara();} mod_degeri=0; goto

mod3s_cik;}
write_ds1307(0x80,get_bcd(giay)); //lay gia tri giay. 00-59
delay_ms(5);
} //for smod3
} //trong khi mode = 3
mod3s_cik:
delay_us(1);
} // trong khi gia tri thiet lap = 1
set1_den_cik:
1.2.3Thuật toán điều chỉnh ,ngày ,tháng ,năm:
-chỉnh năm:

22


ĐỒ ÁN TỐT NGHIỆP

S

10 năm =9

-chỉnh ngày:

23


ĐỒ ÁN TỐT NGHIỆP
Chỉnh ngày
Nút =2


Đ Nhả phím ngày +1

S

Nút =3

Đ

Ngày =8

Ngày=1

S

Đ Nhả phím ngày -

Đ
Ngày =0

S
S

S

Quét LED hiển thị 10 ngày, ngày

Nút =3
Đ
Kết thúc


-chỉnh tháng:

24

Ngày=7


ĐỒ ÁN TỐT NGHIỆP

Chỉnh tháng
10tháng =1
Đ phím tháng +1
Nhả
tháng =3

Nút 2=0

Đ

S

S

tháng =10

Đ

S

10 tháng =0

tháng =0

10 năm =1
tháng =0

S
tháng =-1
ĐNhả phím tháng -1

Nút 3=0

Đ

10 tháng=0

S

S

S

Quét LED hiển thị 10 tháng, tháng
Nút 1 =0
Đ
Kết thúc

*chương trình :
while(set_degeri==2) //dat ngay
{
output_e(0b010);


25

10tháng =0
tháng=9

Đ 10 năm =1
tháng =0


×