Tải bản đầy đủ (.doc) (27 trang)

thiết kế mạch đồng hồ thời gian thực hiển thị giờ, phút, giây, ngày, tháng, năm trên LED 7đoạ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 (239.07 KB, 27 trang )


LỜI MỞ ĐẦU
Trong quá trình cả nước đang tiến lên xây dựng trở thành một nước công
nghiệp hóa hiện đại hóa, trở thành một nước có nền công nghiệp xứng tầm khu vực
thì cơ điện tử đóng góp một phần không nhỏ vào quá trình xây dựng và phát triển
đấy. bởi sản phẩm của cơ điện tử là những sản phẩm mang tính tự động hóa cao
mang lại giá trị lợi ích kinh tế cho xã hội. và đương nhiên để làm được những việc
đó không thể không nói đến những đóng góp của các kỹ sư cơ điện tử bởi họ là
những người đang hàng ngày trực tiếp điều khiển các máy móc, các dây truyền ở
các nhà máy để tạo ra những sản phẩm mang lại hiệu quả kinh tế cao.
Và bên cạnh đó là những đóng góp rất quan trọng của các thầy cô cán bộ trong
nhà trường. đặc biệt là các thầy trong bộ môn cơ điện tử ĐẠI HỌC NHA TRANG.
Đang ngày đêm miệt mài lao động để đưa chúng em tới được bến bờ hạnh phúc
nhất. Sau một quá trình học tập và nghiên cứu cùng với sự cố gắng tìm tòi của bản
thân em đã tiến hành làm một chiếc đồng hồ thời gian thực có nhiều tính năng,để
phần nào củng cố những kiến thức được học tập trong xuất thời gian qua và tập làm
qen với công việc tìm hiểu thực hiện một đề tài.
Cuối cùng em xin chân thành cảm ơn các thầy trong bộ môn cơ điện tử đã tận
tình giúp đỡ để em hoàn thành nhiệm vụ và đăc biệt cảm ơn thầy Trần Văn Hùng
đã hướng dẫn tận tình để em hoàn thành nhiệm vụ đạt được kết quả tốt nhất. lần
đầu bắt tay làm qen tìm hiểu thực hiện đồ án nên không tránh khỏi những thiếu xót,
em mong được sự chỉ bảo thêm của các thầy để sản phẩm được hoàn thiện hơn nữa.
Nha trang 03 tháng01 năm 2011.
Sinh viên thực hiện.
Phạm Viết Ngọc
Trang 1
Mục lục Trang


chương 1: GIỚI THIỆU ĐỒNG HỒ THỜI GIAN THỰC VÀ
NHIỆM VỤ ĐỒ ÁN MÔN HỌC.


1.1. GIỚI THIỆU.
Vấn đề 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. Cái hay khi ta làm đồng hồ đếm thời gian thực đó chính là
chúng ta có thể biết thời gian hiện tại chính xác là bao nhiêu. cho dù khi chúng ta
không cấp nguồn cho cái đồng hồ này chạy nhưng lúc sau bật nguồn lên nó vẫn
chạy đúng vì IC đếm thời gian thực luôn luôn chạy bằng cục PIN 3v. chỉ với cục
pin 3v thôi là nó có thể hoạt động tới mười năm rồi.
1.2. NHIỆM VỤ VÀ PHÂN TÍCH NHIỆM VỤ
1.2.1. NHIỆM VỤ:
Nhiệm vụ của đồ án môn học vi điều khiển là thiết kế mạch đồng hồ thời Gian
thực hiển thị giờ, phút, giây,ngaỳ,tháng,năm trên LED 7đoạn.
1.2.2. PHÂN TÍCH NHIỆM VỤ:
Nội dung cần nắm bắt:
• Biết cách đọc và dịch datasheet của các loại IC để biết nguyên lí hoạt động
trong mạch.
• Hiểu được giao thức truyền thông I2C. hiểu được nguyên tắc hoạt động của IC
thời gian thực DS1307
Trang 2
• Hiểu được hoạt động của led 7 đoạn, hiểu được ngắt trong vi điều khiển.

Trang 3
Chương 2: THIẾT KẾ HỆ THỐNG
2.1. TỔNG QUAN ĐỀ TÀI
Trong quá trình tiến hành làm mạch đồng hồ thời gian thực cũng có gặp một
số khó khăn đó là, ban đầu là mắc phải lỗi trong thiết kế phần cứng đó là mắc điện
trở 4.7k như hình 1.

Hình 1. hình 2.
kết quả là không đủ dòng kích cho led và biên pháp khắc phục là mắc điện trở
như hình 2. mềm mắc lỗi do taọ thời gian delay chưa đúng nên dẫn đến

các led sáng mờ và có một led thì sáng rực rỡ, và cũng đã được khắc
phục bằng cách thay đổi thời gian delay hinh 2.
2.2:THIẾT KẾ SƠ ĐỒ KHỐI
Trang 4
4.7k
1k
5v
C1815
J1Jump 2
1
2
U1
a
7
b
6
c
4
Dp
5
d
2
e
1
f
9
g
10
A
3

+
8
1k
5v
C1815 J1Jump 2
1
2
U1
a
7
b
6
c
4
Dp
5
d
2
e
1
f
9
g
10
A
3
+
8
ATMEGA32
ATMEGA 16

P
O
R
T
A
6
TRANZITO
C1815


L
E
D

7
D
O
A
N

P
O
R
T
B


Chương 3: LÝ THUYẾT LIÊN QUAN
3.1. GIAO THỨC I2C:
I2C là một chuẩn công nghiệp cho các giao tiếp điều khiển Bus I2C được sử

dụng làm bus giao tiếp cho rất nhiều IC, Bus I2C có hai đường là SDA và SCL.
Serial Data(SDA): SDA là đường truyền dữ liệu theo cả hai hướng.
Serial Clock (SCL): còn SCL là đường truyền xung đồng theo 1 hướng. Mỗi dây
SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện
trở kéo lên. Sự cần thiết của các điện trở kéo lên này là do chân giao tiếp i2c của
các thiết bị ngoại vi thường là máng cực hở. Giá trị của các điện trở kéo lên tùy vào
từng thiết bị và chuẩn giao tiếp, thường dao động từ 1 KΩ đến 4.7 KΩ.
1.
2. Hình 1. (I2C) với nhiều thiết bị và 2 điện trở kéo lên cho SDA, SCL.
3.
Trang 5
Master: là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị cần
giao tiếp và tạo xung giữ nhịp trên đường SCL.
Slave: là chip có một địa chỉ cố định, được gọi bởi Master và phục vụ yêu cầu từ
Master. SDA- Serial Data: là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ
hay dữ liệu đều được truyền trên đường này theo thứ tự từng bit một. Chú ý là
trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền trước nhất.
SCL –Serial Clock: là đường giữ nhịp nối tiếp, cứ mỗi xung trên đường giữ
nhịp SCL, một bit dữ liệu trên đường SDA sẽ được lấy mẫu (sample). Dữ liệu nối
tiếp trên đường SDA được lấy mẫu khi đường SCL ở mức cao trong một chu kỳ
giữ nhịp, vì thế đường SDA không được đổi trạng thái khi SCL ở mức cao (trừ
START và STOP condition). Chân SDA có thể được đổi trạng thái khi SCL ở mức
thấp.
START Condition-Điều kiện bắt đầu: từ trạng thái nghỉ, khi cả SDA và SCL ở
mức cao nếu Master muốn thực hiện một “cuộc gọi”, Master sẽ kéo chân SDA
xuống thấp trong khi SCL vẫn cao. Trạng thái này gọi là START Condition .
STOP Condition-Điều kiện kết thúc: sau khi thực hiện truyền/nhận dữ liệu, nếu
Master muốn kết thúc quá trình nó sẽ tạo ra một STOP condition. STOP condition
được Master thực hiện bằng cách kéo chân SDA lên cao khi đường SCL đang ở
mức cao. STOP condition chỉ được tạo ra sau khi địa chỉ hoặc dữ liệu đã được

truyền/nhận.
SLA+R/W: 7 bit địa chỉ( 2^7=128 có thể giao tiếp với 128 thiêt bị khách khác) và
bit cuối R/W cho biết là chủ muốn đọc hay ghi lên khách ( 1 là đọc và 0 là ghi )
ACK :nếu dịa chỉ tới đúng khách thì chủ sẽ nhận được tín hiệu ACK từ khách
Data byte : khi nhận được ACK chủ sẽ truyền 8 bit dữ liệu xuống khách. Khi khách
Trang 6
nhận xong 8 bít nó sẽ kéo đường ACK xuống thấp, để báo chủ biết khách đã nhận
chú ý : giá trị dữ liệu được thay đổi khi clock kéo xuống thấp.
Trang 7
3.2. Nguyên tắc hoạt động DS1307:
DS1307 là chip đồng hồ thời gian thực. 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 của AVR nên cấu tạo bên ngoài rất đơn giản. DS1307 có 8 chân như trong hình
1.
Hình 1. 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
chochip.
- V
BAT
: 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.
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 ta chọn trong lúc lập
Trang 8

trình.
- SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C .
Chương 4: THIẾT KẾ PHẦN THIẾT BỊ
4.1 MẠCH VI ĐIỀU KHIỂN
D 3
L E D
D 4
L E D
D 5
L E D
D 6
L E D
D 7
L E D
D 8
L E D
U 4I C 7 8 0 5
i n
1
o u t
3
D 9
L E D
D 1 0
L E D
+ 5 V
J 7
J u m p 8
1
2

3
4
5
6
7
8
R 3
1 K
+ 5 V
R 4
1 K
R 5
1 K
R 6
1 K
t u p i
0 . 1 u F
12
t u p i 2
0 . 1 u F
12
D 1
L E D
R 1
1 K
D 2
D I O D E
R 7
1 K
J 1

1 2 v
1
2
4 7 0 u F
T u h o a 1
1 0 0 0 u F
T u h o a 2
R 8
1 K
U 3
A T 9 0 S 8 5 3 5 D I L
P B 2 ( A I N 0 )
3
X T A L 2
1 2
X T A L 1
1 3
P B 1 ( T 1 )
2
P D 2 ( I N T 0 )
1 6
P D 3 ( I N T 1 )
1 7
P D 4 ( O C 1 B )
1 8
P D 5 ( O C 1 A )
1 9
G N D
1 1
V c c

1 0
P B 7 [ S C K )
8
P B 6 [ M I S O )
7
P B 5 ( M O S I )
6
P A 4 ( A D C 4 )
3 6
P A 5 ( A D C 5 )
3 5
P A 6 ( A D C 6 )
3 4
P A 7 ( A D C 7 )
3 3
A R e f
3 2
P A 3 ( A D C 3 )
3 7
P B 0 ( T 0 )
1
P B 3 ( A I N 1 )
4
P B 4 ( S S )
5
R E S E T
9
P D 0 ( R x D )
1 4
P D 1 ( T x D )

1 5
P D 6 ( I C P )
2 0
P D 7 ( O C 2 )
2 1
P A 0 ( A D C 0 )
4 0
P A 1 ( A D C 1 )
3 9
P A 2 ( A D C 2 )
3 8
A G n d
3 1
A V c c
3 0
P C 7 ( T O S C 2 )
2 9
P C 6 ( T O S C 1 )
2 8
P C 5
2 7
P C 4
2 6
P C 3
2 5
P C 2
2 4
P C 1
2 3
P C 0

2 2
J 2
J u m p 8
1
2
3
4
5
6
7
8
R 9
1 K
J 3
J u m p 8
1
2
3
4
5
6
7
8
J 4 J u m p 8
1
2
3
4
5
6

7
8
J 5
J u m p 8
1
2
3
4
5
6
7
8
J 6
J u m p 6
1
2
3
4
5
6
4 . 7 u F
T u h o a 4
R 1 0
1 K
S W 1
N u t n h a n 2
R 2
1 0 K
R E S E T
V C C

C 4 6
0 . 1 u
U 1 2
M A X 2 3 2 _ 0
V +
2
C 1 +
1
V -
6
V C C
1 6
R 1 O U T
1 2
R 2 O U T
9
G N D
1 5
C 2 -
5
T 1 I N
1 1
T 2 I N
1 0
C 1 -
3
C 2 +
4
R 1 I N
1 3

R 2 I N
8
T 1 O U T
1 4
T 2 O U T
7
T x D
P C ( P I N 2 )
P C ( P I N 3 )
C 3 6
0 . 1 u
R x D
C 3 7
0 . 1 u
T x D
C 3 8
0 . 1 u
G N D
P 1 5 0 2
P C
5
9
4
8
3
7
2
6
1
+ 5 V

R x D
C 1 1
2 7 p
12
V C C
+ 5 V
M O S I
M I S O
S C K
+ 5 V
R E S E T
4 . 7 u F 1
T u h o a 5
Y 2
8 M H z
X T A L 2 X T A L 1
C 6
2 7 p
12
C 8
2 7 p
12
Sử dụng vi điều khiển atemega 32 .thạch anh 11.0592 MHz. PORTA sử dụng để
kích tranzitor C1815.PORTB sử dụng để xuất mã ra led 7đoạn. PORTD sử dụng để
nhận phím nhấn.
4.2:MẠCH HIỂN THỊ LED
Trang 9

J 1
J u m p 8

1
2
3
4
5
6
7
8
J 2
C O N 6
1
2
3
4
5
6
R 3 4
5 6 0
R 3 5
5 6 0
R 3 6
5 6 0
R 3 7
5 6 0
R 3 8
5 6 0
R 3 9
5 6 0
J 3
C O N 2

1
2
U 1
a
7
b
6
c
4
D p
5
d
2
e
1
f
9
g
1 0
A
3
+
8
f
5
U 2
a
7
b
6

c
4
D p
5
d
2
e
1
f
9
g
1 0
A
3
+
8
f
5
U 3
a
7
b
6
c
4
D p
5
d
2
e

1
f
9
g
1 0
A
3
+
8
f
5
U 4
a
7
b
6
c
4
D p
5
d
2
e
1
f
9
g
1 0
A
3

+
8
f
5
U 5
a
7
b
6
c
4
D p
5
d
2
e
1
f
9
g
1 0
A
3
+
8
f
5
U 6
a
7

b
6
c
4
D p
5
d
2
e
1
f
9
g
1 0
A
3
+
8
f
5
3 3 0


Trên sơ đồ mạch hiển thị led sử dụng tranzitor pnp khi ta kích mức 0 thì tranzitor thông, và
kích tranzitor nào thì cấp nguồn cho led đó sáng, đó là nguyên lý chung của mạch.
4.3:MẠCH THỜI GIAN THỰC

s c l
D S 1 3 0 7
S Q W / O U T

7
S D A
5
X 1
1
X 2
2
S C L
6
V B A T
3
V C C
8
m a s
4
3 2 7 6 8 k h z
4 k 7
1 k
21
p i n 3 v
+
-
5 v
5 v
5 v
s d a
4 k 7
ở đây hai chân SDA và SCL lần lượt được nối vao hai chân SDA và SCL cua VDK
Mss của ds1307 chung với mass của vdk và cực âm của pin 3v. Mắc thêm led ở
chân out như hình vẽ và khi lập trình chọn tần số để cứ một giây nó nháy một lần.

Trang 10
Chương 5: THIẾT KẾ PHẦN MỀM
5.1. THIẾT KẾ MÔ TẢ HOẠT ĐỘNG PHẦN MỀM
Trang 11
5.2. CHƯƠNG TRÌNH
#include <mega32.h>
#include <delay.h>
Trang 12
START
KIỂM TRA PHÍM
NHẤN
KHỞI TẠO I2C
THIẾT LẬP THỜI
GIAN CHO DS1307
ĐỌC THỜI GIAN TỪ
DS1307
HIỂN THỊ THÒI
GIAN RA LED 7
ĐOẠN
END
KHỞI TAO DS1307

#include <stdlib.h>
char led_kich[6]={0x01,0x02,0x04,0x08,0x10,0x20};
char data[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//so 0
den 9
unsigned char h,m,s;
unsigned int date,mont,year;
char h_ch_1,h_dv_1,m_ch_1,m_dv_1,s_ch_1,s_dv_1; // Time lcd
char h_ch_2,h_dv_2,m_ch_2,m_dv_2,s_ch_2,s_dv_2; // Time led7

char h_ch_3,h_dv_3,m_ch_3,m_dv_3,s_ch_3,s_dv_3; // Date lcd
char h_ch_4,h_dv_4,m_ch_4,m_dv_4,s_ch_4,s_dv_4; // Date led7
char a,b,i,k=18;
// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
Trang 13
#endasm
#include <lcd.h>
interrupt [EXT_INT0] void ext_int0_isr(void)
{
}
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void) // PORTB.3
{
i++; // tao thoi gian ngan cach hien thi date & time
}
//*********************************************************
void giay(void) // 31250/255=1S (KHAI BAO TIMER)
{ // tao thoi gian ngan cach hien thi date & time
if(i==122) // i = so lan ngat trong 1s

{
i=0;
k ;
if(k==0)
k=18;
}
}
//=========================================================//
void lay_data_1(void) // Time hien thi LCD
Trang 14
{
// if(a==0)
// {
// rtc_set_time(15,15,00); // thiet lap time ban dau
// a=1; //
// delay_ms(1);
// }
// else
// {
// rtc_get_time(&h,&m,&s); // doc time
// h_ch_1=0x30+h/10; // chia de lay gia tri out led
// h_dv_1=0x30+h%10; // gio
// m_ch_1=0x30+m/10;
// m_dv_1=0x30+m%10; // phut
// s_ch_1=0x30+s/10;
// s_dv_1=0x30+s%10; // giay
// }
}
void lay_data_2(void) // Time hien thi Led 7Seg
{

if(a==0)
{
rtc_set_time(23,59,45);
a=1;
delay_ms(1);
}
else
Trang 15
{
rtc_get_time(&h,&m,&s);
h_ch_2=h/10; // chia lay nguyen
h_dv_2=h%10; // chia lay du
m_ch_2=m/10;
m_dv_2=m%10;
s_ch_2=s/10;
s_dv_2=s%10;
}
}
void lay_data_3(void) // Date hien thi LCD
{
// if(b==0)
// {
// rtc_set_date(01,01,11);
// b=1;
// delay_ms(1);
// }
// else
// {
// rtc_get_date(&date,&mont,&year);
// h_ch_3=0x30+date/10;

// h_dv_3=0x30+date%10;
// m_ch_3=0x30+mont/10;
// m_dv_3=0x30+mont%10;
// s_ch_3=0x30+year/10;
// s_dv_3=0x30+year%10;
Trang 16
// }
}
void lay_data_4(void) // Date hien thi Led 7Seg
{
if(b==0)
{
rtc_set_date(31,12,10); // cai dat
b=1;
delay_ms(1);
}
else
{
rtc_get_date(&date,&mont,&year);
h_ch_4=date/10;
h_dv_4=date%10;
m_ch_4=mont/10;
m_dv_4=mont%10;
s_ch_4=year/10;
s_dv_4=year%10;
}
}
//========================LCD===========================//
void Time(void)
{

// lay_data_1();
// lcd_gotoxy(0,0);
// lcd_putsf("Time : ");
Trang 17
// lcd_gotoxy(6,0);
// lcd_putchar(h_ch_1); //0x30 >chuyen sang ASCII (ky' tu)
// lcd_putchar(h_dv_1);
// lcd_putsf(":");
// lcd_putchar(m_ch_1);
// lcd_putchar(m_dv_1);
// lcd_putsf(":");
// lcd_putchar(s_ch_1);
// lcd_putchar(s_dv_1);
// }
// void Date(void)
// {
// lay_data_3();
// lcd_gotoxy(0,0);
// lcd_putsf("Date : ");
// lcd_gotoxy(6,0);
// lcd_putchar(h_ch_3);
// lcd_putchar(h_dv_3);
// lcd_putsf(":");
// lcd_putchar(m_ch_3);
// lcd_putchar(m_dv_3);
// lcd_putsf(":");
// lcd_putchar(s_ch_3);
// lcd_putchar(s_dv_3);
}
//=================== LED 7 SEG ===========================//

void hien_thi_Time(void)
Trang 18
{
lay_data_2();
//======= h ========//
PORTD=data[h_ch_2];
PORTA=led_kich[0];
delay_ms(1);
PORTA=0x00;

PORTD=data[h_dv_2];
PORTA=led_kich[1];
delay_ms(1);
PORTA=0x00;

//======= m ========//
PORTD=data[m_ch_2];
PORTA=led_kich[2];
delay_ms(1);
PORTA=0x00;

PORTD=data[m_dv_2];
PORTA=led_kich[3];
delay_ms(1);
PORTA=0x00;

//======= s ========//
PORTD=data[s_ch_2];
PORTA=led_kich[4];
Trang 19

delay_ms(1);
PORTA=0x00;

PORTD=data[s_dv_2];
PORTA=led_kich[5];
delay_ms(1);
PORTA=0x00;
}
void hien_thi_Date(void)
{
lay_data_4();
//======= date ========//
PORTD=data[h_ch_4];
PORTA=led_kich[0];
delay_ms(1);
PORTA=0x00;

PORTD=data[h_dv_4];
PORTA=led_kich[1];
delay_ms(1);
PORTA=0x00;

//======= mont ========//
PORTD=data[m_ch_4];
PORTA=led_kich[2];
delay_ms(1);
PORTA=0x00;
Trang 20

PORTD=data[m_dv_4];

PORTA=led_kich[3];
delay_ms(1);
PORTA=0x00;

//======= year ========//
PORTD=data[s_ch_4];
PORTA=led_kich[4];
delay_ms(1);
PORTA=0x00;

PORTD=data[s_dv_4];
PORTA=led_kich[5];
delay_ms(1);
PORTA=0x00;
}
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
Trang 21
DDRC=0x00;
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 31.250 kHz
// Mode: Fast PWM top=FFh

// OC0 output: Inverted PWM
TCCR0=0x7C;
TCNT0=0x00;
OCR0=0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x03;
MCUCSR=0x00;
GIFR=0x40;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
Trang 22
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// I2C Bus initialization
i2c_init();
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: On
// Square wave frequency: 1Hz
rtc_init(0,1,0);
// LCD module initialization
lcd_init(16);
// Global enable interrupts

#asm("sei")
rtc_set_time(7,0,0);
while (1)
{
giay();
// if((k<=18)&&(k>7)) // LCD
// {
Trang 23
// Time();
// }
// if((k<=7)&&(k>0))
// {
// Date();
// }
if((k<=18)&&(k>7)) // Led 7 Seg
{
hien_thi_Time();
}
if((k<=7)&&(k>0))
{
hien_thi_Date();
}
};
}
5.3. GIẢI THÍCH CHƯƠNG TRÌNH.
Để led nào được sáng thì ta kích tín hiệu từ vdk ra là mức 1. vì ở đây dùng
Tranzito pnp nên có tín hiệu mức 1 từ vdk vào chân B của tranzito nào thì con đó
sẽ thông và led đó được cấp nguồn, và phụ thuộc vào các chân dữ liệu xuất mã ra
để hiển thị được số thông qua mã đó.
Trong chương trình setup đầu tiên quá trình truyền dữ liệu xuống ds1307 là

phát tín hiệu start, sau đó lần lượt là địa chỉ của ds1307 và địa chỉ đến thanh ghi của
ds1307.sau đó là quá trình lấy thời gian thực từ ds1307 lên và xuất ra led.
Trong chương trình chính thì nó kiểm tra điều kiện nếu giờ thực tế đang chạy
từ ds1307 mà bằng thời gian cài đặt hẹn giờ thì cho tín hiệu đèn led nháy sáng thể
Trang 24
hiện ở chân PORTA.7. sau đó nó kiểm tra kiều kiện biến tạm. với trường hợp
(tạm<4) thì nó vào chế độ chỉnh giờ, phút, giây. Phụ thuộc vào phím nhấn tăng
giảm mà thời gian được điều chỉnh. Thời gian lúc này là được lấy từ thời gian thực
của ds1307. tiếp đó kiểm tra điều kiện (tạm==4) vào chế độ đồng hồ thể thao. Nó
cũng kiểm tra biến tam2 để hiển thị ra từng thời gian được chọn. và trường hợp
(tạm==5) thì đi hiển thi màn hình thời gian ở chế độ cài đặt.
5.4. KẾT LUẬN VÀ TÀI LIỆU THAM KHẢO.
KẾT QUẢ VÀ THỰC NGHIỆM.
Đã hoàn thành nhiệm vụ là thiết kế 1 chiếc đồng hồ thời gian thực có chế độ
dùng cho đồng hồ thể thao, và có thể hẹn giờ trong quá trình làm thực nghiệm thấy
rằng khi làm chúng ta thấy rất nhiều cái sai sót trong quá trình làm và cũng đã
được khắc phục đồng thời cũng học được nhiều kinh nghiệm trong quá trình làm.
Kết quả thực nghiệm cuối cùng cho thấy kết quả là mạch chạy ổn định.
HƯỚNG PHÁT TRIỂN CỦA ĐỒ ÁN MÔN HỌC
Thiết kế và làm nhiều ứng dụng hơn nữa từ đồng hồ thời gian thực, chúng ta
hướng phát triển đề tài làm một chiếc đồng hồ thời vạn niên để nâng cao kiến thức
và hiểu thêm về hoạt động của IC thời gian thực, và nâng cao khản năng lập trình.
Trang 25

×