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

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

106 1,4K 5
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ử
Tác giả Nguyễn Văn Bình
Người hướng dẫn TS. Lương Vinh Quốc Danh
Trường học Trường Đại Học Cần Thơ
Chuyên ngành Điện Tử Viễn Thông
Thể loại Luận Văn Tốt Nghiệp
Năm xuất bản 2010
Thành phố Cần Thơ
Định dạng
Số trang 106
Dung lượng 0,96 MB

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

Nội dung

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

Trang 1

TRƯỜNG ĐẠI HỌC CẦN THƠ

MSSV: 1071075 Lớp: Điện Tử Viễn Thông 2.K33

Cần Thơ −−−− 2010

Trang 2

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

Trang 3

LỜI CẢM TẠ

Đầu tiên em xin gửi lời cảm ơn đến Ban Giám Hiệu trường Đại Học Cần Thơ

đã cho em một môi trường học tập tốt, cũng như là tạo nhiều điều kiện thuận lợi để

em có thể phát huy được khả năng của mình

Em xin chân thành cảm ơn đến quý Thầy/Cô, đặc biệt là quý Thầy/Cô trong

bộ môn Điện Tử -Viễn Thông thuộc khoa Công Nghệ trường Đại Học Cần Thơ đã

tận tình chỉ dạy và truyền đạt những kiến thức quý báu để em có thể hoàn thành

luận án này, đồng thời đó cũng là một hành trang đáng quý để em có thể tiếp bước

trên con đường sự nghiệp sau này

Em xin bài tỏ lòng biết ơn sâu sắc đối với thầy Lương Vinh Quốc Danh là

người tận tình hướng dẫn và động viên em trong suốt thời gian em thực hiện luận

văn tốt nghiệp này

Để hoàn thành luận văn tốt nghiệp này cũng có sự đóng góp không nhỏ của

các bạn Tôi xin được gởi lời cảm ơn đến tất cả các bạn

Ngoài ra tôi cũng xin gửi lời cảm ơn đến tất cả những người thân xung quanh

đã giúp đỡ về vật chất và tinh thần để tôi có thể hoàn thành xong luận văn tốt

nghiệp này

Cần Thơ ngày tháng năm 2010

Sinh viên thực hiện

Nguyễn Văn Bình

Trang 4

TÓM TẮT ĐỀ TÀI

Lịch Vạn Niên Điện Tử thiết kế dựa trên sự kết hợp giữa IC thời gian

thực (DS1307) và vi điều khiển 89S52 với bộ điều khiển sử dụng remote hồng

ngoại Ngoài ra mạch còn sử dụng cảm biến nhiệt độ (LM35) cùng với bộ biến đổi

từ tương tự sang số (ADC0804) để đo nhiệt độ xung quanh và hiển thị ra led 7 đoạn

Với bộ điều khiển dùng remote hồng ngoại, chúng ta có thể chọn thời gian báo thức

hoặc điều chỉnh giờ, ngày, tháng… rất dễ dàng và thuận tiện (giống như sử dụng

Romote để điều khiển một chiếc TV vậy!) Mạch đã thiết kế thành công, hoạt động

ổn định với độ chính xác cao

ABSTRACT

Electronic perpetual calendar designed based on a combination of

real-time IC (DS1307) and 89S52 microcontroller with controller using infrared remote

In addition, it uses a temperature sensor circuit ( LM35) with the transformation

from analog to digital (ADC0804) to measure ambient temperature and the LED 7

segment display With the controller using infrared remote, we can select the alarm

time or adjust hours, days, months very easy and convenient(like Romote used

to control a TV too!) The circuit was successfully designed, stable operation with

high accuracy

Key word: Infrared remote, measure temperature and calendar

Title:Electronic perpetual calendar

Trang 5

MỤC LỤC

LỜI CẢM TẠ III

TÓM TẮT ĐỀ TÀI IV

ABSTRACT IV

MỤC LỤC V

CHƯƠNG I: MỞ ĐẦU 1

I KHÁI QUÁT VẤN ĐỀ 1

II LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 1

III MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI 2

CHƯƠNG II: CƠ SỞ LÝ THUYẾT 3

A ĐO NHIỆT ĐỘ 3

I.GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52 3

1 Tổng quan về 89S52 3

2 Mô tả chân 89S52 5

2.1 Sơ đồ chân 89S52 5

2.2 Chức năng của các chân 89S52 5

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

3.1 RAM đa dụng 9

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

3.3 Các bank thanh ghi 9

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

3.4.1 Thanh ghi trạng thái chương trình (PSW: Program Status Word) 10 3.4.2 Thanh ghi TIMER 12

3.4.3 Thanh ghi ngắt (INTERRUPT) 12

II SƠ LƯỢC VỀ CẢM BIẾN NHIỆT LM35D 16

III KHÁI QUÁT VỀ ADC0804 16

1 Mô tả chân ADC0804 16

2 Tổ chức bên trong ADC0804 19

2.1 Quá trình chuyển đổi của chip ADC0804 19

2.1 Quá trình chuyển đổi của chip ADC0804 20

2.2 Quá trình đọc dữ liệu từ chip ADC0804 20

IV GIỚI THIỆU IC CHỐT 74HC374 21

1 Mô tả chân IC 74HC374 21

2 Tổ chức bên trong IC74HC374 21

B ĐỒNG HỒ THỜI GIAN THỰC VÀ BỘ ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI 22

I ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI 22

1 Hồng ngoại là gì? 22

2 Cách tạo ra hồng ngoại 22

3 Cách thu tín hiệu hồng ngoại 22

4 Khảo sát tín hiệu hồng ngoại phát ra từ Remote SONY 24

II ĐỒNG HỒ THỜI GIAN THỰC 26

Trang 6

1 Tổng quan về DS1307 26

1.1 Sơ đồ chân DS1307 26

1.2 Cấu tạo bên trong DS1307 27

2 Khái quát giao diện I2C 31

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

3.1 Mode Data Write (chế độ ghi dữ liệu) 34

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

CHƯƠNG III: THIẾT KẾ PHẦN CỨNG 38

A ĐO NHIỆT ĐỘ 38

I SƠ ĐỒ VÀ CHỨC NĂNG TỪNG KHỐI 38

1 Sơ đồ khối 38

2 Chức năng của từng khối 38

2.1 Cảm biến nhiệt và khuếch đại 38

2.2 Biến đổi ADC và khối xử lý trung tâm (CPU_1) 38

2.3 Khối hiển thị thứ 1 sử dụng LED 7 đoạn 39

2.4 Hiệu ứng dùng LED đơn 39

II SƠ ĐỒ CHI TIẾT VÀ NGUYÊN TẮT HOẠT ĐỘNG 39

1 Sơ đồ chi tiết 39

1.1.Cảm biến nhiệt và bộ khuếch đại 39

1.2 Biến đổi ADC và khối xử lý trung tâm (CPU_1) 40

1.3 Khối hiển thị thứ 1 sử dụng LED 7 đoạn 42

1.4 Hiệu ứng dùng LED đơn 43

2 Nguyên tắt hoạt động 44

B ĐỒNG HỒ THỜI GIAN THỰC VÀ BỘ ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI 45

I SƠ ĐỒ VÀ CHỨC NĂNG TỪNG KHỐI 45

1 Sơ đồ khối 45

2 Chức năng của từng khối 45

2.1 Khối thời gian thực 45

2.2 Khối phát hồng ngoại 45

2.3 Khối thu hồng ngoại. 46

2.4 Khối xử lý trung tâm (CPU_2) 46

2.5 Khối âm thanh và hiển thị thứ 2 46

II.SƠ ĐỒ CHI TIẾT VÀ NGUYÊN TẮT HOẠT ĐỘNG 46

1 Sơ đồ chi tiết 46

1.1 Khối thời gian thực (DS1307) 46

1.2 Khối thu hồng ngoại 47

1.3 Khối xử lý trung tâm (CPU_2) 47

1.4 Khối âm thanh 48

1.5 Khối hiển thị thứ 2 48

2 Nguyên tắt hoạt động 50

CHƯƠNG III: THIẾT KẾ PHẦN MỀM 51

A ĐO NHIỆT ĐỘ 52

Trang 7

I LƯU ĐỒ VÀ GIẢI THUẬT CHƯƠNG TRÌNH 52

1 Giải thuật 52

1.1 Giải thuật chương trình chính 52

1.2 Giải thuật chương trình con “ TRUY_CAP_ADC” 52

2 Lưu đồ 52

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

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

2.2.1 Lưu đồ chương trình con “ TRUY_CAP_ADC” 53

2.2.2 Lưu đồ chương trình con “HIENTHI_1” 54

II PHẦN MỀM DO NHIỆT ĐỘ (CODE_1) 55

B ĐỒNG HỒ THỜI GIAN THỰC VÀ BỘ ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI 56

I LƯU ĐỒ VÀ GIẢI THUẬT CHƯƠNG TRÌNH 56

1 Giải thuật 56

1.1 Giải thuật chương trình chính 56

1.2 Giải thuật chương trình ngắt “GIAI_MA_REMOTE_SONY” 56

1.3 Giải thuật chương trình con “WRITE_CLOCK” 57

1.4 Giải thuật chương trình con “READ_CLOCK” 58

2 Lưu đồ 58

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

2.2 Lưu đồ chương trình ngắt “GIAI_MA_REMOTE_SONY” 59

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

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

2.3.1 Lưu đồ chương trình con “WRITE_CLOCK” 62

2.3.2 Lưu đồ chương trình con “READ_CLOCK” 62

2.3.2 Lưu đồ chương trình con “READ_CLOCK” 63

2.3.3 Lưu đồ chương trình con ghi 1 byte vào DS1307“SEND_BYTE” 64 2.3.4 Lưu đồ chương trình con đọc 1 byte từ DS1307“READ_BYTE” 65 2.3.5 Lưu đồ chương trình con “ALARM_CLOCK_TEST” 66

2.3.6 Lưu đồ chương trình con “TAT_MO_CHUONG” 67

2.3.7 Lưu đồ chương trình con “HIEU_UNG_CHINH” 68

2.3.8 Lưu đồ chương trình con “HIENTHI_2” 69

II PHẦN MỀM ĐỒNG HỒ THỜI GIAN THỰC VÀ BỘ ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI (CODE_2) 70

CHƯƠNG IV: KẾT LUẬN VÀ ĐỀ NGHỊ 71

I KẾT LUẬN 71

II ĐỀ NGHỊ 74

TÀI LIỆU THAM KHẢO 75

PHỤ LỤC 76

1 Phần mềm đo nhiệt độ (CODE_1) 76

2 Phần mềm đồng hồ số và điều khiển dùng remote hồng ngoại (CODE_2) 80

3 Hướng dẫn sử dụng bộ điều khiển dùng Remote SONY 98

4 Code word của remote SONY 99

Trang 8

CHƯƠNG I: MỞ ĐẦU

I KHÁI QUÁT VẤN ĐỀ

Trong giai đoạn hiện nay với sự phát triển vượt bật của công nghệ Nano

hàng loạt IC mới được chế tạo Những IC này thông minh hơn rất nhiều so với các

IC trước và đặc biệt là chúng ta có thể ghi/xóa dữ liệu vào một cách dể dàng Vì thế

nó được sử dụng trong nhiều thiết bị Điện - Điện Tử và ngày càng thể hiện được

bản chất ưu việt của mình Điển hình là dòng IC 8051/8052

Với sự ra đời của dòng IC mới đã làm thúc đẩy sự phát triển của nhũng IC

thời gian thực như DS1307, DS12887… Song song đó truyền dữ liệu không dây

cũng bắt phát triển với nhiều kiểu truyền khác nhau và phức tạp, trong tất cả các

kiểu truyền đó thì truyền dữ liệu bằng tia hồng ngoại được xem là đơn giản nhất

Cùng với sự phát triển của khoa học kỹ thuật đã góp phần nâng cao đời sống

của con người Cũng chính vì thế mà 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ý

Xuất phát từ thực tiển này em đã đi đến quyết định “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

II LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ

Đề tài này trước khi tôi thực hiện đã có một số sinh viên trường đại học

Bách Khoa Thành Phố Hồ Chí Minh thực hiện nhưng kết quả chưa được như

mong muốn vì mạch chạy không ổn định và thường hay bị “treo” Hơn nửa họ

chỉ “Thiết kế Lịch Vạn Niên Điện Tử” với những công tắt để điều chỉnh, không

dùng remote hồng ngoại để điểu chỉnh Chính vì thế tôi quyết định chọn đề tài này

và kết hợp thêm bộ điều khiển từ xa dùng remote hồng ngoại Vì tôi mong muốn

tạo ra một thiết bị với nhiều thuận lợi hơn cho người dùng và độ tin cậy cao

Trang 9

III MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI

Trong luận án này tôi 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 để tạo thành giao diện I2C, 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 1 phút, đồng thời khi

có tín hiệu phát ra từ remote hồng ngoại thì 89S52 bắt đầu giãi mã tín hiệu này, sau

khi giải mã 89S52 ghi dữ liệu nhận được vào DS1307 Ngoài ra mạch còn sử dụng

cảm biến nhiệt (LM35), ngỏ ra của cảm biến này được đưa qua bộ biến đổi tương tự

sang số (ADC0804), dữ liệu được 89S52 đọc ra từ ADC0804 và hiển thị kết quả ra

led 7 đoạn

Từ đây có thể suy ra 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

♦ Đo nhiệt độ và hiển thị ra led 7 đoạn

♦ Bộ cài đặt thời gian được sử dụng bằng remote hồng ngoại, xác xuất lỗi

khi ấn remote là thấp nhất

♦ 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

♦ Giá thành sản phẩm không quá đắc

Dựa vào yêu cầu của đề tài tôi đã phân ra thành 2 khối lớn:

o Khối A: Đo nhiệt độ và hiển thị kết quả ra led 7 đoạn

o Khối B: Đồng hồ thời gian thực và bộ điều khiển từ xa dùng remote hồng

ngoại

Trang 10

CHƯƠNG II: CƠ SỞ LÝ THUYẾT

I.GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52

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

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

Trang 11

• 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

Sơ đồ khối của AT89S52

Trang 12

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.2 Chức năng của 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

Trang 13

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

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

Trang 14

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

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 15

Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:

Địa chỉ

Địa chỉ

byte

Trang 16

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

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

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

3.1 RAM đa dụng

RAM đa dụng có địa chỉ từ 30h – 7Fh có thể truy xuất mỗi lần 8 bit bằng cách

dùng chế độ định địa chỉ trực tiếp hay gián tiếp

Các vùng địa chỉ thấp từ 00h – 2Fh cũng có thể sử dụng cho mục đích như

trên, ngoài các chức năng đặc biệt được đề cập ở phần sau

3.2 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

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

3.4 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

Trang 17

đế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:

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

PSW4 RS1 D4H Register Bank Select 1

PSW.3 RS0 D3H Register Bank Select 0

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

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

Trang 18

- 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

- Cờ tràn OV (Over Flag):

Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn toán học

- Bit Parity (P):

Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẵn với

thanh ghi A Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn chẵn

Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1 trong A và P tạo

Trang 19

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

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

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)

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

Trang 20

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

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

ngắt ngoài 0

Tóm tắt thanh ghi IP

 Nếu 2 ngắt xảy ra đồng thời thì ngắt nào có nào có mức ưu tiên cao hơn

sẽ được phục vụ trước

 Nếu 2 ngắt xảy ra đồng thời có cùng mức ưu tiên thì thứ tự ưu tiên được

thực hiện từ cao đến thấp như sau: ngắt ngoài 0 – timer 0 – ngắt ngoài 1 – timer 1 –

cổng nối tiếp – timer 2

Trang 21

 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

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

Ngắt Cờ Thanh ghi SFR và vị trí bit

Các loại cờ ngắt

- Các vectơ ngắt:

Khi chấp nhận ngắt, giá trị được nạp vào PC gọi là vector ngắt Nó là địa chỉ

bắt đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau :

Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo

nghĩa này, nó giống ngắt: nó ngắt chương trình chính và nạp cho PC giá trị mới

Trang 23

II SƠ LƯỢC VỀ CẢM BIẾN NHIỆT LM35D

Cảm biến nhiệt LM35D là một mạch tích hợp nhận tín

hiệu nhiệt độ từ môi trường bên ngoài sau đó chuyển thành

tín hiệu điện dưới dạng dòng điện hay điện áp Dựa vào

đặc tính rất nhạy của các bán dẫn với nhiệt độ, tạo ra điện

áp hoặc dòng điện tỷ lệ thuận với nhiệt độ tuyệt đối Đo tín

hiệu điện ta biết được giá trị của nhiệt độ cần đo Sự tác

động của nhiệt độ tạo ra điện tích tự do và các lỗ trống

trong chất bán dẫn Bằng sự phá vỡ các phân tử, bứt các

electron thành dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể tạo sự xuất

hiện các lỗ trống Làm cho tỷ lệ điện tử tự do và lỗ trống tăng lên theo quy luật hàm

III KHÁI QUÁT VỀ ADC0804

1 Mô tả chân ADC0804

Chip ADC0804 là bộ chuyển đổi tương tự- số thuộc

họ ADC800 của hãng National Semiconductor Chip

này cũng được nhiều hãng khác sản xuất Chip có điện

áp nuôi +3V và độ phân giải 8 bit Ngoài độ phân giải

thì thời gian chuyển đổi cũng là một thông số quan

trọng để đánh giá bộ ADC Thời gian chuyển đổi là

thời gian mà bộ ADC cần để chuyển một đầu vào tương

tự thành một số nhị phân Đối với ADC0804 thì thời

gian chuyển đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK R (pin 19) và

CLK IN (pin 4) và không bé hơn 110µs Các chân khác có các chức năng:

Trang 24

 CS (Chip select):

Chân số 1 là chân chọn chip, đầu vào tích cực mức thấp được sử dụng để kích

hoạt chip ADC 0804 Để truy cập chip ADC thì chân này phải ở mức thấp

 RD (Read):

Chân số 2 là một tín hiệu vào, tích cực mức thấp Các bộ chuyển đổi đầu vào

tương tự thành số nhị phân và giữ nó vào một thanh ghi bên trong RD được sử

dụng để xuất dữ liệu đã được chuyển đổi tới đầu ra của ADC0804

Khi CS = 0 nếu có một xung cao xuống thấp áp đến chân RD thì dữ liệu ra dạng

số 8 bit được đưa tới chân dữ liệu (DB0- DB7)

 WR (Write):

Chân số 3 là chân vào tích cực mức thấp được dùng để báo cho ADC biết bắt

đầu quá trình chuyển đổi Khi việc chuyển đổi hoàn tất thì chân INTR được ADC

hạ xuống mức thấp

Khi CS = 0 nếu có một xung từ thấp lên cao áp đến chân WR thì quá trình

chuyển đổi được thực hiện

 CLK IN và CLK R:

CLK IN là chân vào nối tới đồng hồ ngoại được sử dụng để tạo thời gian Tuy

nhiên ADC cũng có một bộ tạo xung đồng hồ riêng Để dùng đồng hồ riêng thì các

chân CLK IN và CLK R được nối tới một tụ điện và một điện trở Khi đó tần số

được xác định bằng biểu thức:

RC

f

1 1 1

=

Trang 25

Ở đây R=10KΩ, C= 150pF suy ra tần số f = 606 kHz và thời gian chuyển đổi

là 110µs

 Ngắt INTR (Interupt):

Chân số 5 là chân tích cực mức thấp Bình thường chân này ở trạng thái cao và

khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ kiệu

chuyển đổi sẵn sàng để lấy đi Sau khi INTR xuống thấp, cần đặt CS = 0 và gửi một

xung cao xuống thấp tới chân RD để đưa dữ liệu ra

 V in (+) và V in (-):

Chân số 6 và chân số 7 đây là đầu vào tương tự vi sai, trong đó Vin = Vin(+) -

Vin(-) Thông thường Vin(-) được nối với đất và Vin(+) được dùng làm đầu vào

tương tự và sẽ được chuyển đổi về dạng số

 V cc :

Chân số 20 là chân nguồn +5V Chân này còn được dùng làm điện áp tham

chiếu khi đầu vào Vref/2 để hở

 V ref /2:

Chân số 9 là chân điện áp đầu vào được dùng làm điện áp tham chiếu Nếu chân

này để hở thì điện áp đầu vào tương tự cho ADC nằm trong dải 0  +5V Chân

Vref/2 được dùng để thực hiện các điện áp đầu ra khác 0  +5V

Vref/2 (V) Vin(V) Kích thước bước (mV)

2.0 0-4 4/256=15.62 1.5 0-3 3/256=11.71 1.28 0-2.56 2.56/256=10 1.0 0-2 2/256=7.81 0.5 0-1 1/256=3.90

Chú ý: Do tín hiệu ra của cảm biến nhiệt (LM35D) có độ phân giải là 10mV,

do đó ta cũng phải chọn độ phân giải của bộ biên đổi sau cho phù hợp Có nhiều

cách để lựa chọn cho phù hợp, ở mạch này tôi chọn độ phân giải của bộ biến đổi

Trang 26

Sơ đồ khối bên trong ADC0804

ADC0804 là 19.53mV Chính vì thế trước khi đưa dữ liệu qua bộ biến đổi tôi phải

cho qua mạch khuếch đại với độ khuếch đại (chọn K=1.97) để đảm bảo nhiệt độ

hiển thị ra tương đối chính xác

 D0- D7:

D0- D7 (chân 18- 11) là các chân ra dữ liệu số (D7 là bit cao nhất MSB và

D0 là bit thấp nhất LSB) Các chân này được đệm 3 trạng thái và dữ liệu đã được

chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp

2 Tổ chức bên trong ADC0804

Trang 27

2.1 Quá trình chuyển đổi của chip ADC0804

Chip ADC0804 bắt đầu thực hiện quá trình chuyển đổi khi có một sự thay

đổi mức logic từ thấp lên cao (xung cạnh lên) tại chân WR, trong khi chân CS ở

mức thấp và chân RD ở mức cao Sau khi thực hiện xong quá trình chuyển đổi thì

chân INTR được ADC0804 kéo xuống mức thấp (mức thấp là 0, mức cao là 1)

Toàn bộ quá trình chuyển đổi được mô tả như sau:

Quá trình chuyển đổi của chip ADC0804

2.2 Quá trình đọc dữ liệu từ chip ADC0804

Quá trình đọc dữ liệu được thực hiện khi có một sự thay đổi mức logic từ cao

xuống thấp (xung cạnh xuống) tại chân RD, trong khi chân CS ở mức thấp và chân

WR ở mức cao Quá trình này cũng được mô tả bằng sơ đồ sau:

Quá trình đọc dữ liệu từ chip ADC0804

Trang 28

IV GIỚI THIỆU IC CHỐT 74HC374

o OE: ngõ vào cho phép, để IC hoạt động thì

phải clear ngõ vào cho phép này (OE= 0)

o CP: ngõ vào xung clock tác động ở mức cao

2 Tổ chức bên trong IC74HC374

Sơ đồ cấu tạo của 74HC374

Bảng trạng thái của 74HC374

Ngõ vào cho

phép ( OE )

Ngõ vào xung Clock (CP)

Data inputs D0 –D7

Data outputs Q0 – Q7

Trang 29

B ĐỒNG HỒ THỜI GIAN THỰC VÀ BỘ ĐIỀU KHIỂN TỪ

XA DÙNG REMOTE HỒNG NGOẠI

I ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI

1 Hồng ngoại là gì?

Hồng ngoại là sự bức xạ năng lượng với tần số thấp hơn tần số mà mắt ta

nhìn thấy Vì vậy chúng ta không thể nhìn thấy, cũng như là không thể nghe được

chúng, nhưng chúng ta có thể cảm nhận được sức nóng của những tia hồng ngoại

khi chúng chiếu vào da

2 Cách tạo ra hồng ngoại

Cách tạo ra hồng ngoại trong điện tử rất để dàng chỉ cần một điện trở và 1

led phát hồng ngoại là đủ

Tuy nhiên nếu tạo ra hồng ngoại như trên thì khoảng cách truyền là rất ngắn

Để cải thiện vấn đề này người thiết kế thường tạo ra tần số từ 3060KHz, tốt nhất

là khoảng từ 3638KHz để truyền tín hiêu hồng ngoại ra bên ngoài Để tạo ra tần

số 36 Khz là việc khá đơn giản chỉ cần tạo một xung vuông có chu kỳ xấp xỉ 27µs

đưa vào cực nền của Transistor điều khiển 1 LED hồng ngoại truyền đi

3

VCC

R1

220 D1

PHAT_HN

Trang 30

Cách thu tín hiệu hồng ngoại

Để thu tín hiệu hồng ngoại ta sử dụng mắt

thu hồng ngoại, tuỳ thuộc vào mục đích sử dụng

mà lựa chọn phương pháp thu cho phù hợp

Vài nét về mắt thu hồng ngoại: Mắt thu

hồng ngoại là 1 IC tích hợp cả Photodiot thu

hồng ngoại, bộ khuyếch đại, bộ lọc chống nhiễu,

bộ điều chế… Mắt thu hồng ngoại có nhiều hình dạng kích thước khác nhau nhưng

cơ bản là đóng trong 1 vỏ nhựa đen chỉ cho tia hồng ngoại đi qua, có lưới bên ngoài

hoặc bên trong để chống nhiễu Mắt thu hồng ngoại (TSOP1338) gồm có 3 chân:

chân 3 OUT, chân 2 nguồn cấp điện áp Vs và 1 chân nối mass

Sơ đồ khối bên trong mắt thu hồng ngoại (TSOP1338)

Mắt thu hoạt động ở tần số điều chế 36 hoặc 38Khz tuy nhiên có thể

dùng lẫn 2 loại này với nhau

Tầm thu cho phép khoảng 10m

Khi không có sóng tới, tín hiệu ra ở mức cao

TSOP1338

Trang 31

4 Khảo sát tín hiệu hồng ngoại phát ra từ Remote SONY

Remote Sony sử dụng mã hóa theo độ rộng xung, đây là kiểu mã hoá đơn

giản Vì vậy việc giải mã được thực hiện khá dể dàng

Giản đồ thời gian của tín hiệu remote SONY

Tín hiệu sóng mang từ LED hồng ngoại của remote SONY phát ra có

tần số khoảng từ 36 Khz đến 38 Khz Sóng mang này chuyên chở tín hiệu dữ

liệu đã được mã hóa có dạng như sau:

Trang 32

Khi ta bấm một phím nào đó trên remote thì remote sẽ phát đi một loạt tín hiệu

xung có dạng như sau:

Đầu tiên xung Start sẽ được phát đi trước và có dạng là một tín hiệu mức cao

trong khoảng thời gian 1800µs Tiếp theo là các bit dữ liệu Tổng cộng có 12 bit dữ

liệu và kết thúc bằng một xung Stop ở mức thấp trong thời gian 1800µs Tiếp theo

thì tín hiệu sẽ được duy trì ở mức thấp trong khoảng thời gian 20ms và xung Start

thứ 2 sẽ được phát đi để báo hiệu cho sự tiếp tục của một khung dữ liệu thứ 2

Khung dữ liệu này hoàn toàn giống với khung dữ liệu trước đó Và cứ như thế tiếp

tục cho đến khi nào ta buông phím remote ra thì thôi

Lưu ý: Bit đầu tiên sau bit START là bit LSB, ta đặt tên nó là bit B0, bit cuối

cùng sẽ là bit MSB (B11)

B0 -B6 : 7 bit mã lệnh

B7 -B11 : 5 bit địa chỉ

Nếu sử dụng mắt nhận hồng ngoại có sẵn trên thị trường thì tất cả dạng sóng

trên sẽ bị đảo lại như sau:

Trang 33

Để thu và giải mã được tín hiệu hồng ngoại từ REMOTE SONY, thực tế ta

không cần thu toàn bộ 12 bit mã hoá Ta chỉ cần thu 7 bit COMMAND và có thể bỏ

qua 5 bit địa chỉ, bởi với cùng một điều khiển thì tất cả các nút bấm đều phát ra mã

địa chỉ như nhau, chỉ khác nhau mã lệnh Mã Address được hãng SONY sử dụng để

phân biệt giữa các MODEL REMOTE SONY khác nhau

II ĐỒNG HỒ THỜI GIAN THỰC

1 Tổng quan về DS1307

1.1 Sơ đồ chân DS1307

DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm

thời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang

sử dụng, tính bằng giây, phút, giờ…DS1307 là một sản phẩm của Dallas

Semiconductor (một công ty thuộc Maxim Integrated Products) Chip này có 7

thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm

Ngoài ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có

thể dùng như RAM DS1307 đượ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

Hai gói cấu tạo của chip DS1307

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

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

động cho chip

Trang 34

- 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

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

Sơ đồ khối bên trong chip DS1307

Trang 35

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

đề cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh ghi này thông qua

giao diện I2C

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

chỉ từ 0 đến 63 (từ 0x00h đến 0x3Fh) Tuy nhiên, thực chất chỉ có 8 thanh ghi đầu

là dùng cho chức năng “đồng hồ”, còn lại 56 thanh ghi bỏ trống có thể được dùng

chứa biến tạm như RAM nếu muốn Bảy thanh ghi đầu tiên chứa thông tin về thời

gian của đồng hồ bao gồm: giây (SECONDS), phút (MINUETS), giờ (HOURS),

thứ (DAY), ngày (DATE), tháng (MONTH) và năm (YEAR) Việc ghi giá trị vào 7

thanh ghi này tương đương với việc “cài đặ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

Tổ chức bộ nhớ trong DS1307

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

Trang 37

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

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

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

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

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ữ

liệu xảy ra khi SCL đang ở mức thấp

Quá trình truyền nhận 1 bit dữ liệu

Mỗi byte dữ liệu được truyền có độ dài là 8 bit Số byte có thể truyền trong

một lần là không hạn chế Mỗi byte được truyền đi theo sau là một bit ACK, bit có

trong số lớn nhất (MSB) sẽ được truyền đi đầu tiên, các bit kế tiếp sẽ được truyền đi

lần lượt Sau 8 xung clock thì dữ liệu đã được truyền đi, ở xung clock thứ 9 thì bit

ACK được truyền đi báo hiệu đã nhận đủ 8 bits Thiết bị truyền sau khi nhận được

bit ACK sẽ tiếp tục thực hiện quá trình truyền hoặc kết thúc

Ngày đăng: 24/04/2013, 15:48

Nguồn tham khảo

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

HÌNH ẢNH LIÊN QUAN

Sơ đồ cấu tạo của 74HC374  Bảng trạng thái của 74HC374 - THiết kế lịch vạn niên điện tử
Sơ đồ c ấu tạo của 74HC374 Bảng trạng thái của 74HC374 (Trang 28)
Sơ đồ kết nối mắt thu hồng ngoại TSOP1738 như sau: - THiết kế lịch vạn niên điện tử
Sơ đồ k ết nối mắt thu hồng ngoại TSOP1738 như sau: (Trang 54)

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