80
MỤC LỤC LỜI MỞ ĐẦU...........................................2 CHƯƠNG 1: TÌM HIỂU VI ĐIỀU KHIỂN 8051................2 1.1. Giới thiệu.....................................2 1.2. Khảo sát vi điều khiển 8051....................2 1.2.1. Cấu trúc bên trong của vi điều khiển 8051. .2 1.2.2. Chức năng các chân vi điều khiển 8051......2 1.2.3. Tổ chức bộ nhớ.............................2 1.2.4. Hoạt động của bộ định thời (Timer)........2 1.2.5. Hoạt động port nối tiếp....................2 1.2.6. Tập lệnh của 8051..........................2 CHƯƠNG 2: CÁC LINH KIỆN TRONG MẠCH ĐỒNG HỒ CÓ HẸN GIỜ 2 2.1. IC thời gian thực DS1307.......................2 2.1.1. Chức năng các chân.........................2 2.1.2. Một vài thông số kỹ thuật..................2 2.1.3. Sơ đồ khối của DS1307......................2 2.1.4. Truyền dữ liệu trên bus 2 dây nối tiếp.....2 2.1.5. Hai chế độ hoạt động của DS1307............2 2.2. LCD (Liquid Crystal Display)..................2 2.2.1. Chức năng các chân của LCD................2 2.2.2. HD44780...................................2 2.2.3. Mã lệnh của LCD............................2 CHƯƠNG 3: THIẾT KẾ MẠCH ĐỒNG HỒ CÓ HẸN GIỜ...........2 3.1. Giới thiệu đề tài.............................2 3.2. Yêu cầu bài toán..............................2 3.3. Sơ đồ khối.................................... 2

LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

MỤC LỤC

LỜI MỞ ĐẦU........................................................................................................2

CHƯƠNG 1: TÌM HIỂU VI ĐIỀU KHIỂN 8051..................................................2

1.1. Giới thiệu......................................................................................................2

1.2. Khảo sát vi điều khiển 8051.........................................................................2

1.2.1. Cấu trúc bên trong của vi điều khiển 8051............................................2

1.2.2. Chức năng các chân vi điều khiển 8051................................................2

1.2.3. Tổ chức bộ nhớ......................................................................................2

1.2.4. Hoạt động của bộ định thời (Timer).....................................................2

1.2.5. Hoạt động port nối tiếp..........................................................................2

1.2.6. Tập lệnh của 8051..................................................................................2

CHƯƠNG 2: CÁC LINH KIỆN TRONG MẠCH ĐỒNG HỒ CÓ HẸN GIỜ.....2

2.1. IC thời gian thực DS1307............................................................................2

2.1.1. Chức năng các chân...............................................................................2

2.1.2. Một vài thông số kỹ thuật......................................................................2

2.1.3. Sơ đồ khối của DS1307.........................................................................2

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

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

2.2. LCD (Liquid Crystal Display).....................................................................2

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

2.2.2. HD44780..............................................................................................2

2.2.3. Mã lệnh của LCD..................................................................................2

CHƯƠNG 3: THIẾT KẾ MẠCH ĐỒNG HỒ CÓ HẸN GIỜ...............................2

3.1. Giới thiệu đề tài............................................................................................2

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

3.3. Sơ đồ khối....................................................................................................2

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

3.5. Sơ đồ mạch đồng hồ có hẹn giờ...................................................................2

3.5.1. Khối nút nhấn........................................................................................2

3.5.2. Khối thời gian thực................................................................................2

3.5.3. Khối vi điều khiển.................................................................................2

Page 2: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.5.4. Khối chuông báo....................................................................................2

3.5.5. Khối hiển thị..........................................................................................2

3.5.6. Sơ đồ mạch mô phỏng bằng proteus.....................................................2

3.5.7. Sơ đồ mạch in........................................................................................2

3.6. Lưu đồ chương trình....................................................................................2

3.6.1. Lưu đồ chương trình chính....................................................................2

3.6.2. Chương trình con...................................................................................2

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN..............................................................2

TÀI LIỆU THAM KHẢO......................................................................................2

Page 3: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

DANH M C HÌNHỤ

Hình 1.1: sơ đồ khối 8051......................................................................................2

Hình 1.2: Sơ đồ chân 8051.....................................................................................2

Hình 1.3: Giao tiếp giữa 8051 và EPROM...........................................................2

Hình 1.4: giản đồ thời gian đoc bộ nhớ chương trình ngoài.................................2

Hình 1.5: Giao tiếp giữa 8051 và RAM..................................................................2

Hình 1.6: Giản đồ thời gian của lệnh MOVX.........................................................2

Hình 1.7: Mạch Reset hệ thống..............................................................................2

Hình 2.1: Sơ đồ chân của DS1307.........................................................................2

Hình 2.2: Sơ đồ khối của DS1307..........................................................................2

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

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

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

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

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

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

Hình 3.1: Sơ đồ khối...............................................................................................2

Hình 3.2: Khối nút nhấn.........................................................................................2

Hình 3.3: Khối thời gian thực................................................................................2

Hình 3.4: Khối vi điều khiển..................................................................................2

Hình 3.5: Khối chuông báo....................................................................................2

Hình 3.6: Khối hiển thị...........................................................................................2

Hình 3.7: Sơ đồ mạch mô phỏng bằng proteus......................................................2

Hình 3.8: Sơ đồ mạch in.........................................................................................2

Hình 3.9: Mạch hoàn chỉnh đã nạp chương trình...................................................2

Page 4: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

DANH MỤC BẢNG

Bảng 1.1: Chức năng của các chân trên port 3......................................................2

Bảng 1.2: thanh ghi trạng thái trương trình PSW..................................................2

Bảng 1.3: Trạng thái các thanh ghi sau khi reset..................................................2

Bảng 1.4: Thanh ghi chức năng đặc biệt dùng timer.............................................2

Bảng 1.5: Tóm tắt thanh ghi TMOD.......................................................................2

Bảng 1.6: Chế độ chọn mode cho Timer................................................................2

Bảng 1.7: Tóm tắt thanh ghi TCON.......................................................................2

Bảng 1.8: Tóm tắt thanh ghi chế độ port nối tiếp SCON.......................................2

Bảng 1.9: Các chế độ port nối tiếp.........................................................................2

Bảng 2.1: Mô tả thanh ghi thời gian thực..............................................................2

Bảng 2.2: Địa chỉ bit của các thành phần trong DS1307......................................2

Bảng 2.3: Thanh ghi điều khiển hoạt động chân SQW/OUT.................................2

Bảng 2.4: Chế độ chọn tần số................................................................................2

Bảng 2.5: Chức năng các chân của LCD..............................................................2

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

Bảng 2.7: Mã lệnh của LCD..................................................................................2

Page 5: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

LỜI MỞ ĐẦU

Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật công nghệ điện tử đã đang

và sẽ phát triển ngày càng rộng rãi đặc biệt là trong kỹ thuật số. Hầu hết các thiết bị

kỹ thuật từ phức tạp cho đến đơn giản như thiết bị điều khiển tự động, thiết bị văn

phòng cho đến các thiết bị gia đình đều dùng các bộ vi điều khiển. Các ứng dụng của

mạch số như đồng hồ số, mạch đếm sản phẩm, mạch đo nhiệt độ... Trong các trường

học công sở, cơ quan xí nghiệp... Đồng hồ số được dùng để xem giờ và báo giờ. Mục

đích chính của đồ án này là “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”, vẫn lưu được thời gian khi mất nguồn

cung cấp và có chế độ báo giờ hẹn.

Mục tiêu và nội dung của đồ án.

Mục tiêu: Tìm hiểu cấu tạo và chức năng của vi điều kiển 8051 và các linh kiện

liên quan. Xây dựng và thiết kế một mạch đồng hồ số có chức năng xem giờ và báo

giờ.

Nội dung của đồ án bao gồm 3 phần chính:

Chương 1: Tìm hiểu vi điều khiển 8051

Chương 2 : Các linh kiện trong mạch đồng hồ có hẹn giờ

Chương 3: Thiết kế mạch đồng hồ có hẹn giờ

Page 6: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

CHƯƠNG 1

TÌM HIỂU VI ĐIỀU KHIỂN 8051

1.1. Giới thiệu

Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có

thể lập trình được, dùng để điều khiển hoạt động của một hệ thống. Theo các tập lệnh

của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin,

đo thời gian và tiến hành đóng mở một cấu tạo nào đó.

Trong các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển, điều khiển

hoạt động của tivi, máy giặt, đầu đọc laser, điện thoại, lò vi ba… Trong hệ thống sản

xuất tự động, bộ vi điều khiển được sử dụng trong robot, dây truyền tự động. Các hệ

thống càng “thông minh” thì vai trò của hệ vi điều khiển càng quan trọng.

1.2. Khảo sát vi điều khiển 8051

Vi điều khiển 8051 thuộc họ MCS51 có đặc điểm sau:

- 4k byte ROM.

- 128 byte RAM.

- 4 port I/O 8 bit.

- 2 bộ định thời 16 bit.

- Giao tiếp nối tiếp.

- 64K byte không gian bộ nhớ chương trình mở rộng.

- 64K byte không gian bộ nhớ dữ liệu mở rộng.

- Một bộ xử lý luận lý (thao tác trên các bit đơn).

- 210 bit có khả năng định vị riêng biệt trong RAM nội.

- 5 nguồn ngắt với 2 mức ưu tiên.

1.2.1. Cấu trúc bên trong của vi điều khiển 8051

Phần chính của vi điều khiển 8051 là bộ xử lý trung tâm (CPU: central

processing unit) bao gồm:

- Thanh ghi tích lũy A.

- Thanh ghi tích lũy phụ B, dùng cho phép nhân chia.

- Đơn vị logic học (ALU: Arithmetic Logical Unit).

- Từ trạng thái trương trình (PSW: Program Status Word).

- Bốn băng thanh ghi.

- Con trỏ ngăn xếp.

Page 7: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

- Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển

thời gian logic.

Đơn vị xử lí trung tâm nhận trực tiếp xung từ bộ giao động, ngoài ra còn có khả

năng đưa tín hiệu giữ nhịp từ bên ngoài.

Chương trình đang chạy có thể dừng lại nhờ một khối điều khiển ngắt ở bên

trong. Các nguồn ngắt có thể là: các biến cố ở bên ngoài, sự tràn bộ đếm định thời

hoặc cũng có thể là giao diện nối tiếp.

Hai bộ định thời 16 bit hoạt động như một bộ đếm.

Các cổng (port0, port1, port2, port 3) sử dụng vào mục đích điều khiển.

Ở cổng 3 có thêm các đường dẫn điều khiểu dùng để trao đổi với một bộ nhớ bên

ngoài, hoặc để đầu nối giao diện nối tiếp, cũng như các đường ngắt dẫn bên.

Hình 1.1: sơ đồ khối 8051

Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm

việc độc lập với nhau. Trong vi điều khiển 8051 có hai thành phần quan trọng khác đó

là bộ nhớ ngoài và các thanh ghi.

Page 8: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Bộ nhớ bao gồm: có bộ nhớ RAM và bộ nhớ ROM dùng để lưu trữ dữ liệu và

mã lệnh. Các thanh ghi sử dụng để lưu thông tin trong quá trình xử lý. Khi CPU làm

việc nó làm thay đổi nội dung của các thanh ghi.

1.2.2. Chức năng các chân vi điều khiển 8051

a. Port 0

Port 0 gồm các chân từ 32 ¸ 39. Port 0 có chức năng I/O trong các thiết kế cỡ

nhỏ (không dùng bộ nhớ mở rộng). Đối với các thiết kế lớn với bộ nhớ rộng, nó được

hợp kênh giữa bus địa chỉ và bus dữ liệu.

b. Port 1

Port 1 là một port I/O trên các chân 1-8. Các chân được ký hiệu P1.0, P1.1,

P1.2…Có thể dùng cho các thiết bị ngoài nếu cần. Port 1 không có chức năng khác, vì

vậy chúng ta chỉ được dùng trong giao tiếp với các thiết bị ngoài.

c. Port 2

port 2 là một port công dụng kép trên các chân 21-28 được dùng như các đường

xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế dùng bộ nhớ mở rộng.

Hình 1.2: Sơ đồ chân 8051

d. Port 3

port 3 là một port công dụng kép trên các chân 10-17. Các chân của port này có

nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của

8051 như bảng sau.

bit Tên Địa chỉ bít Chức năng chuyển đổi

Page 9: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

P3.0 RXD B0H Dữ liệu nhận cho port nối tiếp

P3.1 TXD B1H Dữ liệu phát cho port nối tiếp

P3.2 INT0\ B2H Ngắt 0 bên ngoài

P3.3 INT1\ B3H Ngắt 1 bên ngoài

P3.4 T0 B4H Ngõ vào của timer/counter 0

P3.5 T1 B5H Ngõ vào của timer/counter 1

P3.6 WR\ B6H Xung ghi bộ nhớ dữ liệu ngoài

P3.7 RD\ B7H Xung đọc bộ nhớ dữ liệu ngoài

Bảng 1.1: Chức năng của các chân trên port 3

e. PSEN (Program Store Enable): 8051 có 4 tín hiệu điều khiển

PSEN là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép bộ nhớ

chương trình mở rộng và thường được nối đến chân OE (Output Enble) của một

EPROM để cho phép đọc các bytes mã lệnh.

PSEN sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhị phân của trương trình

được đọc từ EPROM qua bus và được chốt vào thanh ghi lệnh của 8051 để giải mã

lệnh. Khi thi hành chương trình ROM nội (8051) PSEN sẽ ở mức thụ động (mức cao).

f. ALE (Address Latch Enable)

Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bị làm việc với các xử lý

8858, 8088, 8086, 8051 dùng ALE một cách tương tự cho làm việc giải các kênh các

bus địa chỉ và dữ liệu khi port 0 được dùng trong chế độ chuyển đổi của nó: vừa là bus

dữ liệu vừa là bus thấp của địa chỉ, ALE là tín hiệu để chốt địa chỉ vào một thanh ghi

bên ngoài trong nửa đầu của chu kỳ bộ nhớ. Sau đó, các đường port 0 dùng để xuất

hoặc nhập dữ liệu trong nửa sau chu kỳ của bộ nhớ.

Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có

thể dùng làm nguồn xung nhịp cho các hệ thống. Nếu xung trên 8051 là 12MHz thì

ALE có tần số 2MHz. Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ bị

mất. Chân này cũng được làm ngõ vào cho lập trình cho EPROM trong 8051.

g. EA (External Access)

Tín hiệu vào EA trên chân 31 thường được mắc lên mức cao (+5V) hoặc mức

thấp (GND). Nếu ở mức cao, 8051 thi hành chương trình từ ROM nội trong khoảng

địa chỉ thấp (4K). Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng.

Nếu EA được nối mức thấp bộ nhớ bên trong chương trình 8051 sẽ bị cấm và chương

Page 10: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

trình thi hành từ EPROM mở rộng. Người ta còn dùng chân EA làm chân cấp điện áp

21V khi lập trình cho EPROM trong 8051.

h. RST (Reset)

Ngõ vào RST trên chân 9 là ngõ reset của 8051. Khi tín hiệu này được đưa lên

mức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong 8051 được tải những giá trị

thích hợp để khởi động hệ thống.

i. Các ngõ vào bộ dao động trên chip

Như đã thấy trong các hình trên, 8051 có một bộ dao động trên chip. Nó thường

được nối với thạch anh giữa hai chân 18 và 19. Tần số thạch anh thông thường là

12MHz.

j. Các chân nguồn

8051 vận hành với nguồn đơn +5V, Vcc được nối vào chân 40 và GND được

nối vào chân 20.

1.2.3. Tổ chức bộ nhớ

8051 có bộ nhớ theo cấu trúc Harvard: có vùng nhớ riêng biệt cho chương trình

và dữ liệu, cả chương trình và dữ liệu có thể ở bên trong 8051. Dù vậy chúng có thể

được mở rộng bằng các thành phần ngoài lên đến tối đa 64K byte bộ nhớ chương trình

và 64K byte bộ nhớ dữ liệu.

Bộ nhớ bên trong bao gồm ROM và RAM trên chip, RAM trên chip bao gồm

nhiều phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi

và các thanh ghi chức năng đặc biệt.

Hai đặc tính cần lưu ý là:

- Các thanh ghi và các Port xuất nhập đã được xếp trong bộ nhớ và có thể được

truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác.

- Ngăn xếp bên trong RAM nội nhỏ hơn so với Ram ngoài như trong các bộ vi xử

lý khác.

Chi tiết về bộ nhớ Ram trên chip:

Ram bên trong 8051 được phân chia giữa các bank thanh ghi (00H-1FH), Ram

địa chỉ hóa từng bit (20H-2FH), Ram đa dụng (30H-7FH) và các thanh ghi chức năng

đặc biệt (80H-FFH).

1.2.3.1. Ram đa dụng

Page 11: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng

cách đánh địa chỉ trực tiếp hoặc gián tiếp. Ví dụ, để đọc nội dung ở địa chỉ 5FH của

RAM nội vào thanh ghi tích lũy lệnh sau sẽ được dùng:

MOV A, #5FH

Lệnh này di chuyển một bit dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định

“địa chỉ nguồn” (5FH). Đích nhận dữ liệu được ngầm xác định trong mã lệnh là thanh

ghi tích lũy A.

RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp

qua R0 hay R1. Ví dụ, sau khi thi hành cùng nhiệm vụ như lệnh đơn ở trên:

MOV R0, #5FH

MOV A, @R0

Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0 và

lệnh thứ hai dùng địa gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi

tích lũy.

1.2.3.2. RAM địa chỉ hóa từng bit

8051 chứa 210 bit được địa chỉ hóa, trong đó 128 bit là ở các địa chỉ byte 20H

đến 2FH, và phần còn lại trong các thanh ghi chức năng đặc biệt.

Ý tưởng truy xuất từng bit riêng rẽ bằng mềm là một đặc tính tiện lợi của vi

điều khiển nói chung. Các bit có thể được đặt, xóa, AND, OR …với một lệnh đơn. Đa

số các chip xử lí đòi hỏi một chuỗi lệnh đọc–sửa–ghi để đạt được hiệu quả tương tự.

Hơn nữa, các port I/0 cũng được địa chỉ từng bit làm đơn giản phần mềm xuất nhập

từng bit.

Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H đến 2FH. Các địa chỉ này

được truy xuất như các byte hoặc các bit phụ thuộc vào lệnh được dùng. ví dụ, để đặt

bit 67H, ta dùng lệnh sau:

SETB 67H

Chú ý rằng “địa chỉ bit 67H” là bit có trọng số lớn nhất (MSB) ở “địa chỉ byte

2CH” lệnh trên sẽ không tác động đến các bit khác của địa chỉ này.

1.2.3.3. Các bank thanh ghi

32 byte thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi. Bộ lệnh của

8051 hỗ trợ 8 thanh ghi (R0 đến R7) và theo mặc định (sau khi Reset hệ thống) các

Page 12: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

thanh ghi này ở các địa chỉ 00H-07H. Lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào

thanh ghi tích lũy.

MOV A, R5

Đây là lệnh một byte dùng địa chỉ thanh ghi. Tất nhiên, thao tác tương tự có thể

được thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ hai:

MOV A, 05H

Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các lệnh

tương ứng nhưng dùng địa chỉ trực tiếp. Các giá trị dữ liệu được dùng thường xuyên

nên dùng một trong các thanh ghi này.

Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit chọn bank

thanh ghi trong từ trạng thái chương trình (PSW). Giả sử rằng bank thanh ghi 3 được

tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào địa chỉ 18H:

MOV R0, A

Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương trình

nhanh và hiệu quả (từng phần riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêng

không phụ thuộc vào các phần khác).

1.2.3.4. Các thanh ghi chức năng đặc biệt

Các thanh ghi trong 8051 được định dạng như một phần của RAM trên chip. Vì

vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi trực tiếp, sẽ không có lợi khi

đặt chúng vào trong RAM trên chip). Đó là lý do để 8051 có nhiều thanh ghi. Cũng

như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Register) ở

vùng trên của RAM nội, từ địa chỉ 80H đến FFH. Chú ý rằng hầu hết 128 địa chỉ từ

80H đến FFH không được định nghĩa. Chỉ có 21 địa chỉ SFR là được định nghĩa.

Ngoại trừ tích lũy (A) có thể được truy xuất ngầm như đã nói, đa số các SFR

được truy xuất dùng địa chỉ trực tiếp. Chú ý rằng một vài SFR có thể được địa chỉ hóa

bit hoặc byte. Người thiết kế phải thận trọng khi truy xuất bit và byte. Ví dụ lệnh sau:

SETB 0E0H

Sẽ set bit 0 trong thanh ghi tích lũy, các bit khác không thay đổi. Ta thấy rằng

E0H đồng thời là địa chỉ byte của thanh ghi tích lũy và là địa chỉ bit có trọng số nhỏ

nhất trong thanh ghi tích lũy. Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit

là có hiệu quả.

a. Các thanh ghi port xuất nhập

Page 13: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Các port của 8051 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H, port 2 ở

địa chỉ A0H và port 3 ở địa chỉ B0H. Tất cả các port đều được địa chỉ hóa từng bit.

Điều đó cung cấp một khả năng giao tiếp thuận lợi.

b. Các thanh ghi timer

8051 chứa 2 bộ định thời đếm 16 bit được dùng trong việc định thời hoặc đếm

sự kiện. Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao). Timer 1 ở

địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao). Việc vận hành timer được set

bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer

(TCON) ở địa chỉ 88H. Chỉ có TCON được địa chỉ hóa từng bit.

c. Các thanh ghi nối tiếp

8051 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các

thiết bị nối tiếp như máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao

tiếp nối tiếp (có bộ chuyển đổi A/D, các thanh ghi dịch…). Một thanh ghi gọi là bộ

đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ được giữ cả hai dữ liệu truyền và nhận.

Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF. Các mode vận

hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp (SCON được địa

chỉ hóa từng bit) ở địa chỉ 98H.

d. Thanh ghi ngắt

Thanh ghi IE (Interrupt Enable: Cho phép ngắt) có địa chỉ byte A8H và địa chỉ

bit A8H – AFH có công dụng cho phép hoặc không cho phép các ngắt hoạt động (có

thể từng ngắt riêng rẽ hoặc tất cả các ngắt).

Thanh ghi IP (Interrup Priority: Ưu tiên ngắt) có địa chỉ byte B8H và địa chỉ bit B8H –

BCH có công dụng thiết lập mức ưu tiên cho các ngắt (ưu tiên thấp hoặc ưu tiên cao).

e. Thanh ghi diều khiển nguồn

Thanh ghi PCON (Power Control: Điều khiển nguồn) không có bit định vị. Nó

ở địa chỉ 87H chứa nhiều bit điều khiển. Thanh ghi PCON được tóm tắt như sau:

- Bit 7 (SMOD) cho phép tăng gấp đôi tốc độ truyền dữ liệu nối tiếp (tốc độ

baud) khi SMOD = 1.

- Bit 6, 5, 4 không có địa chỉ.

- Bit 3, 2 (GF1, GF0) cho phép người lập trình dùng với mục đích riêng.

- Bit 1 (PD) dùng để quy định chế độ nguồn giảm.

- Bit 0 (IDL) dùng để quy định chế độ nghỉ.

Page 14: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cả các IC họ

MCS – 51 nhưng chỉ được thi hành trong sự biên dịch của CMOD.

f.Thanh ghi A

Thanh ghi A là thanh ghi tích lũy có công dụng chứa dữ liệu của các phép toán

mà vi điều khiển xử lý. Ví dụ lệnh MUL AB sẽ nhân những giá trị không dấu 8 bit có

trong hai thanh ghi A và B, rồi trả về kết quả 16 bit trong A (byte thấp) và B (byte

cao). Lệnh DIV AB sẽ lấy A chia B, kết quả số nguyên đặt vào A, số dư đặt vào B.

Thanh ghi A có địa chỉ byte là E0H và địa chỉ bit từ E0H – E7H.

g. Thanh ghi B

Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi A cho các phép toán

nhân chia.

Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đa mục đích.

Nó là những bit định vị thông qua những địa chỉ từ F0H – F7H.

h. Thanh ghi SP

Con trỏ ngăn xếp (SP: Stack Pointer) là một thanh ghi 8 bit ở địa chỉ byte là

81H, dùng để lưu trữ tạm thời các dữ liệu. Đây là thanh ghi không định địa chỉ bit.

Thanh ghi này chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh ngăn xếp. Các lệnh

trên ngăn xếp bao gồm lệnh cất dữ liệu vào ngăn xếp (PUSH) và lệnh lấy dữ liệu ra

khỏi ngăn xếp (POP). Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ

liệu và lệnh lấy ra khỏi ngăn xếp sẽ làm giảm SP. Đối với chip 8051 thì vùng nhớ

được dùng để làm ngăn xếp được lưu giữ trong RAM nội.

Để sử dụng ngăn xếp thì ta phải khởi động thanh ghi SP (nghĩa là nạp giá trị

cho thanh ghi SP) vùng nhớ của ngăn xếp có địa chỉ bắt đầu là (SP) +1 và địa chỉ

kết thúc là 7FH.

Sau khi reset IC, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu tiên sẽ được

cất vào ô nhớ ngăn xếp có địa chỉ 08H. Nếu phần mềm ứng dụng không khởi động SP

một giá trị mới thì dãy thanh ghi 1, có thể cả 2 và 3 sẽ không dùng được vì vùng RAM

này đã được dùng làm ngăn xếp. Ngăn xếp được truy xuất trực tiếp bằng các lệnh

PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu, hoặc truy xuất ngầm bằng lệnh

gọi chương trình con (ACALL, LCALL) và các lệnh trở về (RET, RETI) để lưu trữ giá

trị của bộ đếm chương trình khi bắt đầu thực hiện chương trình con và lấy lại khi kết

thúc chương trình con.

Page 15: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

i. Thanh ghi DPTR

Con trỏ dữ liệu (DPTR: Data Pointer Register) là thanh ghi 16 bit chứa địa chỉ

của ô nhớ cần truy xuất thuộc ROM trong hoặc ngoài và RAM ngoài.

Thanh ghi DPTR có địa chỉ byte là 82H (DPL: byte thấp) và 83H (DPH: byte

cao). Thanh ghi này không định địa chỉ bit.

j.Thanh ghi trạng thái trương trình PSW (Program Status Word)

Bit Ký hiệu Địa chỉ Mô tả bit

PSW.7 CY D7H Cờ nhớ

PSW.6 AC D6H Cờ nhớ phụ

PSW.5 F0 D5H Cờ 0

PSW.4 RS1 D4H Chọn dãy thanh ghi (bit 1)

PSW.3 RS0 D3H Chọn dãy thanh ghi (bit 0):

00 = dãy 0: địa chỉ từ 00H đến 07H

01 = dãy 1: địa chỉ từ 08H đến 0FH

10 = dãy 2: địa chỉ từ 10H đến 17H

11 = dãy 2: địa chỉ từ 18H đến 1FH

PSW.2 OV D2H Cờ tràn

PSW.1 - D1H Dự trữ

PSW.0 P D0H Cờ kiểm tra chẵn lẻ

Bảng 1.2: thanh ghi trạng thái trương trình PSW

- Cờ nhớ (CY): bit địa chỉ là D7H, cờ nhớ được set lên 1 nếu có nhớ ở bit thứ 7

trong phép toán cộng hay có mượn ở bit thứ 7 trong phép toán trừ.

- Cờ nhớ phụ: Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của

4 bit thấp trong khoảng 0AH đến 0FH. Nếu các giá trị cộng được là số BCD, thì sau

lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi tích lũy) để mang kết quả lớn

hơn 9 trở về tâm từ 0¸9.

- Cờ 0 (F0): là một bit cờ đa dụng dành các ứng dụng của người dùng.

- Các bit chọn bank thanh ghi (RSO và RS1): xác định bank thanh ghi được tích

cực. Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần.

Page 16: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7

đến thanh ghi tích lũy A:

SETB RS1

SETB RS0

MOV A, R7

- Cờ Tràn: Cờ tràn (OV) được set một lệnh cộng hoặc trừ nếu có một phép toán

bị tràn. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit

này để xác định xem kết quả của nó có nằm trong tầm xác định không. Khi các số

không dấu được cộng, bit OV có thể được bỏ qua. Các kết quả lớn hơn +127 hoặc nhỏ

hơn –128 sẽ set bit OV.

1.2.3.5. Bộ nhớ ngoài

Khi dùng bộ nhớ ngoài, port 0 không còn là một port I/O thuần túy nữa. Nó

được hợp kênh giữa bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) với tín hiệu ALE để

chốt byte thấp của địa chỉ khi bắt đầu mỗi chu kỳ bộ nhớ. Port 2 thông thường được

dùng cho byte cao của bus địa chỉ.

Trong nửa đầu của mỗi chu kỳ bộ nhớ, byte thấp của địa chỉ được cấp trong

port 0 và được chốt bằng xung ALE. Một IC chốt 74HC373 (hoặc tương đương) sẽ giữ

byte địa chỉ thấp trong phần còn lại của chu kỳ bộ nhớ. Trong nửa sau của chu kỳ bộ

nhớ port 0 được dùng như bus dữ liệu và được đọc hoặc ghi tùy theo lệnh.

a. Truy xuất bộ nhớ chương trình ngoài

Bộ nhớ chương trình ngoài là một IC ROM được phép bởi tín hiệu PSEN. Hình

1.3 mô tả cách nối một EPROM vào 8051:

Hình 1.3: Giao tiếp giữa 8051 và EPROM

Page 17: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Hình 1.4: giản đồ thời gian đoc bộ nhớ chương trình ngoài

Một chu kỳ máy của 8051 có 12 chu kỳ xung nhịp. Nếu bộ dao động trên chip

được dùng bởi một thạch anh 12MHz thì chu kỳ máy kéo dài 1ms. Trong một chu kỳ

máy sẽ có 2 xung ALE và 2 byte được đọc từ bộ nhớ chương trình (nếu lệnh hiện hành

là một byte thì byte thứ hai sẽ được loại bỏ). Giản đồ thời gian của một lần lấy lệnh

được vẽ ở hình 1.4.

b. Truy xuất bộ nhớ dữ liệu ngoài

Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi/đọc bằng các tín

hệu WR và RD (các chân P3.6 và P3.7 thay đổi chức năng). Chỉ có một cách truy xuất

bộ nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu (DPTR) 16 bit hoặc R0

và R1 xem như thanh ghi địa chỉ. Kết nối bus địa chỉ và bus dữ liệu giữa RAM và

8051cũng giống EPROM và do đó cũng có thể lên đến 64 byte bộ nhớ RAM. Ngoài ra,

chân RD của 8051 được nối tới chân cho phép xuất (OE) của RAM và chân WR được

nối tới chân ghi (WR) của RAM.

Giản đồ thời gian cho lệnh đọc bộ nhớ dữ liệu ngoài được vẽ trên hình 1.5 đối

với lệnh MOVX A, @DPTR:

Page 18: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Hình 1.5: Giao tiếp giữa 8051 và RAM

Hình 1.6: Giản đồ thời gian của lệnh MOVX

Giản đồ thời gian cho lệnh ghi (MOV X @DPTR, A) cũng tương tự chỉ khác

đường WR sẽ thay vào đường RD và dữ liệu được xuất ra trên port 0 (RD vẫn giữ mức

cao) ở hình1.6.

1.2.3.6. Lệnh reset

8051 được reset bằng cách giữ chân RST ở mức cao ít nhất trong 2 chu kỳ máy

và trả nó về múc thấp. RST có thể được kích khi cấp điện dùng một mạch R-C.

Trạng thái của tất cả các thanh ghi của 8051 sau khi reset hệ thống được tóm tắt

trong bảng 1.4:

Page 19: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Hình 1.7: Mạch Reset hệ thống

Thanh ghi Nội dung

Đếm chương trình

Tích lũy

B

PSW

SP

DPTR

Port 0-3

IP

IE

Các thanh ghi định thời

SCON

SBUF

PCON(HMOS)

PCON(CMOS)

0000H

00H

00H

00H

07H

0000H

FFH

XXX00000B

0XX00000B

00H

00H

00H

0XXXXXXB

0XXX0000B

Bảng 1.3: Trạng thái các thanh ghi sau khi reset

Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình, nó

được đặt lại 0000H. Khi RST trở lại mức thấp, việc thi hành chương trình luôn bắt đầu

ở địa chỉ đầu tiên trong bộ nhớ trong chương trình: địa chỉ 0000H. Nội dung của RAM

trên chip không bị thay đổi bởi lệnh reset.

1.2.4. Hoạt động của bộ định thời (Timer)

1.2.4.1. Giới thiệu

Một định nghĩa đơn giản của timer là một chuỗi các flip-flop chia đôi tần số

nối tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp. Ngõ ra của tần số

Page 20: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

cuối làm nguồn xung nhịp cho flip-flop báo tràn của timer (flip-flop cờ). Giá trị nhị

phân trong các flip-flop của timer có thể xem như số đếm số xung nhịp (hoặc các sự

kiện) từ khi khởi động timer. Ví dụ timer 16 bit sẽ đếm từ 0000H đến FFFFH. Cờ báo

tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H. 8051 có 2 timer 16 bit, mỗi timer

có bốn cách làm việc. Người sử dụng các timer để: Định khoảng thời gian, đếm sự

kiện hoặc tạo tốc độ baud cho port nối tiếp trong 8051.

Trong các ứng dụng định khoảng thời gian, người lập trình timer ở một khoảng

đều đặn và đặt cờ tràn timer. Cờ được dùng để đồng bộ hóa chương trình để thực hiện

một tác động kiểm tra trạng thái của các cửa ngõ vào hoặc các sự kiện ra các ngõ ra.

Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời

gian trôi qua giữa hai sự kiện (ví dụ: đo tốc độ xung).

Đếm sự kiện dùng xác định số lần xẩy ra của một sự kiện. Một “sự kiện” là bất

cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái trên một chân của 8051.

Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho port nối tiếp trong 8051.

Truy xuất timer của 8051 dùng 6 thanh ghi chức năng đặc biệt cho trong bảng

sau:

Page 21: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

SFR Mục đích Địa chỉ Địa chỉ hóa từng bit

TCON

TMOD

TL0

TL1

TH0

TH1

Điều khiển timer

Chế độ timer

Byte thấp của timer 0

Byte thấp của timer 1

Byte cao của timer 0

Byte cao của timer 1

88H

89H

8AH

8BH

8CH

8DH

Không

Không

Không

Không

không

Bảng 1.4: Thanh ghi chức năng đặc biệt dùng timer

1.2.4.2. Thanh ghi chế độ timer (TMOD)

Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặc chế độ làm việc cho timer 0

và timer 1.

bit Tên Timer Mô tả

7 GATE 1 khi GATE=1, timer chỉ làm việc khi INT1=1

6 C/T 1 Bit cho đếm sự kiện hay ghi giờ

C/T=1: Đếm sự kiện

C/T=0: Ghi giờ đều đặn

5 M1 1 Bit chọn mode của Timer 1

4 M0 1 Bit chọn mode của Timer 1

3 GATE 0 Bit cổng của Timer 0

2 C/T 0 Bit chọn Counter/Timer của Timer 0

1 M1 0 Bit chọn mode của Timer 0

0 M0 0 Bit chọn mode của Timer 0

Bảng 1.5: Tóm tắt thanh ghi TMOD

Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1.

M0 M1 MODE Mô tả

0 0 0 Mode Timer 13 bit (mode 8048)

0 1 1 Mode Timer 16 bit

1 0 2 Mode tự động nạp 8 bit

1 1 3 Mode Timer tách ra:

Timer 0: TL0 là Timer 8 bit được điều khiển bởi

các bit của Timer 0. TH0 tương tự nhưng được

Page 22: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

điều khiển bởi các bit của mode Timer 1.

Timer 1: Được ngừng lại

Bảng 1.6: Chế độ chọn mode cho Timer

TMOD không có bit định vị, nó thường được LOAD một lần bởi phần mềm ở

đầu chương trình để khởi động mode Timer. Sau đó sự định giờ có thể dừng lại, được

khởi động lại như thế bởi sự truy xuất các thanh ghi chức năng đặc biệt của Timer

khác.

1.2.4.3. Thanh ghi điều khiển Timer (TCON)

Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer 0 và

timer 1.

Bit Ký hiệu địa chỉ bit Mô tả

TCON.7 TF1 8FH Cờ tràn Timer 1 được set bởi phần cứng ở

sự tràn, được xoá bởi phần mềm hoặc bởi

phần cứng khi các vectơ xử lý đến thủ tục

phục vụ ngắt ISR

TCON.6 TR1 8EH Bit điều khiển chạy Timer 1 được set hoặc

xoá bởi phần mềm để chạy hoặc ngưng

chạy timer

TCON.5 TF0 8DH Cờ tràn Timer 0 (hoạt động tương tự TF1)

TCON.4 TR0 8CH Bit điều khiển chạy Timer 0 (giống TR1)

TCON.3 IE1 8BH Cờ kiểu ngắt 1 ngoài. Khi cạnh xuống xuất

hiện trên INT1 thì IE1 được xoá bởi phần

mềm hoặc phần cứng khi CPU định hướng

đến thủ tục phục vụ ngắt ngoài.

TCON.2 IT1 8AH Cờ kiểu nhắt 1 ngoài được set hoặc xoá

bằng phần mềm bởi cạnh kích hoạt bởi sự

ngắt ngoài.

TCON.1 IE0 89H Cờ cạnh ngắt 0 ngoài

TCON.0 IT0 88H cờ kiểu ngắt 0 ngoài

Bảng 1.7: Tóm tắt thanh ghi TCON

1.2.5. Hoạt động port nối tiếp

1.2.5.1. Giới thiệu

Page 23: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

8051 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ khác trên

một dãy tần số rộng. Chức năng chủ yếu của một port nối tiếp là thực hiện chuyển đổi

song song sang nối tiếp với dữ liệu xuất và chuyển đổi nối tiếp sang song song với dữ

liệu nhập.

Truy xuất phần cứng đến port nối tiếp qua các chân TXD và RXD. Các chân

này có các chức năng khác với hai bit của port 3. P3.1 ở chân 11 (TXD) và P3.0 ở

chân 10 (RXD). Port nối tiếp cho hoạt động song song (full duplex : thu và phát đồng

thời) và đệm lúc thu (receiver buffering) cho phép một ký tự sẽ được thu và được giữ

trong khi ký tự thứ hai được nhận. Nếu CPU đọc ký tự thứ nhất trước khi ký tự thứ hai

được thu đầy đủ thì dữ liệu sẽ không bị mất.

Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port nối

tiếp là : SBUF và SCON. Bộ đếm port nối tiếp (SBUF) ở địa chỉ 99H thật sự là hai bộ

đếm. Viết vào SBUF để truy xuất dữ liệu thu được. Đây là hai thanh ghi riêng biệt

thanh ghi chỉ ghi để phát và thanh ghi để thu.

Thanh ghi điều khiển port nối tiếp (SCON) ở địa chỉ 98H là thanh ghi có địa chỉ

bit chứa các bit trạng thái và các bit điều khiển. Các bit điều khiển đặt chế độ hoạt

động cho port nối tiếp, và các bit trạng thái báo cáo kết thúc việc phát hoặc thu ký tự.

Các bit trạng thái có thể được kiểm tra bằng phần mềm hoặc có thể được lập trình để

tạo ngắt. Tần số làm việc của port nối tiếp còn gọi là tốc độ baund có thể cố định (lấy

từ bộ giao động của chip). Nếu sử dụng tốc độ baud thay đổi, timer 1 sẽ cung cấp xung

nhịp tốc độ baud và phải được lập trình.

1.2.5.2. Thanh ghi điều khiển port nối tiếp

Chế độ hoạt động của port nối tiếp được đặt bằng cách ghi vào thanh ghi chế độ

port nối tiếp (SCON) ở địa chỉ 98H. Sau đây các bảng tóm tắt thanh ghi SCON và các

chế độ của port nối tiếp:

Bit Ký hiệu Địa chỉ Mô tả

SCON.7 SM0 9FH Bit 0 của chế độ port nối tiếp

SCON.6 SM1 9EH Bit 1 của chế độ port nối tiếp

SCON.5 SM2 9DH Bit 2 của chế độ port nối tiếp. Cho phép

truyền thông đã xử lý trong các chế độ

2 và 3; RI sẽ không bị tác động nếu bit

thứ 9 thu được là 0

Page 24: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

SCON.4 REN 9CH Cho phép bộ thu phải đặt lên 1 để thu

(nhận) các ký tự

SCON.3 TB8 9BH Bit 8 phát, bit thứ 9 được phát các chế

độ 2 và 3; được đặt và xóa bằng phần

mềm

SCON.2 RB8 9AH Bit 8 thu, bit thứ 9 thu được

SCON.1 TI 99H Cờ ngắt phát. Đặt lên 1 khi kết thúc

phát ký tự; được xóa phần mềm

SCON.0 RI 98H Cờ ngắt thu. Đặt lên 1 khi Kết thúc thu

ký tự; được xóa Bằng phần mềm

Bảng 1.8: Tóm tắt thanh ghi chế độ port nối tiếp SCON

SM0 SM1 Chế độ Mô tả Tốc độ baud

0 0 0 Thanh ghi dịch Cố định (Fosc/12)

0 1 1 UART 8 bit Thay đổi (đặt bằng Timer)

1 0 2 UART 9 bit Cố định (Fosc/12 hoặc Fosc/64)

Bảng 1.9: Các chế độ port nối tiếp

Trước khi sử dụng port nối tiếp, phải khởi động SCON cho đúng chế độ. Ví dụ,

lệnh sau:

MOV SCON,#01010010B

Khởi động port nối tiếp cho chế độ 1 (SM0/SM1=0/1), cho phép bộ thu

(REN=1) và đặt cờ ngắt phát (TP=1) để chỉ bộ phát sẵn sàng hoạt động.

1.2.5.3. Khởi động và truy xuất các thanh ghi cổng nối tiếp

a. Cho phép thu

Bit cho phép bộ thu (REN = Receiver Enable) trong SCON phải được đặt lên 1

bằng phần mềm để cho phép thu các ký tự. Thông thường thực hiện việc này ở đầu

chương trình khi khởi động cổng nối tiếp, timer...Có thể thực hiện việc này theo hai

cách. Lệnh:

SETB REN

Sẽ đặt REN lên 1, hoặc lệnh:

MOV SCON,#xxx1xxxxB

Sẽ đặt REN 1 và đặc hoặc xóa đi các bit khác trên SCON khi cần (các x phải là

0 hoặc 2 để đặc chế độ làm việc).

Page 25: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

b. Bit dữ liệu thứ 9

Bit dữ liệu thứ 9 cần phát trong các chế độ 2 và 3, phải được nạp vào trong TB8

bằng phần mềm. Bit dữ liệu thứ 9 thu được đặt ở RBS. Phần mềm có thể cần hoặc

không cần bit dữ liệu thứ 9, phụ thuộc vào các đặc tính kỹ thuật của thiết bị nối tiếp sử

dụng (bit dữ liệu thứ 9 cũng đóng vai một trò quan trọng trong truyền thông đa xử lý).

c. Thêm 1 bit parity

Thường sử dụng bit dữ liệu thứ 9 để thêm parity vào ký tự. Bit P trong từ trạng

thái chương trình (PSW) được đặt lên 1 hoặc bị xóa bởi chu kỳ máy để thiết lập kiểm

tra chẵn với 8 bit trong thanh tích lũy.

d. Các cờ ngắt

Hai cờ ngắt thu và phát (RI và TI) trong SCON đóng một vai trò quan trọng

truyền thông nối tiếp dùng 8051. Cả hai bit được đặt lên 1 bằng phần cứng, nhưng

phải được xóa bằng phần mềm.

1.2.6. Tập lệnh của 8051

Tập lệnh 8051 có 255 lệnh gồm 139 lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3

byte.

Các nhóm lệnh của 8051:

Tập lệnh của 8051 được chia thành 5 nhóm:

- Số học.

- Luận lý.

- Chuyển dữ liệu.

- Chuyển điều khiển.

Các chi tiết thiết lập lệnh:

Rn : Thanh ghi R0 đến R7 của bank thanh ghi được chọn.

Data : 8 bit địa chỉ vùng dữ liệu bên trong. Nó có thể là vùng RAM dữ liệu

trong (0-127) hoặc các thanh ghi chức năng đặc biệt.

@Ri : 8 bit vùng RAM dữ liệu trong (0-125) được đánh giá địa chỉ gián tiếp

qua thanh ghi R0 hoặc R1.

#data : Hằng 8 bit chứa trong câu lệnh.

#data 16 : Hằng 16 bit chứa trong câu lệnh.

Addr16 : 16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP.

Page 26: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Addr11 : 11 bit địa chỉ đích được dùng trong lệnh LCALL và AJMP.

Rel : Byte offset 8 bit có dấu được dùng trong lệnh SJMP và những lệnh

nhảy có điều kiện.

Bit : Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các thanh

ghi chức năng đặc biệt.

a. Nhóm lệnh xử lý số học

ADD A,Rn (1 byte, 1 chu kỳ máy) : cộng nội dung thanh ghi Rn vào thanh ghi A.

ADD A,data (2,1): Cộng trực tiếp 1 byte vào thanh ghi A.

ADD A,@Ri (1,1): Cộng gián tiếp nội dung RAM chứa tại địa chỉ được khai

báo trong Ri vào thanh ghi A.

ADD A,#data (2,1): Cộng dữ liệu tức thời vào A.

ADD A,Rn (1,1): Cộng thanh ghi và cờ nhớ vào A.

ADD A,data (2,1): Cộng trực tiếp byte dữ liệu và cờ nhớ vào A.

ADDC A,@Ri (1,1): Cộng gián tiếp nội dung RAM và cờ nhớ vào A.

ADDC A,#data (2,1): Cộng dữ liệu tức thời và cờ nhớ vào A.

SUBB A,Rn (1,1): Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ

nhớ.

SUBB A,data (2,1): Trừ trực tiếp A cho một số và cờ nhớ.

SUBB A,@Ri (1,1): Trừ gián tiếp A cho một số và cờ nhớ.

SUBB A,#data (2,1): Trừ nội dung A cho một số tức thời và cờ nhớ.

INC A (1,1): Tăng nội dung thanh ghi A lên 1.

INC Rn (1,1): Tăng nội dung thanh ghi Rn lên 1.

INC data (2,1): Tăng dữ liệu trực tiếp lên 1.

INC @Ri (1,1): Tăng gián tiếp nội dung vùng RAM lên 1.

DEC A (1,1): Giảm nội dung thanh ghi A xuống 1.

DEC Rn (1,1): Giảm nội dung thanh ghi Rn xuống 1.

DEC data (2,1): Giảm dữ liệu trực tiếp xuống 1

DEC @Ri (1,1): Giảm gián tiếp nội dung vùng RAM xuống 1.

INC DPTR (1,2): Tăng nội dng con trỏ dữ liệu lên 1.

MUL AB (1,4): Nhân nội dung thanh ghi A với nội dung thanh ghi B.

DIV AB (1,4): Chia nội dung thanh ghi A cho nội dung thanh ghi B.

DA A (1,1): hiệu chỉnh thập phân thanh ghi A.

Page 27: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

b. Nhóm lệnh luận lý

ANL A,Rn (1,1): AND nội dung thanh ghi A với nội dung thanh ghi Rn.

ANL A,data (2,1): AND nội dung thanh ghi A với dữ liệu trực tiếp.

ANL A,@Ri (1,1): AND nội dung thanh ghi A với dữ liệu gián tiếp trong

RAM.

ANL A,#data (2,1): AND nội dung thanh ghi với dữ liệu tức thời.

ANL data,A (2,1): AND một dữ liệu trực tiếp với A.

ANL data,#data (3,2): AND một dữ liệu trực tiếp với A một dữ liệu tức thời.

ANL C,bit (2,2): AND cờ nhớ với 1 bit trực tiếp.

ANL C,/bit (2,2): AND cờ nhớ với bù 1 bit trực tiếp.

ORL A,Rn (1,1): OR thanh ghi A với thanh ghi Rn.

ORL A,data (2,1): OR thanh ghi A với một dữ liệu trực tiếp.

ORL A,@Ri (1,1): OR thanh ghi A với một dữ liệu gián tiếp.

ORL A,#data (2,1): OR thanh ghi A với một dữ liệu tức thời.

ORL data,A (2,1): OR một dữ liệu trực tiếp với thanh ghi A.

ORL data,#data (3,1): OR một dữ liệu trực tiếp với một dữ liệu tức thời.

ORL C,bit (2,2): OR cờ nhớ với một bit trực tiếp.

ORL C,/bit (2,2): OR cờ nhớ với bù của một bit trực tiếp.

XRL A,Rn (1,1): XOR thanh ghi A với thanh ghi Rn.

XRL A,data (2,1): XOR thanh ghi A với mộ dữ liệu trực tiếp.

XRL A,@Ri (1,1): XOR thanh ghi A với một dữ liệu gián tiếp.

XRL A,#data (2,1): XOR thanh ghi A với mộ dữ liệu tức thời.

XRL data,A (2,1): XOR một dữ liệu trực tiếp với thanh ghi A.

XRL dara,#data (3,1): XOR một dữ liệu trực tiếp với một dữ liệu tức thời.

SETB C (1,1): Đặt cờ nhớ.

SETB bit (2,1): Đặt một bit trực tiếp.

CLR A (1,1): Xóa thanh ghi A.

CLR C (1,1): Xóa cờ nhớ.

CPL A (1,1): Bù nội dung thanh ghi A.

CPL C (1,1): Bù cờ nhớ.

CPL bit (2,1): Bù một bit trực tiếp.

RL A (1,1): Quay trái nội dung thanh ghi A.

Page 28: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

RLC A (1,1): Quay trái nội dung thanh ghi A qua cờ nhớ.

RR A (1,1): Quay phải nội dung thanh ghi A.

RRC A (1,1): Quay phải nội dung thanh ghi A qua cờ nhớ.

SWAP (1,1): Quay trái nội dung thanh ghi A 1 nibble (1/2byte).

c. Nhóm lệnh chuyển dữ liệu

MOV A,Rn (1,1): Chuyển nội dung thanh ghi Rn vào thanh ghi A.

MOV A,data (2,1): Chuyển dữ liệu trực tiếp vào thanh ghi A.

MOV A,@Ri (1,1): Chuyển dữ liệu gián tiếp vào thanh ghi A.

MOV A,#data (2,1): Chuyển dữ liệu tức thời vào thanh ghi A.

MOV Rn,data (2,2): Chuyển dữ liệu trực tiếp vào thanh ghi Rn.

MOV Rn,#data (2,1): Chuyển dữ liệu tức thời vào thanh ghi Rn.

MOV data,A (2,1): Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp.

MOV data,Rn (2,2): Chuyển nội dung thanh ghi Rn vào một dữ liệu trực

tiếp.

MOV data,data (3,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp.

MOV data,@Ri (2,2): Chuyển một dữ liệu gián tiếp vào một dữ liệu trực tiếp.

MOV data,#data (3,2): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp.

MOV @Ri,A (1,1): Chuyển nội dung thanh ghi A vào một dữ liệu gián tiếp.

MOV @Ri,data (2,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu gián tiếp.

MOV @Ri,#data (2,1): Chuyển dữ liệu tức thời vào dữ liệu gián tiếp.

MOV DPTR,#data (3,2): Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu.

MOV C,bit (2,1): Chuyển một bit trực tiếp vào cờ nhớ.

MOV bit,C (2,2): Chuyển cờ nhớ vào một bit trực tiếp.

MOV A,@A+DPTR (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là @A+DPRT

vào thanh ghi A.

MOVC A,@A+PC (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là @A+PC

vào thanh ghi A.

MOV A,@Ri (1,2): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A.

MOVX A,@DPTR (1,2): Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A.

MOVX @Ri,A (1,2): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ).

MOVX @DPTR,A (1,2): Chuyển nội dung A ra dữ liệu bên ngoài (16 bit địa chỉ).

PUSH data (2,2): Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP.

Page 29: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

POP data (2,2): Chuyển dữ liệu trực tiếp vào ngăn xếp và giảm SP.

XCH A,Rn (1,1): Trao đổi dữ liệu giữa thanh ghi Rn v2 thanh ghi A.

XCH A,data (2,1): Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp.

XCH A,@Ri (1,1): Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp.

XCHD A,@R (1,1): Trao đổi giữa nibble thấp (LSN) của thanh ghi A và LSN

của dữ liệu gián tiếp.

d. Nhóm lệnh chuyền điều khiển

ACALL addr11 (2,2): Gọi chương trình con dùng địa chì tuyệt đối.

LCALL addr16 (3,2): Gọi chương trình con dùng địa chỉ dài.

RET (1,2): Trở về từ lệnh gọi chương trình con.

RET1 (1,2): Trở về từ lệnh gọi ngắt.

AJMP addr11 (2,2): Nhảy tuyệt đối.

LJMP addr16 (3,2): Nhảy dài.

SJMP rel (2,2): Nhảy ngắn.

JMP @A+DPTR (1,2): Nhảy gián tiếp từ con trỏ dữ liệu.

JZ rel (2,2): Nhảy nếu A=0.

JNZ rel (2,2): Nhảy nếu A không bằng 0.

JC rel (2,2): Nhảy nếu cờ nhớ được đặt.

JNC rel (2,2): Nhảy nếu cờ nhớ không được đặt.

JB bit,rel (3,2): Nhảy tương đối nếu bit trực tiếp được đặt.

JNB bit,rel (3,2): Nhảy tương đối nếu bit trực tiếp không được đặt.

JBC bit,rel (3,2): Nhảy tương đối nếu bit trực tiếp được đặt , rồi xóa bit.

CJNE A,data,rel (3,2): So sánh dữ liệu trực tiếp với A và nhảy nếu không bằng.

CJNE A,#data,rel (3,2): So sánh dữ liệu tức thời với A và nhảy nếu không bằng.

CJNE Rn,#data,rel (3,2): So sánh dữ liệu tức thời với nội dung thanh ghi Rn và nhảy

nếu không bằng.

CJNE @Ri,#data,rel (3,2): So sánh dữ liệu tức thời với dữ liệu gián tiếp và nhảy nếu

không bằng.

DJNZ Rn,rel (2,2): Giản thanh ghi Rn và nhảy nếu không bằng.

DJNZ data,rel (3,2): Giảm dữ liệu trực tiếp và nhảy nếu không bằng.

Page 30: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

CHƯƠNG 2

CÁC LINH KIỆN TRONG MẠCH ĐỒNG HỒ CÓ HẸN GIỜ

2.1. IC thời gian thực DS1307

2.1.1. Chức năng các chân

X1, X2: nối với thạch anh 32,768 kHz.

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 5V đượ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 3V đượ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ị.

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.

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.

SQW/OUT (square wave/output driver): khi được kích hoạt thì bit SQWE

được thiết lập, chân SQW/OUT phát đi 1 trong 4 tần số (1Hz,4kHz,8kHz,32kHz).

Chân này cũng đượ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.

Hình 2.1: Sơ đồ chân của DS1307

2.1.2. Một vài thông số kỹ thuật

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 NV SRAM. Địa chỉ và dữ liệu được truyền nối

Page 31: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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

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

2.1.3. Sơ đồ khối của DS1307

Hình 2.2: Sơ đồ khối của DS1307

Page 32: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

a. Địa chỉ Ram và RTC

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.

Thanh ghi thời gian thực được mô tả như sau:

Bảng 2.1: Mô tả thanh ghi thời gian thực

Bảng 2.2: Địa chỉ bit của các thành phần trong DS1307

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

Page 33: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

Trong DS1307 có một thanh ghi điều khiển để điều khiển hoạt động của

chân SQW/OUT.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

OUT 0 0 SQWE 0 0 RS1 RS0

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

- 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

Page 34: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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.

Page 35: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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 đã

Page 36: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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ẽ

Page 37: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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

2.2. LCD (Liquid Crystal Display)

Page 38: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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

Page 39: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

và được LCD giữ ở bus đến khi nào chân E xuống mức

thấp.

7÷1

4

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

Bảng 2.5: Chức năng các chân của LCD

Page 40: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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

Page 41: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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.

Page 42: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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

Bảng 2.7: Mã lệnh của LCD

Page 43: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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

Hình 3.1: Sơ đồ khối

Page 44: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

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.

Khối hiển thị là LCD.

Khối vi điều khiển sử dụng vi điều khiển 8051 điều khiển toàn bộ các hoạt

động chính của mạch: nhận tín hiệu điều khiển của khối điều chỉnh và tín hiệu

từ IC DS1307 thời gian thực xuất ra khối hiển thị và chuông báo.

Khối chuông báo là một chuông hoặc còi điện để báo hẹn giờ.

Khối thời gian thực là IC DS1307.

3.5. Sơ đồ mạch đồng hồ có hẹn giờ

3.5.1. Khối nút nhấn

Hình 3.2: Khối nút nhấn

SET: chuyển sang chế độ điều chỉnh giờ, phút, ngày, tháng, năm.

ALARM: chuyển sang chế độ cài đặt hẹn giờ.

UP: điều chỉnh tăng.

DOWN: điều chỉnh giảm.

Page 45: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.5.2. Khối thời gian thực

Hình 3.3: Khối thời gian thực

IC thời gian thực DS1307 giao tiếp với vi điều khiển 8051 theo kiểu giao tiếp

I2C. Với 8051 đóng vai trò là một master và DS1307 đóng vai trò là một slave.

Chân SDA,SCL 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 (chọn R=10kΩ). Tần số thạch anh là 32,768kHz để DS1307

có thể hoạt động được. Vbat=3V để đảm bảo cho sự hoạt động của thiết bị.

Page 46: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.5.3. Khối vi điều khiển

Hình 3.4: Khối vi điều khiển

Khối vi điều khiển 8051. Điều chỉnh mọi hoạt động của hệ thống, 8051 hoạt

động được là nhờ vào khối tạo xung giao động thạch anh.

3.5.4. Khối chuông báo

Hình 3.5: Khối chuông báo

Là một chuông báo được nối với chân p1.4 của 8051 và một đầu nối xuống đất

Page 47: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.5.5. Khối hiển thị

Hình 3.6: Khối hiển thị

Biến trở R2 có tác dụng điều chỉnh độ tương phản của LCD. Biến trở R3 điều

chỉnh độ sáng của chữ trên LCD.

Page 48: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.5.6. Sơ đồ mạch mô phỏng bằng proteus

Hình 3.7: Sơ đồ mạch mô phỏng bằng proteus

Nguyên tắc hoạt động:

Khi hệ thống được cấp nguồn cho 8051. 8051 tiến hành đọc thời gian thực từ

DS1307 hiển thị lên LCD, khi ấn các nút nhấn có thể chỉnh được thời gian và cài đặt

hẹn giờ, khi đến thời gian hẹn 8051 kích hoạt loa kêu trong vòng 1 phút rồi tắt.

Page 49: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.5.7. Sơ đồ mạch in

Hình 3.8: Sơ đồ mạch in

Hình 3.9: Mạch hoàn chỉnh đã nạp chương trình

Page 50: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.6. Lưu đồ chương trình

3.6.1. Lưu đồ chương trình chính

Page 51: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.6.2. Chương trình con

3.6.2.1. Lưu đồ chương trình con ghi 1 byte vào DS1307

Page 52: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.6.2.2. Lưu đồ chương trình con đọc 1 byte từ DS1307

Page 53: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.6.2.3. Lưu đồ chương trình con ghi thời gian

Page 54: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.6.2.4. Lưu đồ chương trình con đọc thời gian

Page 55: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.6.2.5. Lưu đồ chương trình con hiển thị LCD

Kiểm tra cờ bận BF

Ghi lệnh vào LCD

Ghi ký tự ra LCD

Page 56: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

3.6.2.6. Lưu đồ chương trình con kiểm tra giờ hẹn, mở chuông và tắt chuông

Page 57: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Các việc đã thực hiện được

Trong báo cáo này, em đã trình bày nghiên cứu về vi điều khiển 8051, DS1307

và các linh kiện trong mạch đồng hồ thời gian thực có hẹn giờ. Em đã đi sâu vào thiết

kế mạch đồng hồ có hẹn giờ.

Em đã xây dựng mạch đồng hồ có hẹn giờ với DS1307. Ứng dụng này có chức

năng như một chiếc đồng hồ thông dụng như: xem giờ, chỉnh giờ, báo hẹn giờ và đã

xây dựng được mạch thật.

Hướng cải tiến và mở rộng

Sau khi hoàn thành song đồ án này. Sản phẩm của em còn ít tính năng. Sau đây là một

số hướng phát triển cho đề tài này:

- Thêm phần hiển thị lịch âm.

- Thêm phần đo nhiệt độ môi trường.

- Hệ thống chuông báo theo bài hát.

- Thay các nút nhấn bằng hệ thống điều khiển được từ xa.

Thái Nguyên, Ngày 15 tháng 6 năm 2011

Page 58: LỜI CẢM ƠN - WordPress.com · Web viewHình 3.7: Sơ đồ mạch mô phỏng bằng proteus 2 Hình 3.8: Sơ đồ mạch in 2 Hình 3.9: Mạch hoàn chỉnh đã nạp chương

TÀI LIỆU THAM KHẢO

[1] Nguyễn Trung Đồng - Bùi Thị Mai Hoa “ Kỹ Thuật vi xử lý ”, Nhà xuất bản khoa

học và kỹ thuật năm 2010.

[2] Nguyễn Tăng Cương - Pham Quốc Thắng “Cấu trúc và lập trình họ vi điều khiển

8051”, Nhà xuất bản khoa học và kỹ thuật năm 2003.

[3] Tống Văn On, Hoàng Đức Hải “ Họ Vi Điều Khiển 8051”, Nhà xuất bản Lao Động

Xã Hội năm 2006.

[4] http://www.dientuvietnam.net/

[5] http://www.hocavr.com/index.php/app/ds1307

[6] http://www.dientuvienthong.net/diendan/index.php