1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

Đ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

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 599 KB

Nội dung

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ẽ

Trang 1

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 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

Trang 2

Mục Lục

1 Mô tả hệ thống : 3

2 Sơ đồ mô phỏng trên PROTEUS 3

3 Tổng quan về các khối : 4

a Tổng quan về PIC16F877A : 4

b Khối thời gian thực DS1307: 7

c Khối màn hình LCD1602 9

Sơ đồ chân của LCD 1602a 10

d Code của chương trình mô phỏng : 11

4 Kết quả mô phỏng : 17

5 Mức độ hoàn thành công việc : 17

6 Các phần mềm đã sử dụng trong quá trình mô phỏng : 18

7 Tài liệu tham khảo : 18

Trang 3

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 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ệ 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

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

14

RB7/ICSPDAT

37

RA3/AN3/VREF+/C1IN+

5

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

LM016L

X1

CRYSTAL

R1

4.7k

R2

4.7k

D1

LED-YELLOW

R3

4.7k

R4

4.7k

R5

1k

VBAT 3

SCL 6 SDA 5

SOUT 7

U2

DS1307

Trang 4

3 Tổng quan về các khối :

a Tổng quan về PIC16F877A :

Sơ đồ chân của Pic16f877a :

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 và khối bộ nhớ EEPROM Bộ nhớ chương trình và 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ẽ

Trang 5

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 và các thanh ghi chức năng đặc biệt Bank được chọn phụ thuộc vào bit RP1 và RP0 (bit thứ 6 và bit thứ 5) của thanh ghi trạng thái status

Các thanh ghi chức năng đặc biệt được CPU và 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 và 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

Trang 6

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ể đượ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 và 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 và 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:

Trang 7

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ụ và 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 và 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 và ngày tháng với 56 bytes SRAM Địa chỉ và 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 và

tự động đóng ngắt với nguồn pin cung cấp

Trang 8

- 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 và 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:

+ X1 và 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 và đượ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 và đọc dữ liệu được

+) GND là nguồn MASS chung cho Vcc và VBAT

+ 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

và Vbat được cấp

c Khối màn hình LCD1602.

Trang 9

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

14

RB7/ICSPDAT

37

25

RA3/AN3/VREF+/C1IN+

5

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

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ờ và 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

Trang 10

Chức năng các chân:

GND của mạch điều khiển

VCC=5V của mạch điều khiển

(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

“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc

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 và được LCD giữ

Trang 11

ở bus đến khi nào chân E xuống mức thấp.

DB0-DB7

Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU

Có 2 chế độ sử dụng 8 đường bus này : + Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7

+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7

d Code của chương trình mô phỏng :

1 #include "16F887.h"

2 #include "def_877a.h"

3 #include "lcd.c" //File nay co san trong CCS

4 int8 second, minute, hour, date, day, month, year;

5 int16 year1;

7.

8 // - Chuyen du lieu mã BINARY cua MASTER -> du lieu mã BCD cho

lieu sau khi chuyen doi

ma BCD he 10

Trang 12

22 }

25.

BINARY cho

lieu sau khi chuyen doi

ma DECIMAL

50.

07:30:00

truyen I2C ( 0xD0 = Slave Address OR Write bit hay (0x68 OR 0) )

Trang 13

66 i2c_write(0x00); // Truyen dia chi thanh ghi 0x00 cua DS1307

vao thanh ghi 0x00

vao thanh ghi 0x01

vao thanh ghi 0x02

vao thanh ghi 0x03

vao thanh ghi 0x04

vao thanh ghi 0x05

vao thanh ghi 0x06

0x07 de tao xung vuong 1Hz

77.

truyen I2C ( 0xD0 = Slave Address OR Write bit hay (0x68 OR 0) )

DS1307

thanh ghi 0x00 cua DS1307

thanh ghi 0x01 cua DS1307

thanh ghi 0x02 cua DS1307

thanh ghi 0x03 cua DS1307

thanh ghi 0x04 cua DS1307

tu thanh ghi 0x05 cua DS1307

thanh ghi 0x06 cua DS1307

95.

Trang 14

97 {

thang - nam

1

108

111.

114 {

1, cot 7

118 }

120 {

122 }

123.

126.

cot 9

140.

Trang 15

145 year1 = 2000 + year;

13,14,15,16

147.

giay

-149.

152 {

154 lcd_gotoxy(7,2);

156 }

158 {

160 }

161.

162 lcd_gotoxy(8,2);

164.

167 {

169 lcd_gotoxy(10,2);

171 }

173 {

175 }

176.

177 lcd_gotoxy(11,2);

179.

182 {

184 lcd_gotoxy(13,2);

186 }

188 {

190 }

Trang 16

191 }

192.

194 {

195 setup_adc_ports(NO_ANALOGS|VSS_VDD);

196 setup_adc(ADC_OFF);

197 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

198 setup_timer_1(T1_DISABLED);

199 setup_timer_2(T2_DISABLED,0,1);

currently not supported by the PICWizard

201 enable_interrupts(INT_EXT);

202 enable_interrupts(GLOBAL);

203 //Setup_Oscillator parameter not selected from Intr Oscillator Config tab

204.

206

207 lcd_init();

208 delay_ms(10);

209.

211 {

212 update_time();

213 display_LCD();

214 }

215 }

4 Kết quả mô phỏng :

Trang 17

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

14

RB7/ICSPDAT

37

25

RA3/AN3/VREF+/C1IN+

5

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

LM016L

X1

CRYSTAL

R1

4.7k

R2

4.7k

D1

LED-YELLOW

R3

4.7k

R4

4.7k

R5

1k

VBAT 3

SCL 6 SDA 5

SOUT 7

U2

DS1307

5 Mức độ hoàn thành công việc :

Nhìn chung dự án đã hoàn thành về mạch mô phỏng và chạy ổn định khâu của bài tập lớn

6 Các phần mềm đã sử dụng trong quá trình mô phỏng :

Trang 18

MPlab Ver 8.4 , Proteus ver 7.7 :

7 Tài liệu tham khảo :

Website : Google.com

Picvietnam.com Dientuvietnam.net Ebook : Tutorial PIC 16F877A

Library Microchip Datasheet Pic16f877a , DS1307 , LCD 1602

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w