Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
1,04 MB
Nội dung
Update đồánviđiềukhiểnđồnghồthờigianthựcDS1307 +89S52 25-11-2011 | fee_08 | phản hồi » Mạch đồnghồ hiển thị phút giây ,có khả lưu điện Thích hợp cho muốn tự tay làm cho riêng ,hoặc tặng bạn bè Mạch sử dụng chip thờigianthực DS 1307 hoạt động tần số 32768kHZ nuôi nguồn dự phòng 3V hoạt độngthờigian năm k có nguồn điện I, Nói qua chuẩn giao tiếp I2c Giao thức ưu tiên truyền thông nối tiếp phát triển Philips Semiconductor gọi bus I2C Vì nguồn gốc thiết kế để điềukhiển liên thơng IC (Inter-Intergrated Circuit) nên đặt tên I2C Tất chip có tích hợp tương thích với I2C có thêm giao diện tích hợp Chip để truyền thông trực tiếp với thiết bị tương thích I2C khác Việc truyền liệu nối hai hướng bit thực thi theo chế độ sau: Chuẩn (Standard)—100 Kbits/sec Nhanh (Fast)—400 Kbits/sec Tốc độ cao (High speed)—3.4 Mbits/sec Đường bus thực truyền thông nối tiếp I2C gồm hai đường đường truyền liệu nối tiếp SDA đường truyền nhịp xung đồnghồ nối tiếp SCL Vì chế hoạt độngđồng nên cần có nhịp xung tín hiệu đồng Các thiết bị hỗ trợ I2C có địa định nghĩa trước, số bit địa thấp cấu hình Đơn vị thiết bị khởi tạo trình truyền thơng đơn vị Chủ đơn vị tạo xung nhịp đồng bộ, điềukhiển cho phép kết thúc trình truyền Nếu đơn vị Chủ muốn truyền thơng với đơn vị khác gửi kèm thơng tin địa đơn vị mà muốn truyền liệu truyền Đơn vị Tớ gán đánh địa thơng qua đơn vị Chủ thiết lập truyền thơng trao đổi liệu Bus liệu thiết kế phép thực nhiều đơn vị Chủ Tớ Bus Q trình truyền thơng I2C bắt đầu tín hiệu start tạo đơn vị Chủ Sau đơn vị Chủ truyền liệu bit chứa địa đơn vị Tớ mà muốn truyền thơng, theo thứ tự bit có trọng số lớn MSB truyền trước Bit thứ tám chứa thông tin để xác định đơn vị Tớ thực vai trò nhận (0) hay gửi (1) liệu Tiếp theo bit ACK xác nhận đơn vị nhận nhận byte trước hay không Đơn vị truyền (gửi) truyền byte liệu bắt đầu MSB Tại điểm cuối byte truyền, đơn vị nhận tạo bit xác nhận ACK Khuôn mẫu bit (gồm bit liệu bit xác nhận) lặp lại cần truyền tiếp byte Khi đơn vị Chủ trao đổi xong liệu cần quan sát bit xác nhận ACK cuối sau tạo tín hiệu dừng STOP để kết thúc q trình truyền thơng I2C giao diện truyền thơng đặc biệt thích hợp cho ứng dụng truyền thông đơn vị bo mạch với khoảng cách ngắn tốc độ thấp Ví dụ truyền thơng CPU với khối chức bo mạch EEPROM, cảm biến, đồnghồ tạo thờigian thực… Hầu hết thiết bị hỗ trợ I2C hoạt động tốc độ 400Kbps, số cho phép hoạt động tốc độ cao vài Mbps I2C đơn giản để thực thi kết nối nhiều đơn vịhỗ trợ chế xác định địa II, Sơ lược chip thờigianthựcDs1307DS1307 chip đồnghồthờigianthực (RTC : Real-time clock), khái niệm thờigianthực dùng với ý nghĩa thờigian tuyệt đối mà người sử dụng, tình giây, phút, giờ… DS1307 sản phẩm Dallas Semiconductor (một công ty thuộc Maxim Integrated Products) Chip có ghi 8-bit chứa thờigian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm Ngồi DS1307 có ghi điềukhiển ngõ phụ 56 ghi trống dùng RAM DS1307 xuất gói SOIC DIP có chân Các chân DS1307 mơ tả sau: • X1 X2: ngõ kết nối với thạch anh 32.768KHz làm nguồn tạo dao động cho chip • VBAT: cực dương nguồn pin 3V ni chip • GND: chân mass chung cho pin 3V Vcc • Vcc: nguồn cho giao diện I2C, thường 5V dùng chung với viđiềukhiển Chú ý Vcc không cấp nguồn VBAT cấp DS1307 hoạt động (nhưng khơng ghi đọc được) • SQW/OUT: ngõ phụ tạo xung vuông (Square Wave / Output Driver), tần số xung tạo lập trình Như chân khơng liên quan đến chức DS1307đồnghồthờigian thực, bỏ trống chân nối mạch • SCL SDA đường giao xung nhịp liệu giao diện I2C • Có thể kết nối DS1307 mạch điện đơn giản sau: Cấu tạo bên DS1307 bao gồm số thành phần mạch nguồn, mạch dao động, mạch điềukhiển logic, mạch giao diện I2C, trỏ địa ghi (hay RAM) Sử dụng DS1307 chủ yếu ghi đọc ghi chip Vì có vấn đề cấu trúc ghi cách truy xuất ghi thông qua giao diện I2C Như trình bày, nhớ DS1307 có tất 64 ghi 8-bit đánh địa từ đến 63 (từ 00H đến 3FH theo hệ HexaDecimal) Tuy nhiên, thực chất có ghi đầu dùng cho chức “đồng hồ” (RTC) lại 56 ghi bỏ trống dùng chứa biến tạm RAM muốn Bảy ghi chứa thông tin thờigianđồnghồ bao gồm: giây (SECONDS), phút (MINUETS), (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH) năm (YEAR) Việc ghi giá trị vào ghi tương đương với việc “cài đặt” thờigian khởi động cho RTC Việc đọc giá trị từ ghi đọc thờigianthực mà chip tạo Ví dụ, lúc khởi động chương trình, ghi vào ghi “giây” giá trị 42, sau 12s đọc ghi này, thu giá trị 54 Thanh ghi thứ (CONTROL) ghi điềukhiển xung ngõ SQW/OUT (chân 6) Tuy nhiên, khơng dùng chân SQW/OUT nên có thề bỏ qua ghi thứ Tổ chức nhớ DS1307 trình bày hình Vì ghi quan trọng hoạt động DS1307, khảo sát ghi cách chi tiết Trước hết quan sát tổ chức theo bit ghi hình Tổ chức ghi thờigian Thanh ghi giây (SECONDS): ghi ghi nhớ DS1307, địa 0×00 Bốn bit thấp ghi chứa mã BCD 4-bit chữ số hàng đơn vị giá trị giây Do giá trị cao chữ số hàng chục (khơng có giây 60) nên cần bit (các bit SECONDS 6:4) mã hóa (số =101, bit) Bit cao nhất, bit 7, ghi điềukhiển có tên CH (Clock halt – treo đồng hồ), bit set dao động chip bị vơ hiệu hóa, đồnghồ khơng hoạt độngVì vậy, thiết phải reset bit xuống từ đầu Thanh ghi phút (MINUTES): có địa 01H, chứa giá trị phút đồnghồ Tương tự ghi SECONDS, có bit ghi dùng lưu mã BCD phút, bit ln ln Thanh ghi (HOURS): nói ghi phức tạp DS1307 Thanh ghi có địa 02H Trước hết 4-bits thấp ghi dùng cho chữ số hàng đơn vịDoDS1307hỗ trợ loại hệ thống hiển thị (gọi mode) 12h (1h đến 12h) 24h (1h đến 24h) giờ, bit6 (hình 4) xác lập hệ thống Nếu bit6=0 hệ thống 24h chọn, bit cao dùng mã hóa chữ số hàng chục giá trị Do giá trị lớn chữ số hàng chục trường hợp (=10, nhị phân) nên bit đủ để mã hóa Nếu bit6=1 hệ thống 12h chọn, với trường hợp có bit dùng mã hóa chữ số hàng chục giờ, bit (màu orange hình 4) buổi ngày, AM PM Bit5 =0 AM bit5=1 PM Bit Thanh ghi thứ (DAY – ngày tuần): nằm địa 03H Thanh ghi DAY mang giá trị từ đến tương ứng từ Chủ nhật đến thứ tuần Vì thế, có bit thấp ghi có nghĩa Các ghi lại có cấu trúc tương tự, DATE chứa ngày tháng (1 đến 31), MONTH chứa tháng (1 đến 12) vàYEAR chứa năm (00 đến 99) Chú ý, DS1307 dùng cho 100 năm, nên giá trị năm có chữ số, phần đầu năm người dùng tự thêm vào (ví dụ 20xx) Ngồi ghi nhớ, DS1307 có ghi khác nằm riêng gọi trỏ địa hay ghi địa (Address Register) Giá trị ghi địa ghi nhớ mà người dùng muốn truy cập III,AT89S52: SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN Viđiềukhiển 8051 Intel cho đời vào năm 1980 thuộc viđiềukhiểnhọ MCS-51 Hiện nhiều nhà sản xuất Siemens, Advanced Micro Devices, Fusisu Philips tập trung phát triển sản phẩm sở 8051.Atmel hãng cho đời chip 89C51, 52, 55 sau cải tiến thêm, hãng cho đời 89S51, 89S52, 89S8252… Cấu hình 89S52: + 8KB nhớ chương trình + Dao động bên ngồi với thạch anh Về chip nêu giống nhau, có số tính cải tiến thêm Các phiên sau có nhiều khối tính đặc biệt Chúng ta xem bảng so sánh số loại phổ biến Chức chân 89S52 • P0,1,2,3 có chức xuất/nhập • Riêng P0, P2 có chức kết nối nhớ mở rộng, khảo sát phần mở rộng nhớ • P1: Chân T2 T2EX dùng cho timer/ counter Hai chức khảo sát phần Timer Chân SS\, MOSI, MISO, SCK truyền liệu theo chuẫn SPI đồngthời có chức kết nối với mạch nạp chương trình Xem hình Mạch nạp : Chân ALE, PSEN, WR\, RD\ dùng để kết nối nhớ mở rộng • Chân EA\ có chức chọn nhớ chương trình: EA\=GND: Chọn nhớ ngoại, EA\=VCC chọn nhớ nội • Chân Xtal1 Xtal2 gắn với thạch anh IV, THUẬT TOÁN GIAO TIẾP I2C VỚI VIĐIỀUKHIỂN 89S52 Điều kiện START and STOP START STOP điều kiện bắt buộc phải có thiết bị chủ muốn thiết lập giao tiếp với thiết bị mạng I2C START điều kiện khởi đầu, báo hiệu bắt đầu giao tiếp, STOP báo hiệu kết thúc giao tiếp Hình 11 mơ tả điều kiện START điều kiện STOP giao tiếp I2C DS1307 với ViĐiềuKhiển Ban đầu chưa thực trình giao tiếp, hai đường SDA SCL mức cao (SDA = SCL = HIGH) Lúc bus I2C coi “rỗi” (“bus free”), sẵn sàng cho giao tiếp Hai điều kiện START STOP thiếu việc giao tiếp thiết bị I2C, tất nhiên giao tiếp khơng ngoại lệ • Điều kiện START: chuyển đổi trạng thái từ cao xuống thấp đường SDA đường SCL mức cao (cao = 1; thấp = 0) báo hiệu điều kiện START • Điều kiện STOP: Một chuyển đổi trạng thái từ mức thấp lên cao đường SDA đường SCL mức cao • Cả hai điều kiện START STOPđều tạo thiết bị chủ Sau tín hiệu START, bus I2C coi trạng thái làm việc (busy) Bus I2C rỗi, sẵn sàng cho giao tiếp sau tín hiệu STOP từ phía thiết bị chủ • Sau có điều kiện START, qua trình giao tiếp, có tín hiệu START lặp lại thay tín hiệu STOP bus I2C tiếp tục trạng thái bận Tín hiệu START lặp lại START có chức giống khởi tạo giao tiếp Chế độ hoạt động Chế độ hoạt động I2C DS1307 hoạt động chế độ sau: • Ở chế độ slave nhận (chế độDS1307 ghi ): chuỗi liệu chuỗi xung clock nhận thông qua SDA SCL Sau byte nhận bit ACKnowledge truyền Các điều kiện START STOP nhận dạng bắt đầu kết thúc truyền chuỗi, nhận dạng địa thực phần cứng sau chấp nhận địa slave bit chiều • Chế độ slave phát ( chế độDS1307 đọc ): byte slave nhận tương tự chế độ slave ghi Tuy nhiên chế độ bit chiều lại chiều chuyền ngược lại Chuỗi liệu phat SDA DS1307 chuỗi xung clock vào chân SCL Để làm việc với DS1307, ta thực bước sau: • START I2C • Ghi: 0DxH (Đây địa DS1307 nhà sản xuất quy định giao tiếp I2C) với: x=0: Ghi liệu vào DS1307 x=1: Đọc liệu vào DS1307 • Ghi tham số x vào, có nghĩa việc chúng tag hi hay đọc liệu từ DS1307 tùy vào giá trị x=0 (ghi liệu) hay x=1 (đọc liệu) • Ghi vào địa ghi cần ghi cần đọc (bảng đồ ghi DS1307 giớ thiệu hình & hình 4) • Ghi đọc liệu • STOP I2C Một ví dụ minh họa cho việc đọc ghi • Thanh ghi có địa 01H chứa Data “phút”, muốn set phút vào DS1307 làm theo quy trình: START→Ghi: 0D0H→Ghi tiếp: 01H→Ghi tiếp:→Ghi tiếp STOP muốn cài đặt thờigian cho phút Nếu muốn Ghi vào địa 01H Ghi vào địa 04H chẳng hạn phải START lại từ đầu→Ghi vào 0D0H (để xác định Ghi vào DS1307 _ hướng giao tiếp Ghi vào) →Ghi tiếp 04H→Ghi liệu ghi cần cài đặt→STOP I2C • Tương tự, muốn đọc trước hết phải ghi vào địa cần đọc: tức tiếp tục tiến hành thủ tục START→Ghi 0D0H→Ghi vào địa (địa ghi mà ta muốn đọc liệu) Sau đó, START lại ghi lại 0D1H (lúc thông báo ta đọc từ DS1307), đọc bình thường (thanh ghi đọc ghi có địa ta vừa ghi vào), tiếp tục đọc địa cần đọc tự động tăng lên STOP I2C V, SƠ ĐỒ KHỐI TỔNG QUÁT CỦA MẠCH ĐỒNGHỒ Dựa vào sơ đồ khối giao tiếp trên, điều phải viết phần mềm khởi tạo DS1307, thực chương trình giao tiếp I2C, đọc giá trị Ram DS1307 lưu tạm thời vào Ram 89S52 Sau đó, viết thêm phần mềm để đọc nội dung Ram đưa hiển thị phương pháp quét Để đơn giản, việc đọc liệu từ DS1307 lưu vào Ram 89S52 hiển thị giờ_phút_giây, chia làm chương trình nhỏ, có phím nhấn nhảy đến chương trình xử lý phím nhấn riêng Sơ đồ nguyên lý: Sơ đồ mạch in: VI,THIẾT KẾ PHẦN MỀM Như trình bày phần thuật tốn gaio tiếp sơ đồ khối tổng quát, chương trình MAIN gồm mục mơ tả cụ thể lưu đồ chương trình MAIN ỏ hình Giải thích lưu đồ này: Bắt đầu, chương trình gọi chương trình đọc liệu từ DS1307 với chuẩn giao tiếp I2C phương pháp trình bày cụ thể mục (thuật tốn giao tiếp), sau đó, gọi chương trình để quét Led đoạn thị số: số hiển thị giá trị Giờ, số hiển thị giá trị Phút, số hiển thị giá trị Giây Nếu phím MODE (chọn chế độ cài đặt) khơng nhấn vòng lặp chương trình chạy vơ tận Nếu phím MODE nhấn, nhảy tới chương trình cài đặt hay phút tùy thuộc vào số lần nhấn phím MODE Sau ta vào chi tiết tùng khối nhỏ: ĐỌC DỮ LIỆU TỪ DS1307 LƯU VÀO TRONG RAM CỦA 89S52 Xem lưu đồ chương trình hình Ở đây, chương trình nhỏ hơn, chẳng hạn như: CTC SEND_START, SEND_STOP, SEND_BYTE, v.v đề cập đến mục (thuật toán giao tiếp đề cập trên) VII, HIỂN THỊ BẰNG PHƯƠNG PHÁP QUÉT LED ĐOẠN VIII, CÀI ĐẶT THỜIGIAN Trong lưu đồ giải thuật hình trên[img]http://files.myopera.com/PeterLeDucAn/blog/mach-dong-ho-dung-hinh %2021.JPG[/img], cho thấy, vòng lặp chương trình chạy vơ tận có phím MODE ấn xuống Khi đó, nhảy đến CTC để giải việc cài đặt thờigian Lưu đồ giải thuật CTC xử lý cài đặt phím thể hình Lưu đồ CTC cài đặt CTC cài đặt phút có nguyên tắc tương tự cài đặt nên khơng nói Nhìn vào lưu đồ thấy, ThanhGhi=02H, địa ghi Giở DS1307, vậy, mục đích việc định nghĩa nhớ ThanhGhi để xác định địa thay đổi giá trị ô nhớ RAM DS1307 CTC cài đặt lặp vô tận CTC hiển thi cho hiển thị Led đoạn, hiển thị cài đặt, tất đèn Led lại tắt hết Trong CTC cài đặt chạy vơ tận, có phím INC DEC nhấn nhảy đến CTC tăng giảm tùy vào phím nhấn CTC tăng hinh 22 bên đây, nguyên tắc CTC giảm Lưu đồ CTC tăng Nếu nhấn phím tăng q 23, chương trình đặt thờigian lại giá trị 00h the end! Video sản phẩm: Tham khảo code: http://www.mediafire.com/?0swwji0q12eyeb ... chip thời gian thực Ds1307 DS1307 chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm thời gian thực dùng với ý nghĩa thời gian tuyệt đối mà người sử dụng, tình giây, phút, giờ… DS1307. .. quan đến chức DS1307 đồng hồ thời gian thực, bỏ trống chân nối mạch • SCL SDA đường giao xung nhịp liệu giao diện I2C • Có thể kết nối DS1307 mạch điện đơn giản sau: Cấu tạo bên DS1307 bao gồm... tin thời gian đồng hồ bao gồm: giây (SECONDS), phút (MINUETS), (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH) năm (YEAR) Vi c ghi giá trị vào ghi tương đương với vi c “cài đặt” thời gian khởi