MỤC LỤCLỜI CẢM ƠN4TÓM TẮT ĐỀ TÀI5MỤC LỤC6PHẦN I: MỞ ĐẦU1I. KHÁI QUÁT VẤN ĐỀ1II. LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ1III. MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI2PHẦN II: CƠ SỞ LÝ THUYẾT3I.GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S5231. Tổng quan về 89S5232. Mô tả chân 89S5252.1. Sơ đồ chân 89S5252.2. Chức năng của các chân 89S5253. Tổ chức bộ nhớ bên trong 89S5273.1. RAM đa dụng93.2. RAM có thể định địa chỉ bit93.3. Các bank thanh ghi93.4. Các thanh ghi có chức năng đặc biệt93.4.1. Thanh ghi trạng thái chương trình (PSW: Program Status Word)103.4.2. Thanh ghi TIMER123.4.3. Thanh ghi ngắt (INTERRUPT)12II. GIỚI THIỆU IC CHỐT 74HC374211. Mô tả chân IC 74LS374212. Tổ chức bên trong IC74LS37421IV. ĐỒNG HỒ THỜI GIAN THỰC.261. Tổng quan về DS 1307261.1. Sơ đồ chân DS 1307261.2. Cấu tạo bên trong DS 1307272. Khái quát giao diện I2C313. Mode (chế độ) truyền dữ liệu giữa DS1307 và AT89S52343.1. Mode Data Write (chế độ ghi dữ liệu)343.2. Mode Data Read (chế độ dọc dữ liệu)36PHẦN III: THIẾT KẾ PHẦN CỨNG38I. SƠ ĐỒ VÀ CHỨC NĂNG TỪNG KHỐI451. Sơ đồ khối452. Chức năng của từng khối452.1. Khối thời gian thực452.2. Khối xử lý trung tâm (CPU)462.3. Khối âm thanh và hiển thị46II.SƠ ĐỒ CHI TIẾT VÀ NGUYÊN TẮC HOẠT ĐỘNG461. Sơ đồ chi tiết461.1. Khối thời gian thực (DS1307)461.2. Khối xử lý trung tâm (CPU)471.3. Khối âm thanh481.4. Khối hiển thị482. Nguyên tắt hoạt động50PHẦN IV: THIẾT KẾ PHẦN MỀM51I. LƯU ĐỒ VÀ GIẢI THUẬT CHƯƠNG TRÌNH561. Giải thuật561.1. Giải thuật chương trình chính561.2. Giải thuật chương trình con “WRITE_CLOCK”571.3. Giải thuật chương trình con “READ_CLOCK”582. Lưu đồ582.1. Lưu đồ chương trình chính582.2. Lưu đồ chương trình con612.3.1. Lưu đồ chương trình con “WRITE_CLOCK”622.3.2. Lưu đồ chương trình con “READ_CLOCK”622.3.3. Lưu đồ chương trình con ghi 1 byte vào DS1307“SEND_BYTE”642.3.4. Lưu đồ chương trình con đọc 1 byte từ DS1307“READ_BYTE”652.3.5. Lưu đồ chương trình con “ALARM_CLOCK_TEST”662.3.6. Lưu đồ chương trình con “TAT_MO_CHUONG”672.3.7. Lưu đồ chương trình con “HIENTHI”69PHẦN V: KẾT LUẬN VÀ ĐỀ NGHỊ71I. KẾT LUẬN71II. ĐỀ NGHỊ74TÀI LIỆU THAM KHẢO75
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
KHOA ĐIỆN _ ĐIỆN TỬ
ĐỒ ÁN MÔN HỌC
THIẾT KẾ LỊCH VẠN NIÊN ĐIỆN TỬ
NGUYỄN VĂN TIỆP NGUYỄN THỊ THƯỜNG Lớp: ĐT.K8.LC
HƯNG YÊN_2011
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 3
NHẬN XÉT CỦA HỘI ĐỒNG CHẤM THI
Trang 4
LỜI CẢM ƠN
Đầu tiên chúng em xin gửi lời cảm ơn đến Ban Giám Hiệu trường Đại Học
Sư Phạm Kỹ Thuật Hưng Yên đã cho chúng em một môi trường học tập tốt, cũngnhư là tạo nhiều điều kiện thuận lợi để chúng em có thể phát huy được khả năng củamì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ử thuộc khoa Công Nghệ Kỹ Thuật Điện_Điện Tử trường Đại Học
Sư Phạm Kỹ Thuật Hưng Yên đã tận tình chỉ dạy và truyền đạt những kiến thức quýbáu để chúng em có thể hoàn thành đồ án này, đồng thời đó cũng là một hành trangđáng quý để chúng 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 cô Phạm Thị Ngọc Anh là người
đã tận tình hướng dẫn và động viên chúng em trong suốt thời gian chúng em thựchiện đồ án môn học này
Em xin chân thành cảm ơn!
Hưng Yên, ngày tháng năm 2011
Sinh viên thực hiện
Mai Thị Hòa
Nguyễn văn Tiệp
Nguyễn Thị Thường
Trang 5TÓ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 gianthực (DS1307) và vi điều khiển Ngoài ra mạch còn sử dụng hiển thị ra led 7 đoạn.Với những nút bấm, 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 Mạch đã thiết kế thành công, hoạt động ổnđịnh với độ chính xác cao
Trang 6MỤC LỤC
LỜI CẢM ƠN 4
TÓM TẮT ĐỀ TÀI 5
MỤC LỤC 6
PHẦN I: MỞ ĐẦU 1
I KHÁI QUÁT VẤN ĐỀ 1
II LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 1
III MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI 2
PHẦN II: CƠ SỞ LÝ THUYẾT 3
I.GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52 3
1 Tổng quan về 89S52 3
2 Mô tả chân 89S52 5
2.1 Sơ đồ chân 89S52 5
2.2 Chức năng của các chân 89S52 5
3 Tổ chức bộ nhớ bên trong 89S52 7
3.1 RAM đa dụng 9
3.2 RAM có thể định địa chỉ bit 9
3.3 Các bank thanh ghi 9
3.4 Các thanh ghi có chức năng đặc biệt 9
3.4.1 Thanh ghi trạng thái chương trình (PSW: Program Status Word) 10
3.4.2 Thanh ghi TIMER 12
3.4.3 Thanh ghi ngắt (INTERRUPT) 12
II GIỚI THIỆU IC CHỐT 74HC374 21
1 Mô tả chân IC 74LS374 21
2 Tổ chức bên trong IC74LS374 21
IV ĐỒNG HỒ THỜI GIAN THỰC 26
1 Tổng quan về DS 1307 26
1.1 Sơ đồ chân DS 1307 26
1.2 Cấu tạo bên trong DS 1307 27
2 Khái quát giao diện I2C 31
3 Mode (chế độ) truyền dữ liệu giữa DS1307 và AT89S52 34
3.1 Mode Data Write (chế độ ghi dữ liệu) 34
3.2 Mode Data Read (chế độ dọc dữ liệu) 36
PHẦN III: THIẾT KẾ PHẦN CỨNG 38
I SƠ ĐỒ VÀ CHỨC NĂNG TỪNG KHỐI 45
1 Sơ đồ khối 45
2 Chức năng của từng khối 45
2.1 Khối thời gian thực 45
2.2 Khối xử lý trung tâm (CPU) 46
2.3 Khối âm thanh và hiển thị 46
II.SƠ ĐỒ CHI TIẾT VÀ NGUYÊN TẮC HOẠT ĐỘNG 46
1 Sơ đồ chi tiết 46
Trang 71.1 Khối thời gian thực (DS1307) 46
1.2 Khối xử lý trung tâm (CPU) 47
1.3 Khối âm thanh 48
1.4 Khối hiển thị 48
2 Nguyên tắt hoạt động 50
PHẦN IV: THIẾT KẾ PHẦN MỀM 51
I LƯU ĐỒ VÀ GIẢI THUẬT CHƯƠNG TRÌNH 56
1 Giải thuật 56
1.1 Giải thuật chương trình chính 56
1.2 Giải thuật chương trình con “WRITE_CLOCK” 57
1.3 Giải thuật chương trình con “READ_CLOCK” 58
2 Lưu đồ 58
2.1 Lưu đồ chương trình chính 58
2.2 Lưu đồ chương trình con 61
2.3.1 Lưu đồ chương trình con “WRITE_CLOCK” 62
2.3.2 Lưu đồ chương trình con “READ_CLOCK” 62
2.3.3 Lưu đồ chương trình con ghi 1 byte vào DS1307“SEND_BYTE” 64 2.3.4 Lưu đồ chương trình con đọc 1 byte từ DS1307“READ_BYTE” 65
2.3.5 Lưu đồ chương trình con “ALARM_CLOCK_TEST” 66
2.3.6 Lưu đồ chương trình con “TAT_MO_CHUONG” 67
2.3.7 Lưu đồ chương trình con “HIENTHI” 69
PHẦN V: KẾT LUẬN VÀ ĐỀ NGHỊ 71
I KẾT LUẬN 71
II ĐỀ NGHỊ 74
TÀI LIỆU THAM KHẢO 75
Trang 8PHẦN 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ệ Nanohà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 đượcbả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 ICthời gian thực như DS1307, DS12887…
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ốngcủ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 chúng 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 cao giá trị của những mạch điện tử trong đời sống của conngười
II MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI
Trong đồ án này chúng em sử dụng một con IC thời gian thực (DS1307) kếthợ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áothứ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ác động vào các nút điều chỉnh thì 89S52 bắt đầu giãi mã tín hiệu này, sau khigiải mã 89S52 ghi dữ liệu nhận được vào DS1307 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
Hiển thị ra led 7 đoạn
Trang 9 Bộ cài đặt thời gian được sử dụng bằng các nút nhấn.
Khi thời gian báo thức trùng với thời gian thực thì loa phải phát ra âmthanh báo thức
Giá thành sản phẩm không quá đắt
Dựa vào yêu cầu của đề tài chúng em đã phân ra thành 2 khối lớn:
o Khối A: 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 sử dụng các nút nhấn
Trang 10PHẦN II: CƠ SỞ LÝ THUYẾT
I.GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52
1 Tổng quan về 89S52
AT89S52 là họ IC vi điều khiển do hãng Intel sản xuất Các sản phẩmAT89S52 thích hợp cho những ứng dụng điều khiển Việc xử lý trên byte và cácphép 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ênchip 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, 3TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếpbán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP
Các đặc điểm của chip AT89S52 được tóm tắt như sau:
8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
Tần số hoạt động từ: 0Hz đến 24 MHz
3 mức khóa bộ nhớ lập trình
3 bộ Timer/counter 16 Bit
128 Byte RAM nội
4 Port xuất /nhập I/O 8 bit
Giao tiếp nối tiếp
64 KB vùng nhớ mã ngoài
Trang 11 64 KB vùng nhớ dữ liệu ngoại.
4 s cho hoạt động nhân hoặc chia
Sơ đồ khối của AT89S52
Trang 12khá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
đỡ LCC (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 ứngdụ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, đốivới thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu
Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7) Port 1 là port IO dùng cho giao
tiếp với thiết bị bên ngoài nếu cần
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có tác dụng
kép dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối với các thiết
bị dùng bộ nhớ mở rộng
Trang 13Port 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ệ đếncác đặc tính đặc biệt của 89S52 như ở bảng sau:
Bit Tên Chức năng chuyển đổi
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ươngtrình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong89S52 để giải mã lệnh Khi 89S52 thi hành chương trình trong ROM nội, PSEN ởmức cao
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ứ 30dù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ốichúng với IC chốt
Trang 14Tí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ấpnguồn 21V khi lập trình cho Eprom trong 89S52
RST (Reset): Khi ngõ vào tín hiệu này đưa lên
mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên
trong được nạp những giá trị thích hợp để khởi
động hệ thống Khi cấp điện mạch phải tự động
nối thêm thạch anh và các tụ Tần số thạch anh
tùy thuộc vào mục đích của người sử dụng, giá
trị tụ thường được chọn là 33p
3 Tổ chức bộ nhớ bên trong 89S52
Bộ nhớ trong 89S52 bao gồm ROM và RAM RAM trong 89S52 bao gồmnhiề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 bankthanh 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êntrong 89S52 nhưng 89S52 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và64K byte dữ liệu bên ngoài
Trang 15Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:
Địa chỉ
byte Địa chỉ bit Địa chỉ bit
Địa chỉ byte
Trang 16RAM 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
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 đadụ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 bankthanh 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 đượcthực hiện thông qua thanh ghi từ trạng thái chương trình (PSW)
3.4 Các thanh ghi có chức năng đặc biệt
Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip
vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình vàthanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp) Cũng như R0
Trang 17đến R7, 89S52 có 21 thanh ghi có chức năng đặc biệt (SFR: Special FunctionRegister) ở 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)
00=Bank 0; address 00H07H01=Bank 1; address 08H0FH10=Bank 2; address 10H17H11=Bank 3; address 18H1FH
Chức năng từng bit trạng thái chương trình
- Cờ Carry CF (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áncộ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ộngkhông tràn và phép trừ không có mượn
- Cờ Carry phụ AC (Auxiliary Carry Flag):
Trang 18Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC đượcset nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0AH - 0FH Ngược lại AC
= 0
- Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xóa sau khi reset
hệ thống và được thay đổi bởi phần mềm khi cần thiết
Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng làBank 0, Bank1, Bank2 và Bank3
Trang 19Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối
tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu.
3.4.2 Thanh ghi TIMER
Vi Điều Khiển 89S52 có 3 timer 16 bit, mỗi timer có bốn cách làm việc.Người ta sử dụng các timer để:
o Định khoảng thời gian
o Đếm sự kiện.
o Tạo tốc độ baud cho port nối tiếp trong 89S52
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở nhữngkhoả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 racá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ờithời chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trìnhkhá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à đượccho 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
Trang 20thanh 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)
IP.5 ET2 BDH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
timer 2IP.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 1IP.2 EX1 BAH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại ngắt
ngoài 1IP.1 ET0 B9H Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
timer 0IP.0 EX0 B8H Chọn mức ưu tiên cao (=1) hay thấp (=0) tại ngắt
Trang 21 Nếu chương trình của một ngắt có mức ưu tiên thấp đang chạy mà có mộtngắ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ộtchươ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
IE.7 EA AFH Cho phép / Cấm toàn bộ
IE.5 ET2 ADH Cho phép ngắt từ Timer 2 (8052)
IE.4 ES ACH Cho phép ngắt port nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ Timer 1
IE.2 EX1 AAH Cho phép ngắt ngoài 1
IE.1 ET0 A9H Cho phép ngắt từ Timer 0
IE.0 EX0 A8H Cho phép ngắt ngoài 0
Tóm tắt thanh ghi IE
- 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 đặtlên mức cao để xác nhận ngắt
Trang 22Bên ngoài 1 IE1 TCON.3
Các loại cờ ngắt
- Các vectơ ngắt:
Khi chấp nhận ngắt, giá trị được nạp vào PC gọi là vector ngắt Nó là địa chỉ
bắt đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau :
Trang 23o 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 chophé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 IC74LS374
Sơ đồ cấu tạo của 74LS374
Bảng trạng thái của 74LS374
Ngõ vào cho
Ngõ vào xung Clock (CP)
Data inputs D0 –D7
Data outputs Q0 – Q7
Trang 24sử dụng, tính bằng giây, phút, giờ…DS1307 là một sản phẩm của DallasSemiconductor (một công ty thuộc Maxim Integrated Products) Chip này có 7thanh 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êncấ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ânnhư 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
- V BAT: cực dương của một nguồn pin 3V nuôi chip
- GND: chân mass chung cho cả pin 3V và Vcc
- Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển.
Chú ý: nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được)
- SQW/OUT: Đây là chân tạo ngõ ra xung vuông của DS1307 có 4 chế độ
1Hz, 4.096HZ, 8.192Hz, 32.768Hz các chế độ này đuợc quy định bởi các bit của thanh ghi Control Register (địa chỉ 0x07)
- SCL và SDA là đường giữ xung nhịp và đường dữ liệu của giao diện I2C mà
chúng ta sẽ tìm hiểu sau
Trang 251.2 Cấu tạo bên trong DS1307
Sơ đồ khối bên trong chip DS1307
Cấu tạo bên trong DS1307 bao gồm một số thành phần như mạch nguồn,mạch dao động, mạch điều khiển logic, mạch giao điện I2C, con trỏ địa chỉ và cácthanh 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ụngDS1307 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 quagiao diện I2C
Như đã trình bày, bộ nhớ DS1307 có tất cả 64 thanh ghi 8bit được đánh địachỉ 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
Trang 26chứ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ờigian 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 7thanh 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.
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à 1bit đ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ếtphải reset bit này xuống 0 ngay từ đầu
Trang 27Thanh 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 ghinày được dùng cho chữ số hàng đơn vị của giờ Do DS1307 hỗ trợ 2 loại hệ thốnghiể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 trongtrườ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ụccủ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ạiluô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ỏ raSQW/OUT Giá trị các bít trong thanh ghi CONTROL REGISTER được biểu diểnnhư sau:
Trang 28Bit 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:
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ôngnối tiếp đồng bộ do hãng điện tử Philips Semiconductor sáng lập và xây dựngthà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ềnthông nối tiếp đồng bộ, cần có 1 đường tạo xung giữ nhịp cho quá trìnhtruyề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ế
Trang 29đường SDA không được đổi trạng thái khi SCL ở mức cao (trừ điều kiệnSTART và STOP) Chân SDA có thể được đổi trạng thái khi SCL ở mứcthấ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)
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 giaotiế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ứccao (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
Trang 30- Điều kiện REPEAT START (bắt đầu lặp lại): khoảng giữa điều kiệnSTART 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úcquá 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ềukiện START gọi là REPEAT START Khả năng này thường được dùng khimaster muốn lấy dữ liệu liên tiếp từ các Slaves
- Bit ACK: dùng để báo hiệu dữ liệu đã được nhận, bit ACK được tạo ra tạithờ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ốicùng, bit NACK cũng được tạo ra tại thời điểm xung clock thứ 9 bằng cách kéochâ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ữ
Mô tả điều kiện START, STOP và REPEAT
START
Trang 31liệ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 trongmộ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 đilần lượt Sau 8 xung clock thì dữ liệu đã được truyền đi, ở xung clock thứ 9 thì bitACK được truyền đi báo hiệu đã nhận đủ 8 bits Thiết bị truyền sau khi nhận đượcbit 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 đảmbả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
Trang 32(NACK) để báo cho thiết bị chủ biết Thiết bị chủ sẽ tạo ra xung STOP để kết thúchay 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 chipgiao 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ừ DS1307và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 khixác lập giá trị ban đầu cho các thanh ghi thời gian hoặc dùng để canh chỉnh thờigian 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 DS1307trong 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 1mạ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ệnSTART đến Slave (DS1307), tiếp theo sau master sẽ là 7 bit địa chỉ SLA của slave
Trang 33(cố định là: 1101000b) Do chế độ này là Data Write nên bit W = 0 và sẽ được gởikèm sau SLA Bit ACK (A) được slave trả về cho master sau mỗi quá trình giaotiếp.
Tiếp theo sau địa chỉ SLA sẽ là 1 byte chứa địa chỉ của thanh ghi cầntruy cập (Word Address) Cần phân biệt địa chỉ của thanh ghi cần truy cập và địachỉ SLA Như đã đề cập trên, địa chỉ của thanh ghi cần truy cập sẽ được lưu trongthanh ghi địa chỉ (hay con trỏ địa chỉ), vì vậy byte dữ liệu đầu tiên sẽ được chứatrong 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ỉ đượcchỉ định bởi Word Address, sau khi ghi xong 1 byte thì Word Address tự động tăngnên các byte tiếp theo sẽ được ghi liên tiếp vào DS1307 ở các thanh ghi kế sau Sốlượng bytes dữ liệu cần ghi do master quyết định và không được vượt quá dunglương bộ nhớ của DS1307 Quá trình ghi kết thúc khi master phát ra điều kiệnSTOP
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 1bit 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 đượcdù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 modeData Write được mô tả như hình sau:
Trang 34Chế độ Data Read
Nguyên tắt truyền trong chế độ Data Read cơ bản cũng giống như trongtruyền chế độ Data Write Trong chế độ Data Read bit R = 1 sẽ được gởi kèm sau 7bit 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 sauSLA+R đều là dữ liệu đọc từ bộ nhớ của DS1307
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 Để ghigiá trị vào con trỏ định địa chỉ chúng ta sẽ gọi chương trình Data Write với chỉ 1byte được ghi sau SLA+W như phần chú ý ở trên
Trang 35PHẦN III: THIẾT KẾ PHẦN CỨNG
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 quangtrọ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ờigian thực cho hệ thống
2.2 Khối xử lý trung tâm (CPU)
Đây được xem là khối quang trong nhất Chức năng là đọc/ghi dữ liệu vàochip thời gian thực (DS1307), giải mã tín hiệu hồng ngoại được phát ra từ remoteSONY 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 quakhối hiển thị thứ 2 và khối âm thanh
Khối xử lý trung tâm (CPU)
Thời gian thực(DS1307)
Hiển thị
Thu tín hiệu hồng ngoại
Trang 362.5 Khối âm thanh và hiển thị
Đây là 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)
1
3 8
1.2 Khối thu hồng ngoại
Sơ đồ kết nối mắt thu hồng ngoại TSOP1738 như sau: