Thanh ghi điều khiển hoạt động chân SQW/OUT

Một phần của tài liệu Tìm hiểu 8051 và xây dựng đồng hồ thời gian thực trên có sở DS1307 và ứng dụng điều khiển (Trang 33)

- 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 bị cấm. 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ẽ cho phép đầu ra của bộ tạo dao động. Tần số của đầu ra xung vuông phụ thuộc vào giá trị của RS1 và RS0. RS1 RS0 Tần số xung vuông 0 0 1HZ 0 1 4,096KHz 1 0 8,192KHz 1 1 32,768KHz Bảng 2.4: Chế độ chọn tần số

Thanh ghi giây (SECONDS): thanh ghi này là thanh ghi đầu tiên trong bộ nhớ của DS1307, địa chỉ của nó là 0x00. Bốn bit thấp của thanh ghi này chứa mã BCD 4- bit của chữ số hàng đơn vị của giá trị giây. Do giá trị cao nhất của chữ số hàng chục là 5 (không có giây 60 ) nên chỉ cần 3 bit (các bit SECONDS6:4) là có thể mã hoá được (số 5=101, 3 bit). Bit cao nhất, bit 7, trong thanh ghi này là 1 điều khiển có tên CH (Clock halt – treo đồng hồ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hoá, đồng hồ không hoạt động. Vì vậy, nhất thiết phải reset bit này xuống 0 ngay từ ban đầu.

Thanh ghi phút (MINUTES): có địa chỉ 0x01, chứa giá trị phút của đồng hồ. Tương tự thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này được dùng lưu mã BCD của phút, bit 7 luôn bằng 0.

Thanh ghi giờ (HOURS): có thể nói đây là thanh ghi phức tạp nhất trong DS1307. Thanh ghi này có địa chỉ 0x02. Trước hết 4-bit thấp của thanh ghi này được dùng cho chữ số hàng đơn vị của giờ. Do DS1307 hỗ trợ 2 loại hệ thống hiển thị giờ (gọi là mode) là 12h (1h đến 12h) và 24h (1h đến 24h), bit6 xác lập hệ thống giờ. Nếu bit6=0 thì hệ thống 24h được chọn, khi đó 2 bit cao 5 và 4 dùng mã hoá số hàng chục của giá trị giờ. Do đó giá trị lớn nhất của chữ số hàng chục trong trường hợp này là 2 (=10, nhị phân) nên 2 bit 5 và 4 là đủ để mã hoá. Nếu bit 6=1 thì hệ thống 12h được

chọn, với trường hợp này chỉ có bit 4 dùng mã hoá chữ số hàng chục của giờ, bit 5 chỉ buổi trong ngày, AM hoặc PM. Bit 5=0 là AM và bit 5=1 là PM. Bit 7 luôn bằng 0.

Thang ghi thứ (DAY- ngày trong tuần): nằm ở địa chỉ 0x03. Thang ghi DAY chỉ mang giá trị từ 1 đến 7 tương ứng chủ nhật đến thứ 7 trong 1 tuần. Vì thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa.

Các thanh ghi còn lại có cấu trúc tương tự, DATE chứa ngày trong tháng (1 đến 31), MONTH chứa tháng (1 đến 12) và YEAR chứa năm (00 đến 99). DS1307 chỉ dùng cho 100 năm, nên giá trị năm chỉ có 2 chữ số.

Các thanh ghi còn lại trong bộ nhớ, DS1307 còn có một thanh ghi khác nằm riêng gọi là con trỏ địa chỉ hay thanh ghi địa chỉ (Address Register). Giá trị của thanh ghi này là địa chỉ của thanh ghi trong bộ nhớ mà người dùng muốn truy cập. Giá trị của thanh ghi địa chỉ ( tức địa chỉ của bộ nhớ) được set trong lệnh Write.

b. Hoạt động

DS1307 hỗ trợ truyền dữ liệu bus 2 dây 2 chiều. Một thiết bị gửi dữ liệu lên đường truyền được định nghĩa như là 1 máy phát và một thiết bị nhận dữ liệu như là máy nhận. Thiết bị điều khiển thông điệp gọi là Master. Thiết bị được điều khiển bởi Master được gọi là Slaver. Đường truyền (Bus) phải được điều khiển bởi thiết bị Master mà phát ra xung nối tiếp (Serial Clock_SCL) điều khiển sự truy cập đường truyền và phát ra điều kiện bắt đầu, dừng (Start, Stop condition). DS1307 hoạt động như là Slave trên bus 2 dây.

Hình 2.3: Cấu hình bus 2 dây điển hình

 Việc truyền dữ liệu chỉ có thể được bắt đầu khi bus không bận.

 Trong lúc truyền dữ liệu, đường dữ liệu phải ổn định bất cứ khi nào đường Clock là cao (High).

Do đó, các điều kiện về đường truyền sau được định nghĩa:

- Bus not busy: cả đường dữ liệu và xung đều ở mức cao (High).

- Start data transfer: một sự thay đổi trong trang thái của đường dữ liệu từ

HIGH - LOW trong khi xung clock vẫn cao (H), đây là điều kiện bắt đầu (Start Condition).

- Stop data transfer: một sự thay đổi trong trang thái của đường dữ liệu từ

LOW - HIGH trong khi xung clock vẫn cao (H), đây là điều kiện dừng (Stop Condition).

- Data valid: trạng thái của đường dữ liệu biểu diễn dữ liệu hợp lệ khi mà: sau

điều kiện Start đường dữ liệu ổn định trong khoảng thời gian chu kỳ cao (HIGH) của tín hiệu clock. Dữ liệu trên đường phải thay đổi trong chu kỳ thấp (LOW) của tín hiệu clock. Có 1 xung clock/1 bit dữ liệu. Mỗi dữ liệu truyền đi với điều kiện Start và kết thúc với điều kiện Stop. Số byte dữ liệu truyền giữa điều kiện Start và Stop là không giới hạn và được quyết định bởi thiết bị Master. Sau khi một byte được truyền thì được báo nhận ở bộ thu với bit thứ 9.

- Acknowledge: Mỗi thiết bị nhận khi được định địa chỉ thì phải phát ra tín hiệu

báo nhận sau khi nhận mỗi byte. Thiết bị Master phải phát ra thêm 1 xung clock để ghép với bit báo nhận này.

Thiết bị báo nhận phải kéo đường SDA xuống trong suốt xung clock báo nhận như là cách mà đường SDA ổn định thấp trong chu kỳ High của xung clock báo nhận. Dĩ nhiên, thời gian thiết lập và thời gian giữ (chờ) phải được tính toán đến. Master phải báo hiệu kết thúc dữ liệu đến Slave bằng cách không phát ra một bit báo nhận trên byte cuối cùng mà được ghi vào Slave. Trong trường hơp này, Slave phải để đường dữ liệu ở mức cao (H) để cho phép Master phát ra điều kiện STOP.

2.1.4. Truyền dữ liệu trên bus 2 dây nối tiếp

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ị cao 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.

Hình 2.4: Truyền dữ liệu trên bus 2 dây

2.1.5. Hai chế độ hoạt động của DS1307

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.

Hình 2.5: Chế độ slave nhận

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

Hình 2.6: Chế độ slave phát

Hình 2.7: Sơ đồ chân của LCD

2.2.1. Chức năng các chân của LCD

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

+) 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 RW 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 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 và được LCD giữ ở bus đến khi nào chân E xuống mức thấp.

4 DB7 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.

15,1 6

A,K Đèn của LCD

2.2.2. HD44780

Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết.

Hình 2.8: Sơ đồ khối của HD44780

a. Các thanh ghi

Chíp HD44780 có 2 thanh ghi 8 bit quan trọng: Thanh ghi lệnh IR (Instructor Register) và thanh ghi dữ liệu DR (Data Register).

Thanh ghi IR: Để điều khiển LCD, người dùng phải “ra lệnh” thông qua 8 đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR. Nghĩa là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chíp HD44780 sẽ tra bảng mã lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó.

Thanh ghi DR: Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM DDRAM hoặc CGRAM (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho MPU (ở chế độ đọc). Nghĩa là, khi MPU ghi thông tin vào DR, mạch nội bên trong chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM. Hoặc khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng RAM nội của HD44780 sẽ được chuyển ra DR để truyền cho MPU.

Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2 thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập đối với hai chân RS và R/W theo mục đích giao tiếp.

RS RW Khi cần

0 0 Ghi vào thanh ghi IR để ra lệnh cho LCD (VD: cần display clear,…)

0 1 Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6 1 0 Ghi vào thanh ghi DR

1 1 Đọc dữ liệu từ DR

Bảng 2.6: Chế độ chọn RS, RW

b. Cờ báo bận BF(Busy Flag)

Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảng thời gian để hoàn tất. Khi đang thực thi các hoạt động bên trong chip như thế, LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi có thiết lập RS=0, R/W=1) lên để báo cho MPU biết nó đang “bận”. Dĩ nhiên, khi xong việc, nó sẽ đặt cờ BF lại mức 0.

c. Bộ Đếm địa chỉ AC (Address Counter)

Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM (DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối với 2 vùng RAM theo kiểu rẽ nhánh. Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM nhưng việc chọn lựa vùng RAM tương tác đã được bao hàm trong mã lệnh.

d. Vùng Ram hiển thị DDRAM(Display Data RAM)

Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM là một ô kí tự trên màn hình và khi bạn ghi vào vùng RAM này một mã 8 bit, LCD sẽ hiển thị tại vị trí tương ứng trên màn hình một kí tự có mã 8 bit mà bạn đã cung cấp.

Vùng RAM này có 80x8 bit nhớ, nghĩa là chứa được 80 kí tự mã 8 bit. Những vùng RAM còn lại không dùng cho hiển thị có thể dùng như vùng RAM đa mục đích.

2.2.3. Mã lệnh của LCD

Mã (hexa) Lệnh đến thanh ghi của LCD

1 Xoá màn hình hiển thị

2 Trở về đầu dòng

4 Dịch con trỏ sang trái

5 Dịch hiển thị sang phải

6 Dịch con trỏ sang phải

7 Dịch hiển thị sang trái

8 Tắt con trỏ, tắt hiển thị A Tắt hiển thị, bật con trỏ C Bật hiển thị, tắt con trỏ E Bật hiển thị, nhấp nháy con trỏ F Tắt hiển thị, nhấp nháy con trỏ 10 Dịch vị trí con trỏ sang trái 14 Dịch vị trí con trỏ sang phải 18 Dịch toàn bộ hiển thị sang trái 1C Dịch toàn bộ hiển thị sang phải

80 Đưa con trỏ về đầu dòng thứ nhất C0 Đưa con trỏ về đầu dòng thứ hai

38 Hai dòng và ma trận 5x7

CHƯƠNG 3

THIẾT KẾ MẠCH ĐỒNG HỒ CÓ HẸN GIỜ 3.1. Giới thiệu đề tài

Trong các ứng dụng dân dụng và công nghiệp, các bộ vi mạch vi điều khiển được ứng dụng rộng rãi và đã phát huy được tính năng ưu việt của nó và ngày càng được sử dụng rộng rãi. Việc sử dụng các bộ vi điều khiển để điều khiển các công việc mang tính lặp lại có chu kỳ là cần thiết để thay thế sự giám sát của con người. Ở đây em xin trình bày việc ứng dụng vi điều khiển để hiển thị, báo giờ thời gian thực trên LCD.

3.2. Yêu cầu bài toán

Thiết kế đồng hồ thời gian thực có hẹn giờ. 8051 đọc thời gian thực từ DS1307 và hiển thị lên LCD. Khi nhấn các nút nhấn thì chỉnh được thời gian và cài đặt chế độ hẹn giờ, khi đến giờ hẹn thì 8051 điều khiển loa kêu.

3.3. Sơ đồ khối

3.4. Chức năng các khối

 Khối điều chỉnh gồm: 4 nút nhấn để đặt, hiệu chỉnh và hẹn thời gian.

Một phần của tài liệu Tìm hiểu 8051 và xây dựng đồng hồ thời gian thực trên có sở DS1307 và ứng dụng điều khiển (Trang 33)

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

(58 trang)
w