LỜI CẢM ƠN Đầu tiên 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 em một môi trường học tập tốt, cũng như tạo điều kiện thuận lợi để chúng em có thể phát huy được khả năng của mình. Qua thời gian nghiên cứu và thực hiện, đến nay đồ án tốt nghiệp với đề tài: “Thiết kế, chế tạo đồng hồ số vạn niên ” do giảng viên Nguyễn Thị Nhung hướng dẫn đã được hoàn thiện. Trong suốt thời gian nghiên cứu, chúng em đã gặp không ít khó khăn và đã nhận được nhiều sự giúp đỡ nhiệt thành và quý báu của cô, chúng em bày tỏ lòng biết ơn sâu sắc tới Giảng Viên Nguyễn Thị Nhung đã tin tưởng giao đồ án, chỉ đạo và tận tình hướng dẫn chúng em trong suốt quá trình thực hiện đồ án tốt nghiệp này. Chúng em xin được bày tỏ lòng cảm ơn chân thành tới các quý ThầyCô giáo trong khoa Đ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ự Để hoàn thành đồ án tốt nghiệp này cũng có sự đóng góp không nhỏ của các bạn sinh viên lớp ĐTK7, chúng tôi xin cảm ơn các bạn rất nhiều.
Trang 1NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Giáo viên hướng dẫn
Nguyễn Thị Nhung
Trang 2NHẬN XÉT, ĐÁNH GIÁ CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Chữ ký của giáo viên phản biện Hưng yên, ngày … .tháng…… năm 201
Trang 3
LỜI CẢM ƠN
Đầu tiên 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 em một môi trường học tập tốt, cũng như tạo điều kiện thuậnlợi để chúng em có thể phát huy được khả năng của mình
Qua thời gian nghiên cứu và thực hiện, đến nay đồ án tốt nghiệp với đề tài:
“Thiết kế, chế tạo đồng hồ số vạn niên ” do giảng viên Nguyễn Thị Nhung hướngdẫn đã được hoàn thiện Trong suốt thời gian nghiên cứu, chúng em đã gặp không ítkhó khăn và đã nhận được nhiều sự giúp đỡ nhiệt thành và quý báu của cô, chúng embày tỏ lòng biết ơn sâu sắc tới Giảng Viên Nguyễn Thị Nhung đã tin tưởng giao đồ
án, chỉ đạo và tận tình hướng dẫn chúng em trong suốt quá trình thực hiện đồ án tốtnghiệp này
Chúng em xin được bày tỏ lòng cảm ơn chân thành tới các quý Thầy/Cô giáotrong khoa Điện - Điện tử trường Đại Học Sư Phạm Kỹ Thuật Hưng Yên đã tận tìnhchỉ dạy và truyền đạt những kiến thức quý báu để chúng em có thể hoàn thành đồ ánnày, đồng thời đó cũng là một hành trang đáng quý đề chúng em có thể tiếp bước trêncon đường sự nghiệp sau này
Để hoàn thành đồ án tốt nghiệp này cũng có sự đóng góp không nhỏ của các bạnsinh viên lớp ĐTK7, chúng tôi xin cảm ơn các bạn rất nhiều
Chúng em xin chân hành cảm ơn!
Trang 4LỜI NÓI ĐẦU
Trong thời đại hiện nay, với tốc độ phát triển nhanh chóng của các ngành côngnghiệp hiện đại như : cơ khí, động lực….Thì ngành điện - điện tử cũng đóng một vaitrò rất quan trọng Ngành điện tử đã xâm nhập vào cuộc sống con người khá sớm, từnhững thiết bị đơn giản như: đèn chiếu sáng, radio,… Đến những máy móc phức tạp
và ứng dụng công nghệ cao như: hệ thống rada, hệ thống camera, robot,… Tất cảđều được ứng dụng rộng rãi và góp phần hiệu quả giải phóng sức lao động chân taycủa con người, đưa con người hướng tới một thế giới công nghệ ngày càng hiện đại
và tinh vi hơn
Ngành điện tử đã ảnh hưởng không nhỏ đến cuộc sống của con người Vì thếcon người không ngừng nổ lực, phát huy, nghiên cứu cho ra đời những thiết bị khôngnhững phục vụ cho cuộc sống hằng ngày mà còn hỗ trợ cho nhiều lĩnh vực khác Đặcbiệt hiện nay trong lĩnh vực vi xử lý, những ứng dụng của nó đã mang lại hiệu quảrất thiết thực trong cuộc sống như : quang báo điện tử, lịch vạn niên, điều khiển tốc
độ động cơ, hệ thống đếm sản phẩm….Là sinh viên chuyên nghành điện tử côngnghiệp, để vận dụng những kiến thức chuyên ngành đã học tăng cường vốn hiểu biếtcủa bản thân về lĩnh vực mình quan tâm chúng em đã quyết định chọn đề tài “Thiết
kế, chế tạo đồng hồ số vạn niên” để làm đồ án tốt nghiệp của mình Để qua đó thểhiện được một phần mô hình ứng dụng kiến thức đã học vào phục vụ cuộc sống, giađình, xã hội…
Bằng những kiến thức đã đạt được trong quá trình học tập tại nhà trường vànhững tìm hiểu nghiên cứu bên ngoài cùng với sự nỗ lực của bản thân, mỗi sinh viêntrong nhóm của chúng em đã cố gắng hết sức mình để hoàn thành những ý tưởngthiết kế cũng như yêu cầu đặt ra của đề tài tốt nghiệp So với thời gian học tập tạitrường thì đó là thành quả của quá trình học tập cùng với những thành công ban đầutrước khi tốt nghiệp ra trường Nhóm chúng em đã cố gắng nỗ lực hết mình trongsuốt thời gian thực hiện đề tài này nhưng với lượng kiến thức và thời gian cho phépnên đồ án còn nhiều thiếu sót Nhóm chúng em mong nhận được nhiều sự đóng góp ýkiến của quý thầy cô và các bạn về đề tài này cũng như hướng mở rộng, phát triển để
đề tài hoàn thiện hơn
Trang 5MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 1
NHẬN XÉT, ĐÁNH GIÁ CỦA GIÁO VIÊN PHẢN BIỆN 2
LỜI CẢM ƠN 3
LỜI NÓI ĐẦU 4
DANH MỤC HÌNH VẼ 6
DANH MỤC BẢNG BIỂU 8
DANH MỤC TỪ VIẾT TẮT 9
CHƯƠNG I : CƠ SỞ LÝ THUYẾT 10
1 1 GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52 10
1.1.1 Tổng quan về 89S52 10
1.1.2 Mô tả chân 89S52 12
1.1.3 Tổ chức bộ nhớ bên trong 89S52 14
1.2 TỔNG QUAN VỀ IC DS1307( IC ĐỊNH THỜI GIAN THỰC) 20
1.2.1 Sơ đồ chân DS1307 20
1.2.2 Cấu tạo bên trong DS1307 21
1.2.3 Khái quát giao diện I2C 24
1.2.4 Chế độ truyền dữ liệu giữa DS1307 và AT89S52 28
1.3 GIỚI THIỆU IC 74HC154 30
1.3.1 Giới thiệu về IC 74HC154 30
1.3.2 Nguyên tắc hoạt động của IC 74HC154 31
1.4 IC CẢM BIẾN NHIỆT DS18B20 32
1.4.1 Khái quát về IC DS18B20 32
1.4.2 Thanh ghi dữ liệu 33
1.4.3 Trao đổi dữ liệu giữa vi điều khiển và DS1820 34
1.4.4 Cách đọc giá trị nhiệt độ 35
1.5 IC ĐỆM ĐẢO ULN 2803 36
Trang 61.5.2 Thông số kỹ thuật của ULN 2803 37
1.6 Tổng quan về led 7thanh 37
1.6.1 Giới thiệu led 7thanh 37
1.6.2 Các phương pháp điều khiển 39
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 44
2.1 Sơ đồ khối toàn hệ thống 44
2.2 Nguyên lý hoạt động của từng khối 44
2.2.1.Khối nguồn 45
2.2.2.Khối phím bấm 45
2.2.3.Khối điều khiển 46
2.2.4.Khối hiển thị 47
2.2.5.Khối nhiệt độ 48
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG 49
3.1 Sơ đồ thuật toán cho chương trình 49
3.2 Sơ đồ mạch board 55
KẾT LUẬN 58
Tài liệu tham khảo 60
PHỤ LỤC 61
1 Phần mềm đồng hồ thời gian thực 61
2 Phần mềm đo nhiệt độ 100
Trang 7DANH MỤC HÌNH VẼ
Hình 1.1: Sơ đồ khối AT89S52 11
Hình 1.2: Sơ đồ chân 89S52 12
Hình 1.3: Hình dạng cấu tạo của chip DS1307 21
Hình 1.4: Sơ đồ khối bên trong của DS1307 22
Hình 1.5: Tổ chức bộ nhớ trong của DS1307 23
Hình 1.6: Đường truyền dữ liệu của I2C 26
Hình 1.7: Mô tả điều kiện Start, Stop và Repeat 27
Hình 1.8: Bit ACK/NACK trong giao diện I2C 27
Hình 1.9 : Giữ liệu được truyền trên giao diện I2C 28
Hình 1.10 : Chế độ ghi dữ liệu 29
Hình 1.11: Chế độ đọc dữ liệu 30
Hình 1.12: Sơ đồ chân IC 74HC154 .31
Hình 1.13: Sơ đồ bên trong 74HC154 31
Hình 1.14: Hình dạng bên ngoài của DS 18B20 33
Hình 1.15: Tổ chức bộ nhớ của DS18B20 34
Hình 1.16: Sơ đồ chân của ULN 2803 37
Hình 1.17: Sơ đồ cấu tạo 1 kênh đệm dòng của ULN 2803 38
Hình 1.18: Cấu tạo và hình dạng led 7 thanh 39
Hình 1.19: Điều khiển led bằng phương pháp trực tiếp qua vi điều khiển 40
Hình 1.20: Điều khiển led bằng phương pháp trực tiếp qua IC giải mã 41
Hình 1.21: Phương pháp quét Led 41
Hình 1.22: Phương pháp chốt 44
Hình 3.1: Lưu đồ thuật toán cho thời gian 50
Hình 3.2: Lưu đồ thuật toán cho nhiệt độ 50
Hình 3.3: Lưu đồ thuật toán ghi 1 byte vào DS1307“SEND_BYTE” 51
Hình 3.4: Lưu đồ thuật toán đọc 1 byte từ DS1307“READ_BYTE” 52
Hình 3.5: Lưu đồ thuật toán “READ_CLOCK” 53
Hình 3.6: Lưu đồ thuật toán “WRITE_CLOCK” 54
Hình 3.7: Lưu đồ thuật toán hiển thị led 55
Hình 3.8: Sơ đồ board mạch điều khiển 56
Hình 3.9: Sơ đồ board mạch nhiệt độ 57
Hình 3.10: Sơ đồ board mạch hiển thị 58
Hình 3.11: Sơ đồ board mạch bàn phím 58
Trang 8DANH MỤC BẢNG BIỂU
Bảng 1.1: Các chức năng chuyển đổi của cổng P3 13
Bảng 1.2: Tổ chức bộ nhớ bên trong của 89S52 15
Bảng 1.3: Thanh ghi trạng thái chương trình 16
Bảng 1.4: Bảng Bank thanh ghi 17
Bảng 1.5: Bảng thanh ghi IP 19
Bảng 1.6: Bảng thanh ghi IE 19
Bảng 1.7: Các cờ ngắt 20
Bảng 1.8: Các vectơ ngắt 20
Bảng 1.9 : Tổ chức theo từng bit của bộ nhớ 23
Bảng 1.10: Bảng tần số dao động của ngõ ra SQW/OUT 25
Bảng 1.11: Bảng chức năng của IC 74HC154 32
Bảng 1.12: Bảng đọc giá trị nhiệt độ 37
Trang 9DANH MỤC TỪ VIẾT TẮT
IC : Integrated Circuit
RAM : Random Access Memory
ROM : Read Only Memory
EPROM : Erasable Programmable read Only Memory
PSEN : Program Store Enable
ALE : Address Latch Enable
EA : External Access
RST : Reset
I/O port : Input/Output port
SFR : Secial Function Regiter
PSW : Proram Status Word
BCD : Binary Code Decimal
I2C : Inter – Integrated Cỉcuit
SDA : Serial Data
SCL : Serial Clock
SLA : Slave Address
Trang 10CHƯƠNG I : CƠ SỞ LÝ THUYẾT
1 1 GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52
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 chophép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển AT89S52 cung cấpnhữ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 xungClock và bộ dao động ON-CHIP Các đặc điểm của chip AT89S52 được tóm tắt nhưsau:
• 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
• Tần số hoạt động từ: 0Hz đến 24 MHz
• 3 mức khóa bộ nhớ lập trình
• 3 bộ Timer/counter 16 Bit
• 128 Byte RAM nội
• 4 Port xuất /nhập I/O 8 bit
• Giao tiếp nối tiếp
• 64 KB vùng nhớ mã ngoài
• 64 KB vùng nhớ dữ liệu ngoại
• 4µs cho hoạt động nhân hoặc chia
Trang 11
Sơ đồ khối của AT89S52
Hình 1.1: Sơ đồ khối AT89S52
Trang 121.1.2 Mô tả chân 89S52
Hình 1.2: Sơ đồ chân 89S52
Chức năng của các chân 89S52 :
Port 0 : từ chân 39 đến chân 32 (P0.0 - P0.7) Port có 2 chức năng : Trong cácthiế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à dữ liệu
Port 1 : từ chân 1 đến chân 8 (P1.0 - P1.7) Port 1 là port IO dùng cho giao tiếpvới thiết bị bên ngoài nếu cần, các chức năng khác : T2, T2EX, MOSI, MISO, SCK.Trong đó:
T2 và T2EX dùng cho Timer/Counter
Bit MOSI, MISO, SCK dùng để truyền dữ liệu theo chuẩn SPI đồng thời cóchức năng kết nối với mạch nạp chương trình
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épdù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
Port3 : Từ chân 10 đến chân 17 (P3.0-P3.7).Port 3 là port có tác dụng kép Cácchâ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:
Trang 13Bit Tên Chức năng chuyển đổiP3.0
P3.1P3.2P3.3P3.4P3.5P3.6P3.7
RXDTXDINT0INT1T0T1WRRD
Ngõ vào dữ liệu nối tiếpNgõ xuất dữ liệu nối tiếpNgõ vào ngắt cứng thứ 0Ngõ vào ngắt cứng thứ 1Ngõ vào TIMER/COUNTER THỨ 0Ngõ vào TIMER/COUNTER THỨ 1Tín hiệu ghi dữ liệu nên bộ nhớ ngoàiTín hiệu đọc bộ nhớ dữ liệu ngoài
Bảng 1.1: Các chức năng chuyển đổi của cổng P3
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 từEPROM qua bus giữ 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ứ 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
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) Nếu ở mức 1, 89S52 thi hành chương trình từ ROMnội Nếu ở mức 0, 89S52 thi hành chương trình từ bộ nhớ mở rộng Chân EA đượclấ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 ghibên trong được nạp những giá trị thích hợp để khởi động hệ thống Khi cấp điệnmạch phải tự động Reset
Trang 14Bộ 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
1.1.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ềuthà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 thanhghi và các thanh ghi chức năng đặc biệt AT89S52 có bộ nhớ được tổ chức theo cấutrúc Harvard: Có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Chươngtrì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ới64K byte bộ nhớ chương trình và 64K byte dữ liệu bên ngoài
Bảng 1.2: Tổ chức bộ nhớ bên trong của 89S52
Trang 15RAM 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
b 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
c 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 thanhghi 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 đổibank thanh ghi được thực hiện thông qua thanh ghi từ trạng thái chương trình (PSW)
d 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 đếnR7, 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 :
٭٭ Thanh ghi trạng thái chương trình (PSW: Program Status Word)
Trang 16Bảng 1.3: Thanh ghi trạng thái chương trình
Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag):
Cờ nhớ thường đượ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ếukế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 sẽ được chọn Bank tích cực tương ứng
Bảng 1.4: Bảng Bank thanh ghi
Trang 17- 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 trong một thanh ghi A cộng với bit Parity luôn chẵn Ví dụ A chứa10101101B thì bit P set lên một để tổng số bit 1 trong A và P tạo thành số chẵn BitParity 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
● Thanh ghi TIMER
Vi điều khiển 89S52 có 3 timer 16 bit, mỗi timer có 4 cách làm việc Người ta sửdụng các timer để:
- Định khoảng thời gian
- Đếm sự kiện
- 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)
● 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ờichươ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ềukhiể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, 3 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éptừ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 chocác ngắt (giá trị thanh ghi IP khi reset là 00h)
Trang 18Bit Kí
hiệu
Địa chỉbit
Mô tả
IP.5 ET20 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ếpIP.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 1IP.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
Bảng 1.5: Bảng thanh ghi IP
- Nếu 2 ngắt xảy ra đồng thời thì ngắt 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ốitiế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ìnhkhá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 đặc biệt
có định địa chỉ bit IE ( Interrupt Enable : cho phép ngắt ) ở địa chỉ
IE.5 ET2 ADH Cho phép ngắt từ timer 2
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
Bảng 1.6: Bảng 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 đặt lên mứccao để xác nhận ngắt
Trang 19Ngắt Cờ Thanh ghi SFR và vị trí bit
Trang 201.2 TỔNG QUAN VỀ IC DS1307( IC ĐỊNH THỜI GIAN THỰC)
1.2.1 Sơ đồ chân DS1307
DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệmthờ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ứathời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm Ngoài ra DS1307cò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ênngoài rất đơn giản DS1307 xuất hiện ở 2 gói SOIC và DIP có 8 chân như trong hìnhsau
Hình 1.3: Hình dạng 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.768 KHz làm nguồn tạo dao động cho chip
- 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.096 HZ, 8.192 Hz, 32.768 Hz 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
Trang 211.2.2 Cấu tạo bên trong DS1307
Hình 1.4: Sơ đồ khối bên trong của DS1307Cấu tạo bên trong DS1307 bao gồm một số thành phần như mạch nguồn, mạchdao động, mạch điều khiển logic, mạch giao điện I2C, con trỏ địa chỉ và các thanhghi (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 I2CNhư đã 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ứabiế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),
Trang 22tương đương với việc “cài đặt” thời gian khởi động cho RTC Việc đọc giá trị từ 7thanh ghi là quá trình đọc thời gian thực mà RTC tạo ra.
Hình 1.5: Tổ chức bộ nhớ trong của 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ứctheo từng bit của các thanh ghi này trong hình sau:
Bảng 1.9 : Tổ chức theo từng bit của bộ nhớ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)
Trang 23Thanh 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ềukhiể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ảireset 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 chipDS1307 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ểnthị giờ là: 12h và 24h giờ, vì vậy bit thứ 6 được dùng để xác lập hệ thống giờ Nếubit thứ 6 = 0 thì hệ thống 24h được chọn, khi đó 2 bit thứ 5 và thứ 4 dùng mã hóachữ 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 đượcchọn Với trường hợp này chỉ có 1 bit thứ 4 dùng mã hóa chữ số hàng chục của giờ,bit thứ 5 chỉ buổi trong ngày (AM hoặc PM) Bit thứ 5 = 0 là AM và bit thứ 5 = 1 là
PM Bit thứ 7 luôn bằng 0
Thanh ghi thứ (DAY – ngày trong tuần): nằm ở địa chỉ 0x03h Thanh ghi DAYchỉ 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 ghiDATE 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ônbằ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
Trang 24SQW/OUT Giá trị các bít trong thanh ghi CONTROL REGISTER được biểudiễn như sau:
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
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:
Bảng 1.10: Bảng tần số dao động của ngõ ra SQW/OUT
1.2.3 Khái quát giao diện I2C
I2C là viết tắt của từ Inter - Integrated Circuit là một chuẩn truyền thông nốitiếp đồng bộ do hãng điện tử Philips Semiconductor sáng lập và xây dựng thànhchuẩ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ủathiế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
Trang 25 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 đườngSDA sẽ được lấy mẫu (sample) Dữ liệu nối tiếp trên đường SDA được lấymẫu khi đường SCL ở mức cao trong một chu kỳ giữ nhịp, vì thế đường SDAkhô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ònSCL là đường truyền xung đồng hồ chỉ truyền theo một hướng (từ master
đến slave)
Hình 1.6: Đường truyền dữ liệu của I2C
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:
Trang 26- Đ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ứccao 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ệuliên tiếp từ các Slaves
Hình 1.7: Mô tả điều kiện Start, Stop và Repeat
- 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ố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ânSDA lên mức cao
Hình 1.8: Bit ACK/NACK trong giao diện I2C
Định dạng dữ liệu truyền:
Trang 27Dữ 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 rakhi SCL đang ở mức thấp
Mỗi byte dữ liệu được truyền có độ dài là 8 bit Số byte có thể truyền trong mộtlần là không hạn chế Mỗi byte được truyền đi theo sau là một bit ACK, bit có tr ọng
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ầnlượt Sau 8 xung clock thì dữ liệu đã được truyền đi, ở xung clock thứ 9 thì bit ACKđược truyền đi báo hiệu đã nhận đủ 8 bits Thiết bị truyền sau khi nhận được bitACK sẽ tiếp tục thực hiện quá trình truyền hoặc kết thúc
Hình 1.9 : Giữ liệu được truyền trên giao diện I2CMột byte truyền đi có kèm theo bit ACK là điều kiện bắt buộc, nhằm đảm bảocho quá trình truyền nhận được chính xác Khi không nhận được đúng địa chỉ haymuố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ạimột xung START để bắt đấu quá trình mới
1.2.4 Chế độ truyền dữ liệu giữa DS1307 và AT89S52
Trong giao tiếp I2C giữa DS1307 và AT8952 thì chip AT8952 đó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ừ AT8952 đến DS1307) và Data Read (từ DS1307 vàoAT8952)
Trang 28a Chế độ ghi dữ liệu
Chế độ ghi dữ liệu được dùng khi xác lập giá trị ban đầu cho các thanh ghi thờigian hoặc dùng để canh chỉnh thời gian cho chip DS1307 Cấu trúc truyền dữ liệutrong chế độ ghi dữ liệu được mô tả như hình sau:
Hình 1.10 : Chế độ ghi dữ liệu
Trước hết hãy nói về địa chỉ SLA (Slave Address) của chip DS1307 trongmạ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 đượctính theo lý thuyết chuẩn I2C sẽ có giá trị tối đa là 128 (do có 128 thiết bị trong 1mạng I2C) Chip DS1307 là một Slave nên cũng có một địa chỉ SLA, giá trị này đượcset 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 (AT8952) 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(cố định là: 1101000b) Do chế độ này là ghi dữ liệu 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 giao tiếp
Tiếp theo sau địa chỉ SLA sẽ là 1 byte chứa địa chỉ của thanh ghi cần truycậ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 thanhghi địa chỉ (hay con trỏ địa chỉ), vì vậy byte dữ liệu đầu tiên sẽ được chứa trongthanh 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ỉ địnhbởi Word Address, sau khi ghi xong 1 byte thì Word Address tự động tăng nên cácbyte tiếp theo sẽ được ghi liên tiếp vào DS1307 ở các thanh ghi kế sau Số lượngbyte 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
Trang 29Chú ý: Sau khi ghi thành công 1 byte thì DS1307 sẽ trả lời lại bằng một bitACK 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ởiliề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
b Chế độ đọc dữ liệu
Chế độ đọc dữ liệu đượ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:
Hình 1.11: Chế độ đọc dữ liệuNguyên tắc truyền trong chế độ đọc dữ liệu cơ bản cũng giống như trongtruyền chế độ Data Write Trong chế độ đọc dữ kiệu 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 AT8952 Điểmkhác biệt trong cách bố trí dữ liệu của chế độ này so với chế độ ghi dữ liệu 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
1.3 GIỚI THIỆU IC 74HC154
1.3.1 Giới thiệu về IC 74HC154.
- IC 74HC154 là loại IC dùng để giải mã, giải đa hợp với các tính năng chính.Giải đa hợp có 16 đường ngõ ra Giả mã nhị phân 4 bit đầu vào thành 16 đườngngõ ra tương ứng Hai ngõ vào cho phép khóa hoặc m Ở rộng chân của I C
Trang 30
Hình 1.12: Sơ đồ chân IC 74HC154 Hình 1.13: Sơ đồ bên trong 74HC154Chức năng các chân của IC 74HC154:
● Chân 24, 12 (VCC, GND) dùng để cấp nguồn cho IC hoạt động
● Chân 18, 19 (E1,E2) các ngõ vào cho phép IC hoạt động trong một thời điểmchỉ có 1 IC hoạt động, IC bị cấm hoạt động thì tất cả các ngõ ra đều ở mứclogic cao
● Chân 23, 22, 21, 20 (A0, A1, A2, A3) Các ngõ vào quy định trạng thái ngõ ra
● Chân 1 - 11, 13 - 17 (Y0 - Y15) Các ngõ ra của IC
Tùy thuộc vào trạng thái của các đường địa chỉ mà ta có ngõ ra tương ứng, khi cả haingõ vào E1, E2 ở mức logic thấp thì IC hoạt động bình thường, tại một thời điểm chỉ
có một ngõ ra ở mức logic thấp, tất cả các ngõ còn lại đều ở mức cao
1.3.2 Nguyên tắc hoạt động của IC 74HC154.
Trang 31Bảng 1.11: Bảng chức năng của IC 74HC154Dựa vào bảng trạng thái ta thấy: Chỉ cần chân E1,E2 ở trạng thái cấm (khôngcho phép IC hoạt động) thì tất cả ngõ ra của IC 74HC154 đều ở mức cao bất chấptrạng thái ở các chân địa chỉ (A0, A1, A2, A3), Chẳng hạn như khi chân E1 ở mứclogic cao thì tất cả các ngõ ra của IC đều ở mức logic cao bất chấp trạng thái củacác chân còn lại như E2, A0, A1, A2, A3.Và khi chân E2 ở mức cao thì cũng tương tựnhư thế.
Khi các đường địa chỉ vào từ 00h-07H thì mức logic thấp duy nhất ở ngõ ra sẽ dichuyển từ ngõ ra (00_07)
Trang 321.4 IC CẢM BIẾN NHIỆT DS18B20
1.4.1 Khái quát về IC DS18B20
Hình 1.14: Hình dạng bên ngoài của DS 18B20
Mô tả tính năng của DS1820 :
DS1820 là nhiệt kế số có độ phân giải 9-12bit giao tiếp với vi điều khiển trungtâm thông qua 1 dây duy nhất ( 1 wire communication)
DS1820 hoạt động với điện áp từ 3V-5.5V có thể được cấp nguồn qua chân chân trao đổi dữ liệu
Nó có thể đo nhiệt độ trong tầm -55° C – 125°C Với khoảng nhiệt độ từ -10° C +85°C độ chính xác ±0.5 °C Mỗi DS1820 có một Serial code 64bit duy nhất, điềunày cho phép kết nối nhiều IC trên cùng đường bus Dòng tiêu thụ tại chế độ nghỉcực nhỏ
-Nếu cấu hình cho DS18B20 theo 9,10,11,12 bit thì ta có độ chính xác tương ứng
là : 0.5°C , 0.25°C ,0.125°C, 0.0625°C.Theo mặc định của nhà sản xuất nếu chúng takhông cấu hình chế độ chuyển đổi thì nó sẽ tự cấu hình là 12bit Khi bắt đầu chuyểnđổi nhiệt độ thì chân DQ sẽ được kéo xuống mức thấp và khi chuyển đổi xong thì ởmức cao.Như vậy ta sẽ căn cứ vào hiện tượng này để xác định khi nào chuyển đổixong nhiệt độ
Chuẩn 1 wire có những đặc điểm sau :
Trang 331.4.2 Thanh ghi dữ liệu
Mỗi IC DS1820 có một mã 64bit riêng biệt bao gồm: 8 bit Family code, 48bit serial code và 8 bit CRC code được lưu trong Rom Các giá trị này giúp phânbiệt giữa các IC với nhau trên cùng 1 bus Giá trị Family code của DS1820 là28h và giá trị CRC là kết quả của quá trình kiểm tra 56 bit trước đó
Tổ chức bộ nhớ Scratchpad: Bộ nhớ DS1820 bao gồm 9 thanh ghi 8bit
Hình 1.15: Tổ chức bộ nhớ của DS18B20Byte 0 và 1 lưu giá trị nhiệt độ chuyển đổi
Byte 2 và 3 lưu giá trị ngưỡng nhiệt độ ( giá trị này được lưu khi mất điện)
Byte 4 là thanh ghi cấu hình cho hoạt động của DS1820
Byte 5,6 và 7 không sử dụng
Byte 8 là thanh ghi chỉ đọc lưu giá trị CRC từ byte 0 đến byte 7
Dữ liệu trong byte 2,3,4 được ghi thông qua lệnh Write Scratchpad [4Eh] và dữliệu được truyền đến
DS1820 với bit LSB của byte 2, sau khi ghi dữ liệu có thể được đọc lại thông qualệnh Read Scratchpad [BEh], và khi đọc Scratchpad thì bit LSB của byte 0 sẽ đượcgửi đi trước tất cả các byte đều được đọc, nhưng chỉ ghi được byte 2,3 và 4 Để
Trang 34[48h] đến DS1820 Và dữ liệu từ EPROM cũng có thể được chuyển vào thanh ghiTH,TL thông qua lệnh Recall E2 [B8h].
1.4.3 Trao đổi dữ liệu giữa vi điều khiển và DS1820
a Khởi tạo
Quá trình khởi tạo bao gồm 1 xung reset do vi điều khiển master gửi đến slaveDS1820, sau đó là xung presence từ DS1820 gửi đến vi điều khiển, để chỉ ra sự hiệndiện của vi điều khiển và DS1820, quá trình hoạt động trao đổi dữ liệu có thể bắtđầu
b Lệnh điều khiển ROM.
Các lệnh này làm việc với 64 bit serial code ROM, lệnh này được phát ra sau quátrình khởi tạo Lệnh cho phép vi điều khiển biết có bao nhiêu thiết bị và thiết bị loại
gì trên bus
c Lệnh điều khiển DS18B20.
Sau khi vi điều khiển định địa chỉ thiết bị cần giao tiếp thông qua các lệnh ROM,
vi điều khiển sẽ gửi các lệnh điều khiển hoạt động của DS1820 Những lệnh này chophép vi điều khiển ghi và đọc dữ liệu từ bộ nhờ Scratchpad của DS1820, bắt đầu quátrình chuyển đổi nhiệt độ, và xác định chế độ cấp nguồn
Có 5 lệnh điều khiển ROM:
SEARCH ROM [F0h]: Khi hệ thống bắt đầu hoạt động, thì vi điều khiển sửdụng lệnh này để kiểm tra code ROM của tất cả các thiết bị có trên bus chophép vi điều khiển biết được số thiết bị và loại của thiết bị trên bus Nếutrên bus chỉ có 1 thiết bị thì có thể sử dụng lệnh Read_ROM thay cho lệnhSearch_ROM Sau mỗi quá trình Search_ROM thì cần phải quay lại quátrình khởi tạo để reset hệ thống
READ ROM [33h]: Lệnh này được sử dụng khi chỉ có 1 thiết bị trên bus.Lệnh này cho phép vi điều khiển đọc 64bit ROM code của thiết bị Nếu trênbus có nhiều thiết bị thì lệnh này sẽ gây ra sự xung đột bus dữ liệu giữa cácthiết bị
MATCH ROM [55h]: Lệnh này theo sau bởi 64 bit ROM code cho phép viđiều khiển định địa chỉ thiết bị cần giao tiếp Chỉ thiết bị có ROM code phùhợp sẽ trả lời, các thiết bị còn lại sẽ đợi xung reset tiếp theo
SKIP ROM [CCh]: Lệnh này cho phép vi điều khiển gửi đồng thời đến tất
cả các thiết bị trên bus mà không cần bất cứ thông tin nào về ROM Code
Trang 35Ví dụ, muốn gửi lệnh Convert_T đến tất cả các thiết bị trên bus, thì đầu tiên
ta gửi lệnh Skip_ROM sau đó tiếp theo là gửi lệnh Convert_T Tương tựnhư vậy, nếu theo sau lệnh Skip_ROM là lệnh Read_Scratchpad thì dữ liệutrên DS1820 được đọc về, và lưu ý rằng lệnh này chỉ thực hiện được khitrên bus có 1 thiết bị, nếu trên bus có nhiều thiết bị thì sẽ gây ra xung độtbus
ALARM SEARCH [ECh]: Lệnh này gần giống với lệnh Search_ROM,nhưng lệnh này chỉ tác động đến thiết bị mà cờ alarm được bật lên sẽ trả lời.Lệnh này cho phép xác định các thiết bị mà ở đó nhiệt độ đo được vượt quangưỡng nhiệt độ, và sau khi lệnh này được thực thi thì vi điều khiển phảilập lại quá trình khởi tạo quay lại bước 1
1.4.4 Cách đọc giá trị nhiệt độ
Bên trong DS1820 sẽ có bộ chuyển đổi giá trị nhiệt độ sang giá trị số và được lưutrong các thanh thi ở bộ nhớ scratchpad Độ phân giải nhiệt độ đó có thể được cấuhình ở chế độ 9 bit, 10 bit, 11 bit, 12 bit Ở chế độ mặc định thì DS1820 hoạt động ở
độ phân giải 12 bit
Để bắt đầu quá trình đọc nhiệt độ, và chuyển đổi từ giá trị tương tự sang giá trị
số thì vi điều khiển gửi lệnh Convert T [44h], sau khi chuyển đổi xong thì giá trịnhiệt độ sẽ được lưu trong 2 thanh ghi nhiệt độ ở bộ nhớ scratchpad và IC trở vềtrạng thái nghỉ
Nhiệt độ được lưu bên trong DS1820 được tính ở nhiệt độ Celcius nếu tính ởnhiệt độ Fahrenheit cần phải xây dựng thêm bảng chuyển đổi nhiệt độ Giá trị nhiệt
độ lưu trong bộ nhớ gồm 2 byte - 16bit : số âm sẽ được lưu dưới dạng bù 2
Bit cao nhất là bit dấu (S) nếu S=0 thì giá trị nhiệt độ dương và S=1 thì giá trịnhiệt độ âm
Nếu cấu hình độ phân giải là 12bit thì tất cả các bit đều được sử dụng Nếu độphân giải 11bit thì bit 0 không được sử dụng Tương tự nếu cấu hình là 10bit thì bit1,0 không được sử dụng, nếu cấu hình là 9 bit thì bit 2, 1, 0 không được sử dụng
Trang 36Nhiệt độ Đầu ra số (nhị phân) Đầu ra số (Hex)+ 125°C 0000 0111 1101 0000 07D0H+ 85°C 0000 0101 0101 0000 0550H+ 25.0625°C 0000 0001 1001 0001 0191H+ 10.125°C 0000 0000 1010 0010 00A2H+ 0.5°C 0000 0000 0000 1000 0008H
0.5°C 1111 1111 1111 1000 FFF8H 10.125°C 1111 1111 0101 1110 FF5EH 25.0625°C 1111 1110 0110 1111 FF6FH
55°C 1111 1100 1001 0000 FC90H
Bảng 1.12: Bảng đọc giá trị nhiệt độNhiệt độ sau khi được lưu vào trong 2 thanh ghi bộ nhớ sẽ được so sánh với 2thanh ghi ngưỡng nhiệt độ TH và TL Các giá trị ngưỡng nhiệt độ do người dùng quyđịnh, và nó sẽ không thay đổi khi mất điện
Như vậy chỉ có phần nguyên, các bit 11-4 của giá trị nhiệt độ được so sánh vớithanh ghi ngưỡng Nếu giá trị nhiệt độ đọc về nhỏ hơn mức TL hoặc lớn hơn mức THthì cờ báo quá nhiệt sẽ được bật lên, và nó sẽ thay đổi ở mỗi quá trình đọc nhiệt độ
Vi điều khiển có thể kiểm tra trạng thái quá nhiệt bằng lệnh Alarm Search [ECh]
1.5 IC ĐỆM ĐẢO ULN 2803
1.5.1 Sơ đồ chân
Hình 1.16: Sơ đồ chân của ULN 2803
Trang 37- Chân 9, 10 là chân cấp nguồn.
- Chân từ 1-8 là các chân ngõ vào
- Chân từ 11-18 là các chân ngõ ra đảo
Đây là IC gồm 8 transistor NPN ghép Darlington gắn mạch điện tử trong dãy nàycủa chuỗi là một bộ lý tưởng để giao tiếp với mạch điện dạng số mức thấp như :TTL, CMOS hoặc PMOS/NMOS
ULN 2803 được thiết kế phù hợp với chuẩn TTL
1.5.2 Thông số kỹ thuật của ULN 2803
● Dòng điện ngõ vào khoảng 25mA
● Điện áp ngõ vào khoảng 0.5 V - 30V
● Dòng điện ngõ ra tối đa 500mA
● Điện áp ngõ ra tối đa 50V
● Điện áp cung cấp 5V – 12V
● Đệm 8 kênh riêng biệt
● Đầu ra đảo
Hình 1.17: Sơ đồ cấu tạo 1 kênh đệm dòng của ULN 2803
1.6 Tổng quan về led 7thanh
1.6.1 Giới thiệu led 7thanh
LED 7 thanh được dùng nhiều trong các mạch hiển thị thông báo, hiển thị số, kí
tự đơn giản LED 7 được cấu tạo từ các LED đơn sắp xếp theo các thanh nét để cóthể biểu diễn các chữ số hoặc các kí tự đơn giản như từ số 0 đến 9 và A đến F chả
Trang 38được ghép và được đặt tên bằng các chữ cái a g và có một dấu chấm dp ( dấu chấmnày có thể sáng và tắt tùy theo yêu cầu) được cấu tạo bởi 1 LED đơn Qua đó người
ta chỉ cần 8 bit tương ứng với 8 LED đơn để điều khiển được và hiển thị số từ 0 đến
9 và các kí tự từ A đến F
Hình 1.18: Cấu tạo và hình dạng led 7 thanh
Ở trên là hình dạng LED 7 ngoài thực tế, trong mạch nguyên lý và cấu tạo.Cấu tạo của LED chúng ta nhìn trên rất đơn giản chúng chỉ gồm các LED đơn đượcxếp lại với nhau thành hình như trên hình vẽ Các LED đơn này chỉ chung nhau Anothoặc Katot và riêng nhau các chân còn lại Nhiệm vụ của chúng ta là cho sáng cácLED đơn đó để cho nó thành số hay kí tự đơn giản
Hiện nay LED 7 được sản xuất theo 2 kiểu là Anot chung và Katot chung, đượcđiều khiển làm việc tương tự như bơm dòng hay nuốt dòng của các LED đơn có trongLED7 (Thường hay thiết kế theo kiểu bơm dòng cho LED) Thông thường trong cácmạch thiết kế thực tế người thiết kế thường hay sử dụng loại Anot chung Phươngpháp ghép nối là cấp dòng, đảo trạng thái thông qua đệm Led
Để ghép nối với LED7 có thể có nhiều cách, nhưng phải đảm bảo sao có thể điềukhiển tắt mở riêng từng LED đơn trong đó để tạo ra các số và các ký tự mongmuốn.Các IC điều khiển đều khó khả năng sinh dòng kém tức là dòng đầu ra của cácchân IC nhỏ hơn khả năng nuốt dòng Do vậy, nếu ghép nối trực tiếp các led với các
Trang 39chân cổng IC thì loại Anode chung là thích hợp hơn cả Cần phải chú ý dòng dồn về
IC quá mức chịu được thì cũng không được vì làm nóng và chết IC điều khiển
Trang 401.6.2 Các phương pháp điều khiển
a Điều khiển trực tiếp
● Dùng trực tiếp các chân điều khiển (vi xử lý)
Hình 1.19: Điều khiển led bằng phương pháp trực tiếp qua vi điều khiển
Đối với cách này thì nhìn thì rất tốn chân của vi xử lý Và dòng của LED sẽ dồntất cả về vi xử lý Nếu một hệ thống lớn thì cách này không ổn vì ảnh hưởng đến vi
xử lý và nhiều dòng dồn về vi xử lý sẽ làm vi xử lý nóng và dẫn tới chết ( chúng tatưởng tượng xem nếu mà hệ thống nhiều phần điều khiển từ các chân vi xử lý mà tất
cả các tải điều khiển dồn trực tiếp dòng về vi xử lý thì lúc đó dòng trong 1 thời điểmkhá lớn vượt quá ngưỡng cho phép của vi xử lý Dòng mà vi xử lý chịu đựng đượccũng khá nhỏ đâu dưới 100mA ) Các này chỉ dùng được hệ thống điều khiển ít,mạch dùng vi xử lý khá đơn giản như hiện thị LED, đếm số từ 0 đến 9 chẳng hạn
● Dùng IC giải mã BCD sang LED 7 thanh
Sử dụng IC giải mã 7447 để giả mã từ mã BCD sang mã LED7 Đối với cách nàythì trông rất ổn Vừa tiếp kiệm được chân vi xử lý và tránh được dòng dồn về vi xử lý(dòng ở đây được dồn về 7447) Đây là cách mà người thiết kế thường dùng trongcác hệ thống cần đến hiển thị