Xem mẫu
- REAL TIMER CLOCK DS1307
Chương1: ĐỒNG HỒ SỐ
Mục Đích.
Để làm một đồng hồ số chính xác và không bị mất giờ khi
mất điện thì cách tối ưu nhất là dùng REAL TIMER CLOCK
Các linh kiện sử dụng
AT89C51
DS1307
3. 4511
4. 74HC138
REAL TIMER CLOCK:
DS1307 đếm giờ, phút, giây, thứ, ngày, tháng, năm. Và có thêm
56 byte NVRAM (ram không bay hơi). Xuất xung chuẩn 4 tần
số cố định.
Điều kiện start: SDA từ mức cao xuống mức thấp khi SCL ở
mức sao
Điều kiện STOP: SDA từ mức thấp lên mức cao khi SCL ở mức
cao
DATA: sau khi phát START và chỉ được thay đổi dữ liệu khi
SCL ở mức thấp dữ liệu phát, và nhận bít cao trước
BUS không bận; khi SCL và SDA ở mức cao,
- READ:
WRITE:
sơ đồ nguyên lý
Các giải thuật:
Code:
CHƯƠNG TRÌNH CHÍNH
;DIEU KHIEN REAL TIME CLOCK
;CONNECTION
;SDA =P0.0
;SCL =P0.1
;DATA_LCD P1
;KEYPAD P2
;R5 CHO TRUOGN TRINH LAP
- ;WRITE_TEXT CHI GHI DONG DUOI CUA LCD
$MOD51
SDA BIT P3.0
SCL BIT P3.1
RS BIT P3.2
RW BIT P3.3
EN BIT P3.4
CLR_LED BIT P3.5
EN1 BIT P0.0
EN2 BIT P0.1
EN3 BIT P0.2
EN4 BIT P0.3
EN5 BIT P0.4
EN6 BIT P0.5
EN7 BIT P0.6
DATA_LCD EQU P1
KEYPAD EQU P2
;FLAGS DATA 20H
AM_PM BIT 00H
_12_24 BIT 01H
- SQW BIT 02H
ACK BIT 03H
NO_START BIT 04H
_2W_BUSY BIT 05H
NO_KEY BIT 07H
LAST_READ BIT 08H
OSC BIT 06H
BIT_ESC BIT 08H;NUT QUAY LAI
KHONG CAI DAT NUA
BITCOUNT DATA 22H
BYTECOUNT DATA 23H
CURSOR DATA 24H
;==================================
SECOND DATA 25H
MINUTE DATA 26H
HOUR DATA 27H
;==================================
DAY DATA 28H
DATE DATA 29H
MONTH DATA 2AH;NGAY
YEAR DATA 2BH;THU
- ;=================================
;================================
ORG 00H
LJMP MAIN
ORG 0BH
LJMP T0ISR
ORG 1BH
LJMP T1ISR
ORG 30H
LJMP MAIN
MAIN:
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV SP,#70H;NGAN XEP TU DIA CHI
71H
MOV IE,#00H
MOV TMOD,#11H
SETB EA;CHO PHEP NGAT TOAN CUC
SETB ET1;CHO PHEP TIMER 1 HOAT DONG
- MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TF1;BUOC NGAT TIMER 1
SETB SDA
LCALL SCL_HIGH
CLR ACK
CLR _2W_BUSY
MOV HOUR,#35H
MOV MINUTE,#23H
MOV SECOND,#10H
LOOP_READ:
lcall read_clock
JNB P3.7,HIENTHIGIO
LCALL DISPLAY_LED_DAY
LJMP KT_CAI_GIO
HIENTHIGIO:
LCALL DISPLAY_CLOCK_LED
KT_CAI_GIO: MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
LCALL DELAYT
- LCALL READ_CONTROL_KEY
CJNE A,#13H,LOOP_READ
LCALL GET_CLOCK
SJMP LOOP_READ
RET
nguon tai.lieu . vn