You are on page 1of 106

ÐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ÐẠI HỌC BÁCH KHOA


KHOA ÐIỆN – ÐIỆN TỬ
BỘ MÔN VIỄN THÔNG

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

QUẢN LÝ THIẾT BỊ
SỬ DỤNG CÔNG NGHỆ GSM

GVHD: ThS. Ðinh Quốc Hùng


SVTH: Bùi Mạnh Khánh 40501241
Võ Thành Long 40501532

-i-
- Tp. Hồ Chí Minh, Tháng 1-2010 -

- ii -
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Thành phố Hồ Chí Minh Độc Lập – Tự Do – Hạnh Phúc
 
Số:______/BKĐT
Khoa: Điện – Điện tử
Bộ Môn: Viễn Thông
NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Họ và tên: BÙI MẠNH KHÁNH MSSV: 40501241
Họ và tên: VÕ THÀNH LONG MSSV: 40501532
Ngành: VIỄN THÔNG LỚP: DD05DV2
1. Đầu đề luận văn: “Quản lý thiết bị sử dụng GSM”
2. Nhiệm vụ ( Yêu cầu về nội dung và số liệu ban đầu):
.......................................................................................................................................

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

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

.......................................................................................................................................
3. Ngày giao nhiệm vụ luận văn:
4. Ngày hoàn thành nhiệm vụ:
5. Họ và tên người hướng dẫn: Phần hướng dẫn
................................................

Nội dung và yêu cầu LVTN đã được thông qua Bộ Môn.


Ngày . .........tháng ............năm 2009
CHỦ NHIỆM BỘ MÔN NGƯỜI HƯỚNG DẪN CHÍNH
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)

PHẦN DÀNH CHO KHOA, BỘ MÔN:


Người duyệt (chấm sơ bộ):
Đơn vị:
Ngày bảo vệ:
Điểm tổng kết:
Nơi lưu trữ luận văn:
TRƯỜNG ĐH BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN – ĐIỆN TỬ Độc Lập – Tự Do – Hạnh Phúc
--o0o--
Ngày tháng năm 2010

PHIẾU CHẤM BẢO VỆ LVTN


(Dành cho người hướng dẫn)

Họ và tên: BÙI MẠNH KHÁNH MSSV: 40501241


Họ và tên: VÕ THÀNH LONG MSSV: 40501532
Ngành: VIỄN THÔNG LỚP: DD05DV2
1. Đề tài: “Quản lý thiết bị sử dụng GSM”
2. Họ tên người hướng dẫn: ThS ĐINH QUỐC HÙNG
3. Tổng quát về bản thuyết minh:
Số trang ......... Số chương .........
Số bảng số liệu ......... Số hình vẽ .........
Số tài liệu tham khảo ......... Phần mềm tính toán .........
4. Tổng quát về các bản vẽ:
- Số bản vẽ: bản A1 bản A2 khổ khác
- Số bản vẽ tay số bản vẽ trên máy tính
5. Những ưu điểm chính của LVTN:

6. Những thiếu sót chính của LVTN:

7. Đề nghị: Được bảo vệ , Bổ sung thêm để bảo vệ ,


Không được bảo vệ .
8. 3 câu hỏi sinh viên trả lời trước Hội Đồng:
a)

b)

c)

9. Đánh giá chung (bằng chữ: giỏi, khá, TB): Điểm …………………….

Ký tên (ghi rõ họ tên)


LỜI CẢM ƠN

Lời đầu tiên, sinh viên muốn gửi lời cảm ơn chân thành đến giáo viên, Thạc sĩ
Đinh Quốc Hùng, trong thời gian vừa qua, đã hướng dẫn và giúp đỡ sinh viên
nghiên cứu từ đồ án 2, thực tập tốt nghiệp đến luận văn tốt nghiệp. Những lời nhận
xét, góp ý và hướng dẫn của giáo viên đã giúp sinh viên có một định hướng đúng
trong quá trình thực hiện đề tài, giúp sinh viên nhìn ra được ưu khuyết điểm của đề
tài và từng bước khắc phục để ngày một tốt hơn.

Đồng thời sinh viên cũng muốn gửi lời cảm ơn sâu sắc đến gia đình và bạn bè đã
động viên và cổ vũ tinh thần sinh viên trong suốt quãng thời gian học tập, đặc biệt
là bố mẹ sinh viên, người đã chăm lo và hi sinh rất nhiều cho sinh viên để sinh viên
có thể chuyên tâm học tập.

Bên cạnh đó, sinh viên muốn nói lời cảm ơn đến những giáo viên đã đứng trên bục
giảng truyền đạt kinh nghiệm, kiến thức cho sinh viên trong suốt 4 năm đại học vừa
qua.

Một lần nữa, sinh viên xin gửi lời cảm ơn chân thành và sâu sắc đến bố mẹ, thầy cô
và bạn bè, những người luôn ở cạnh động viên, giúp đỡ và cổ vũ tinh thần cho sinh
viên.

Hồ Chí Minh, ngày 11 tháng 01 năm 2010

BÙI MẠNH KHÁNH

VÕ THÀNH LONG

- ii -
TÓM TẮT LUẬN VĂN

Mục tiêu chính của đề tài luận văn là thiết kế mạch giao tiếp với GSM modem
nhằm quản lý thiết bị bằng tin nhắn SMS. Khối giao tiếp này phải được thiết kế một
cách linh hoạt nhằm truyền tải thông tin từ người sử dụng tới các thiết bị quản lý.

Lý thuyết về GSM modem đã được tìm hiểu trong đồ án hai, trong phần luận văn
này tập trung xây dựng hệ thống gồm phần giao tiếp với GSM modem (node trung
tâm) và thiết bị giám sát nhiệt độ (node ngoại vi).

Node ngoại vi và node trung tâm sử dụng giao tiếp không dây nhằm đảm bảo tính
thẩm mỹ,tiện lợi cho người dùng.Mạch cảm biến nhiệt độ là một thí dụ điển hình
cho thiết bị giám sát.Với thiết kế, lập trình linh hoạt người dùng có thể thêm nhiều
thiết bị giám sát khác vào hệ thống mà không cần thay đổi gì node trung tâm.

Nhóm sinh viên thực hiện

BÙI MẠNH KHÁNH

VÕ THÀNH LONG

- iii -
MỤC LỤC

Đề mục Trang
Trang bìa.............................................................................................................i
Nhiệm vụ luận văn...............................................................................................
Lời cảm ơn.........................................................................................................ii
Tóm tắt luận văn...............................................................................................iii
Mục lục.............................................................................................................iv
Danh sách hình vẽ............................................................................................vii
Danh sách bảng biểu.........................................................................................xi

Nội dung luận văn


Phần 0 – GIỚI THIỆU CHUNG
Phần I – CƠ SỞ LÝ THUYẾT
Chương 1: Giới thiệu vi xử lý ATmega16
1.1 Giới thiệu chung ....................................................................................05
1.2 Cấu trúc AVR..........................................................................................06
1.2.1 Cấu trúc tổng quát .........................................................................06
1.2.2 ALU...............................................................................................07
1.2.3 Thanh ghi trạng thái........................................................................07
1.2.4 Các thanh ghi chức năng.................................................................08
1.2.5 Con trỏ ngăn xếp (SP).....................................................................08
1.2.6 Quản lý ngắt....................................................................................09
1.3 Cấu trúc bộ nhớ.......................................................................................10
1.4 Các cổng ngoài ra (I/O)...........................................................................12
1.5 Bộ định thời.............................................................................................14
1.5.1 Các thanh ghi...................................................................................15
1.5.2 Đơn vị đếm......................................................................................15
1.5.3 Đơn vị so sánh ngõ ra......................................................................16

- iv -
1.5.4 Mô tả các thanh ghi.........................................................................17
1.6 USART...................................................................................................19
1.6.1 Tạo xung clock................................................................................20
1.6.2 Định dạng khung truyền..................................................................21
1.6.3 Khởi tạo USART.............................................................................22
1.6.4 Truyền thông dữ liệu –bộ truyền USART.......................................23
1.6.5 Nhận dữ liệu –bộ phận USART.......................................................24
1.7 Bộ biến đổi A/D.....................................................................................26
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20
2.1 Sơ đồ chân cảm biến nhiệt độ DS18B20.................................................34
2.2 Các đặc tính cơ bản của DS18B20..........................................................35
2.3 Lệnh ROM và các lệnh chức năng..........................................................37
2.3.1 Lệnh ROM......................................................................................37
2.3.2 Lệnh chức năng bộ nhớ...................................................................38
2.4 Các cách kết nối DS18B20 với vi điều khiển.........................................39

Chương 3: KHÁI QUÁT MODULE RF


3.1 Các đặc tính của RF module....................................................................42
3.2 Chức năng các chân module....................................................................43
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT
4.1 Giới thiệu về kết nối GSM modem và RS232..........................................46
4.1.1 Sơ đồ nhân của GSM modem.........................................................46
4.1.2 Kết nối anten....................................................................................47
4.1.3 Nguồn cung cấp cho kết nối.............................................................47
4.1.4 Các chân kết nối của GSM modem..................................................48
4.2 Giới thiệu vế tập lệnh ATcommand...........................................................50
Phần II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ
5.1 Sơ đồ nguyên lý và sơ đồ khối................................................................55
5.1.1 Sơ đồ khối.....................................................................................55

-v-
5.1.2 Sơ đồ nguyên lý.............................................................................60
5.2 Giới thiệu IC max232..............................................................................62

Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH


6.1 Cách sử dụng codevisionAVR.................................................................65
6.2 Lưu đồ giải thuật khối trung tâm.............................................................74
6.3 Lưu đồ giải thuật khối ngoại vi...............................................................78
6.4 Chương trình chính.................................................................................80
6.4.1 Chương trình khối trung tâm...........................................................80
6.4.2 Chương trình khối ngoại vi.............................................................81

Chương 7: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN


7.1 Kết quả thi công......................................................................................86
7.1.1 Mạch in trung tâm...........................................................................86
7.1.2 Mạch in ngoại vi.............................................................................86
7.1.3 Mạch thực tế...................................................................................87
7.2 Kết luận và hướng phát triển...................................................................87

TÀI LIỆU THAM KHẢO

- vi -
DANH SÁCH HÌNH VẼ

Hình 1.1: Sơ đồ cấu trúc ATmega16


Hình 1.2: Sơ đồ cấu trúc CPU của ATmega16
Hình 1.3: Thanh ghi trạng thái SREG
Hình 1.4: Thanh ghi chức năng chung
Hình 1.5:Thanh ghi con trỏ ngăn xếp
Hình 1.6: Bản đồ bộ nhớ chương trình
Hình 1.7: Bản đồ bộ nhớ dữ liệu SRAM
Hình 1.8: Sơ đồ cấu trúc bộ định thời
Hình 1.9: Đơn vị đếm
Hình 1.10: Sơ đồ đơn vị so sánh ngõ ra
Hình 1.11: Thanh ghi điều khiển bộ định thời
Hình 1.12: Thanh ghi bộ định thời
Hình 1.13: Thanh ghi so sánh ngõ ra
Hình 1.14: Thanh ghi mặt nạ ngắt TIMSK
Hình 1.15: Thanh ghi mặt nạ ngắt TIMSK
Hình 1.16: Sơ đồ khối bộ USART
Hình 1.17: Đơn vị tạo xung clock
Hình 1.18: Định dạng khung truyền
Hình 1.19: Sơ đồ bộ biến đổi A/D
Hình 1.20: Thanh ghi ADMUX
Hình 1.21: Thanh ghi điều khiển và trạng thái ADC
Hình 1.22: Thanh ghi dữ liệu ADC
Hình 2.1 : Sơ đồ chân DS18B20
Hình 2.2 Phương pháp nối dây của DS18B20
Hình 2.3: Nội dung giải mã 64 bit trên bộ nhớ ROM
Hình 2.4 : Kết nối “1 dây”
Hình 2.5: Kết nối dùng nguồn ngoài

- vii -
Hình 3.1: Module giao tiếp RF
Hình 3.2:Cấu trúc chân RF module
Hình 3.3:Kết nối RF
Hình 4.1: Sơ đồ khối bên trong GSM modem.
Hình 4.2: Kết nối SMA cho anten
Hình 4.3 Nguồn cung cấp kết nối
Hình 4.4 15 chân kết nối
Hình 5.1: Sơ đồ khối tổng quát
Hình 5.2: Quá trình truyền tin(1)
Hình 5.3: Quá trình truyền tin(2)
Hình 5.4: Quá trình truyền tin(3)
Hình 5.5: Sơ đồ khối trung tâm
Hình 5.6: Sơ đồ khối ngoại vi
Hình 5.7: Sơ đồ nguyên lý trung tâm
Hình 5.8 : Sơ đồ nguyên lý ngoại vi
Hình 5.9: Sơ đồ chân MAX232.
Hình 5.10: Sơ đồ khối bên trong MAX232.

Hình 6.1: Cách sử dụng codevisionAVR(1)


Hình 6.2: Cách sử dụng codevisionAVR(2)
Hình 6.3: Cách sử dụng codevisionAVR(3)
Hình 6.4: Cách sử dụng codevisionAVR(4)
Hình 6.5: Cách sử dụng codevisionAVR(5)
Hình 6.6: Cách sử dụng codevisionAVR(6)
Hình 6.7: Cách sử dụng codevisionAVR(7)
Hình 6.8: Cách sử dụng codevisionAVR(8)
Hình 6.9: Cách sử dụng codevisionAVR(9)
Hình 6.10: Cách sử dụng codevisionAVR(10)
Hình 6.11: Cách sử dụng codevisionAVR(11)
Hình 6.12: Cách sử dụng codevisionAVR(12)

- viii -
Hình 6.13: Cách sử dụng codevisionAVR(13)
Hình 6.14: Cách sử dụng codevisionAVR(14)

Hình 6.15:Lưu đồ node trung tâm 1


Hình 6.16 : Lưu đồ node trung tâm 2

Hình 6.17: Lưu đồ giải thuật khối ngoại vi

Hình 6.18:Lưu đồ chương trình đọc giá trị nhiệt độ

Hình 7.1: Mạch in trung tâm


Hình 7.2: Mạch in ngoại vi
Hình 7.1: Mạch thực tế

- ix -
DANH SÁCH BẢNG BIỂU

Báng 1.1:Bảng 3 bít chọn xung đồng hồ


Bảng 1.2: Chọn điện áp tham khảo ADC
Bảng 4.1: Chân nguồn và ngoại vi
Bảng 4.2:Các chân kết nối GSM modem

-x-
DANH MỤC TỪ VIẾT TẮT

GSM Groupe Special Mobile


SMS Short Message Services
GPS Global Positioning System
GPRS General Packet Radio Service
CPU Central Processing Unit
RF Radio frequency
FSK Frequency Shift Keying
FDMA Frequency Division Multiplexing Access

- xi -
Phần mở đầu

GIỚI THIỆU CHUNG

Ngày nay với sự phát triển của hệ thống thông tin di động GSM và hệ thống
định vị GPS, nhu cầu của việc giám sát, quản lý ngày càng tăng. Song song với nhu
cầu định vị, chỉ đường dùng công nghệ GPS, nhu cầu giám sát thiết bị trên xe cũng
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 1
ngày càng cấp thiết. Module Wavecom Fastrack Supreme được tích hợp nhiều cổng
giao tiếp mở rộng cho những chức năng khác nhau như GPS, Bluetooth, Wifi,… cùng
các chuẩn giao tiếp chuẩn thông dụng như USB,RS232,…đã đáp ứng được hai nhu cầu
định vị và giám sát trên.
Trong đề tài luận văn này, chúng em thiết kế hệ thống để cụ thể mô hình trên. Thiết bị
gắn trên xe tải sẽ làm nhiệm vụ chính là thu sóng GPS xác định tọa độ của nó và gửi
tọa độ đó cùng các thông số đo được trên xe gửi về trung tâm quản lý. Cụ thể như sau:
- Thiết kế khối trung giao tiếp với GSM modem
- Thiết kế khối ngoại vi kiểm tra nhiệt độ

- Giao tiếp khối ngoại vi và khối trung tâm dùng RF module giao tiếp không dây

- Kết hợp hệ thống GPS để giám sát xe tải

PHẦN 1: CƠ SỞ LÝ THUYẾT

Chương 1: Giới thiệu vi xử lý ATmega16

Chương 2: Giới thiệu cảm biến DS18B20

Chương 3: Khái quát module RF

Chương 4: Giới thiệu GSM modem và tập lệnh AT

PHẦN 2: THIẾT KẾ VÀ THI CÔNG

Chương 5: Cơ sở thiết kế

Chương 6: Lưu đồ giải thuật và chương trình

Chương 7: Kết quả thi công và hướng phát triển triển

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 2
Phần I

CƠ SỞ LÝ THUYẾT

Chương 1: Giới thiệu vi xử lý ATmega16

Chương 2: Giới thiệu cảm biến DS18B20

Chương 3: Khái quát module RF

Chương 4: Giới thiệu GSM modem và tập lệnh AT

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 3
Chương 1

GIỚI THIỆU VI XỬ LÝ ATMEGA16

Nội dung chính

1.1 Giới thiệu chung


1.2 Cấu trúc nhân AVR
1.2.1 Cấu trúc tổng quát
1.2.2 ALU
1.2.3 Thanh ghi trạng thái
1.2.4 Các thanh ghi chức năng chung
1.2.5 Con trỏ ngăn xếp (SP)
1.2.6 Quản lý ngắt
1.3 Cấu trúc bộ nhớ
1.4 Các cổng vào ra (I/O)
1.5 Bộ định thời
1.5.1 Các thanh ghi
1.5.2 Đơn vị đếm
1.5.3 Đơn vị so sánh ngõ ra
1.5.4 Mô tả các thanh ghi
1.6 USART
1.6.1 Tạo xung clock
1.6.2 Định dạng khung truyền
1.6.3 Khởi tạo USART
1.6.4 Truyền thông dữ liệu-bộ truyền USART
1.6.5 Nhận dữ liệu-bộ nhận USART
1.7 Bộ biến đổi A/D
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 4
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

1.1 Giới thiệu chung

ATmega16 là vi điều khiển 8 bit dựa trên kiến trúc RISC. Với khả năng thực
hiện mỗi lệnh trong vòng một chu kỳ xung clock, ATmega16 có thể đạt được tốc độ
1MIPS trên mỗi MHz (1 triệu lệnh/s/MHz).Dưới đây là sơ đồ khối của ATmega16

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 5
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.1: Sơ đồ cấu trúc ATmega16

ATmega16 có các đặc điểm sau: 16KB bộ nhớ Flash với khả năng đọc trong khi
ghi, 512 byte bộ nhớ EEPROM, 1KB bộ nhớ SRAM, 32 thanh ghi chức năng chung,
32 đường vào ra chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại, USART, giao
tiếp nối tiếp 2 dây, 8 kênh ADC 10 bit,....
ATmega 16 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như:
trình dịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử nghiêm,...

1.2 Cấu trúc nhân AVR

CPU của AVR có chức năng bảo đảm sự hoạt động chính xác của các chương
trình. Do đó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán,
điều khiển các thiết bị ngoại vi và quản lý ngắt.
1.2.1 Cấu trúc tổng quát

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 6
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.2: Sơ đồ cấu trúc CPU của ATmega16

AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương
trình và dữ liệu. Các lệnh được thực hiện chỉ trong một chu kỳ xung clock. Bộ nhớ
chương trình được lưu trong bộ nhớ Flash.

1.2.2 ALU
ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán
được thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được chia làm 3
loại: đại số, logic và theo bit.

1.2.3 Thanh ghi trạng thái


Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép
tính số học và logic.

Hình 1.3: Thanh ghi trạng thái SREG

C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập)
Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0)
N: Negative Flag (Nếu kết quả của phép toán là âm)
V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số
bù 2)
V, For signed tests (S=N XOR V) S: N
H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ
sau)
T: Transfer bit used by BLD and BST instructions(Được sử dụng làm
nơi trung gian trong các lệnh BLD,BST).

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 7
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục
ngắt. Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.)

1.2.4 Các thanh ghi chức năng chung

Hình 1.4: Thanh ghi chức năng chung

1.2.5 Con trỏ ngăn xếp (SP)


Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi
chức năng đặc biệt 8 bit. Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E
(Trong bộ nhớ RAM là $5E). Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn
xếp.

Hình 1.5:Thanh ghi con trỏ ngăn xếp

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 8
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được
lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ
giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp
sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như
vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước
khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị
ngăn xếp ít nhất cũng phải lớn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các
thanh ghi.

1.2.6 Quản lý ngắt


Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng
sẵn sàng trao đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được một
byte nó sẽ báo cho CPU biết thông qua cờ RXC, hoặc khi nó đã truyền được một byte
thì cờ TX được thiết lập…
Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị trí
đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới vector phuc vụ
ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp lệnh RETI (return from
interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình mà trước
khi có ngăt nó đang thực hiện. Trong trường hợp mà có nhiều ngắt yêu cầu cùng một
lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo mức ưu
tiên. Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường
hợp. Trường hợp ngắt này có mức ưu tiên cao hơn thì nó sẽ được phục vụ. Còn nó mà
có mức ưu tiên thấp hơn thì nó sẽ bị bỏ qua.
Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên. Để truy nhập
vào SRAM thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào SRAM theo
kiểu ngăn xếp thì ta dùng con trỏ SP. Con trỏ này là một thanh ghi 16 bit và được truy
nhập như hai thanh ghi 8 bit chung có địa chỉ: SPL:0x3D/0x5D(IO/SRAM) và
SPH:0x3E/0x5E.
Khi chương trình phục vụ ngắt hoặc chương trình con thì con trỏ PC được lưu vào
ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ giảm 1 khi

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 9
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1
và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ
ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một
chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp
ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi.

Ví dụ:
char cSREG;

cSREG = SREG; /* store SREG value */

/* disable interrupts during timed sequence */


CLI();

EECR |= (1<<EEMWE); /* start EEPROM write */

EECR |= (1<<EEWE);

SREG = cSREG; /* restore SREG value (I-bit) */


1.3 Cấu trúc bộ nhớ

AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu và bộ nhớ chương trình.
Ngoài ra ATmega16 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu.

 Bộ nhớ chương trình (Bộ nhớ Flash)


Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình. Do các
lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu
8KX16. Bộ nhớ Flash được chia làm 2 phần, phần dành cho chương trình boot và
phần dành cho chương trình ứng dụng.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 10
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.6: Bản đồ bộ nhớ chương trình

 Bộ nhớ dữ liệu SRAM

1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ
I/O và bộ nhớ dữ liệu SRAM nội. Trong đó 96 ô nhớ đầu tiên định địa chỉ cho
file thanh ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ
SRAM nội.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 11
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.7: Bản đồ bộ nhớ dữ liệu SRAM

 Bộ nhớ dữ liệu EEPROM


ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và được
sắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một.

1.4 Các cổng vào ra (I/O)

Vi điều khiểnATmega16 có 32 đường vào ra chia làm bốn nhóm 8 bit một. Các
đường vào ra này có rất nhiều tính năng và có thể lập trình được. Ở đây ta sẽ xét chúng
là các cổng vào ra số. Nếu xét trên mặt này thì các cổng vào ra này là cổng vào ra hai
chiều có thể định hướng theo từng bit. Và chứa cả điện trở pull-up (có thể lập trình
được). Mặc dù mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra
số thì dường như điều khiển vào ra dữ liệu thì hoàn toàn như nhau. Chúng ta có thanh

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 12
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng (PORTA,
PORTB, PORTC, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA, DDRB,
DDRC, DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINA, PINB, PINC,
PIND).

 Thanh ghi DDRx


Đây là thanh ghi 8 bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác
dụng điều khiển hướng cổng PORTx (tức là cổng ra hay cổng vào). Nếu như
một bit trong thanh ghi này được set thì bit tương ứng đó trên PORTx được
định nghĩa như một cổng ra. Ngược lại nếu như bit đó không được set thì bit
tương ứng trên PORTx được định nghĩa là cổng vào.

 Thanh ghi PORTx


Đây cũng là thanh ghi 8 bit (các bit có thể đọc và ghi được) nó là thanh ghi
dữ liệu của cổng PORTx và trong trường hợp nếu cổng được định nghĩa là cổng
ra thì khi ta ghi một bit lên thanh ghi này thì chân tương ứng trên port đó cũng
có cùng mức logic. Trong trường hợp mà cổng được định nghĩa là cổng vào thì
thanh ghi này lại mang dữ liệu điều khiển cổng. Cụ thể nếu bit nào đó của thanh
ghi này được set (đưa lên mức 1) thì điện trở kéo lên (pull-up) của chân tương
ứng của port đó sẽ được kích hoạt. Ngược lại nó sẽ ở trạng thái hi-Z. Thanh ghi
này sau khi khởi động Vi điều khiểnsẽ có giá trị là 0x00.

 Thanh ghi PINx


Đây là thanh ghi 8 bit chứa dữ liệu vào của PORTx (trong trường hợp
PORTx được thiết lập là cổng vào) và nó chỉ có thể đọc mà không thể ghi vào
được.

Tóm lại:
1. Để đọc dữ liệu từ ngoài thì ta phải thực hiện các bước sau:

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 13
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

 Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n
trong port) đó là đầu vào (xóa thanh ghi DDRx hoặc bit).
 Sau đó kích hoạt điện trở pull-up bằng cách set thanh ghi PORTx ( bit).
 Cuối cùng đọc dữ liệu từ địa chỉ PINxn (trong đó x: là cổng và n là bit).

2. Để đưa dữ liệu từ vi điều khiển ra các cổng cũng có các bước hoàn toàn tương tự.
Ban đầu ta cũng phải định nghĩa đó là cổng ra bằng cách set bit tương ứng của cổng
đó…và sau đó là ghi dữ liệu ra bit tương ứng của thanh ghi PORTx.
Ví dụ:
unsigned char i;
...
/* Define pull-ups and set outputs high */
/* Define directions for port pins */
PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
/* Insert nop for synchronization*/
_NOP();
/* Read port pins */
i = PINB;

1.5 Bộ định thời

Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc
điểm sau:
 Bộ đếm một kênh
 Xóa bộ định thời khi trong mode so sánh (tự động nạp)
 PWM
 Tạo tần số
 Bộ đếm sự kiện ngoài
 Bộ chia tần 10 bit
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 14
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

 Nguồn ngắt tràn bộ đếm và so sánh


Sơ đồ cấu trúc của bộ định thời:

Hình 1.8: Sơ đồ cấu trúc bộ định thời

1.5.1 Các thanh ghi

TCNT0 và OCR0 là các thanh ghi 8 bit. Các tín hiệu yêu cầu ngắt đều nằm
trong thanh ghi TIFR. Các ngắt có thể được che bởi thanh ghi TIMSK.
Bộ định thời có thể sử dụng xung clock nội thông qua bộ chia hoặc xung clock
ngoài trên chân T0. Khối chọn xung clock điều khiển việc bộ định thời/bộ đếm sẽ
dùng nguồn xung nào để tăng giá trị của nó. Ngõ ra của khối chọn xung clock được
xem là xung clock của bộ định thời (clkT0).
Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm. Kết
quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tại
chân OC0.

1.5.2 Đơn vị đếm

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 15
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập trình
được. Cấu trúc của nó như hình dưới đây:

Hình 1.9: Đơn vị đếm


count: tăng hay giảm TCNT0 1
direction: lựa chọn giữa đếm lên và đếm xuống
clear: xóa thanh ghi TCNT0
clkT0: xung clock của bộ định thời
TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất
BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất (0)

1.5.3 Đơn vị so sánh ngõ ra

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 16
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.10: Sơ đồ đơn vị so sánh ngõ ra

Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh
ngõ ra (OCR0). Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một báo hiệu.
Báo hiệu này sẽ đặt giá trị cờ so sánh ngõ ra (OCF0) lên 1 vào chu kỳ xung clock tiếp
theo. Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ ra và sẽ
tự động được xóa khi ngắt được thực thi. Cờ OCF0 cũng có thể được xóa bằng phần
mềm.

1.5.4 Mô tả các thanh ghi

 Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0

Hình 1.11: Thanh ghi điều khiển bộ định thời

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 17
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Bit 7-FOC0: So sánh ngõ ra bắt buộc:Bit này chỉ tích cực khi bit
WGM00 chỉ định chế độ làm việc không có PWM. Khi đặt bit này lên 1, một
báo hiệu so sánh bắt buộc xuất hiện tại đơn vị tạo dạng sóng.
Bit 6, 3-WGM01:0: Chế độ tạo dạng sóng:Các bit này điều khiển đếm thứ
tự của bộ đếm, nguồn cho giá trị lớn nhất của bộ đếm (TOP) và kiểu tạo dạng sóng
sẽ được sử dụng.
Bit 5:4-COM01:0: Chế độ báo hiệu so sánh ngõ ra:Các bit này điều khiển
hoạt động của chân OC0. Nếu một hoặc cả hai bit COM01:0 được đặt lên 1, ngõ
ra OC0 sẽ hoạt động.
Bit 2:0: CS02:0: Chọn xung đồng hồ:Ba bit này dùng để lựa chọn nguồn
xung cho bộ định thời/bộ đếm.

Báng 1.1:Bảng 3 bít chọn xung đồng hồ

 Thanh ghi bộ định thời/bộ đếm

Hình 1.12: Thanh ghi bộ định thời

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 18
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Thanh ghi bộ định thời/bộ đếm cho phép truy cập trực tiếp (cả đọc và ghi)
vào bộ đếm 8 bit.

 Thanh ghi so sánh ngõ ra-OCR0

Hình 1.13: Thanh ghi so sánh ngõ ra


Thanh ghi này chứa một giá trị 8 bit và liên tục được so sánh với giá trị của
bộ đếm.
 Thanh ghi mặt nạ ngắt

Hình 1.14: Thanh ghi mặt nạ ngắt TIMSK



Bit 1-OCIE0: Cho phép ngắt báo hiệu so sánh
Bit 0-TOIE0: Cho phép ngắt tràn bộ đếm
 Thanh ghi cờ ngắt bộ định thời

Hình 1.15:Thanh ghi cờ ngắt bộ định thời


Bit 1-OCF0: Cờ so sánh ngõ ra 0
Bit 0-TOV0: Cờ tràn bộ đếm
Bit TOV0 được đặt lên 1 khi bộ đếm bị tràn và được xóa bởi phần cứng
khi vector ngắt tương ứng được thực hiện. Bit này cũng có thể được xóa
bằng phần mềm.

1.6 USART

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 19
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Bộ truyền nhận nối tiếp đồng bộ và bất đồng bộ là một thiết truyền thông nối tiếp
có các chức năng chính như sau:
 Hoạt động song công (các thanh ghi truyền và nhận nối tiếp độc lập với nhau).
 Hoạt động đồng bộ hoặc bất đồng bộ
 Bộ tạo tốc độ baud có độ chính xác cao
 Hỗ trợ khung truyền nối tiếp với 5, 6, 7, 8, hoặc 9 bit dữ liệu và 1 hoặc 2 bit
stop
 Kiểm tra chẵn lẻ
 Phát hiện tràn dữ liệu
 Phát hiện lỗi khung
 Lọc nhiễu, bao gồm phát hiện bit start lỗi và bộ lọc thông thấp số
 Ngắt khi kết thúc truyền, thanh ghi truyền hết dữ liệu và kết thúc nhận
 Chế độ truyền thông đa vi xử lý
 Chế độ truyền đồng bộ tốc độ cao
Sơ đồ khối của bộ USART như sau:

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 20
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.16: Sơ đồ khối bộ USART

USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận. Các
thanh ghi điều khiển được sử dụng chung giữa các phần này.

1.6.1 Tạo xung clock


Bộ tạo xung clock tạo ra xung đồng hồ căn bản cho bộ truyền và bộ nhận. USART
hỗ trợ 4 chế độ hoạt động xung clock: bất đồng bộ, bất đồng bộ tốc độ cao, truyền
đồng bộ master và truyền đồng bộ slave. Sơ đồ khối của bộ tạo xung clock như sau:

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 21
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.17: Đơn vị tạo xung clock


.
txclk: xung đồng hồ bộ truyền
rxclk: xung đồng hồ bộ nhận
xcki: tín hiệu vào từ chân XCK, sử dụng cho hoạt động truyền đồng bộ master
xcko: tín hiệu xung clock ngõ ra tới chân XCK, sử dụng cho hoạt động truyền đồng
bộ slave
fosc: tần số từ chân XTAL

1.6.2 Định dạng khung truyền


USART chấp nhận tất cả 30 tổ hợp của các định dạng khung truyền sau đây:
 1 bit start
 5, 6, 7, 8, hoặc 9 bit dữ liệu
 Có hoặc không có bit chẵn, lẻ
 1 hoặc 2 bit stop
Một khung truyền bắt đầu với một bit start, theo sau đó là bit có trọng số thấp nhất
(LSB) của dữ liệu (có thể lên tới 9 bit), kết thúc bằng bit có trọng số lớn nhất (MSB)
và bit stop.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 22
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.18: Định dạng khung truyền

St: bit start (mức thấp)


(n): bit dữ liệu (0 đến 8)
P: bit chẵn lẻ
Sp: bit stop (mức cao)
IDLE: không có dữ liệu truyền (mức cao trong suốt thời gian idle)

1.6.3 Khởi tạo USART


Quá trình khởi tạo USART bao gồm việc thiết lập tốc độ baud, thiết lập định dạng
khung và kích hoạt bộ truyền và bộ nhận.
Ví dụ dưới đây thiết lập hoạt động truyền bất động bộ sử dụng polling (không dùng
ngắt) và định dạng khung truyền là cố định. Tốc độ baud là một tham số của hàm.

void USART_Init( unsigned int baud )


{
/* Set baud rate */
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)}

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 23
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

1.6.4 Truyền thông dữ liệu-bộ truyền USART


Bộ truyền USART được kích hoạt bằng cách thiết lập bit TXEN trong thanh ghi
UCSRB. Khi bộ truyền được kích hoạt, chân TxD hoạt động như ngõ ra của bộ truyền
nối tiếp. Tốc độ baud, chế độ hoạt động và định dạng khung truyền phải được thiết lập
trước khi thực hiện truyền dữ liệu.

 Truyền khung 5 đến 8 bit dữ liệu


Việc truyền dữ liệu được thiết lập bằng cách nạp dữ liệu truyền vào bộ đệm
truyền. Dữ liệu trong bộ đệm sẽ được đưa vào thanh ghi dịch khi thanh ghi dịch
đã sẵn sàng gửi một khung mới.
Ví dụ dưới đây là một hàm truyền USART dựa trên việc kiểm tra cờ UDRE.

void USART_Transmit( unsigned char data )


{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}

 Truyền khung 9 bit dữ liệu


Nếu sử dụng 9 bit dữ liệu, bit thứ 9 phải được ghi vào bit TXB8 trong thanh
ghi UCSRB trước khi byte còn lại được ghi vào UDR.

Ví dụ:

void USART_Transmit( unsigned int data )


{
/* Wait for empty transmit buffer */
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 24
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

while ( !( UCSRA & (1<<UDRE))) )

;
/* Copy 9th bit to TXB8 */
UCSRB &= ~(1<<TXB8);
if ( data & 0x0100 )
UCSRB |= (1<<TXB8);
/* Put data into buffer, sends the data */
UDR = data;
}

1.6.5 Nhận dữ liệu-bộ nhận USART


Bộ nhận USART được kích hoạt bằng cách đặt bit RXEN trong thanh ghi
UCRSB lên 1. Khi bộ nhận được kích hoạt, chân RxD hoạt động như ngõ vào của bộ
nhận nối tiếp. Tốc độ baud, chế độ hoạt động và định dạng khung truyền phải được
thiết lập trước khi thực hiện truyền dữ liệu.

 Nhận khung với 5 đến 8 bit dữ liệu


Bộ nhận bắt đầu nhận dữ liệu khi nó phát hiện một bit start hợp lệ. Mỗi bit
theo sau bit start sẽ được lấy mẫu tại tốc độ baud hoặc tốc độ đồng hồ XCK, và
được dịch vào trong thanh ghi dịch của bộ nhận cho đến khi phát hiện một bit
stop đầu tiên. Nội dung của thanh ghi dịch sau đó được đưa vào bộ đệm. Bộ
đệm của bộ nhận có thể được đọc bằng cách đọc UDR.
Ví dụ sau đây là một hàm nhận USART dựa trên việc kiểm tra cờ kết
thúc truyền (RXC).

unsigned char USART_Receive( void )


{
/* Wait for data to be received */

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 25
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

while ( !(UCSRA & (1<<RXC)) )


;
/* Get and return received data from buffer */
return UDR;
}

 Nhận khung với 9 bit dữ liệu


Nếu nhận dữ liệu 9 bit, bit thứ 9 phải được đọc từ bit RXB8 trong thanh ghi
UCSRB trước khi đọc các bit thấp trong UDR.
Ví dụ sau đây là một hàm nhận dữ liệu 9 bit.

unsigned int USART_Receive( void )


{
unsigned char status, resh, resl;
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
/* Get status and 9th bit, then data */
/* from buffer */
status = UCSRA;
resh = UCSRB;
resl = UDR;
/* If error, return -1 */
if ( status & (1<<FE)|(1<<DOR)|(1<<PE) )
return -1;
/* Filter the 9th bit, then return */
resh = (resh >> 1) & 0x01;
return ((resh << 8) | resl);
}

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 26
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

1.7 Bộ biến đổi A/D

Vi điều khiểnATmega16 có một bộ biến đổi ADC tích hợp trong chip với các đặc
điểm:
 Độ phân giải 10 bit
 Sai số tuyến tính: 0.5LSB
 Độ chính xác +/-2LSB
 Thời gian chuyển đổi:65-260μs
 8 Kênh đầu vào có thể được lựa chọn
 Có hai chế độ chuyển đổi free running và single conversion
 Có nguồn báo ngắt khi hoàn thành chuyển đổi
 Loại bỏ nhiễu trong chế độ ngủ

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 27
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.19: Sơ đồ bộ biến đổi A/D

Tám đầu vào của ADC là tám chân của PORTA và chúng được chọn thông qua
một MUX.
Để điều khiển hoạt động vào ra dữ liệu của ADC và CPU chúng ta có 3 thanh ghi:
ADMUX là thanh ghi điều khiển lựa chọn kênh đầu vào cho ADC, ADCSRA là thanh
ghi điều khiển và thanh ghi trạng thái của ADC, ADCH và ADCL là 2 thanh ghi dữ
liệu.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 28
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

ADMUX: Multiplexer select register


Đây là thanh ghi điều khiển 8 bit.

Hình 1.20: Thanh ghi ADMUX

Với 4 bit được định nghĩa là MUX3, MUX2, MUX1,và MUX0, ứng với các tổ hợp
logic ta có thể chọn kênh đầu vào. Cụ thể:

Các bit REFS1 và REFS0 dùng để chọn giá trị điện áp tham khảo cho ADC, như
sau:
Bảng 1.2: chọn điện áp tham khảo ADC

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 29
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Chú ý: Nếu như ta thay đổi kênh trong thời điểm mà ADC đang chuyển đổi thì khi
quá trình chuyển đổi đã hoàn thành thì kênh vào mới được thay đổi.

ADCSR-ADC control and status register


Đây là thanh ghi điều khiển và lưu trạng thái của ADC.

Hình 1.21: Thanh ghi điều khiển và trạng thái ADC

 Bit 7-ADEN:ADC enable


Đây là bit điều khiển hoạt động của ADC.Khi bit này được set 1 thì
ADC có thể hoạt động và ngược lại.Nếu như ta ngừng hoạt động của ADC
trong khi nó đang chuyển đổi thì nó sẽ kết thúc quá trình chuyển đổi.Mặc dù
chưa chuyển đổi xong.

 Bit 6-ADSC: ADC start conversion


Trong chế độ chuyển đổi đơn thì bit này phải được set lên 1 để bắt đầu
chuyển đổi.Trong chế độ chuyển đổi tự do thì bit này cần được set lên 1 để bắt
đầu lần chuyển đổi đầu tiên.Bit này được giữ sốt trong quá trình chuyển đổi và
được xóa khi mà chuyển đổi xong.

 Bit 5-ADATE :ADC Auto Trigger enable


Khi bit này được set thì ADC sẽ bắt đầu chuyển đổi mỗi khi có một nguồn
kích hoạt xuất hiện. Việc lựa chọn nguồn kích hoạt được thực hiện bằng cách
set các bit trong thanh ghi SFIOR.

 Bit 4-ADIF: ADC interrupt Flag

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 30
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Bit này được set lên 1 bởi phần cứng khi quá trình chuyển đổi đã hoàn thành
và thanh ghi dữ liệu đã được cập nhật. Bit này được xóa bằng phần cứng nếu
như ngắt này được phép và được phục vụ. Hoặc nó có thể được xóa bằng cách
ghi giá trị logic “0”vào cờ này. Cụ thể khi ngắt bị cấm ta có thể sử dụng các
lệnh sbi và cbi để tác dụng lên bit này.

 Bit 3-ADIE:ACD interrupt Enable


Nếu bit này set 1 và ngắt toàn cục được cho phép thì ngắt này được phép
phục vụ (khi chuyển đổi xong dữ liệu) và nếu bị xóa thì ngược lại.

 Bit 2.1.0-ADPS2…ADPS0: Bit lựa chọn xung nhịp(Tốc độ)


Nguồn xung được lấy từ nguồn xung của Vi điều khiển(XTAL) và được
chia tần thông qua bộ chia tần.
Các bit ADPS có nhiệm vụ chọn số chia cho bộ chia tần theo bảng sau:

Thanh ghi dữ liệu ACDH và ADCL


Thanh ghi này chứa dữ liệu chuyển đổi từ tương tự sang số, được sắp xếp như
hình dưới đây.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 31
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

Hình 1.22: Thanh ghi dữ liệu ADC

Nguyên tắc hoạt động và lập trình điều khiển


ADC có nhiệm vụ chuyển đổi tín hiệu điện áp tương tự thành tín hiệu số có độ
phân giải 10 bit.Với giá trị nhỏ nhất của điện áp đặt ở chân AGND và giá trị cực đại
của điện áp tương tự được mắc vào chân AREF. Tám kênh tương tự đầu vào được
chọn lựa thông qua ADMUX và ADMUX này được điều khiển bởi thanh ghi
ADMUX.
ADC này có thể hoạt động được ở hai chế độ. Đó là chuyển đổi đơn: chỉ chuyển
đổi một lần khi có lệnh chuyển đổi và chế độ tự chuyển đổi (Free running mode) đây
là chế độ mà ADC tự động chuyển đổi khi được hoạt động và công việc chuyển đổi có
tính tuần hoàn (chỉ cần khởi động một lần).
ADC được phép hoạt động nhờ thiết lập bit ADEN. Quá trình chuyển đổi được bắt
đầu bằng việc ghi vào bit ADSC mức logic 1 và trong suốt quá trình chuyển đổi bit
này luôn được giữ ở mức cao. Khi quá trình chuyển đổi hoàn thành thì bit này được
xóa bằng phần cứng và cờ AIDF được bật lên.
Dữ liệu sau khi chuyển đổi được đưa ra thanh ghi dữ liệu ADCL và ADCH, nhưng
chú ý khi đọc dữ liệu từ hai thanh ghi này thì đọc ADCL trước rồi mới đọc ADCH.
Nếu đọc ADCH trước thì dữ liệu cập nhật có thể ghi đè lên ADCL (Vi điều khiển nghĩ
rằng đã đọc xong dữ liệu).
Để điều khiển vào ra dữ liệu với ADC, các bước thực hiện như sau:
Bước 1: Định nghĩa các cổng vào cho tín hiệu tương tự
Xóa bit tương ứng với chân đó trong thanh ghi DDRA. Sau đó loại bỏ điện trở treo
bằng cách xóa bit tương ứng ở thanh ghi PORTA.
Bước 2: Chọn kênh tương tự vào (chọn chân vào cho ADC) thông qua thanh ghi
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 32
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

ADMUX (có thể thay đổi trong quá trình hoạt động).
Bước 3: Thiết lập các thông số cho ADC
Tốc độ chuyển đổi thông qua xung nhip chuyển đổi.
Chế độ chuyển đổi : đơn hoặc tự động.
Sử dụng ngắt hoặc không.
Bước 4: Bắt đầu chuyển đổi và đọc dữ liệu.

Ví dụ: (biến đổi ADC, ngõ vào analog PA2, hiển thị dữ liệu trên led ở PORTB)
#include <avr/io.h>
#include<avr/interrupt.h>
//ADC interrupt function
ISR(ADC_vect)
{PORTB=ADCH;
}

int main(void)
{
outp(0xFF, DDRB); //PORTB is output
outp(0xFF, PORTB); //all PIN’s high (LED’s off)
outp(0x22, ADMUX); //PINA2 as analog input (MUX0..2)
//left adjusted (ADLAR=1)
//AREF as reference voltage (connected to VCC 5V) (REFS0..1)
outp(0xA5, ADCSR); //ADC enable, ADC auto trigger, ADC prescaler= 32
outp((inp(SFIOR)&0x1F),SFIOR); //Trigger source = Free Running Mode
sbi(ADCSR,6);
for(;;)
{
}
return 1;

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 33
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 34
Chương 2

GIỚI THIỆU CẢM BIẾN DS18B20

Nội dung chính

2.1 Sơ đồ chân cảm biến nhiệt độ DS18B20

2.2 Các đặc tính kỹ thuật cơ bản của DS18B20

2.3 Lệnh ROM và các lệnh chức năng

2.3.1 Lệnh ROM

2.3.2 Lệnh chức năng bộ nhớ

2.4 Các cách kết nối DS18B20 với vi điều khiển

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 35
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20

2.1 Sơ đồ chân cảm biến nhiệt độ DS18B20

Cảm biến nhiệt độ DS18B20 là một sản phẩm của công ty Dallas (Mỹ), đây
cũng là công ty đóng góp nhiều vào việc cho ra đời bus một dây và các cảm biến một
dây. Hình dạng bề ngoài của cảm biến một dây DS18B20 được miêu tả trong hình vẽ,
trong đó dạng vỏ TO-92 với 3 chân là dạng thường gặp và được sử dụng trong nhiều
ứng dụng, cảm biến dạng vỏ SOIC với 8 chân được dùng để đo nhiệt độ bề mặt, kể cả
da người.

Hình 2.1 : Sơ đồ chân DS18B20


GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 36
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20

Điện áp hoạt động từ 3 đến 5VDC.

• Chân 1:GND

• Chân 2: DQ (truyền tín hiệu)

• Chân 3: Nguồn VCC

Có thể đo nhiệt độ từ -55 đến +1250C. Khi lắp vào mạch phải nối chân 2 và
chân 3 với điện trở 4k7.

2.2 Các đặc tính kỹ thuật cơ bản của DS18B20

 Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông.
 Độ phân giải khi đo nhiệt độ là 9 - 12bit. Dải đo nhiệt độ -550C đến 1250 C,
từng bậc 0,50 C, có thể đạt độ chính xác đến 0,10 C bằng việc hiệu chỉnh qua
phần mềm. Rất thích hợp với các ứng dụng đo lường đa điểm vì nhiều đầu
đo có thể được nối trên một bus, bus này được gọi là bus một dây (1-wire
bus) giống hình dưới đây :

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 37
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20

Hình 2.2 phương pháp nối dây của DS18B20


(hình vẽ trên là phương pháp nối của DS18S20,tuy nhiên cũng có thể áp
dụng được cho DS18B20)

 Không cần thêm linh kiện bên ngoài. Điện áp nguồn nuôi có thể thay đổi
trong khoảng rộng, từ 3,0 V đến 5,5 V một chiều và có thể được cấp thông
qua đường dẫn dữ liệu. Dòng tiêu thụ ở chế độ nghỉ cực nhỏ. Thời gian lấy
mẫu và biến đổi thành số tương đối nhanh, không quá 200 ms.
 Mỗi cảm biến có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM
trên chip (on chip), giá trị nhị phân được khắc bằng tia lazer. Đầu đo nhiệt
độ số DS18B20 đưa ra số liệu để biểu thị nhiệt độ đo được dưới dạng mã
nhị phân 9 bit. Các thông tin được gửi đến và nhận về từ DS18B20 trên giao
diện 1-wire, do đó chỉ cần hai đường dẫn gồm một đường cho tín hiệu và
một đường làm dây đất là đủ để kết nối vi điều khiển đến điểm đo. Nguồn
nuôi cho các thao tác ghi/đọc/chuyển đổi có thể được trích từ đường tín
hiệu, không cần có thêm đường dây riêng để cấp điện áp nguồn.
 Mỗi vi mạch đo nhiệt độ DS18B20 có một mã số định danh duy nhất, được
khắc bằng laser trong quá trình chế tạo vi mạch nên nhiều vi mạch DS1820
có thể cùng kết nối vào một bus 1-wire mà không có sự nhầm lẫn. Đặc điểm
này làm cho việc lắp đặt nhiều cảm biến nhiệt độ tại nhiều vị trí khác nhau
trở nên dễ dàng và với chi phí thấp.
 Theo chuẩn 1-wire độ dài tối đa cho phép của bus là 300 m.
 Số lượng các cảm biến nối vào bus không hạn chế. Để nâng cao độ phân
giải lên trên 12 bit ta phải tính toán thêm bằng phần mềm dựa trên các số
liệu lưu trữ trên các thanh ghi nhiệt độ, COUNT REMAIN và COUNT PER
C trong nhóm các thanh ghi nháp (scratchpad).

Bộ nhớ ROM 64–Bit Của DS18B20: Mỗi cảm biến nhiệt độ DS1820 có một
dãy mã 64 bit duy nhất được lưu trữ trong bộ nhớ ROM từ khi sản xuất bằng kỹ thuật
lazer.
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 38
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20

Hình 2.3: Nội dung giải mã 64 bit trên bộ nhớ ROM


Nội dung dãy mã 64-bit trên bộ nhớ ROM:Như vậy dãy mã được chia ra
thành 3 nhóm, trong đó:
 8 bit đầu tiên là mã định danh họ một dây, mã của DS1820 là 10h.
 48 bit tiếp theo là mã số xuất xưởng duy nhất, nghĩa là mỗi cảm biến
DS1820 chỉ có một số mã.

 8 bit có ý nghĩa nhất là byte mã kiểm tra CRC (cyclic redundancy


check), byte này được tính toán từ 56 bit đầu tiên của dãy mã trên ROM .Để
truy cập lên cảm biến một dây DS1820 ta phải sử dụng hai nhóm lệnh: các
lệnh ROM và các lệnh chức năng (function commands) bộ nhớ, các lệnh
này có thể được mô tả ngắn gọn như sau: Sau khi thiết bị chủ (thường là một
vi điều khiển) phát hiện ra một xung presence pulse, nó có thể xuất ra một
lệnh ROM. Có 5 loại lệnh ROM, mỗi lệnh dài 8 bit. Thiết bị chủ phải đưa ra
lệnh ROM thích hợp trước khi đưa ra một lệnh chức năng để giao tiếp với
cảm biến DS18S20.

2.3 Lệnh ROM và các lệnh chức năng

2.3.1 Lệnh ROM

 READ ROM (33h) :Cho phép đọc ra 8 byte mã đã khắc bằng laser trên

ROM, bao gồm: 8 bit mã định tên linh kiện (10h), 48 bit số xuất xưởng,
8 bit kiểm tra CRC. Lệnh này chỉ dùng khi trên bus có 1 cảm biến
DS1820, nếu không sẽ xảy ra xung đột trên bus do tất cả các thiết bị
slave cùng đáp ứng.

 MATCH ROM (55h) :Lệnh này được gửi đi cùng với 64 bit ROM tiếp
theo, cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ
thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào. Chỉ có
DS1820 nào có 64 bit trên ROM trùng khớp với chuỗi 64 bit vừa được

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 39
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20

gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo. Còn các cảm biến
DS1820 có 64 bit ROM không trùng khớp sẽ tiếp tục chờ một xung
reset. Lệnh này được sử dụng cả trong trường hợp có một cảm biến một
dây, cả trong trường hợp có nhiều cảm biến một dây.

 SKIP ROM (CCh) : Lệnh này cho phép thiết bị điều khiển truy nhập

thẳng đến các lệnh bộ nhớ của DS1820 mà không cần gửi chuỗi mã 64
bit ROM. Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang
hiệu quả khi trên bus chỉ có một cảm biến.

 SEARCH ROM (F0h) : Lệnh này cho phép bộ điều khiển bus có thể dò

tìm được số lượng thành viên slave đang được đấu vào bus và các giá trị
cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm.

 ALARM SEARCH (ECh) : Tiến trình của lệnh này giống hệt như lệnh
Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất
hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng. Điều kiện
cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn giá
trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ
thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến.

2.3.2 Lệnh chức năng bộ nhớ: Sau khi thiết bị chủ (thường là một vi điều
khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây
đang được đấu vào bus, thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820.
Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp
(scratchpath) của cảm biến DS1820. Khởi tạo quá trình chuyển đổi giá trị
nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn. Các lệnh chức
năng có thể được mô tả ngắn gọn như sau:

 WRITE SCRATCHPAD (4Eh) : Lệnh này cho phép ghi 2 byte dữ liệu
vào bộ nhớ nháp của DS1820. Byte đầu tiên được ghi vào thanh ghi TH
(byte 2 của bộ nhớ nháp) còn byte thứ hai được ghi vào thanh ghi TL
(byte 3 của bộ nhớ nháp). Dữ liệu truyền theo trình tự đầu tiên là bit có ý
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 40
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20

nghĩa nhất và kế tiếp là những bit có ý nghĩa giảm dần. Cả hai byte này
phải được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có
dữ liệu khác xuất hiện.

 READ SCRATCHPAD (BEh) :Lệnh này cho phép thiết bị chủ đọc nội

dung bộ nhớ nháp. Quá trình đọc bắt đầu từ bit có ý nghĩa nhất của byte
0 và tiếp tục cho đến byte thứ 9 (byte 8 - CRC). Thiết bị chủ có thể xuất
ra một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ
có một phần của dữ liệu trên bộ nhớ nháp cần được đọc.

 COPYSCRATCHPAD (48h) : Lệnh này copy nội dung của hai thanh

ghi TH và TL (byte 2 và byte 3) vào bộ nhớ EEPROM. Nếu cảm biến


được sử dụng trong chế độ cấp nguồn l bắt đầu việc đo.

 CONVERT T (44h) : Lệnh này khởi động một quá trình đo và chuyển

đổi giá trị nhiệt độ thành số (nhị phân). Sau khi chuyển đổi giá trị kết
quả đo nhiệt độ được lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ
nháp. Thời gian chuyển đổi không quá 200 ms, trong thời gian đang
chuyển đổi nếu thực hiện lệnh đọc thì các giá trị đọc ra đều bằng 0.

 READ POWER SUPPLY (B4h) : Một lệnh đọc tiếp sau lệnh này sẽ cho
biết DS1820 đang sử dụng chế độ cấp nguồn như thế nào, giá trị đọc
được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu
cấp nguồn qua một đường dẫn riêng.

2.4 Các cách kết nối DS18B20 với vi điều khiển

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 41
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20

Hình 2.4 : kết nối “1 dây”

Hình 2.5: kết nối dùng nguồn ngoài

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 42
Chương 3

KHÁI QUÁT MODULE RF

Nội dung chính

3.1 Các đặc tính của RF module

3.2 Chức năng các chân RF module


PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 3: KHÁI QUÁT MODULE RF

3.1 Các đặc tính của RF module

Bộ thu phát HM-TR được thiết kế cho các ứng dụng cần truyền dữ liệu
không dây. Nó có đặc tính là tốc độ dữ liệu cao, khoảng cách truyền xa, tần số
có thể lập trình được, cấu trúc khung USART có thể cấu hình được và dòng ở
chế độ sleep thấp. Giao thức giao tiếp được tự động điều khiển và hoàn toàn
trong suốt với người dùng. Module này có thể thêm vào các hệ thống đã tồn tại
sẵn với giá thành thấp,hiệu suất cao và giao tiếp dữ liệu không dây dễ dàng.
1.Điều chế dịch tần số FSK
2.Giao tiếp hai chiều half-duplex
3.Tần số hoạt động 315/433/868/915 Mhz
4.Tần số có thể lập trình được,đươc phép sử dụng các ứng dụng FDMA
5.Tự động điều khiển RF sang USART,tin cậy và dễ dàng sử dụng
6.Cấu trúc khung USART có thể cấu hình được với tốc độ dữ liệu từ 300-
19200bps
7.Sử dụng chân ENABLE để điều khiển chu kỳ lặp lại theo những yêu cầu khác
nhau của ứng dụng.
8.Hiệu suất cao,khoảng cách truyền xa 300m ở những khu vực trống
9.Giao thức UART với chuẩn TTL /RS232
10.Không cần bộ cộng hưởng RF trong mạch ứng dụng

Hình 3.1: module giao tiếp RF


PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 3: KHÁI QUÁT MODULE RF

3.2 Chức năng các chân RF module

Cấu trúc chân của RF module như sau:

Hình 3.2:Cấu trúc chân RF module


 Chân 1: cung cấp nguồn VDD 5V
 Chân 2: xuất dữ liệu (DTX) ra khỏi module, được nối với chân
thu RX của vi xử lý
 Chân 3: nối đất GND
 Chân 4: nhận dữ liệu (DRX) tới module,được nối với chân phát
TX của vi xử lý
 Chân 5: cấu hình các thông số cho RF module (CONFIG). Khi
bật nguồn nếu chân này ở mức cao thì nó sẽ chuyển vào mode
config. Khi giao tiếp thì chân này được đặt ở mức thấp.
 Chân 6: Khi RF module đang hoạt động bình thường, nếu chân
này được đặt mức thấp thì nó sẽ chuyển sang chế độ sleep ngay
lập tức. Khi nó được đặt mức cao (ENABLE) thì RF module hoạt
động lại bình thường.
Để cấu hình cho RF module ta nối mạch theo sơ đồ sau:
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 3: KHÁI QUÁT MODULE RF

Hình 3.3:Kết nối RF


Ta dùng phần mềm HM-TR parameter setup để cấu hình cho RF module:

Hình 3.4: Setup cấu hình cho RF


Write: lưu cấu hình mới cho RF module
Read: đọc cấu hình hiện tại trong RF module
Default: khôi phục lại cài đặt gốc cho RF module
Chương 4

GIỚI THIỆU GSM MODEM


VÀ TẬP LỆNH AT

Nội dung chính

4.1 Giới thiệu về tập lệnh ATcommand

4.1.1 Sơ đồ nhân của GSM modem

4.1.2 Kết nối anten

4.1.3 Nguồn cung cấp cho kết nối

4.1.4 Các chân kết nối của GSM modem

4.2 Giới thiệu về kết nối GSM modem và RS232


PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT

4.1 Giới thiệu về kết nối GSM modem và RS232

4.1.1 Sơ đồ nhân của GSM modem

Hình 4.1: Sơ đồ khối bên trong GSM modem.

Đặc tính kỹ thuật của GSM modem


PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT

4.1.2 Kết nối anten

Hình 4.2: kết nối SMA cho anten

Kết nối anten là một loại kết nối SMA với một điện trở RF là 50Ω
4.1.3 Nguồn cung cấp cho kết nối

Hình 4.3 Nguồn cung cấp kết nối

Bảng 4.1: chân nguồn và ngoại vi


PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT

Chú ý:
Cả hai pin 3 và pin 4 được sử dụng giao diện của GPIO. Chúng đều bị nghiêm
cấm kết nối chúng vào bất kỳ nguồn cung cấp nào
4.1.4 Các chân kết nối của GSM modem

Hình 4.4 15 chân kết nối

Bảng 4.2:Các chân kết nối GSM modem


PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT

Chức năng các chân DB9:


PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT

4.2 Giới thiệu về tập lệnh ATcommand

Tập lệnh này là cơ sở lập trình và điều khiển dùng để tương tác giữa thiết bị GSM
modem với bộ VXL. Thông qua tập lệnh, VXL có thể gọi các tác vụ đơn giản
như đọc tin nhắn, xóa tin nhắn, gửi tin nhắn .

Một số lệnh có liên quan đến SMS:


1. AT+CMGF=<number> : chọn chế độ tin nhắn.
<number>=0 : định dạng PDU.
<number>=1 : định dạng Text.
2. AT+CSCA=”number” : chọn số trung tâm .
Với “number” : số trung tâm.
AT+CSCA? : kiểm tra số trung tâm.
Với các mạng di động của Việt Nam thì số trung tâm thường là
“+084980200030”.
3. Lựa chọn thủ tục nhận tin nhắn từ mạng.
Cú pháp: AT+CNMI=<mode>,<mt>,<bm>,<ds>,<bfr>.
Ý nghĩa các thông số:
<mode> :điều khiển việc chế biến các đoạn code được cấp gửi.Có các giá
trị 0,1,2,3.
<mt> : định tuyến cho phía phát SMS.Có các giá trị 0,1,2,3 (mặc định là
0).
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT

<bm> :thiết lập luật lệ cho việc thu và lưu trữ các tin nhắn kiểu CBM(Cell
Broadcast Message). Có các giá trị 0,1,2,3 (mặc định là 0).
<ds> :cho biết trạng thái SMS.Có các giá trị 0,1,2(mặc định là 0).
<bfr>:bằng 0 hay 1(mặc định là 0).
4. AT+CMGR=”index” : đọc tin nhắn.
Với “index” là vị trí tin nhắn trong bộ nhớ, thường từ 0 đến 75.
5. AT+CMGL=<number> : liệt kê tin nhắn, cho phép gửi toàn bộ tin nhắn từ
bộ nhớ tới thiết bị ngoài.
<number>=0 :chỉ liệt kê các tin nhắn mới.
<number>=1 :liệt kê các tin nhắn đã đọc.
<number>=2 :liệt kê các tin nhắn đã gửi.
<number>=3 :liệt kê các tin nhắn chưa gửi .
<number>=4 :liệt kê tất cả các tin nhắn.
6. AT+CMGW : lệnh ghi tin nhắn xuống bộ nhớ modem.
Cú pháp : AT+CMGW=”số di động” {Enter}
>Gõ nội dung tin nhắn và bấm Ctrl+Z.
7. AT+CMSS=<index> : lệnh gửi tin nhắn đã được lưu trong bộ nhớ.
Với <index> là vị trí tin nhắn được lưu trong bộ nhớ.
Trường hợp muốn gửi tin nhắn đến một số khác (không phải số lưu trong bộ
nhớ bằng lệnh AT+CMGW) , ta thêm vào số điện thoại đằng sau <index>.
Cú pháp: AT+CMSS=<index>,”số di động” .
8. AT+CMGS : Lệnh gửi tin nhắn.
Cú pháp : AT+CMGS=”số di động “ {Enter}
>Gõ nội dung tin nhắn rồi nhấn Ctrl+Z.
9. AT+CMGD=<index> : lệnh xóa tin nhắn trong bộ nhớ tại vị trí <index>.
AT+CMGD=<index>,<delflag> : xóa tin nhắn dựa vào <delflag>.
Với <delflag> :
- 0 : xóa tin nhắn tại vị trí <index>.
- 1 : xóa mọi tin nhắn đã đọc.
- 2 : xóa mọi tin nhắn đã đọc và đã gửi.
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT

- 3 : xóa mọi tin nhắn đã đọc, đã gửi hay chưa gửi.


- 4 : xóa tất cả tin nhắn.
10. AT+CPMS=<mem1>(hay <mem2>) : lựa chọn bộ nhớ để lưu tin nhắn.
● <mem1> : bộ nhớ dùng để đọc và xóa tin nhắn. Nó có thể là:
- “SM” : kho lưu trữ tin nhắn SMS trong Sim(mặc định).
- “BM” : kho lưu trữ tin nhắn CBM(Cell Broadcast Message) (trong các bộ
nhớ không ổn định-volatile memory).
- “SR” : báo cáo trạng thái lưu trữ tin nhắn (trong sim hay những nơi
khác(trừ volatile memory) trong thiết bị di động ).
● <mem2> :bộ nhớ dùng để viết và gửi tin nhắn.Nó có thể là
- “SM” : kho lưu trữ tin nhắn trong Sim.
Phần II

THIẾT KẾ VÀ THI CÔNG

Chương 5: Cơ sở thiết kế

Chương 6: Lưu đồ giải thuật và chương trình

Chương 7: Kết quả thi công và hướng phát triển


Chương 5

CƠ SỞ THIẾT KẾ

Nội dung chính

5.1 Sơ đồ nguyên lý và sơ đồ khối

5.1.1 Sơ đồ khối

5.1.2 Sơ đồ nguyên lý

5.2 Giới thiệu về IC MAX232


PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

5.1 Sơ đồ nguyên lý và sơ đồ khối

5.1.1 Sơ đồ khối

 Sơ đồ khối tổng quát

Hệ thống gồm 3 khối chính: server, khối trung tâm và thiết bị ngoại vi.
Server chính là hệ thống tương tác với người dùng, nó có thể là một chiếc
điện, hay một GSM modem gắn với máy tính. Khối trung tâm là thiết bị
trung gian điều phối giao tiếp giữa server và ngoại vi. Thiết bị ngoại vi bao
gồm các thiết bị giám sát, quản lý như: thiết bị đo nhiệt độ, ẩm độ,thiết bị
đếm số người...

Hình 5.1: Sơ đồ khối tổng quát

Nguyên lý hoạt động như sau:

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 57
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

Hoạt động của node trung tâm chia làm hai phần chính: giao tiếp với modem
GSM và giao tiếp node ngoại vi. Khối trung tâm có nhiệm vụ là phân tích, truyền đạt
thông tin từ server (user) tới thiết bị ngoại vi. Trong quá trình hoạt động, các thiết bị
ngoại vi chỉ tương tác với node trung tâm khi có yêu cầu của server hoặc trong trường
hợp node trung tâm cấp quyền ưu tiên cho nó.
Giao tiếp node trung tâm: bất kỳ lệnh nào từ server gửi tới node trung tâm đều
được đặt trong cặp dấu sao(*) với hai mục đích chính: điều khiển node trung tâm hay
node ngoại vi.
Điều khiển node trung tâm: thay đổi password node trung tâm hay thay đổi số
phone server. Password node trung tâm chính là mật mã đễ truy cập vào node này. Khi
password sai thì không thể truy cập node trung tâm. Phone sever là số điện thoại mà
node trung tâm sẽ gửi cảnh báo về.
Điều khiển node ngoại vi: ta dùng một ký tự để định nghĩa node ngoại vi. Node
trung tâm không hiểu nội dung lệnh điều khiển mà server gửi tới node ngoại vi mà chỉ
biết tên của node ngoại vi. Trong trường hợp server muốn đăng ký node ngoại vi mới
hay thiết lặp các thông số mới cho node ngoại vi. Node trung tâm sẽ kiễm tra là node
ngoại vi mới hay node ngoại vi đã tồn tại chỉ cần thiết lập lại thông số. Sau đó nó gửi
toàn bộ nội dung điều khiển tới node ngoại vi. Nếu node ngoại vi tồn tại thì nó sẽ đáp
ứng lại lệnh từ node trung tâm. Node trung tâm sẽ gửi đáp ứng về lai server để chứng
thực node này tồn tại hay không, đồng thời mang theo nội dung mà node trung tâm
muốn gửi cho sever.
Các node ngoại vi hoạt động dựa vào quyền ưu tiên node trung tâm cấp pháp.
Tên của node ngoại vi được qui định bởi Server và chính node ngoại vi đó, không phụ
thuộc vào Node trung tâm. Và node trung tâm cấp quyền ưu tiên cho ngoại vi dựa vào
tên của từng node. Điều này có nghĩa là ngoại vi chỉ có thể gửi tin tức về trung tâm khi
có đang được quyền ưu tiên hay khi trung tâm yêu cầu.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 58
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

Hình 5.2: Quá trình truyền tin(1)


Quá trình đăng ký cho thiết bị ngoại vi bắt đầu từ việc Server gửi lệnh đăng ký
tới node trung tâm. Nội dung tin nhắn đăng ký bao gồm :

Serial Option Device Parameter

1/ Serial: đây là một dãy 6 ký tự dùng để phân biệt các nhánh với nhau, đồng thời
được biết đến như password của node trung tâm, server có thể thay đổi serial này. Mặc
định lần đầu truy cập Serial là 6 số 021187. Nếu message từ server tới node trung tâm
có số serial sai thì node trung tâm sẽ gửi tin nhắn sai password về user
2/ Option: mang nội dung thông tin từ server tới node trung tâm:
“R”: đăng ký node ngoại vi mới hoặc thiết lập thông số mới cho node ngoại vi.
“C”: kiểm tra trạng thái của các node ngoại vi.
“S”: thay đổi số serial cho node trung tâm. Theo sau sẽ là 6 số serial mới và kết
thúc bằng dấu *.
“P”: thay đổi số phone ma node trung tâm sẽ gửi cảnh báo về trong trường hợp
khẩn. Theo sau sẽ là số phone mới và kết thúc bằng dấu *.
3/ Device: gồm 8 bit đặc trưng cho các ngoại vi. Trong trường hợp thay đổi số
serial thì 8 bit này bằng 0. Trường hợp kiểm tra hết thì 8 bit bằng 1.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 59
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

4/ Parameter: các thông số cài đặt từ server đến node ngoại vi. Thành phần này chỉ
có trong trường hợp đăng ký thiết bị.

Khi tin nhắn điều khiển từ server tới Trung Tâm, sever sẽ xử lý nội dung tin
nhắn. Khi yêu cầu của chỉ thay đổi số serial hay số phone thì Trung Tâm sẽ xử lý và
gửi đáp ứng về về server. Trong trường hợp lệnh điều khiển liên quan tới node ngoại
vi thì Trung tâm sẽ gửi lệnh tới node ngoại vi.

Hình 5.3: Quá trình truyền tin(2)


Nội dung lệnh điều khiển từ Trung Tâm đến ngoại vi do Server và ngoại vi quy
định. Trung tâm chỉ kiểm soát ngoại vi qua tên của nó. Và thông qua các lệnh gửi tới
và lệnh phản hồi nó biết được là ngoại vi còn hoạt động hay không.

Thông số Device đầu tiên chính là tên thiết bị. Khi ngoại vi nhận được tên
Device này, nó so sánh xem có phải tên của chính nó hay không. Nếu như đúng, nó sẽ
nhận tiếp các thông số theo sau và bắt đầu xử lý. Trong trường hợp không có thiết bị
nào tồn tài thì sau một thời gian, Trung Tâm sẽ gửi lại phản hồi về Server, đồng thời
xóa tên của thiết bị ra khỏi bộ nhớ. Trong trường hợp tồn tại thiết bị thì ngoại vi sẽ xử
lý các command và gửi về các respone về trung tâm.
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 60
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

Hình 5.4: Quá trình truyền tin(3)


Khi respone được chuyển tới trung tâm, trung tâm sẽ xử lý, gắn thêm số serial của
node trung tâm và gửi về server.Tại node trung tâm ta sử dụng vi xử lý ATmega 162 với lưu
đồ giải thuật như sau:

 Sơ đồ khối trung tâm

Trong phạm vi của đề tài này chúng em thiết kế mạch giao tiếp
với GSM modem và giao tiếp với thiết bị ngoại vi đo nhiệt độ thông qua
RF module. Các kết quả đo đạc của thiết bị ngoại vi hay các lệnh từ
người dùng điện thoại sẽ được xử lý tại phần trung tâm này.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 61
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

Hình 5.5: sơ đồ khối trung tâm

 Sơ đồ khối ngoại vi

Hình 5.6: sơ đồ khối ngoại vi

Trong phần ngoại vi này, chúng em xin thiết kế một mạch đo nhiệt độ để
minh họa. Mạch này gồm phần chính là vi xử lý ATmega16L giao tiếp với RF
module và cảm biến nhiệt độ DS18B20.
Mục đích chính của phần này là thiết kế phần node trung tâm một cách
linh hoạt sao cho khi ta them vào các node ngoại vi khác mà không cần thay đổi
node trung tâm.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 62
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

5.1.2 Sơ đồ nguyên lý

Sơ đồ phần cứng gồm hai khối chính là khối trung tâm và khối ngoại vi.

Khối trung tâm gồm phần chính là vi xử lý ATmega162 với hai USART.
USART0 giao tiếp với modem qua max232,USART1 để giao tiếp với RF
module theo chuẩn TTL. Ngoài ra còn một số đèn led báo hiệu, giao tiếp SPI
được mở rộng để giao tiếp với thẻ nhớ.

Hình 5.7: Sơ đồ nguyên lý trung tâm

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 63
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

Khối ngoại vi với nhiệm vụ đo nhiệt độ môi trường xung quanh. Nó sử


dụng ATmega16L làm vi xử lý trung tâm giao tiếp với RFmodule qua USART
theo chuẩn TTL và cảm biến nhiệt độ DS18B20 theo giao thức 1Wire.
V c c

R 2
4 k 7
R 1 U 5
4 k 7

S W 1 1 U 4 4 0 2 3
P B 0 / T 0 P A 0 / A3 9D 0 D Q V D D

G N D
J 2 C 3 2
1 0 4 3 P B 1 / T 1 P A 1 / A3 8D 1
1 2 4 P B 2 / A I NP 0A 2 / A3 7D 2 J 3
3 4 5 P B 3 / A I NP 1A 3 / A3 6D 3 D S 1 8 B 2 0
P B 4 / S S P A 4 / A3 5D 4

1
5 6 6 1
7 8 7 P B 5 / M O P S A I 5 / A3 4D 5 2
9 1 0 8 P B 6 / M I PS OA 6 / A3 3D 6
9 P B 7 / S C P K A 7 / A3 2D 7
1 0 R S T A R E 3 F1 C O N N S O C K E T 2
g i a o t i e p m a c h n a p 1 1 V C C G N 3D 0
1 2 G N D A V C 2 C9
1 3 X T A L 2 P C 7 / 2A 8 1 5
1 4 X T A L 1 P C 6 / 2A 7 1 4
1 5 P D 0 / R X P D C 5 / 2A 6 1 3
1 6 P D 1 / T X PD C 4 / 2A 5 1 2
1 7 P D 2 / I N PT 0C 3 / 2A 4 1 1
1 8 P D 3 / I N PT 1C 2 / 2A 3 1 0 R 3
1 9 P D 4 P C 1 /2 A 2 9 2 k 2
2 0 P D 5 / O C P 1 C A 0 /2 A 1 8
P D 6 / W RP D 7 / R D
Y 1
A T m e g a 1 6 L D 1

Z T A L E D

C 2 C 1
3 3 p 3 3 p

J 1

1
2
3
4
5
6

g i a o t i e p R F

Hình 5.8: Sơ đồ nguyên lý ngoại vi

5.2 Giới thiệu về IC MAX232

Khi kết nối GSM modem(slave) đến mạch để tương tác xử lý các lệnh được gửi
từ cellphone master, ta phải dùng trung gian đường truyền bằng IC MAX232. Do
cellphone có cổng nối tiếp là cổng COM 9 chân, ta phải chuyển tín hiệu này để có thể
truyền đến chân RXD và TXD của IC ATmega8535. Đây cũng là chức năng chính của
IC MAX232.

Họ IC MAX220 đến MAX249 là bộ nhận/lái tín hiệu dùng cho các chuẩn giao
tiếp truyền thông EIA/TIA-232E và V.28/V.24.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 64
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ

Điểm vượt trội của họ MAX232:

• Vận hành từ nguồn đơn 5V.

• Khi tắt, vận hành ở chế độ nhận công suất thấp.

• Thỏa tất cả các chuẩn EIA/TIA-232E và V.28.

• Nhiều bộ lái và bộ thu.

• Ngõ ra của bộ lái và bộ thu ở 3 trạng thái.

Sơ đồ chân của IC Max232 và sơ đồ các khối bên trong của nó:

Hình 5.9: Sơ đồ chân MAX232. Hình 5.10: Sơ đồ khối bên trong


MAX232.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 65
Chương 6

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


TRÌNH

Nội dung chính

6.1 Cách sử dụng codevisionAVR

6.2 Lưu đồ giải thuật khối trung tâm

6.3 Lưu đồ giải thuật khối ngoại vi

6.4 Chương trình chính

6.4.1 Chương trình khối trung tâm

6.4.2 Chương trình khối ngoại vi


PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

6.1 Cách sử dụng codevisionAVR

Trong đề tài này, ta sử dụng Codevision AVR để biên dịch chương trình C ra
file hex.
Khởi động AVR ta sẽ có màn hình như sau:

Hình 6.1: cách sử dụng codevisionAVR(1)

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 67
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Tạo môt project mới để viết chương trình:

Hình 6.2: cách sử dụng codevisionAVR(2)

• Chọn source nếu muốn chương trình tạo ra một cửa sổ trắng để bạn tự tạo ra

• Chọn Project nếu muốn sử dụng “codewizardAVR”

CodewizardAVR giúp chúng ta khởi tạo các thông số ban đầu cho việc cho việc
lập trình, điều này giúp chúng ta tiết kiệm được rất nhiều thời gian, tránh được những
sai lầm đáng tiếc do không tìm hiểu kỹ cấu trúc vi xử lý.

Hình 6.3: cách sử dụng codevisionAVR(3)

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 68
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Giao diện codewizard sẽ có hình như sau:

Hình 6.4: cách sử dụng codevisionAVR(4)

Trong đề tài này ta chọn chip ATmega 162 và tần số dao động thạch anh là
7.3728 Mhz. Đồng thời ta khởi tạo USART0 và USART1, cấu hình input/output cho
các PORT, enable giao thức truyền dữ liệu SPI.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 69
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Hình 6.5: cách sử dụng codevisionAVR(5)


USART0: tốc độ 115200bps,cấu trúc khung là 8 Data, 1 Stop, No Parity,
mode Asynchronous.
USART1: tốc độ 9600bps, cấu trúc khung là 8 Data, 1 Stop, No Parity,
mode Asynchronous, sử dụng ngắt nhận.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 70
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Hình 6.6: cách sử dụng codevisionAVR(6)

Hình 6.7: cách sử dụng codevisionAVR(7)

Ta cấu hình SPI cho chip ở chế độ Master, Mode 0. Ngoài ra ta cấu hình
PORTC.0,1,2 ở chế độ output để điều khiền các led.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 71
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Hình 6.8: cách sử dụng codevisionAVR(8)

Sau khi thiết lập các thông số ban đầu, ta lưu các thiết lập này: File =>
Generate, Save and Exit

Hình 6.9: cách sử dụng codevisionAVR(9)

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 72
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Ta đặt chọn thư mục để lưu tập tin,tên project, và tên đoạn code để hoàn thành
quá trình khởi tạo.
Sau khi hoàn thành đoạn code, ta lưu lại toàn bộ (Save all) và biên dịch ra mã

Hex: Project =>Built All (Ctrl + F9) hoặc ta có thể nhấp trực tiếp vào biểu tượng
trên thanh công cụ. Nếu đoạn mã C không có lỗi thì chương trình sẽ hiện ra bảng
thông báo no error và các thông số ước đoán về dung lượng file HEX

Hình 6.10: cách sử dụng codevisionAVR(10)

Trong trường hợp chương trình C có lỗi, CodeVision sẽ hiện bảng thông báo
chỉ rõ số lỗi.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 73
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Hình 6.11: cách sử dụng codevisionAVR(11)

Sau khi đã hoàn thành quá trình tạo file HEX, ta bắt đầu quá trình nạp chip. Ở
đây ta sử dụng mạch nạp USB AVR910. Sau khi cài driver cho mạch nạp, ta thiết lập
các thông số của mạch nạp để tương thích với Codevision. Click chuột phải vào
Computer chọn Manage => Device Manager=>Ports(COM &LPT) =>AVR910USB
Programer (double click) ta thiết lập các thông số như hình bên dưới

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 74
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Hình 6.12: cách sử dụng codevisionAVR(12)

Đồng thời ta thiết lập các thông số cho Codevision: Settings => Programmer

Hình 6.13: cách sử dụng codevisionAVR(13)

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 75
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Ta chọn các loại mạch nạp là AVR910, tốc độ Baud la 119200bps, cổng giao
tiếp là COM3 (phải giống với các thông số đã thiết lập cho mạch nạp) .
Để nạp cho vi xử lý ta chọn Tool => Chip Programer (shift+ F4).

Hình 6.14: cách sử dụng codevisionAVR(14)


Ta chọn File =>load Flash ,trỏ đến file Hex đã biên dịch. Sau đó chọn Program
=> Flash để nạp cho vi xử lý, hoàn tất quá trình.

6.2 Lưu đồ giải thuật khối trung tâm

Với yêu cầu của đề tài, ta có thể hình dung khái quát lưu đồ giải thuật như sau:

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 76
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Hình 6.15:lưu đồ node trung tâm 1

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 77
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Hình 6.16:lưu đồ node trung tâm 2


Sau khi thiết lập các thông số ban đầu cho vi xử lý. ATmega162 sẽ gửi
command tới GSM modem để xem có tin nhắn hay không. Nếu có, ATmega162 sẽ xử
lý nội dung tin nhắn,còn không thì sẽ giao tiếp với ngoại vi. Nó sẽ lần lượt cấp phát
quyền ưu tiên cho thiết bị. Nếu thiết bị nào có tin tức gì cần báo hiệu thì sẽ gửi khi nó
có được quyền ưu tiên.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 78
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Quá trình xử lý tin nhắn bắt đầu với việc lưu số điện thoại gửi tới, sau đó bắt
gói tin nhắn bắt đầu bằng ký tự ‘*’. 6 ký tự theo sau chính là số serial, ATmega162 sẽ
so sánh số serial đó với 6 số serial của nó (được lưu trong eeprom). Nếu sai thì nó sẽ
gửi tin nhắn trở lại số điện thoại mà nó đã lưu để thông báo sai password. Vì số serial
dùng để phân biệt với các node trung tâm khác. Vì vậy ta xem nó như password để
truy cập vào node trung tâm đó. Nếu đúng số serial thì nó tiếp tục đọc ký tự tiếp theo.
1.Nếu nhận được ký tự ‘S’ thì nó sẽ thay đổi số serial(lưu vào
eeprom),đồng thời thông báo đã thay đổi password về server.
2.Nếu nhận được ký tự ‘P’ thì nó sẽ thay đổi số phone server. Và gửi
thông báo đã thay đổi phone_server về server.
3.Nếu nhận được ký tự ‘C’ thì nó sẽ tiếp tục nhận tên thiết bị ngoại vi.
Sau đó sẽ gửi tin nhắn kiểm tra thiết bị ra ngoại vi. Nếu nhận được respone thì
nó sẽ gửi respone đó về server. Trong trường hợp không nhận được phản hồi
nào từ ngoại vi. Nó sẽ gửi thông báo thiết bị không còn hoạt động về server.
4.Nếu nhận được ký tự ‘R’ thì nó sẽ tiếp tục nhận các thông số thiết lập,
sau đó gửi lệnh đăng ký thiết bị ra ngoại vi. Tương tự nếu nhận respone thì nó
gửi respone đó về server, ngược lại nó thông báo thiết bị không còn hoạt động
về server.
5.Các trường hợp còn lại, ATmega gửi thông báo sai cấu trúc lệnh về
server.
Giao tiếp với node ngoại vi: ATmega sẽ lần lượt đọc tên thiết bị lưu trong
eeprom và gửi tới thiết bị ngoại vi cùng ký tự P(priority) để cấp quyền ưu tiên. Nếu
thiết bị nào có thông báo nào về server thì sẽ gửi khi nó được cấp quyền ưu tiên.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 79
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

6.3 Lưu đồ giải thuật khối ngoại vi

Hình 6.17: lưu đồ giải thuật khối ngoại vi


GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 80
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

Chương trình con đọc giá trị nhiệt độ

Hình 6.18:Lưu đồ chương trình đọc giá trị nhiệt độ

6.4 Chương trình chính


GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 81
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

6.4.1 chương trình khối trung tâm

Chương trình đọc tinh nhắn từ modem:

#pragma used+
void read_message(void)
{
char data[9]={'A','T','+','C','M','G','R','=','1'};
array_send0(data,9);
putchar(0x0D);
}
#pragma used-

Chương trình xóa tin nhắn:


#pragma used+
void del_message(void)
{
char data[9]={'A','T','+','C','M','G','D','=','1'};
array_send0(data,9);
putchar(0x0D);
delay_ms(5000);
}

Bắt đầu gửi tin nhắn tới số phone Server:


#pragma used+
void start_send_server(void)
{
unsigned char i=0;
char data[8]={'A','T','+','C','M','G','S','='};
array_send0(data,8);

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 82
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

do {
putchar(phone_server[i]);
i++;
}
while (phone_user[i] != '"' );
putchar(0x0D);
delay_ms(4000);
}
#pragma used-

Chương trình kết thúc quá trình gửi tinh nhắn

#pragma used+
void end_send(void)
{
putchar(0x1A);
delay_ms(5000);
}
#pragma used-

6.4.2 chương trình khối ngoại vi

Chương trình lọc số: Vì DS18B20 xuất ra biến dạng số float nên khi xuất ra
LCD, máy tính, module RF cần phải tách ra hàng trăm, chục, đơn vị, thập phân.
void locso(float so)
{ float temp1,temp2;
// t=so/100;
// lay fan tram
c=so/10;
// lay fan chuc
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 83
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

d=(so-10*c);
// lay hang don vi
if(so<0)
//Neu ®Çu vao ©m -> ®æi sang d-¬ng
temp2=so*-1;
else
temp2=so;
temp1=temp2-(c*10+d);
tp1 = (unsigned char)(temp1*10);
tp2 = (unsigned char)(temp1*100-tp1*10);
tp3 = (unsigned char)(temp1*1000-tp1*100-tp2*10);
tp4 = (unsigned char)(temp1*10000-tp1*1000-tp2*100-
tp3*10);
}
Giao tiếp với máy tính hoặc RF:
Mạch giao tiếp với máy tính qua cổng com hoặc giao tiep với RF có các thông số
sau:
• Baud Rate 9600.

• 8 bit datas.

• 1 bit stop.

• Non parity.

• Non Flow control.

Xác lập chế độ vi điều khiển (dùng codevisionAVR).


// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 84
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

// USART Mode: Asynchronous


// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
UBRR : USART Baud Rate Register. Đây là thanh ghi 12 bit chứa tốc độ
BAUD của USART, UBRRH chứa 4 bit cao nhất và UBRRL chứa 8 bit thap còn lại.
Trong mạch sử dụng thạch anh 7.3728Mhz. nên cách tính UBRR như sau:
UBRR =( Tần số thạch anh /9600*16) -1 =47.
Đưa ký tự lên máy tính hoặc RF:
Để đưa giá trị lên máy tính hoặc qua RF cần xuất từng ký tự một dựa vào các số
đã lọc ở trên . Hàm như sau:
void putnum(int a)
{
switch(a){
case 0: putchar('0');
break;
case 1: putchar('1');
break;
case 2: putchar('2');
break;
case 3: putchar('3');
break;
case 4: putchar('4');
break;
case 5: putchar('5');
break;

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 85
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

case 6: putchar('6');
break;
case 7: putchar('7');
break;
case 8: putchar('8');
break;
case 9: putchar('9');
break;
};
}

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 86
Chương 7

KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

Nội dung chính

7.1 Kết quả thi công

7.1.1 Mạch in trung tâm

7.1.2 Mạch in ngoại vi

7.1.3 Mạch thực tế

7.2 Kết luận và hướng phát triển


PHẦN II: THIẾT KẾ VÀ THI CÔNG
Chương 7: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

7.1 Kết quả thi công

Ta sử dụng phần mềm orcad 9.2 để thiết kế mạch nguyên lý và mạch layout

7.1.1 Mạch in trung tâm

Hình 7.1: mạch in trung tâm


7.1.2 Mạch in ngoại vi

Hình 7.2: mạch in ngoại vi

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH : BÙI MẠNH KHÁNH
VÕ THÀNH LONG Trang 88
PHẦN II: THIẾT KẾ VÀ THI CÔNG
Chương 7: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

7.1.3 Mạch thực tế

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH : BÙI MẠNH KHÁNH
VÕ THÀNH LONG Trang 89
PHẦN II: THIẾT KẾ VÀ THI CÔNG
Chương 7: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

7.2 Kết luận và hướng phát triển

KẾT LUẬN
Từ những yêu cầu đề ra ở phần đầu luận văn, chúng em đã hoàn thành một số yêu cầu
sau:

- Hoàn thành thiết kế mạch giao tiếp trung tâm và mạch kiểm tra nhiệt độ ngoại
vi

- Lập trình giao tiếp giữa node trung tâm và GSM modem để nhận lênh của
người dùng

- Lập trình giao tiếp giữa khối ngoại vi và trung tâm thông qua RF module

Tuy nhiên, luận văn cũng còn nhiều thiếu xót và hạn chế:

- Chưa lưu được dữ liệu giám sát ngay tại node trung tâm

- Truyền nhận dữ liệu giữa node ngoại vi và node trung tâm với giao thức đơn
giản trong khi sử dụng dãy tần số miễn phí nên không đảm bảo được độ chính
xác cao

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH : BÙI MẠNH KHÁNH
VÕ THÀNH LONG Trang 90
HƯỚNG PHÁT TRIỂN
Hoàn thiện giao tiếp giữa node ngoại vi và node trung tâm với giao thức truyền Zigbee, lưu
giữ liệu giám sát ngay tại thẻ nhớ SD card gắn trên node trung tâm để phục vụ cho việc kiểm
tra sau này.

GVHD: TH.S ĐINH QUỐC HÙNG


SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 91
TÀI LIỆU THAM KHẢO

[1] Sách lập trình C của Đặng Thành Tín

[2] Tài liệu codevisionAVR 1986-2006 HP info Tech S.R.L

[3] Datasheet ATmega16L và ATmega162

[4] Các trang web

http://www.ebook.edu.vn/?page=1.5&tag=avr

http://dientuvietnam.net/forums/showthread.php?p=233419

http://www.tme.com.vn/Product.aspx?id=633&CateId=227

You might also like