Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
1,69 MB
Nội dung
Báo cáo: "Đồng hồ thời gian thực dùng DS 1307" Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 1 Đồng hồ RTC_DS1307_ HC3T Mục Lục LỜI NÓI ĐẦU 3 CHƯƠNG 1 . PHÂN TÍCH BÀI TOÁN 4 1.1.Khảo sát và phân tích bài toán 4 1.2. Lựa chọn giải pháp 7 CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 8 2.1. Sơ đồ tổng quát 8 2.2. Sơ đồ CallGraph 9 2.3. Sơ đồ đặc tả 9 2.4. Sơ đồ thuật toán 10 2.5.Các module trong hệ thống 12 2.6.Lựa chọn linh kiện 14 CHƯƠNG 3. xây dựngLuận Văn - Đề Án - Tiểu Luận Xây Dựng HỆ THỐNG 35 3.1.Thiết kế phần cứng 35 3.2.Thiết kế phần mềm 37 3.3.Kết quả mô phỏng 47 3.4.Mạch thi công thực tế 47 KẾT LUẬN 48 Môn vi xử lý Đề tài : đồng hồ thời gian thực dùng DS 1307 Giáo viên hướng dẫn: ThS Hàn Huy Dũng Nhóm thực hiện: Sinh viên lớp điện tử 2-K48 Các thành viên: + Lê Thị Hằng. + Đỗ Minh Châu. + Nguyễn Anh Tuấn. + Đinh Xuân Thuỷ. + Vũ Anh Tuấn. I, Chức năng của mạch điện: - Hiển thị : giờ ,phút,giây, ngày , tháng,năm,thứ trong tuần - giao tiếp với 4 phím : status-mode-increase-decrease. Phím status dùng để chuyển chế độ từ hiển thị giờ ,phút ,giây,thứ sang ngày ,tháng, năm. Phím mode dùng để điều chỉnh ngày, tháng, năm và giờ ,phút ,giây,thứ II, Mô tả mạch: -Mạch sử dụng IC thời gian thực DS 1307 giao tiếp I2C với Pic. Pic16F877A - Dùng 8 led 7 thanh loại 4 led/1 con. - Dùng 8 Tranzito để điều khiển việc đóng ngắt các led. - Vi điều khiển được dùng là PIC 16F877A - Dùng thạch anh 20MHz để tạo dao động cho PIC. Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 2 Đồng hồ RTC_DS1307_ HC3T - Dùng một mạch tiny Bootloaderđể kết nối giữa pic và máy tính , nạp chương trình trực tiếp từ máy tính vào PIC mà không cần thông qua mạch nạp cho PIC. III/ Cơ bản về tiny bootloader: Đây là bootloader cho các vi điều khiển Microchip PIC * Nó là bootloader có kích thước nhỏ nhất, ít hơn 100 word bộ nhớ chương trình * Nó là bootloader duy nhất hỗ trợ tất cả các dòng PIC: 16F, 18F, dsPIC (những dòng có hỗ trợ chế độ self-programming - tự nạp lại). Đặc điểm của firmware: * Kích thước chỉ có khoảng 100word (cho tất cả các dòng 16F, 18F, dsPIC, thực ra là nó ít hơn 100 word); * Có thể ghi vào flash, eeprom, và có thể ghi vào các bytes cài đăt (configuration bytes) của dòng 18F * Khi reset, đợi 1 giây để nhận chương trình nạp, nếu không nhận được thì chuyển qua chạy chương trình * File .asm của bootloader rất dễ để chỉnh sửa lại,cho phù hợp với từng chip, tốc độ truyền nhận. Đặc điểm của phần mềm trên máy tính * Có thể tải chương trình vào flash (trong phiên bản này của bootloader, cho phép cài đặt các byte cài đặt (configuration bytes) và có thể thay đổi dễ dàng theo từng loại PIC) * Làm việc với tất cả các dòng PIC đã nêu trên; tự động nhận ra nội dung file HEX và dòng PIC * Ghi nhớ cài đặt cuối (thuận tiện cho người dùng khi thao tác với một loại PIC) * Trong trường hợp lỗi, nó sẽ truyền một tín hiệu ngược lại cho máy tính để tái đồng bộ giữa máy tính và PIC; * Chế độ giao tiếp có thể được thay đổi, có thể dùng bất kỳ cổng COM nào với tốc độ baud nào Khái niệm chung về bootloader Một bootloader là một chương trình nằm trong vi điều khiển, và giao tiếp với máy tính (thông qua giao tiếp nối tiếp). Bootloader nhận một chương trình (đã được dịch ra thành file HEX) từ máy tính và ghi nó vào bộ nhớ flash của vi điều khiển thông qua một phần mềm trên máy tính, sau đó chạy chương trình đó trên vi điều khiển. Bootloader chỉ có thể được dùng với những vi điều khiển nào cho phép ghi vào bộ nhớ flash thông qua phần mềm trên máy tính. Bản thân bootloader phải được ghi vào trong bộ nhớ flash bằng một mạch nạp khác. Để bootloader hoạt động, sau khi nhấn reset, một lệnh "goto bootloader" phải nằm ở địa chỉ đầu tiên của chương trình vi điều khiển. Có 2 loại bootloader, một số loại đôi khi cần người dùng đặt lại địa chỉ các dòng lệnh đầu, một số khác thì tự bản thân nó đặt những dòng lệnh đầu của người dùng vào một địa chỉ khác khi mà bootloader đã nằm sẵn ở đó, và quay trở lại chương trình của người dùng khi kết thúc đoạn chương trình bootloader. Trong trường hợp này, tiny bootloader tự động đem các vị trí đầu của chương trình người viết, và đặt ở phía dưới cùng với chương trình bootloader (thực ra đoạn chương trình này chỉ tối đa có 4 dòng lệnh). địa chỉ 0x0004 đã là địa chỉ bắt đầu ngắt. Chính vì vậy, nếu lập trình từ vị trí 0x0000 thì cũng chỉ viết được tối đa 4 dòng lệnh, sau đó phải nhảy đến chương trình chính. Như vậy, tiny bootloader sẽ thực hiện thao tác, cắt 4 dòng đầu tiên từ 0x0000 đến 0x0003 , thay bằng dòng lệnh GOTO BOOTLOADER. Và nó tự động đặt 4 dòng lệnh nằm ngay phía trên chương trình bootloader .Sau đó, chạy chương trình tinybootloader phía bên dưới. Rồi nó quay lên chạy 4 dòng lệnh . Kết thúc 4 dòng này, nó lại trở về vị trí chương trình chạy bình thường ở bên trên. . phiên Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 3 Đồng hồ RTC_DS1307_ HC3T bản mới nhất của tiny bootloader cho phép reset trên máy tính, không cần phải bấm reset nữa. Đây là một loại tiny bootloader : max232 IV/ Cơ chế hoạt động và chức năng của DS1307: Vcc: nối với nguồn X1,X2: nối với thạch anh 32,768 kHz Vbat: đầu vào pin 3V GND: đất SDA: chuỗi data SCL: dãy xung clock SQW/OUT: xung vuông/đầu ra driver 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 Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 4 Đồng hồ RTC_DS1307_ HC3T 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. 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. Sơ đồ khối của DS1307: Mô tả hoạt động của các chân: Vcc,GND: nguồn một chiều được cung cấp tới các chân này. Vcc là đầu vào 5V. Khi 5 V được cung cấp thì thiết bị có thể truy cập hoàn chỉnh và dữ liệu có thể đọc và viết. Khi pin 3 V được nối tới thiết bị này và Vcc nhỏ hơn 1,25Vbat thì quá trình đọc và viết không được thực thi,tuy nhiên chức năng timekeeping không bị ảnh hưởng bởi điện áp vào thấp. Khi Vcc nhỏ hơn Vbat thì RAM và timekeeper sẽ được ngắt tới nguồn cung cấp trong (thường là nguồn 1 chiều 3V) Vbat: Đầu vào pin cho bất kỳ một chuẩn pin 3V . Điện áp pin phải được giữ trong khoảng từ 2,5 đến 3V để đảm bảo cho sự hoạt động của thiết bị. 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 Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 5 Đồng hồ RTC_DS1307_ HC3T đượ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. X1,X2: được nối với một thạch anh tần số 32,768kHz.Là một mạch tạo dao động ngoài , để hoạt động ổn định thì phải nối thêm 2 tụ 33pF Cũng có DS1307 với bộ tạo dao động trong tần số 32,768kHz, với cấu hình này thì chân X1 sẽ được nối vào tín hiệu dao động trong còn chân X2 thì để hở. 1, Sơ đồ địa chỉ RAM và RTC: Seconds 00h Minutes Hours Day Date Month Year Control 07h Ram 58x8 08h 3Fh Thông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các byte thanh ghi thích hợp. thời gian và ngày tháng được thiết lập cũng thông qua các byte thanh ghi này bằng cách viết vào đó những giá trị thích hợp. nội dung của các thanh ghi dưới dạng mã BCD(binary coded decreaseimal). Bit 7 của thanh ghi seconds là bit clock halt(CH),khi bit này được thiết lập 1 thì dao động disable,khi nó được xoá về 0 thì dao động được enable. Chú ý là phải enable dao động trong suốt quá trình cấu hình thiết lập (CH=0). Thanh ghi thời gian thựuc được mô tả như sau: Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 6 Đồng hồ RTC_DS1307_ HC3T DS1307 có thể chạy ở chế độ 24h cũng như 12h. Bit thứ 6 của thanh ghi hours là bit chọn chế độ 24h hoặc 12h. khi bit này ở mức cao thì chế độ 12h được chọn. ở chế độ 12h thì bit 5 là bit AM/PM với mức cao là là PM. ở chế độ 24h thì bit 5 là bit chỉ 20h(từ 20h đến 23h). Trong quá trình truy cập dữ liệu, khi chỉ thị START được thực thi thì dòng thời gian được truyền tới một thanh ghi thứ 2,thông tin thời gian sẽ được đọc từ thanh ghi thứ cấp này,trong khi đó đồng hồ vẫn tiếp tục chạy. Trong DS1307 có một thanh ghi điều khiển để điều khiển hoạt động của chân SQW/OUT Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 OUT X X SQWE X X RS1 RS0 OUT(output control):bit này điều khiển mức ra của chân SQW/OUT khi đầu ra xung vuông là disable. Nếu SQWE=0 thì mức logic ở chân SQW/OUT sẽ là 1 nếu OUT=1,và =0 nếu OUT=0 SQWE(square wave enable): bit này được thiết lập 1 sẽ enable đầu ra của bộ tạo dao động. Tần số của đầu ra sóng vuông phụ thuộc vào giá trị của RS1 và RS0 RS1 RS0 tần số đầu ra SQW 0 0 1Hz 0 1 4,096kHz 1 0 8,192kHz 1 1 32,768kHz DS1307 hỗ trợ bus 2 dây 2 chiều và giao thức truyền dữ liệu. thiết bị gửi dữ liệu lên bus được gọi là bộ phát và thiết bị nhận gọi là bộ thu. thiết bị điều khiển quá trình này gọi là master. thiết bị Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 7 Đồng hồ RTC_DS1307_ HC3T nhận sự điều khiển của master gọi là slave. Các bus nhận sự điều khiển của master,là thiết bị phát ra chuỗi xung clock(SCL),master sẽ điều khiển sự truy cập bus,tạo ra các chỉ thị START và STOP Sự truyền nhận dữ liệu trên chuỗi bus 2 dây Tuỳ thuộc vào bit R/ w mà 2 loại truyền dữ liệu sẽ được thực thi: truyền dữ liệu từ master truyền và slave nhận: Master sẽ truyền byte đầu tiên là địa chỉ của slave. Tiếp sau đó là các byte dữ liệu . slave sẽ gửi lại bit thông báo đã nhận được (bit acknowledge) sau mỗi byte dữ liệu nhận được. dữ liệu sẽ truyền từ bit có giá trị nhất (MSB). truyền dữ liệu từ slave và master nhận: byte đầu tiên (địa chỉ của slave) được truyền tới slave bởi master. Sau đó slave sẽ gửi lại master bit acknowledge. tiếp theo đó slave sẽ gửi các byte dữ liệu tới master. Master sẽ gửi cho slave các bit acknowledge sau mỗi byte nhận được trừ byte cuối cùng,sau khi nhận được byte cuối cùng thì bit acknowledge sẽ không được gửi . Master phát ra tất cả các chuỗi xung clock và các chỉ thị START và STOP. sự truyền sẽ kết thúc với chỉ thị STOP hoặc chỉ thị quay vòng START. Khi chỉ thị START quay vòng thì sự truyền chuỗi dữ liệu tiếp theo được thực thi và các bus vẫn chưa được giải phóng. Dữ liệu truyền luôn bắt đầu bằng bit MSB. 2, DS1307 có thể hoạt động ở 2 chế độ sau: chế độ slave nhận( chế độ DS1307 ghi):chuỗi dữ liệu và chuỗi xung clock sẽ được nhận thông qua SDA và SCL. Sau mỗi byte được nhận thì 1 bit acknowledge sẽ được truyền. các điều kiện START và STOP sẽ được nhận dạng khi bắt đầu và kết thúc một truyền 1 chuỗi. nhận dạng địa chỉ được thực hiện bởi phần cứng sau khi chấp nhận địa chỉ của slave và bit chiều. Byte địa chỉ là byte đầu tiên nhận được sau khi điều kiện START được phát ra từ master. Byte địa chỉ có chứa 7 bit địa chỉ của DS1307, là 1101000, tiếp theo đó là bit chiều (R/ w) cho phép ghi khi nó bằng 0. sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ phát đi 1 tín hiệu acknowledge lên đường SDA. Sau khi DS1307 nhận dạng được địa chỉ và bit ghi thì master sẽ gửi một địa chỉ thanh ghi tới DS1307 , tạo ra một con trỏ thanh ghi trên DS1307 và master sẽ truyền từng byte dữ liệu cho DS1307 sau mỗi bit acknowledge nhận được. sau đó master sẽ truyền điều kiện STOP khi việc ghi hoàn thành. Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 8 Đồng hồ RTC_DS1307_ HC3T chế độ slave phát ( chế độ DS1307 đọc): byte đầu tiên slave nhận được tương tự như chế độ slave ghi. Tuy nhiên trong chế độ này thì bit chiều lại chỉ chiều truyền ngược lại. Chuỗi dữ liệu được phát đi trên SDA bởi DS 1307 trong khi chuỗi xung clock vào chân SCL. Các điều kiện START và STOP được nhận dạng khi bắt đầu hoặc kết thúc truyền một chuỗi. byte địa chỉ nhận được đầu tiên khi master phát đi điều kiện START. Byte địa chỉ chứa 7 bit địa chỉ của slave và 1 bit chiều cho phép đọc là 1. sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ nhận 1 bit acknowledge trên đường SDA. Sau đó DS1307 bắt đầu gửi dữ liệu tới địa chỉ con trỏ thanh ghi thông qua con trỏ thanh ghi. nếu con trỏ thanh ghi không được viết vào trước khi chế độ đọc được thiết lập thì địa chỉ đầu tiên được đọc sẽ là địa chỉ cuối cùng chứa trong con trỏ thanh ghi .DS1307 sẽ nhận được một tín hiệu Not Acknowledge khi kết thúc quá trình đọc. Đọc dữ liệu-chế độ slave phát thời gian thực hiện việc đọc,ghi dữ liệu của DS1307: sơ đồ đồng bộ: [...]... website: http://hutonline.net 23 Đồng hồ RTC _DS1 307_ HC3T IX,ngôn ngữ lập trình: - ngôn ngữ lập trình cho pic là C, dùng CCS 3.227 để biên dịch - sử dụng I2C tích hợp sẵn trong PIC để giao tiếp với DS1 307 - sử dụng các hàm có sẵn trong CCS là:I2C_START;I2C_STOP; I2C_READ; I2C_WRITE dùng để khởi tạo,đọc giá trị từ DS1 307 sang PIC - việc hiển thị thời gian là liên tục ,ta dùng 8 byte RAM để làm bộ đệm hiển... gian là liên tục ,ta dùng 8 byte RAM để làm bộ đệm hiển thị (các biến led1, led8), các giá trị thời gian đọc từ DS1 307 sau khi đã chuyển sang BCD sẽ được lưu trong các biến này - Ta sẽ đọc các giá trị thời gian từ DS1 307 nhưng chỉ đọc giá trị giây, sau 1 phút ta mới cập nhật toàn bộ thanh ghi thời gian của DS1 307 và đưa ra hiển thị - Chương trình quét bàn phím sẽ xác định phím chức năng và gọi hàm xử... http://hutonline.net 19 Set day: Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 20 Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 21 Set date: VIII/ Sơ đồ khối của mạch: Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 22 Đồng hồ RTC _DS1 307_ HC3T Tài liệu... http://hutonline.net 9 đặc tính và thời gian thực hiện: V/ Tổng quan về vi điều khiển PIC16F877A: Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 10 Đồng hồ RTC _DS1 307_ HC3T PIC 16F877A trong mạch là loại có 40 chân,với 5 cổng vào ra la Port A(RA0÷RA5),Port B(RB0÷RB7),Port C(RC0÷RC7),Port D(RD0÷RD7),Port E(RE0÷RE2) Có 3 bộ định thời là timer0,timer1,timer2... http://hutonline.net 15 Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 16 Set hours: Set minutes: Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 17 Set year: Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 18 Set month: Đồng hồ RTC _DS1 307_ HC3T Tài... tại website: http://hutonline.net 12 Đồng hồ RTC _DS1 307_ HC3T mạch reset của pic16f877a VI/ Khối hiển thị: - Khối hiển thị dùng 8 led +,ở chế độ hiển thị ngày tháng năm:2 led để hiện thị ngày ,2 led hiển thị tháng ,4 led hiển thị năm +,ở chế độ hiển thị giờ ,phút, giây: 2 led dùng để hiển thị giờ,2 led dùng để hiển thị phút, 2 led dùng để hiển thị giây, 1 led dùng hiển thị thứ trong tuần (chủ nhật led... hay là giờ ,phút, giây,thứ - Phím mode dùng để chỉnh giờ,phút,giây,ngày,tháng,năm - Phím increase để tăng giá trị - Phím decrease để giảm giá trị Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 14 - Đồng hồ RTC _DS1 307_ HC3T Thuật toán điều khiển: + , thay đổi chế độ hiển thị: Status=0 Đ Quét led hiển thị ngày,tháng,năm +,Chỉnh thời gian: S Tài liệu này được upload & download... delay_us(500); led8=1; Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 26 PortB=led_code[year2]; led7=0;//YEAR2 delay_us(500); led7=1; PortB=led_code[0]; led6=0;//YEAR1 delay_us(500); led6=1; PortB=led_code[2]; led5=0;//YEAR2 delay_us(500); led5=1; i++; } } void update _ds1 307(void) { int8 data=0; // luu tru du lieu tam thoi de gui vao ds1 307 i2c_start();... miễn phí tại website: http://hutonline.net 13 Đồng hồ RTC _DS1 307_ HC3T bắt đầu quét led khởi tạo hệ thống gửi dữ liệu cho led 1 cấp nguồn cho led 1 trễ 1ms ngắt nguồn led 1 gửi dữ liệu cho led 8 cấp nguồn cho led 8 trễ 1ms ngắt nguồn led 8 VII/ khối điều khiển : Gồm 4 phím bấm: status-mode(button1)-increase(button2)-decrease(button3) - Phím status dùng để chọn chế độ hiển thị trên các led là hiển thị... data=0x00; i2c_write(data); i2c_stop(); // ket thuc truyen du lieu } void set_time(void) { set_year(); Đồng hồ RTC _DS1 307_ HC3T Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 27 set_month(); set_date(); set_day(); set_hour(); set_min(); while (mode==0) {} update _ds1 307(); } void set_year(void) { // Cai dat nam while (mode==0) {} // cho phim nha do { if (increase==0) { . Báo cáo: "Đồng hồ thời gian thực dùng DS 1307" Tài liệu này được upload & download miễn phí tại website: http://hutonline.net 1 Đồng hồ RTC _DS1 307_ HC3T Mục. quả mô phỏng 47 3.4.Mạch thi công thực tế 47 KẾT LUẬN 48 Môn vi xử lý Đề tài : đồng hồ thời gian thực dùng DS 1307 Giáo viên hướng dẫn: ThS Hàn Huy Dũng Nhóm thực hiện: Sinh viên lớp điện tử. START được thực thi thì dòng thời gian được truyền tới một thanh ghi thứ 2,thông tin thời gian sẽ được đọc từ thanh ghi thứ cấp này,trong khi đó đồng hồ vẫn tiếp tục chạy. Trong DS1 307 có