thiết kế mạch đồng hồ thời gian thực sử dụng ds1307 và pic16f877a và hiển thị lên lcd

18 7.5K 78
thiết kế mạch đồng hồ thời gian thực sử dụng ds1307 và pic16f877a và hiển thị lên lcd

Đ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

TRƯỜNG ĐẠI HỌC MỎ HÀ NỘI KHOA : BÀI TẬP LỚN VI XỬ LÝ Đề tài : Thiết kế mạch đồng hồ thời gian thực sử dụng DS1307 PIC16F877A hiển thị lên LCD Giáo viên hướng dẫn : Sinh viên thực hiện : Lớp : MSSV : Hà Nội : 26/03/2012. 1 Mục Lục Mục Lục 2 1. Mô tả hệ thống : Đề tài nhằm thiết kế 1 bộ đồng hồ thời gian thực đảm bảo tự cập nhật thời gian của hệ thống hiển thị giá trị lên LCD . Với thiết kế sử dụng cả nguồn ngoài PIN VBat làm cho hệ thống hoạt động cả khi mất điện thì hệ thống thời gian thực vẫn hoạt động. Ngoài ra đề tài còn có tương tác với phím bấm nhằm Reset hệ thống. 2. Sơ đồ mô phỏng trên PROTEUS 2 RE3/MCLR/VPP 1 RA1/AN1/C12IN1- 3 RA2/AN2/VREF-/CVREF/C2IN+ 4 RA4/T0CKI/C1OUT 6 RA5/AN4/SS/C2OUT 7 RB0/AN12/INT 33 RB1/AN10/C12IN3- 34 RB2/AN8 35 RA7/OSC1/CLKIN 13 RA6/OSC2/CLKOUT 14 RD5/P1B 28 RD6/P1C 29 RD7/P1D 30 RC4/SDI/SDA 23 RC5/SDO 24 RC3/SCK/SCL 18 RC2/P1A/CCP1 17 RC1/T1OSI/CCP2 16 RC0/T1OSO/T1CKI 15 RB7/ICSPDAT 40 RB6/ICSPCLK 39 RB5/AN13/T1G 38 RB4/AN11 37 RD3 22 RD2 21 RD1 20 RD0 19 RC7/RX/DT 26 RC6/TX/CK 25 RE2/AN7 10 RE1/AN6 9 RE0/AN5 8 RA3/AN3/VREF+/C1IN+ 5 RD4 27 RB3/AN9/PGM/C12IN2- 36 RA0/AN0/ULPW U/C12IN0- 2 U1 PIC16F887 D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 LM016L X1 CRYSTAL R1 4.7k R2 4.7k D1 LED-YELLOW R3 4.7k R4 4.7k R5 1k VBAT 3 X1 1 X2 2 SCL 6 SDA 5 SOUT 7 U2 DS1307 3. Tổng quan về các khối : a. Tổng quan về PIC16F877A : Sơ đồ chân của Pic16f877a : 3 Pic16f877a có 5 cổng vào ra: PortA(RA0-RA5), PortB(RB0-RB7), PortC(RC0- RC7), PortD(RD0-RD7), PortE(RE0-RE2). Có 3 bộ định thời: Timer0, Timer1, Timer2. 8K bộ nhớ chương trình flash. Tổ chức bộ nhớ : Có 3 khối bộ nhớ trong pic16F877A: bộ nhớ chương trình ,bộ nhớ dữ liệu khối bộ nhớ EEPROM. Bộ nhớ chương trình bộ nhớ dữ liệu có đường bus riêng vì vậy có thể truy cập vào từng bộ nhớ một cách riêng rẽ. Bộ đếm chương trình có 13 bit vì vậy không gian địa chỉ sẽ là 8k word x 8bit. Truy cập ngoài vùng không gian trên sẽ gây lỗi. Bộ nhớ dữ liệu được chia thành 4 bank (Bank0÷Bank3) ,trong các bank chứa các thanh ghi thường các thanh ghi chức năng đặc biệt. Bank được chọn phụ thuộc vào bit RP1 RP0 (bit thứ 6 bit thứ 5) của thanh ghi trạng thái status. 4 RP1:RP0 Bank 00 0 01 1 10 2 11 3 Các thanh ghi chức năng đặc biệt được CPU bộ ngoại vi sử dụng để điều khiển các thiết bị. Các thanh ghi này hoạt động như một thanh RAM tĩnh. Thanh ghi trạng thái chứa trạng thái số học của ALU,trạng thái Reset các bit chọn bank ở bộ nhớ dữ liệu. Các cổng vào ra của pic: + Port A: có 6 bit (tương ứng với 6 chân RA0÷RA5) các chân của cổng A có tích hợp một số chức năng ngoại vi, nếu một thiết bị ngoại vi được enable thì cổng này sẽ không hoạt động như một cổng vào ra . Bình thường Port A sẽ là một cổng vào ra 2 chiều. Thanh ghi xác đinh chiều tương ứng của các chân port A là thanh ghi TrisA. Các bit ở thanh ghi TrisA bằng 1 sẽ xác định các chân ở port A là đầu vào ngược lại sẽ là đầu ra. + Port B: rộng 8 bit(tương ứng với 8 chân RB0÷RB7), là một cổng vào ra 2 chiều. Thanh ghi qui đinh chiều của cổng B là thanh ghi Tris B. Thiết lập các bit ở thanh ghi TrisB bằng 1 sẽ làm cho cổng B là cổng vào ngược lại sẽ là cổng ra. + Port C: rộng 8 bit(tương ứng với các chân RC0÷RC7), bình thường nó là một cổng vào ra 2 chiều, thanh ghi qui định chiều của cổng là thanh ghi TrisC. Các chân RC3,RC4 dùng để kết nối truyền nhân thông tin với các thiết bị ngoại vi. + Port D: rộng 8 bit (RD0÷RD7),nó có thể là cổng vào hoặc cổng ra. Port D có thể 5 được cấu hình như một cổng vi xử lý rộng 8 bit (cổng slave song song) bằng cách thiêt lập bit điều khiển PSPSTATUS (TrisE.4). Ở chế độ này thì đầu vào la tín hiệu TTL. + Port E: rộng 3 bit(RE0÷RE2), được cấu hình là đầu ra hoặc đầu vào. Port E có thể là đầu vào điều khiển I/O khi bit PSPSTATUS (TrisE.4) được thiết lập. Từ hình vẽ ta có thể thấy, pic16F877A có 2 chân Vcc 2 chân GND, để pic có thể hoạt động được ta phải cấp nguồn cho tất cả các chân này. Ngoài cấp nguồn cung cấp ta phải cấp nguồn xung dao động để cho vi điều khiển hoạt động. ta sẽ dùng một thạch anh 20MHz để cấp xung dao động. nguồn dao động được cấp thông qua 2 chân 13 14 của pic. Mạch reset cho vi điều khiển là một công tắc để hở thông qua chân MCLR của vi điều khiển. mạch sẽ thực hiện reset khi chân này từ mức logic 1 xuống logic 0. khi công tắc để hở thì chân này luôn mang mức logic 1 do luôn được nối với nguồn thông qua một điện trở hạn dòng R1, điện trở này phải có giá trị nhỏ hơn hoặc bằng 10k để đảm bảo điện áp cung cấp cho vi điều khiển. b. Khối thời gian thực DS1307: DS1307 là chip thời gian thực hay RTC (Read time clock). Ðây là một IC tích hợp cho thời gian bởi vì tính chính xác về thời gian tuyệt đối cho thời gian : Thứ, ngày,tháng, nãm, giờ, phút, giây. Chip này có 7 thanh ghi 8 bit mỗi thanh ghi này chứa : Thứ , ngày, tháng, nãm, giờ , phút, giây. Ngoài ra DS1307 còn chứa 1 thanh ghi điều khiển ngõ ra phụ 56 thanh ghi trống các thanh ghi này có thể dùng như là RAM. DS1307 được đọc thông qua chuẩn truyền thông I2C nên do đó để đọc được 6 ghi từ DS1307 thông qua chuẩn truyền thông này. Do nó được giao tiếp chuẩn I2C nên cấu tạo bên ngoài nó rất đơn giản. X1 CRYSTAL D1 LED-YELLOW R3 4.7k R4 4.7k R5 1k VBAT 3 X1 1 X2 2 SCL 6 SDA 5 SOUT 7 U2 DS1307 - 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 ngày tháng với 56 bytes SRAM. Địa chỉ 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ó một mạch cảm biến điện áp dùng để dò các điện áp lỗi tự động đóng ngắt với nguồn pin cung cấp. - DS 1307 hoạt động với vai trò slave trên đường bus nối tiếp. Việc truy cập được thi hành với chỉ thị START một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi. Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP được thực thi. Mô tả hoạt động của các chân: 7 + X1 X2 là đầu vào dao động cho DS1307. Cần dao động thạch anh 32.768Khz. Vbat là nguồn nuôi cho chip. Nguồn này từ ( 2V- 3.5V) ta lấy pin có nguồn 3V. Ðây là nguồn cho chip hoạt động liên tục khi không có nguồn Vcc mà DS1307 vẫn hoạt động theo thời gian. + Vcc là nguồn cho giao tiếp I2C. Ðiện áp cung cấp là 5V chuẩn được dùng chung với vi điều khiển. Nếu Vcc không có mà Vbat có thì DS1307 vẫn hoạt động bình thường nhưng mà không ghi đọc dữ liệu được. +) GND là nguồn MASS chung cho V cc V BAT + 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. + 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. + SQW/OUT(square wave/output driver)- khi được kích hoạt thì bit SQWE được thiết lập 1, 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 Vbat được cấp. c. Khối màn hình LCD1602. 8 RE3/MCLR/VPP 1 RA1/AN1/C12IN1- 3 RA2/AN2/VREF-/CVREF/C2IN+ 4 RA4/T0CKI/C1OUT 6 RA5/AN4/SS/C2OUT 7 RB0/AN12/INT 33 RB1/AN10/C12IN3- 34 RB2/AN8 35 RA7/OSC1/CLKIN 13 RA6/OSC2/CLKOUT 14 RD5/P1B 28 RD6/P1C 29 RD7/P1D 30 RC4/SDI/SDA 23 RC5/SDO 24 RC3/SCK/SCL 18 RC2/P1A/CCP1 17 RC1/T1OSI/CCP2 16 RC0/T1OSO/T1CKI 15 RB7/ICSPDAT 40 RB6/ICSPCLK 39 RB5/AN13/T1G 38 RB4/AN11 37 RD3 22 RD2 21 RD1 20 RD0 19 RC7/RX/DT 26 RC6/TX/CK 25 RE2/AN7 10 RE1/AN6 9 RE0/AN5 8 RA3/AN3/VREF+/C1IN+ 5 RD4 27 RB3/AN9/PGM/C12IN2- 36 RA0/AN0/ULPW U/C12IN0- 2 U1 PIC16F887 D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 LM016L R1 4.7k R2 4.7k Để hiển thị các thông số trong quá trình giao tiếp giữa người điều khiển với hệ thống như xem ngày giờ xem các thông số khi thực hiện điều khiển hệ thống (Active).Sử dụng LCD text 16x2. Sơ đồ chân của LCD 1602a 9 Chức năng các chân: Chân số Tên Chức năng 1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điều khiển 2 Vdd Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V của mạch điều khiển 3 Vee Chân này dùng để điều chỉnh độ tương phản của LCD. 4 RS Chân chọn thanh ghi (Register select). Nối chân RS với logic “0” (GND) hoặc logic“1” (VCC) để chọn thanh ghi. + Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” -write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD. 5 R/W Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc. 6 E 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 được LCD giữ 10 [...]... display _LCD( ) 97 { 98 // - Hàng 1 cua LCD: hien thi thu ngay - thang nam 99 13 100 lcd_ gotoxy(1,1); // Bat dau o hang 1, cot 1 101 if(day==2) lcd_ putc("Mon"); // Hien thi thu o hang 1, cot 1 102 else if(day==3) lcd_ putc("Tue"); 103 else if(day==4) lcd_ putc("Wed"); 104 else if(day==5) lcd_ putc("Thu"); 105 else if(day==6) lcd_ putc("Fri"); 106 else if(day==7) lcd_ putc("Sat"); 107 else if(day==1) lcd_ putc("Sun");... lcd_ putc(":"); 164 165 lcd_ gotoxy(9,2); // Nhay sang hang 2, cot 9 166 if(minute=10) 173 { 174 printf (lcd_ putc,"%d", minute); 175 } 176 177 lcd_ gotoxy(11,2); 178 lcd_ putc(":"); 179 180 lcd_ gotoxy(12,2); // Nhay sang hang 2, cot 12 181 if(second . NỘI KHOA : BÀI TẬP LỚN VI XỬ LÝ Đề tài : Thiết kế mạch đồng hồ thời gian thực sử dụng DS1307 và PIC16F877A và hiển thị lên LCD Giáo viên hướng dẫn : Sinh viên thực hiện : Lớp : MSSV : Hà Nội : 26/03/2012. 1 Mục. hệ thống : Đề tài nhằm thiết kế 1 bộ đồng hồ thời gian thực đảm bảo tự cập nhật thời gian của hệ thống và hiển thị giá trị lên LCD . Với thiết kế sử dụng cả nguồn ngoài và PIN VBat làm cho hệ. điều khiển. b. Khối thời gian thực DS1307: DS1307 là chip thời gian thực hay RTC (Read time clock). Ðây là một IC tích hợp cho thời gian bởi vì tính chính xác về thời gian tuyệt đối cho thời gian

Ngày đăng: 23/04/2014, 17:13

Từ khóa liên quan

Mục lục

  • Mục Lục

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

Tài liệu liên quan