Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
ii
MỤC LỤC
1.GIỚI THIỆU 1
1.1 Tổng quan 1
1.2 Tình hình nghiên cứu trong và ngoài nước 1
1.3 Nhiệm vụ luận văn 2
2. LÝ THUYẾT 2
2.1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN ATMEGA 32 2
2.1.1 Giới thiệu 2
2.1.2 Sơ đồ chân của Atmega 32 3
2.1.3 Cấu trúc lõi của Atmega 32 4
2.1.4 ALU Arithmetic Logic Unit 6
2.1.5 Thanh ghi trạng thái 6
2.1.6 Tập các thanh ghi làm việc đa năng 7
2.1.7 Cổng vào ra của ATmega 32 8
2.1.8 Bộ chuyển đổi ADC 10
2.2 TỔNG QUAN VỀ REALTIMES DS1307 15
2.2.1 Sơ đồ chân DS1307 15
2.2.2 Cấu tạo bên trong của DS1307 16
2.2.3 Khái quát về giao diện I2C 20
2.3 TỔNG QUAN VỀ MODULE PHÁT RF nRF24L01 20
2.3.1 Giới thiệu 20
2.3.2 Khảo sát chip nRF24L01. 21
2.3.3 Điều kiện làm việc. 24
2.3.4 Hoạt động của nRF24L01. 24
2.3.5 Chế độ tắt nguồn. 24
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
iii
2.3.6 Chế độ standby. 24
2.3.7 Chế độ RX. 25
2.3.8 Chế độ TX 25
2.3.9 Chức năng Shockburst 26
2.3.10 Giao tiếp SPI của nRF24L01 27
2.3.11 Các thanh ghi trong nRF24L01. 29
2.3.12 Module nRF24L01. 39
2.4 TỔNG QUAN VỀ LCD 16x2 39
2.4.1 Giới thiệu về LCD 39
2.4.2 Sơ đồ chân 40
2.4.3 Thanh ghi và tổ chức bộ nhớ 41
2.4.4 Tập lệnh của LCD 44
2.4.5 Phương thức giao tiếp với LCD 45
2.5 TỔNG QUAN VỀ DS1820 46
2.5.1 Giới thiệu sơ lược về DS1820 46
2.5.2 Những đặc tính chung 46
2.5.3 Sơ đồ chân 46
2.5.4 Sự mô tả 47
2.5.5 Sơ đồ khối DS1820 47
2.5.6 Thao tác và cách đo nhiệt độ 48
2.5.7 Thao tác và báo động báo hiệu 50
2.5.8 Nguồn cấp cho DS1820 50
2.5.9 Bộ nhớ ROM 64 bit 52
2.5.10 Bộ nhớ DS1820 53
2.5.11 Các bước tiến hành để truy nhập đến DS1820 54
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
iv
2.5.12 Các lệnh trên ROM của DS1820 54
2.5.13 Các lệnh chức năng của bộ nhớ DS1820 56
2.6 TỔNG QUAN VỀ IC GIAO TIẾP PC PL2303 57
2.6.1 Giới thiệu 57
2.6.2 Đặc điểm chung 58
2.6.3 Chức năng các chân của PL2303 60
2.7 TỔNG QUAN VỀ LƯU TRỮ MMC/SD 61
2.7.1 Giới thiệu về MMC/SD 61
2.7.2 Phương thức giao tiếp MMC/SD 63
2.7.3 Giao tiếp vi điều khiển với MMC/SD 65
3. THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG 67
3.1 Sơ đồ khối của hệ thống 67
3.2 Sơ đồ nguyên lý mạch slave 67
3.2.1 Khối nguồn 67
3.2.2 Khối cảm biến nhiệt độ 67
3.2.3 Khối vi điều khiển 68
3.2.4 Khối tạo nhiệt 68
3.2.5 Khối thu phát RF 69
3.3 Sơ đồ nguyên lý mạch master 69
3.3.1 Khối nguồn 69
3.3.2 Khối thu phát RF 70
3.3.3 Khối vi điều khiển 70
3.3.4 Khối thời gian thực 71
3.3.5 Khối cài đặt 71
3.3.6 Khối hiển thị LCD 72
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
v
3.3.7 Khối kết nối PC 72
3.3.8 Khối lưu trữ SD/MMC: 73
3.3.9 Khối cảnh báo sự cố 73
4. THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM 74
4.1 Lưu đồ giải thuật mạch slave: 74
4.2 Lưu đồ giải thuật mạch master: 75
5. KẾT QUẢ THỰC HIỆN 77
5.1 Mạch slave 77
5.2 Mạch master 77
5.3 Giao diện giao tiếp máy tính 78
6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 78
6.1 Kết luận 78
6.2 Hướng phát triển 79
7. TÀI LIỆU THAM KHẢO 79
8. PHỤ LỤC 80
8.1 Sơ đồ nguyên lý mạch Slave 80
8.2 Sơ đồ nguyên lý mạch Master 81
8.3 Chương trình Slave 81
8.4 Chương trình Master 84
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
vi
DANH SÁCH HÌNH MINH HỌA
Hình 2.1: Sơ đồ chân của Atmega 32 3
Hình 2.2: Sơ đồ lõi của ATmega 32 6
Hình 2.3: Thanh ghi trạng thái 6
Hình 2.4: Thanh ghi đa năng 8
Hình 2.5: Thanh ghi DDRA 9
Hình 2.6: Thanh ghi PORTA 9
Hình 2.7: Thanh ghi PINA 10
Hình 2.8: Thanh ghi SFIOR 10
Hình 2.9: Sơ đồ khối đơn giản của ADC 11
Hình 2.10: Ngõ vào vi sai 13
Hình 2.11: Thanh ghi ADMUX 13
Hình 2.12: Thanh ghi điều khiển và trạng thái ADC 14
Hình 2.13: Thanh ghi dữ liệu của ADC 15
Hình 2.14: Hai dạng cấu tạo chân của DS1307 16
Hình 2.15: Sơ đồ khối bên trong của DS1307 17
Hình 2.16: Tổ chức bộ nhớ trong DS1307 17
Hình 2.17: Tổ chức bit của các thanh ghi 18
Hình 2.18: Cấu trúc thanh ghi điều khiển 19
Hình 2.19: Cơ chế truyền dữ liệu giữa Master và Slave 20
Hình 2.20: Sơ đồ khối chip nRF24L01. 22
Hình 2.21: Sơ đồ chân chip nRF24L01. 22
Hình 2.22: Biểu đồ hoạt động đọc SPI của nRF24L01. 29
Hình 2.23: Biểu đồ hoạt động ghi SPI của nRF24L01. 29
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
vii
Hình 2.24: Sơ đồ nguyên lý module nRF24L01 39
Hình 2.25: LCD 16x2 40
Hình 2.26: Tổ chức DDRAM 42
Hình 2.27: Hình dạng và sơ đồ chân của DS1820 47
Hình 2.28: Sơ đồ khối DS1820 48
Hình 2.29: Thanh ghi lưu trữ nhiệt độ đo 49
Hình 2.30: Thanh ghi định dạng T
H
và T
L
50
Hình 2.31: Sử dụng MOSFET để cấp nguồn cho DS1820 51
Hình 2.32: Không sử dụng DS1820 cấp nguồn cho DS1820 52
Hình 2.33: Nội dung của dãy 64 bit trên ROM 52
Hình 2.34: Sơ đồ bộ nhớ DS1820 53
Hình 2.35: PL 2303 thực tế 57
Hình 2.36: Sơ đồ khối PL2303 58
Hình 2.37: Sơ đồ chân của PL2303 59
Hình 2.38: Bố trí chân MMC và SD 61
Hình 2.39: Sơ đồ kết nối giữa chip điều khiển và card MMC/SD 63
Hình 2.40: Trình tự khởi động MMC/SD 66
Hình 3.1: Sơ đồ khối hệ thống 67
Hình 3.2: Sơ đồ khối nguồn 67
Hình 3.3: Sơ đồ khối cảm biến nhiệt 68
Hình 3.4: Sơ đồ khối vi điều khiển 68
Hình 3.5: Sơ đồ khối tạo nhiệt 69
Hình 3.6: Khối thu phát RF 69
Hình 3.7: Sơ đồ khối nguồn 70
Hình 3.8: Sơ đồ khối thu phát RF 70
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
viii
Hình 3.9: Sơ đồ khối vi điều khiển 71
Hình 3.10: Sơ đồ khối Realtime 71
Hình 3.11: Sơ đồ khối cài đặt nhiệt độ 72
Hình 3.12: Sơ đồ khối hiển thị LCD 72
Hình 3.13: Sơ đồ khối giao tiếp máy tính 73
Hình 3.14: Sơ đồ khối lưu trữ SD/MMC 73
Hình 3.15: Sơ đồ khối cảnh báo 73
Hình 4.1: Lưu đồ giải thuật Slave 74
Hình 4.2: Lưu đồ giải thuật Master 76
Hình 5.1: Mô hình khối Slave 77
Hình 5.2: Mô hình khối Master 77
Hình 5.3: Giao diện giao tiếp với máy tính 78
Hình 8.1 Sơ đồ mạch Slave 80
Hình 8.2 Sơ đồ mạch master 81
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
ix
DANH SÁCH BẢNG SỐ LIỆU
Bảng 2.1 Lựa chọn điện thế tham chiếu 13
Bảng 2.2 Lựa chọn tần số trên chân SQW/OUT 19
Bảng 2.3 Chức năng các chân của nRF24L01 23
Bảng 2.4 Điều kiện làm việc của nRF24L01. 24
Bảng 2.5 Các chế độ hoạt động của nRF24L01. 24
Bảng 2.6 Thời gian chuyển đổi giữa các chế độ. 26
Bảng 2.7 Mã lệnh SPI của nRF24L01 28
Bảng 2.8 Kí hiệu trong biểu đồ hoạt động SPI 29
Bảng 2.9 Register CONFIG 29
Bảng 2.10 Register EN_AA 30
Bảng 2.11 Register EN_RXADDR 31
Bảng 2.12 Register SETUP_AW 31
Bảng 2.13 Register SETUP_RETR 32
Bảng 2.14 Register RF_CH 32
Bảng 2.15 Register RF_SETUP 33
Bảng 2.16 Register STATUS 33
Bảng 2.17 Register OBSERVE_TX 34
Bảng 2.18 Register CD 34
Bảng 2.19 Register RX_ADDR_P0 à RX_ADDR_P5 34
Bảng 2.20 Register TX_ADDR 35
Bảng 2.21 Register RX_PW_P0 à RX_PW_P0 35
Bảng 2.22 Register FIFO_STATUS 37
Bảng 2.23 Register ACK_PLD 38
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
x
Bảng 2.24 Register RX_PLD 38
Bảng 2.25 Register TX_PLD 38
Bảng 2.26 Chức năng các chân của LCD 16x2 41
Bảng 2.27 Các mode giao tiếp của LCD 42
Bảng 2.28 Bảng dò giá trị đo nhiệt độ 49
Bảng 2.29 Chức năng các chân của PL2303 60
Bảng 2.30 Ý nghĩa của các bit trong lệnh 64
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 1
1. GIỚI THIỆU
1.1 Tổng quan
Hệ thống điều khiển từ xa có vai trò quan trọng trong công cuộc công nghiệp
hóa, hiện đại hóa đất nước. Trong ngành công nghiệp, điều khiển nhiệt độ là một
vấn đề rất quan trọng. Trong ngành luyện kim, cần phải đạt đến một nhiệt độ nào đó
để kim loại nóng chảy, và cũng cần đạt một nhiệt độ nào đó để ủ kim loại nhằm đạt
được tốt các đặc tính cơ học như độ bền, độ dẻo, độ chống gỉ sét, có thể đo nhiệt độ
trong môi trường độc hại một cách dễ dàng hơn … . Trong ngành thực phẩm, cần
duy trì một nhiệt độ nào đó để nướng bánh, để nấu, để bảo quản … . Trong nông
nghiệp thì cần nhiệt độ để sấy nông sản hoặc ủ cho hạt giống nảy mầm … . Trong
chăn nuôi thì cần có nhiệt độ để ấp trứng, để sưởi ấm gia súc khi mùa đông đến … .
Từ đó, điều khiển nhiệt độ trở thành một yếu tố không thể thiếu trong cuộc
sống của chúng ta. Và theo đà phát triển của các học thuyết về điều khiển tự động,
thì nhiều nghiên cứu cho kết quả của quá trình đo và điều khiển nhiệt độ ngày càng
phong phú và đa dạng hơn.
1.2 Tình hình nghiên cứu trong và ngoài nước
Trên thế giới, ở các nước phát triển không ít những công trình nghiên cứu
khoa học đã thành công khi ứng dụng kỹ thuật điều khiển từ xa để điều khiển các
thiết bị trong công nghiệp cũng như trong dân dụng mà đặc biệt là trong quân sự:
Tại Nga có những nhà máy điện, những kho lưu trữ tài liệu quý đã ứng dụng hệ
thống điều khiển từ xa và tự động báo động để đóng ngắt những nơi cao áp, tự động
xã bình chữa cháy …và cũng tại Nga đã có hệ thống điều khiển và báo động thông
qua mạng Internet để điều khiển nhà máy điện nguyên tử.
Ở nước ta mạch cảm biến cảnh báo và kiểm soát nhiệt độ bằng sóng RF là một
đề tài không mới, trong các khoá học trước đã có người nghiên cứu. Nhưng vì tính
thực tiễn của đề tài này nên nó cần được tiếp tục nghiên cứu và hoàn chỉnh để đưa
ra giải pháp tối ưu. Trong các kết quả nghiên cứu trước thì nhiệt độ thu được sẽ
được hiển thị trên LCD hoặc trên Led 7 đoạn để theo dõi khi đang vận hành. Với đề
tài này thì giá trị nhiệt độ được truyền lên PC vẽ ra giản đồ nhiệt theo thời gian, vi
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 2
xử lý điều khiển nhiệt độ cho thích hợp với giá trị cài đặt và đồng thời phát ra tín
hiệu cảnh báo khẩn cấp nếu xảy ra sự cố.
1.3 Nhiệm vụ luận văn
Trong đề tài này, sinh viên thực hiện dùng IC rời kết hợp với Modun RF
chuyên dụng để tạo ra mạch ứng dụng hoàn chỉnh. Hiện nay xu hướng sử dụng sóng
RF để điều khiển thiết bị từ xa rất được ưa chuộng. Hệ thống đo nhiệt độ có sử dụng
RF giúp cho ứng dụng càng rộng rãi hơn trong cuộc sống.
Với thời gian, cũng như khả năng có hạn nên người thực hiện đề tài chỉ tập
trung nghiên cứu các vấn đề sau:
• Tìm hiểu lý thuyết về: vi điều khiển ATMEGA32, IC cảm biến nhiệt độ
DS1820, bộ đếm thời gian DS1307, bộ thu phát sóng RF nRF24L01, màn
hình LCD 16x2, khối giao tiếp với máy tính dùng PL2303, lưu trữ thẻ nhớ
SD/MMC.
• Thiết kế và thi công mạch đo, điều khiển tắt mở nguồn nhiệt và phát tín hiệu
nhiệt độ (slave).
• Thiết kế và thi công mạch nhận, hiển thị, lưu trữ tín hiệu nhiệt độ và phát tín
hiệu cảnh báo khẩn cấp khi xảy ra sự cố (master).
2. LÝ THUYẾT
2.1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN ATMEGA 32
2.1.1 Giới thiệu
AVR là chip điều khiển 8 bits với cấu trúc tập lệnh đơn giản hóa. AVR có rất
nhiều dòng khác nhau bao gồm dòng Tiny AVR (AT Tiny13, AT Tiny22,…) có
dung lượng bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR ( AT90S8535,
AT90S8515,…) có dung lượng bộ nhớ vào loại trung bình và mạnh hơn là dòng
Mega ( Atmega 32, Atmega 128,…) với bộ nhớ lên đến vài trăm Kbyte. Sự khác
nhau cơ bản giữa các dòng chính là cấu trúc ngoại vi, còn nhân thì vẫn như nhau.
ATmega là bộ vi điều khiển CMOS 8 bits tiêu thụ điện năng thấp dựa trên
kiến trúc RISC. Vào ra Analog – Digital và ngược lại. Với công nghệ này cho phép
các lệnh thực thi chỉ trong một chu kì xung nhịp, vì thế tốc độ xử lý dữ liệu có thể
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 3
đạt đến 1 triệu lệnh/giây ở tần số 1Mhz. Vi điều khiển này cho phép người thiết kế
có thể tối ưu hoá chế độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lý.
Atmega được hỗ trợ đầy đủ phần mềm và công cụ phát triển hệ thống bao
gồm: trình dịch Assembly như AVR studio của Atmel, trình dịch C như win AVR,
CodeVision AVR C,… Trình dịch C đã được nhiều người dùng và đánh giá tương
đối mạnh, đó là trình dịch CodeVision AVR C. Phần mềm này hỗ trợ nhiều ứng
dụng và có nhiều hàm có sẵn nên việc lập trình tốt hơn.
2.1.2 Sơ đồ chân của Atmega 32
Atmega 32 là loại vi điều khiển CMOS, nguồn thấp, 8 bits, xây dựng trên nền
tảng cấu trúc tập lệnh thu gọn cho AVR. Gồm 32 thanh ghi làm việc liên kết trực
tiếp với bộ xử lý số học ALU.
Hình 2.1: Sơ đồ chân của Atmega 32
• Chân VCC: Điện áp nguồn nuôi.
• Chân GND: Nối mass.
• PortA (PA7…PA0): PortA là Port vào/ ra hai hướng 8 bit, các chân của Port
A có các điện trở nối lên nguồn dương. Các chân ra của Port A có thể cho phép
dòng điện 20mA đi qua và trực tiếp điều khiển LED hiển thị.
Khi các chân PA0 đến PA7 là các ngõ vào và được đặt xuống mức thấp từ bên
ngoài, chúng sẽ là nguồn dòng nếu các điện trở nối lên nguồn dương được kích
hoạt. Các chân của Port A ở vào trạng thái có điện trở cao khi tín hiệu reset ở mức
tích cực hoặc ngay cả khi không có tín hiệu xung clock.
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 4
Port A cung cấp các đường địa chỉ/ dữ liệu vào/ ra hoạt động theo kiểu đa hợp
kênh khi dùng bộ nhớ SRAM ở bên ngoài.
Port A còn có thêm chức năng là ngõ vào tương tự và đưa đến bộ chuyển đổi
Analog sang Digital.
• Các Port B, C, D tương tự như Port A.
• Chân RESET: ngõ vào đặt lại. Bộ vi điều khiển sẽ được reset lại khi chân
này ở mức thấp trong khoảng thời gian 50ns, các xung ngắn hơn không tạo ra tín
hiệu reset.
• XTAL1: Lối vào bộ vào mạch tạo xung dao động.
• XTAL2: Lối ra bộ vào mạch tạo xung dao động.
• XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo.
Bộ khuếch đại này được bố trí để làm bộ tạo dao động trên chip. Một bộ tinh thể
thạch anh hoặc một bộ cộng hưởng có thể được sử dụng. Để điều khiển bộ vi điều
khiển từ một nguồn xung nhịp bên ngoài, chân XTAL2 để trống, còn chân XTAL1
được nối với bộ dao động bên ngoài.
• Chân ICP: Là chân vào cho chức năng bắt tín hiệu vào bộ timer/ counter1.
• Chân OC1B: Là chân ra PWM, ngõ ra so sánh của timer/ counter1.
• Chân ALE: Là chân tín hiệu cho phép chốt địa chỉ được dùng khi truy nhập
bộ nhớ ngoài. Xung ALE được dùng để chốt 8 bits địa chỉ thấp vào một bộ chốt địa
chỉ trong chu kỳ truy cập bộ nhớ thứ nhất. Sau đó các chân AD0-AD7 được dùng
làm các đường dữ liệu trong chu kỳ truy nhập bộ nhớ thứ hai.
• Chân AVCC: là chân điện áp cung cấp nguồn cho PortA và một bộ chuyển
đổi A/D. Được kết nối với Vcc bên ngoài ngay cả khi không được sử dụng ADC.
Nếu ADC được sử dụng, nó phải được kết nối với Vcc thông qua một bộ lọc thông
thấp.
• Chân AREF: là chân tham chiếu tín hiệu tương tự cho quá trình chuyển đổi
A/D.
2.1.3 Cấu trúc lõi của Atmega 32
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 5
Lõi của AVR sử dụng kiến trúc Harvard – các bus riêng biệt cho chương trình
và dữ liệu. Lệnh từ bộ nhớ chương trình thực thi thông qua một ống đơn cấp. Khi
một lệnh đang thực thi, lệnh tiếp theo sẽ được nhốt từ bộ nhớ chương trình, cho
phép các lệnh thực thi trong mỗi chu kỳ của xung clock.
Các 32 thanh ghi ( 8 bits) cho phép truy xuất nhanh trong một chu kỳ clock.
Trong hoạt động thông thường của ALU, hai toán hạng xuất ra từ thanh ghi làm
việc, lệnh thực thi, và kết quả lưu ngược lại thanh ghi làm việc chỉ trong 1 chu kỳ
clock.
Có 6 thanh ghi trong số 32 thanh ghi được dùng như con trỏ địa chỉ gián tiếp
16 bits sử dụng cho địa chỉ không gian dữ liệu. Một trong 3 thanh ghi địa chỉ này có
thể được dùng như con trỏ địa chỉ Look-up table trong bộ nhớ Flash.
Bộ ALU hỗ trợ các hoạt động tính toán số học và logic giữa thanh ghi với
nhau, hay giữa thanh ghi với hằng số. Các hoạt động từng thanh ghi đơn cũng được
thực hiện trong ALU. Sau khi tính toán, thanh ghi trạng thái cập nhật thông tin liên
quan đến kết quả tính toán.
Bộ nhớ chương trình chia làm hai phần: Boot Loader và vùng ứng dụng. Cả
hai đều sử dụng các lock bit để bảo vệ đọc/ ghi. Lệnh SPM thực thi vùng ghi dữ liệu
vào vùng flash ứng dụng phải được đặt trong vùng Boot Loader.
Bộ nhớ của Atmega32 gồm có 3 phần: RAM tĩnh, RAM ngoại và EFROM.
Trong quá trình ngắt hay gọi chương trình con, địa chỉ trả về của bộ đếm
chương trình lưu trong ngăn xếp. Ngăn xếp được phân bổ trong một phần bộ nhớ
SRAM, vì vậy độ lớn của ngăn xếp chỉ phụ thuộc vào SRAM và việc sử dụng
SRAM.
Chương trình ngắt linh hoạt có thanh ghi điều khiển riêng trong không gian IO
và có bit cho phép ngắt toàn cục trong thanh ghi trạng thái. Tất cả các ngắt đều có
vector ngắt riêng trong bảng vector ngắt. Các ngắt có ưu tiên ngắt theo đúng vị trí
ngắt của nó. Địa chỉ ngắt càng thấp thì độ ưu tiên càng cao.
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 6
Hình 2.2: Sơ đồ lõi của ATmega 32
2.1.4 ALU Arithmetic Logic Unit
Bộ ALU hiệu suất cao của AVR hoạt động trong liên kết trực tiếp với 32
thanh ghi làm việc. Hoạt động của ALU được chia ra làm 3 phần chính: xử lý số
học, phép toán logic và các phép toán bit.
2.1.5 Thanh ghi trạng thái
Thanh ghi trạng thái chứa 8 bit cờ chỉ trạng thái của bộ xử lý, tất cả các bit này
đều bị xóa sau khi reset, các bit này cũng có thể được đọc và ghi bởi chương trình.
Thanh ghi trạng thái không tự động lưu lại khi nhảy vào chương trình ngắt và
cũng không tự động phục hồi khi quay về, cần thực hiện điều này bằng phần mềm.
Hình 2.3: Thanh ghi trạng thái
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 7
• Bit 7 – I: Bit cho phép ngắt toàn bộ
Bit này cần được set lên 1 nếu trong chương trình có sử dụng ngắt. Sau khi set
bit này, bạn muốn kích hoạt loại ngắt nào cần set các bit ngắt riêng của ngắt đó.
Chú ý: bit toàn cục này sẽ bị xóa tự động bằng phần cứng khi có ngắt nào đó
xảy ra. Và nó được set trở lại tự động bằng phần cứng khi lệnh kết thúc chương
trình ngắt được thực thi.
Bit toàn cục cũng có thể được set/ clear bằng phần mềm thông qua lệnh SEI/
CLE.
• Bit 6 - T: Bit coppy Storage, được sử dụng trong 2 Intruction BLD (Bit
LoaD) và bit BST (Bit Storage).
• Bit 5 – H: cờ nhờ nữa, cờ H là cờ nhớ trong một vài phép toán đại số và phép
logic, cờ này hiệu quả đối với các phép toán số BCD.
• Bit 4 – S: Bit dấu, bit S là kết quả phép XOR giữa 1 cờ N và V, S=N xor V.
• Bit 3 – V: cờ tràn bù 2.
• Bit 2 – N: Cờ âm, cờ này được set nếu kết quả phép toán đại số hay phép
logic là số âm.
• Bit 1 – Z: cờ zero, cờ này được set nếu kết quả phép toán đại số hay phép
logic bằng 0.
• Bit 0 – C: là cờ nhớ, là bit nhớ trong các phép đại số hoặc logic.
2.1.6 Tập các thanh ghi làm việc đa năng
Tất cả các lệnh đều được thực thi trên các thanh ghi làm việc có thể truy xuất
đến các thanh ghi, và hầu hết là các lệnh thực thi trong 1 chu kỳ clock.
Thanh ghi R0 được dùng để load chương trình vào trong bộ nhớ của AVR.
Các thanh ghi R26, R27, R28, R29, R30 và R31 ngoài chức năng thông thường còn
được sử dụng như các con trỏ để truy xuất đến bộ nhớ một cách gián tiếp.
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 8
Hình 2.4: Thanh ghi đa năng
2.1.7 Cổng vào ra của ATmega 32
ATmega 32 có 4 port vào ra 8 bit là: Port A, Port B, Port C và Port D tương
ứng với 32 đường vào ra. Các cổng vào ra của ATmega 32 là cổng vào ra hai chiều
có thể định hướng, tức có thể chọn hướng của cổng là hướng vào hay hướng ra. Tất
cả các cổng vảo ra của ATmega điều có tính năng đọc – chỉnh sửa – ghi, khi sử
dụng chúng như các cổng vào ra số thông thường. Tất cả các chân của các port đều
có điện trở kéo lên, ta có thể cho phép hay không cho phép điện trở kéo lên này hoạt
động.
Điện trở kéo lên là một điện trở được dùng khi thiết kế các điện tử logic. Nó
có một đầu được nối với nguồn điện áp dương và đầu còn lại được nối với tín hiệu
lối vào/ ra của một mạch logic chức năng. Điện trở kéo lên có thể được lắp đặt tại
các lối vào của khối mạch logic để thiết lập mức logic lối vào của khối mạch khi
không có thiết bị ngoài nào nối với lối vào. Ngoài ra, điện trở kéo lên còn được lắp
đặt tại lối ra của khối mạch khi lối ra không thể nối nguồn để tạo dòng.
2.1.7.1 Hoạt động của các Port xuất nhập
Mỗi port vào/ ra của vi điều khiển được liên kết với 3 thanh ghi: PORTx,
DDRx, PINx, ở đây x là các port A, B, C, D. Ba thanh ghi này sẽ được phối hợp với
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 9
nhau để điều khiển hoạt động của cổng, chẳng hạn thiết lập port thành lối vào có sử
dụng điện trở kéo lên.
2.1.7.1.1 Thanh ghi DDRx
Đây là thanh ghi 8 bit có chức năng điều khiển hướng của cổng vào hoặc ra.
Khi một bit của thanh ghi được set lên 1 thì chân tương ứng với nó được cấu hình
thành ngõ ra. Ngược lại, nếu bit của thanh ghi DDRx là 0 thì chân tương ứng với nó
được thiết lập thành ngõ vào.
Hình 2.5: Thanh ghi DDRA
2.1.7.1.2 Thanh ghi PORTx
Đây là thanh ghi dữ liệu của PORTx, nếu thanh ghi DDRx thiết lập cổng là lối
ra, khi đó giá trị của thanh ghi PORTx cũng là giá trị của các chân tương ứng của
PORTx, nghĩa là khi ghi một giá trị logic lên 1 bit của thanh ghi này thì chân tương
ứng với bit đó cũng có cùng mức logic. Khi thanh ghi DDRx thiết lập cổng thành
lối vào thì thanh ghi PORTx đóng vai trò như một thanh ghi điều khiển cổng. Cụ
thể, nếu một bit của thanh ghi này được set lên 1 thì điện trở kéo lên ở chân tương
ứng với nó sẽ được kích hoạt, ngược lại nếu bit được ghi thành 0 thì điện trở kéo lên
ở chân tương ứng sẽ không được kích hoạt, cổng ở trạng thái cao trở ( Hi-Z ).
Hình 2.6: Thanh ghi PORTA
2.1.7.1.3 Thanh ghi PINx
PINx không phải là một thanh ghi thực sự, đây là địa chỉ trong bộ nhớ I/O kết
nối trực tiếp tới các chân của cổng. Khi ta đọc PORTx tức là ta đọc dữ liệu được
chốt trong PORTx, còn khi đọc PINx thì giá trị logic hiện thời ở chân của cổng
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 10
tương ứng được đọc. Vì thế đối với thanh ghi PINx ta chỉ có thể đọc mà không thể
ghi.
Hình 2.7: Thanh ghi PINA
2.1.7.1.4 Thanh ghi SFIOR
Ngoài 2 bit của các thanh ghi DDRx và PORTx tham gia điều khiển điện trở
kéo lên, còn có một tín hiệu nữa điều khiển điện trở kéo lên, đó là tín hiệu PUD, đây
là bit nằm trong thanh ghi SFIOR, khi set bit này thành 1 thì điện trở kéo lên sẽ
không được cho phép bất kể các thiết lập của các thanh ghi DDRx và PORTx. Khi
bit này là 0 thì điện trở kéo lên được cho phép nếu { DDRxn, PORTxn } = { 0, 1 }.
Hình 2.8: Thanh ghi SFIOR
2.1.8 Bộ chuyển đổi ADC
2.1.8.1 Giới thiệu bộ chuyển đổi ADC
Bộ biến đổi ADC có chức năng biến đổi tín hiệu tương tự thành tín hiệu số. Bộ
ADC của Atmega32 có độ phân giải 10 bit, Có thể chuyển đổi ở độ phân giải cao,
có 8 kênh ngõ vào nguồn đơn thông qua bộ dồn kênh, 7 kênh ngõ vào vi sai với độ
lợi tùy chọn, dải điện áp ngõ vào ADC từ 0 đến Vcc, có thể lựa chọn điện áp tham
chiếu 2.56V cho ADC, có chế độ tự kích hoạt ADC bằng nguồn ngắt, và tính năng
chống nhiễu cho ADC. Bộ ADC của Atmega32 là loại ADC xấp xỉ liên tiếp với 2
chế độ chuyển đổi liên tục và chuyển đổi từng bước. Sơ đồ khối đơn giản của một
bộ ADC thể hiện như hình 2.9.
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 11
Hình 2.9: Sơ đồ khối đơn giản của ADC
Nguyên tắc hoạt động của khối ADC: Tín hiệu tương tự đưa vào các ngõ
ADC0 đến ADC7 được lấy mẫu và biến đổi thành tín hiệu số tương ứng. Tín hiệu
số được lưu trong hai thanh ghi ADCH và ADCL. Một ngắt có thể được tạo ra khi
hoàn thành một chu trình biến đổi ADC.
Điện thế tham chiếu là giá trị điện thế dùng để so sánh với điện thế của tín
hiệu tương tự cần biến đổi ở ngõ vào ADC. Atmega32 sử dụng điện thế tham chiếu
nội là 2.56V, và Vref là tùy chọn.
Tần số Clock ADC: là tần số clock cung cấp cho bộ biến đổi ADC, giá trị có
thể thay đổi từ vài KHz đến vài MHz. Tuy nhiên, tần số thích hợp khoảng từ 50KHz
đến 200KHz cho độ phân giải 10 bit và có thể cao hơn 200KHz nếu độ phân giải
thấp hơn.
Ngõ vào tương tự: ATmega32 có hai lựa chọn ngõ vào tương tự:
• 10 ngõ vào đơn hướng: 10 ngõ vào này là ADC0: ADC7, AGND và
bandgapreference. Thực tế thường dùng 8 ngõ vào ADC0:ADC7. Vì có 8 ngõ vào
ADC0:ADC7 nên ta có thể đưa vào 8 tín hiệu tương tự khác nhau. Khi lựa chọn ngõ
vào kiểu này thì kết quả chuyển đổi được tính như sau:
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 12
• Ngõ vào vi sai: ta có thể đưa hai tín hiệu tương tự vào ngõ vào ADC, hai tín
hiệu tương tự này sẽ qua một bộ vi sai, kết quả ở ngõ ra có thể được khuếch đại rồi
sau đó mới đưa vào khối ADC để biến đổi. Bộ vi sai có 2 ngõ vào là Vpos (ngõ vào
dương) và Vneg (ngõ vào âm). Các chân ADC3:ADC7 dùng làm ngõ vào dương,
các chân ADC0:ADC2 là ngõ vào âm, hình 2.10. Đối với lựa chọn này, kết quả
ADC sẽ là:
Với:
• Gain: là độ lợi có thể tùy chọn.
• V
POS
: là điện áp trên chân ngõ vào positive.
• V
NEG
: là điện áp trên chân ngõ vào negative.
• V
REF
: là điện áp tham chiếu lựa chọn.
Công thức trên cho thấy kết quả ADC có thể là số âm khi Vpos < Vneg. Do
đó, dải giá trị của ADC trong trường hợp này là -512 tới 511. Vì vậy, kết quả trong
thanh ghi ADC được biểu diễn dưới dạng số bù 2. Để biết được kết quả là số âm
hay dương ta kiểm tra bit ADC9 (trong thanh ghi ADCH), nếu bit này là 1 thì kết
quả là số âm, nếu bit này là 0 thì kết quả là số dương.
Chú ý: Điện thế qua bộ vi sai có thể âm, nhưng điện thế cấp ở các ngõ vào
ADC0:ADC7 (cho cả hai trường hợp ngõ vào vi sai và ngõ vào đơn hướng) phải
luôn nằm trong khoảng 0V-AVcc.
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 13
Hình 2.10: Ngõ vào vi sai
Chế độ hoạt động: Có hai chế độ hoạt động của bộ ADC là chuyển đổi liên tục
và chuyển đổi từng bước.
2.1.8.2 Các thanh ghi của bộ ADC
2.1.8.2.1 Thanh ghi lựa chọn dồn kênh ADC – ADMUX
Hình 2.11: Thanh ghi ADMUX
Bit 7: Bit 6 – REFS1:REFS0: Reference Selection Bits: hai bit này dùng để
lựa chọn điện thế tham chiếu là một trong 3 nguồn: AVCC, điện thế tham chiếu nội
2.56V và VREF như bảng 2.1. Nếu chọn điện thế V
REF
thì các tùy chọn còn lại
không được sử dụng để tránh bị ngắn mạch, điều này có nghĩa là nếu ta chọn điện
thế tham chiếu là VREF rồi, thì trong suốt quá trình hoạt động của bộ ADC ta
không được lựa chọn điện thế tham chiếu khác
Bảng 2.1 Lựa chọn điện thế tham chiếu
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 14
Bit 5 – ADLAR: ADC Left Adjust Result: Bit này lựa chọn cách bố trí dữ liệu
trong hai thanh ghi dữ liệu ADCH và ADCL.
Bits 4:0 – MUX4:0: Analog Channel and Gain Selection Bits: Các bit này lựa
chọn kiểu ngõ vào (đơn hay vi sai) và độ lợi.
2.1.8.2.2 Thanh ghi điều khiển và trạng thái A của ADC
Hình 2.12: Thanh ghi điều khiển và trạng thái ADC
Bit 7 – ADEN: ADC Enable: Bit này là 1 sẽ cho phép bộ ADC hoạt động,
ngược lại sẽ ngừng bộ ADC ngay cả khi nó đang trong quá trình biến đổi.
Bit 6 – ADSC: ADC Start Conversion: Ghi bit này thành 1 để bắt đầu quá
trình chuyển đổi. Trong chế độ chuyển đổi từng bước, sau mỗi lần chuyển đổi hoàn
thành bit này bị xóa về 0, ta phải set lại bit này để bắt đầu một biến đổi tiếp theo.
Trong chế độ chuyển đổi liên tục, ta chỉ cần set bit này một lần.
Bit 5 – ADFR: ADC Free Running Select: Set bit này lên 1 để lựa chọn chế
độ hoạt động biến đổi liên tục. Bit này là 0 sẽ cho phép chế độ biến đổi từng bước.
Bit 4 – ADIF: ADC Interrupt Flag: Bit này sẽ được set thành 1 khi một chu
trình biến đổi ADC hoàn thành, bit này được xóa bởi phần cứng khi trình phục vụ
ngắt tương ứng được thực thi. Chú ý là khi ta chỉnh sửa thanh ghi ADCSRA (như
dùng các lệnh CBI, SBI) thì bit này sẽ bị xóa. Vì vậy, để xóa bit này bởi phần mềm,
ta chỉ cần ghi giá trị 1 vào nó.
Bit 3 – ADIE: ADC Interrupt Enable: Bit này cho phép ngắt ADC, khi bit
ADIE (cho phép ngắt ADC) và bit I (cho phép ngắt toàn cục) trong thanh ghi SREG
được set lên 1 sẽ cho phép ngắt ADC hoạt động.
Bits 2:0 – ADPS2:0: ADC Prescaler Select Bits: Vì tần số clock ADC được
lấy từ xung clock hệ thống, nên các bit ADPS2:0 sẽ cho phép chia xung clock hệ
thống với các hệ số xác định trước khi đưa vào nguồn clock ADC. Với độ phân giải
10 bit, tần số clock ADC khoảng từ 50 – 200 KHz, nên tùy theo tần số clock hệ
thống mà ta lựa chọn hệ số chia thích hợp.
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 15
2.1.8.2.3 Thanh ghi dữ liệu cao và thấp của ADC
Đây là hai thanh ghi chứa kết quả ADC, tùy theo thiết lập của bit ADLAR
trong thanh ghi ADMUX, mà 10 bit dữ liệu ADC có thể được bố trí về phía phải
hay trái của hai thanh ghi ADCH và ADCL, cụ thể như sau:
Hình 2.13: Thanh ghi dữ liệu của ADC
Khi một quá trình chuyển đổi ADC hoàn tất thì kết quả sẽ được lưu trong 2
thanh ghi này. Trường hợp các kênh vi sai được sử dụng cho việc chuyển đổi ADC
thì giá kết quả được lưu chính là 2 dạng bù nhau.
Khi ADCL được đọc, thanh ghi DATA của ADC sẽ không được cập nhật cho
đến khi ADCH được đọc xong. Như vậy, nếu kết quả đang được canh trái và không
cần chính xác hơn 8 bit thì chỉ cần đọc ADCH. Ngược lại thì phải đọc ADCL trước
sau đó mới đọc đến ADCH.
Bit ADLAR trong ADMUX, và bit MUXn trong thanh ghi ADMUX tác động
lên kết quả được đọc ra từ các thanh ghi. Nếu ADLAR bằng 1 thì kết quả là canh
trái, nếu ADLAR bằng 0 thì kết quả là canh phải.
ADC 9:0 – Là kết quả chuyển đổi ADC, các bit này thể hiện kết quả từ quá trình
chuyển đổi.
2.2 TỔNG QUAN VỀ REALTIMES DS1307
2.2.1 Sơ đồ chân DS1307
DS1307 là chip đồng hồ thời gian thực, khái niệm thời gian thực ở đây có ý
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ờ…
Luận văn tốt nghiệp GVHD: Đặng Anh Tuấn
Trang 16
DS1307 là một sản phẩm của Dallas Semiconductor. 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.
Khi mất nguồn, DS1307 tự động chuyển sang dùng nguồn Pin Lithium 3V gắn
ngoài nên DS1307 vẫn đang hoạt động nhưng không ghi và đọc được. Hoạt động
với khoảng nhiệt độ: -40
0
C đến 85
0
C.
Hình 2.14: Hai dạng cấu tạo chân của DS1307
Các chân DS1307 được mô tả như sau:
- X1:X2: là hai chân kết nối với thạch anh 32.768Khz tạo nguồn dao động.
- V
BAT
: cực dương của nguồn pin 3V nuôi chíp.
- GND: chân mass chung cho cả nguồn pin 3V và Vcc.
- Vcc: nguồn cho giao diện I2C thường là 5V, dùng chung với vi điều khiển.
- SQW/OUT: là chân tạo ra xung vuông của DS1307 có 4 chế độ: 1Hz,
4.096kHz, 8.192kHz, 32.768kHz các chế độ này được quy định bởi thanh ghi
Control Register có địa chỉ 0x07h.
- SCL và SDA: đường xung nhịp và đường dữ liệu của giao diện I2C.
2.2.2 Cấu tạo bên trong của DS1307
Cấu tạo bên trong của 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 diện I2C, con trỏ điều khiển, các
thanh ghi (RAM). Đa số các thành phần bên trong của DS1307 là phần cứng nên
khi sử dụng chủ yếu là ghi và đọc dữ liệu từ các thanh ghi của chip này. Do vậy cần
phải hiểu rõ 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.