Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 1
Mục lục
....................................................................................................................Trang
Lời nói đầu...................................................................................................... 1
Chương 1 :Giới thiệu đề tài .............................................................................
1. Giới thiệu................................................................................................
2. Sơ đồ khối ..............................................................................................
3. Chức năng các khối ................................................................................
Chương 2: Giới thiệu phần cứng .....................................................................
1. Sơ đồ mạch.............................................................................................
2.
Giới thiệu các linh kiện có trong mạch ..................................................
2.1. AT89S52..........................................................................................
2.2. LCD .................................................................................................
2.2.1. Chức năng các chân..................................................................
2.2.2. Sơ đồ khối của HD44780 .........................................................
2.2.3. Tâập lệnh của LCD ..................................................................
2.2.4. Biểu đồ thời gian ......................................................................
2.3. IC thời gian thực DS1307 ...............................................................
2.3.1. Chức năng các chân..................................................................
2.3.2. Một vài thông số kỹ thuật.........................................................
2.3.3. Sơ
đồ khối của DS1307...........................................................
2.3.4. Truyền dữ liệu trên bus 2 dây nối tiếp.....................................
2.3.5. Hai chế độ hoạt động của DS1307 ..........................................
2.3.6. Biểu đồ thời gian .....................................................................
Chương 3: Thiết kế chương trình ....................................................................
1. Mạch mô phỏng....................................................................................
2. Thuật toán
1. Giới Thiệu:
Trong các ứng dụng dân dụng và cơng nghiệp, các bộ vi mạch vi điều khiển được
ứng dụng rộng rãi và đã phát huy được tính năng ưu việt của nó và ngày càng được sử
dụng rộng rãi. Việc sử dụng các bộ vi điều khiển để điều khiển các cơng việc mang
tính lặp lại có chu kỳ là cần thiết để thay thế sự giám sát của con người. Ở đây em xin
trình bày việc ứ
ng dụng vi điều khiển để hiển thị, báo giờ thời gian thực trên LCD.
2. Sơ đồ khối:
3. Chức năng các khối:
+ Khối điều chỉnh gồm 4 nút nhấn để đặt, hiệu chỉnh và hẹn thời gian.
+ Khối hiển thị là LCD.
+ Khối điều khiển sử dụng vi điều khiển AT89S52 điều khiển tồn bộ các hoạt động
chính của mạch : nhận tín hiệu điều khiển của khối điều chỉnh và tìn hiệu của từ con thời
Mạch nguồn
:
D1
POWER
J3
OUT 5V
1
2
C6
104U
C4
1000U
VCC
R11
330
R12
10/2W
C5
1000U
U3
7805
1 3
2
VIN VOUT
GND
Q5
BJT 633
D2
5A
J11
P17
Y1
12M
UP
DOWN
XTAL2
C1
33P
J5
NAP 89S
1
2
3
4
5
6
DOWN
P17
VCC
RESET
SW3
DOWN
P16
VCC
RN2
10K
2
3
4
5
9
18
19
29
30
31
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P15
SET ALARM
SW4
UP
VCC
XTAL2
SCL
VCC
SET TIME
ALARM
SDA
C2
33P
J1
4
7
51
2
6
3
8
GND
SQW/OUT
SDAX1
X2
SCL
VBAT
VCC
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 5
Mạch hiển thị:
VCC
VCC
D0
D7
D2
D4
D2
D0
D1
D2
D3
D4
D5
D6
D7
A
K
LED
J2 4 BIT
1
2
3
4
5
6
7
8
RW
J1 8 BIT
1
2
3
4
5
6
7
8
2. Giới thiệu về các linh kiện trong mạch
2.1. AT89S52:
AT89S52 cũng có cấu trúc phần cứng giống như các vi điều khiển khác trong họ 8051
và còn có các đặc trưng riêng:
+ Bộ nhớ 8k
+ So với 89C, nó có chân MISO (P1.5), MOSI (P1.6), SCK (P1.7) nên có thể nạp
ISP
AT89S52
9
18
19
29
30
31
1
2
3
4
5
6
7
8
21
22
23
24
25
P1.5/MISO
P1.6/MOSI
P1.7/ACK
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
Hình : Sơ đồ chân 89S52
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
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 DB0-DB7 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-14
DB0-
DB7
Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2
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 là bit
DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit
MSB là DB7.
15,16 A,K Đèn của LCD
2.2.2. Sơ đồ khối của HD44780:
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong lớp
vỏ và chỉ đưa các chân giao tiếp cần thiết. Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 7
Hình:Sơ đồ khối của HD44780
b. Cờ báo bận BF(Busy Flag):
Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảng thời
gian để hoàn tất. Khi đang thực thi các hoạt động bên trong chip như thế, LCD bỏ qua
mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi có thiết lập RS=0,
R/W=1) lên để báo cho MPU biết nó đang “bận”. Dĩ nhiên, khi xong việc, nó sẽ đặt cờ
BF lại mức 0.
c. Bộ Đếm địa chỉ AC (Address Counter):
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM (DDRAM
và CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối với 2 vùng RAM theo
kiểu rẽ nhánh. Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông tin được nối trực
tiếp cho 2 vùng RAM nhưng việc chọn lựa vùng RAM tương tác đã được bao hàm trong
mã lệnh.
d. Vùng Ram hiển thị DDRAM(Display Data RAM):
Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM là một ô kí
tự trên màn hình và khi bạn ghi vào vùng RAM này một mã 8 bit, LCD sẽ hiển thị tại vị
trí tương ứng trên màn hình một kí tự có mã 8 bit mà bạn đã cung cấp.
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 9
Vùng RAM này có 80x8 bit nhớ, nghĩa là chứa được 80 kí tự mã 8 bit. Những vùng
RAM còn lại không dùng cho hiển thị có thể dùng như vùng RAM đa mục đích.
e. Vùng ROM chứa ký tự đồ họa:
Vùng ROM này dùng để chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí tự, và
định địa chỉ bằng 8 bit. Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mẫu kí tự kiểu 5x10
home
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 0 0 0 0 1 *
Lệnh Return home trả bộ đếm địa chỉ AC về 0, trả lại kiểu hiển thị
1.52
ms
Hình:Mối quan hệ
giữa địa chỉ của
DDRAM và vị trí hiển
thị của LCD
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 10
gốc nếu nó bị thay đổi. Nội dung của DDRAM không thay đổi
Entry
mode set
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 0 0 0 1 [I/D] S
I/D : Tăng (I/D=1) hoặc giảm (I/D=0) bộ đếm địa chỉ hiển thị AC 1
đơn vị mỗi khi có hành động ghi hoặc đọc vùng DDRAM. Vị trí con
trỏ cũng di chuyển theo sự tăng giảm này.
S : Khi S=1 toàn bộ nội dung hiển thị bị dịch sang phải (I/D=0) hoặc
sang trái (I/D=1) mỗi khi có hành động ghi vùng DDRAM. Khi S=0:
không dịch nội dung hiển thị. Nội dung hiển thị không dịch khi đọ
c
DDRAM hoặc đọc/ghi vùng CGRAM.
37
us
dịch theo
37
us
Function
set
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 1 [DL] [N] [F] * *
DL: Khi DL=1, LCD giao tiếp với MPU bằng giao thức 8 bit (từ
bit DB7 đến DB0). Ngược lại, giao thức giao tiếp là 4 bit (từ bit DB7
đến bit DB0). Khi chọn giao thức 4 bit, dữ liệu được truyền/nhận 2
lần liên tiếp. với 4 bit cao gởi/nhận trước, 4 bit thấp gởi/nhận sau.
N: Thiết lập số hàng hiển thị. Khi N=0 : hiển thị 1 hàng, N=1: hiển
thị 2 hàng.
F : Thiết lập kiểu kí t
ự. Khi F=0: kiểu kí tự 5x8 điểm ảnh, F=1: kiểu
kí tự 5x10 điểm ảnh.
37
us
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 11
* Chú ý:
• Chỉ thực hiện thay đổi Function set ở đầu chương trình. Và
sau khi được thực thi 1 lần, lệnh thay đổi Function set không
được LCD chấp nhận nữa ngoại trừ thiết lập chuyển đổi giao
thức giao tiếp.
• Không thể hiển thị kiểu kí tự 5x10 điểm ảnh ở kiểu hiển thị 2
hàng
Set
(RS=0, R/W=1).
Khi cờ BF bật, LCD đang làm việc và lệnh tiếp theo (nếu có) sẽ bị bỏ
qua nếu cờ BF chưa về mức thấp. Cho nên, khi lập trình điều khiển,
bạn phải kiểm tra cờ BF trước khi ghi dữ liệu vào LCD.
Khi đọc cờ BF, giá trị của AC cũng được xuất ra các bit [AC]. Nó là
địa chỉ của CG hay DDRAM là tùy thuộc vào lệnh trước đó.
0
us
Write
data to
CG or
DDRAM
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = [Write data] (RS=1, R/W=0)
Sau khi ghi, bộ đếm địa chỉ AC tự động tăng/giảm 1 tùy theo thiết lập
Entry mode. Lưu ý là thời gian cập nhật AC không tính vào thời gian
thực thi lệnh.
40
us
Read
data
from
CG
or
DDRAM
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = [Read data] (RS=1, R/W=1)
Khi thiết lập RS=1, R/W=1,dữ liệu từ CG/DDRAM được chuyển ra
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ị.
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.
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 14
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
SQW/OUT(square wave/output driver)- khi được kích hoạt thì bit SQWE được
thiết lập, 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.
2.3.2. Một vài thông số kỹ thu
ật:
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 NV 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ó thể chạy ở chế độ 24h cũng như 12h. Bit thứ 6 của thanh ghi hours là
bit chọn chế độ 24h hoặc 12h. khi bit này ở mức cao thì chế độ 12h được chọn. ở chế độ
12h thì bit 5 là bit AM/PM với mức cao là là PM. ở chế độ 24h thì bit 5 là bit chỉ 20h(từ
20h đến 23h).
Trong DS1307 có một thanh ghi điều khiển để điều khiển hoạt động của chân
SQW/OUT.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
OUT 0 0 SQWE 0 0 RS1 RS0
OUT(output control):bit này điều khiển mức ra của chân SQW/OUT khi đầu ra
xung vuông bị cấm. Nếu SQWE=0 thì mức logic ở chân SQW/OUT sẽ là 1 nếu
OUT=1,và =0 nếu OUT=0
SQWE(square wave enable): bit này được thiết lập 1 sẽ cho phép đầu ra của bộ tạo
dao động. Tần số của đầu ra sóng vuông phụ thuộc vào giá trị của RS1 và RS0.
khiển thông điệp gọi là Master. Thiết bị được điều khiển bởi Master được gọi là Slaver. Đường
truyền (Bus) phải được điề
u khiển bởi thiết bị master mà phát ra xung nối tiếp (Serial
Clock_SCL) điều khiển sự truy cập đường truyền và phát ra điều kiện bắt đầu, dừng (Start ,Stop
condition). DS1307 hoạt động như là Slave trên bus 2 dây.
Hình: Cấc hình bus 2 dây điển hình
Việc truyền dữ liệu chỉ có thể được bắt đầu khi bus không bận
Trong lúc truyền dữ liệu, đường dữ liệu phải ổn định bất cứ khi nào đường Clock
là cao (High).
Do đó, các điều kiền về đường truyền sau được định nghĩa:
• Bus not busy:cả đường dữ liệu và xung đều ở mức cao (High)
• Start data transfer: m
ột sự thay đổi trong trang thái của đường dữ liệu từ HIGH -
LOW trong khi xung clock vẫn cao (H), đây là điều kiện bắt đầu (Start
Condition).
• Stop data transfer: một sự thay đổi trong trang thái của đường dữ liệu từ LOW -
HIGH trong khi xung clock vẫn cao (H), đây là điều kiện dừng (Stop
Condition) .
• Data valid: trạng thái của đường dữ liệu biểu diễn dữ liệu hợp lệ khi mà : sau điều
kiện Start đườ
ng dữ liệu ổn định trong khoảng thời gian chu kỳ cao (HIGH) của
RS1 RS0 Tần số xung vuông
0 0 1Hz
0 1 4,096kHz
1 0 8,192kHz
1 1 32,768kHz
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 17
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
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 18
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.3.5. Hai chế độ hoạt động của DS1307:
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 đó master sẽ truyền điều kiện STOP khi việc ghi
hoàn thành.
1. Mạch mô phỏng Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 21 2. Thuật toán:
E=[1]
E=[0]
RET
No
Yes
BF=[1]
LCD_Port=#0FFh
RS=[0]
RW=[1]
check BF
dptr ++
No
Yes
RET
CMD
A=End_Sig ?
A=@A+dptr
A=[0]
Out_Cmd
RET
"ALARM OFF"
Alarm_port=[1]
Yes
No
A_Ring=[0]?
Alarm_Flag = [1]
EX1ISR
RET
A=A+70h
A.B
B=[0Ah]
70h? B
Hex_Dec
B=[10h]
A/B
DTA
BF=
[
1]?
Yes
No
RS=[1]
RW=[0]
E=
Sta_Cond
Đồ án VĐK: Đồng hồ thời gian thực hiển thị LCD
SVTH: Hoàng Văn Ngân - Triệu Văn Lục Trang 24
RET
Push ms
TR0 =[0]
No
Yes
ms=[0]?
ms --
TF0 = [0]
Delayms
Push ms
Timer 0, Mode1
TF0 = 0 ?
Yes
No
Delay 50ms
Th0= #High(50000)
TL0= #Low(50000)
TR0 =[1]
RET
Pop ACC
A=A+[30h]
A & 0Fh
DTA
Pop ACC
Push ACC
EA = [1]
Alarm_Alarm
Yes
No
A_Ring=[0]?
Yes
Alarm_Flag = [0]
Alarm_ON= [0]
No
Alarm_Flag=[0]?
Yes
Set_Time
EA = [0]
Time_Flag= [0]
No
Yes
Time_Flag=[0]?
Disp_RTC
Sto_Cond
Byte_Count=[8]?
No
R1 ++
Byte_Count ++
Yes
@R1? A
ACC.7 = [0]
A? @R1
No
Byte_Count=[0]?
@R1? A