Chức năng của khối RTC-DS1307: DS1307 là chip có bộ dao động và nguồn pin riêng,có chức năng tạo và lưu trữ thông số thời gian có độ chính xác cao.. Chức năng của khối điều chỉnh : Chức
Trang 1CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG CHUÔNG BÁO
TRƯỜNG HỌC 1.1 Sơ đồ khối :
1.2 Chức năng các khối:
1.2.1 Chức năng của khối RTC-DS1307:
DS1307 là chip có bộ dao động và nguồn pin riêng,có chức năng tạo và lưu trữ thông số thời gian có độ chính xác cao.
Cấu tạo chip gồm 64 thanh ghi trong đó có các thanh ghi đầu tiên lưu trữ giá trị về giây,phút giờ,thứ,ngày, tháng ,năm,và thanh ghi điều khiển.các thanh ghi còn lại có vai trò như bộ ram ngoài.
Để có thể đọc thời gian cũng như chỉnh sửa thông của chip ta dung giao thức I2C
để giao tiếp với chip thông qua 2 chân SDA và SCL.
Hình 1.1 Cấu trúc bộ nhớ của DS1307
Trang 21.2.2 Chức năng của khối điều chỉnh :
Chức năng của khối này là sử dụng ngắt của 89c51 để yêu cầu việc điều chỉnh time theo ý của người sử dụng , cài đặt time ban đầu cho đồng hồ thời gian thực RTC.
Tác động bởi các phím bấm (BUTTON).
1.2.3 Khối âm thanh
Khối này gồm có transistor thông dòng cho loa kêu khi có mức điện áp thay đổi liên tục ở chân ra của vi điều khiển
1.2.4 Khối hiển thị
Khối này thực chất là LCD 16x2 để hiển thị time và các thông tin mà lập trình viên cần hiển thị
1.2.5 khối xử lý (vi điều khiển 89c51)
Vi điều khiển 89C51 là trung tâm xử lý các thông tin của mạch Cụ thể là :
AT89C51 đảm nhiệm việc đọc thời gian từ DS1307, chuyển đổi dữ liệu qua lại giữa RTC với LCD để có thể hiển thị lên LCD , đồng thời cập nhật time từ DS1307
• Điều khiển LCD
• Kiểm tra phím bấm
• Điều khiển loa Nói tóm lại là, VĐK làm nhiệm vụ đọc time trên DS1307 sau đó nó kiểm tra xem ngắt được tác động hay không? nếu có thì điều chỉnh time, hiển thị time lên LCD , kiểm tra xem giờ hiện tại có bằng giờ báo chuông hay không ? nếu có thì gọi chương trình điều khiển chuông kêu !
1.3 Nguyên lý hoạt động
Khi đã đảm bảo cấp nguồn cho các mạch ổn định , mạch sẽ hoạt đông như sau: Ban đầu khi khởi động nó sẽ thực hiện việc đọc dữ liêu trên DS1307 và hiển thị ngày giờ hiện tại lên LCD.
Kế tiếp nếu có ngắt gọi đến tức tác động vào phím để điều chỉnh thời gian (tăng hoặc giảm) cho RTC , khi đó vi điều khiển sẽ điều khiển việc tăng hay giảm time (ngày , tháng , năm , thứ , giờ , phút ), theo ý muốn của người sử dụng Khi cài đặt
Trang 3xong thì LCD sẽ trở về màn hình lúc trước và hiển thị thời gian theo time đa cài đặt và hoạt động.
Trong quá trình time hiện tại được hiển thị trên LCD mà ta thấy thì vi điều khiển luôn thực hiển kiểm tra (lặp lại việc kiểm tra ) time hiện tại xem xem có trùng với mốc thời gian vào tiết học hay kết thúc tiết học hay không ? Nếu có , thì nhảy tới chương trình báo chuông và đổ chuông báo , thời gian chuông dài hay ngắn có thể thay đổi trên code, là do người lập trình thiết lập, thiết lập mốc thời gian theo ý muốn Tức là, cứ thỏa mãn điều kiện time hiện tại bằng với time hẹn trước sẽ có chuông reo.
Trang 4CHƯƠNG 2 XÂY DỰNG LƯU ĐỒ THUẬT TOÁN 2.1 Lưu đồ thuật toán điều khiển :
Trang 52.2 Mã cho LCD:
Trang 62.3 Mạch mô phỏng trên proteus
Trang 7CHƯƠNG 3 CODE LỆNH CHƯƠNG TRÌNH
Trang 8LJMP MAIN;LENH DAI 3BYTE
MAIN:
SETB EX0 ;CHO PHEP NGAT NGOAISETB EX1
SETB IT1SETB PX1 ;UU TIEN MUC CAO NGAT INT1SETB PX0
MOV R3,#10MOV R4,#10MOV R5,#10
; -khoi tao TIME cho
ds1037 -INIT_RTC:
MOV R3,#1
Trang 9MOV R4,#1MOV R5,#1
MOV R3,#100MOV R4,#10MOV R5,#10
SETB SETUP_FLAG;BAT CO BAO DANG SETUPMOV A,MENU
CJNE A,#9,NOT9MOV A,#0
SJMP EQUA0 NOT9: INC A;TANG MENU LEN 1
Trang 10CJNE A,#1,SET_HOURMOV A,#08H;SET HOUR10SJMP NHAYPOINT
SET_HOUR:
CJNE A,#2,SET_MINU10MOV A,#09H;SET HOUR DON VISJMP NHAYPOINT
SET_MINU10:
CJNE A,#3,SET_MINU;NHAY DEN SET MINU DON VIMOV A,#0BH;SET MINU10
SJMP NHAYPOINTSET_MINU:
CJNE A,#4,SET_DATE10 ;NHAY DEN SET DATE10MOV A,#0CH;SET MINU DON VI
SJMP NHAYPOINTSET_DATE10:
CJNE A,#5,SET_DATEMOV A,#48H;SET DATE10SJMP NHAYPOINT
SET_DATE:
CJNE A,#6,SET_MONTH10MOV A,#49H;SET DATE DON VISJMP NHAYPOINT
SET_MONTH10:
CJNE A,#7,SET_MONTHMOV A,#4BH;SET MONTH10SJMP NHAYPOINT
SET_MONTH:
CJNE A,#8,SET_YEARMOV A,#4CH;SET MONTH DON VISJMP NHAYPOINT
SET_YEAR:
Trang 11CJNE A,#9,MENURESETMOV A,#4FH;SET YEAR DON VISJMP NHAYPOINT
MENURESET:
MOV MENU,#0NHAYPOINT: ;NHAY CON TRO TAI VI TRI SETUP
SJMP END_SETUPEND_SET:
END_SETUP:
RETIDOC_TIME:
MOV R3,#1MOV R4,#1MOV R5,#1
Trang 12MOV R2,#7MOV R1,#SECDOC_TIEP:
lcall loop
MOV @R1,BYTE_RINC R1
DJNZ R2,DOC_TIEP;doc 7 byte dau
MOV BYTE_W,#11010000B;GHI SLAVE
MOV R0,#8 ;SO LAN LAPCLR SCL
MOV A,BYTE_W
Trang 13XUAT_BIT:
MOV SDA,CSETB SCLNOP CLR SCLDJNZ R0,XUAT_BITRET
DOC_BYTE:
MOV R0,#8 ;DOC 8BIT DOC_bit:
nopSETB SDANOP
nopSETB SCLNOP
nopMOV C,SDARLC ACLR SCLDJNZ R0,DOC_BITMOV BYTE_R,A ;CAT BYTE DOC DC VAO BYTE_RRET
START_BIT:
SETB SCLnop
nopCLR SDANOP
CLR SCL
Trang 14nopCLR SDANOP
nopSETB SCLnop
nopSETB SDANOP
nopRETRECV_ACK:CLR SCLSETB SDANOP
nopSETB SCLMOV C,SDANOP
nopCLR SCLRET
SEND_ACK:CLR SDANOP
nopSETB SCLNOP
nop
Trang 15CLR SCLRET
NOT_ACK:
SETB SDANOP
nopSETB SCLnop
CLR SCLret
CLR RWSETB EnopCLR ELCALL TEST_BFMOV DBx,#00001100B ;DISPLAY ON/OFF CLR RS
CLR RWSETB Enop
Trang 17;HIEN THI DATE
Trang 19RR A;QUAY PHAI 4BITADD A,#30H
SETB RSCLR RWINC DPTRCLR A
MOV DBX,ASETB ECLR E
DJNZ R0,WRITE_STRRET
TOADO:;( toa do can ghi, A)
Trang 20CLR RSCLR RWORL A,#10000000BMOV DBX,A;GHI TU O THU aSETB E
nopCLR ERET
CLR RSCLR RWMOV DBX,#00001111B ;NHAY CON TROSETB E
nopCLR ERET NOT_NHAPNHAY:
CLR RSCLR RWMOV DBX,#00001100B ;NHAY CON TROSETB E
nopCLR ERETTEST_BF:
Trang 21SETB E
SETB RSCLR RWret
nopnopnopnopretEND
Trang 22Mục lục
Chương 1.Tổng quan về hệ thống chuông báo trường học……… 1
1.1 Sơ đồ khối ……… 1
1.2 Chức năng của các khối……… 1
1.3 Nguyên lý hoạt động……… 3
Chương 2 Xây dựng lưu đồ thuật toán……… 4
2.1.Lưu đồ thuật toán điều khiển……… 4
2.2.Mã cho LCD……… 5
2.3.Mạch mô phỏng trên Proteus……… 6
2.4.Lưu đồ thuật toán điều khiển……….3
Chương 3.CODE cho chương trình……… 7