LỜI NÓI ĐẦU
Khoa học kỹ thuật ngày càng phát triển mạnh mẽ, kỹ thuật điện tử cũng được chú trọng phát
triển nhiều hơn. Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, đời sống xã hội ngày
càng phát triển dựa trên những ứng dụng của khoa học vào đời sống. Vì vậy mà công nghệ
điện tử mang tính tự động ngày càng được ứng dụng rộng rãi. Sự phát triển của máy tính đã
mở rộng các ứng dụng của vi điều khiển. Các bộ vi điều khiển với đa tính năng đang đựơc
ứng dụng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kỹ thuật và đời sống xã
hội. Hầu hết các thiết bị được điều khiển tự động, từ các thiết bị văn phòng cho đến các thiết
bị trong gia đình đều dùng các bộ vi điều khiển nhằm đem lại sự tiện nghi cho con người
trong thời đại công nghiệp hoá, hiện đại hoá. Vì vậy việc ghép nối giữa máy tính và vi điều
khiển ngày càng trở lên quan trọng.
Để ứng dụng môn Ghép nối máy tính và giao diện vào thực tế, sau một thời gian
nghiên cứu học tập dưới sự giảng dạy của các thầy cô giáo trong khoa về kiến thức chuyên
ngành, đồng thời cùng với sự giúp đỡ nhiệt tình của thầy Phạm Ngọc Hưng, chúng em đã
tiến hành thiết kế và hoàn thành đề tài: “Mạch điều khiển các thiết bị trong nhà”.
Với sự lỗ lực của bản thân nhưng do thời gian, kiến thức và kinh nghiệm của chúng
em còn hạn chế nên không thể tránh khỏi những sai xót. Chúng em rất mong nhận được sự
giúp đỡ và đóng góp ý kiến của thầy cô cùng các bạn để đồ án được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!
Hưng Yên, tháng 12 năm 2008
Nhóm sinh viên thực hiện: 1. Trần Thị Hạt
2. Nguyễn Thị Thắm
3. Bùi Quyết Thắng
4. Phạm Thị Xoa
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Hưng Yên,tháng 12 năm 2008
Giáo viên hướng dẫn
GVHD:Phạm Ngọc Hưng
2
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
MỤC LỤC
Phần I: Lý thuyết tổng quan 5
I.Tổng quan về VĐK PIC16F876A 5
1. Giới thiệu họ vi điều khiển PIC 5
2. Vi điều khiển PIC 16F876A 5
II.Giao tiếp cổng nối tiếp 19
1. Cấu trúc cổng nối tiếp 19
2. Truyền thông giữa hai nút 22
3. Truy xuất trực tiếp thông qua cổng 24
Phần II. Thiết kế phần cứng 28
I.Sơ đồ khối và chức năng các khối 28
1. Sơ đồ khối 28
2. Chức năng các khối 28
II.Sơ đồ nguyên lý 31
Kết luận 32
GVHD:Phạm Ngọc Hưng
3
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Ý TƯỞNG THIẾT KẾ
Thiết kế hệ thống điều khiển các thiết bị trong nhà(quạt, máy bơm nước, tivi, đèn)
dùng vi điều khiển thông qua máy vi tính. Hệ thống bao gồm: Khối nguồn, khối xử lý trung
tâm dùng PIC16F876A, khối điều khiển, khối hiển thị và cuối cùng là khối truyền thông. Khi
tác động vào các nút ON hoặc OFF trên khối điều khiển thì tương ứng với nó là việc cấp
hoặc ngắt nguồn cho các thiết bị sử dụng. Khi tín hiệu được truyền đi, sau một thời gian cảm
biến sẽ nhận tác động và báo lại cho máy tính biết là vi điều khiển đã nhận được thông tin
hay chưa. Nếu chưa nhận được máy tính sẽ truyền lại thông tin đó lần nữa, khi nào vi điều
khiển nhận được mới thôi.
Quy trình thực hiện ý tưởng
Bước 1:
Nghiên cứu & khảo sát PIC16F876A, tạo giao diện trên Visuabasic 6.0.
Bước 2:
Sau khi đã nghiên cứu và khảo sát xong chúng ta bắt đầu thực hiện xây dựng mạch
theo đúng nhiệm vụ của đề tài. Xây dựng các khối: Khối nguồn, khối xử lý trung tâm dùng
PIC16F876A, khối điều khiển, khối hiển thị và cuối cùng là khối truyền thông. Việc truyền
và nhận dữ liệu từ máy tính và vi điều khiển như thế nào chính là vấn đề mà chúng ta cần
quan tâm.
Bước 3:
Vẽ mạch thực hiện thiết kế mạch in (board) mục đích bố trí linh kiện hợp lý từ sơ đồ trải (sơ
đồ nguyên lý ) mục đích giảm kích thước mô hình, đề tài được thực hiện trên phần mềm
Eagle. Từ các bước trên ta có thể bắt đầu tiến hành thực hiện viết thuyết minh và thực hiện ý
tưởng.
GVHD:Phạm Ngọc Hưng
4
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
PHẦN I: LÝ THUYẾT TỔNG QUAN
I. TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC
1. Giới thiệu họ vi điều khiển PIC
PIC là viết tắt của” Programable Intelligent Computer”, tạm dịch là “ máy tính thông
minh khả trình” của hãng Microchip. Hiện tại ở Việt Nam và trên thế giới sử dụng PIC khá
rộng rãi. Các tính năng đa dạng họ vi điều khiển PIC cũng như các công cụ hỗ trợ lập trình
cho họ vi điều khiển PIC không ngừng được cải tiến và phát triển đã tạo ra những ứng dụng
vượt trội của PIC so với các họ vi điều khiển khác.
Các kí hiệu của họ vi điều khiển PIC:
PIC 12xxxx: độ dài lệnh 12 bit
PIC 16xxxx: độ dài lệnh 14 bit
PIC 18xxxx: độ dài lệnh 16 bit
C: PIC có bộ nhớ EPROM ( chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ Flash
LF: PUC có bộ nhớ flash hoạt động ở điện áp thấp
LV: tương tự như LF
Bên cạnh đó có một số vi điều khiển có kí hiệu 16Fxxx là EEPROM, nếu có thêm chữ
A ở cuối là flash (ví dụ 16F877 là EEPROM, 16F877A là flash). Ngoài ra còn có thêm một
dòng vi điều khiển PIC mới là dsPIC. Ở Việt Nam phổ biến nhất là các họ Vi điều khiển PIC
do hãng Microchip sản xuất.
2. Vi điều khiển PIC 16F876A
2.1. Mô tả cấu trúc
PIC 16F876A thuộc họ 16F87x sử dụng công nghệ tích hợp cao RISC CPU, có thể
lập trình với 35 câu lệnh đơn giản. Tất cả các câu lệnh thực hiện trong 1 chu kì lệnh ngoại trừ
một số câu lệnh rẽ nhánh thực hiện trong 2 chu kì lệnh. Tốc độ hoạt động xung đồng hồ vào
GVHD:Phạm Ngọc Hưng
5
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
là DC-20MHz với chu kì lệnh thực hiện trong 200ns. Bộ nhớ chương trình Flash 8Kx14
words. Bộ nhớ Ram là 368x8 bytes, bộ nhớ dữ liệu EFPROM 256x8 bytes.
Khả năng của bộ vi xử lí này :
+ Khả năng ngắt (lên tới 14 nguồn ngắt trong và ngắt ngoài)
+ Ngăn nhớ Stack được phân chia làm 8 mức
+ Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp.
+ Nguồn khởi động lại (POR).
+ Bộ tạo xung thời gian (PWRT) và bộ tạo dao động (OST)
+ Bộ đếm xung thời gian (WDT) với nguồn dao động trên chip (nguồn dao động RC)
hoạt động đáng tin cậy.
+ Có mã chương trình bảo vệ. Có bảng lựa chọn dao động
+ Phương thức cất giữ SLEEP.
+ Công nghệ CMOS FLASH/EEPROM nguồn mức thấp, tốc độ cao.
+ Thiết kế hoàn toàn tĩnh. Mạch chương trình nối tiếp có hai chân.
+ Xử lý đọc/ghi tới bộ nhớ chương trình.
+ Dải điện thế hoạt động rộng: 2.0V ÷ 5.5V. Nguồn sử dụng hiện tại 25mA.
+ Dãy nhiệt độ công nghiệp và thuận lợi.
+ Công suất tiêu thụ thấp: < 0.6mA với 5V, 4MHz
20µA với 3V, 32 kHz
< 1µA nguồn dự phòng.
Các đặc tính nổi bật của thiết bị ngoại vi trên chip:
+ Timer0: 8 bít của bộ định thời, bộ đếm với hệ số tỷ lệ trước
+ Timer1:16 bít của bộ định thời, bộ đếm với hệ số tỷ lệ trước, có khả năng tăng trong
khi ở chế độ Sleep qua xung đồng hồ được cung cấp bên ngoài.
+ Timer2: 8 bít của bộ định thời, bộ đếm với 8 bít của hệ số tỷ lệ trước, hệ số tỷ lệ
sau.
+ Có 2 chế độ bắt giữ, so sánh, điều chế độ rộng xung (PWM)
GVHD:Phạm Ngọc Hưng
6
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
+ Chế độ bắt giữ 16 bít, tốc độ 12,5 ns, chế độ so sánh với 16 bít, tốc độ giải quyết
cực đại là 200ns, chế độ điều chế độ rộng xung với 10 bít.
+ Bộ chuyển đổi tín hiệu số sang tương tự với 10 bít.
+ Cổng truyền thông nối tiếp SSP với SPI phương thức chủ và I
2
C(chủ/phụ)
+ Bộ truyền nhận thông tin đồng bộ, dị bộ(USART/SCL) có khả năng phát hiện 9 bít
địa chỉ.
+ Cổng phụ song song (PSP) với 8 bít mở rộng, với RD, WR, và CS điều khiển.
Sơ đồ các chân của PIC 16F876:
2.2. Sự tổ chức bộ nhớ PIC 16F876A
PIC 16F87A có 3 khối bộ nhớ: bộ nhớ chương trình FLASH, bộ nhớ dữ liệu RAM, bộ
nhớ EEPROM.
a) Tổ chức bộ nhớ chương trình FLASH và Stack nhớ
PIC 16F876 có một bộ đếm chương trình 13 bít và có 8Kx14 từ mã của bộ nhớ
chương trình FLASH, được chia thành 4 trang mỗi trang 2Kx14 từ mã.
Khi Reset địa chỉ bắt đầu thực hiện chạy là 0000h, vectơ ngắt bắt đầu 0004h. Stack có
8 mức dùng để lưu địa chỉ lệnh thực hiện tiếp theo sau lệnh CALL và khi xảy ra ngắt.
Bản đồ bộ nhớ chương trình và các ngăn xếp:
GVHD:Phạm Ngọc Hưng
7
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Sơ đồ khối chức năng của PIC 16F876:
GVHD:Phạm Ngọc Hưng
8
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
b) Tổ chức bộ nhớ dữ liệu RAM
RAM là bộ nhớ có thể đọc và ghi, nó không lưu dữ liệu khi mất điện, bộ nhớ RAM
của PIC 16F876A có 4 bank, mỗi bank có dải địa chỉ 0-7FH(128 byte) trên các bank những
thanh ghi đa mục đích, hoạt động như một RAM tĩnh (General purpose register), và những
thanh ghi chức năng đặc biệt (Special function registers) ở vùng địa chỉ thấp. Bít RP1(Status
<6>) và bit RP0(Status <5>) dùng để lựa chọn bank làm việc.
GVHD:Phạm Ngọc Hưng
9
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Các thanh ghi đa mục đích (General purpose register): các thanh ghi này được truy
cập bằng cả hai cách trực tiếp hoặc gián tiếp qua thanh ghi FSR, tổng cộng có 368
byte.
Các thanh ghi chức năng đặc biệt: các thanh ghi này được dùng bởi CPU và các khối
ngoại vi để điều khiển sự hoạt động theo yêu cầu của thiết bị.
Sau đây là một số thanh ghi đặc biệt quan trọng:
Các thanh ghi trạng thái STATUS: có 4 thanh ghi trạng thái trên 4 dãy, tại các địa chỉ
03h, 83h, 103h, 183h. Các thanh ghi này cho biết trạng thái của phần tử logic toán học
ALU, trạng thái Reset, trạng thái của các bít lựa chọn dãy thanh ghi cho bộ nhớ dữ
liệu
Các thanh ghi lựa chọn OPTION_REG: có 2 thanh ghi lựa chọn tại các địa chỉ 81h và
181h, các thanh ghi này có thể đọc hoặc ghi, nó chứa đựng nhiều bit điều khiển khác
nhau để xác định hệ số định trước TMR0/hệ số định sau WDT, ngắt ngoài INT,
TMR0, các điện áp treo trên cổng B
Các thanh ghi INTCON: có 4 thanh ghi INTCON tại các địa chỉ 0Bh, 8Bh, 10Bh,
18Bh. Các thanh ghi này có thể đọc và ghi, chứa đựng nhiều sự cho phép và các bit cờ
cho việc tràn thanh ghi TMR0, các ngắt thay đổi cổng RB và chân các ngắt ngoài
RB0/INT.
Thanh ghi PIE1: Tại địa chỉ 8Ch, chứa đựng các bit cho phép riêng lẻ cho các ngắt
ngoại vi.
Thanh ghi PIR1: Tại địa chỉ 0Ch, chứa đựng các bit cờ riêng lẻ cho các ngắt ngoại vi.
Thanh ghi PIE2: Tại các địa chỉ 8Dh, chứa đựng các bit cho phép riêng lẻ cho các
ngắt ngoại vi CCP2, ngắt xung đột tuyến SSP và EEPROM ghi các hoạt động ngắt
Thanh ghi PCON (Power Control): Chứa bit cờ cho phép phân biệt giữa việc Reset hệ
thống để Reset MCLR ngoại với Reset WDT
PCL và PCLATH: Chương trình đếm chỉ rõ địa chỉ của lệnh tiếp theo được thực hiện.
PC có độ rộng 13 bit, byte thấp được gọi là thanh ghi PCL (có thể đọc hoặc ghi), byte
cao được gọi là thanh ghi PCH .
GVHD:Phạm Ngọc Hưng
10
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
c) Các trang bộ nhớ chương trình
PIC16F876A có 8Kx14 PLASH các lệnh CALL, GOTO chỉ cung cấp 11 bit địa chỉ
cho phép rẽ nhánh được 2K của một trang bộ nhớ chương trình, 2 bit cao được cung cấp
bởi 2 bit 3,4 của PCLATH <4:3> do vậy tuỳ việc thiết lập các bit 3,4 của PCLATH trước
khi lệnh CALL, GOTO thực hiện cho phép rẽ nhánh tới các trang bộ nhớ khác nhau
Chú ý các lệnh RETURN, RETFIE không làm thay đổi PCLATH
2.3. Các cổng vào/ra
PIC16F876A có 3 cổng vào/ra là Port A, Port B, Port C. Một số chân của cổng vào/ra
được tích hợp với một số hàm có thể thay đổi để phù hợp với những thiết bị ngoại vi.
a) Cổng A và thanh ghi TRISA
Cổng A là cổng hai chiều với độ rộng đường truyền là 6 bit. Để điều khiển việc truy
xuất dữ liệu người ta dùng thanh ghi TRISA. Nếu đặt bit TRISA = 1 thì cổng A sẽ tương ứng
có các chân là chân vào. Nếu xoá bít TRISA = 0 thì cổng A sẽ tương ứng có các chân là chân
ra. Việc đọc cổng A chính là đọc trạng thái của các chân, việc viết phải qua các chốt của
cổng. Các chân của cổng A chủ yếu sử dụng nhận tín hiệu tương tự hoặc các chân vào/ra.
Riêng chân RA4 có thể đa hợp với chân vào bộ Timer 0 và khi đó nó trở thành chân
RA4/T0CKI. Chân này như một đầu vào của Trigger Schmitt và nó mở đầu ra. Các chân
khác của cổng A là chân vào bộ TTL. Việc điều khiển các chân này thông qua việc đặt hay
xoá các bít của thanh ghi ADCON1. Thanh ghi TRISA điều khiển trực tiếp các chân của
cổng A, khi sử dụng các chân này để nhận tín hiệu tương tự vào ta phải chắc chắn rằng các
bít của thanh ghi TRISA đã được đặt rồi.
Sơ đồ khối chân RA3:RA0, chân RA5, và chân RA4/TOCK1 của cổng A
GVHD:Phạm Ngọc Hưng
11
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
b) Cổng B và thanh ghi TRISB
Cổng B là cổng hai chiều với độ rộng đường truyền là 8 bit. Tương ứng với nó để
điều khiển trực tiếp dữ liệu ta sử dụng thanh ghi TRISB. Nếu đặt bít TRISB = 1 thì cổng B
được định nghĩa là chân vào. Nếu xoá bít TRISB = 0 thì cổng B được định nghĩa là chân ra.
Nội dung của chốt ra có thể chọn trên mỗi chân.
Có 3 chân của cổng B có thể đa hợp với các chương trình vận hành bằng điện áp thấp.
Đó là các chân sau: RB3/PGM, RB6/PGC, RB7/PGD. Sự thay đổi hoạt động của những chân
này được miêu tả ở trong phần đặc tính nổi bật. Mỗi chân của cổng B có khả năng dừng bên
trong nhưng yếu. Điều này được trình bày bởi việc xoá bit RBPU (bit 7 của thanh ghi
OPTION_REG). Khả năng dừng này sẽ tự động tắt đi khi các chân của cổng được định nghĩa
là chân ra. Khả năng dừng này sẽ tự động mất đi khi ta RESET. Bốn chân của cổng B, từ
RB7÷ RB4 có đặc tính là ngắt khi thay đổi trạng thái. Chỉ những chân được định dạng là
những chân vào thì ngắt này mới tồn tại. Một vài chân RB7:RB4 được định dạng như chân ra
nó thi hành ngắt trên sự thay đổi so sánh. Chân vào RB7:RB4 được so sánh với giá trị cũ của
chốt ở lần đọc cuối cùng của cổng B. Sự ghép đôi không khớp chân ra của RB7:RB4 bằng
GVHD:Phạm Ngọc Hưng
12
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
lệnh OR làm phát ra ngắt với cờ bit RBIF của thanh ghi INTCON. Ngắt này có thể khởi
động thiết bị từ trạng thái SLEEP.
Sơ đồ khối của chân RB3÷RB0, và chân RB7÷RB4 của cổng B:
c) Cổng C và thanh ghi TRISC
Cổng C là cổng 2 chiều với độ rộng đường truyền là 8 bit. Tương ứng với việc điều
khiển nó là thanh ghi TRISC. Nếu đặt bit TRISC=1 thì tương ứng với chân của cổng C là
chân vào. Nếu xoá bit TRISC=0 thì tương ứng với chân của cổng C là chân ra. Đặt nội dung
của chốt ra có thể đặt trên chân chọn. Cổng C đa hợp với việc vận hành thiết bị ngoại vi.
Chân của cổng C thông qua bộ đệm Trigger Schmitt đầu vào.
Khi chế độ I
2
C hoạt động, thì các chân cổng PORTC (4:3) có thể được sắp xếp với
mức I
2
C thường hoặc với mức SMBUS bằng cách sử dụng bit CKE (SSPSTART<6>) là bit
6 của thanh ghi SSPSTART.
Khi vận hành các thiết bị ngoại vi bằng việc xác định bit TRIS của mỗi chân cổng C.
Một số phần phụ có thể ghi đè lên bit TRISC làm cho chân này trở thành chân ra, trong khi
đó thì một số phần phụ khác lại ghi đè lên bit TRIS làm cho nó trở thành chân vào. Từ khi
những bit TRIS ghi đè thì trong việc tác động trong các thiết bị ngoại vi là có thể, những lệnh
đọc-sửa–ghi (BSF, BCF, XORWF) với thanh ghi TRISC như là nơi gửi tới sẽ được tránh.
GVHD:Phạm Ngọc Hưng
13
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Người sử dụng nên đề cập tới việc phân chia kết nối các thiết bị ngoại vi cho việc set chính
xác các bit TRIS
Sơ đồ khối chân RC <0:2> RC <5:7> và chân RC <3:4>của cổng C
2.4. Các bộ Timer của chip
Bộ vi điều khiển PIC 16F876 có 3 bộ Timer đó là: Timer 0, Timer 1, Timer2.
a) Bộ Timer0
Là bộ định thời hoặc bộ đếm có những ưu điểm nổi bật sau:
+ 8 bit cho timer hoặc bộ đếm.
+ Có khả năng đọc và viết.
+ Có thể dùng đồng hồ bên trong hoặc bên ngoài.
+ Có thể chọn cạnh xung của xung đồng hồ.
+ Có hệ số chia cho xung đầu vào có thể lập trình lại bằng phần mềm.
+ Ngắt tràn.
Hoạt động của bộ Timer0:
GVHD:Phạm Ngọc Hưng
14
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Timer 0 có thể hoạt động như một bộ định thời hoặc một bộ đếm. Viêc chọn bộ định thời
hoặc bộ đếm có thể được xác lập bằng việc xoá hoặc đặt bit TOSC của thanh ghi
OPTION_REG<5>.
Nếu dùng hệ số chia xung đầu vào thì xoá bit PSA của thanh ghi OPTION_REG<3>.
Trong chế độ bộ định thời được lựa chọn bởi việc xoá bit T0CS (OPTION_REG<5>),
nó sẽ được tăng giá trị sau một chu kỳ lệnh nếu không chọn hệ số chia xung đầu vào. Và giá
trị của nó được viết tới thanh ghi TMR0.
Chế độ đếm được lựa chọn bởi việc set bit T0CS (OPTION_REG<5>).
Trong chế độ bộ đếm, nó sẽ được tăng ở xung đi xuống nếu xoá bit T0SE
(OPTION_REG<4>) hoặc ở xung đi lên nếu set bit T0SE. Và giá trị của nó được viết tới
thanh ghi TMR0.
Khi dùng xung clock bên ngoài cho bộ định thời Timer 0 và không dùng hệ số chia
clock đầu vào Timer 0 thì phải đáp ứng các điều kiện cần thiết để có thể hoạt động đó là phải
đảm bảo xung clock bên ngoài có thể đồng bộ với pha xung clock bên trong (T
OSC
).
Các hệ số chia:
Hệ số chia dùng cho Timer 0 hoặc bộ WDT. Các hệ số này không có khả năng đọc và
khả năng viết. Để chọn hệ số chia xung vào Timer 0 hoặc cho bộ WDT ta tiến hành xoá
hoặc đặt bit PSA của thanh ghi OPTION_REG<3>.
Những bit PS2, PS1, PS0 của thanh ghi OPTION_REG<2:0> dùng để xác lập các hệ
số chia.
Ngắt của bộ Timer0:
Ngắt của bộ Timer 0 được phát sinh ra khi thanh ghi TMR0 bị tràn tức từ FFh quay về
00h. Khi đó bit T0IF của thanh ghi INTCON<2> sẽ được đặt. Bit này phải được xoá bằng
phần mềm nếu cho phép ngắt bit T0IE của thanh ghi INTCON<5> được set. Timer 0 bị dừng
hoạt động ở chế độ SLEEP ngắt Timer 0 không đánh thức bộ xử lý ở chế độ SLEEP.
* Thanh ghi OPTION_REG
GVHD:Phạm Ngọc Hưng
15
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Bit 5 TOCS lựa chọn nguồn clock
1= Clock ngoài từ chân T0CKI 0= Clock trong Focs/4
Bit 4 T0SE bit lựa chọn sườn xung clock
1= Timer 0 tăng khi chân T0CKI từ cao xuống thấp (sườn xuống)
0= Timer 0 tăng khi chân T0CKI từ thấp lên cao (sườn lên)
Bit 3 PSA bit gán bộ chia xung đầu vào
1= gán bộ chia Prescaler cho WDT
0=gán bộ chia Prescaler cho Timer 0
Bit 2:0 PS2:PS1 lựa chọn hệ số chia xung đầu vào theo bảng sau:
PS2:PS0 Timer 0 WDT
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1:16 1:8
100 1:32 1:16
101 1:64 1:32
110 1:128 1:64
111 1:256 1:128
b) Bộ Timer1
Bộ Timer1 có thể là bộ đếm hoặc bộ định thời với ưu điểm sau:
+ 16 bit cho bộ đếm hoặc bộ định thời (gồm 2 thanh ghi TMR1H:TMR1L).
+ Có khả năng đọc và viết.
+ Có thể chọn xung đồng hồ bên trong hoặc bên ngoài.
+ Có thể ngắt khi tràn FFFFh về 0000h.
Timer1 có 1 thanh ghi điều khiển, đó là thanh ghi T1C0N. Bộ Timer1 có hoạt động
hay không hoạt động là nhờ việc đặt hoặc xoá bit TMR1ON (T1CON<0>).
Hoạt động của Timer1:
Nó có thể hoạt động ở một trong các chế độ sau:
GVHD:Phạm Ngọc Hưng
16
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
+ Là một bộ định thời 16 bit.
+ Là một bộ đếm có đồng bộ.
+ Là một bộ đếm không có đồng bộ.
Phương thức hoạt động của bộ này được xác định bởi việc chọn nguồn xung vào
Timer1. Nguồn xung đồng hồ được chọn bởi việc đặt xoá bit TMR1CS (T1CON<1>). Ở chế
độ bộ định thời, đầu vào là clock trong Fosc/4, bit đồng bộ T1SYNC (T1CON<2>) không có
tác dụng vì clock trong luôn đồng bộ. Chế độ bộ đếm hoạt động hai chế độ. Có đồng bộ xung
vào xoá bit T1SYNC (T1CON<2>), không đồng bộ xung vào set bit T1SYNC (T1CON<2>)
Timer1 tăng ở sườn lên xung đầu vào.
Khi bộ dao động Timer1 cho phép hoạt động thì các chân RC1/T1OSI/CCP2,
RC0/T1OSO/T1CKI trở thành chân vào.
Ở chế độ đếm có đồng bộ bộ đếm tăng mỗi khi sườn lên ở chân RC0 hoặc ở chân
RC1 nếu bit T1OSEN xoá và xung vào phải đồng bộ với clock trong, ở chế độ này bộ đếm
không tăng trong trạng thái SLEEP.
Ở chế độ đếm không đồng bộ Timer1 tăng mỗi khi sườn lên ở chân RC0 hoặc ở chân
RC1 nếu bit T1OSCEN xoá, ở chế độ này bộ đếm tiếp tục tăng trong trạng thái SLEEP và có
khả năng tràn gây ra ngắt khi đó bộ xử lý được đánh thức.
Dao động của Timer1:
Mạch dao động thạch anh được xây dựng giữa 2 chân TiOSI và T1OS0. Khi dao động
được cung cấp ở chế độ công suất thấp thì tần số cực đại của nó sẽ là 200kHz và trong nó ở
chế độ SLEEP nó cung cấp ở tần số 32kHz.
Ngắt của bộ Timer1:
Cặp thanh ghi TMR1H và TMR1L tăng từ giá trị 0000h đến FFFFh đến giá trị này
tiếp tục tăng thì tràn và quay lại giá trị 0000h. Và ngắt xuất hiện khi tràn quá giá trị FFFFh
khi này cờ ngắt TMR1IF sẽ được đặt. Ngắt có thể hoạt động hoặc không hoạt động nhờ việc
đặt hoặc xoá bit TMR1IE.
* Thanh ghi điều khiển Timer 1 T1CON:
GVHD:Phạm Ngọc Hưng
17
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Bit 7,6 không sử dụng
Bit 5,4 T1CKPS1:T1CKPS0 lựa chọn hệ số chia xung đầu vào
T1CKPS1:T1CKPS0
0 1:1
1 1:2
10 1:4
11 1:8
Bit 3 T1OSEN bit điều khiển bộ dao động Timer1
1= Bộ dao động hoạt động 0= Bộ dao động không hoạt động
Bit 2 Bit điều khiển xung clock ngoài đồng bộ khi TMRCS=1
Bit 2=0 có đồng bộ clock ngoài Bit 2=1 không đồng bộ clock ngoài
Khi TMR1CS=0 bit này không tác dụng
Bit 1 TMR1CS bit lựa chọn nguồn xung clock vào
TMR1CS=1 clock từ chân RC0/T1OSO/T1CKI (sườn lên)
TMR1CS=0 clock trong Fosc/4
Bit 0 Bit bật tắt Timer
1= Timer 1 enable 0= Timer 1 Disable
c) Bộ Timer2
Bộ Timer2 có những đặc tính sau đây:
+ 8 bit cho bộ định thời (thanh ghi TMR2)
+ 8 bit vòng lặp (thanh ghi PR2)
+ Có khả năng đọc và viết ở cả 2 thanh ghi nói trên
+ Có khả năng lập trình bằng phần mềm tỷ lệ trước
+ Có khả năng lập trình bằng phần mềm tỷ lệ sau
Chế độ SSP dùng đầu ra của TMR2 để tạo xung clock. Timer2 có một thanh ghi điều
khiển đó là thanh ghi T2CON.
GVHD:Phạm Ngọc Hưng
18
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Timer2 có thể tắt bằng việc xoá bit TMR2CON của thanh ghi T2CON.
Hoạt động của bộ Timer2:
Timer 2 được dùng chủ yếu ở phần điều chế xung của bộ CCP, thanh ghi TMR2 có
khả năng đọc và viết, nó có thể xoá bằng việc reset lại thiết bị. Đầu vào của xung có thể chọn
các tỷ lệ sau: 1:1, 1:2 hoặc 1:16 việc chọn các tỷ lệ này có thể điều khiển các bit sau
T2CKPS1 và bit T2CKPS0
Ngắt của bộ Timer2:
Bộ Timer 2 có 1 thanh ghi 8 bit PR2. Timer 2 tăng từ giá trị 00h cho đến khớp với
PR2 và tiếp theo nó sẽ reset lại giá trị 00h và lệnh kế tiếp thực hiện. Thanh ghi PR2 là một
thanh ghi có khả năng đọc và viết. Thanh ghi PR2 bắt đầu từ giá trị FFh đầu ra của TMR2 là
đường dẫn cổng truyền thông đồng bộ, nó được dùng để phát các xung đồng bộ.
* Thanh ghi T2CON
Bit 7 không sử dụng
Bit 6-3 TOUTPS3:TOUTPS0 bit lựa chọn hệ số đầu ra Timer2
0000 = 1:1
0001 = 1:2
0010 = 1:3
…
1111 = 1:16
Bit 2 TMR2ON bit bật tắt hoạt động Timer2
1 = Enable
0 = Disable
Bit 1-0 2CKPS1:T2CKPS0 chọn hệ chia đầu vào
00 = 1:1
01 = 1:4
GVHD:Phạm Ngọc Hưng
19
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
1x = 1:16
II. GIAO
TIẾP
CỐNG
NỐI
TIẾP
1. Cấu trúc cổng nối tiếp
Cổng
nối
tiếp
được
sử
dụng
để
truyền
dữ
liệu
hai
chiều
giữa
máy
tính
và
ngoại
vi,
có các
ưu
điểm
sau:
- Khoảng
cách
truyền
xa
hơn
truyền
song
song.
- Số
dây
kết
nối
ít.
- Có
thể
truyền
không
dây
dùng
hồng
ngoại.
- Có
thể
ghép
nối
với
vi
điều
khiển
hay
PLC
(Programmable
Logic
Device).
- Cho
phép
nối
mạng.
- Có
thể
tháo
lắp
thiết
bị
trong
lúc
máy
tính
đang
làm
việc.
- Có
thể
cung
cấp
nguồn
cho
các
mạch
điện
đơn
giản
Các
thiết
bị
ghép
nối
chia
thành
2
loại:
DTE
(Data
Terminal
Equipment)
và
DCE (Data
Communication
Equipment).
DCE
là
các
thiết
bị
trung
gian
như
MODEM
còn
DTE
là các
thiết
bị
tiếp
nhận
hay
truyền
dữ
liệu
như
máy
tính,
PLC,
vi
điều
khiển,
…
Việc
trao
đổi tín
hiệu
thông
thường
qua
2
chân
RxD
(nhận)
và
TxD
(truyền).
Các
tín
hiệu
còn
lại
có
chức năng
hỗ
trợ
để
thiết
lập
và
điều
khiển
quá
trình
truyền,
được
gọi
là
các
tín
hiệu
bắt
tay (handshake).
Ưu
điểm
của
quá
trình
truyền
dùng
tín
hiệu
bắt
tay
là
có
thể
kiểm
soát
đường truyền.
Tín
hiệu
truyền
theo
chuẩn
RS-232
của
EIA
(Electronics
Industry
Associations). Chuẩn
RS-232
quy
định
mức
logic
1
ứng
với
điện
áp
từ
-3V
đến
-25V
(mark),
mức
logic
0 ứng
với
điện
áp
từ
3V
đến
25V
(space)
và
có
khả
năng
cung
cấp
dòng
từ
10
mA
đến
20
mA. Ngoài
ra,
tất
cả
các
ngõ
ra
đều
có
đặc
tính
chống
chập
mạch.
Chuẩn
RS-232
cho
phép
truyền
tín
hiệu
với
tốc
độ
đến
20.000
bps
nhưng
nếu
cáp truyền
đủ
ngắn
có
thể
lên
đến
115.200
bps.
GVHD:Phạm Ngọc Hưng
20
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Các
phương
thức
nối
giữa
DTE
và
DCE:
-
Đơn
công
(simplex
connection):
dữ
liệu
chỉ
được
truyền
theo
1
hướng.
-
Bán
song
công
(
half-duplex):
dữ
liệu
truyền
theo
2
hướng,
nhưng
mỗi
thời
điểm chỉ
được
truyền
theo
1
hướng.
-
Song
công
(full-duplex):
số
liệu
được
truyền
đồng
thời
theo
2
hướng.
Định
dạng
của
khung
truyền
dữ
liệu
theo
chuẩn
RS-232
như
sau:
Start
D0
D1
D2
D3
D4
D5
D6
D7
P
Stop
0 1
Khi
không
truyền
dữ
liệu,
đường
truyền
sẽ
ở
trạng
thái
mark
(điện
áp
-10V).
Khi
bắt
đầu
truyền,
DTE
sẽ
đưa
ra
xung
Start
(space:
10V)
và
sau
đó
lần
lượt
truyền
từ
D0
đến
D7
và
Parity,
cuối
cùng
là
xung
Stop
(mark:
-10V)
để
khôi
phục
trạng
thái
đường
truyền.
Dạng tín
hiệu
truyền
mô
tả
như
sau
(truyền
ký
tự
A):
Các
đặc
tính
kỹ
thuật
của
chuẩn
RS-232
như
sau:
Chiều
dài
cable
cực
đại 15m
Tốc
độ
dữ
liệu
cực
đại 20
Kbps
Điện
áp
ngõ
ra
cực
đại
±
25V
Điện
áp
ngõ
ra
có
tải
±
5V
đến
±
15V
Trở
kháng
tải 3K
đến
7K
Điện
áp
ngõ
vào
±
15V
Độ
nhạy
ngõ
vào
±
3V
GVHD:Phạm Ngọc Hưng
21
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao diện
Khoa Điện-Điện tử
Trở
kháng
ngõ
vào 3K
đến
7K
Các
tốc
độ
truyền
dữ
liệu
thông
dụng
trong
cổng
nối
tiếp
là:
1200
bps,
4800
bps,
9600
bps
và
19200
bps
Sơ đồ chân
Cổng
COM
dạng
đầu
nối
DB9
(9
chân)
mô
tả
như
hình
4.2.
Ý
nghĩa
của
các
chân
mô
tả
như
sau:
D9 Tín
hiệu
Hướng
truyền
Mô
tả
1 - - Protected
ground:
nối
đất
bảo
vệ
3 TxD DTE
DCE Transmitted
data:
dữ
liệu
truyền
2 RxD DCE
DTE Received
data:
dữ
liệu
nhận
7 RTS DTE
DCE Request
to
send:
DTE
yêu
cầu
truyền
dữ
liệu
8 CTS DCE
DTE Clear
to
send:
DCE
sẵn
sàng
nhận
dữ
liệu
6 DSR DCE
DTE Data
set
ready:
DCE
sẵn
sàng
làm
việc
5 GND - Ground:
nối
đất
(0V)
1 DCD DCE
DTE Data
carier
detect:
DCE
phát
hiện
sóng
mang
4 DTR DTE
DCE Data
terminal
ready:
DTE
sẵn
sàng
làm
việc
9 RI DCE
DTE Ring
indicator:
báo
chuông
GVHD:Phạm Ngọc Hưng
22
Trường ĐHSPKT Hưng Yên Đồ án: Ghép nối máy tính và giao
diện
Khoa Điện-Điện tử
2. Truyền thông giữa hai nút
Các
sơ
đồ
khi
kết
nối
dùng
cổng
nối
tiếp:
Tx
D
Rx
D
GN
D
TxD
RxD
GN
D
Tx
D
Rx
D
GN
D
TxD
RxD
GN
D
DTE1 DTE2 DTE DCE
GVHD:Phạm Ngọc Hưng
23
Hình
4.3
–
Kết
nối
đơn
giản
trong
truyền
thông
nối
tiếp
Khi
thực
hiện
kết
nối
như
trên,
quá
trình
truyền
phải
bảo
đảm
tốc
độ
ở
đầu
phát
và thu
giống
nhau.
Khi
có
dữ
liệu
đến
DTE,
dữ
liệu
này
sẽ
được
đưa
vào
bộ
đệm
và
tạo
ngắt.
Ngoài
ra,
khi
thực
hiện
kết
nối
giữa
hai
DTE,
ta
còn
dùng
sơ
đồ
sau:
Tx
D
RxD
GN
D
RTS
TxD
RxD
GN
D
RTS
CTS
DTE1 DTE2
Hình
4.4
–
Kết
nối
trong
truyền
thông
nối
tiếp
dùng
tín
hiệu
bắt
tay
Khi
DTE1
cần
truyền
dữ
liệu
thì
cho
DTR
tích
cực
tác
động
lên
DSR
của
DTE2
cho
biết
sẵn
sàng
nhận
dữ
liệu
và
cho
biết
đã
nhận
được
sóng
mang
của
MODEM
(ảo).
Sau
đó,
DTE1
tích
cực
chân
RTS
để
tác
động
đến
chân
CTS
của
DTE2
cho
biết
DTE1
có
thể nhận
dữ
liệu.
Khi
thực
hiện
kết
nối
giữa
DTE
và
DCE,
do
tốc
độ
truyền
khác
nhau
nên
phải thực
hiện
điều
khiển
lưu
lượng.
Quá
trinh
điều
khiển
này
có
thể
thực
hiện
bằng
phần
mềm hay
phần
cứng.
Quá
trình
điều
khiển
bằng
phần
mềm
thực
hiện
bằng
hai
ký
tự
Xon
và
Xoff.
Ký
tự
Xon
được
DCE
gởi
đi
khi
rảnh
(có
thể
nhận
dữ
liệu).
Nếu
DCE
bận
thì
sẽ
gởi
ký
tự
Xoff.
Quá
trình
điều
khiển
bằng
phần
cứng
dùng
hai
chân
RTS
và
CTS.
Nếu
DTE
muốn truyền
dữ
liệu
thì
sẽ
gởi
RTS
để
yêu
cầu
truyền,
DCE
nếu
có
khả
năng
nhận
dữ
liệu
(đang rảnh)
thì
gởi
lại
CTS.
3. Truy xuất trực tiếp thông qua cổng
Các
cổng
nối
tiếp
trong
máy
tính
được
đánh
số
là
COM1,
COM2,
COM3,
COM4
với các
địa
chỉ
như
sau
Giao
tiếp
nối
tiếp
trong
máy
tính
sử
dụng
vi
mạch
UART
với
các
thanh
ghi
cho
trong
bảng
sau:
Offset DLAB R/W Tên Chức
năng
0
0 W THR Transmitter
Holding
Register
(đệm
truyền)
0 R RBR Receiver
Buffer
Register
(đệm
thu)
1 R/W BRDL Baud
Rate
Divisor
Latch
(số
chia
byte
thấp)
1
0 R/W IER Interrupt
Enable
Register
(cho
phép
ngắt)
1 R/W BRDH Số
chia
byte
cao
2
R IIR Interrupt
Identification
Register
(nhận
dạng
ngắt)
W FCR FIFO
Control
Register
3 R/W LCR Line
Control
Register
(điều
khiển
đường
dây)
4 R/W MCR Modem
Control
Register
(điều
khiển
MODEM)
5 R LSR Line
Status
Register
(trạng
thái
đường
dây)
6 R MSR Modem
Status
Register
(trạng
thái
MODEM)
7 R/W Scratch
Register
(thanh
ghi
tạm)
Tên Địa
chỉ Ngắt Vị
trí
chứa
địa
chỉ
COM1 3F8h 4 0000h:0400h
COM2 2F8h 3 0000h:0402h
COM3 3E8h 4 0000h:0404h
COM4 2E8h 3 0000h:0406h