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

Thiết kế lịch vạn niên điện tử

88 1,3K 7
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Thiết Kế Lịch Vạn Niên Điện Tử
Trường học Trường Đại Học Khoa Học Và Công Nghệ
Chuyên ngành Khoa Học Điện Tử
Thể loại Đồ án
Định dạng
Số trang 88
Dung lượng 6,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Với sự phát triển không ngừng của khoa học kỹ thuật, đặc biệt là ngành điện tử đã ứng dụng rất nhiều trong công nghiệp

Trang 1

1

MỤC LỤC

LỜI NÓI ĐẦU 5

TÓM TẮT NỘI DUNG ĐỒ ÁN .6

Chương 1: Giới thiệu qua về tình hình phát triển khoa học và công nghệ điện tử trên thực tế, sự phát triển phần cứng song song với phần mềm đã đem lại hiệu quả to lớn trong cuộc sống con người .6

Chương 2: Thiết kế phần cứng .6

Chương 3: Xây dựng phần mềm, lập trình cho hệ thống .6

Chương 4: Cài đặt và hoàn thiện hệ thống .6

CHƯƠNG 1: TỔNG QUAN .7

1.1 Đặt vấn đề .7

1.2 Khảo sát vấn đề: 7

1.3 Các vấn đề cần giải quyết của bài toán : 8

1.4 Giải pháp: 8

1.5 Mục đích đề tài .8

CHƯƠNG 2: THIẾT KẾ VÀ XÂY DỰNG PHẦN CỨNG Error! Bookmark not defined 2.1 CÁC YÊU CẦU CỦA HỆ THỐNG .9

2.2 HƯỚNG XÂY DỰNG HỆ THÔNG .9

2.3 SƠ ĐỒ KHỐI 10

2.3.1 Sơ đồ khối tổng quan 10

2.3.2.1 Khối tạo xung dao động 11

2.3.2.1.1 Khối tạo xung dao động cho vi điều khiển 89S52 11

Trang 2

2.3.2.1.2 Giao tiếp DS 1307 với khối giao động 12

2.3.2.3 Khối hiển thị 13

2.3.2.4 Khối điều chỉnh 14

2.4 SƠ ĐỒ MẠCH NGUYÊN LÝ 15

Sơ đồ nguyên lý của mạch như sau 15

Hình 2.6 Sơ đồ mạch nguyên lý 16

2.5 CÁC LINH KIỆN SỬ DỤNG TRONG MẠCH 16

2.5.1.Giới thiệu về vi điều khiển 89S52 16

2.5.1.1 Tổng Quan Về 89S52 16

2.5.1.2 Mô tả chân 89S52 19

2.5.1.2.1 Sơ đồ chân 89S52 19

2.5.1.2.2 Chức năng các chân 89S52 19

2.5.1.2.3 Tổ chức bộ nhớ bên trong 89S52 22

2.5.1.2.4 RAM đa dụng 24

2.5.1.2.5 RAM có thể định địa chỉ bit 24

2.5.1.2.6 Các bank thanh ghi 24

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

2.5.1.2.7.1 Thanh ghi trạng thái chương trình (PSW: Program Status Word) 25

2.5.1.2.7.2 Thanh ghi TIMER 27

2.5.1.2.7.3 Thanh ghi ngắt (INTERRUPT) 28

2.5.2 Giới thiệu về IC DS 1307 32

2.5.2.1 Tổng quan về DS1307 32

Trang 3

3

2.5.2.1.2 Cấu tạo bên trong DS1307 34

2.5.2.2 Khái quát giao diện I2C 38

2.5.2.3 Mode (chế độ) truyền dữ liệu giữa DS1307 và AT89S52 42

2.5.2.3.1 Mode Data Write (chế độ ghi dữ liệu) 42

2.5.2.3.2 Mode Data Read (chế độ dọc dữ liệu) 44

2.5.3 CÁC LINH LIỆN KHÁC SỬ DỤNG TRONG MẠCH 45

2.5.3.1 Điện trở 45

2.5.3.2 Tụ điện 46

2.5.3.3 Led 7 đoạn 46

2.5.3.3.1 Khái niệm cơ bản 46

2.5.3.3.2 Kết nối với vi điều khiển 48

CHƯƠNG 3: XÂY DỰNG PHẦN MỀM ĐIỀU KHIỂN HỆ THỐNG 52

3.1 LƯU ĐỒ CHƯƠNG TRÌNH CHÍNH 52

3.2 LƯU ĐỒ CHƯƠNG TRÌNH CON 54

3.2.1 Lưu đồ chương trình con “WRITE_CLOCK” 54

3.2.3 Lưu đồ chương trình con “ READ_CLOCK” 55

3.2.4 Lưu đồ chương trình con ghi 1 byte vào DS1307“SEND_BYTE” 56

3.2.5 Lưu đồ chương trình con đọc 1 byte từ DS1307“READ_BYTE” 57

3.2.6 Lưu đồ chương trình con “ALARM_CLOCK_TEST” 58

3.2.7 Lưu đồ chương trình con “HIEU_UNG_CHINH” 59

3.2.8 Lưu đồ chương trình con “TAT_MO_CHUONG” 60

3.2.9 Lưu đồ chương trình con “HIENTHI” 61

3.4 PHẦN MỀM LẬP TRÌNH CHO VI ĐIỀU KHIỂN 62

Trang 4

3.4.1 Định hướng sử dụng ngôn ngữ lập trình 62

3.4.2.1 Các lệnh số học 62

3.4.2.2 Các lệnh logic 64

3.4.2.3 Các lệnh di chuyển dữ liệu 65

3.4.2.4 Các lệnh xử lý bit 66

3.4.2.5 Các lệnh rẽ nhánh 67

3.4.2.6 Các lệnh dịch và quay 68

3.4.2.7 Các lệnh làm việc với ngăn xếp 69

CHƯƠNG 4: CÀI ĐẶT VÀ HOÀN THIỆN HỆ THỐNG 70

4.1 PHẦN MỀM BIÊN DỊCH CHƯƠNG TRÌNH 70

4.1.1 Các bước cài đặt phần mềm Keli C 70

4.1.2 Lập trình ASM với Keil: 79

4.2 MÔ PHỎNG TRÊN PROTUERS 83

4.4 MÔ HÌNH MẠCH THỰC TẾ 85

4.5 KIỂM TRA VÀ ĐÁNH GIÁ 87

4.5.1 Ưu Điểm 87

4.5.2 Khuyết Điểm 87

4.5.3 Hướng Phát Triển 87

4.5.4 Kết Luận 87

TÀI LIỆU THAM KHẢO 88

Trang 5

5

LỜI NÓI ĐẦU

Với sự phát triển không ngừng của khoa học kỹ thuật, đặc biệt là ngành điện

tử đã ứng dụng rất nhiều trong công nghiệp Trong lĩnh vực điều khiển, từ khi công nghệ chế tạo loại vi mạch lập trình phát triển đã đem đến các kỹ thuật điều khiển hiện đại có nhiều ưu điểm hơn so với việc sử dụng các mạch điều khiển lắp ráp bằng các linh kiện rời như kích thước nhỏ, giá thành rẻ, độ làm việc tin cậy, công suất tiêu thụ nhỏ

Ngày nay, trong lĩnh vực điều khiển đã được ứng dụng rộng rãi trong các thiết bị, sản phẩm phục vụ cho nhu cầu sinh hoạt hàng ngày của con người như máy giặt, đồng hồ báo giờ đã giúp cho đời sống cuả chúng ta ngày càng hiện đại và tiện nghi hơn

Đề tài “Thiết kế lịch vạn niên điện tử” Nhằm đáp ứng nhu cầu ham muốn học hỏi của bản thân, cũng như là góp phần nâng giá trị của những mạch điện tử trong đời sống của con người

Đề tài “Thiết kế lịch vạn niên điện tử” rất đa dạng và phong phú, có nhiều loại hình khác nhau dựa vào công dụng và độ phức tạp Do tài liệu tham khảo bằng Tiếng Việt còn hạn chế, trình độ có hạn và kinh nghiệm trong thực tế còn non kém, nên đề tài chắc chắn còn nhiều thiếu sót Vì vậy rất mong nhận được những ý kiến đóng góp, giúp đỡ chân thành của các thầy cô cũng như của các bạn sinh viên.

Trang 6

TÓM TẮT NỘI DUNG ĐỒ ÁN

Chương 1 : Giới thiệu qua về tình hình phát triển khoa học và công nghệ điện tử

trên thực tế, sự phát triển phần cứng song song với phần mềm đã đem lại hiệu quả to lớn trong cuộc sống con người

- Nguyên nhân chọn đề tài

- Mục đích đề tài

- Khảo sát bài toán

- Các vấn đề cần giải quyết của bài toán

- Các linh kiện cần sử dụng trong mạch

Chương 3: Xây dựng phần mềm, lập trình cho hệ thống

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

- Lưu đồ chương trình con

- Phần mềm lập trình cho hệ thống

Chương 4: Cài đặt và hoàn thiện hệ thống

- Mô phỏng hệ thống trên protuers

- Triển khai mạch thực tế

- Kiểm tra và đánh giá

Trang 7

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

lý số Vì các thiết bị làm việc dựa trên cơ sở nguyên lý số có ưu điểm hơn hẳn so với các thiết bị làm việc dưạ trên cơ sở nguyên lý tương tự, đặc biệt là trong kỹ thuật tính toán

Sự phát triển mạnh mẽ của công nghệ điện tử đã cho ra đời nhiều vi mạch số

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

Đề tài em chọn xuất phát từ ý tưởng sử dụng IC DS1307 thời gian thực, cùng với việc mọi người cần phải biết chính xác ngày, giờ để thu xếp việc làm cho hợp lý Với ý tưởng này, em đã kết hợp lý thuyết và thực tế để làm đồ án về “ thiết kế lịch vạn niên điện tử”

Trang 8

1.3 Các vấn đề cần giải quyết của bài toán

Bài toán xây dựng thiết kế lịch vạn niên điện tử đặt ra các yêu cầu sau:

- Lập trình thời gian thực cho AT 89S52 rồi từ đó áp dụng cho ứng dụng

- Đảm bảo hiển thị đúng thời gian ngày tháng năm, giờ phút giây

- Có khả năng phát triển và mở rộng vào các ứng dụng khác trong thực tế

Có độ bền cao Hệ thống chạy ổn định và giá cả hợp lý

1.4 Giải pháp

Giải pháp đưa ra để đáp ứng yêu cầu bài toán:

- Sử dụng vi điều khiển AT 89S52

- Sử dụng chíp thời gian thực DS 1307

- Xây dựng chương trình phần mềm điều khiển

- Lập trình cho nút bấm để tăng giảm giờ, phút

1.5 Mục đích đề tài

Sự cần thiết, quan trọng cũng như tính khả thi và lợi ích của mạch số cũng chính là lý do để em chọn và thực hiện đồ án “Thiết kế lich vạn niên điện tử” nhằm ứng dụng kiến thức đã học vào thực tế

Sử dụng một con IC thời gian thực (DS1307) kết hợp với vi điều khiển 89S52 , 89S52 có nhiệm vụ đọc/ghi (giờ, phút, giây, thứ, ngày… thời gian báo thức) từ chip DS1307 Khi thời gian báo thức trùng với thời gian thực thì loa sẽ phát ra âm thanh trong 20 giây Hiển thị ngày tháng năm, giờ phút giây đề trên led 7 thanh Mục đích yêu cầu của đề tài như sau:

 Mạch hiển thị giờ, phút, giây, thứ, ngày, tháng, năm một cách chính xác

 Khi thời gian báo thức trùng với thời gian thực thì loa phải phát ra âm thanh báo thức

Trang 9

9

CHƯƠNG 2: THIẾT KẾ VÀ XÂY DỰNG PHẦN CỨNG

2.1 CÁC YÊU CẦU CỦA HỆ THỐNG

Với ý tưởng xây dựng một đồng hồ báo thức kết hợp với lịch điện tử Em đã xây dựng bài đồ án “lịch vạn niên điện tử” Bài đồ án là kết quả của quá trình học tâp trên giảng đường với sự hướng dẫn của thầy cô giáo cùng với việc khảo sát nhu cầu thực tế cũng như ứng dụng của các vi điều khiển trong cuộc sống Việc xây dựng hệ thống “lịch vạn niên điện tử” với các tính năng mong muốn:

-Chức năng: Hiển thị được thứ ngày tháng năm, giờ phút giây trên led 7 đoạn

Có hệ thống chuông báo thức

Có các nút điều chỉ thời gian cũng như chuông báo giờ

-Giao diện: Mạch phải nhỏ gọn, dễ nhìn, dễ sử dụng

- Hoạt động: Bền, chạy ổn định, sai số thời gian thấp

- Tính thực tế: Mạch có ứng dụng cao ngoài cuộc sống, có thể mang ra ứng dụng lắp đặt ngoài thực tế, giá thì lắp mạch rẻ, phù hợp

2.2 HƯỚNG XÂY DỰNG HỆ THỐNG

Từ các yêu cầu của hệ thống như đã nên trên Có rất nhiều giải pháp khác nhau

để xây dựng thành công hệ thống” lịch vạn niên điện tử” Từ việc mua các linh kiện,

sử dụng vi điều khiển nào cho việc lập trình đến sử dụng chip thời gian thực nào để

đo thời gian Mỗi loại lại có một phương pháp xây dựng và cách làm khác nhau Qua một quá trình tìm hiểu và nghiên cứu em đã đưa ra được phương pháp lựa chọn tối ưu cho bài đồ án “ lịch vạn niên điện tử”:

- Sử dụng vi điều khiển 89S52 làm vi điều khiển đê lập trình

-Sử dụng chip thời gian thực DS1307 để đo và đếm thời gian

-Sử dụng các đèn led 7 đoạn để hiển thị thời gian

Sau đây là quá trình xây dựng bài đồ án “ lịch vạn niên điện tử ”

Trang 10

2.3 SƠ ĐỒ KHỐI

2.3.1 Sơ đồ khối tổng quan

* Vi điều khiển 89S52: Xử lý toàn bộ mọi công việc xuất nhập thời gian, hiển thị thời gian, cài đặt hệt thống báo thức Khối xử lý gồm có vi điều khiển 89S52

* Khối thời gian thực: Dùng cho việc đếm thời gian thực, nhập xuất thời gian thực: thứ ngày tháng năm, giờ phút giây Khối thời gian thực gồm có chip thời gian thực

* Khối tạo xung dao động: Dùng để tạo xung dao động cho vi điều khiển 89S52 và

KHỐI THỜI GIAN THỰC

KHỐI ĐIỀU

CHỈNH

VI ĐIỀU KHIỂN 89S52

Trang 11

2.3.2.1 Khối tạo xung dao động

2.3.2.1.1 Khối tạo xung dao động cho vi điều khiển 89S52

Sử dụng khối tạo xung dao động bằng thạch anh Đây chính là nguồn cung cấp xung đồng hồ cho vi điều khiển 89S52 và IC thời gian thực DS 1307 Hai chân XTAL1 (chân 19) và XTAL2 (chân 18) ở vi điều khiển 89S52 được mắc với mạch dao động thạch anh bên ngoài Các điện trở C1 và C2 là cần thiết khi mắc mạch dao động thạch anh cho 89S52 Sơ đồ mạch như sau :

Hình 2.2 Sơ đồ khối tạo giao động cho 89S52

Trang 12

2.3.2.1.2 Giao tiếp DS 1307 với khối giao động

Hình 2.3 Sơ đồ khối tạo xung dao động cho DS1307

IC thời gian thực DS 1307 kết nối với khối tạo xung dạo động qua 2 chân X1

và X2 như hình vẽ:

Trang 13

2.3.2.3 Khối hiển thị

Giao tiếp vi đều khiển với led 7 đoạn

Hình 2.4 Sơ đồ giao tiếp vi điều khiển với led 7 đoạn

Vi điều khiển 89S52 giao tiếp với led 7 đoạn theo kiểu truyền nối tiếp Sử dụng tất cả các chân 89S52 xuất ra led 7 đoạn Thông qua trở băng

Trang 14

2.3.2.4 Khối điều chỉnh

Hình 2.5 Khối điều chỉnh

Sử dụng các chân P1.6, P1.7 và P7.0 của vi điều khiển 89S52 để tạo nút bấm với các chứa năng sau:

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

DOWN: Điều chỉnh giảm

UP/AL: Điều chỉnh tăng

UP/AL: Còn có chức năng chuyển sang chế độ điều chỉnh hẹn giờ

Trang 15

2.4 SƠ ĐỒ MẠCH NGUYÊN LÝ

Sơ đồ nguyên lý của mạch như sau

Trang 16

Hình 2.6 Sơ đồ mạch nguyên lý

2.5 CÁC LINH KIỆN SỬ DỤNG TRONG MẠCH

2.5.1.Giới thiệu về vi điều khiển 89S52

2.5.1.1 Tổng Quan Về 89S52

AT89S52 là họ IC vi điều khiển do hãng Intel sản xuất Các sản phẩm AT89S52 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 hệ thống điều khiển

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

Trang 17

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

Các đặc điểm của chip AT89S52 được tóm tắt như sau:

 8 KByte bộ nhớ có thể lập trình 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

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

 64 KB vùng nhớ mã ngoài

 64 KB vùng nhớ dữ liệu ngoại

 4 s cho hoạt động nhân hoặc chia

Trang 18

Hình 2.7 Sơ đồ khối của AT89S52

Trang 19

khác nhau, chẳng hạn như hai hàng

chân DIP (Dual In-Line Pakage),

dạng vỏ dẹt vuông QPF (Quad Flat

Pakage) và dạng chip không có chân

đỡ LLC (Leadless Chip Carrier) thì

chúng đều có 40 chân cho các chức

năng khác nhau như vào ra I/O, đọc

RD, ghi WR, địa chỉ, dữ liệu và

ngắt Cần phải lưu ý một số hãng

cung cấp một phiên bản 8051 có 20 chân với số cổng vào ra ít hơn cho các ứng dụng yêu cầu thấp hơn Tuy nhiên vì hầu hết các nhà phát triển sử dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập trung mô tả phiên bản này

2.5.1.2.2 Chức năng các chân 89S52

Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7) Port 0 có 2 chức năng: trong các

thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7) Port 1 là port IO dùng cho giao tiếp

với thiết bị bên ngoài nếu cần

Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có tác dụng

kép 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

bị dùng bộ nhớ mở rộng

Hình 2.8 Sơ đồ chân 89S52

Trang 20

Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có tác dụng kép

Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc tính đặc biệt của 89S52 như ở bảng sau:

Bit Tên Chức năng chuyển đổi

WR

RD

Ngõ vào dữ liệu nối tiếp

Ngõ xuất dữ liệu nối tiếp

Ngõ vào ngắt cứng thứ 0

Ngõ vào ngắt cứng thứ 1

Ngõ vào TIMER/ COUNTER thứ 0

Ngõ vào của TIMER/ COUNTER thứ 1

Tín hiệu ghi dữ liệu lên bộ nhớ ngoài

Tín hiệu đọc bộ nhớ dữ liệu ngoài

PSEN (Program store enable):

PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình

mở rộng và thường được nối đến chân OE của Eprom cho phép đọc các byte

mã lệnh

PSEN ở mức thấp trong thời gian 89S52 lấy lệnh Các mã lệnh của chương

trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 89S52 để giải mã lệnh Khi 89S52 thi hành chương trình trong ROM nội, PSEN ở mức cao

ALE (Address Latch Enable):

Trang 21

Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và

dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt

Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động

EA (External Access): Tín hiệu vào EA (chân 31) thường được mắc lên mức 1

hoặc mức 0 Nếu ở mức 1, 89S52 thi hành chương trình từ ROM nội Nếu ở mức 0, 89S52 thi hành chương trình từ bộ nhớ mở rộng Chân EA được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89S52

RST (Reset): Khi ngõ vào tín hiệu này đưa lên

mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên

trong được nạp những giá trị thích hợp để khởi

động hệ thống Khi cấp điện mạch phải tự động

nối thêm thạch anh và các tụ Tần số thạch anh

tùy thuộc vào mục đích của người sử dụng, giá

trị tụ thường được chọn là 33p

Hình 2.9 Nối chân Reset

Hình 2.10 Ngõ tạo xung dao động

Trang 22

2.5.1.2.3 Tổ chức bộ nhớ bên trong 89S52

Bộ nhớ trong 89S52 bao gồm ROM và RAM RAM trong 89S52 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

AT89S52 có bộ nhớ được tổ chức 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 có thể chứa bên trong 89S52 nhưng 89S52 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu bên ngoài

Trang 23

Hình 2.11 Bộ nhớ bên trong 89S52

Trang 24

RAM bên trong AT89S52 đượ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

2.5.1.2.5 RAM có thể định địa chỉ bit

Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM đa dụng (truy xuât mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh xử

lý bit

2.5.1.2.6 Các bank thanh ghi

Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h – 07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh Các bank thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7 Sau khi khởi động thì

hệ thống bank 0 được chọn sử dụng

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 Viêc thay đổi bank thanh ghi được thực hiện thông qua thanh ghi từ trạng thái chương trình (PSW)

Trang 25

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

Các thanh ghi trong 89S52 đượ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ộ đế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, 89S52 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 0FFH

Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:

2.5.1.2.7.1 Thanh ghi trạng thái chương trình (PSW: Program Status Word)

BIT SYMBOL ADDRESS DESCRIPTION

00=Bank 0; address 00H07H 01=Bank 1; address 08H0FH 10=Bank 2; address 10H17H 11=Bank 3; address 18H1FH

Trang 26

Chức năng từng bit trạng thái chương trình

- Cờ Carry CY (Carry Flag):

Cờ nhớ thường nó được dùng cho các lệnh toán học: C =1 nếu phép toán cộng

có sự tràn hoặc phép trừ có mượn và ngược lại C = 0 nếu phép toán cộng không tràn

và phép trừ không có mượn

- Cờ Carry phụ AC (Auxiliary Carry Flag):

Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0AH - 0FH Ngược lại AC = 0

- Cờ 0 (Flag 0):

Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng

- Những bit chọn bank thanh ghi truy xuất:

RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xóa sau khi reset

hệ thống và được thay đổi bởi phần mềm khi cần thiết

Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là Bank 0, Bank1, Bank2 và Bank3

Trang 27

Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối

tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu

2.5.1.2.7.2 Thanh ghi TIMER

Vi Điều Khiển 89S52 có 3 timer 16 bit, mỗi timer có bốn cách làm việc

Người ta sử dụng các timer để:

o Định khoảng thời gian

o Đếm sự kiện

o Tạo tốc độ baud cho port nối tiếp trong 89S52

Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những 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 như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra

Trang 28

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 độ rộng xung)

2.5.1.2.7.3 Thanh ghi ngắt (INTERRUPT)

Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác

Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng

vi điều khiển Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện đó trong khi một chương trình khác đang thực thi

- Tổ chức ngắt của 89S52:

Có 5 nguồn ngắt ở 89S52: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port

nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phép từng cái một bằng phần mềm Mức độ ưu tiên của các ngắt được lưu trong thanh ghi IP (Interrupt Priority) hay nói cách khác thanh ghi IP cho phép chọn mức

ưu tiên cho các ngắt (giá trị thanh ghi IP khi reset là 00h)

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

IP.5 ET2 BDH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại

timer 2 IP.4 ES BCH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại

cổng nối tiếp

IP.3 ET1 BBH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại

Trang 29

timer 1

IP.2 EX1 BAH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại

ngắt ngoài 1 IP.1 ET0 B9H Chọn mức ưu tiên cao (=1) hay thấp (=0) tại

timer 0 IP.0 EX0 B8H Chọn mức ưu tiên cao (=1) hay thấp (=0) tại

 Nếu chương trình của một ngắt có mức ưu tiên thấp đang chạy mà có một ngắt xảy ra với mức ưu tiên cao hơn thì chương trình này tạm dừng để chạy một chương trình khác có mức ưu tiên cao hơn

- Cho phép và cấm ngắt:

Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE (Interrupt Enable: cho phép ngắt) ở địa chỉ A8H

Trang 30

- Các cờ ngắt:

Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên mức cao để xác nhận ngắt

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

IE.7 EA AFH Cho phép / Cấm toàn bộ

IE.5 ET2 ADH Cho phép ngắt từ Timer 2 (8052)

IE.4 ES ACH Cho phép ngắt port nối tiếp

IE.3 ET1 ABH Cho phép ngắt từ Timer 1

IE.2 EX1 AAH Cho phép ngắt ngoài 1

IE.1 ET0 A9H Cho phép ngắt từ Timer 0

IE.0 EX0 A8H Cho phép ngắt ngoài 0

Tóm tắt thanh ghi IE

Trang 31

31

Trang 32

Bên ngoài 1 IE1 0013H

ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như RAM DS1307 được đọc và ghi thông qua giao diện nối tiếp I2C nên cấu tạo bên ngoài rất đơn giản DS1307 xuất hiện ở 2 gói SOIC và DIP có 8 chân như trong hình sau

Trang 33

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

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

động cho chip

- 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ú ý: 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: Đây là chân tạo ngõ ra xung vuông 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 bit của thanh ghi Control Register (địa chỉ 0x07)

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

chúng ta sẽ tìm hiểu sau

Trang 34

2.5.2.1.2 Cấu tạo bên trong DS1307

Hình 2.13 Sơ đồ khối bên trong chip DS1307

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

“cứng” nên chúng ta không có quá nhiều việc khi sử dụng DS1307 Sử dụng DS1307 chủ yếu là ghi và đọc các thanh ghi của chip này Vì thế cần hiểu rõ 2 vấn

Trang 35

Hình 2.14 Cấu tạo 7 thanh ghi đầu tiên

tháng (MONTH) và năm (YEAR) Việc ghi giá trị vào 7 thanh ghi này tương đương với việc “cài đặt” thời gian khởi động cho RTC Việc đọc giá từ 7 thanh ghi là quá trình đọc thời gian thực mà RTC tạo ra

Vì 8 thanh ghi đầu tiên là quan trọng nhất trong hoạt động của DS1307, chúng ta sẽ khảo sát các thanh ghi này một cách chi tiết Trước hết hãy quan sát tổ

chức theo từng bit của các thanh ghi này trong hình sau:

Trang 36

Chú ý là tất cả các giá trị thời gian lưu trong các thanh ghi theo dạng BCD (Binary-Coded Decimal)

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 nên chỉ cần 3 là đủ Bit cao nhất (bit thứ 7) trong thanh ghi này là 1 bit đ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ỉ 0x01h, 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 thứ 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

chip DS1307 Thanh ghi này có địa chỉ 0x02h 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ờ là: 12h và 24h giờ, vì vậy bit thứ 6 được dùng để xác lập hệ thống giờ Nếu bit thứ 6 = 0 thì hệ thống 24h được chọn, khi đó 2 bit thứ 5 và thứ 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 nên cần 2 bit để mã hóa Nếu bit thứ 6 = 1 thì hệ thống 12h được chọn Với trường hợp này chỉ có 1 bit thứ 4 dùng mã hóa chữ số hàng chục của giờ, bit thứ 5 chỉ buổi trong ngày (AM hoặc PM) Bit thứ 5 = 0 là AM và bit thứ

5 = 1 là PM Bit thứ 7 luôn bằng 0

Hình 2.15 Tổ chức bộ nhớ trong DS1307

Trang 37

Thanh ghi thứ (DAY – ngày trong tuần): nằm ở địa chỉ 0x03h Thanh ghi

DAY chỉ mang giá trị từ 1 đến 7 tương ứng từ Chủ nhật đến thứ 7 trong 1 tuần Vì thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa Các bit còn lại luôn bằng 0

Thanh ghi ngày (DATE – ngày trong tháng): nằm ở địa chỉ 0x04h Thanh

ghi DATE mang giá trị từ 1 đến 31, chỉ có 5 bit đầu tiên là có nghĩa Các bit còn lại luôn bằng 0

Thanh ghi tháng (MONTH): nằm ở địa chỉ 0x05h Thanh ghi MONTH

mang giá trị từ 1 đến 12, chỉ có 4 bit đầu tiên là có nghĩa Các bit còn lại bằng 0

Thanh ghi năm (YEAR) : nằm ở địa chỉ 0x06h Thanh ghi YEAR mang giá

trị từ 0 đến 99 Chip DS1307 chỉ dùng cho 100 năm, nên giá trị năm chỉ có 2 chữ số, phần đầu của năm do người dùng tự thêm vào

Thanh ghi điều khiển (CONTROL REGISTER): có địa chỉ là 0x07h, thanh

ghi CONTROL REGISTER được dùng để điều khiển tần số xung vuông ở ngỏ ra SQW/OUT Giá trị các bít trong thanh ghi CONTROL REGISTER được biểu diển như sau:

Bit 7_Output Control (OUT): dùng để kiểm soát mức logic tại SQW/OUT Bit 4_Square-Wave Enable (SQWE): bit này được set lên bằng 1 để tạo dao

động ở đầu ra

Bits 1 and 0_ Rate Select (RS[1:0]): 2 bit này dùng điều khiển tần số dao

động ở ngỏ ra SQW/OUT, với 4 tần số được chọn như sau:

Trang 38

2.5.2.2 Khái quát giao diện I2C

I2C là viết tắc của từ Inter - Integrated Circuit là một chuẩn truyền thông nối tiếp đồng bộ do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm 1990

Các khái niệm cơ bản trong giao diện I2C:

 Master (chip chủ): là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị cần giao tiếp và tạo xung giữ nhịp trên đường SCL

 Slave (chip tớ): là chip có một địa chỉ cố định, được gọi bởi Master và phục

vụ yêu cầu từ Master

 SDA (Serial Data): là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ hay dữ liệu đều được truyền trên đường này theo thứ tự từng bit một Chú ý

là trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền đi trước nhất

 SCL (Serial Clock): là đường xung giữ nhịp nối tiếp I2C là chuần truyền thông nối tiếp đồng bộ, cần có 1 đường tạo xung giữ nhịp cho quá trình truyền/nhận,

cứ mỗi xung trên đường giữ nhịp SCL, một bit dữ liệu trên đường SDA sẽ được lấy mẫu (sample) Dữ liệu nối tiếp trên đường SDA được lấy mẫu khi đường SCL ở mức cao trong một chu kỳ giữ nhịp, vì thế đường SDA không được đổi trạng thái khi SCL ở mức cao (trừ điều kiện START và STOP) Chân SDA có thể được đổi trạng thái khi SCL ở mức thấp

Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL) SDA là đường truyền dữ liệu theo 2 hướng (từ master đến slave và ngược lại), còn SCL là đường truyền xung đồng hồ chỉ truyền theo một hướng (từ master đến slave)

Trang 39

Trong một giao diện I2C thì có một thiết bị là chủ (master) và một thiết bị là tớ (slave) Tại sao lại có sự phân biệt này? Đó là vì trên một giao diện I2C thì quyền điều khiển thuộc về thiết bị chủ Thiết bị chủ nắm vai trò tạo xung đồng bộ cho toàn

hệ thống, khi giữa 2 thiết bị chủ/tớ giao tiếp thì thiết bị chủ có nhiệm vụ tạo ra xung đồng bộ và quản lý đến thiết bị tớ trong suốt quá trình giao tiếp Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trong quá trình giao tiếp

Một giao diện I2C có thể hoạt động ở nhiều chế độ khác nhau:

- Một chủ một tớ (one master – one slave)

- Một chủ nhiều tớ (one master – multi slave)

- Nhiều chủ nhiều tớ (Multi master – multi slave)

Vài điều kiện cần biết khi thiết lập một giao tiếp I2C:

- Điều kiện START (gọi tắt là S): điều kiện START được thiết lập khi có một sự chuyển đổi trạng thái từ cao xuống thấp tại SDA, khi SCL đang ở mức cao (mức cao là 1, mức thấp là 0)

- Điều kiện STOP (gọi tắt là P): điều kiện STOP được thiết lập khi có một

sự chuyển đổi trạng thái từ thấp lên cao tại SDA, khi SCL đang ở mức cao

- Điều kiện REPEAT START (bắt đầu lặp lại): khoảng giữa điều kiện START và STOP là khoảng bận của đường truyền, các master khác không tác động được vào đường truyền trong khoảng này Trường hợp sau khi kết thúc quá trình truyền/nhận mà master không gởi điều kiện STOP lại gởi thêm 1 điều kiện START gọi là REPEAT START Khả năng này thường được dùng khi master muốn lấy dữ liệu liên tiếp từ các Slaves

Trang 40

- Bit ACK: dùng để báo hiệu dữ liệu đã được nhận, bit ACK được tạo ra tại thời điểm xung clock thứ 9 bằng cách kéo chân SDA xuống mức thấp

- Bit NACK: dùng để báo hiệu dữ liệu đã bị lỗi hoặc byte truyền cuối cùng, bit NACK cũng được tạo ra tại thời điểm xung clock thứ 9 bằng cách kéo chân SDA lên mức cao

Hình 2.18 Bit ACK/NACK trong giao diện I2C

Định dạng dữ liệu truyền:

Dữ liệu được truyền trên bus I2C theo từng bit, bit dữ liệu được truyền

đi tại mỗi sườn lên của xung đồng hồ trên đường dây SCL, quá trình thay đổi bit dữ

Hình 2.17 Mô tả điều kiện START, STOP và REPEAT

Ngày đăng: 25/04/2013, 20:40

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[5] KS. Trương Văn Tám _ Giáo trình MẠCH TƯƠNG TỰ . [6] http://alldatasheet.com/ Link
[1] Th.Phạm Hùng Kim Khánh _ Giáo trình Vi Điều Khiển Khác
[2] Th.Trần Nhật Khải Hoàn, KS.Trần Hữu Danh. _ Tài liệu hướng dẫn Thực Tập Vi Điều Khiển Khác
[3] Th.Lương Văn Sơn, KS.Nguyễn Khắc Nguyên. _ Giáo trình MẠCH XUNG Khác
[4] Th.Nguyễn Trung Lập _ Giáo trình MẠCH SỐ Khác

HÌNH ẢNH LIÊN QUAN

2.3. SƠ ĐỒ KHỐI - Thiết kế  lịch vạn niên điện tử
2.3. SƠ ĐỒ KHỐI (Trang 10)
Hình 2.2. Sơ đồ khối tạo giao động cho 89S52 - Thiết kế  lịch vạn niên điện tử
Hình 2.2. Sơ đồ khối tạo giao động cho 89S52 (Trang 11)
Hình 2.3 Sơ đồ khối tạo xung dao động cho DS1307 - Thiết kế  lịch vạn niên điện tử
Hình 2.3 Sơ đồ khối tạo xung dao động cho DS1307 (Trang 12)
Hình 2.4 Sơ đồ giao tiếp vi điều khiển với led 7 đoạn - Thiết kế  lịch vạn niên điện tử
Hình 2.4 Sơ đồ giao tiếp vi điều khiển với led 7 đoạn (Trang 13)
Hình 2.5 Khối điều chỉnh - Thiết kế  lịch vạn niên điện tử
Hình 2.5 Khối điều chỉnh (Trang 14)
2.4. SƠ ĐỒ MẠCH NGUYÊN LÝ - Thiết kế  lịch vạn niên điện tử
2.4. SƠ ĐỒ MẠCH NGUYÊN LÝ (Trang 15)
Hình 2.7 Sơ đồ khối của AT89S52 - Thiết kế  lịch vạn niên điện tử
Hình 2.7 Sơ đồ khối của AT89S52 (Trang 18)
Hình 2.8 Sơ đồ chân 89S52 - Thiết kế  lịch vạn niên điện tử
Hình 2.8 Sơ đồ chân 89S52 (Trang 19)
Hình 2.11  Bộ nhớ bên trong 89S52 - Thiết kế  lịch vạn niên điện tử
Hình 2.11 Bộ nhớ bên trong 89S52 (Trang 23)
Hình 2.13 Sơ đồ khối bên trong chip DS1307 - Thiết kế  lịch vạn niên điện tử
Hình 2.13 Sơ đồ khối bên trong chip DS1307 (Trang 34)
Hình 2.14 Cấu tạo 7 thanh ghi đầu tiên - Thiết kế  lịch vạn niên điện tử
Hình 2.14 Cấu tạo 7 thanh ghi đầu tiên (Trang 35)
Hình 2.18 Bit ACK/NACK trong giao diện I2C - Thiết kế  lịch vạn niên điện tử
Hình 2.18 Bit ACK/NACK trong giao diện I2C (Trang 40)
Hình 2.17 Mô tả điều kiện START, STOP và REPEAT - Thiết kế  lịch vạn niên điện tử
Hình 2.17 Mô tả điều kiện START, STOP và REPEAT (Trang 40)
Hình 2.30 Dữ liệu được truyền trên giao diện I2C - Thiết kế  lịch vạn niên điện tử
Hình 2.30 Dữ liệu được truyền trên giao diện I2C (Trang 41)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w