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

Thiết kế mạch đồng hồ số sử dụng vi điều khiển AT89C51

86 1,1K 2

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

Nội dung

Trong đó có 24 chân có tác dụng kép có nghĩa 1 chân có 2 chức năng, mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus

Trang 1

LỜI CẢM ƠN Với lòng biết ơn sâu sắc, em xin cảm ơn thầy giáo ThS Vũ Văn Diện,

người đã hết lòng hướng dẫn và ủng hộ tinh thần cho em cũng như định hướng cho

em những phương pháp lập trình và cung cấp tài liệu tham khảo, để em có thể hoàn thành tốt đề tài đồ án của mình

Em xin gửi lời cảm ơn tới các thầy, cô đã giảng dạy em trong suốt quá trình học tập tại trường, và đặc biệt là các thầy, cô giảng viên trong bộ môn Truyền Thông Và Mạng Máy Tính – Khoa Công Nghệ Thông Tin – Trường ĐH Công Nghệ Thông Tin Và Truyền Thông – ĐH Thái Nguyên

Xin cảm ơn các bạn đã nhiệt tình giúp đỡ tôi rất nhiều về tài liệu cũng như những kiến thức liên quan để tôi hoàn thành tốt đồ án này

Em xin chân thành cảm ơn !

Sinh viên

Dương Văn Miêu

Trang 2

LỜI CAM ĐOAN

Để hoàn thành đồ án tốt nghiệp đúng thời gian quy định và đáp ứng được yêu cầu đề ra, em đã cố gắng tìm hiểu, học hỏi, tích lũy kiến thức đã học Em có tham khảo một số tài liệu đã nêu trong phần “Tài liệu tham khảo” nhưng không sao chép nội dung từ bất kỳ đồ án nào khác

Em xin cam đoan những lời khai trên là đúng, mọi thông tin sai lệch em xin hoàn toàn chịu trách nhiệm

Sinh viên

Dương Văn Miêu

Trang 3

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

DANH MỤC HÌNH ẢNH 5

LỜI MỞ ĐẦU 7

CHƯƠNG I: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051 VÀ CÁC LINH KIỆN ĐIỆN TỬ SỬ DỤNG TRONG MẠCH 8

1.1 Tổng quan về 8051 8

1.1.1 Giới thiệu vi điều khiển AT89C51 8

1.1.2 Cấu trúc bên trong vi điều khiển 17

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

1.2 Giới thiệu IC thời gian thực RTC (Real Time Clock ) DS1307 24

1.2.1 Giới thiệu chung về DS1307 24

1.2.2 Cơ chế hoạt động và chức năng các chân củaDS1307 26

1.2.3 Sơ đồ địa chỉ RAM và RTC 27

1.3 KHẢO SÁT LCD 16x2 33

1.3.1 Gới thiệu chung về LCD 16x2 33

1.3.2 Chức năng các chân của LCD 16x2 33

1.3.3 Bảng tập lệnh của LCD 35

CHƯƠNG II: THIẾT KẾ MẠCH MÔ PHỎNG VÀ LƯU ĐỒ THUẬT TOÁN 36 2.1 Giới thiệu phần mềm thiết kế mô phỏng proteus 36

2.1.1 Giới thiệu 36

2.1.2 Các thao tác cơ bản 37

2.1.3 Cách vẽ mạch in 43

2.2 Thiết kế mạch mô phỏng trên proteus 47

2.2.1 Khối nguồn 47

Trang 4

2.2.2 Khối điều khiển trung tâm 48

2.2.3 Khối tạo thời gian thực 49

2.2.4 Khối hiển thị 49

2.2.5 Khối giao tiếp phím bấm 50

2.2.6 Mạch mô phỏng 51

2.2.7 Lưu đồ thuật toán 52

CHƯƠNG III: THIẾT KẾ MẠCH IN VÀ THI CÔNG MẠCH THẬT 54

3.1 Thiết kế mạch in 54

3.2 Thi công mạch thật 55

3.2.1 Lựa chọn linh kiện 55

3.2.2 Thi công mạch 59

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

TÀI LIỆU THAM KHẢO 63

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 64

Trang 5

DANH MỤC HÌNH ẢNH

Hình 1.1 Sơ đồ khối AT89C51 10

Hình1.2 Sơ đồ chân AT89C51 11

Hình 1.3 Mạch reset tác động bằng tay và tự động reset khi khởi động máy 13

Hình 1.4 Xung clock 14

Hình 1.5 Tổ chức bộ nhớ 17

Hình 1.6 Truy xuất bộ nhớ mã ngoài 21

Hình 1.7 Truy xuất bộ nhớ dữ liệu ngoài 22

Hình 1.8 Sự giải mã địa chỉ 23

Hình 1.9 Manual Reset 23

Hình 1.10 IC thời gian thực DS1307 25

Hình 1.11 Chân của IC thời gian thực DS1307 26

Hình 1.12 Sơ đồ khối của DS1307 27

Hình 1.13 Sơ đồ địa chỉ RAM và RTC của DS1307 27

Hình 1.14 Tổ chức các thanh ghi thời gian 28

Hình 1.15 Số BCD 29

Hình 1.16 LCD 16x2 33

Hình 2.1 Khởi động chương trình Proteus 36

Hình 2.2 Giao diện chương trình Proteus 37

Hình 2.3 Thanh công cụ 37

Hình 2.4 Sử dụng thanh linh kiện 38

Hình 2.5 Các nút mô phỏng 39

Hình 2.6 Thêm linh kiện mới từ thư viện 39

Hình 2.7 Cửa sổ lấy linh kiện 40

Hình 2.8 Mở thư viện ISIS 41

Hình 2.9 Lấy linh kiện từ thư viện ISIS 41

Hình 2.10 Chọn linh kiện để vẽ mạch 42

Trang 6

Hình 2.11 Xác định đầu nối dây dẫn 42

Hình 2.12 Nối dây dẫn 43

Hình 2.13 Vẽ mạch in 43

Hình 2.14 Định dạng đường bao của bo mạch 44

Hình 2.15 Chọn chế độ vẽ mạch Auto 45

Hình 2.16 Cửa sổ Autorouter 45

Hình 2.17 Chỉnh sửa thông số của mạch 46

Hình 2.18 Sơ đồ khối tổng quát 47

Hình 2.19 Khối nguồn 48

Hình 2.20 Khối điều khiển trung tâm 48

Hình 2.21 Khối tạo thời gian thực 49

Hình 2.22 Khối hiển thị 50

Hình 2.23 Khối giao tiếp phím bấm 51

Hình 2.24 Mạch mô phỏng 51

Hình 2.25 Lưu đồ thuật toán 52

Hình 3.1 Mạch in 54

Hình 3.2 Mạch in 3D 55

Hình 3.3 IC ổn áp 7805 56

Hình 3.4 Tụ điện 57

Hình 3.5 Hình dạng của điện trở trong thiết bị điện tử 57

Hình 3.6 Nút bấm button 57

Hình 3.7 Biến trở 58

Hình 3.8 Thạch anh 58

Hình 3.9 Pin CMOS 58

Hình 3.10 Mạch in ra giấy 59

Hình 3.11 Bo mạch đồng 59

Hình 3.12 Mạch thực tế (mặt trước) 60

Hình 3.13 Mạch thực tế (mặt sau) 61

Trang 8

LỜI MỞ ĐẦU

Ngày nay kĩ thuật vi điều khiển đã trở nên quen thuộc trong các ngànhkỹ thuậtvà trong dân dụng Vi điều khiển ngày càng được ứng dụng rộng rãi, từ các dây truyền sản xuất lớn đến các thiết bị gia dụng chúng ta đều thấy sự hiện diện của vi điều khiển Vi điều khiển không những góp phần vào kỹ thuật điều khiển

mà còn góp phần to lớn vào phát triển thông tin Đó là sự ra đời của hàng loạt thiết

bịviễn thôngvà truyền hình hiện đại, đặc biệt nó đã góp phần đưa con người lên đỉnh cao của nền văn minh nhân loại

Do vậy, việc tìm hiểu về vi điều khiển 8051 và ứng dụng của nó đang được

nhiều người quan tâm Vì thế, em đã lựa chọn đề tài: “Thiết kế mạch đồng hồ số sử dụng vi điều khiển AT89C51.” với sự hướng dẫn của thầy giáo ThS Vũ Văn Diện

Em xin chân cảm ơn sự giúp đỡ và hướng dẫn tận tình của thầy giáo ThS

Vũ Văn Diện cùng các thầy cô giáo trong bộ môn đã giúp đỡ em hoàn thành đề tài

này

Em xin chân thành cảm ơn!

Trang 9

CHƯƠNG I: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051 VÀ CÁC LINH KIỆN

ĐIỆN TỬ SỬ DỤNG TRONG MẠCH 1.1 Tổng quan về 8051

Vào năm 1981 hãng Intel giới thiệu bộ vi điều khiển được gọi là 8051 Bộ

vi điều khiển này có 128 byte RAM, 4K byte ROM trên chip, hai bộ định thời, một cổng nối tiếp và 4 cổng (độ rộng 8 bit) vào – ra tất cả được đặt trên một chip Vi điều khiển 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit

dữ liệu tại một thời điểm Dữ liệu lớn hơn 8 bit được chia ra thành các dự liệu 8 bit

để xử lý Vi điều khiển 8051 đã trở lên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán các dạng biến thể của 8051, điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ khác nhau và dung lượng ROM trên chip khác nhau Mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dung lượng nhớ ROM trên chip, nhưng tất cả chúng đều tương thích với 8051 ban đầu về các lệnh, điều này có nghĩa là nếu viết chương trình của mình cho một phiên bản nào của 8051 thì nó cũng sẽ chạy với mọi phiên bản khác mà không phân biệt nó được sản xuất từ hãng nào

MCS-51 là họ IC vi điều khiển do hãng Intel sản xuất Các IC tiêu biểu cho

họ là 8051 và 8031 Các sản phẩm MCS-51 thích hợp cho những ứng dụng điều khiển Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội Tập lệnh cung cấp một bảng tiện dụng của những lệnh số học 8 Bit gồm cả lệnh nhân và lệnh chia Nó cung cấp những hỗ trợ mở rộng trên Chip dùng cho những biến một Bit như là kiểu dữ liệu riêng biệt cho phép quản lý và kiểm tra Bit trực tiếp trong điều khiển

và những hệ thống logic đòi hỏi xử lý luận lý

1.1.1 Giới thiệu vi điều khiển AT89C51

AT89C51 cung cấp những đặc tính chuẩn như sau: 4 KB bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2

Trang 10

TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tần số

và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiệm công suất, chế độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter, port nối tiếp và hệ thống ngắt tiếp tục hoạt động Chế độ giảm công suất sẽ lưu nội dung RAM nhưng sẽ treo bộ dao động làm mất khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống

 Các đặc điểm của AT89C51 đượctóm tắt như sau

 4 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xoá

 Tần số hoạt động từ: 0Hz đến 24 MHz

 3 mức khóa bộ nhớ lập trình

 2 bộ Timer/counter 16 Bit

 128 Byte RAM nội

 4 Port xuất /nhập I/O 8 bit

 Giao tiếp nối tiếp

Trang 11

1.1.1.1 Sơ đồ khối của AT89C51

Trang 13

Hình 1.1 Sơ đồ khối AT89C51

Các thanh ghi có trong vi điều khiển bao gồm

 Khối ALU đi kèm với thanh ghi temp 1, temp 2 và thanh ghi trạng thái PSM

 Bộ điều khiển logic

 Vùng nhớ RAM và vùng nhớ Flash Rom lưu trữ chương trình

 Mạch tạo dao động

 Khối xử lý ngắt, truyền dữ liệu, khối Time/Counter

 Thanh ghi A, B, dptr và 4 port có chốt đệm

 Thanh ghi bộ đếm chương trình PC

 Con trỏ dữ liệu dptr

 Thanh ghi con trỏ ngăn xếp SP

 Thanh ghi lệnh IR

 Các thanh ghi hỗ trợ để quản lý địa chỉ bộ nhớ bên trong và bên ngoài

1.1.1.2 Sơ đồ chân AT89C51

Trang 14

Hình1.2 Sơ đồ chân AT89C51 1.1.1.3 Chức năng các chân của AT89C51

AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập Trong

đó có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ

 Vcc (40): Chân cung cấp điện (5V).

Trang 15

Port 0 còn được cấu hình làm bus địa chỉ (byte thấp) và bus dữ liệu đa hợp

trong khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chương trình ngoài

Port 0 cũng nhận các byte mã trong khi lập trình cho Flash và xuất các byte

mã trong khi kiểm tra chương trình (Các điện trở kéo lên bên ngoài được cần đến trong khi kiểm tra chương trình)

 Port 1(1-8) :

Port 1 là port xuất nhập 8-bit hai chiều Port 1 cũng nhận byte địa chỉ thấp

trong thời gian lập trình cho Flash

 Port 2 (21-28):

Port 2 là port xuất nhập 8-bit hai chiều.

Port 2 tạo ra các byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ

nhớ chương trình ngoài và trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 16-bit Trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa

chỉ 8-bit, Port 2 phát các nội dung của thanh ghi chức năng đặc biệt P2 Port 2

cũng nhận các bít địa chỉ cao và vàitín hiệu điều khiển trong thời gian lập trình cho Flash và kiểm tra chương trình

 Port 3 (10-17) :

Port 3 là Port xuất nhập 8-bit hai chiều Port 3 cũng còn làm các chức năng

khác của AT89C51 Các chức năng này được liệt kê như sau:

INT1\

T0T1WR\

RD\

Ngõ nhập dữ liệu nối tiếpNgõ xuất dữ liệu nối tiếpNgõ vào ngắt cứng thứ 0Ngõ vào ngắt cứng thứ 1Ngõ vào của TIMER/COUNTER thứ 0Ngõ vào của TIMER/COUNTER thứ 1Tín hiệu điều khiển ghi dữ liệu lên bộ nhớ ngoàiTín hiệu điều khiển đọc bộ nhớ dữ liệu ngoài

Trang 16

Port 3 cũng nhận một vài tín hiệu điều khiển cho việc lập trình Flash và

kiểm tra chương trình

ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi truy xuất bộ

nhớ ngoài Chân này cũng làm ngõ vào xung lập trình( ) trong thời gian lập trình cho Flash

Khi hoạt động bình thường, xung ngõ ra ALE luôn có tần số không đổi là 1/6 tần số của mạch dao động, có thể được dùng cho các mụch đích định thời từ

bên ngoài vàtạo xung clock Tuy nhiên, lưu ý là một xung ALE sẽ bị bỏ qua trong

mỗi một chu kỳ truy xuất bộ nhớ dữ liệu ngoài

Khi cần, hoạt động ALE có thể được vô hiệu hoá bằng cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ 8Eh Khi bit này được set, ALEchỉ tích cực

trong thời gan thực hiện lệnh MOVX hoặc MOVC Ngược lại, chân này sẽ được

kéo lên cao Việc set bit không cho phép hoạt động chốt byte thấp của địa chỉ sẽ

không có tác dụng nếu bộ vi điều khiển đang ở chế độ thực thi chương trình ngoài

Trang 17

 PSEN (29):

(Program Store Enable) là xung điều khiển truy xuất bộ nhớchương trình ngoài Khi AT89C51 đang thực thi chương trình từ bộ nhớ chương trình

ngoài, được kích hoạt hai lần mỗi chu kỳ máy, nhưng hai hoạt động

sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài

Trang 18

 /Vpp (31):

(External Access Enable) là chân cho phép truy xuất bộ nhớ chương trình ngoài (bắt đầu từ địa chỉ từ 0000H đến FFFFH)

= 0 cho phép truy xuất bộ nhớ chương trình ngoài, ngược lại =1 sẽ

thực thi chương trình bên trong chip.Tuy nhiên, lưu ý rằng nếu bit khoá 1 (lock-bit

1) được lập trình, sẽ được chốt bên trong khi reset.Chân này cũng nhận điện

áp cho phép lập trình Vpp=12V khi lập trình Flash (khi đó điện áp lập trình 12V được chọn)

 XTAL1 và XTAL2:

XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại đảo của mạch dao động, được cấu hình để dùng như một bộ dao động trên chip

Hình 1.4 Xung clock Không có yêu cầu nào về chu kỳ nhiệm vụ của tín hiệu xung clock bên

ngoài do tín hiệu này phải qua một flip-flop chia hai trước khi đến mạch tạo xung

clock bên trong, tuy nhiên các chi tiết kỹ thuật về thời gian mức thấp và mức cao,

điện áp cực tiểu và cực đại cần phải được xem xét

1.1.1.4 Các chế độ đặc biệt

Trang 19

Trong chế độ nghỉ, CPU tự đi vào trạng thái ngủ trong khi tất cả các ngoại

vi bên trong chip vẫn tích cực Chế độ này được điều khiển bởiphần mềm Nội dung của RAM trên chip và của tất cả các thanh ghi chức năng đặc biệt vẫn không

đổi trong khi thời gian tồn tại chế độ này Chế độ nghỉ có thể được kết thúc bởi

một ngắt bất kỳ nào được phép hoặc bằng cách reset cứng.

Ta cần lưu ý rằng khi chế độnghỉ được kết thúc bởi một reset cứng, chip vi

điều khiển sẽ tiếp tục bình thường việc thực thi chương trình từ nơi chương trình

bị tạm dừng, trong vòng 2 chu kỳ máy trước khi giải thuật reset mềm nắm quyền

điều khiển

Ở chế độ nghỉ, phần cứng trên chip cấm truy xuất RAM nội nhưng cho phép truy xuất các chân của các port Để tránh khả năng có một thao tác ghi không mong muốn đến một chân port khi chế độ nghỉ kết thúc bằng reset, lệnh tiếp theo yêu cầu chế độ nghỉ không nên là lệnh ghi đến chân port hoặc đến bộ nhớ ngoài.

 Chế độ nguồn giảm

Trong chế độ này, mạch dao động ngừng hoạt động và lệnh yêu cầu chế độ

nguồn giảm là lệnh sau cùng được thực thi RAM trên chip và các thanh ghi chức

năng đặc biệt vẫn duy trì các giá trị của chúng cho đến khi chế độ nguồn giảm kết

thúc Chỉ có một cách ra khỏi chế độ nguồn giảm, đó là reset cứng.

Việc reset sẽ xác định lại các thanh ghi chức năng đặc biệt nhưng không làm thay đổi RAM trên chip Việc reset không nên xảy ra (chân reset ở mức tích

cực) trước khi Vcc được khôi phục lại mức điện áp bình thường và phải kéo dài

trạng thái tích cực của chân reset đủ lâu để cho phép mạch dao động hoạt động trở

Trang 20

Nghỉ Bên ngoài 1 1 Thả nổi Dữ liệu Dữ

Trên chip có ba bit khoá, các bít này có thể không cho phép lập trình

hoặccho phép lập trình, các bit này cho ta thêm một số đặc trưng nữa của

AT89C51như sau.Khi bit khoá 1 LB1 được lập trình, mức logic ở chân được

lấymẫu và được chốt trong khi reset.Nếu việc cấp nguồn cho chip không cócông dụng reset, mạch chốt được khởi động bằng một giá trị ngẫu nhiên và giátrị này được duy trì cho đến khi có tác động reset Điều cần thiết là giá trịđược chốt của

phải phù hợp với mức logic hiện hành ở chân này

Chế

độ

1 U U U Không có đặc trưng khóa chương trình

2 P U U Các lệnh MOVC được thực thi từ bộ nhớ

chương trình ngoài không được phép tìm nạp

lệnh từ bộ nhớ nội, được lấy mẫu và được

chốt khi reset, hơn nữa việc lập trình trên Flash

Trang 21

1.1.2 Cấu trúc bên trong vi điều khiển

1.1.2.1 Tổ chức bộ nhớ

Hình 1.5 Tổ chức bộ nhớ 1.1.2.2 Cấu trúc RAM bên trong AT89C51 được phân chia như sau

 Các bank thanh ghi có địa chỉ từ 00H đến 1FH

 RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH

 RAM đa dụng từ 30H đến 7FH

 Các thanh ghi chức năng đặc biệt từ 80H đến FFH

1.1.2.3 Bản đồ bộ nhớ RAM trên Chip như sau

7F

RAM đa dụng

FFF0 F7 F6 F5 F4 F3 F2 F1 F0 B

D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW

Trang 22

30 B8 - - - BC BB BA B9 B8 IP

2F 7F 7E 7D 7C 7B 7A 79 78

2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P.32D 6F 6E 6D 6C 6B 6A 69 68

2C 67 66 65 64 63 62 61 60 A8 AF AE AD AC AB AA A9 A8 IE2B 5F 5E 5D 5C 5B 5A 59 58

23 1F 1E 1D 1C 1B 1A 19 18 8D Không được định địa chỉ hóa bit TH1

22 17 16 15 14 13 12 11 10 8C Không được định địa chỉ hóa bit TH0

21 0F 0E 0D 0C 0B 0A 09 08 8B Không được định địa chỉ hóa bit TL1

20 07 06 05 04 03 02 01 00 8A Không được định địa chỉ hóa bit TL0

10

07 Bank thanh ghi 0 81 Không được định địa chỉ hóa bit SP

Trang 23

00 (mặc định cho R0 -R7) 80 87 86 85 84 83 82 81 80 P0

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

Bộ nhớ trong AT89C51 bao gồm ROM và RAM RAM trong AT89C51 bao gồm nhiều thành 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

AT89C51 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Chương trình và dữ liệu chứa bên trong AT89C51 nhưng AT89C51 vẫn có thể kết nối với 64 Kbyte bộ nhớ chương trình và 64 Kbyte dữ liệu

Trang 24

Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu địa chỉ trực tiếp hoặc gián tiếp

 RAM có thể truy xuất từng bit

AT89C51 chứa 210 bit được địa chỉ hóa, trong đó có 128 bit có chứa các byte

có chứa các địa chỉ từ 20H đến 2FH và các bit còn lại chứa trong nhóm thanh ghi có chức năng đặc biệt

Ý tưởng truy xuất từng bit bằng phần mềm là các đặc tính mạnh củaMicrocontroller xử lý chung Các bit có thể được đặt, xóa, AND, OR, với mộtlệnh đơn Đa số các vi xử lý đòi hỏi một chuỗi lệnh đọc - sửa - ghi để đạt được mục đích tương tự Ngoài ra các Port cũng có thể truy xuất được từng bit

128 bit truy xuất từng bit này cũng có thể truy xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dùng

 Các bank thanh ghi

32 byte thấp của bộ nhớ nội được dành cho các bank thanh ghi Bộ lệnh AT89C51 hỗ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định sau khi Reset

hệ thống, các thanh ghi này có các địa chỉ từ 00H đến 07H

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

Trang 25

các lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp Các dữ liệu dùng thường xuyên nên dùng một trong những thanh ghi này

Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được truy xuất bởi các thanh ghi R0 đến R7, để chuyển đổi việc truy xuất các bank thanh ghi ta phải thay đổi các bit chọn bank trong thanh ghi trạng thái

1.1.3.2 Các thanh ghi có chức năng đặc biệt

Các thanh ghi nội của AT89C51 được truy xuất ngầm định bởi bộ lệnh.Những thanh ghi trong AT89C51 đượ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 bộ điếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp) Cũng như R0 đến R7, AT89C51 có 21 thanh ghi có chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội từ địa chỉ 80H đến FFH

Chú ý: Tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có

21 thanh ghi có chức năng đặc biệt được định nghĩa sẵn các địa chỉ

Ngoại trừ thanh ghi A có thể được truy xuất ngầm như đã nói, đa số các thanh ghi có chức năng đặc biệt SFR có thể địa chỉ hóa từng bit hoặc byte.Thanh ghi trạng thái chương trình (PSW: Program Status Word):Từ trạng thái chương trình ở địa chỉ D0H được tóm tắt như sau:

00=Bank 0; address 00H07H01=Bank 1; address 08H0FH10=Bank 2; address 10H17H11=Bank 3; address 18H1FH

Trang 26

PSW.2 OV D2H Overlow Flag

1.1.3.3 Bộ nhớ ngoài (external memory)

AT89C51 có khả năng mở rộng bộ nhớ lên đến 64K byte bộ nhớ chương trình và 64k byte bộ nhớ dữ liệu ngoài Do đó có thể dùng thêm RAM và ROM nếu cần.Khi dùng bộ nhớ ngoài, Port0 không còn chức năng I/O nữa Nó được kết hợp giữa bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) với tín hiệu ALE để chốt byte của bus địa chỉ chỉ khi bắt đầu mỗi chu kỳ bộ nhớ Port được cho là byte cao của bus địa chỉ

 Truy xuất bộ nhớ mã ngoài (Acessing External Code Memory)

Bộ nhớ chương trình bên ngoài là bộ nhớ ROMđược cho phép của tín hiệu PSEN\ Sự kết nối phần cứng của bộ nhớ EPROM như sau:

Trang 27

Hình 1.6 Truy xuất bộ nhớ mã ngoài

Trong một chu kỳ máy tiêu biểu, tín hiệu ALE tích cực 2 lần Lần thứ nhất cho phép 74HC373 mở cổng chốt địa chỉ byte thấp, khi ALE xuống 0 thì byte thấp

và byte cao của bộ đếm chương trình đều có nhưng EPROM chưa xuất vì PSEN\ chưa tích cực, khi tín hiệu lên một trở lại thì Port 0 đã có dữ liệu là Opcode ALE tích cực lần thứ hai được giải thích tương tự và byte 2 được đọc từ bộ nhớ chương trình Nếu lệnh đang hiện hành là lệnh 1 byte thì CPU chỉ đọc Opcode, còn byte thứ hai bỏ đi

Trang 28

 Truy xuất bộ nhớ dữ liệu ngoài (Accessing External Data Memory)

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

Bộ nhớ dữ liệu ngoài là một bộ nhớ RAMđược đọc hoặc ghi khi được cho phép của tín hiệu RD\ và WR Hai tín hiệu này nằm ở chân P3.7 (RD) và P3.6(WR) Lệnh MOVX được dùng để truy xuất bộ nhớ dữ liệu ngoài và dùng một bộ đệm dữ liệu 16 bit (DPTR), R0 hoặc R1 như là một thanh ghi địa chỉ

 Sự giải mã địa chỉ (Address Decoding)

Sự giải mã địa chỉ là một yêu cầu tất yếu để chọn EPROM, RAM, 8279

Sự giải mã địa chỉ đối với AT89C51 để chọn các vùng nhớ ngoài như các vi điều khiển Nếu các con EPROM hoặc RAM 8K được dùng thì các bus địa chỉ phải được giảimã để chọn các IC nhớ nằm trong phạm vi giới hạn 8K: 0000H÷1FFFH, 2000H÷3FFFH, …

Một cách cụ thể, IC giải mã 74HC138 được dùng với những ngõ ra của nó được nối với những ngõ vào chọn Chip CS (Chip Select) trên những IC nhớ EPROM, RAM, … Hình sau đây cho phép kết nối nhiều EPROM và RAM

Trang 29

Hình 1.8 Sự giải mã địa chỉ

 Hoạt động Reset:

AT89C51 có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian

2 chu kỳ xung máy, sau đó xuống mức thấp để AT89C51 bắt đầu làm việc RST có thể kích bằng tay bằng một phím nhấn thường hở, sơ đồ mạch reset như sau:

Hình 1.9 Manual Reset

Trang 30

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

Đến chương trình PCThanh ghi tích lũy AThanh ghi B

Thanh ghi trạng thái PSW

SPDPRTPort 0đến port 3IP

IECác thanh ghi định thờiSCON SBUF

PCON (HMOS)PCON (CMOS)

0000H00H00H00H07H0000HFFHXXX0 0000 B0X0X 0000 B00H

00H00H0XXX XXXXH0XXX0000 B

1.2 Giới thiệu IC thời gian thực RTC (Real Time Clock ) DS1307

1.2.1 Giới thiệu chung về DS1307

IC thời gian thực là họ vi điều khiển của hãng dalat DS1307 có một số đặc trưng cơ bản sau:

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

Trang 31

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

- SRAM : 56 bytes

- Địa chỉ và dữ liệu được truyền nối tiếp qua 2 đường bus 2 chiều

- 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 3V:DS1307 có 7 bytes dữ liệu nằm từ địa chỉ 0x00 tới 0x06, 1 byte điều khiển, và 56 bytes lưu trữ ( dành cho người sử dụng )

Khi xử lý dữ liệu từ DS1307, họ đã tự chuyển cho ta về dạng số BCD, ví dụ như ta đọc được dữ liệu từ địa chỉ 0x04 (tương ứng với Day- ngày trong tháng) và tại 0x05 (tháng)là 0x15, 0x11

+ Lưu ý đến vai trò của chân SQW/OUT Đây là chân cho xung ra của DS1307 có 4 chế độ 1Hz, 4.096HZ, 8.192Hz, 32.768Hz các chế độ này đuợc quy định bởi các bít của thanh ghi Control Register (địa chỉ 0x07 )

+ Địa chỉ của DS1307là 0xD0

Cơ chế hoạt động : 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

Trang 32

Hình 1.10 IC thời gian thực DS1307

Trang 33

1.2.2 Cơ chế hoạt động và chức năng các chân củaDS1307

Hình 1.11 Chân của IC thời gian thực DS1307

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

 V BAT: 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 điề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

Trang 34

Có thể kết nối DS1307 bằng một mạch điện đơn giản.

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

Trang 35

Sơ đồ khối của DS1307

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

1.2.3 Sơ đồ địa chỉ RAM và RTC

Trang 36

Hình 1.13 Sơ đồ địa chỉ RAM và RTC của DS1307

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

Chú ý: enable dao động trong suốt quá trình cấu hình thiết lập (CH=0)

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

Trang 37

Hình 1.14 Tổ chức các thanh ghi thời gian

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à PM Ở chế độ 24h thì bit 5 là bit chỉ 20h (từ 20h đến 23h)

Trong quá trình truy cập dữ liệu, khi chỉ thị START được thực thi thì dòng thời gian được truyền tới một thanh ghi thứ 2, thông tin thời gian sẽ được đọc từ thanh ghi thứ cấp này, trong khi đó đồng hồ vẫn tiếp tục chạy Trong DS1307 có một thanh ghi điều khiển để điều khiển hoạt động của 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 là disable Nếu SQWE = 0 thì mức logic ở chân SQW/OUT

Trang 38

sẽ là 1 nếu OUT=1 và OUT = 0 nếu OUT = 0.

 SQWE(square wave enable): bit này được thiết lập 1 sẽ enable đầu ra của bộ tạo dao động Tần số của đầu ra sóng vuông phụ thuộc vào giá trị của RS1

và RS0

DS1307 hỗ trợ bus 2 dây 2 chiều và giao thức truyền dữ liệu, thiết bị gửi dữ liệu lên bus được gọi là bộ phát và thiết bị nhận gọi là bộ thu, thiết bị điều khiển quá trình này gọi là master, thiết bị nhận sự điều khiển của master gọi là slave Các bus nhận sự điều khiển của master, là thiết bị phát ra chuỗi xung clock(SCL),master sẽ điều khiển sự truy cập bus, tạo ra các chỉ thị START và STOP

Điều đầu tiên cần chú ý là giá trị thời gian lưu trong các thanh ghi theo dạng BCD BCD là viết tắt của cụm từ Binary-Coded Decimal, tạm dịch là các số thập phân theo mã nhị phân Ví dụ bạn muốn cài đặt cho thanh ghi MINUTES giá trị

42 Nếu quy đổi 42 sang mã thập lục phân thì chúng ta thu được 42=0x2A Theo cách hiểu thông thường chúng ta chỉ cần gán MINUTES=42 hoặc MINUTES=0x2A, tuy nhiên vì các thanh ghi này chứa giá trị BCD nên mọi chuyện sẽ khác

Trang 39

Hình 1.15 Số BCD

Với số 42, trước hết nó được tách thành 2 chữ số (digit) 4 và 2 Mỗi chữ số sau đó được đổi sang mã nhị phân 4-bit Chữ số 4 được đổi sang mã nhị phân 4-bit

là 0100 trong khi 2 được đổi thành 0010 Ghép mã nhị phân của 2 chữ số lại chúng

ta thu được một số 8 bit, đó là số BCD Với trường hợp này, số BCD thu được là

01000010 (nhị phân) = 66 Như vậy, để đặt số phút 42 cho DS1307 chúng ta cần ghi vào thanh ghi MINUTES giá trị 66 (mã BCD của 42) Tất cả các phần mềm lập trình hay thanh ghi của chip điều khiển đều sử dụng mã nhị phân thông thường, không phải mã BCD, do đó chúng ta cần viết các chương trình con để quy đổi từ

số thập nhị phân (hoặc thập phân thường) sang BCD Thoạt nhìn, mọi người đều cho rằng số BCD chỉ làm vấn đền thêm rắc rối, tuy nhiên số BCD rất có ưu điểm trong việc hiển thị nhất là khi hiển thị từng chữ số như hiển thị bằng LED 7 đoạn chẳng hạn Quay lại ví dụ 42 phút, giả sử chúng ta dùng 2 LED 7-đoạn để hiện thị

2 chữ số của số phút Khi đọc thanh ghi MINUTES chúng ta thu được giá trị 66 (mã BCD của 42), do 66=01000010 (nhị phân), để hiển thị chúng ta chỉ cần dùng phương pháp tách bit thông thường để tách số 01000010 thành 2 nhóm 0100 và

0010 (tách bằng toán tử shift “>>” của C hoặc instruction LSL, LSR trong asm) và

Trang 40

xuất trực tiếp 2 nhóm này ra LED vì 0100 = 4 và 0010 =2, rất nhanh chóng Thậm chí, nếu chúng ta nối 2 LED 7-đoạn trong cùng 1 PORT, việc tách ra từng digit là không cần thiết, để hiển thị cả số, chỉ cần xuất trực tiếp ra PORT Như vậy, với số BCD, việc tách và hiển thị digit được thực hiện rất dễ dàng, không cần thực hiện phép chia (rất tốn thời gian thực thi) cho cơ số 10, 100, 1000…như trong trường hợp số thập phân.

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ã 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 đồ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ừ đầ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 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-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 đến 12h) và 24h (1h đến 24h) giờ, bit6 xác lập hệ thống giờ Nếu bit6=0 thì hệ thống 24h được chọn, khi đó 2 bit cao 5 và 4 dùng mã 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 trườ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 trườ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 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 ở địa chỉ 0x03 Thanh ghi

Ngày đăng: 08/12/2016, 17:14

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w