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

Đồng hồ số sử dụng vi điều khiển AT89S52 giao tiếp với IC DS1307 hiển thị thời gian thực lên LCD

56 1,1K 7

Đ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 56
Dung lượng 2,03 MB

Nội dung

Đồng hồ số sử dụng vi điều khiển AT89S52 giao tiếp với IC DS1307 hiển thị thời gian thực lên LCD

Trang 1

ĐỒ ÁN MÔN HỌC

KỸ THUẬT VI ĐIỀU KHIỂN VÀ GHÉP NỐI

NGOẠI VI

Đề tài: Đồng hồ số sử dụng Vi điều khiển AT89S52

giao tiếp với IC DS1307 hiển thị thời gian thực lên LCD

Trang 2

LỜI NÓI ĐẦU

Kỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh vực khác nữa So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất nhiều do nó được tích hợp lại và có khả năng lập trình được để điều khiển Nên rất tiện dụng và

cơ động Với tính ưu việt của vi điều khiển thì trong phạm vi đồ án này, em dùng vi điều khiển xử lí tín hiệu từ IC DS1307, đồng thời cho hiển thị lên LCD

Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm những ứng dụng của vđk trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến

Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót Vì vậy em rất mong được sự góp ý của thầy cô và các bạn

Đà Nẵng,ngày 19 tháng 4 năm 2014

Trang 3

Mục lục

Lời nói đầu 2

Mục lục 3

Chương 1: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI 5

I Giới thiệu 5

II Sơ đồ khối và chức năng các khối 5

1 Sơ đồ khối 5

2 Chức năng các khối 6

Chương 2: THIẾT KẾ MẠCH 7

I Giới thiệu sơ lược về chuẩn giao tiếp I2C 7

II Giới thiệu IC thời gian thực DS1307 8

III Thuật toán giao tiếp I2C 11

1 Điều kiện START và STOP 11

2 Chế độ hoạt động 12

IV Giới thiệu về chip vi điều khiển AT89S52 14

1 Giới thiệu sơ lược 14

2 Sơ đồ khối 14

3 Sơ đồ chân 15

4 Chức năng các chân 15

V Tổng quan về LCD 16

1 Chức năng các chân LCD 16

2 Sơ đồ khối của HD44780 17

3 Tập lệnh 19

4 Biểu đồ thời gian 22

VI Sơ đồ mạch nguyên lý 24

Chương 3:THIẾT KẾ CHƯƠNG TRÌNH 26

I Lưu đồ thuật toán 26

1 Chương trình chính 26

2 Chương trình con giao tiếp với DS1307 26

Trang 4

3 Chương trình con hiển thị lên LCD 30

4 Chương trình con giao tiếp với LCD 30

5 Chương trình con hiệu chỉnh giờ 32

6 Chương trình con DELAY 39

II Phần lập trình 42

TÀI LIỆU THAM KHẢO 56

Trang 5

CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI I) Giới thiệu

Cùng với sự phát triển của khoa học và công nghệ, các thiết bị điện tử đã, đang

và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong hầu hết các lĩnh vực khoa học, kỹ thuật cũng như trong đời sống xã hội

Việc gia công, xử lý các tín hiệu điện tử hiện đại đều dựa trên cơ sở nguyên lý số

Vì các thiết bị làm việc làm việc dựa trên nguyên lý số có ưu điểm hơn hẳn các thiết

bị làm việc dựa trên nguyên lý tương tự, đặc biệt là trog kỹ thuật tính toán

Sự phát triển mạnh mẽ của công nghệ điện tử cho ra đời nhiều vi mạch số cỡ lớn với giá thành rẻ và khả năng lập trình cao mang lại những thay đổi lớn trong ngành điện tử Mạch số ở những mức độ khác nhau đã và đang thâm nhập trong các lĩnh vực điện tử thông dụng và chuyên nghiệp một cách nhanh chóng Các trường kỹ thuật là nơi mạch số thâm nhập mạnh mẽ và được học sinh, sinh viện ưa chuộng do lợi ích và tính khả thi của nó Vì thế sự hiểu biết sâu sắc về kỹ thuật số là không thể thiếu đối với các sinh viên ngành điện tử hiện nay Nhu cầu hiểu biết về kỹ thuật số không chỉ riêng đối với những người theo chuyên ngành điện tử mà còn đối với những cán bộ kỹ thuật khác có sử dụng các thiết bị điện tử

Ngày nay, 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ó 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 trong việc giao tiếp với IC DS1307 để hiển thị thời gian thực trên LCD

II) Sơ đồ khối và chức năng của các khối

1 Sơ đồ khối

KHỐI ĐIỀU KHIỂN

(VĐK) KHỐI HIỂN THỊ

KHỐI THỜI GIAN THỰC KHỐI ĐIỀU CHỈNH

Trang 6

2 Chức năng của các khối

- Khối điều chỉnh gồm 3 nút nhấn để đặt và hiệu chỉnh thời gian

Trang 7

CHƯƠNG 2: THIẾT KẾ MẠCH

I Giới thiệu sơ lược về chuẩn giao tiếp I2C

Giao thức ưu tiên truyền thông nối tiếp được phát triển bởi Philips Semiconductor và được gọi là bus I2C Vì nguồn gốc nó được thiết kế là để điều khiển liên thông IC (Inter-Intergrated Circuit) nên nó được đặt tên là I2C Tất cả các chip có tích hợp và tương thích với I2C đều có thêm một giao diện tích hợp trên Chip để truyền thông trực tiếp với các thiết bị tương thích I2C khác Việc truyền dữ liệu nối tiếp theo hai hướng 8 bit được thực thi theo 3 chế dộ sau:

- Chuẩn (Standard)—100 Kbits/sec

- Nhanh (Fast)—400 Kbits/sec

- Tốc dộ cao (High speed)—3.4 Mbits/sec

Ðường bus thực hiện truyền thông nối tiếp I2C gồm hai đường là đường truyền

dữ liệu nối tiếp SDA và đường truyền nhịp xung đồng hồ nối tiếp SCL Vì cơ chế

hoạt động là đồng bộ nên nó cần có một nhịp xung tín hiệu đồng bộ Các thiết bị hỗ trợ I2C đều có một địa chỉ định nghĩa trước, trong đó một số bit địa chỉ là thấp có thể cấu hình Ðơn vị hoặc thiết bị khởi tạo quá trình truyền thông là đơn vị Chủ và cũng là đơn vị tạo xung nhịp đồng bộ, điều khiển cho phép kết thúc quá trình truyền Nếu đơn vị Chủ muốn truyền thông với đơn vị khác nó sẽ gửi kèm thông tin địa chỉ của đơn vị mà nó muốn truyền trong dữ liệu truyền Ðơn vị Tớ đều được gán

và đánh địa chỉ thông qua đó đơn vị Chủ có thể thiết lập truyền thông và trao đổi dữ liệu Bus dữ liệu được thiết kế để cho phép thực hiện nhiều đơn vị Chủ và Tớ ở trên cùng Bus

Quá trình truyền thông I2C được bắt đầu bằng tín hiệu start tạo ra bởi đơn vị Chủ Sau đó đơn vị Chủ sẽ truyền đi dữ liệu 7 bit chứa địa chỉ của đơn vị Tớ mà nó muốn truyền thông, theo thứ tự là các bit có trọng số lớn nhất MSB sẽ được truyền truớc Bit thứ tám tiếp theo sẽ chứa thông tin dể xác định đơn vị Tớ sẽ thực hiện vai trò nhận (0) hay gửi (1) dữ liệu Tiếp theo sẽ là một bit ACK xác nhận bởi đơn vị nhận đã nhận được 1 byte truớc đó hay không Ðơn vị truyền (gửi) sẽ truyền đi 1 byte dữ liệu bắt đầu bởi MSB Tại diểm cuối của byte truyền, đơn vị nhận sẽ tạo ra một bit xác nhận ACK mới Khuôn mẫu 9 bit này (gồm 8 bit dữ liệu và 1 bit xác nhận) sẽ được lặp lại nếu cần truyền tiếp byte nữa Khi đơn vị Chủ đã trao dổi xong

dữ liệu cần nó sẽ quan sát bit xác nhận ACK cuối cùng rồi sau đó sẽ tạo ra một tín hiệu dừng STOP để kết thúc quá trình truyền thông I2C là một giao diện truyền thông đặc biệt thích hợp cho các ứng dụng truyền thông giữa các đơn

vị trên cùng một bo mạch với khoảng cách ngắn và tốc dộ thấp Ví dụ như truyền thông giữa CPU với các khối chức năng trên cùng một bo mạch như EEPROM, cảm biến, dồng hồ tạo thời gian thực Hầu hết các thiết bị hỗ trợ I2C hoạt dộng ở tốc độ

Trang 8

400Kbps, một số cho phép hoạt động ở tốc độ cao vài Mbps I2C khá đơn giản để thực thi kết nối nhiều đơn vị vì nó hỗ trợ cơ chế xác định địa chỉ

II Giới thiệu IC thời gian thực (real time clock) DS1307

DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm thời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con nguời đang sử dụng, tình bằng giây, phút, giờ… DS1307 là một sản phẩm của Dallas Semiconductor (một công ty thuộc Maxim Integrated Products) Chip này có 7 thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm Ngoài ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như RAM DS1307 xuất hiện ở 2 gói SOIC và DIP có 8 chân như trong hình 1

Hình 1 Hai gói cấu tạo chip DS1307

Các chân của DS1307 được mô tả như sau:

X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động cho chip

VBAT: cực dương của một nguồn pin 3V nuôi chip

GND: chân mass chung cho cả pin 3V và Vcc

Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi diều khiển Chú ý là nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được)

SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output Driver), tần

số của xung được tạo có thể được lập trình Như vậy chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống chân này khi nối mạch

SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C

Có thể kết nối DS1307 bằng một mạch điện đơn giản như trong hình 2

Trang 9

Hình 2: Mạch ứng dụng đơn giản của DS1307

Cấu tạo bên trong DS1307 bao gồm một số thành phần như mạch nguồn, mạch dao động, mạch điều khiển logic, mạch giao diện I2C, con trỏ địa chỉ và các thanh ghi (hay RAM) Sử dụng DS1307 chủ yếu là ghi và đọc các thanh ghi của chip này

Vì thế có 2 vấn đề cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh ghi này thông qua giao diện I2C

Như đã trình bày, bộ nhớ DS1307 có tất cả 64 thanh ghi 8-bit được đánh địa chỉ

từ 0 dến 63 (từ 00H dến 3FH theo hệ HexaDecimal) Tuy nhiên, thực chất chỉ có 8 thanh ghi đầu là dùng cho chức năng ―đồng hồ‖ (RTC) còn lại 56 thanh ghi bỏ trống

có thể được dùng chứa biến tạm như RAM nếu muốn Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm: giây (SECONDS), phút (MINUTES), giờ (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH) và năm (YEAR) Việc ghi giá trị vào 7 thanh ghi này tương đương với việc ―cài dặt‖ thời gian khởi động cho RTC Việc đọc giá trị từ 7 thanh ghi là đọc thời gian thực mà chip tạo ra Ví dụ, lúc khởi động chương trình, chúng ta ghi vào thanh ghi ―giây‖ giá trị 42, sau đó 12s chúng ta đọc thanh ghi này, chúng ta thu được giá trị 54

Thanh ghi thứ 8 (CONTROL) là thanh ghi điều khiển xung ngõ ra QW/OUT (chân 6) Tuy nhiên, do chúng ta không dùng chân SQW/OUT nên có thề bỏ qua thanh ghi thứ 8 Tổ chức bộ nhớ của DS1307 được trình bày trong hình 3

Hình 3: Tổ chức bộ nhớ của DS1307

Trang 10

Vì 7 thanh ghi đầu tiên là quan trọng nhất trong hoạt động của DS1307, chúng ta

sẽ khảo sát các thanh ghi này một cách chi tiết Trước hết hãy quan sát tổ chức theo từng bit của các thanh ghi này như trong hình 4

Hình 4: Tổ chức thanh ghi thời gian

Thanh ghi giây (SECONDS): thanh ghi này là thanh ghi dầ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 SECONDS 6:4) là có thể mã hóa đượ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 dồng hồ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hóa, đồ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ừ dầu

Thanh ghi phút (MINUTES): có địa chỉ 01H, 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 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ỉ 02H Truớc hết 4-bits 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 dến 12h) và 24h (1h dến 24h) giờ, bit6 (hình 4) xác lập hệ thống giờ Nếu bit6=0 thì hệ thống 24h được chọn, khi dó 2 bit cao 5 và 4 dùng mã hóa chữ 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 truờng hợp này là 2 (=10, nhị phân) nên 2 bit 5 và 4 là đủ để mã hóa Nếu bit6=1 thì hệ thống 12h được chọn, với truờng hợp này chỉ có bit 4 dùng mã hóa chữ số hàng chục của giờ, bit 5 (màu orange trong hình 4) chỉ buổi trong ngày,

AM hoặc PM Bit5 =0 là AM và bit5=1 là PM Bit 7 luôn bằng 0

Thanh ghi thứ (DAY – ngày trong tuần): nằm ở dịa chỉ 03H Thanh ghi DAY

chỉ mang giá trị từ 1 dến 7 tương ứng từ 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

Trang 11

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 dến 12) vàYEAR chứa năm (00 dến 99) Chú ý, DS1307 chỉ dùng cho 100 năm, nên giá trị năm chỉ có 2 chữ số, phần đầu của năm

do nguời dùng tự thêm vào (ví dụ 20xx)

Ngoài các thanh ghi 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

Hình 5: Cấu trúc DS1307

III Thuật toán giao tiếp I2C

1 Điều kiện Start và Stop

Start và Stop là những điều kiện bắt buộc phải có khi một thiết bị chủ muốn thiết lập giao tiếp với một thiết bị nào đó trong mạng I2C Start là điều kiện khởi đầu, báo hiệu bắt đầu của giao tiếp, còn Stop báo hiệu kết thúc một giao tiếp Hình 11

mô tả điều kiện Start và điều kiện Stop khi giao tiếp I2C giữa DS1307 với Vi Ðiều Khiển

Trang 12

Ban đầu khi chưa thực hiện quá trình giao tiếp, cả hai đường SDA và SCL đều

ở mức cao (SDA = SCL = HIGH) Lúc này bus I2C được coi là ―rỗi‖ (―bus free‖), sẵn sàng cho một giao tiếp Hai điều kiện Start và Stop là không thể thiếu trong việc giao tiếp giữa các thiết bị I2C, tất nhiên là trong giao tiếp này cũng không ngoại lệ Ðiều kiện Start: một sự chuyển đổi trạng thái từ cao xuống thấp trên đường SDA trong khi đường SCL đang ở mức cao (cao = 1; thấp = 0) báo hiệu một điều kiện Start

Ðiều kiện Stop: Một sự chuyển đổi trạng thái từ mức thấp lên cao trên đường SDA trong khi đường SCL đang ở mức cao

Cả hai điều kiện Start và Stop đều được tạo ra bởi thiết bị chủ Sau tín hiệu Start, bus I2C coi nhu dang trong trạng thái làm việc (busy) Bus I2C sẽ rỗi, sẵn sàng cho một giao tiếp mới sau tín hiệu Stop từ phía thiết bị chủ

Sau khi có một diều kiện Start, trong qua trình giao tiếp, khi có một tín hiệu Start duợc lặp lại thay vì một tín hiệu Stop thì bus I2C vẫn tiếp tục trong trạng thái bận Tín hiệu Start và lặp lại Start dều có chức nang giống nhau là khởi tạo một giao tiếp

2 Chế độ hoạt động

Hình 10: Chế độ hoạt động I2C

DS1307 có thể hoạt dộ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 1 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 một chiều

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 chuyền ngược lại Chuỗi dữ liệu được phát đi trên SDA bởi DS1307 trong khi chuỗi xung clock vào chân SCL

a Các bước để thực hiện giao tiếp I2C

START I2C

Trang 13

Ghi: 0DxH (Ðây là dịa chỉ của DS1307 do nhà sản xuất quy dịnh trong giao tiếp I2C) với: x=0: Ghi dữ liệu vào DS1307 x=1: Ðọc dữ liệu vào DS1307

Ghi tham số x này vào, có nghĩa là việc tiếp theo là chúng ta ghi hay đọc dữ liệu từ con DS1307 tùy vào giá trị x=0 (ghi dữ liệu) hay x=1(đọc dữ liệu)

Ghi vào địa chỉ thanh ghi cần ghi hoặc cần đọc (bảng đồ thanh ghi của DS1307 này đã được giới thiệu ở hình 3 & hình 4)

Ghi hoặc dọc dữ liệu

STOP I2C

b Ví dụ minh học cho việc đọc, ghi

Thanh ghi có dịa chỉ 01H chứa Data về ―phút‖, muốn set phút vào DS1307 chúng ta làm theo quy trình:

START→Ghi: 0D0H→Ghi tiếp: 01H→Ghi tiếp: <thông số cần cài đặt (BCD)>

→Ghi tiếp hoặc STOP nếu chỉ muốn cài đặt thời gian cho phút

Hình 11: Chế độ ghi của DS1307

Nếu muốn Ghi vào địa chỉ 01H rồi kế tiếp Ghi vào địa chỉ 04H chẳng hạn thì

chúng ta phải START lại từ đầu→Ghi vào 0D0H (để xác định sẽ Ghi vào DS1307 _ hướng giao tiếp là Ghi vào) →Ghi tiếp 04H→Ghi dữ liệu của thanh ghi cần cài dặt→STOP I2C

Tương tự, nếu chúng ta muốn đọc thì truớc hết chúng ta phải ghi vào địa chỉ cần đọc: tức là vẫn tiếp tục tiến hành 3 thủ tục START→Ghi 0D0H→Ghi vào địa chỉ (địa chỉ của thanh ghi mà ta muốn đọc dữ liệu) Sau đó, mới START lại rồi ghi lại 0D1H (lúc này mới thông báo là ta sẽ đọc từ DS1307), tiếp theo cứ đọc bình thuờng (thanh ghi đọc được sẽ là thanh ghi có địa chỉ ta mới vừa ghi vào), tiếp tục đọc thì địa chỉ cần đọc sẽ tự động tăng lên cho dến khi STOP I2C

Hình 12: Chế độ đọc của DS1307

Trang 14

IV Giới thiệu về chip vi điều khiển AT89S52

1 Giới thiệu sơ lƣợc

Vi điều khiển 8051 đƣợc Intel cho ra đời vào năm 1980 thuộc vi điều khiển đầu tiên của họ MCS-51 Hiện tại rất nhiều nhà sản xuất nhƣ Siemens, advanced Micro Devices, Fusisu và Philips tập trung phát triển các sản phẩm trên cơ sở 8051 Atmel

là hãng đã cho ra đời các chip 89C51, 52, 55 và sau đó cải tiến thêm, hãng cho ra đời 89S51, 89S52, 89S8252…

Trang 15

Về cơ bản thì các chip nêu trên giống nhau, chỉ có một số tính năng được cải tiến thêm Các phiên bản về sau càng có nhiều khối tính năng đặc biệt hơn Chúng ta xem bảng so sánh một số loại phổ biến như dưới đây

Hình 7: Bảng so sánh cấu hình một số loại VĐK họ 8051

3 Sơ đồ chân VĐK AT89s52

Hình 8: Sơ đồ chân của AT89S52

4 Chức năng các chân AT89S52

P0,1,2,3 có chức năng cơ bản xuất/nhập

Trang 16

Riêng P0, P2 còn có chức năng kết nối bộ nhớ mở rộng, sẽ được khảo sát trong phần mở rộng bộ nhớ

P1: Chân T2 và T2EX dùng cho timer/ counter 2 Hai chức năng này sẽ khảo sát trong phần Timer Chân SS\, MOSI, MISO, SCK truyền dữ liệu theo chuẩn SPI đồng thời có chức năng kết nối với mạch nạp chương trình

P3: Tích hợp các chức nang dặc biệt Xem bảng:

Chân ALE, PSEN, WR\, RD\ dùng dể kết nối bộ nhớ mở rộng

Chân EA\ có chức nang chọn bộ nhớ chuong trình: EA\=GND: Chọn bộ nhớ ngoại, EA\=VCC chọn bộ nhớ nội

Chân Xtal1 và Xtal2 gắn với thạch anh

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

Trang 17

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ế độ hi, hoặc nối với logic

―1‖ để LCD ở chế độ đọc

6 E Chân 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-DB7khi phát hiệncạnhlên (low-tohightransition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp

7-14

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 MS

B là bitDB7

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

7, bit MSB là DB7

15-16 A,K Đèn của LCD

2 Sơ đồ khối của HD44780

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

Trang 18

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ế độ dọ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

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

Trang 19

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 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 MCU 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ộ dế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

e Vùng ROM chứa ký tự đồ họa:

Vùng ROM này dùng để chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí tự,

và định địa chỉ bằng 8 bit Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mẫu kí tự kiểu 5x10 (tổng cộng là 240 thay vì 28 = 256 mẫu kí tự) Nguời dùng không thể

thay đổi vùng ROM này

f Vùng RAM chứa kí tự đồ họa CGRAM (Character Generator RAM):

Nhà sản xuất dành vùng có địa chỉ byte cao là 0000 dể người dùng có thể tạo các mẫu kí tự đồ họa riêng Tuy nhiên dung luợng vùng này rất hạn chế: Ta chỉ có thể

tạo 8 kí tự loại 5x8 điểm ảnh, hoặc 4 kí tự loại 5x10 điểm ảnh

3 Tập lệnh của LCD:

Các lệnh của LCD có thể chia thành 4 nhóm như sau :

 Các lệnh về kiểu hiển thị VD : Kiểu hiển thị (1 hàng / 2 hàng), chiều dài dữ liệu (8 bit / 4 bit), …

 Chỉ định địa chỉ RAM nội

 Nhóm lệnh truyền dữ liệu trong RAM nội

 Các lệnh còn lại

Trang 20

Tên lệnh Hoạt động t(max)

Clear

Display

Mã lệnh:DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

DBx = 0 0 0 0 0 0 0 1 Lệnh Clear Display (xóa hiển thị) sẽ ghi một khoảng trống-blank (mã hiển kí tự 20H) vào tất cả ô nhớ trong DDRAM, sau đó trả bộ đếm địa AC=0, trả lại kiểu hiện thị gốc nếu nó bị thay đổi Nghĩa là : Tắt hiển thị, con trỏ

dời về góc trái (hàng dầu tiên), chế độ tăng AC

Return

home

Mã lệnh: DBx =DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

DBx = 0 0 0 0 0 0 1 * Lệnh Return home trả bộ đếm địa chỉ AC về 0, trả lại kiểu hiển thị gốc nếu nó bị thay đổi Nội dung của DDRAM

không thay đổi

I/D : Tăng (I/D=1) hoặc giảm (I/D=0) bộ đếm địa chỉ hiển

thị AC 1đơn vị mỗi khi có hành động ghi hoặc đọc vùng DDRAM Vị trí con trỏ cũng di chuyển theo sự tăng giảm này

S : Khi S=1 toàn bộ nội dung hiển thị bị dịch sang phải

(I/D=0) hoặc sang trái (I/D=1) mỗi khi có hành động ghi vùng DDRAM Khi S=0: không dịch nội dung hiển thị

Nội dung hiển thị không dịch khi dọc DDRAM hoặc

D: Hiển thị màn hình khi D=1 và ngƣợc lại Khi tắt hiển

thị, nội dung DDRAM không thay đổi

C: Hiển thị con trỏ khi C=1 và ngƣợc lại B: Nhấp nháy kí tự tại vị trí con trỏ khi B=1 và nguợc lại

Trang 21

DL: Khi DL=1, LCD giao tiếp với MPU bằng giao thức 8

bit (từ bit DB7 dến DB0) Ngược lại, giao thức giao tiếp là

4 bit (từ bit DB7 dến bit DB0) Khi chọn giao thức 4 bit,

dữ liệu được truyền/nhận 2 lần liên tiếp với 4 bit cao gởi/nhận trước, 4 bit thấp gởi/nhận sau

N: Thiết lập số hàng hiển thị Khi N=0 : hiển thị 1 hàng,

N=1: hiển thị 2 hàng

F : Thiết lập kiểu kí tự Khi F=0: kiểu kí tự 5x8 điểm ảnh,

F=1: kiểu kí tự 5x10 điểm ảnh

* Chú ý:

 Chỉ thực hiện thay đổi Function set ở đầu chuong trình

Và sau khi được thực thi 1 lần, lệnh thay dổi Function set không được LCD chấp nhận nữa ngoại trừ thiết lập chuyển dổi giao thức giao tiếp

 Không thể hiển thị kiểu kí tự 5x10 điểm ảnh ở kiểu hiển

Lệnh này ghi vào AC dịa chỉ của CGRAM Kí hiệu [ACG]

chỉ 1 bit của chuỗi dữ liệu 6 bit Ngay sau lệnh này là lệnh

đọc/ghi dữ liệu từ CGRAM tại địa chỉ đã được chỉ dịnh

37us

Trang 22

Lệnh này ghi vào AC địa chỉ của DDRAM, dùng khi cần thiết lập tọa độ hiển thị mong muốn Ngay sau lệnh này là lệnh đọc/ghi dữ liệu từ DDRAM tại địa chỉ đã được chỉ định Khi ở chế độ hiển thị 1 hàng: địa chỉ có thể từ 00H đến 4FH Khi ở chế độ hiển thị 2 hàng, địa chỉ từ 00h đến

(RS=0, R/W=1)

Khi cờ BF bật, LCD đang làm việc và lệnh tiếp theo (nếu có) sẽ bị bỏ qua nếu cờ BF chưa về mức thấp Cho nên, khi lập trình điều khiển, bạn phải kiểm tra cờ BF truớc khi ghi dữ liệu vào LCD.Khi đọc cờ BF, giá trị của AC cũng được xuất ra các bit [AC] Nó là địa chỉ của CG hay

DDRAM là tùy thuộc vào lệnh trước đó

không tính vào thời gian thực thi lệnh

Sau khi đọc, AC tự động tăng/giảm 1 tùy theo thiết lập Entry mode, tuy nhiên nội dung hiển thị không bị dịch bất

chấp chế độ Entry mode

40us

4 Biểu đồ thời gian

Trang 23

- Giản đồ xung nạp dữ liệu cho LCD:

- Giản đồ đọc dữ liệu từ LCD :

Trang 24

VI Sơ đồ nguyên lý mạch

Trang 25

Hình ảnh mạch mô phỏng trên phần mềm proteus:

Trang 26

CHƯƠNG 3: THIẾT KẾ CHƯƠNG TRÌNH

I Lưu đồ thuật toán

1 Chương trình chính

2 Chương trình con giao tiếp với DS1307

Trang 27

Đọc dữ liệu từ DS1307

Trang 28

Chuyển đổi giá trị nhận về từ DS1307 sang mã ASCII

Ngày đăng: 23/03/2016, 09:46

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

TÀI LIỆU LIÊN QUAN

w