109
TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ BỘ MÔN ĐIỆN TỬ VIỄN THÔNG LUẬN VĂN TỐT NGHIỆP CHUYÊN NGÀNH ĐIỆN TỬ VIỄN THÔNG THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ Giáo viên hướng dẫn: Sinh viên thực hiện: TS.LƯƠNG VINH QUỐC DANH NGUYỄN VĂN BÌNH MSSV: 1071075 Lớp: Điện Tử Viễn Thông 2.K33

lich van nien dien tu

Embed Size (px)

DESCRIPTION

mach do an tot nghiep89s52

Citation preview

Page 1: lich van nien dien tu

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

KHOA CÔNG NGHỆ

BỘ MÔN ĐIỆN TỬ VIỄN THÔNG

LUẬN VĂN TỐT NGHIỆP

CHUYÊN NGÀNH ĐIỆN TỬ VIỄN THÔNG

THIẾT KẾ

LỊCH VẠN NIÊN ĐIỆN TỬ

Giáo viên hướng dẫn: Sinh viên thực hiện:

TS.LƯƠNG VINH QUỐC DANH NGUYỄN VĂN BÌNH

MSSV: 1071075

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

Page 2: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Cần Thơ − 2010

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

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

................................................................................................

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

II

Page 3: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

................................................................................................

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

III

Page 4: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

IV

Page 5: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

V

Page 6: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

MỤC LỤC

TÓM TẮT ĐỀ TÀI...................................................................................................VABSTRACT.............................................................................................................VMỤC LỤC...............................................................................................................VICHƯƠNG I: MỞ ĐẦU...........................................................................................X

I. KHÁI QUÁT VẤN ĐỀ ..................................................................................... X II. LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ ................................................................. X III. MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI ..................................................... XI

CHƯƠNG II: CƠ SỞ LÝ THUYẾT.....................................................................XIIA.ĐO NHIỆT ĐỘ..................................................................................................XII

I.GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52 ...................................................... XII 1. Tổng quan về 89S52 ........................................................................................ XII XIII 2. Mô tả chân 89S52 ............................................................................................ XIV

2.1. Sơ đồ chân 89S52 ............................................................................. XIV 2.2. Chức năng của các chân 89S52 ....................................................... XIV

3. Tổ chức bộ nhớ bên trong 89S52 .................................................................... XVI 3.1. RAM đa dụng ................................................................................. XVIII 3.2. RAM có thể định địa chỉ bit ........................................................... XVIII 3.3. Các bank thanh ghi ......................................................................... XVIII 3.4. Các thanh ghi có chức năng đặc biệt .............................................. XVIII

3.4.1. Thanh ghi trạng thái chương trình (PSW: Program Status Word) .............................................................................................................. XIX 3.4.2. Thanh ghi TIMER ........................................................................ XX 3.4.3. Thanh ghi ngắt (INTERRUPT) ................................................... XXI

II. SƠ LƯỢC VỀ CẢM BIẾN NHIỆT LM35D ............................................ XXIV III. KHÁI QUÁT VỀ ADC0804 ..................................................................... XXV

1. Mô tả chân ADC0804 ................................................................................... XXV 2. Tổ chức bên trong ADC0804 ...................................................................... XXVII

........................................................................................................... XXVIII 2.1. Quá trình chuyển đổi của chip ADC0804 ....................................... XXIX 2.2. Quá trình đọc dữ liệu từ chip ADC0804 ........................................ XXIX

IV. GIỚI THIỆU IC CHỐT 74HC374 ............................................................ XXX 1. Mô tả chân IC 74HC374 ................................................................................ XXX 2. Tổ chức bên trong IC74HC374 ..................................................................... XXX B. ĐỒNG HỒ THỜI GIAN THỰC VÀ BỘ ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI...............................................................................XXXII

I. ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI. ...................... XXXII 1. Hồng ngoại là gì? ....................................................................................... XXXII 2. Cách tạo ra hồng ngoại ............................................................................... XXXII 3. Cach thu tin hiêu hông ngoai ..................................................................... XXXIII 4. Khảo sát tín hiệu hồng ngoại phát ra từ Remote SONY ............................ XXXIV

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

VI

Page 7: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

II. ĐỒNG HỒ THỜI GIAN THỰC ............................................................ XXXVI 1. Tổng quan về DS1307 .............................................................................. XXXVI

1.1. Sơ đồ chân DS1307 ..................................................................... XXXVI 1.2. Cấu tạo bên trong DS1307 ......................................................... XXXVII

XL 2. Khái quát giao diện I2C .................................................................................. XLI 3. Mode (chế độ) truyền dữ liệu giữa DS1307 và AT89S52 ............................ XLIV

3.1. Mode Data Write (chế độ ghi dữ liệu) ............................................ XLIV 3.2. Mode Data Read (chế độ dọc dữ liệu) ............................................ XLVI

XLVII CHƯƠNG III: THIẾT KẾ PHẦN CỨNG......................................................XLVIIIA. ĐO NHIỆT ĐỘ...........................................................................................XLVIII

I. SƠ ĐỒ VÀ CHỨC NĂNG TỪNG KHỐI ............................................... XLVIII 1. Sơ đồ khối .................................................................................................. XLVIII 2. Chức năng của từng khối ........................................................................... XLVIII

2.1. Cảm biến nhiệt và khuếch đại ...................................................... XLVIII 2.2. Biến đổi ADC và khối xử lý trung tâm (CPU_1) ......................... XLVIII 2.3. Khối hiển thị thứ 1 sử dụng LED 7 đoạn ........................................ XLIX 2.4. Hiệu ứng dùng LED đơn ................................................................ XLIX

II. SƠ ĐỒ CHI TIẾT VÀ NGUYÊN TẮT HOẠT ĐỘNG ............................ XLIX 1. Sơ đồ chi tiết ................................................................................................ XLIX

1.1. Cảm biến nhiệt và bộ khuếch đại .................................................... XLIX 1.2. Biến đổi ADC và khối xử lý trung tâm (CPU_1) ................................... L 1.3. Khối hiển thị thứ 1 sử dụng LED 7 đoạn ............................................ LII 1.4. Hiệu ứng dùng LED đơn ................................................................... LIII

2. Nguyên tắt hoạt động ...................................................................................... LIV B. ĐỒNG HỒ THỜI GIAN THỰC VÀ BỘ ĐIỀU KHIỂN TỪ XA DÙNG REMOTE HỒNG NGOẠI .................................................................................... LV

I. SƠ ĐỒ VÀ CHỨC NĂNG TỪNG KHỐI ...................................................... LV 1. Sơ đồ khối ........................................................................................................ LV 2. Chức năng của từng khối .................................................................................. LV

2.1. Khối thời gian thực ............................................................................. LV 2.2. Khối phát hồng ngoại ......................................................................... LV 2.3. Khối thu hồng ngoại. ......................................................................... LVI 2.4. Khối xử lý trung tâm (CPU_2) .......................................................... LVI 2.5. Khối âm thanh và hiển thị thứ 2 ........................................................ LVI

II.SƠ ĐỒ CHI TIẾT VÀ NGUYÊN TẮT HOẠT ĐỘNG ................................ LVI 1. Sơ đồ chi tiết ................................................................................................... LVI

1.1. Khối thời gian thực (DS1307) ........................................................... LVI 1.2. Khối thu hồng ngoại ......................................................................... LVII

LVII 1.3. Khối xử lý trung tâm (CPU_2) ......................................................... LVII 1.4. Khối âm thanh ................................................................................ LVIII

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

VII

Page 8: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

LVIII 1.5. Khối hiển thị thứ 2 .......................................................................... LVIII

LIX 2. Nguyên tắt hoạt động ....................................................................................... LX CHƯƠNG III: THIẾT KẾ PHẦN MỀM.............................................................LXIA. ĐO NHIỆT ĐỘ...............................................................................................LXII

I. LƯU ĐỒ VÀ GIẢI THUẬT CHƯƠNG TRÌNH ......................................... LXII 1. Giải thuật ....................................................................................................... LXII

1.1. Giải thuật chương trình chính ......................................................... LXII 1.2. Giải thuật chương trình con “ TRUY_CAP_ADC” ......................... LXII

2. Lưu đồ ........................................................................................................... LXII 2.1. Lưu đồ chương trình chính ............................................................... LXII 2.2. Lưu đồ chương trình con ................................................................. LXIII

2.2.1. Lưu đồ chương trình con “ TRUY_CAP_ADC” ............... LXIII 2.2.2. Lưu đồ chương trình con “HIENTHI_1” ................................. LXIV

II. PHẦN MỀM DO NHIỆT ĐỘ (CODE_1) .................................................. LXV I. LƯU ĐỒ VÀ GIẢI THUẬT CHƯƠNG TRÌNH ........................................ LXVI

1. Giải thuật ...................................................................................................... LXVI 1.1. Giải thuật chương trình chính .......................................................... LXVI 1.2. Giải thuật chương trình ngắt “GIAI_MA_REMOTE_SONY” ........ LXVI 1.3. Giải thuật chương trình con “WRITE_CLOCK” ........................... LXVII 1.4. Giải thuật chương trình con “READ_CLOCK” ........................ LXVIII

2. Lưu đồ ....................................................................................................... LXVIII 2.1. Lưu đồ chương trình chính ........................................................... LXVIII 2.2. Lưu đồ chương trình ngắt “GIAI_MA_REMOTE_SONY” ............ LXIX 2.3. Lưu đồ chương trình con ............................................................... LXXII

2.3.1. Lưu đồ chương trình con “WRITE_CLOCK” ......................... LXXII 2.3.2. Lưu đồ chương trình con “READ_CLOCK” ......................... LXXIII 2.3.3. Lưu đồ chương trình con ghi 1 byte vào DS1307“SEND_BYTE” ......................................................................................................... LXXIV 2.3.4. Lưu đồ chương trình con đọc 1 byte từ DS1307“READ_BYTE” .......................................................................................................... LXXV 2.3.5. Lưu đồ chương trình con “ALARM_CLOCK_TEST” .......... LXXVI 2.3.6. Lưu đồ chương trình con “TAT_MO_CHUONG” ............... LXXVII 2.3.7. Lưu đồ chương trình con “HIEU_UNG_CHINH” .............. LXXVIII 2.3.8. Lưu đồ chương trình con “HIENTHI_2” ............................... LXXIX

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

CHƯƠNG IV: KẾT LUẬN VÀ ĐỀ NGHỊ .................................................... LXXXI I. KẾT LUẬN .......................................................................................... LXXXI LXXXIII II. ĐỀ NGHỊ ............................................................................................ LXXXIV

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

VIII

Page 9: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

PHỤ LỤC.....................................................................................................LXXXVI1. Phần mềm đo nhiệt độ (CODE_1) ........................................................ LXXXVI 2. 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) ................................................................................................ XC 4. Code word của remote SONY ...................................................................... CIX

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

IX

Page 10: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

X

Page 11: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XI

Page 12: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

A. ĐO NHIỆ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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XII

Page 13: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

• 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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XIII

Sơ đồ khối của AT89S52

Page 14: lich van nien dien tu

AT89S52

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

2. Mô tả chân 89S52

2.1. Sơ đồ chân 89S52

Mặc dù các thành viên của họ

8051(ví dụ 8751, 89S52, 89C51,

DS5000) đều có các kiểu đóng vỏ

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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XIV

Page 15: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

P3.0

P3.1

P3.2

P3.3

P3.4

P3.5

P3.6

P3.7

RXD

TXD

INT0

INT1

T0

T1

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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XV

Page 16: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN 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

reset.

Các giá trị tụ và điện trở được chọn là:

R1=10Ω , R2=220Ω , C=10 F.Các ngõ vào bộ dao động X1, X2:

Bộ tạo dao động được tích hợp bên trong

89S52. Khi sử dụng 89S52, người ta chỉ cần

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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XVI

Page 17: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XVII

Địa chỉ byte Địa chỉ bit Địa chỉ bit

Địa chỉ byte

Page 18: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XVIII

Page 19: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

BIT SYMBOL ADDRESS DESCRIPTION

PSW.7 CY D7H Cary Flag

PSW.6 AC D6H Auxiliary Cary Flag

PSW.5 F0 D5H Flag 0

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

PSW.2 OV D2H Overlow Flag

PSW.1 - D1H Reserved

PSW.0 P DOH Even Parity Flag

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XIX

Page 20: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

- 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

thành số chẵn.

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

RS1 RS0 BANK

0 0 0

0 1 1

1 0 2

1 1 3

XX

Page 21: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

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

IP.7 _ _ Không được mô tả

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXI

Page 22: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

IP.6 _ _ Không được 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.

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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXII

Page 23: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

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

Bên ngoài 0 IE0 TCON.1

Bên ngoài 1 IE1 TCON.3

Timer 1 TF1 TCON.7

Timer 0 TF0 TCON.5

Port nối tiếp TI SCON.1

Port nối tiếp RI SCON.0

Các loại cờ ngắt

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

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

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

IE.6 _ AEH Không được mô tả

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

XXIII

Page 24: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN 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 :

Ngắt Cờ Địa chỉ vector

Reset hệ thống RST 0000H

Bên ngoài 0 IE0 0003H

Timer 0 TF0 000BH

Bên ngoài 1 IE1 0013H

Timer 1 TF1 001BH

Port nối tiếp TI và RI 0023H

Timer 2 002BH

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.

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

mũ với nhiệt độ.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXIV

Page 25: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Ngõ ra của LM35D là dạng điện áp thay đổi theo nhiệt độ bên ngoài với độ

nhạy 10mv/10C

Sai số cực đại 1.50C khi nhiệt độ lớn hơn 1000C.

Phạm vi sử dụng: 00 C ≥ t0C ≤ 1000 C

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:

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXV

Page 26: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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:

Ở đâ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.

Vin(+) và Vin(-):

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXVI

RCf

1.1

1=

Page 27: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Vcc:

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

Vref/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)Hở 0-5 5/256=19.532.0 0-4 4/256=15.621.5 0-3 3/256=11.711.28 0-2.56 2.56/256=101.0 0-2 2/256=7.810.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

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXVII

Page 28: lich van nien dien tu

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

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXVIII

Page 29: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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:

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXIX

Page 30: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

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

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

IC 74HC374 là IC chốt 8 bit, hoạt động tích cực ở

mức thấp.

o D0 - D7: 8 bit dữ liệu vào

o Q0 – Q7: 8 bit dữ liệu ra

o Vcc: nguồn cung cấp (5V)

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 – Q7L ↑ L L

L ↑ H H

L H X Q0

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXX

74HC

Page 31: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

H X X Z

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXI

Page 32: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Cach tao ra hông ngoai trong điên tư rât đê dang chi cân môt điên trơ va 1

led phat hông ngoai la đu.

Tuy nhiên nêu tao ra hông ngoai như trên thi khoang cach truyên la rât ngắn.

Đê cai thiên vân đê nay người thiết kế thương tao ra tân sô tư 3060KHz, tốt nhất

là khoảng từ 3638KHz đê truyên tin hiêu hông ngoai ra bên ngoai. Để tạo ra tần

số 36 Khz là việc khá đơn giản chi cân tao một xung vuông co 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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXII

V C C

R 1

2 2 0

D 1

P H A T _ H N

Page 33: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

3. Cach thu tin hiêu hông ngoai

Đê thu tin hiêu hông ngoai ta sư dung măt

thu hông ngoai, tuy thuôc vao muc đich sư dung

ma lưa chon phương phap thu cho phu hơp.

Vai net vê măt thu hông ngoai: 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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXIII

TSOP1338

Page 34: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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:

Ta thấy:

− Bit 0 được mã hóa bằng một xung ở mức thấp 600µs và chuyển trạng thái

sang mức cao 600µs.

− Bit 1 được mã hóa bằng một xung ở mức thấp 600µs và chuyển trạng tháí

sang mức cao 1200µs.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXIV

Page 35: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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:

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXV

Page 36: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXVI

Page 37: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

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

- Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi đ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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXVII

Page 38: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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:

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXVIII

Page 39: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XXXIX

Page 40: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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:

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XL

Page 41: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLI

Page 42: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLII

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

START

Page 43: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

- 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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLIII

Page 44: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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.

Dữ liệu được truyền trên giao diện I2C

Một byte truyền đi có kèm theo bit ACK là điều kiện bắt buộc, nhằm đảm

bảo cho quá trình truyền nhận được chính xác. Khi không nhận được đúng địa chỉ

hay muốn kết thúc quá trình giao tiếp, thiết bị nhận sẽ gởi một xung Not_ACK

(NACK) để báo cho thiết bị chủ biết. Thiết bị chủ sẽ tạo ra xung STOP để kết thúc

hay lặp lại một xung START để bắt đấu quá trình mới.

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

Trong giao tiếp I2C giữa DS1307 và 89S52 thì chip 89S52 đóng vai trò là

một master và DS1307 đóng vai trò là một slave. Do chỉ có một master và một chip

giao tiếp với nhau nên chỉ có 2 mode (chế độ) hoạt động giao tiếp giữa 2 chip này.

Hai mode đó là: Data Write (từ AT89S52 đến DS14307) và Data Read (từ DS1307

vào AT89S52).

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

Mode Data Write (chế độ truyền dữ liệu từ master đến slave) được dùng khi

xác lập giá trị ban đầu cho các thanh ghi thời gian hoặc dùng để canh chỉnh thời

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLIV

Page 45: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

gian cho chip DS1307. Cấu trúc truyền dữ liệu trong mode Data Write được mô tả

như hình sau:

Chế độ data write

Trước hết hãy nói về địa chỉ SLA (Slave Address) của chip DS1307

trong mạng I2C, trên mạng I2C mỗi thiết bị sẽ có một địa chỉ riêng gọi là SLA.

SLA được tính theo lý thuyết chuẩn I2C sẽ có giá trị tối đa là 128 (do có 128 thiết bị

trong 1 mạng I2C). Chip DS1307 là một Slave nên cũng có một địa chỉ SLA, giá trị

này được set cố định là 1101000b (68h). Do SLA của DS1307 cố định nên trong 1

mạng I2C sẽ không thể tồn tại cùng lúc 2 chip này.

Quan sát hình trên ta thấy, đầu tiên master (AT89S52) sẽ gởi điều kiện

START đến Slave (DS1307), tiếp theo sau master sẽ là 7 bit địa chỉ SLA của slave

(cố định là: 1101000b). Do chế độ này là Data Write nên bit W = 0 và sẽ được gởi

kèm sau SLA. Bit ACK (A) được slave trả về cho master sau mỗi quá trình giao

tiếp.

Tiếp theo sau địa chỉ SLA sẽ là 1 byte chứa địa chỉ của thanh ghi cần

truy cập (Word Address). Cần phân biệt địa chỉ của thanh ghi cần truy cập và địa

chỉ SLA. Như đã đề cập trên, địa chỉ của thanh ghi cần truy cập sẽ được lưu trong

thanh ghi địa chỉ (hay con trỏ địa chỉ), vì vậy byte dữ liệu đầu tiên sẽ được chứa

trong thanh ghi địa chỉ của DS1307.

Sau byte địa chỉ thanh ghi là một dãy các byte dữ liệu được ghi vào bộ

nhớ của DS1307. Byte dữ liệu đầu tiên sẽ được ghi vào thanh ghi có địa chỉ được

chỉ định bởi Word Address, sau khi ghi xong 1 byte thì Word Address tự động tăng

nên các byte tiếp theo sẽ được ghi liên tiếp vào DS1307 ở các thanh ghi kế sau. Số

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLV

Page 46: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

lượng bytes dữ liệu cần ghi do master quyết định và không được vượt quá dung

lương bộ nhớ của DS1307. Quá trình ghi kết thúc khi master phát ra điều kiện

STOP.

Chú ý: Sau khi ghi thành công 1 byte thì DS1307 sẽ trả lời lại bằng một bit

ACK. Nếu như byte được ghi vào là byte cuối cùng thì DS1307 sẽ trả lời lại bằng 1

bit Not_ACK (NACK).

Nếu sau khi gởi byte Word Address, master không gởi các byte dữ liệu mà

gởi liền điều kiện STOP thì không có thanh ghi nào được ghi. Trường hợp này được

dùng để set địa chỉ Word Address để phục vụ cho quá trình đọc.

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

Mode Data Read (chế độ truyền dữ liệu từ salve về master) được sử dụng khi

đọc thời gian thực từ DS1307 về AT89S52. Cấu trúc truyền dữ liệu trong mode

Data Write được mô tả như hình sau:

Chế độ Data Read

Nguyên tắt truyền trong chế độ Data Read cơ bản cũng giống như trong

truyền chế độ Data Write. Trong chế độ Data Read bit R = 1 sẽ được gởi kèm sau 7

bit SLA. Sau đó liên tiếp các byte dữ liệu được truyền từ DS1307 đến AT89S52.

Điểm khác biệt trong cách bố trí dữ liệu của chế độ này so với chế độ Data Write là

không có byte địa chỉ thanh ghi dữ liệu nào được gởi đến. Tất cả các byte theo sau

SLA+R đều là dữ liệu đọc từ bộ nhớ của DS1307.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLVI

Page 47: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Lưu ý: dữ liệu được đọc tại thanh ghi được chỉ định bởi con trỏ địa chỉ, vì

vậy muốn đọc chính xác dữ liệu từ một địa chỉ nào đó, chúng ta cần thực hiện quá

trình ghi giá trị cho con trỏ định địa chỉ trước khi thực hiên quá trình đọc. Để ghi

giá trị vào con trỏ định địa chỉ chúng ta sẽ gọi chương trình Data Write với chỉ 1

byte được ghi sau SLA+W như phần chú ý ở trên.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLVII

Page 48: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

A. ĐO NHIỆT ĐỘ

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

1. Sơ đồ khối

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

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

Trong phần đo nhiệt độ thì đây là khối tạo ra sự thay đổi điện thế từ 0V đến

1.97V tương ứng với sự thay đổi nhiệt độ bên ngoài từ 00C đến 1000C.

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

Đây là khối quang trọng dùng để điều khiển mọi hoạt động của mạch. Khối

này thực hiện quá trình biến tín hiệu tương tự sang tín hiệu số thông qua bộ biến đổi

ADC, sau đó xuất dữ liệu này ra khối hiển thị thứ nhất. Các quá trình này được điều

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLVIII

Cảm biến nhiệt

và khuếch đại

Biến đổi ADC và

khối xử lýtrung tâm

(CPU_1)

Hiển thị thứ 1

(LED 7 đoạn)

Hiệu ứng dùng

LED đơn

Page 49: lich van nien dien tu

V C C

R F 4

4 7 0

R I 1

1 K -

+

U 2 B

L M 3 5 8

5

67

84

V C CV C C

I N T

R F 3

1 . 5 KR I 21 K

R F 21 . 5 K

-

+

U 2 A

L M 3 5 8

3

21

84

R F 14 7 0

L M 3 5 D / T O

1

2

3V

S+

V O U T

GN

D

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

khiển bởi vi xử lý AT89S52.

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

Đây là khối giao diện với người sử dụng, dùng để chốt lại dữ liệu cho người

dùng quan sát.

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

Đây cũng là khối giao diện vời người dùng, khối này góp phần làm cho sản

phẩm được thiết kế thêm đẹp hơn.

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

1. Sơ đồ chi tiết

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

Thiết lập thông số :

Do cảm biến nhiệt LM35D có độ phân giải là 10mV/10C mà độ phân giải

của ADC0804 được chọn là 19.53mV/10C. Vì vậy phải thiết kế một bộ khuếch đại

với hệ số khuếch đại (K) là 1.953 (chọn K = 1.97), cách chọn hệ số K được tính như

sau:

+ Xét tại 2 điểm A và B:

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XLIX

VinVout1 Vout2

A

B

Page 50: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Điện thế tại 2 điểm A và B được tính như sau:

VA = VB = Vout1.121

21

)( IFF

FF

RRR

RR

+++

= Vout1.2

)( 43

43

IFF

FF

RRR

RR

+++

(1)

+ Quan sát sơ đồ mạch ta thấy:

Dòng điện đi vào từ Vout1 qua RI1 sẽ đi qua RF1, RF2 nên:

21

2

1 FF

outA

I

A

RR

VV

R

V

+−=−

(2)

Thay giá trị của VA vào biểu thức 2 ta tìm được:

Vout2 = 1

21

I

FF

R

RR +.Vout1 (3)

+ Với cách tính tương tự như vậy ta có:

Vin = Vout1 (4)

Từ (3) và (4) ta được:

Vout2 = 1

21

I

FF

R

RR +.Vin (5)

Thay các giá trị điện trở vào (5) ta có:

Vout2 = 1

47.05.1 +.Vin

Vout2 =1.97.Vin

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

L

Page 51: lich van nien dien tu

C 5

3 3 p

R 4

L D 2W R

C 2

1 5 0 p f

V C C

R 1

1 0 K

R D

U 3

A T 8 9 S 5 2

9

1 81 9

20

2 93 0

3 1

40

12345678

2 12 22 32 42 52 62 72 8

1 01 11 21 31 41 51 61 7

3 93 83 73 63 53 43 33 2

R S T

X T A L 2X T A L 1

GN

D

P S E NA L E / P R O G

E A / V P P

VC

C

P 1 . 0 / T 2P 1 . 1 / T 2 - E XP 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7

P 2 . 0 / A 8P 2 . 1 / A 9

P 2 . 2 / A 1 0P 2 . 3 / A 1 1P 2 . 4 / A 1 2P 2 . 5 / A 1 3P 2 . 6 / A 1 4P 2 . 7 / A 1 5

P 3 . 0 / R X DP 3 . 1 / T X D

P 3 . 2 / I N T 0P 3 . 3 / I N T 1

P 3 . 4 / T 0P 3 . 5 / T 1

P 3 . 6 / W RP 3 . 7 / R D

P 0 . 0 / A D 0P 0 . 1 / A D 1P 0 . 2 / A D 2P 0 . 3 / A D 3P 0 . 4 / A D 4P 0 . 5 / A D 5P 0 . 6 / A D 6P 0 . 7 / A D 7

C

I N T

R 1

C 6

3 3 p

L D 5

R S T

X 2

R 7

U 4

A D C 0 8 0 4

67

89

10

1 11 21 31 41 51 61 71 8

1 9

2 0

4

51

23

+ I N- I N

AG

ND

V R E F / 2

GN

D

D B 7D B 6D B 5D B 4D B 3D B 2D B 1D B 0

C L K R

V C C / V R E F

C L K I N

I N T RC S

R DW R

X 1

C 41 0 u f

0

R 1

R 7

L D 3

R 8

R 3

X T 1

L D 4

ER 6

R 5

2 2 0

R 5

I N T R

C 1

1 0 4

D

V C C

R 4

L D 1R 8

V C C

D I S 2

C 3

1 0 4

G

R 1 31 0 K

1

98765432

L D 7L D 6

R 2

V C C

L D 8

W R

D I S 1

R S T

R 3

V C C

R 71 0 k

I N T R

R 2

A

R 6 B

F

S W 1

R 5

Y 1

1 2 M

L D 9

X T 2

R D

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Thiết lập thông số:

Chọn độ phân giải cho ADC0804 là 19.53mV (tương ứng với chân

VREF/2 để hở).

Chọn điện trở R1 và tụ C2 cho bộ dao động của ADC0804:

Ta có tần số dao đông được xác định bằng công thức:

Ta chọn R1 = 10kΩ và C2 = 150pf.

Vậy tần số dao đông của ADC0904 là: f = 606khz

Số mức đầu ra là: N = 5

256.Vin

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LI

RCf

1.1

1=

Page 52: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

T0 cần đo = K

Vin 100. với K = 1.97 là hệ số của bộ khuếch đại dùng IC LM358.

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

Thiết lập thông số:

Led 7 đoạn có cấu tạo gồm 8 led đơn, để thấp sáng 1 led 7 đoạn thì phải có

dòng điện chạy qua mỗi led đơn này, dòng điện này phải có độ lớn từ 10mA–15mA

để led sáng vừa và không bị đứt. Vậy dòng điện qua led được tính như sau:

IL = L

L

R

VVcc −

RL = LI

LVVcc − =

10mA

25 VV −= 300Ω

Chọn RL = 220Ω IL = 13.6mA

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LII

2

l e d 7

764

12

91 0

5

38

ABC

ED

FGD P Vc

cVc

c

0V C C

G

0

R L

2 2 0

1234567 8

91 01 11 21 31 4

F

V C C V C C

U 2

74HC

374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCC

GN

DD I S 1

R L

2 2 0

1234567 8

91 01 11 21 31 4

D I S 2

V C C

A

CD

U 1

74HC

374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCC

GN

D

0

0

1

l e d 7

764

12

91 0

5

38

ABC

ED

FGD P Vc

cVc

c

B

E

Page 53: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Thiết lập thông số:

Dòng điện thắp sáng 1 led là từ 10mA – 15mA, để thắp sáng 12 led mắc

song song thì phải cần dòng điện từ 120mA – 180mA.

Chọn dòng điện qua 12 led là 180mA Ic = 180mA

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LIII

V C C

0

R b

2 2 0

Q 22 S C 1 8 1 5

0

Q 42 S C 1 8 1 5

L D 9

0 0

L D 4 L D 6

R b

2 2 0

V C C V C C

R c

1 0

R b

2 2 0

Q 72 S C 1 8 1 5L D 8

R c

1 0

0

R b

2 2 0

Q 12 S C 1 8 1 5

Q 62 S C 1 8 1 5

R c

1 0

0

R c

1 0

R c

1 0

L D 3

00

R b

2 2 0

R b

2 2 0

Q 52 S C 1 8 1 5

V C C V C C

R c

1 0

Q 82 S C 1 8 1 5

0

R c

1 0

V C C

R b

2 2 0

L D 2

Q 92 S C 1 8 1 5

L D 5

R b

2 2 0

Q 32 S C 1 8 1 5

R b

2 2 0

L D 1

R c

1 0

V C CV C C

R c

1 0

L D 7

V C C

Page 54: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Mà IC = Rc

VVcc L−

RC = Ic

LVVcc − =

180mA

4.25 VV −= 14.4 Ω

Chọn Rc = 10 Ω

Mặt khác ta có:

IB = BR

7.0 VVB −

RB = BR

7.0 VVB −

Để BJT hoạt động trong vùng bảo hoà thì:

IB ≥ βIc

≥ 100

180 mA ≥ 1.8mA

RB ≤ B

B VV

R

7.0−≤

1.8mA

7.05 VV − ≤ 2.39 KΩ

Chọn RB = 2.2 KΩ

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

Khi hệ thống được cấp nguồn (Vcc = 5V) tất cả các linh kiện trong mạch

bắt đầu hoạt động. Đầu tiên chip AT89S52 (CPU_1) kích hoạt bộ biến đổi

ADC0804, khi bộ biến đổi này đã thực hiện xong quá trình biến đổi, CPU_1 sẽ đọc

dữ liệu từ bộ biến đổi ADC0804 và hiển thị kết quả ra led 7 đoạn (sử dụng kỹ thuật

chốt). Sau đó CPU_1 chạy chương trình để tạo hiệu ứng bên ngoài sử dụng led đơn,

khi kết thúc chương trình này CPU_1 quay lại thực hiện quá trình như ban đầu.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LIV

Page 55: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

REMOTE HỒNG NGOẠI

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

1. Sơ đồ khối

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

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

Trong hệ thống đồng hồ thời gian thực, khối này giữ một vai trò rất quang

trọng, khối này quyết định đến độ chính xác của sản phẩm. Vì đây là khối tạo thời

gian thực cho hệ thống.

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

Thiết bị phát sử dụng Remote SONY, khi ấn một phím trên remote thì

Remote này sẽ phát đi một chuỗi dữ liệu hồng ngoại tương ứng với mỗi phím ấn.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LV

Khối xử lý trung

tâm (CPU_2)

Thời gian thực

(DS1307)

Hiển thị thứ 2

Thu tín hiệu

hồng ngoại

Âm thanh

Phát tín hi ệu

hồng ngoại

Page 56: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Thiết bị thu hồng ngoại được sử dụng là một mắt thu hồng ngoại 3 chân có

bán sẳn trên thị trường (TSOP1738). Mắt thu hồng ngoại được sử dụng để thu lại

chuỗi dữ liệu mà remote phát ra.

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

Đây được xem là khối quang trong nhất. Chức năng là đọc/ghi dữ liệu vào

chip thời gian thực (DS1307), giải mã tín hiệu hồng ngoại được phát ra từ remote

SONY. Cuối cùng là xuất tất cả các dữ liệu đã được xử lý ra bên ngoài thông qua

khối hiển thị thứ 2 và khối âm thanh.

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

Đây là 2 khối giao diện cho người dùng, dùng để xuất dữ liệu ra bên ngoài.

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

1. Sơ đồ chi tiết

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

B T 1

3 V

V C C

Y 23 2 . 7 6 8 K H Z

S D A

C 9 1 0 4

S C L

V C C

R 91 0 0

D S 1 3 0 7

4

7

512

6

38

GN

D

S Q W / O U T

S D AX 1X 2

S C L

V B A TV C C

Thiết lập thông số:

Dòng điện chạy qua 4 led là:

I = 9R

VVcc L− = Ω

−100

25 VV = 30mA

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LVI

Page 57: lich van nien dien tu

V C C

C 1 5

1 0 u f

R 2 0

1 0 K

S I G N A L

R 1 9

2 2 0

T S O P 1 7 3 8

13

2

G N DV O U TV

sV C C

d i s 4

R S T 2

d i s 1 3

S P E A K E R

d i s 1 8

X L 1

V 3

V3

C 1 3

3 3 p

V 5

U 7

AT

89

S5

2

9

1 81 9

20

2 93 0

3 1

40

12345678

2 12 22 32 42 52 62 72 8

1 01 11 21 31 41 51 61 7

3 93 83 73 63 53 43 33 2

R S T

X T A L 2X T A L 1

GN

D

P S E NA L E / P R O G

E A / V P P

VC

C

P 1 . 0 / T 2P 1 . 1 / T 2 - E XP 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7

P 2 . 0 / A 8P 2 . 1 / A 9

P 2 . 2 / A 1 0P 2 . 3 / A 1 1P 2 . 4 / A 1 2P 2 . 5 / A 1 3P 2 . 6 / A 1 4P 2 . 7 / A 1 5

P 3 . 0 / R X DP 3 . 1 / T X D

P 3 . 2 / I N T 0P 3 . 3 / I N T 1

P 3 . 4 / T 0P 3 . 5 / T 1

P 3 . 6 / W RP 3 . 7 / R D

P 0 . 0 / A D 0P 0 . 1 / A D 1P 0 . 2 / A D 2P 0 . 3 / A D 3P 0 . 4 / A D 4P 0 . 5 / A D 5P 0 . 6 / A D 6P 0 . 7 / A D 7

D 1 4

L E D

G G

B E L L

F F

S I G N A L

V C C

d i s 7

V2

d i s 5

R S T 2

X L 2

d i s 1 2

d i s 1 6

C 1 1

1 0 4

d i s 9

V 4

Y 31 2 M

V1

R 6

1 0 K

R 1 02 2 0

V C C

V5

d i s 2 1

D D

V 8

R N 5

2 2 0

12345678

91 01 11 21 31 4

d i s 1 1V 2

V C C

d i s 8

V6

C 1 4

1 0 u f

S C L

X L 2

R N 3

1 0 K

12345678 9

1 01 11 21 31 41 51 6

d i s 1 5

X L 1

R 1 7

2 2 0

d i s 1 7

V 1

d i s 2 0

E E

d i s 3

V 7

V8

C 1 2

3 3 p

d i s 1 0

R 8

2 2 0

S W 2

d i s 6

Q 6C 1 8 1 5

R 1 8

1 0 K

B B

A 1 0 1 5

V C C

R N 4

1 0 K

123456 7

891 01 11 2

V C C

d i s 1 4

B E L L

0

V4

d i s 1 9

C C

A A

R 4

1 0 K

V 6

V7

R N 6

1 0 K

12345 6

7891 0

V C C

R 1 2

1 0 K

1

9 8 7 6 5 4 3 2

D 1 3

L E D

S D A

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Do 4 led được mắc song song với nhau nên dòng điện chạy qua mỗi led là

như nhau:

I1 = I2 = I3 = I4 = I/4 = 30mA/4 = 7.5mA

Chú ý: do ngõ ra SCL và SDA có cấu tạo dạng cực thu để hở (giống như

port_0 của vi điều khiển) nên cần phải có điện trở kéo lên (chọn R = 10 KΩ ).

1.2. Khối thu hồng ngoạiSơ đồ kết nối mắt thu hồng ngoại TSOP1738 như sau:

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LVII

Page 58: lich van nien dien tu

C 1 01 u f

R 1 5

4 . 7 K

R 1 4

1 0 K

V C C

Q 42 S C 1 8 1 5

Q 2 4 A

2 S A 1 0 1 5R 1 4

1 0 K

L S 1

S P E A K E R

V C C

U M 6 61

3

2O U T

GN

DV s

S P E A K E R

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

1.4. Khối âm thanh

IC UM66 là IC nhạc được sử dụng rất nhiều, bởi vì UM66 dể sử dụng, rẽ

tiền và tiếng nhạc phát ra cũng khá hay. UM66 thường được sử dụng trong các đồng

hồ báo thức hay là các thiết bị đồ chơi điện tử. Sơ đồ khối của UM66 được mô tả

như hình sau:

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LVIII

Page 59: lich van nien dien tu

U 1 9

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

0

d i s 6

0

V C CV C C

2 0

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

R N 1 3

2 2 0

1234567 8

91 01 11 21 31 4

0

V C C

V C C

R N 2 1

2 2 0

1234567 8

91 01 11 21 31 4

d i s 1 5

E E

R N 3

2 2 0

1234567 8

91 01 11 21 31 4

R N 7

R E S I S T O R D I P 7

1234567 8

91 01 11 21 31 4

0

3

l e d 7

764

12

91 0

538

ABC

ED

FGD PVccVcc

V C C

V C C

R N 6

2 2 0

1234567 8

91 01 11 21 31 4

V C C

d i s 7

d i s 1 0

0

R N 1 5

2 2 0

1234567 8

91 01 11 21 31 4

R N 1 4

2 2 0

1234567 8

91 01 11 21 31 4

d i s 1 2

R N 1 7

2 2 0

1234567 8

91 01 11 21 31 4

U 6

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

C C

U 1 2

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

1 7

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

4

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

2 1

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

V C C

0

V C C

V C C

0

U 1 1

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

0

0

R N 1 9

2 2 0

1234567 8

91 01 11 21 31 4

R N 1 6

2 2 0

1234567 8

91 01 11 21 31 4

V C C

0

d i s 1 6

1 0

l e d 7

764

12

91 0

5

38ABC

ED

FGD PVccVcc

U 1 6

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

V C C

d i s 1 8

0

6

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

5

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

U 1 8

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

0

V C C

0

U 4

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

1 4

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

V C C

U 1 3

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

d i s 3

V C C

R N 1 2

2 2 0

1234567 8

91 01 11 21 31 4

0

8

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

1 8

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

d i s 1 9

0

R N 9

2 2 0

1234567 8

91 01 11 21 31 4

0

R N 4

2 2 0

1234567 8

91 01 11 21 31 4

R N 1 0

2 2 0

1234567 8

91 01 11 21 31 4

U 2 1

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

1 5

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

1 3

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

V C C

V C C

V C C

V C C

7

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

V C C0

U 5

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

1 1

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

0 0

0

0

V C C

0

d i s 5

V C C

R N 8

R E S I S T O R D I P 7

1234567 8

91 01 11 21 31 4

U 1 7

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

0

0

0

0

U 7

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

d i s 1 1

V C C

V C C

0

V C C

U 8

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

0

V C C

U 1 5

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

A A

d i s 1 4

0

R N 2 0

2 2 0

1234567 8

91 01 11 21 31 4

V C C

0

V C C

1 6

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

V C C

d i s 1 7

V C C

U 3

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

R N 5

2 2 0

1234567 8

91 01 11 21 31 4

R N 1 8

2 2 0

1234567 8

91 01 11 21 31 4

V C C

0

0

d i s 1 3

V C C

U 1 0

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

0

V C C V C C

U 2 0

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

d i s 2 0

V C C

V C C

U 1 4

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

0

0

0

0

0

V C C

V C C

9

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

D D

d i s 2 1

1 2

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

d i s 9

d i s 4

G G

1 9

l e d 7

764

12

91 0

5

38

ABC

ED

FGD PVccVcc

B B

F F

U 9

74HC374

3478

1 31 41 71 8

11 1

25691 21 51 61 9

2010

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

O EL E

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

VCCGND

R N 1 1

2 2 0

1234567 8

91 01 11 21 31 4

d i s 8

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LIX

Page 60: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Khi hệ thống được cấp nguồn chip AT89S52 (CPU_2) bắt đầu đọc thời gian

thực RTC. Khi thời gian đã được đọc, CPU_2 tiến hành xử lý (kiểm tra xem thời

gian vừa đọc có trùng với thời gian báo thức hay không? Nếu trùng thì CPU_2 kích

hoạt hệ thống âm thanh và ngược lai). Khi thực hiện xong quá trình xử lý kết quả,

CPU_2 xuất dữ liệu ra led 7 đoạn. Sau đó CPU_2 quay về thực hiện quá trình như

ban đầu. Trong trường hợp CPU_2 nhận được tín hiệu truyền về từ mắt thu hồng

ngoại, CPU_2 tạm ngưng hoạt động tất cả các chương trình để phục vụ chương

trình ngắt, CPU_2 bắt đầu giải mã tín hiệu hồng ngoại được phát ra từ remote

SONY. Khi giải mã xong CPU_2 gọi chương trình để tạo hiệu ứng khi điều chỉnh,

cuối cùng dữ liệu được CPU_2 ghi vào RTC và thoát khỏi chương trình ngắt.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LX

Page 61: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Để viết một chưong trình có nhiều cách ví dụ như viết một mạch từ trên

xuống dưới theo phương pháp này CPU sẽ đọc từng tự theo các chỉ thị trong

chương trình từ điạ chĩ thấp đến địa chỉ cao và thực hiện chúng cho đến địa chỉ cuối

cùng. Trong trường hợp này người đọc rất dễ theo dõi chương trình và nắm được ý

đồ của người viết, tuy nhiên nó có nhược điểm là kích thước chương trình lớn. Giới

hạn cuả phương pháp lập trình tuần tự làm phát sinh một phương pháp lập trình

khác là lập trình cấu trúc. Trong chương trình này với những đoạn thường xuyên lặp

lại trong chương trình người ta đem chúng ra khỏi chương trình chính (gọi là

chương trình con) chúng có thể được đặt ở đầu hoặc cuối chương trình chính (tuỳ

theo phần mềm). Tại một địa chỉ xác định nơi chúng ta đem đi được thay bằng lệnh

LCALL xxxx. Trong đó xxxx là điạ chỉ chúng ta đặt chương trình con. Khi gặp chỉ

thị này CPU sẽ nhảy đến chỉ thị được đặt sau chỉ thị LCALL và thi hành đoạn

chương trình đó. Để quá trình làm việc không bị gián đoạn ở cuối đoạn chương

trình ta đặt chỉ thị RET (Return). Khi gặp chỉ thị này CPU sẽ quay về chương trình

chính và tiếp tục công việc bị bỏ dở. Phương pháp này khá hiệu quả trong việc giảm

kích thước chương trình. Tuy nhiên nó làm cho người sử dụng khó theo dõi chương

trình do mất tính liên tục. Để khắc phục nhược điểm này người ta đặt cho mỗi đoạn

chương trình như thế một cái tên hay nhãn (label). Tên đặt phải giúp người đọc hình

dung được chức năng của chương trình con, nhớ rằng đoạn chương trình con có tác

dụng dừng chương trình chính trong một khoảng thời gian t nào đó. Chúng ta cũng

qui định đoạn chương trình con là nơi chương trình chính đặt dữ liệu xử lý cũng

như nơi chương trình chính sẽ lấy kết quả về bằng cách này người đọc chỉ cần nhớ

chương trình được gọi sẽ làm công việc gì và nơi đặt (lưu) dữ liệu có liên quan.

Phần mềm phục vụ cho hệ thống của tôi cũng được thiết kế dựa trên

quan điểm này. Để viết chương trình điều khiển hệ thống có thể dùng một trong các

ngôn ngữ như Assembler, passcal, C…. Ở đây tôi viết chương trình bằng ngôn ngữ

assembler (ASM) của hệ thống 8 bit dùng chip AT89S52.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXI

Page 62: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

A. ĐO NHIỆT ĐỘ

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

1. Giải thuật

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

• Bước 1:Truy xuất dữ liệu từ bộ biến đổi ADC

• Bước 2: Hiển thị kết quả

• Bước 3: Tạo hiệu ứng cho led đơn, sau đó quay lại bước 1

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

• Tạo một xung từ thấp lên cao áp đến chân WR để ADC0804 bắt đầu quá

trình chuyển đổi.

• Chờ cho quá trình biến đổi được thực hiên xong (chân INTR xuống mức

thấp).

• Tạo một xung từ cao xuống thấp áp đến chân RD để đọc dữ liệu ra từ

chip ADC0804.

• Đưa đữ liệu vào thanh ghi R0 và thoát khỏi chương trình.

2. Lưu đồ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXII

Page 63: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXIII

BEGIN

Khởi tạo giá trị

ban đầu

END

Truy cập vào chip

ADC0804

Hiển thị nhiệt độ ra

led 7 đoạn

Hiệu ứng thứ 1

(dùng led đơn)

Hiệu ứng thứ 2

(dùng led đơn)

Page 64: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXIV

RET

Xuất ra led thứ 2

P_Nguyên

STAR

TT

Xuất ra led thứ 1

Lấy A chia BP_Dư

Thiết lập giá trị

A = R0, B = 10

START

Kích hoạt bộ biến đổi

ADC0804

RET

Chờ quá trình biến đổi

hoàn thành

INTR = = 0?

Dưa dữ liệu

vào thanh ghi R0

Đọc dữ liệu từ chip

ADC0804

Y

N

Page 65: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Phần mềm đo nhiệt độ (Code_1) được lập trình bằng ngôn ngữ Assembler

(ASM), soạn thảo và biên dịch bằng chương trình Keil Version. Nội dung Code_1

nằm ở thư mục phụ lục “trang 76”.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXV

Page 66: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

XA DÙNG REMOTE HỒNG NGOẠI.

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

1. Giải thuật

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

• Bước 1: Đọc thời gian thực từ RTC (chip DS1307)

• Bước 2: Hiển thị thời gian vừa đọc ra led 7 đoạn

• Bước 3: Kiểm tra thời gian báo thức

• Bước 4: Kiểm tra chế độ chuông báo theo từng giờ

• Bước 5: Tạo hiệu ứng chỉnh khi cài đặt giờ, sau đó quay lại bước 1.

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

• Bước 1: Thiết lập giá trị thanh ghi A = 01000000B (40h)

• Bước 2: Chờ cho tín hiệu lên (Đây là bit mã lệnh đầu tiên)

• Bước 3: Chờ tín hiệu đi xuống

• Bước 4: Chờ khoảng 900µ s

• Bước 5: Đo mức tín hiệu

• Bước 6: Nếu mức tín hiệu là mức cao thì bit nhận được là bit 0

- Thiết lập bit nhớ C = 0 (bit mã lệnh thu được)

- Quay phải có nhớ A, như vậy C sẽ được gửi vào MSB của A, LSB của A

gửi vào C.

- Ban đầu, A = 01000000B thì sau khi quay ta có C = 0 và MSB của A là

bit đầu tiên của mã lệnh.

- Như vậy sau 7 lần quay thì C = 1 và 7 bit bên trái của A sẽ chứa mã lệnh

- Kiểm tra bit nhớ C, nếu C = 1 nhảy tới bước 8, nếu C = 0 quay lại bước 3

• Bước 7: Nếu mức tín hiệu là mức thấp thì bit nhận được là bit 1

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXVI

Page 67: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

- Thiết lập Bit nhớ C = 1 (bit mã lệnh thu được)

- Quay phải có nhớ A

- Kiểm tra bit nhớ C, nếu C = 1 nhảy tới bước 8, nếu C = 0 quay lại bước 2

• Bước 8: Lúc này 7 bit mã lệnh chứa trong 7 bit bên trái của thanh ghi A :

A = D6D5D4D3D2D1D00

Quay phải thanh ghi A thu được 7 bit mã lệnh nằm bên phải thanh ghi A

A = 0D6D5D4D3D2D1D0

Tạo trễ dài để chống nhiễu (chọn 0.1s)

• Bước 9: Nhận dạng các phím được ấn:

- Nếu phím được ấn là KEY_ON_OFF thì mở chế độ điều chỉnh ngược lại

thì nhảy đến bước 10.

- Nếu phím được ấn là KEY_NEXT hoặc KEY_BACK thì tăng hoặc giảm

thanh ghi R0 một đơn vị cho mỗi lần ấn. Kế tiếp gọi chương trình để tạo ra

hiệu ứng điều chỉnh tương ứng, sau đó nhảy đến bước 10.

- Nếu phím được ấn là các số thì chương trình “xử lý số” được gọi để

chuyển các số được ấn vào biến được lựa chọn ở trên, ghi giá trị này vào

RTC. Sau đó đọc và hiển thị các giá trị ra ngoài, cuối cùng nhảy đến bước

10.

- Nếu phím được ấn là KEY_ON_BELL / KEY_OFF_BELL thì tương ứng

với việc mở/tắt chuông theo từng giờ, sau đó nhãy đến bước 10.

• Bước 10: Tạo trể 0.1s và thoát khỏi ngắt

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

• Gởi điều kiện START đến RTC

• Gởi tiếp địa chỉ Slave + W (0D0h)

• Gởi địa chỉ thanh ghi đầu tiên được chọn để ghi (00h: địa chỉ thanh ghi

SECOND)

• Ghi tất cả các byte dữ liệu vào RTC như: giây, phút, giờ, thứ, ngày, tháng,

năm, giá trị thanh ghi control và cuối cùng là thời gian báo thức

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXVII

Page 68: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

• Gởi điều kiên STOP và thoát.

Chú ý: Nếu không phải là lần ghi/đọc cuối cùng thì kéo biến LAST

xuống mức thấp để gởi bit ACK, ngược lại đưa biến LAST lên cao để gởi bit

Not_ACK (NACK).

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

• Gởi điều kiện START đến RTC

• Gởi tiếp địa chỉ Slave + W (0D0h).

• Gởi địa chỉ thanh ghi đầu tiên được chọn để ghi (00h: địa chỉ thanh ghi

SECOND).

• Gởi điều kiện STOP.

• Gởi lại điều kiện START.

• Gởi địa chỉ Slave + R (0D1h).

• Bắt đầu đọc lần lượt từng byte dữ liệu từ RTC. Đầu tiên là giây, phút, giờ,

thứ, ngày, tháng, năm, giá trị thanh ghi control và cuối cùng là thời gian báo

thức

• Gởi điều kiện STOP và thoát.

2. Lưu đồ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXVIII

Page 69: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXIX

BEGIN

Khởi tạo giá trị

ban đầu

Đọc thời gian

thực từ RTC

END

Hiển thị thời gian

ra led 7 đoạn

Thời gian báo

thức

Mở/tắt chuông

theo từng giờ

Tạo hiệu ứng khi

điều chỉnh

Page 70: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXX

Gán giá trị

A = 01000000h

YN

Y

N

Đặt cờ nhớ C=0

Quay phải có nhớ A

Đặt cờ nhớ C=1

Quay phải có nhớ A

Quay phải A

Đo mức tín hiệu

Tín hiệu

mức thấp

Chờ tín hiệu lên

mức cao

Tạo trễ 900µ s

C = 1

START

TIEP

Chờ tín hiệu xuống

mức thấp

C = 1 N

Page 71: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXI

N

Y

Y

Y

Y

Y

N

N

N

N

N

TIEP

RETI

A = = KEY_ON_OFFF

Tạo trể 0.1s

A = = KEY_NEXT

hoặc

A = = KEY_BACK

A = = KEY_1,

KEY_2…..

A = = KEY_0N_BELL

hoặc KEY_OFF_BELL

Hiệu ứng

điều chỉnh

Tắt/mở

chuông

Xử lý số

Read

clockHiển

thị_2

Write

clock

Page 72: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXII

BEGIN

RET

Gởi điều kiện

STOP

Gởi điều kiện

START

Gởi địa chỉ

Slave+W (0D0h)

Gởi 1 byte địa chỉ

con trở (00h)

Ghi tất cả byte dữ liệu

như: giây, phút,....,thời

gian báo thức vào RTC

Page 73: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXIII

BEGIN

RET

Gởi điều kiện STOP

Gởi điều kiện

START

Gởi địa chỉ

Slave+W (0D0h)

Gởi 1 byte địa chỉ

con trở (00h)

Đọc tất cả byte dữ liệu

như: giây, phút,....,thời

gian báo thức từ RTC

Gởi điều kiện

STOP

Gởi điều kiện

START

Gởi địa chỉ

Slave+R (0D1h)

Page 74: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXIV

N Y

Y

YN

N

BEGIN

RET

Tạo một xung nhip

tại chân SCL

Gán giá trị

BITCOUNT = 08

ACC.7 = = 0

SDA = 1 SDA = 0

Quay trái thanh ghi

A

LAST = = 0

Gởi bit NACK Gởi bit ACK

BITCOUNT = =

0

Page 75: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXV

N Y

Y

N

BEGIN

RET

Đưa dữ liệu từ SDA

vào cờ C

Gán giá trị: A = 00

BITCOUNT = 08

Quay trái thanh ghi A

có cớ nhớ C

LAST = = 0

Gởi bit NACK Gởi bit ACK

BITCOUNT = = 0

Tạo một xung nhip

tại chân SCL

Page 76: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

2.3.5. Lưu đồ chương trình con “ALARM_CLOCK_TEST”

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXVI

N

N

Y

N

Y

Y

BEGIN

RET

HOUR = = ALK_HOUR

MINUTE = =

ALK_MINUTE

Kích hoạt hệ thống

âm thanh

MINUTE = =

ALK_MINUTE

Đọc thời gian thực

từ RTC

Hiển thị

ra led 7 đoạn

Dừng kích hoạt

hệ thống âm thanh

Page 77: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXVII

N

N

N

Y

Y

Y

Y

BEGIN

RET

R3 = = 0FFH

MINUTE = = 0

Kích hoạt hệ thống

âm thanh

SECOND = = 0

Tạo trễ

khoảng 0.5s

Dừng kích hoạt

hệ thống âm thanh

Page 78: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXVIII

Y

Y

Y

Y

Y

N

N

N

N

N

BEGIN

RET

R0 = = 20H

Tạo hiệu ứng chỉnh giờ

R0 = = 21H

Tạo hiệu ứng chỉnh phút

R0 = = 22H

Tạo hiệu ứng chỉnh giây

Tạo hiệu ứng chỉnh giờ báo thức

R0 = = 28H

Tạo hiệu ứng điều phút báo thức

R0 = = 27H

Page 79: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXIX

BEGIN

RET

Tách số BCD

Đưa nội dung biến HOUR vào

thanh ghi A

Xuất ra led 7 đoạn

Tách số BCD

Đưa nội dung biến MINUTE vào

thanh ghi A

Xuất ra led 7 đoạn

Tách số BCD

Đưa nội dung biến

ALK_MINUTE vào thanh ghi A

Xuất ra led 7 đoạn

Page 80: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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)

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) cũng được lập trình bằng ngôn ngữ Assembler (ASM), soạn thảo và

biên dịch bằng chương trình Keil Version. Nội dung Code_2 nằm ở thư mục phụ

lục “trang 80”.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXX

Page 81: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

I. KẾT LUẬN

Sau một thời gian nghiên cứu và tìm hiểu về đề tài này. Cùng với sự chỉ dẫn

tận tình của các Thầy Lương Vinh Quốc Danh. Đến nay em đã thiết kế thành công

“Lịch Vạn Niên Điện Tử” , mạch hoạt động rất ổn định và đáp ứng được yêu cầu

của đề tài đặt ra. Do thời gian và năng lực giới hạn nên sản phẩm được thiết kế

không thể tránh khỏi một số khuyết điểm: sản phẩm hơi thô, không được đẹp…

kính mong quý thầy cô và các bạn thông cảm.

Sau đây là một số hình ảnh của “Lịch Vạn Niên Điện Tử”:

Modul hiển thị

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXI

Page 82: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Modul hiệu ứng dùng led đơn

Modul xử lý trung tâm

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXII

Page 83: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

Lịch Vạn Niên Điện Tử

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXIII

Page 84: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

II. ĐỀ NGHỊ

Sau khi đã thiết kế thành công đề tài này, em có một số đề nghị để khắc phục

những khuyết điểm mà em mắc phải.

Thay đổi IC chốt 74HC374 bằng IC ghi dịch và chốt 74LS595. Bằng cách

này sẽ là giảm bớt quá trình phức tạp khi thiết kế phần cứng, góp phần làm cho sản

phẩm gọn nhẹ hơn.

Thiết kế thêm bộ chuyển đổi từ ngày dương lịch sang ngày âm lịch.

Thay đổi tiếng chuông báo thức bằng một bài nhạc mà bạn yêu thích.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXIV

Page 85: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

TÀI LIỆU THAM KHẢO

[1] Giáo trình Vi Điều Khiển _ Tác giả Th.Phạm Hùng Kim Khánh

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

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

[4] Giáo trình MẠCH SỐ _ Tác giả Th.Nguyễn Trung Lập.

[5] Giáo trình MẠCH TƯƠNG TỰ _ Tác giả KS. Trương Văn Tám

[6] http://alldatasheet.com/

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

[8] http://www.dientuvietnam.net/forums/

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXV

Page 86: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

PHỤ LỤC

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

RDL BIT P3.0 WRL BIT P3.1 INT BIT P3.3 LED1 BIT P2.7 LED2 BIT P3.2 LED3 BIT P3.4 LED4 BIT P3.5

ORG 0000H LJMP MAIN

MAIN: MOV P0,#00H MOV P2,#00H

CLR LED1CLR LED2CLR LED3CLR LED4MOV DPTR,#LED7SMOV R0,#00HMOV R7,#05

SETB RDLSETB WRL

HERE:CALL TRUY_CAP_ADCCALL HIENTHICALL HIEU_UNG_1CALL TRUY_CAP_ADCCALL HIENTHICALL HIEU_UNG_2

JMP HERE;-------------------------------------------------------------------------------------;--------Truy nhap vao chip ADC0804-------- TRUY_CAP_ADC: CLR WRL SETB WRL ;Tao xung canh len tai chan WR

;de bat dau qua trinh bien doiJB INT,$ ;Cho qua trinh bien doi hoan thanh

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXVI

Page 87: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

SETB RDL CLR RDL ;Tao xung canh xuong tai chan

;RD de doc du lieu CALL DELAY MOV R0,P1 ;Dua du lieu vao thanh ghi R0

SETB RDL RET

;------Hien thi nhiet do ra led 7 doan------ HIENTHI: MOV A,R0 MOV B,#10 DIVAB ;Chia Gia tri thanh ghi A cho 10,

;phan nguyen luu trong A, du luu trong B CALL READ CLR P3.7 SETB P3.7 ;Tao xung canh len de xuat du lieu CALL DELAY_6us

MOV A,B CALL READ CLR P3.6 SETB P3.6 CALL DELAY_6us RET

;------Hieu ung thu 1 cho led doan------ HIEU_UNG_1: LOOP1: SETB LED1 CLR LED2 CLR LED3 SETB LED4

MOV P0,#04H CALL DELAY

CALL DELAY CLR LED1 SETB LED2 CLR LED3 CLR LED4

MOV P0,#09H CALL DELAY

CALL DELAY

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXVII

Page 88: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

CLR LED1

CLR LED2SETB LED3CLR LED4MOV P0,#12HCALL DELAYCALL DELAY

DJNZ R7,LOOP1MOV R7,#10MOV P0,#00HCLR LED3

RET ;------Hieu ung thu 2 cho led doan------ HIEU_UNG_2: LOOP2: SETB LED1 CALL DELAY CLR LED1 SETB LED2 CALL DELAY CLR LED2 SETB LED3 CALL DELAY CLR LED3 SETB LED4 CALL DELAY CLR LED4 MOV P0,#01H CALL DELAY MOV P0,#02H CALL DELAY MOV P0,#04H CALL DELAY MOV P0,#08H CALL DELAY MOV P0,#10H CALL DELAY

MOV P0,#00HCALL DELAY

DJNZ R7,LOOP2MOV R7,#05

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXVIII

Page 89: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

RET

;------Doc noi dung o nho DPTR----- READ: MOVC A,@A+DPTR MOV P2,A RET

;------Tao tre 6us------ DELAY_6us: NOP

NOPNOPNOPNOPNOP

RET

;------Tao tre (250*200*2)/10^6 = 0.1s------ DELAY: MOV R1,#250 L1: MOV R2,#200 DJNZ R2,$ DJNZ R1,L1 RET

LED7S: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H

END

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

LXXXIX

Page 90: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

SCL BIT P0.0SDA BIT P0.1SPEAKER BIT P3.0BELL BIT P3.1SIGNAL BIT P3.2DIS3 BIT P0.2DIS4 BIT P0.3DIS5 BIT P0.4DIS6 BIT P0.5DIS8 BIT P0.6DIS7 BIT P0.7DIS9 BIT P3.3DIS15 BIT P2.0DIS13 BIT P2.1DIS12 BIT P2.2DIS14 BIT P2.3DIS10 BIT P2.4DIS11 BIT P2.5DIS16 BIT P2.6DIS17 BIT P2.7DIS18 BIT P3.4DIS19 BIT P3.5DIS21 BIT P3.6DIS20 BIT P3.7CO DATA 2DHLAST BIT CO.7HOUR DATA 20HMINUTE DATA 21HSECOND DATA 22HDAY DATA 23HDATE DATA 24HMONTH DATA 25HYEAR DATA 26HALK_HOUR DATA 27HALK_MINUTE DATA 28HSQW_OUT DATA 29HBYTECOUNT DATA 2AHBITCOUNT DATA 2BHTAM DATA 2CH

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XC

Page 91: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

ORG 0000H LJMP MAIN ORG 0003H LJMP GIAI_MA_ROMOTE_SONY

MAIN: MOV R0,#1FH MOV R1,#00H MOV R2,#0FFH MOV R3,#00H

MOV DPTR,#LED7SMOV P0,#0FFHMOV P1,#0FFH

MOV P2,#0FFHMOV P3,#0FFH

CLR LASTCLR SPEAKER

CLR BELL MOV SECOND,#50H MOV MINUTE,#59H MOV HOUR,#00H MOV DAY,#02H

MOV DATE,#01H MOV MONTH,#01H

MOV YEAR,#10H MOV ALK_MINUTE,#30H

MOV ALK_HOUR,#22H MOV SQW_OUT,#90H MOV TAM,#00H MOV IE,#00H

MOV TMOD,#10H SETB EA

SETB EX0 SETB IT0 MOV SP,#256-32 HERE: CALL READ_CLOCK

CALL HIENTHI_2CALL ALARM_TESTCALL TAT_MO_CHUONGCALL HIEU_UNG_CHINH

JMP HERE

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCI

Page 92: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

;------------------------------------------------------------------------------;----Chuong trinh ngat de giai ma tin hieu hong ngoai---- GIAI_MA_ROMOTE_SONY: MOV R1,A CALL DELAY_900us MOV A,#40H JB SIGNAL,EXIT_GIAIMA RP1: JNB SIGNAL,RP1 ;Cho tin hieu len muc cao RP2: JB SIGNAL,RP2 ;Cho tin hieu xuong muc thap CALL DELAY_900us ;Tao tre 900us MOV C,SIGNAL ;Dua de lieu vao C JC BIT0 ; Neu C=1 du lieu la bit 0

;neu C=0 du lieu la bit 1 BIT1: SETB C ;Dat C bang 1 RRC A ;Ghi vao A JC END_SIGNAL JMP RP1

BIT0: CLR C ;Dat C bang 0 RRC A ;Ghi vao A JC END_SIGNAL JMP RP2 END_SIGNAL:

CALL LONG_DELAY ;Tao tre de chong nhieu RR A ; Quay phai A JMP KEY_ON_OFF

;----Phim cho phep mo/tat che do dieu chinh----KEY_ON_OFF: CJNE A,#15H,SOSANH

MOV A,R2 CPLA

MOV R2,AMOV R0,#20H

CJNE R2,#0FFH,EXIT_KEY_ON_OFF MOV R0,#01FH EXIT_KEY_ON_OFF:

JMPEXIT_GIAIMA

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCII

Page 93: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

SOSANH: CJNE R2,#0FFH,KEY_NEXT

JMP EXIT_GIAIMA

;----Phim lua chon vi tri dieu chinh---- KEY_NEXT: CJNE A,#18H,KEY_BACK INC R0 CJNE R0,#29H,EXIT_KEY_NEXT MOV R0,#20H EXIT_KEY_NEXT:

CALL HIEU_UNG_CHINH JMP EXIT_GIAIMA KEY_BACK: CJNE A,#19H,KEY_01 DEC R0 CJNE R0,#1FH,EXIT_KEY_NEXT MOV R0,#28H EXIT_KEY_BACK:

CALL HIEU_UNG_CHINH EXIT_GIAIMA: CALL LONG_DELAY

JNB SIGNAL,EXIT_GIAIMA MOV A,R1

CLR IE0 RETI

;-----Cac phim du lieu cai dat------ KEY_01:

CJNE A,#00H,KEY_02MOV TAM,#01HCALL XULY

JMP EXIT_GIAIMA

KEY_02:CJNE A,#01H,KEY_03MOV TAM,#02HCALL XULY

JMP EXIT_GIAIMA

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCIII

Page 94: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

KEY_03:CJNE A,#02H,KEY_04MOV TAM,#03HCALL XULY

JMP EXIT_GIAIMA

KEY_04:CJNE A,#03H,KEY_05MOV TAM,#04HCALL XULY

JMP EXIT_GIAIMA

KEY_05:CJNE A,#04H,KEY_06MOV TAM,#05HCALL XULY

JMP EXIT_GIAIMA

KEY_06:CJNE A,#05H,KEY_07MOV TAM,#06HCALL XULY

JMP EXIT_GIAIMA

KEY_07:CJNE A,#06H,KEY_08MOV TAM,#07HCALL XULY

JMP EXIT_GIAIMA

KEY_08:CJNE A,#07H,KEY_09MOV TAM,#08HCALL XULY

JMP EXIT_GIAIMA

KEY_09:CJNE A,#08H,KEY_10MOV TAM,#09HCALL XULY

JMP EXIT_GIAIMA

KEY_10:

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCIV

Page 95: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

CJNE A,#09H,KEY_MO_CHUONGMOV TAM,#00HCALL XULYJMP EXIT_GIAIMA

KEY_MO_CHUONG: CJNE A,#12H,KEY_TAT_CHUONG

MOV R3,#0FFHSETB BELLJMP EXIT_GIAIMA

KEY_TAT_CHUONG: CJNE A,#13H,EXIT_GIAIMA

MOV R3,#00HCLR BELLJMP EXIT_GIAIMA

;----Dua gia tri duoc dieu chinh vao cac o nho du lieu---- XULY:

MOV A,@R0SWAP AANL A,#0F0HORL A,TAMMOV @R0,ACALL WRITE_CLOCKCALL READ_CLOCKCALL HIENTHI_2

RET

;----Tao ra hieu ung khi dieu chinh---- HIEU_UNG_CHINH:

CJNE R0,#20H,TT1MOV P1,#0FFH

CLR DIS3SETB DIS3CLR DIS4SETB DIS4CALL LONG_DELAYCALL LONG_DELAYCALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAYJMP EXIT_HUC

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCV

Page 96: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

TT1: CJNE R0,#21H,TT2

MOV P1,#0FFH CLR DIS5

SETB DIS5CLR DIS6SETB DIS6CALL LONG_DELAYCALL LONG_DELAY

CALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAYJMP EXIT_HUC

TT2: CJNE R0,#22H,TT3

MOV P1,#0FFH CLR DIS7

SETB DIS7CLR DIS8SETB DIS8CALL LONG_DELAYCALL LONG_DELAYCALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAYJMP EXIT_HUC

TT3: CJNE R0,#23H,TT4

MOV P1,#0FFH CLR DIS9

SETB DIS9CALL LONG_DELAYCALL LONG_DELAYCALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAYJMP EXIT_HUC

TT4: CJNE R0,#24H,TT5

MOV P1,#0FFH CLR DIS10

SETB DIS10

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCVI

Page 97: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

CLR DIS11SETB DIS11CALL LONG_DELAYCALL LONG_DELAYCALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAYJMP EXIT_HUC

TT5: CJNE R0,#25H,TT6

MOV P1,#0FFH

CLR DIS12SETB DIS12CLR DIS13SETB DIS13CALL LONG_DELAYCALL LONG_DELAYCALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAYJMP EXIT_HUC

TT6: CJNE R0,#26H,TT7

MOV P1,#0FFH CLR DIS14

SETB DIS14CLR DIS15SETB DIS15CLR DIS16SETB DIS16CLR DIS17SETB DIS17CALL LONG_DELAYCALL LONG_DELAYCALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAYJMP EXIT_HUC

TT7: CJNE R0,#27H,TT8

MOV P1,#0FFH CLR DIS18

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCVII

Page 98: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

SETB DIS18CLR DIS19SETB DIS19CALL LONG_DELAYCALL LONG_DELAYCALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAYJMP EXIT_HUC

TT8:CJNE R0,#28H,EXIT_HUCMOV P1,#0FFH

CLR DIS20

SETB DIS20CLR DIS21SETB DIS21CALL LONG_DELAYCALL LONG_DELAYCALL HIENTHI_2CALL LONG_DELAYCALL LONG_DELAY

EXIT_HUC: RET

;----Chon che do tat/mo chuong theo tung gio---- TAT_MO_CHUONG: CJNE R3,#0FFH,TT10

MOV A,MINUTECJNE A,#00H,TT10MOV A,SECONDCJNE A,#00H,TT10CLR SPEAKER ;Mo am thanh bao thucCALL LONG_DELAYCALL LONG_DELAYCALL LONG_DELAYCALL LONG_DELAY

TT10: SETB SPEAKER ;Tat am thanh bao thuc RET

;----Gui dieu kien STARRT den DS1307----- SEND_START:

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCVIII

Page 99: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

SETB SDA SETB SCL

CALL DELAY6US CLR SDA

CALL DELAY6US CLR SCL

CALL DELAY6US RET

;-----Gui dieu kien STOP den DS1307---- SEND_STOP: CLR SDA SETB SCL

CALL DELAY6USSETB SDA

CALL DELAY6USCLR SCLCALL DELAY6US

RET

;----Ghi 8 bit du lieu vao DS1307--- SEND_BYTE: MOV BITCOUNT,#08H SEND_BYTE_LOOP: JNB ACC.7,LEVEL_LOW SETB SDA JMP SEND_BITS LEVEL_LOW: CLR SDA SEND_BITS: SETB SCL CALL DELAY6US CLR SCL ;Ket thuc 1 xung nhip RL A DJNZ BITCOUNT,SEND_BYTE_LOOP JB LAST,NOT_ACK1 ;Neu lan doc cuoi cung thi

;khong gui bit ACK ACK1: ;Gui bit ACK CLR SDA SETB SCL CALL DELAY6US CLR SCL

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

XCIX

Page 100: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

CALL DELAY6US RET

NOT_ACK1: ;Gui bit Not_ACK (NACK) SETB SDA SETB SCL CALL DELAY6US CLR SCL CALL DELAY6US RET

;----Doc 8 bit du lieu tu DS1307---- READ_BYTE: MOV BITCOUNT,#08H MOV A,#00H SETB SDA READ_BITS:

SETB SCL MOV C,SDA CALL DELAY6US RLC A ;Dua SDA vao thanh ghi A CLR SCL CALL DELAY6US DJNZ BITCOUNT,READ_BITS JB LAST,NOT_ACK2 ;Neu lan doc cuoi cung thi

;khong gui bit ACK ACK2: ;Gui bit ACK CLR SDA SETB SCL CALL DELAY6US CLR SCL CALL DELAY6US RET

NOT_ACK2: ;Gui bit NACK SETB SDA SETB SCL CALL DELAY6US CLR SCL CALL DELAY6US RET

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

C

Page 101: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

;----Doc thoi gian thuc tu DS1307---- READ_CLOCK:

CALL SEND_STARTCLR LASTMOV A,#0D0HCALL SEND_BYTESETB LASTMOV A,#00HCALL SEND_BYTECALL SEND_STOP

CALL SEND_STARTCLR LASTMOV A,#0D1HCALL SEND_BYTECALL READ_BYTEMOV SECOND,ACALL READ_BYTEMOV MINUTE,A

CALL READ_BYTEMOV HOUR,ACALL READ_BYTEMOV DAY,ACALL READ_BYTEMOV DATE,ACALL READ_BYTEMOV MONTH,ACALL READ_BYTEMOV YEAR,ACALL READ_BYTEMOV SQW_OUT,ACALL READ_BYTEMOV ALK_HOUR,ASETB LASTCALL READ_BYTEMOV ALK_MINUTE,ACALL SEND_STOPRET

;----Cai dat thoi gian cho DS1307---- WRITE_CLOCK:

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CI

Page 102: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

CALL SEND_STARTCLR LASTMOV A,#0D0HCALL SEND_BYTEMOV A,#00HCALL SEND_BYTEMOV A,SECONDCALL SEND_BYTEMOV A,MINUTECALL SEND_BYTEMOV A,HOURCALL SEND_BYTEMOV A,DAYCJNE A,#08H,TTD

MOV A,#01H TTD:

CALL SEND_BYTEMOV A,DATECALL SEND_BYTEMOV A,MONTHCALL SEND_BYTE

MOV A,YEARCALL SEND_BYTEMOV A,#90HCALL SEND_BYTEMOV A,ALK_HOURCALL SEND_BYTE

SETB LASTMOV A,ALK_MINUTECALL SEND_BYTECALL SEND_STOPRET

;----Thoi gian bao thuc---- ALARM_TEST: MOV A,MINUTE CJNE A,ALK_MINUTE,EXIT_ALARM_TEST MOV A,HOUR CJNE A,ALK_HOUR,EXIT_ALARM_TEST CLR SPEAKER LOOP_ALK_TEST: MOV A,MINUTE

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CII

Page 103: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

CJNE A,ALK_MINUTE,EXIT_ALARM_TEST CALL HIENTHI_2 CALL READ_CLOCK JMP LOOP_ALK_TEST EXIT_ALARM_TEST: SETB SPEAKER RET

;----Xuat ket qua ra led 7 doan---- HIENTHI_2: MOV A,HOUR

ANL A,#0F0HSWAP ACALL READ

CLR DIS3SETB DIS3

CALL DELAY6US MOV A,HOUR

ANL A,#0FH CALL READ

CLR DIS4 SETB DIS4 CALL DELAY6US

MOV A,MINUTEANL A,#0F0HSWAP A

CALL READCLR DIS5

SETB DIS5 CALL DELAY6US MOV A,MINUTE

ANL A,#0FH CALL READ

CLR DIS6 SETB DIS6 CALL DELAY6US

MOV A,SECONDANL A,#0F0HSWAP A

CALL READCLR DIS7

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CIII

Page 104: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

SETB DIS7 CALL DELAY6US MOV A,SECOND

ANL A,#0FH CALL READ

CLR DIS8 SETB DIS8 CALL DELAY6US

MOV A,DAYCJNE A,#01H,TTDD

MOV A,#08H TTDD: CALL READ

CLR DIS9 SETB DIS9 CALL DELAY6US

MOV A,DATEANL A,#0F0HSWAP A

CALL READCLR DIS10

SETB DIS10 CALL DELAY6US

MOV A,DATEANL A,#0FH

CALL READCLR DIS11

SETB DIS11 CALL DELAY6US

MOV A,MONTHANL A,#0F0HSWAP A

CALL READCLR DIS12

SETB DIS12 CALL DELAY6US MOV A,MONTH

ANL A,#0FH CALL READ

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CIV

Page 105: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

CLR DIS13 SETB DIS13 CALL DELAY6US

MOV A,#20MOV B,#10

DIVABCALL READCLR DIS14SETB DIS14CALL DELAY6USMOV A,BCALL READCLR DIS15SETB DIS15CALL DELAY6US

MOV A,YEARANL A,#0F0HSWAP A

CALL READCLR DIS16

SETB DIS16 CALL DELAY6US MOV A,YEAR

ANL A,#0FH CALL READ

CLR DIS17 SETB DIS17 CALL DELAY6US

MOV A,ALK_HOURANL A,#0F0HSWAP A

CALL READCLR DIS18

SETB DIS18 CALL DELAY6US MOV A,ALK_HOUR

ANL A,#0FH CALL READ

CLR DIS19

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CV

Page 106: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

SETB DIS19 CALL DELAY6US

MOV A,ALK_MINUTEANL A,#0F0HSWAP A

CALL READ CLR DIS20 SETB DIS20 CALL DELAY6US MOV A,ALK_MINUTE

ANL A,#0FH CALL READ

CLR DIS21 SETB DIS21 CALL DELAY6US RET

;----Doc noi dung o nho DPTR---- READ:

MOVC A,@A+DPTR MOV P1,A RET

;----Tao tre 900us---- DELAY_900us: MOV TH1,#HIGH(-900) MOV TL1,#LOW(-900) SETB TR1

JNB TF1,$ CLR TF1 CLR TR1 RET

;----Tao tre 6us---- DELAY6US:

NOPNOPNOPNOPNOPNOP

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CVI

Page 107: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

RET ;----Tao tre (250*200*2)/10^6 = 0.1s---- LONG_DELAY: MOV R7,#250 L2: MOV R6,#200 DJNZ R6,$ DJNZ R7,L2 RET

LED7S: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H

END

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CVII

Page 108: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

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

Các bước thực hiện để cài đặt

thời gian cho “Lịch Vạn Niên Điện

Tử”

Bước 1: Ấn phím POWER

lần thứ nhất để mở chế độ cài đặt.

Lưu ý nếu như chế độ cài đặt

không được mở thì tất cả các phím

còn lại đều bị vô hiệu hoá.

Bước 2: Sau khi chế độ cài

đặt được mở, sử dụng phím

CONT hoặc CONT− để chọn vị

trí cài đặt. Phím CONT để next

(chuyển) đến vị trí kế tiếp, phím

CONT− để back (trở về) vị trí phía

sau.

Sử dụng 2 phím VOL hoặc

VOL− để chọn chế độ báo chuông

theo từng giờ (6h,7h,8h.….), phím VOL dùng để mở và VOL− dùng để tắt chế độ

này.

Bước 3: Nhập vào các giá trị cần cài đặt bằng các số trên remote từ 1 đến

10 (do remote không có số 0 nên số 10 lúc này được xem là số 0), vậy giá trị được

nhập giới hạn từ 0 đến 9. Nguyên tắt nhập số cài đặt tương tự như nguyên tắt nhập

số trong máy tính bỏ túi.

Bước 4: Ấn phím POWER lần thứ hai để tắt chế độ cài đặt.

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CVIII

Page 109: lich van nien dien tu

THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ

4. Code word của remote SONY Để có được các code word remote SONY tôi sử dụng các led đơn (mắt ở port 0)

để chỉ thị cho mỗi lần ấn phím. Sau đây là một vài code word mà tôi đã giải mã:

Tín hiệu hiển thị ở

Port 0Phím ấn remote

Mã lệnh khi ấn phím

(hex)00000000B 1 00H

00000001B 2 01H00000010B 3 02H

00000011B 4 03H

00000100B 5 04H

00000101B 6 05H

00000110B 7 06H

00000111B 8 07H

00001000B 9 08H

00001001B 10 09H

00010101B POWER 15H

00011000B CONT 18H

00011001B COUNT− 19H

00010010B VOL 12H

00010011B VOL− 13H

00100101B TV/VIDEO 25H

01111000B MEMD 78H

00001011B TUNE2 0BH

01110110B −FINE 76H

01110111B FINE 77H

01101100B TUNE1 6CH

01111100B SELECT 7CH

01100101B ENTER 65H

01100110B MENU 66H

00010000B PROGR 10H

00010001B PROGR− 11H

Giáo viên hướng dẫn: Sinh viên thực hiện:TS.Lương Vinh Quốc Danh Nguyễn Văn Bình

CIX