Thiết kế mạch hiển thị thời gian thực sử dụng DS12887

Một phần của tài liệu Bài giảng Vi xử lý 1 - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 182 - 210)

- Hiển thị thời gian: giờ, phút, giây, thứ, ngày, tháng, năm trên các led 7 đoạn - Hệ thống lưu được thời gian khi mất nguồn

- Có các nút điều chỉnh thời gian:

+ mode: chọn thời gian cần chỉnh

+ up: tăng đơn vị thời gian tương ứng với mode + down: giảm đơn vị thời gian tương ứng với mode Xây dựng sơ đồ khối hệ thống

Hình 7.1 Sơ đồ khối đồng hồ số a. Chức năng của các khối

Khối nguồn: có nhiệm vụ tạo ra năng lượng cần thiết để cung cấp cho các thành phần của hệ thống. Các thành phần trong hệ thống đều hoạt động ở nguồn cấp Vcc=+5V.

Khối xử lý trung tâm: thực hiện đọc dữ liệu thời gian từ DS12887, giải mã và hiển thị. Khối xử lý trung tâm cũng nhận tín hiệu điều khiển từ khối ‘nút nhấn’ để điều chỉnh thời gian.

Khối thời gian thực: Chứa thông tin về thời gian thực, lưu trữ thông tin ngay cả khi mất nguồn nuôi ngoài.

Khối led 7 đoạn: để hiển thị thời gian bao gồm giây, phút, giờ, thứ, ngày, tháng, năm cần sử dụng 15 led 7 đoạn.

Khối quét led: Với số lượng led 7 đoạn lớn nên sử dụng phương pháp giải mã động để hiển thị, sử dụng IC ghi dịch để mở rộng chân cho vi điều khiển đồng thời cung cấp dòng đủ lớn cấp cho led 7 đoạn.

Khối đệm dữ liệu: đây là khối đệm giao tiếp giữa vi điều khiển và led 7 đoạn. Do dòng điều khiển của vi điều khiển nhỏ nên không thể giao tiếp trực tiếp với led 7 đoạn, khối này làm nhiệm vụ khuếch đại dòng cấp cho led 7 đoạn.

Khối nút điều chỉnh: nhận tín hiệu điều chỉnh thời gian của người sử dụng. Khối này cho phép người dùng lựa chọn đơn vị thời gian cần chỉnh và chỉnh tăng hoặc giảm đơn vị thời gian đó.

b. Thiết kế phần cứng

Khối xử lý trung tâm: Vi điều khiển AT89C51 của hãng Atmel được lựa chọn làm khối xử lý trung tâm. Đây là vi điều khiển đáp ứng được các yêu cầu:

- Có số lượng chân vào/ra đủ lớn để giao tiếp với led 7 đoạn và quét led

- Vi điều khiển tích hợp toàn bộ bộ nhớ chương trình, dữ liệu, khối timer và ngắt do đó đòi hỏi ít các thành phần ngoài để hệ thống hoạt động. Với bộ nhớ ROM on-chip có dung lượng 4Kbyte hoàn toàn có thể đáp ứng được việc lưu chương trình. Bộ nhớ RAM 128 byte đủ để lưu dữ liệu và kết quả tính toán.

- Tần số hoạt động đủ lớn, đáp ứng được yêu cầu đọc dữ liệu, xử lý và hiển thị dữ liệu

Hình 7.2 Sơ đồ chân DS12887

- Giá thành thấp và dễ mua trên thị trường

Khối thời gian thực: IC thời gian thực DS12887 được lựa chọn do có giao tiếp giống như một IC nhớ RAM ngoài tích hợp bộ phân kênh, hỗ trợ giao tiếp bus kiểu Intel, phù hợp với vi điều khiển AT89C51. DS12887 là IC thời gian thực cung cấp thông tin thời gian giây, giờ, phút, thứ, ngày, tháng, năm (đúng cho đến năm 2100) được sản xuất bởi hãng Philips. IC vẫn tiếp tục cập nhật thời gian trong trường hợp không có nguồn ngoài do sử dụng nguồn pin lithium bên trong. Ngoài ra, IC này còn có bộ nhớ RAM 114 byte có khả năng nhớ dữ liệu ngay cả khi mất nguồn ngoài.

Sơ đồ chân DS12887:

Trong đó:

 AD0-AD7: Bus đa hợp địa chỉ/dữ liệu.

 NC: Bỏ trống

 MOT: Lựa chọn loại Bus

 /CS: Ngõ vào lựa chọn chip

 AS: chốt địa chỉ

 R/W: Ngõ vào đọc ghi

 DS: Chốt dữ liệu

 RESET: Ngõ vào reset

 IRQ: Ngõ ra yêu cầu ngắt

 SQW: Ngõ ra sóng vuông

 VCC: Nguồn cung cấp +5V

 GND: Mass Chức năng các chân

- GND, Vcc: Các chân cấp nguồn cho IC. Vcc là điện áp ngõ vào +5V. Khi điện áp +5V (thay đổi trong giới hạn cho phép) được cung cấp, IC được truy cập đầy đủ, dữ liệu có thể đọc và ghi. Khi Vcc thấp hơn +4.25V, quá trình đọc và ghi bị cấm tuy nhiên chức năng cập nhật thời gian tự động vẫn được tiếp tục. Khi Vcc thấp hơn +3V, Ram và bộ giữ thời gian được nuôi bằng nguồn năng lượng lithium bên trong.

- MOT: là chân lựa chọn giữa hai loại bus. Khi MOT được nối Vcc, kiểu bus Motorola được lựa chọn, khi được nối GND hoặc không nối, kiểu bus Intel được lựa chọn. Chân có điện trở kéo xuống bên trong có giá trị khoảng 20K.

Hình 7.3 Chu kỳ bus quy trình viết bus kiểu intel

Hình 7.4 Chu kỳ bus chu trình đọc bus kiểu intel

- SQW: Chân phát tín hiệu vuông. Tần số của chân SQW có thể thay đổi bằng cách lập trình các bit RS0÷RS3 trong thanh ghi A. Tín hiệu SQW có thể bật hoặc tắt bằng cách thay đổi giá trị bit SQWE trong thanh ghi B. Tín hiệu SQW không xuất hiện khi Vcc thấp hơn 4.25V

Bảng 7.1 Bảng lựa chọn tần số tại chân SQW

- AD0-AD7: Bus đa hợp giữa địa chỉ và dữ liệu. Tín hiệu địa chỉ được xuất trong giai đoạn thứ nhất của chu kỳ bus, tín hiệu dữ liệu được xuất trong giai đoạn thứ hai của chu kỳ. Tín hiệu địa chỉ trên AD0÷AD7 phải có giá trị ổn định trước khi xuất hiện tín hiệu chốt địa chỉ là sườn xuống tại chân AS.

Tín hiệu dữ liệu trên AD0÷AD7 phải giữ ổn định trong phần sau của DS hoặc xung WR. Trong chu kỳ đọc DS12887 ngõ ra 8 bit của dữ liệu ổn định trong phần sau của DS hoặc xung RD. Chu kỳ đọc được thực hiện xong và bus trở về trạng thái trở kháng cao cũng như khi DS bắt đầu xuống thấp trong trường hợp kiểu bus Motorola hoặc khi RD lên cao trong trường hợp kiểu bus Intel.

- AS: chân cấp xung chốt địa chỉ. Sườn xuống của AS làm cho tín hiệu địa chỉ được chốt lại bên trong của DS12887. Sườn lên tiếp theo trên AS sẽ xoá địa chỉ bất kể chân /CS có được chọn hay không.

- DS: chân DS/RD có hai kiểu sử dụng tuỳ thuộc vào mức của chân MOT. Khi chân MOT được nối Vcc, kiểu bus Motorola được lựa chọn. Trong kiểu này DS là xung dương trong suốt phần sau của chu kỳ bus và được gọi là Data Strobe. Trong suốt chu kỳ đọc, DS báo hiệu thời gian mà DS12887 được điều khiển bus đôi. Trong chu kỳ đọc, xung quét của DS là nguyên nhân làm DS12887 chốt dữ liệu được ghi.

Khi chân MOT được nối GND, kiểu bus Intel được lựa chọn. Trong kiểu này, chân DS được gọi là Read(RD) xác định chu kỳ DS12887 điều khiển bus đọc dữ liệu.

- R/W: có hai cách hoạt động. Khi chân MOT được kết nối Vcc lựa chọn kiểu bus Motorola, R/W ở chế độ chỉ ra trạng thái hiện tại là chu kỳ đọc hoặc ghi. Chu kỳ đòi hỏi chân R/W phải ở mức cao khi chân DS ở mức cao. Chu kỳ đòi hỏi chân R/W ở mức thấp trong suốt quá trình chốt tín hiệu của DS. Khi chân MOT được nối GND cho

chế độ bus Intel, tín hiệu R/W là tín hiệu hoạt động mức thấp được gọi là WR. Trong chế độ này chân R/W được định nghĩa như tín hiệu cho phép ghi.

- CS: chân lựa chọn phải được xác định ở mức thấp của chu kỳ bus để DS12887 được sử dụng. CS phải được giữ trong trạng thái hoạt động trong suốt DS và AS của chế độ bus Motorola và trong suốt RD và WR của chế độ bus Intel. Chu kỳ bus khi chọn vị trí mà không chọn CS sẽ chốt địa chỉ nhưng sẽ không có bất kỳ sự truy cập nào. Khi Vcc thấp hơn +4.25V, DS12887 ngăn chặn sự truy cập từ bên ngoài bằng cách không cho phép lựa chọn ngõ vào CS. Hành động này nhằm bảo vệ cả dữ liệu thời gian cũng như dữ liệu Ram trong suốt quá trình mất nguồn.

- IRQ: là ngõ ra hoạt động mức thấp, có thể sử dụng ngõ vào ngắt tới bộ vi xử lý. Ngõ ra /IRQ ở mức thấp khi bit là nguyên nhân làm ngắt và phù hợp với bit cho phép ngắt được đặt. Để xoá chân /IRQ chương trình của bộ vi xử lý thông thường được đặt ở thanh ghi C. Chân Reset cũng bị xoá trong lúc ngắt. Khi không có trạng thái ngắt nào được sử dụng, trạng thái /IRQ ở mức tổng trở cao. Nhiều thiết bị ngắt có thể nối tới /IRQ Bus là một ngõ ra mở và yêu cầu một điện trở kéo lên bên ngoài.

- RESET: không có làm thay đổi việc xác lập realtime cũng như thông tin thời gian thực và dữ liệu lưu trong RAM. Ở chế độ cấp nguồn, chân reset có thể bị kéo xuống trong một khoảng thời gian để ổn định nguồn cung cấp.

Tổ chức địa chỉ các ô nhớ của DS12887

Các ô nhớ chứa thông tin về thời gian và các thanh ghi điều khiển nằm tại 14 địa chỉ đầu tiên từ 0-13. Các địa chỉ từ 14-127 bao gồm 114 byte là các ô nhớ RAM.

Hình 7.5 Địa chỉ các ô nhớ trong DS12887

Bảng 7.2 Vị trí các ô nhớ, chức năng và định dạng dữ liệu Các thanh ghi điều khiển:

Thanh ghi A

UIP - Update In Progress là bit trạng thái. Khi bit UIP ở mức 1, quá trình cập nhật thời gian sẽ sớm xảy ra. Khi bit UIP ở mức 0, quá trình cập nhật thời gian sẽ không xảy ra ít nhất là 244 s. Những thông tin về thời gian, lịch, báo giờ ở trong RAM sẵn sàng cho việc truy cập khi bit UIP ở mức 0. Bit UIP là bit chỉ đọc và không bị ảnh hưởng của chân /RESET. Khi ghi vào bit SET trong thanh ghi B giá trị 1 sẽ ngăn chặn mọi quá trình cập nhật thời gian và xoá bit trạng thái UIP.

DV2, DV1, DV0: là 3 bit trên được sử dụng để bật hoặc tắt bộ dao động và cài đặt lại quá trình đếm xuống. Khi được đặt bằng 010, đó là sự kết hợp duy nhất để bật bộ dao động lên và cho phép RTC giữ thời gian. Khi được đặt 11X sẽ cho phép dao động nhưng giữ quá trình đếm xuống ở mức reset. Quá trình cập nhật tiếp theo sẽ sớm diễn ra sau 500ms sau khi kiểu 010 được ghi vào DV0, DV1 và DV2.

RS3, RS2, RS1, RS0: là 4 bit lựa chọn một trong 13 loại của bộ chia 15 trạng thái hoặc không cho phép xuất tín hiệu chia ra ngoài. Loại được lựa chọn có thể phát ra sóng vuông (chân SQW) và/hoặc ngắt theo chu kỳ. Người sử dụng có thể sử dụng 1 trong những cách sau :

- Cho phép ngắt với bit PIE

- Cho phép xuất ngõ ra chân SQW với bit SQWE

- Cho phép cả hai hoạt động cùng một lúc và cùng một loại - Không kích hoạt cả 2

Bảng dưới liệt kê chu kỳ ngắt và tần số sóng vuông có thể chọn lựa với các bit RS0÷RS3. Cả 4 bit đọc/ ghi đều không bị ảnh hưởng bởi chân RESET

Thanh ghi B

SET – Khi bit SET ở mức 0, thông thường quá trình cập nhật bằng cách tăng biến đếm 1 lần 1 giây. Khi bit SET được ghi vào mức 1, mọi quá trình cập nhật đều bị cấm và chương trình có thể bắt đầu (khởi động) bytes thời gian và lịch mà không có quá trình cập nhật nào xảy ra trong quá trình khởi động. Chu kỳ đọc có thể thực thi ở cùng một kiểu. SET là bit đọc/ghi và không chịu ảnh hưởng của nút RESET hoặc các chức năng bên trong của DS12887.

PIE – Bit cho phép ngắt theo chu kỳ (Periodic Interrupt Enable) là bit đọc/ghi, nó cho phép bit cờ ngắt theo chu kỳ (Periodic Interrupt Flag (PF)) trong thanh ghi C để điều khiển chân IRQ\ xuống mức thấp. Khi bit PIE được đặt lên mức 1, chu kỳ ngắt được tạo ra bằng cách điều khiển chân IRQ\ xuống mức thấp tuỳ thuộc vào tỉ lệ phân bố của bit RS3-RS0 ở thanh ghi A.

AIE – Bit cho phép ngắt báo giờ (Alarm Interrupt Enable (AIE)) là bit đọc/ghi

cho phép ngắt IRQ\. Tín hiệu ngắt báo giờ diễn ra ở tất cả các giây khi cả 3 bytes báo giờ chứa mã báo giờ được thể hiện ở nhị phân như sau 11XXXXXX. Các chức năng bên trong của DS12C887 không bị ảnh hưởng bởi bit AIE.

UIE – Bit cho phép kết thúc quá trình ngắt cập nhật (Update Ended Interrupt Enable (UIE)) là bit đọc/ghi mà cho phép bit cờ kết thúc quá trình cập nhật ở thanh ghi C để cho phép ngắt /IRQ. Chân /RESET ở mức 0 hoặc chân SET ở mức 1 sẽ xóa bit UIE.

SQWE – Khi bit cho phép xuất sóng vuông (Square Wave Enable (SQWE)) được đặt lên mức 1, một tín hiệu sóng vuông có tần số được đặt bởi vị trí được lựa chọn của bit RS3 đến RS0 sẽ điều khiển sóng ra tại chân SQW. Khi bit SQWE được đặt ở mức thấp, chân SQW sẽ được giữ ở mức thấp. SQWE là bit đọc\ghi và được xóa khi RESET. SQWE được đặt lên 1 khi được cấp VCC.

DM – Bit kiểu dữ liệu (Data Mode (DM)) quy định khi nào thì thông tin lịch và thời gian ở định dạng nhị phân hoặc BCD. Bit DM được đặt bởi chương trình để có định dạng thích hợp và có thể đọc khi được. Bit này không bị thay đổi bởi các chức năng bên trong hoặc chân RESET\. Mức 1 của DM sẽ hiển thị dữ liệu nhị phân còn mức 0 hiển thị dữ liệu Binary Coded Decimal (BCD).

24/12 – Bit điều khiển 24/12 xác định kiểu bytes giờ. Khi ở mức 1 thì nó chỉ chế độ hiển thị 24 giờ, còn ở mức 0 thì chỉ chế độ hiển thị 12 giờ. Bit này là bit đọc ghi và không bị ảnh hưởng bởi các chức năng bên trong cũng như chân RESET\.

DSE – Bit cho phép nhớ công khai (Daylight Savings Enable (DSE)) là bit đọc\ghi, nó cho phép 2 cập nhật đặc biệt khi DSE được đặt lên 1. Vào chủ nhật đầu tiên của tháng 4, thời gian sẽ tăng từ 1:59:59 AM lên 3:00:00 AM. Vào chủ nhật cuối cùng của tháng 10, khi thời gian lần đầu tiên đạt được 1:59:59 AM thì nó sẽ đổi thành 1:00:00 AM. Chức năng đặc biệt này sẽ không được thực thi nếu bit DSE ở mức 0. Bit này không bị ảnh hưởng bởi các chức năng bên trong cũng như chân RESET\.

Thanh ghi C

IRQF – Bit cờ yêu cầu ngắt (Interrupt Request Flag (IRQF)) được đặt lên 1 khi một trong những điều dưới đây đúng :

- PF = PIE = 1 - AF = AIE = 1

- UF = UIE = 1

Điều đó có nghĩa là IRQF = (PF . PIE) + (AF . AIE) + (UF . UIE)

Bất cứ lúc nào bit IRQF được đặt lên 1, chân IRQ\ được đặt xuống mức thấp. Bit cờ PF, AF và UF được xoá khi thanh ghi C được chương trình đọc hoặc chân RESET\ ở mức thấp.

PF – Bit cờ ngắt theo chu kỳ (Periodic Interrupt Flag (PF)) là bit chỉ đọc, nó được đặt lên mức 1 khi có 1 sườn xung được phát hiện ở tín hiệu lựa chọn của bộ chia.

Từ bit RS3 đến RS0 xác định chu kỳ. PF được đặt lên 1 bất chấp trạng thái của bit PIE. Khi cả PF và PIE đều ở mức 1, tín hiệu IRQ\ được kích hoạt và sẽ đặt bit IRQF lên mức 1. Bit PF sẽ bị xoá bằng phần mềm đọc thanh ghi C hoặc chân RESET\.

AF - Mức 1 của bit cờ cho phép ngắt báo giờ (Alarm Interrupt Flag (AF)) chỉ ra rằng thời gian hiện tại được so sánh với thời gian báo giờ. Nếu bit AIE còn ở mức 1, chân IRQ\ sẽ xuống mức thấp và 1 sẽ được đặt vào bit IRQF. Khi RESET\ hoặc đọc thanh ghi C sẽ xoá AF.

UF – Bit cờ ngắt kết thúc cập nhật (Update Ended Interrupt Flag (UF)) được đặt sau mỗi chu kỳ cập nhật. Khi bit UIE được đặt lên 1, mức 1 ở UF sẽ làm cho bit IRQF lên mức 1, nó sẽ xác định trạng thái chân IRQ\. UF sẽ bị xoá khi thanh ghi C được đọc hoặc có tín hiệu RESET.

Từ bit 3 đến bit 0- Đây là những bit không sử dụng của thanh ghi trạng thái C.

Những bit này luôn luôn ở mức 0 và không thể ghi đè.

Thanh ghi D

VRT – Bit thời gian và RAM hợp lệ (Valid RAM and Time (VRT)) biểu thị tình trạng của của pin được kết nối chân VBAT. Bit này không phải là bit ghi được và luôn có giá trị bằng 1 khi đọc. Nếu hiển thị mức 0, nguồn năng lượng bên trong IC đã cạn và cả hai mục dữ liệu thời gian thực lẫn dữ liệu RAM đều bị nghi ngờ. Bit này không chịu ảnh hưởng bởi chân RESET.

BIT 6 ĐẾN BIT 0 – Những bit được đề cập ở trên của thanh ghi D không được sử dụng. Chúng không ghi được và khi đọc thì luôn có giá trị bằng 0.

Sơ đồ nguyên lý mạch giao tiếp giữa vi điều khiển và IC thời gian thực DS12887 Vi điều khiển AT89C51 giao tiếp với IC DS12887 giống với giao tiếp RAM ngoài. Sử dụng cổng P0 đồng thời là bus địa chỉ và bus dữ liệu. Chân ALE của AT89C51 nối với chân AS của DS12887 để chốt tín hiệu địa chỉ. Chân MOT của

DS12887 nối Gnd để chọn bus kiểu Intel. Các chân /RD, /WR của AT89C51 nối tương ứng với các chân DS và chân R/W của DS12887. Do cổng P0 chỉ giao tiếp với DS12887 nên chân /CS của DS12887 được nối Gnd để luôn được chọn.

Hình 7.6 Mạch giao tiếp giữa AT89C51 và DS12887

Khối quét led: 74HC595 là IC ghi dịch vào nối tiếp, ra song song 8 bit được lựa chọn sử dụng để tiết kiệm chân của vi điều khiển. Với 3 chân điều khiển của vi điều khiển có thể quét được số lượng led 7 đoạn lớn. Hình dáng và sơ đồ chân của 74HC595 như sau:

Hình 7.7 Sơ đồ chân 74HC595

Một phần của tài liệu Bài giảng Vi xử lý 1 - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 182 - 210)

Tải bản đầy đủ (PDF)

(210 trang)