Sử dụng vi điều khiển PIC 16f877a thực hiện lịch vạn niên bao gồm hiện thị giờ; phút; giây; ngày; tháng; năm hiệu chỉnh thời gian thông qua nút bấm bên ngoài

41 898 1
Sử dụng vi điều khiển PIC 16f877a thực hiện lịch vạn niên bao gồm hiện thị giờ; phút; giây; ngày; tháng; năm  hiệu chỉnh thời gian thông qua nút bấm bên ngoài

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Sử dụng vi điều khiển PIC 16f877a thực hiện lịch vạn niên bao gồm hiện thị giờ; phút; giây; ngày; tháng; năm hiệu chỉnh thời gian thông qua nút bấm bên ngoài

LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 Lời mở đầu Hầu hết ứng dụng vi xử lý có mặt tất ngành nghề Ờ nước phát triển cơng nghệ xử lý máy tính thơng dụng Việc xuất phát triển vi xử lý giúp ngi đạt thành tựu vượt bậc thời gian ngắn Tuy ảnh hưởng chip vi xử lý vơ to lớn sống người khơng có người tính tốn vượt qua chip vi xử lý, chip vi xử lý phải chịu điểu khiển người Với đề tài: ứng dụng vi điều khiển pic 16F877A làm lịch vạn niên cho thấy vi điều khiển sử dụng rộng rãi, gẫn gũi với sống ngày Việc thực đề tài mang lại nhiều kinh nghiệm việc tiếp cận với vi điểu khiển mới, qua mở nhiều thuận lợi cho việc phát triển đề tài làm quen vi điều khiển đại ĐỂ TÀI: Sử dụng vi điều khiển PIC 16F877A thực lịch vạn niên bao gồm thị giờ; phút; giây; ngày; tháng; năm Hiệu chỉnh thời gian thơng qua nút bấm bên ngồi Ý tưởng thực hiện: Khối thời gian: Sử dụng IC đếm thời gian thực DS12C887+ để thực việc đếm thời gian Vì RTC (real time counter) chun dùng để đếm thời gian thực với sai số thấp (điều kiện lý tưởng sai số tháng giây) Ngồi ra, RTC hỗ trợ việc định thời mở rộng ứng dụng sau Đặc biệt DS12C887+ sử dụng thạch anh nội tự dao động thơng qua nguồn pin tích hợp sẵn bên Điều giúp giảm sai sót việc thiết kế mạch thach anh http://www.ebook.edu.vn LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 pin bên ngồi Bên cạnh việc giao tiếp song song với VĐK tạo điều kiện thuận lợi với giao tiếp nối tiếp Khối nút bấm điều khiển: bao gồm nút Nút (SET_TIME) cho phép truy cập vào phần hiệu chỉnh thời gian Nút (INC): tăng giá trị Nút 3(DEC): giảm giá trị Thiết kế nút bấm đơn giản dễ sử dụng Khi nút bấm, đồng hồ ngừng truy cập vào phần hiệu chỉnh đợi lệnh Sau dựa vào nút tăng giảm để xử lý Bấm bút để chuyển qua mục Sau hết mục, việc bấm nút quay lại việc chạy đồng hồ Khối hiển thị: sử dụng LCD 16x2 Bộ LCD 16x2 cách hiển thị thơng dụng bên cạnh dùng LED Ưu điểm việc dùng LCD dễ thị điều khiển, bên cạnh việc mở rộng đề tài đơn giản Với dòng chữ, dòng gồm 16 ký tự đủ để hiển thị Bộ điểu khiển: vi điểu khiển PIC 16F877A Cơng việc chủ yếu PIC điều khiển giao tiếp với phần khác mạch, việc sử dụng PIC 16F877A phí phạm PIC có nhiều cơng dụng tốt Các cơng dụng dùng phần mở rộng đề lài KHỐI HIỂN THỊ LCD 16x2 KHỐI ĐIỀU KHIỂN PIC 16F877A KHỐI THỜI GIAN THỰC KHỐI HIỆU CHỈNH IC DS12C887 NÚT BẤM B TÍNH TỐN THI CƠNG VÀ THIẾT KẾ B.1) KẾT NỐI THIẾT KẾ B.1.1) PIC LCD Giao tiếp PIC LCD theo sơ đồ tổng qt đơn cơng Tức liệu truyền từ PIC LCD Chế độ LCD chế độ truyền nhận bit Cổng giao tiếp với LCD port C, với http://www.ebook.edu.vn LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 bit 0-3 port C nối với bit D4-D7 LCD (D0-D3 khơng sử dụng nối đất) Bit port C nối chân EN; bit nối RS Do ta khơng có nhu cầu lấy liệu từ LCD nên chân W/R LCD coi nối đất, xác định ghi Thiết kế tiết kiệm với số lượng bit dùng bit để giao tiếp Mạch hiển thị (LCD): Thiết kế mạch hiển thị LCD bao gồm LCD 16x2 dùng hiển thị Một biến trở để điều chỉnh độ tương phản cho LCD Và điện trở để hạ áp cho LED đèn LCD B.1.2) PIC DS12C887 Giao tiếp PIC DS12C887 giao tiếp song song theo kiểu bán song cơng Tức thời điểm truyền theo chiều Ta kết nối sau: portD PIC port truyền liệu nối với AD0-AD7 RTC Port E PIC port điều khiển nối với chân DS,RW,AS RTC Mạch thời gian thực (DS12C887): tính ưu việt IC thời gian thực khác tích hợp thạch anh nguồn pin trự sẵn IC nên mạch thời gian thực đơn giản gồm IC tụ 104 để nối chân dương âm IC B.1.3) PIC nút nhấn Giao tiếp thực qua port B pic với nút TIME_SET bit2; INC la bit 5; DEC bit Lý cho việc xếp đáp ứng việc chạy dây mạch thực tế đơn giản lớp mạch Mạch hiệu chỉnh (nút bấm): Do PIC hoạt động 20mAvà 5V chân Khi chưa bấm nút nguồn 5V nối với chân PIC Nếu trường hợp chân input PIC chuyển thành output u cầu dòng vào phải nhỏ 20mA Như thiết kế ta dùng R có giá trị 4.7K Khi I=5/4.7K < 20mA đạt ưu cầu thiết kế B.1.4) Mạch điều khiển (PIC): Sử dụng thạch anh 4Mhz, chế độ XT Theo datasheet vi điều khiển PIC (trang 2-7) giá trị tụ chọn từ 15-30pF Trong mạch ta chọn giá trị tụ 22pF Bên cạnh ta có tụ 104 nối Vss Vdd PIC để giảm tình trạng sốc điện http://www.ebook.edu.vn LỊCH VẠN NIÊN DÙNG PIC 16F877A http://www.ebook.edu.vn NGUYỄN ĐỨC TRÍ-DV06 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 B.2) CHƯƠNG TRÌNH ĐIỀU KHIỂN B.2.1) Thuật tốn B.2.1.1) CHUONG TRINH CHINH Tắt ngắt RB0/INT Khởi động port: D,E: output B: Input Gọi: -INIT_LCD: khởi tạo LCD -INIT_DS12C887: khởi tạo Gọi: -UPDATE: Dữ liệu vào VDK -INIT_TRANSFER Bật ngắt RB0/INT TIME_SET S Có nhấn? Đ Gọi: -HIEUCHINHGIO: bắt đầu nhập thời gian Giải thích: Ta bắt đầu khởi tạo port sau tắt ngắt, nhằm tránh tình trạng chưa thiết lập xong ngắt dẫ đến điều khiển hệ thống Sau gọi trình khởi động cho LCD; RTC Ta phải chương trình UPDATE (Nvụ: cập nhật liệu từ RTC vào ô nhớ PIC); với mục đích thiết lập giá trò ban đầu cho PIC Sau ta gọi INIT_TRANSFER (Nvụ: xuất toàn hiển thò gia trò LCD); với mục đích thiết lập hiển thò ban đâu cho LCD lần sau hiển thò LCD, ta cập nhật thông số bò thay đổi Sau thiết lập, ta bật ngắt để nhận xung clk để cập http://www.ebook.edu.vn LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 nhật thời gian từ RTC Sau KT coi nut SET_TIME nhấn, có gọi chương trình SET_GIO; không; quay KT tiếp B.2.1.2) CHUONG TRINH CON INIT_LCD Port C: output Phát lệnh 0x01: CLR hình Kết thúc Phát lệnh RESET lần.( Mỗi lần Delay Phát lệnh 0x0C: bật 160US để chắn hiển thò tắt trỏ LCD nhận lệnh) Phát lệnh 0x02: thiết Phát lệnh 0x28: thiết lập chế độ truyền lập chế độ dòng 4bits 5x7 Giải thích: Port C port giao tiếp LCD (với bit 3-0:truyền liệu; bit 7: EN; bit 6: RS) Mỗi lần khởi động cho LCD cần 15ms Sau ta phải RESET lần đảm bảo không dũ liệu RAM LCD (lần delay 5ms; lần sau delay 160ms) Các giá trò delay tính theo datasheet LCD Rồi lệnh phát sau delay 160ms Các lệnh khởi động đề cập bảng tập lệnh điều hiển LCD trang xx B.2.1.3) CHUONG TRINH CON INIT_DS12C887 Giải thích Truyền giá trò 00101111 vào ghi A RTC; mục đích: x010xxxx : cho phép RTC hoạt động đếm theo TA nội, xxxx1111: thiết lập chế độ tạo xung CLK 2Hz chân SWQ với mục đích xác đònh thời điểm cập nhật liệu vào VĐK Tuyền giá trò 01011010 vào ghi B RTC; much đích: cho phép ngắt đònh thời; cho phép bật cờ ngắt đònh thời; bâth chế độ phát xung SWQ; chế đọ lưu BCD; đếm 24h/ngày http://www.ebook.edu.vn LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 Lưu vào ADD_W đòa ghi A Lưu vào giá trò 28H vào ghi A Gọi: CT WRITE_12C887 Lưu vào ADD_W đòa ghi B Lưu vào giá trò 5AH vào ghi B Gọi: CT WRITE_12C887 Kết thúc B.2.1.4) CHUONG TRINH CON UPDATE(IN:RTC; OUT:RAM) Giaỉ thích: Ngun tăc update đơn giản truy cập vào địa nhớ thời gian RTC lấy liệu (thong qua trình con: READ_12C887), lưu vào RAM VĐK Các giá trị lấy gồm: giây(0x00); phút(0x02); giờ(0x04); ngày(0x07); tháng(0x08); năm(0x09) http://www.ebook.edu.vn LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 Chuyển địa chứa biến giây vào ADD_R Gọi trình con: READ_12C887 Lưu giá tri DATA_R vào RAM_SEC … Chuyển địa chứa biến năm vào ADD_R Gọi trình con: READ_12C887 Lưu giá tri DATA_R vào RAM_YEA Kết thúc B.2.1.5) CHUONG TRINH CON INIT_TRANSFER (IN: RAM;OUT:LCD) Mục đích CT chuyển lần đầu tất giá trị lên LCD để tránh tinh trạng lần cập nhật phải chuyển hết lại, điều làm LCD nhấp nháy cập nhật Do thiết lập ban đầu nên để quy địnnh vị trí biến thời gian Trình khơng vẽ sơ đồ thuật tốn đơn giản, hiểu trực tiếp B.2.1.6) CHUONG TRINH CON WRITE_12C887 (IN:ADD_W , DATA_W; OUT:RTC) Mục đích trình liệu từ RAM nội VĐK qua RAM nội RTC Theo nghiên cứu qua datasheet RTC (theo tiêu chuẩn Intel, MOT=0) tóm tắt bước sau: B1: Đưa chân DS RW lên mức cao B2: Xuất giá trị cần ghi lên RAM RTC chân DATAPORT (portD) B3: Tạo cạnh xuống chân AS B4: Đưa liệu cần ghi vào đia nhớ vừa định RTC B5: Đưa chân RW mức thấp B6: Tạo cạnh lên chân AS http://www.ebook.edu.vn LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 Trong ASM CT có nhiểu lệnh NOP với mục đích tạo trễ chu kỳ máy để đảm bảo thời gian chuyển mức cho chân Chuyển địa cần ghi DATAPORT Khởi tạo port D port xuất Chuyển địa cần ghi DATAPORT Thiết lập DS, RW mức cao Tạo xung lên chân AS Chuyển giá trị cần ghi DATAPORT Thiết lập RW mức thấp Kết thúc Thiết lập AS mức cao B.2.1.7) CHUONG TRINH CON READ_RTC (IN: ADD_R;OUT:DATA_R) B1: đưa chân DS, RW, AS lên mức cao B2: Đưa địa ghi cần đọc RTC vào DATA_PORT B3: Tạo cạnh xuống chân AS B4: Tạo cạnh xuống chân DS B5: Khởi tạo DATA_PORT thành port nhập để lấy liệu tư RTC B6: Dưa chân AS lên mức cao Khởi tạo port D port xuất Chuyển địa cần đọc DATAPORT Thiết lập DS, RW, AS mức cao Tạo cạnh xng chân AS Tạo cạnh xng chân DS Khởi tạo port D port nhập Kết thúc Thiết lập AS mức cao Lấy liệu từ DATA_PORT ghi W http://www.ebook.edu.vn LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 B.2.1.8) CHUONG TRINH CON TRANSFER_LCD Giải thích: Chuyển giá trị thời gian vào LCD Ý tưởng có phần thay đổi cập nhật vào LCD Thực cách: kiểm tra cách giá trị thời gian, giá trị (0: giây, phút, giờ; 1: ngày, tháng, năm) qt đến giá trị cao RAM_SEC =0? Gọi: GIAY_DOI RAM_MIN =0? Gọi: PHUT_DOI RAM_HOU =0? Gọi: GIO_DOI RAM_DAT =1? Gọi: NGAY_DOI RAM_MON =0? Gọi: THANG_DOI RAM_YEA =0? Gọi: NAM_DOI Kết thúc B.2.1.9) CHUONG TRINH CON WRITE_DATA Mục đích: ghi liệu thời gian PIC LCD Chương trình khác với CT Write_ins (ghi lệnh điều khiển LCD) Hai chương trìng có lưu đồ giống Điểm khác là: Đối với write_data: ta khời động thêm chân RS (RS=1) LCD (nhận biết byte byte liệu), ngược lại write_ins http://www.ebook.edu.vn 10 LỊCH VẠN NIÊN DÙNG PIC 16F877A CALL GOTO INIT_TRANSFER HIENTHILCD2 BTFSC GOTO CALL BTFSC GOTO TURN_DOWN LABEL2 DELAY_50MS TURN_DOWN LABEL2 NGUYỄN ĐỨC TRÍ-DV06 CHINHXUONG2: ; KIEM TRA CON NUT TURN DOWN TANG CO NHAN ; KIEM TRA CON NUT CON NHAN? BCF STATUS,RP0 MOVF RAM_MIN,0 XORLW H'00' BTFSS STATUS,Z ;SO SANH HDV VOI 00 GOTO PHUTKHAC0 ; NEU CHUA BANG MOVLW 0X59 MOVWF RAM_MIN GOTO XONG2 PHUTKHAC0 ; KHOI NAY THUC HIEN CHUC NANG GIAM SO MOVF RAM_MIN,0 CALL XULY_GIAM MOVF HCHUC,0 MOVWF RAM_MIN GOTO XONG2 ; HIEUCHINHNAM banksel PORTB CALL DELAY_50MS BANKSEL PORTB BTFSC TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HIENTHILCD2 CALL WAIT HIENTHILCD3 ;DINH VI TRI LCD: CALL DVI_NAM MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X0F ; BAT CHE DO NHAP NHAY CON TRO CALL WR_INS ;KIEM TRA COI SET_TIME CON DUOC BAM KHONG? ;NEU BAM THEM LAN NUA=>HIEUCHINHTHANG ;NEU KHONG: CHUYEN DEN KT NUT TURN_UP LABEL3: BANKSEL PORTB BTFSS TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HIEUCHINHTHANG http://www.ebook.edu.vn 27 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 BTFSC GOTO TURN_UP CHINHXUONG3 CALL BTFSC GOTO DELAY_50MS TURN_UP LABEL3 BCF MOVF XORLW BTFSS GOTO CLRF INCF GOTO STATUS,RP0 RAM_YEA,0 H'99' STATUS,Z ;SO SANH HDV VOI 99 CHUABANG99 ; NEU CHUA BANG 99 RAM_YEA RAM_YEA,1 ; NEU BANG THI SET VE XONG3 ; KIEM TRA CON NUT TANG CON NHAN? CHUABANG99 MOVF RAM_YEA,0 CALL XULY_TANG MOVF HCHUC,0 MOVWF RAM_YEA XONG3 CALL GOTO INIT_TRANSFER HIENTHILCD3 BTFSC GOTO CALL BTFSC GOTO TURN_DOWN LABEL3 DELAY_50MS TURN_DOWN LABEL3 CHINHXUONG3: NAMKHAC0 ; KIEM TRA CON NUT TURN DOWN TANG CO NHAN ; KIEM TRA CON NUT CON NHAN? BCF STATUS,RP0 MOVF RAM_YEA,0 XORLW H'00' BTFSS STATUS,Z ;SO SANH HDV VOI 00 GOTO NAMKHAC0 ; NEU CHUA BANG MOVLW 0X99 MOVWF RAM_YEA GOTO XONG3 ; KHOI NAY THUC HIEN CHUC NANG GIAM SO MOVF RAM_YEA,0 CALL XULY_GIAM MOVF HCHUC,0 MOVWF RAM_YEA GOTO XONG3 ; - http://www.ebook.edu.vn 28 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 HIEUCHINHTHANG banksel PORTB CALL DELAY_50MS BANKSEL PORTB BTFSC TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HIENTHILCD3 CALL WAIT HIENTHILCD4 ;DINH VI TRI LCD: CALL DVI_THANG MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X0F ; BAT CHE DO NHAP NHAY CON TRO CALL WR_INS ;KIEM TRA COI SET_TIME CON DUOC BAM KHONG? ;NEU BAM THEM LAN NUA=>HIEUCHINHTHANG ;NEU KHONG: CHUYEN DEN KT NUT TURN_UP LABEL4: BANKSEL PORTB BTFSS TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HIEUCHINHNGAY BTFSC TURN_UP GOTO CHINHXUONG4 CALL BTFSC GOTO BCF MOVF XORLW BTFSS GOTO CLRF INCF GOTO DELAY_50MS TURN_UP ; KIEM TRA CON NUT CON NHAN? LABEL4 STATUS,RP0 RAM_MON,0 H'12' STATUS,Z ;SO SANH HDV VOI 12 CHUABANG12 ; NEU CHUA BANG 12 RAM_MON RAM_MON,1 ;SET VE THANG XONG4 CHUABANG12 MOVF RAM_MON,0 CALL XULY_TANG MOVF HCHUC,0 MOVWF RAM_MON XONG4 CALL GOTO INIT_TRANSFER HIENTHILCD4 BTFSC TURN_DOWN CHINHXUONG4: ; KIEM TRA CON NUT TURN DOWN TANG CO NHAN http://www.ebook.edu.vn 29 LỊCH VẠN NIÊN DÙNG PIC 16F877A GOTO CALL BTFSC GOTO THANGKHAC1 LABEL4 DELAY_50MS TURN_DOWN LABEL4 NGUYỄN ĐỨC TRÍ-DV06 ; KIEM TRA CON NUT CON NHAN? BCF STATUS,RP0 MOVF RAM_MON,0 XORLW H'01' BTFSS STATUS,Z ;SO SANH HDV VOI 01 GOTO THANGKHAC1 ; NEU CHUA BANG MOVLW 0X12 MOVWF RAM_MON GOTO XONG4 ; KHOI NAY THUC HIEN CHUC NANG GIAM SO MOVF RAM_MON,0 CALL XULY_GIAM MOVF HCHUC,0 MOVWF RAM_MON GOTO XONG4 ; -HIEUCHINHNGAY banksel PORTB CALL DELAY_50MS BANKSEL PORTB BTFSC TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HIENTHILCD4 CALL WAIT HIENTHILCD5 ;DINH VI TRI LCD: CALL DVI_NGAY MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X0F ; BAT CHE DO NHAP NHAY CON TRO CALL WR_INS ;KIEM TRA COI SET_TIME CON DUOC BAM KHONG? ;NEU BAM THEM LAN NUA=>HOANTHANH ;NEU KHONG: CHUYEN DEN KT NUT TURN_UP LABEL5: BANKSEL PORTB BTFSS TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HOANTHANH BTFSC TURN_UP ; KIEM TRA CON NUT CON NHAN? GOTO CHINHXUONG5 CALL DELAY_50MS BTFSC TURN_UP ; KIEM TRA CON NUT CON NHAN? GOTO LABEL5 http://www.ebook.edu.vn 30 LỊCH VẠN NIÊN DÙNG PIC 16F877A BCF NGUYỄN ĐỨC TRÍ-DV06 STATUS,RP0 XETNGAY CALL TIM_MAXNGAY MOVF RAM_DAT,0 SUBWF MAXNGAY,0 BTFSC STATUS,C ;KIEM TRA COI SAU KHI TRU THI AM HAY DUONG GOTO TTTT MOVF MAXNGAY,0 MOVWF RAM_DAT TTTT: MOVF RAM_DAT,0 XORWF MAXNGAY,0 BTFSS STATUS,Z GOTO CHUABANGMAXNGAY CLRF RAM_DAT INCF RAM_DAT,1 GOTO XONG5 CHUABANGMAXNGAY MOVF RAM_DAT,0 CALL XULY_TANG MOVF HCHUC,0 MOVWF RAM_DAT XONG5 CALL INIT_TRANSFER GOTO HIENTHILCD5 ;SO SANH HDV VOI 23 ; NEU CHUA BANG 23 CHINHXUONG5: BTFSC GOTO CALL BTFSC GOTO NGAYKHAC1 TURN_DOWN LABEL5 DELAY_50MS TURN_DOWN LABEL5 ; KIEM TRA CON NUT TURN DOWN TANG CO NHAN ; KIEM TRA CON NUT CON NHAN? BCF STATUS,RP0 MOVF RAM_DAT,0 XORLW H'01' BTFSS STATUS,Z ;SO SANH HDV VOI 01 GOTO NGAYKHAC1 ; NEU CHUA BANG CALL TIM_MAXNGAY MOVF MAXNGAY,0 MOVWF RAM_DAT GOTO XONG5 ; KHOI NAY THUC HIEN CHUC NANG GIAM SO MOVF RAM_DAT,0 CALL XULY_GIAM MOVF HCHUC,0 http://www.ebook.edu.vn 31 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 MOVWF RAM_DAT GOTO XONG5 HOANTHANH banksel PORTB CALL DELAY_50MS BANKSEL PORTB BTFSC TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HIENTHILCD4 CALL WAIT ; CACH HIEU CHINH KHI GIA TRI NGAY LON HON MAX NGAY CHO PHEP ; KHI TRUONG HOP DO XAY RA TA KIEM TRA BANG CACH LAY GIA TRI MAXNGAY-NGAY ; NEU C=0 TUC LA MAXNGAY>NGAT ; NGUOC LAI THI TIEP TUC BANKSEL PORTB CALL NAPDULIEU RETLW 0X00 ; NAPDULIEU ;CT NAY SE NAP DU LIEU VUA CAP NHAT VAO RTC MOVLW d'10' MOVWF ADD_R CALL READ_12C887 BTFSC DATA_R,7 GOTO NAPDULIEU MOVLW 0X00 ; giay MOVWF DATA_W MOVLW d'0' MOVWF ADD_W CALL WRITE_12C887 MOVF RAM_MIN,0 ; phut MOVWF DATA_W MOVLW d'2' MOVWF ADD_W CALL WRITE_12C887 MOVF RAM_HOU,0 ;gio MOVWF DATA_W MOVLW d'04' MOVWF ADD_W CALL WRITE_12C887 MOVF RAM_DAT,0 ;ngay MOVWF DATA_W MOVLW d'7' MOVWF ADD_W CALL WRITE_12C887 MOVF RAM_MON,0 ;thang http://www.ebook.edu.vn 32 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 MOVWF DATA_W MOVLW d'8' MOVWF ADD_W CALL WRITE_12C887 MOVF RAM_YEA,0 ;nam MOVWF DATA_W MOVLW d'9' MOVWF ADD_W CALL WRITE_12C887 MOVLW 0X0C ;TAT CON TRO BAT HIEN THI CALL WR_INS BSF INTCON,INTE ; BAT BIT DK NGAT NGOAI RETLW 0X00 ; WAIT ;CHUONG TRINH DOI CHO DEN KHI NUT BAM NHA RA CALL DELAY_50MS BTFSS TIME_SET GOTO WAIT RETLW 0X00 ; -DELAY_50MS MOVLW d'50' MOVWF DELAY_REG1 T1 MOVLW 0XC7 MOVWF DELAY_REG2 MOVLW 0X01 MOVWF DELAY_REG3 TT1 DECFSZ DELAY_REG2,1 GOTO $+2 DECFSZ DELAY_REG3,1 GOTO TT1 DECFSZ DELAY_REG1,1 GOTO T1 RETLW 0X00 ; DELAY_15MS MOVLW d'15' MOVWF DELAY_REG1 L1 MOVLW 0XC7 MOVWF DELAY_REG2 MOVLW 0X01 MOVWF DELAY_REG3 LL1 DECFSZ DELAY_REG2,1 http://www.ebook.edu.vn 33 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 GOTO $+2 DECFSZ DELAY_REG3,1 GOTO LL1 DECFSZ DELAY_REG1,1 GOTO L1 RETLW 0X00 ; DELAY_5MS MOVLW d'3' MOVWF DELAY_REG1 Q1 MOVLW 0XC7 MOVWF DELAY_REG2 MOVLW 0X01 MOVWF DELAY_REG3 QQ1 DECFSZ DELAY_REG2,1 GOTO $+2 DECFSZ DELAY_REG3,1 GOTO QQ1 DECFSZ DELAY_REG1,1 GOTO Q1 RETLW 0X00 ; DELAY_160US MOVLW 0X20 MOVWF DELAY_REG2 MOVLW 0X01 MOVWF DELAY_REG3 WW1 DECFSZ DELAY_REG2,1 GOTO $+2 DECFSZ DELAY_REG3,1 GOTO WW1 RETLW 0X00 ; XULY_TANG ; CHUONG TRINH CON HIEU CHINH THOI GIAN (TRONG TRUONG HOP BINH THUONG)IN: W; OUT:W CALL TACHSO ; TACH DU LIEU THANH HANG CHUC VA DON VI MOVF HDV,0 XORLW D'9' BTFSS STATUS,Z ;SO SANH HDV VOI GOTO CHUABANG9 ; NEU CHUA BANG CLRF HDV INCF HCHUC,1 CALL RAPSO http://www.ebook.edu.vn 34 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 GOTO DATANGXONG CHUABANG9 INCF HDV,1 CALL RAPSO DATANGXONG RETLW 0X00 ; -XULY_GIAM ; CHUONG TRINH CON HIEU CHINH THOI GIAN GIAM(TRONG TRUONG HOP BINH THUONG)IN: W; OUT:W CALL TACHSO ; TACH DU LIEU THANH HANG CHUC VA DON VI MOVF HDV,0 XORLW D'0' BTFSS STATUS,Z ;SO SANH HDV VOI GOTO CHUABANG0 ; NEU CHUA BANG MOVLW D'9' MOVWF HDV DECF HCHUC,1 CALL RAPSO GOTO DAGIAMXONG CHUABANG0 DECF HDV,1 CALL RAPSO DAGIAMXONG RETLW 0X00 ; RAPSO ; RAP HANG CHUC VA HANG DV VAO BYTE; IN: HCHUC&DV; OUT W SWAPF HCHUC,0 ADDWF HDV,0 MOVWF HCHUC RETLW 0X00 ; -TACHSO ;TACH HANG CHUC VOI DON VI IN:W OUT:HCHUC, HDV MOVWF HCHUC ANDLW 0X0F MOVWF HDV SWAPF HCHUC,0 ANDLW 0X0F MOVWF HCHUC RETLW 0X00 ; -CHANGE_NIBLE ;TACH TRONG SO CAO VA THAP MOVWF MSB ANDLW 0X0F MOVWF LSB SWAPF MSB,0 ANDLW 0X0F MOVWF MSB http://www.ebook.edu.vn 35 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 RETLW 0X00 ; DVI_GIAY MOVLW 0X80 ; EP CON TRO VE DAU DONG CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI RETLW 0X00 ; DVI_PHUT MOVLW 0X80 ; EP CON TRO VE DAU DONG CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI RETLW 0X00 ; -DVI_GIO MOVLW 0X80 ; EP CON TRO VE DAU DONG CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI RETLW 0X00 ; - http://www.ebook.edu.vn 36 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 DVI_NGAY MOVLW 0XC0 ; EP CON TRO VE DAU DONG CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI RETLW 0X00 ; DVI_THANG MOVLW 0XC0 ; EP CON TRO VE DAU DONG CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 CALL WR_INS MOVLW 0X14 CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI RETLW 0X00 ; DVI_NAM MOVLW 0XC0 ; EP CON TRO VE DAU DONG CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 CALL WR_INS MOVLW 0X14 CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 CALL WR_INS MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X14 CALL WR_INS MOVLW 0X14 CALL WR_INS MOVLW 0X14 CALL WR_INS RETLW 0X00 ; ;QUA TRINH XET NGAY SE PHU THUOC VAO THANG ; KIEM TRA THANG: ; NEU BANG 11 THI MAXNGAY=30 ; NEU BANG THI XET NAM http://www.ebook.edu.vn 37 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 ; NEU NAM THI XET NAM CO NHUAN KHONG? ; NAM NHUAN NAM= XXXX 00 MAXNGAY=29 ; NGUOC LAI MAXNGAY=28 ; CON LAI MAXTHANG 31 ; -TIM_MAXNGAY MOVLW H'4' XORWF RAM_MON,0 BTFSS STATUS,Z GOTO N1 GOTO XET_30 N1: MOVLW H'6' XORWF RAM_MON,0 BTFSS STATUS,Z GOTO N2 GOTO XET_30 N2: MOVLW H'9' XORWF RAM_MON,0 BTFSS STATUS,Z GOTO N3 GOTO XET_30 N3: MOVLW H'11' XORWF RAM_MON,0 BTFSS STATUS,Z GOTO N4 GOTO XET_30 N4: MOVLW H'2' ; KT THANG NEU LA THANG CALL XET RIENG XORWF RAM_MON,0 BTFSS STATUS,Z GOTO XET_31 ;TH CON LAI XET 31 NGAY GOTO XET_THANG2 XET_30 MOVLW H'30' MOVWF MAXNGAY GOTO TIMXONG XET_31 MOVLW H'31' MOVWF MAXNGAY GOTO TIMXONG XET_THANG2 ;KIEM TRA NAM NHUAN ; ;B1:TACH BCD CUA RAM_YEA THANH BIN IN:RAM_YEA; OUT:LSB BANKSEL COUNT CLRF COUNT ;KHOI TAO COUNT=0 MOVF RAM_YEA,0 CALL CHANGE_NIBLE http://www.ebook.edu.vn 38 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 CONGTIEP MOVF XORWF BTFSS GOTO GOTO MSB,0 COUNT,0 STATUS,Z CONGTHEM10 CONGXONG ;CHUYEN CHU SO HANG CHUC VAO W ;SO SANH SO COUNT VA HANG CHUC ; NEU CHUA BANG THI CONG THEM VAO HANG DV CONGTHEM10 INCF COUNT MOVLW D'10' ADDWF LSB,1 GOTO CONGTIEP CONGXONG ; ;B2: KIEM TRA CO PHAI NAM NHUAN KHONG? ;NEU NAM NHUAN THI BIT VA PHAI BANG BTFSC LSB,0 ;KT BIT GOTO KONHUAN ; NEU BANG TUC LA KO NHUAN BTFSC LSB,1 ;NEU BANG KT BIT GOTO KONHUAN ;NEU BANG TUC LA KO NHUAN MOVLW H'29' ;NEU BANG => NAM NHUAN MOVWF MAXNGAY GOTO TIMXONG KONHUAN MOVLW H'28' ;NEU BANG => NAM NHUAN MOVWF MAXNGAY TIMXONG RETLW 0X00 end http://www.ebook.edu.vn 39 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 C) ĐÁNH GIÁ THỰC HIỆN ĐỀ TÀI C.1) TỰ ĐÁNH GIÁ VIỆC THỰC HIỆN ĐỒ ÁN Hạn chế: Thuật tốn chưa thực tinh gọn, cách suy nghĩ chưa thật khái qt nên làm chương trình dài Thiếu kinh nghiệm việc chọn linh kiện để lập trình để chạy mạch thực tế, dẫn đến việc tham khảo nhiều khó khăn việc xác định nguồn Mạch thực tế chưa that gọn gàng chưa biết cách xác định kích thước chuẩn Protues; thiếu tích hợp phần chỉnh lưu nguồn Tự nhận xét: Kết khả quan với việc mạch thực tế chạy đúng; bên cạnh số vấn đề việc lập trình Có hướng phát triển đề tài sau dựa phần đạt Vẫn thiếu kinh nghiệm việc làm mạch in C.2) ĐÁNH GIÁ CỦA GIÁO VIÊN TÀI LIỆU THAM KHẢO: - Tài liệu vi điều khiển PIC 16F877A lớp TD06 Datasheet PIC 16F877A www.mircochip.com Datasheet DS12C887+ www.datasheets.maxim-ic.com Datasheet LCD 16x2, hướng dẫn: Nguyễn Huy Thanh CĐT4K47 ĐHBKHN Các tutorial VĐK PIC Nguyễn Chí Linh; Nguyễn Quang Nam; Nguyễn Chung Chính thành viên diễn dàn picvietnam www.picvietnam.com Các viết thắc mắc, hướng dẫn diễn dàn www.dientuvietnam.com http://www.ebook.edu.vn 40 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 Lời cám ơn: Đ ể thực đề tài cần giúp đỡ nhiều từ giáo viên hướng dẫn, giảng viên, sinh viên lớp DV06 Bên cạnh thành viên diễn dàn đóng góp nhiều q trình thực đề tài Mong ln có hỗ trợ từ nhiều phía thực đề tài để tơi mở rộng thêm hiểu biết Chân thành cám ơn tất người giúp đỡ tơi hồn thành đồ án mơn học http://www.ebook.edu.vn 41 [...]... khi thực hiện chương trình ngắt ta cần lưu lại tất cả các giá trị của thanh ghi w; thanh ghi status và vị trí con trỏ chạy chương trình (PClath) và FSR B.2.1.11) CHUONG TRINH HIEU CHINH GIO Cách hiệu chình: Để vào phần hiệu chỉnh thì thông qua nút bấm SET_TIME Sau khi truy cập vào phần hiệu chỉnh thời gian thi hiệu chỉnh tuần tự theo giờ, phút, năm, tháng, ngày Mỗi lần chuyển sẽ thông qua vi c bấm nút. .. giá trị thời gian thông qua 2 nút bấm( TURN_UP và TURN_DOWN) Sau khi đã đi hết 1 lượt các giá trị hiệu chỉnh thì bấm lại nút SET_TIME để khởi động lại chương trình Đối với phần hiệu chỉnh sẽ luôn xuất hiện con trỏ nhấp nháy ngay hàng đơn vị của mỗi giá trị đang được hiệu chỉnh Mục đích vi c sắp xếp thứ tự hiệu chỉnh: vì lý do kiểm soát giá trị tối đa ngày của từng tháng nên cần phải xác định năm trước,... nhận được dữ liệu B5: tiếp tục thực hiện tiếp đv 4 bit thấp và thực hiện lại bước 1 B.2.1.10) CHUONG TRINH NGAT Loại ngắt: sử dụng ngắt ngoài RB0/INT Mục đích của trình ngắt: nhận xung clock từ RTC để báo hiệu thời gian cầp nhật dữ liệu, do LCD khác với LED ở chỗ là LCD chỉ cần truyền qua 1 lần thì giá trị đó được giữ; còn LED phải truyền phát lien tục(quét led) Cách thực hiện: do RTC 12C887 chỉ có thể... đổi giá trị gán cho từng biến thời gian http://www.ebook.edu.vn 11 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 - Đối với phần hiệu chỉnh ngày thì công vi c phức tạp hơn Ta cần kiểm tra tháng trước Nếu là tháng 4, 6, 9, 11 thì maxngay là 30 Đối với tháng 2 thì phải xét thêm năm Nếu năm chia hết cho 4 thì maxngay la 29 ngược lại là 28 òn lại là: 31 ngày Như vậy công vi c cần làm duy nhất là xác... hay 29; sau đó vi c hiệu chỉnh tháng sẽ giúp xác định maxngay chính xác, tránh tình trạng nhập lố số ngày đối với mỗi tháng, dẫn đến RTC hoạt động sai Cách thực hiện: - Đối với phần hiệu chỉnh giờ dựa trên lưu đồ sau đây Giải thuật của phần hiệu chỉnh phút, năm, tháng cũng tương tự như trên Điểm khác nhau duy nhất là giá trị khi đem so sánh Đối với giờ thì so sánh với 23; phút thì là: 59; năm thì là:... nút nhả ra Định vị trí giờ Bật và nhấp nháy con trỏ Hiệu chỉnh phút Đ TIME_SET nhấn? S TURN_UP nhấn? S Đ Đ Đ Đợi 50ms Đợi 50ms TURN_UP nhấn? TURN_DOWN nhấn? S XÓA RAM_HOU Đ TURN_DOWN nhấn? Đ S RAM_HOU = 23? RAM_HOU = 23? S TĂNG RAM_HOU Xuất ra LCD http://www.ebook.edu.vn Đ RAM_HOU = 23 S GIẢM RAM_HOU 12 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 B.2.1.12) CHUONG TRINH CON TIM_MAXNGAY Cách thực. .. TRÍ-DV06 B.2.1.12) CHUONG TRINH CON TIM_MAXNGAY Cách thực hiện: đầu tiên xét giá trị của tháng Nếu tháng là 4 6 9 11 thì maxngay là 30 Nếu tháng là 2 thì ta xét đến năm Phương pháp xét năm nhuần như sau Đưa năm về dạng BIN, sau đó kiểm tra 2 trọng số thấp nhất của giá trị năm đó Nếu cả 2 trọng số đó đều bằng 0 thì năm đó là năm nhuần Vì tất cả dữ liệu thời gian đều lưu dưới dạng BCD nén, ta dung thuật toán... RAM_HOU,0 http://www.ebook.edu.vn 25 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 CALL XULY_GIAM MOVF HCHUC,0 MOVWF RAM_HOU GOTO XONG1 ; HIEUCHINHPHUT ; HIEU CHINH PHUT GIONG HIEU CHINH GIO banksel PORTB CALL DELAY_50MS BANKSEL PORTB BTFSC TIME_SET GOTO HIENTHILCD1 CALL WAIT HIENTHILCD2 ;DINH VI TRI LCD: CALL DVI_PHUT MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI... ;DINH VI TRI LCD: CALL DVI_NAM MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X0F ; BAT CHE DO NHAP NHAY CON TRO CALL WR_INS ;KIEM TRA COI SET_TIME CON DUOC BAM KHONG? ;NEU BAM THEM 1 LAN NUA=>HIEUCHINHTHANG ;NEU KHONG: CHUYEN DEN KT NUT TURN_UP LABEL3: BANKSEL PORTB BTFSS TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HIEUCHINHTHANG http://www.ebook.edu.vn 27 LỊCH VẠN NIÊN DÙNG PIC 16F877A. .. MOVWF RAM_YEA GOTO XONG3 ; - http://www.ebook.edu.vn 28 LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 HIEUCHINHTHANG banksel PORTB CALL DELAY_50MS BANKSEL PORTB BTFSC TIME_SET ; KIEM TRA CON NUT CON NHAN? GOTO HIENTHILCD3 CALL WAIT HIENTHILCD4 ;DINH VI TRI LCD: CALL DVI_THANG MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI CALL WR_INS ;GUI LENH DI MOVLW 0X0F ; BAT CHE DO NHAP NHAY CON ... mạch, vi c sử dụng PIC 16F877A phí phạm PIC có nhiều cơng dụng tốt Các cơng dụng dùng phần mở rộng đề lài KHỐI HIỂN THỊ LCD 16x2 KHỐI ĐIỀU KHIỂN PIC 16F877A KHỐI THỜI GIAN THỰC KHỐI HIỆU CHỈNH...LỊCH VẠN NIÊN DÙNG PIC 16F877A NGUYỄN ĐỨC TRÍ-DV06 pin bên ngồi Bên cạnh vi c giao tiếp song song với VĐK tạo điều kiện thuận lợi với giao tiếp nối tiếp Khối nút bấm điều khiển: bao gồm nút Nút... dùng LCD dễ thị điều khiển, bên cạnh vi c mở rộng đề tài đơn giản Với dòng chữ, dòng gồm 16 ký tự đủ để hiển thị Bộ điểu khiển: vi điểu khiển PIC 16F877A Cơng vi c chủ yếu PIC điều khiển giao

Ngày đăng: 15/11/2015, 15:46

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan