Tải bản đầy đủ (.pdf) (69 trang)

Mạch hiển thị và lưu trữ chỉ số điện nước

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.62 MB, 69 trang )

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------------o0o---------------

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

MẠCH HIỂN THỊ VÀ LƯU TRỮ
CHỈ SỐ ĐIỆN - NƯỚC

GVHD: KS. Nguyễn Ngọc Quyền
SVTH: Lê Thanh Vũ
MSSV: 40903344

TP. HỒ CHÍ MINH, THÁNG 12 NĂM 2014


ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Độc lập – Tự do – Hạnh phúc.
-----✩----Số: ______ /BKĐT
Khoa: Điện – Điện tử
Bộ Môn: Điện Tử

-----✩-----

NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
1.

HỌ VÀ TÊN: LÊ THANH VŨ



MSSV: 40903344

2.
3.
4.

NGÀNH:
ĐIỆN TỬ - VIỄN THÔNG
LỚP : DD09DV4
Đề tài: Mạch hiển thị và lưu trữ chỉ số điện - nước.
Nhiệm vụ (Yêu cầu về nội dung và số liệu ban đầu):
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
5. Ngày giao nhiệm vụ luận văn: ...............................
6. Ngày hoàn thành nhiệm vụ: ...................................
7. 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.
Tp.HCM, ngày…... tháng….. năm 20
CHỦ NHIỆM BỘ MÔ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: ...............................

NGƯỜI HƯỚNG DẪN CHÍNH


Lời cảm ơn

GVHD: Thầy Nguyễn Ngọc Quyền

LỜI CẢM ƠN

Sau khoảng thời gian được học tập và rèn luyện tại trường Đại Học Bách Khoa
TP.HCM, dưới sự dạy dỗ tận tình của các thầy cơ trong các phịng khoa, nay em đã gần hồn
tất khố học, đang trong giai đoạn hồn thành luận văn tốt nghiệp và sắp sửa trở thành một
người kỹ sư điện tử có thể góp sức xây dựng cho sự phát triển xã hội, đất nước. Để được như
ngày hôm nay em vô cùng biết ơn tất cả các thầy cô trong Điện – Điện Tử đã tận tình giảng
dạy, hướng dẫn, truyền đạt những kiến thức, kinh nghiệm quý báu cho em trong khoảng thời
gian được học tập, rèn luyện tại trường. Đặc biệt em xin gửi lời cảm ơn sâu sắc đến Thầy
Nguyễn Ngọc Quyền, người thầy đã chỉ bảo, định hướng, giúp đỡ và hướng dẫn em rất nhiều
trong suốt quá trình thực hiện luận văn tốt nghiệp. Em cũng không thể nào quên gừi lời cám
ơn đến các anh chị em sinh viên các khoá đã cùng em học tập và chia sẻ kiến thức tiếp thu
trong quá trình theo học tại trường. Đồng thời em cũng xin gửi lời cảm ơn đến cha mẹ, anh
chị, bạn bè những người luôn đứng bên cạnh em để động viên, an ủi, ủng hộ về vật chất lẫn
tinh thần trong suốt khoảng thời gian qua.
Với lòng biết ơn chân thành, em xin gởi lời chúc sức khoẻ và những gì tốt đẹp nhất đến

các thầy cô trong khoa, trong nhà trường, những bậc cha mẹ, anh chị đáng kính và tồn thể
các bạn bè hiện đang cịn học hoặc khơng cịn học tại trường Đại Học Bách Khoa TP.HCM.

Tp. Hồ Chí Minh, ngày 16 tháng 12 năm 2014

.

Sinh viên

Lê Thanh Vũ

i


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

TÓM TẮT LUẬN VĂN
Luận văn này trình bày về việc thiết kế, thi cơng và lập trình một thiết bị giúp hiển thị
chỉ số điện kế và chỉ số nước tiêu thụ cho các hộ gia đình.
Thiết bị bao gồm:
-

Khối điều khiển và lưu trữ sử dụng PIC16F877A.

-

Khối hiển thị gồm 12 LED 7 đoạn để hiển thị chỉ số điện kế và nước.


-

Khối thời gian thực sử dụng IC DS1307 để hẹn giờ thông báo nhập chỉ số điện kế,
nước và hẹn giờ hiển thị.

-

Khối nút nhấn để nhập chỉ số điện kế và nước.

-

Khối giao tiếp với máy tính sử dụng cổng com chuẩn RS232.

-

Giao diện quản lý trên máy tính viết bằng Visual basic 6.

ii


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

MỤC LỤC
1.

GIỚI THIỆU ....................................................................................................................................1
1.1


Tổng quan.................................................................................................................................1

1.2

Nhiệm vụ luận văn ...................................................................................................................2

2.

LÝ THUYẾT ...................................................................................................................................3

3.

THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG ............................................................................... 21

4.

THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM (NẾU CÓ) ............................................................... 32

5.

KẾT QUẢ THỰC HIỆN ............................................................................................................... 58

6.

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .................................................................................... 60

7.

6.1


Kết luận ................................................................................................................................. 60

6.2

Hướng phát triển ................................................................................................................... 60

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

iii


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

DANH SÁCH HÌNH MINH HỌA

Hình 2 – 1

Vi điều khiển PIC16F877A/PIC16F874A và các dạng sơ đồ chân.....................................3

Hình 2 - 2

Sơ đồ khối vi điều khiển PIC16F877A ..............................................................................4

Hình 2 – 3

Bộ nhớ chương trình PIC16F877A…………………………………………......................................7

Hình 2 – 4


Bộ nhớ dữ liệu PIC16F877A…………………………………………………………………………………………8

Hình 2 – 5

Giao diện trình biên dịch CCS………………………………………………………………………………………9

Hình 2 – 6

Kết nối thiết bị vào bus I2C……………………………………………………………………………………….11

Hinh 2 – 7

Truyền nhận dữ liệu giữa chủ/tớ ……………………………………………………………………………..12

Hình 2 – 8

Điều kiện START và STOP của bus I2C……………………………………………………………………….13

Hình 2 – 9

Quá trình truyền 1 bit dữ liệu……………………………………………………………………………………14

Hình 2 – 10

Dữ liệu truyền trên bus I2C……………………………………………………………………………………….14

Hình 2 – 11

Bit ACK trên bus I2C………………………………………………………………………………………………….14


Hình 2 – 12

Lưu đồ thuật tốn q trình truyền nhận dữ liệu…………………………………………………….15

Hình 2 – 13

Truyền dữ liệu RS232………………………………………………………………………………………………..18

Hinh 2 – 14

Giao diện Visual Basic……………………………………………………………………………………………….20

Hình 3 – 1

Sơ đồ khối của thiết bị…………………………………………………………………………………………..….21

Hình 3 – 2

Khối vi điều khiển và lưu trữ……………………………………………………………………………………..22

Hình 3 – 3

Sơ đồ chân IC DS1307……………………………………………………………………………………………….23

Hình 3 – 4

Sơ đồ kết nối DS1307………………………………………………………………………………………………..23

Hình 3 – 5


Các thanh ghi của DS1307…………………………………………………………………………………………24

Hình 3 – 6

Tổ chức thanh ghi theo từng bit………………………………………………………………………………..25

Hình 3 – 7

Giá trị lưu trong các thanh ghi là BCD……………………………………………………………………….25

Hình 3 – 8

Address Register………………………………………………………………………………………………………..27

Hình 3 – 9

Sơ đồ chân LED 7 đoạn………………………………………………………………………………………………28

Hình 3 – 10

Khối hiển thị………………………………………………………………………………………………………………28

Hình 3 – 11

Linh kiện để ghép nối………………………………………………………………………………………………..29

iv



Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

Hình 3 – 12

Sơ đồ chân cổng com 9 chân…………………………………………………………………….…………….29

Hình 3 – 13

Ghép nối cổng com và IC MAX232…………………………………………………………………………..30

Hình 3 – 14

Layout……………………………………………………………………………………………………………………..31

Hình 4 – 1

Sơ đồ giải thuật chương trình chính………………………………………………………………………..32

Hình 4 – 2

Sơ đồ giải thuật nhập chỉ số điện kế - nước…………………………………………………………….33

Hình 4 – 3

Giao diện giao tiếp máy tính……………………………………………………………………………….…..55

Hình 4 – 4


Mạch hồn chỉnh…………………………………………………………………………………………………….58

Hình 4 – 5

Hiển thị chỉ số………………………………………………………………………………………………….……..59

v


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

DANH SÁCH BẢNG SỐ LIỆU
Bảng 1 Tóm tắt đặc điểm của VDK PIC 16F877 ......................................................................................6

vi


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

1. GIỚI THIỆU
1.1 Tổng quan
Ngày nay, khoa học kỹ thuật phát triển không ngừng và có những tác động mạnh mẽ,
tích cực đến cuộc sống của con người, góp phần làm cho chất lượng cuộc sống được ngày
một nâng cao. Ở Việt Nam, khoa học kỹ thuật ngày càng có vai trị quan trọng trong đời sống,
trong công nghiệp và cả trong nông nghiệp, thúc đẩy q trình cơng nghiệp hóa, hiện đại hóa
đất nước.

Là một sinh viên khối kỹ thuật cơng nghệ, tôi nhận thấy cần tự giác nghiên cứu, nâng
cao kỹ năng và hiểu biết của mình để có thể góp sức tạo ra những sản phẩm cơng có giá trị
cho xã hội. Từ lâu, tôi luôn hứng thú với việc ứng dụng kiến thức điện tử, kỹ năng lập trình
của mình để tạo ra những sản phẩm có thể ứng dụng vào thực tế, giúp cải thiện hiệu quả lao
động của con người hay hỗ trợ con người trong những công việc lặp đi lặp lại gây nhàm chán.
Với sự tấp nập của cuộc sống hiện nay, thành viên trong một hộ gia đình khó mà nhớ
được những việc đơn giản như là ghi chỉ số điện kê, chỉ số nước cho nhân viên thu tiền hang
tháng. Một thiết bị để nhắc nhở, thông báo và giúp hiển thị chỉ số điện kế, nước cũng như
giúp lưu trữ, quản lý tiền điện – nước là điều rất cần thiết để mọi chuyện linh hoạt hơn.
Với sự hướng dẫn tận tình của Thầy Nguyễn Ngọc Quyền tôi đã chọn đề tài này để
làm luận văn tốt nghiệp cho mình.

1


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

1.2 Nhiệm vụ luận văn
Dựa vào định hướng nội dung đề tài là không phải tập trung nghiên cứu một lĩnh vực
mới mà tập trung vào ứng dụng những kỹ thuật, công nghệ đang phổ biến vào chế tạo một sản
phẩm cụ thể, có tính ứng dụng và bám sát thực tế. Từ đó đề tài bao gồm các nhiệm vụ đặt ra
như sau:
-

Tìm hiểu về vi điều khiển PIC16F877A và ngơn ngữ lập trình cho PIC.

-


Tìm hiểu về giao tiếp với LED 7 đoạn.

-

Tìm hiểu về giao tiếp I2C, giao tiếp UART.

-

Tìm hiểu về ngơn ngữ lập trình Visual Basic.

2


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

2. LÝ THUYẾT
2.1 Khái quát về vi điều khiển PIC16F877A và trình biên dịch CCS
2.1.1 Các dạng sơ đồ chân

Hình 2 – 1: Vi điều khiển PIC16F877A/PIC16F874A và các dạng sơ đồ chân

3


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền


2.1.2 Sơ đồ khối vi điều khiển PIC16F877A

Hình 2 - 2:

Sơ đồ khối vi điều khiển PIC16F877A

4


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

2.1.3 Đặc điểm của vi điều khiển PIC16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit.
Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt động tối đa cho phép là
20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368
byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256 byte. Số PORT I/O là 5 với 33
pin I/O. Có 8 kênh chuyển đổi A/D.


Các đặc tính ngoại vi bao gồmcác khối chức năng sau:
o Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit.
o Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào
xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
o Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
o Hai bộ Capture/so sánh/điều chế độ rông xung.
o Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.
o Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
o Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD,

WR,



Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
o Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.
o Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.
o Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
o Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
o Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming)
thông qua 2 chân.
o Watchdog Timer với bộ dao động trong.
o Chức năng bảo mật mã chương trình.
o Chế độ Sleep.
o Có thể hoạt động với nhiều dạng Oscillator khác nhau.

5


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

Bảng 1: Tóm tắt đặc điểm của VDK PIC 16F877
2.1.4 Tổ chức bộ nhớ


Bộ nhớ chương trình

Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng bộ

nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page0 đến page 3) . Như
vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã
hóa sẽ có dung lượng 1 word (14bit). Để mã hóa được địa chỉ của 8K word bộ nhớ chương
trình, bộ đếm chương trình có dung lượng 13 bit (PC<12:0>).
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset
6


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector).
Bộ nhớ chương trình khơng bao gồm bộ nhớ stack và khơng được địa chỉ hóa bởi bộ
đếm chương trình. Bộ nhớ stack sẽ được đề cập cụ thể trong phần sau.

Hình 2 – 3: Bộ nhớ chương trình PIC16F877A

 Bộ nhớ dữ liệu:
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank. Đối với
PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có dung lượng 128 byte, bao
gồm các thanh ghi có chức năng đặc biệt SFG (Special Function Register) nằm ở các vùng địa
chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa
chỉ còn lại trong bank. Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi
STATUS) sẽ được đặt ở tất cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình
truy xuất và làm giảm bớt lệnh của chương trình.

7



Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

Hình 2 – 4: Sơ đồ bộ nhớ dữ liệu PIC16F877A

8


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

2.1.5 Trình biên dịch CCS


Giao diện của CCS:

Hình 2 – 5: Giao diện trình biên dịch CCS


Cấu trúc của 1 chương trình viết trên CCS:

#include <18F4431.h>

1) header file
2) Các lệnh tiền khai báo :

#use delay….


#use delay(clock=20000000) =>

#fuses ……

khai báo tần số thạch anh (Hz) để
sử dụng hàm delay

#use rs232 …….

#use rs232 => khai báo sử dụng
cổng thu phát nối tiếp

Khai báo biến toàn cục

3) Khai báo tên và kiểu biến sử
dụng, có thể khai báo biến cục bộ

9


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền
bên trong chương trình con và
bên trong hàm MAIN

Chương trình ngắt

4) Chương trình ngắt


“chương trình con 1”

5) Chương trình con

“chương trình con 2”

6) Chương trình chính

MAIN ()
{ …………….
……………..
Gọi các chương trình con
……………..
……………..
}

2.2 Giới thiệu chung về I2C
Ngày nay trong các hệ thống điện tử hiện đại, rất nhiều ICs hay thiết bị ngoại vi cần
phải giao tiếp với các ICs hay thiết bị khác – giao tiếp với thế giới bên ngồi. Vói mục tiêu
đạt được hiệu quả cho phần cứng tốt nhất với mạch điện đơn giản, Phillips đã phát triển một
chuẩn giao tiếp nối tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter ‐
Intergrated Circuit – Bus giao tiếp giữa các IC với nhau.
I2C mặc dù được phát triển bới Philips, nhưng nó đã được rất nhiều nhà sản xuất IC
trên thế giới sử dụng. I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, có
thể kể ra đây một vài tên tuổi ngoài Philips như: Texas Intrument (TI), Maxim‐Dallas, analog
Device, National Semiconductor … Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho rất
nhiều loại IC khác nhau như các loại Vi điều khiển 8051, PIC, AVR, ARM, chíp nhớ như
RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tụ (DAC), IC
điểu khiển LCD, LED…


10


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

2.2.1 Đặc điểm giao tiếp I2C
Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là
đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ và chỉ theo một
hướng. Như hình vẽ, khi một thiết bị ngoại vi kết nối vào đường I2C thì chân SDA của nó sẽ
nối với dây SDA của bus, chân SCL sẽ nối với dây SCL.

Hình 2 – 6: Kết nối thiết bị vào bus I2C
Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một
điện trở kéo lên (pull‐up resistor). Sự cần thiết của các điện trở kéo này là vì chân giao tiếp
I2C của các thiết bị ngoại vi thường là dạng cực máng hở (open‐drain or open‐collector). Giá
trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao động
trong khoảng 1KΩ đến 4.7KΩ.
Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân
biệt, nó cịn được cấu hình là thiết bị chủ (master) hay tớ (slave). Tại sao lại có sự phân biệt
này ? Đó là vì trên một bus I2C thì quyền điều khiển thuộc về thiết bị chủ (master). Thiết bị
chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa hai thiết bị chủ/tớ giao tiếp thì
thiết bị chủ có nhiệm vụ tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ trong suốt quá
trình giao tiếp. Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trong viêc
giao tiếp.

11



Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

Hình 2 – 7: Truyền nhận dữ liệu giữa chủ/tớ
Nhìn hình trên ta thấy xung đồng hồ chỉ có một hướng từ chủ đến tớ, cịn luồng dữ
liệu có thể đi theo hai hướng, từ chủ đến tớ hay ngược lại tớ đến chủ.
Về dữ liệu truyền trên bus I2C, một bus I2C chuẩn truyền 8‐bit dữ liệu có hướng trên
đường truyền với tốc độ là 100Kbits/s – Chế độ chuẩn (Standard mode). Tốc độ truyền có
thể lên tới 400Kbits/s – Chế độ nhanh (Fast mode) và cao nhất là 3,4Mbits/s – Chế độ cao
tốc (High‐speed mode).
Một bus I2C có thể hoạt động ở nhiều chế độ khác nhau:


Một chủ một tớ (one master – one slave)



Một chủ nhiều tớ (one master – multi slave)



Nhiều chủ nhiều tớ (Multi master – multi slave)

Dù ở chế độ nào, một giao tiếp I2C đều dựa vào quan hệ chủ/tớ. Giả thiết một thiết bị
A muốn gửi dữ liệu đến thiết bị B, quá trình được thực hiện như sau:


Thiết bị A (Chủ) xác định đúng địa chỉ của thiết bị B (tớ), cừng với việc xác
định địa chỉ, thiết bị A sẽ quyết định việc đọc hay ghi vào thiết bị tớ




Thiết bị A gửi dữ liệu tới thiết bị B



Thiết bị A kết thúc quá trình truyền dữ liệu

Khi A muốn nhận dữ liệu từ B, quá trình diễn ra như trên, chỉ khác là A sẽ nhận dữ
liệu từ B. Trong giao tiếp này, A là chủ còn B vẫn là tớ. Chi tiết việc thiết lập một giao tiếp
giữa hai thiết bị sẽ được mô tả chi tiết trong các mục dưới đây.
2.2.2 START and STOP conditions
START và STOP là những điều kiện bắt buộc phải có khi một thiết bị chủ muốn thiết
lập giao tiếp với một thiết bị nào đó trong mạng I2C. START là điều kiện khởi đầu, báo hiệu
bắt đầu của giao tiếp, còn STOP báo hiệu kết thúc một giao tiếp. Hình dưới đây mơ tả điều
kiện START và STOP.
12


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

Ban đầu khi chưa thực hiện quá trình giao tiếp, cả hai đường SDA và SCL đều ở mức
cao (SDA = SCL = HIGH). Lúc này bus I2C được coi là dỗi (“bus free”), sẵn sàng cho một
giao tiếp. Hai điều kiện START và STOP là không thể thiếu trong việc giao tiếp giữa các
thiết bị I2C với nhau.

Hình 2 – 8: Điều kiện START và STOP của bus I2C

Điều kiện START: một sự chuyển đổi trạng thái từ cao xuống thấp trên đường SDA
trong khi đường SCL đang ở mức cao (cao = 1; thấp = 0) báo hiệu một điều kiện START.
Điều kiện STOP: Một sự chuyển đổi trạng thái từ mức thấp lên cao trên đường SDA
trong khi đường SCL đang ở mức cao.
Cả hai điều kiện START và STOP đều được tạo ra bởi thiết bị chủ. Sau tín hiệu
START, bus I2C coi như đang trong trang thái làm việc (busy). Bus I2C sẽ rỗi, sẵn sàng cho
một giao tiếp mới sau tín hiệu STOP từ phía thiết bị chủ.
Sau khi có một điều kiện START, trong qua trình giao tiếp, khi có một tín hiệu
START được lặp lại thay vì một tín hiệu STOP thì bus I2C vẫn tiếp tục trong trạng thái bận.
Tín hiệu START và lặp lại START đều có chức năng giống nhau là khởi tạo một giao tiếp.
2.2.3 Định dạng dữ liệu truyền
Dữ liệu được truyền trên bus I2C theo từng bit, bit dữ liệu được truyền đi tại mỗi sườn
dương của xung đồng hồ trên dây SCL, quá trình thay đổi bit dữ liệu xảy ra khi SCL đang ở
mức thấp.

13


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

Hình 2 – 9: Quá trình truyền 1 bit dữ liệu
Mỗi byte dữ liệu được truyền có độ dài là 8 bits. Số lượng byte có thể truyền trong
một lần là khơng hạn chế. Mỗi byte được truyền đi theo sau là một bit ACK để báo hiệu đã
nhận dữ liệu. Bit có trọng số cao nhất (MSB) sẽ được truyền đi đầu tiên, các bít sẽ được
truyền đi lần lượt. Sau 8 xung clock trên dây SCL, 8 bit dữ liệu đã được truyền đi. Lúc này
thiết bị nhận, sau khi đã nhận đủ 8 bít dữ liệu sẽ kéo SDA xuống mức thấp tạo một xung
ACK ứng với xung clock thứ 9 trên dây SDA để báo hiệu đã nhận đủ 8 bit. Thiết bị truyền
khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình truyền hoặc kết thúc.


Hình 2 – 10 : Dữ liệu truyền trên bus I2C

Hình 2 – 11: Bit ACK trên bus I2C

14


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

Hình 2 – 12: Lưu đồ thuật tốn q trình truyền nhận dữ liệu
Một byte truyền đi có kèm theo bit ACK là điều kiên bắt buộc, nhằm đảm bảo cho quá
trình truyền nhận được diễn ra chính xác. Khi khơng nhận được đúng địa chỉ hay khi muốn
kết thúc quá trình giao tiếp, thiết bị nhận sẽ gửi một xung Not‐ACK (SDA ở mức cao) để báo
cho thiết bị chủ biết, thiết bị chủ sẽ tạo xung STOP để kết thúc hay lặp lại một xung START
để bắt đầu quá trình mới.
2.2.4 Cách thức sử dụng Module I2C trong CCS
Trong việc lập trình cho PIC sử dụng giao tiếp I2C của nó trong các ứng dụng, người
lập trình có thể thực hiện một cách dễ dàng với trình dịch CCS. Nói dễ dàng ở đây là chỉ về
mặt cú pháp lệnh, ta khơng cần sử dụng nhiều câu lệnh khó nhớ như trong lập trình ASM.
Việc khởi tạo, chọn chế độ hoạt động và thực hiện giao tiếp của I2C đã có các hàm dựng sẵn
của CCS thực hiện. Các hàm liệt kê dưới đây là của phiên bản CCS 3.242, đó là:


i2c_isr_state(): Thông báo trạng thái giao tiếp I2C




i2c_start(): Tạo điều kiện START



i2c_stop(): Tạo điều kiện STOP



i2c_read(): Đọc giá trị từ thiết bị I2C, trả về giá trị 8 bit



i2c_write(): Ghi giá trị 8 bit đến thiết bị I2C

15


Luận văn tốt nghiệp

GVHD: Thầy Nguyễn Ngọc Quyền

Để sử dụng khối I2C ta sử dụng khai báo sau:
#use i2c(chế_độ, tốc độ, sda = PIN_C4, scl=PIN_C3)


Chế độ: Master hay Slave



Tốc độ: Slow (100KHz) hay Fast (400KHz)




SDA và SCL là các chân i2c tương ứng của PIC

Sau khai báo trên, ta có thể sử dụng các hàm nêu trên để thực hiện, xử lý các giao tiếp
i2c với các thiết bị ngoại vi khác.

2.3 Tổng quan về chuẩn giao tiếp RS232
Vấn đề giao tiếp giữa PC và vi điều khiển rất quan trọng trong các ứng dụng điều
khiển, đo lường... Ghép nối qua cổng nối tiếp RS232 là một trong những kỹ thuật được sử
dụng rộng rãi để ghép nối các thiết bị ngoại vi với máy tính.Nó là một chuẩn giao tiếp nối tiếp
dùng định dạng không đồng bộ, kết nối nhiều nhất là 2 thiết bị , chiều dài kết nối lớn nhất cho
phép để đảm bảo dữ liệu là 12.5 đến 25.4m, tốc độ 20kbit/s đôi khi là tốc độ 115kbit/s với
một số thiết bị đặc biệt. Ý nghĩa của chuẩn truyền thông nối tiếp nghĩa là trong một thời điểm
chỉ có một bit được gửi đi dọc theo đường truyền.
Các máy tính thường có 1 hoặc 2 cổng nối tiếp theo chuẩn RS232 được gọi là cổng
Com. Chúng được dùng ghép nối cho chuột, modem, thiết bị đo lường...Trên main máy tính
có loại 9 chân hoặc lại 25 chân tùy vào đời máy và main của máy tính. Việc thiết kế giao tiếp
với cổng RS232 cũng tương đối dễ dàng, đặc biệt khi chọn chế độ hoạt động là không đồng
bộ và tốc độ truyền dữ liệu thấp.
2.3.1 Ưu điểm chuẩn giao tiếp RS232


Khả năng chống nhiễu của các cổng nối tiếp cao



Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện




Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua công nối
tiếp.

2.3.2 Những đặc điểm cần lưu ý trong chuẩn RS232


Trong chuẩn RS232 có mức giới hạn trên và dưới (logic 0 và 1) là +-12V.
Hiện nay đang được cố định trở kháng tải trong phạm vi từ 3000 ôm - 7000
ôm.

16


Luận văn tốt nghiệp


GVHD: Thầy Nguyễn Ngọc Quyền

Mức logic 1 có điện áp nằm trong khoảng -3V đến -12V, mức logic 0 từ +3V đến 12V



Tốc độ truyền nhận dữ liệu cực đại là 100kbps ( ngày nay có thể lớn hơn)



Các lối vào phải có điện dung nhỏ hơn 2500pF




Trở kháng tải phải lớn hơn 3000 ôm nhưng phải nhỏ hơn 7000 ôm



Độ dài của cáp nối giữa máy tính và thiết bị ngoại vi ghép nối qua cổng nối
tiếp RS232 không vượt qua 15m nếu chúng ta không sử model



Các giá trị tốc độ truyền dữ liệu chuẩn :50, 75, 110, 750, 300, 600, 1200,
2400, 4800, 9600, 19200,2 8800, 38400....56600, 115200 bps.

2.3.3 Các mức điện áp đường truyền
RS 232 sử dụng phương thức truyền thông không đối xứng, tức là sử dụng tín hiệu
điện áp chênh lệch giữa một dây dẫn và đất. Do đó ngay từ đầu tiên ra đời nó đã mang vẻ lỗi
thời của chuẩn TTL, nó vấn sử dụng các mức điện áp tương thích TTL để mơ tả các mức
logic 0 và 1. Ngoài mức điện áp tiêu chuẩn cũng cố định các giá trị trở kháng tải được đấu
vào bus của bộ phận và các trở kháng ra của bộ phát.
Mức điện áp của tiêu chuẩn RS232C ( chuẩn thường dùng bây giờ) được mô tả như
sau:


Mức logic 0 : +3V , +12V



Mức logic 1 : -12V, -3V


Các mức điện áp trong phạm vi từ -3V đến 3V là trạng thái chuyển tuyến. Chính vì từ
- 3V tới 3V là phạm vi không được định nghĩa, trong trường hợp thay đổi giá trị logic từ thấp
lên cao hoặc từ cao xuống thấp, một tín hiệu phải vượt qua quãng quá độ trong một thơì gian
ngắn hợp lý. Điều này dẫn đến việc phải hạn chế về điện dung của các thiết bị tham gia và
của cả đường truyền.
2.3.4 Quá trình truyền dữ liệu
Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ. Do vậy nên
tại một thời điểm chỉ có một bit được truyền (1 kí tự). Bộ truyền gửi một bit bắt đầu (bit start)
để thông báo cho bộ nhận biết một kí tự sẽ được gửi đến trong lần truyền bit tiếp the . Bit này
luôn bắt đầu bằng mức 0.. Tiếp theo đó là các bit dữ liệu (bits data) được gửi dưới dạng mã

17


×