Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
219,5 KB
Nội dung
CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG CHUÔNG BÁOTRƯỜNGHỌ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 1 1.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ểnthị Khối này thực chất là LCD 16x2 để hiểnthị time và các thông tin mà lập trình viên cần hiểnthị . 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ểnthịlênLCD , đồ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ểnthị time lênLCD , kiểm tra xem giờ hiện tại có bằng giờ báochuô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ểnthị 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 2 xong thìLCD sẽ trở về màn hình lúc trước và hiểnthị thời gian theo time đa cài đặt và hoạt động. Trong quá trình time hiện tại được hiểnthị 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áochuông và đổ chuôngbá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. 3 CHƯƠNG 2. XÂY DỰNG LƯU ĐỒ THUẬT TOÁN 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 CHƯƠNG 3. CODE LỆNH CHƯƠNG TRÌNH #include <sfr51.inc> SELC bit p3.2 ;button (set time) UP bit p3.3 ;select RS bit P3.7 RW bit P3.6 E bit P3.5 BF bit P2.7 DBx equ P2 ;DB7-DB0 SDA BIT P1.1 ; BIT DATA SCL BIT P1.0 ; XUNG CLOCK byte_r DATA 30H ; SALVE_ADD DATA 31H ; DIA CHI BYTE BYTE_W DATA 32H ; du lieu ghi SEC DATA 33H ;GIAY MINU DATA 34H ;PHUT HOUR DATA 35H ;GIO DAY DATA 36H ;THU DATE DATA 37H ;NGAY MONTH DATA 38H ;THANG YEAR DATA 39H ;NAM MENU DATA 3AH ;TRANG THAI CHON SETUP COUNT9 DATA 3BH ;DEM MOD9 MOD6 DATA 3CH MOD3 DATA 3DH MOD9 DATA 3EH mod2 data 3fh MOD1 DATA 40H ADDREG DATA 41H ;DIA CHI THANH GHI TIME setup_flag bit 09h ;co bao ban setup FLAG BIT 08H ;ENABLE TIMEDATA org 00h 7 LJMP MAIN;LENH DAI 3BYTE LJMP EXISR0 ;VECTOR NGAT 0 ORG 020H DBx:DB ' TIME ','DATE ' ORG 100H MAIN: SETB EA ;CHO PHEP NGAT TOAN CUC SETB EX0 ;CHO PHEP NGAT NGOAI SETB EX1 SETB IT0 ;NGAT NGOAI SUON AM SETB IT1 SETB PX1 ;UU TIEN MUC CAO NGAT INT1 SETB PX0 MOV R3,#10 MOV R4,#10 MOV R5,#10 LCALL DELAY;DELAY=100MS LCALL INIT_LCD LCALL INIT_RTC lap: MOV R3,#250 MOV R4,#250 MOV R5,#1 LCALL DELAY LCALL INIT_LCD LCALL DOC_TIME LCALL LOAD_TIME SETTING:JB setup_flag,SETTING SJMP lap ; khoi tao TIME cho ds1037 INIT_RTC: MOV R3,#1 8 MOV R4,#1 MOV R5,#1 LCALL DELAY LCALL START_BIT MOV BYTE_W,#11010000B;GHI SLAVE LCALL SEND_BYTE LCALL RECV_ACK MOV BYTE_W,#06H;ADD_REG=06H LCALL SEND_BYTE LCALL RECV_ACK MOV BYTE_W,#12H ;SET nam LCALL SEND_BYTE LCALL RECV_ACK LCALL STOP_BIT RET EXISR0: ;( VECTOR NGAT 0) MOV R3,#100 MOV R4,#10 MOV R5,#10 LCALL DELAY SETB SETUP_FLAG;BAT CO BAO DANG SETUP MOV A,MENU CJNE A,#9,NOT9 MOV A,#0 SJMP EQUA0 NOT9: INC A;TANG MENU LEN 1 EQUA0:MOV MENU,A MOV R6,A ;CAT MENU VAO R6 CJNE A,#0,SET_HOUR10 CLR SETUP_FLAG;MENU BANG 0 THI THOAT SETUP SJMP END_SET SET_HOUR10: 9 CJNE A,#1,SET_HOUR MOV A,#08H;SET HOUR10 SJMP NHAYPOINT SET_HOUR: CJNE A,#2,SET_MINU10 MOV A,#09H;SET HOUR DON VI SJMP NHAYPOINT SET_MINU10: CJNE A,#3,SET_MINU;NHAY DEN SET MINU DON VI MOV A,#0BH;SET MINU10 SJMP NHAYPOINT SET_MINU: CJNE A,#4,SET_DATE10 ;NHAY DEN SET DATE10 MOV A,#0CH;SET MINU DON VI SJMP NHAYPOINT SET_DATE10: CJNE A,#5,SET_DATE MOV A,#48H;SET DATE10 SJMP NHAYPOINT SET_DATE: CJNE A,#6,SET_MONTH10 MOV A,#49H;SET DATE DON VI SJMP NHAYPOINT SET_MONTH10: CJNE A,#7,SET_MONTH MOV A,#4BH;SET MONTH10 SJMP NHAYPOINT SET_MONTH: CJNE A,#8,SET_YEAR MOV A,#4CH;SET MONTH DON VI SJMP NHAYPOINT SET_YEAR: 10 [...]... quan về hệ thống chuông báotrườnghọ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... SETB SCL MOV C,SDA NOP nop CLR SCL RET SEND_ACK: CLR SDA NOP nop SETB SCL NOP nop 14 CLR SCL RET NOT_ACK: SETB SDA NOP nop SETB SCL nop CLR SCL ret ; -end lenh ds1037 ; -funtion LCD INIT _LCD: MOV DBx,#00111000B ; N=1, F=1 CLR RS ;RS = 0 CLR RW ;RW = 0 CHE DO GHI VAO IR SETB E nop CLR E LCALL TEST_BF MOV DBx,#00000001B ;xoa man hinh CLR RS CLR RW SETB E nop CLR E LCALL TEST_BF MOV... A,YEAR;HIEN 10YEAR ANL A,#11110000B RR RR A RR 18 A A RR A;QUAY PHAI 4BIT ADD A,#30H LCALL W_CHAR MOV A,YEAR;HIEN DON VI YEAR ANL A,#00001111B ADD A,#30H LCALL W_CHAR RET ; LOAD TIME END ;FUNTION LCD W_CHAR: lcall ;(KI TU CHUA TRONG A) test_bf SETB RS ;THANH GHI DATA CLR RW ;CHE DO GHI DR MOV DBX,A SETB E CLR E RET WRITE_STR: SETB RS CLR RW INC DPTR CLR A MOVC A,@A+DPTR MOV DBX,A SETB E CLR E LCALL TEST_BF DJNZ... LCALL SEND_ACK MOV @R1,BYTE_R INC R1 DJNZ R2,DOC_TIEP;doc 7 byte dau LCALL DOC_BYTE ;doc byte thu 8 LCALL NOT_ACK LCALL STOP_BIT RET ; -lenh ds1037 -;(NOI DUNG THANH GHI CHUA TRONG R1,DIA CHI TIME RESGISTOR TRONG ADDREG) SET_TIME: LCALL START_BIT MOV BYTE_W,#11010000B;GHI SLAVE LCALL SEND_BYTE LCALL RECV_ACK MOV BYTE_W,ADDREG;(DIA CHI THANH GHI ) LCALL SEND_BYTE LCALL RECV_ACK MOV BYTE_W,R1 . HOUR10 SJMP NHAYPOINT SET_HOUR: CJNE A,#2,SET_MINU10 MOV A,#09H;SET HOUR DON VI SJMP NHAYPOINT SET_MINU10: CJNE A,#3,SET_MINU;NHAY DEN SET MINU DON VI MOV A,#0BH;SET MINU10 SJMP NHAYPOINT SET_MINU: CJNE. ;UU TIEN MUC CAO NGAT INT1 SETB PX0 MOV R3,#10 MOV R4,#10 MOV R5,#10 LCALL DELAY;DELAY=100MS LCALL INIT_LCD LCALL INIT_RTC lap: MOV R3,#250 MOV R4,#250 MOV R5,#1 LCALL DELAY LCALL INIT_LCD LCALL. DATE10 MOV A,#0CH;SET MINU DON VI SJMP NHAYPOINT SET_DATE10: CJNE A,#5,SET_DATE MOV A,#48H;SET DATE10 SJMP NHAYPOINT SET_DATE: CJNE A,#6,SET_MONTH10 MOV A,#49H;SET DATE DON VI SJMP NHAYPOINT SET_MONTH10: CJNE