BỘ CÔNG THƯƠNG
TRƯỜNG CAO ĐẲNG KỸ THUẬT CAO THẮNG
ĐỒ ÁN TỐT NGHIỆP
Đề Tài:
THIẾT KẾ VÀ THI CÔNG MÔ HÌNH
ĐÈN GIAO THÔNG
GVHD: THƯỢNG VĂN BÉ
SVTH: Lê Văn Lâm
Hồ Thanh Phi
KHOA ĐIỆN TỬ-TIN HỌC
Tp.HCM_Tháng7 Năm 2010
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.
Tp. Hồ Chí Minh, ngày
……
tháng
……
năm 2010
Giáo viên hướng dẫn
Thượng Văn Bé
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
.
Tp. Hồ Chí Minh, ngày
……
tháng
……
năm 2010
Giáo viên phản biện
………………………………
…
.
NHẬN XÉT CỦA HỘI ĐỒNG
.
.
Tp. Hồ Chí Minh, ngày
……
tháng
……
năm 2010
LỜI MỞĐẦU
-" ĐÈN GIAO THÔNG" là thiết bị chuyên dùng trong các trạm đèn giao
thông; và điều đó đồng nghĩa với việc muốn hệ thống giao thông ổn định;
mạch đèn phải hoạt động ổn định. Nhóm chúng em đã khảo sát và tìm hiểu
về vấn đề "Hệ thống đèn giao thông " này và có thểứng dụng vào thực tiễn.
-"MẠCH ĐÈN GIAO THÔNG" hoạt động chủ yếu dựa vào chếđộ làm việc
của VI ĐIỀU KHIỂN Pic 16F877A; là vi điều khiển này có thểđáp ứng
nhiều ứng dụng thực tế quan trọng có thể I/O hoặc điều chếđộ rộng xung;
đọc ADC; truyền đồng bộ hoặc bất đồng bộ
…
.
-Nội dung chủ yếu của đề tài "ĐIỀU KHIỂN HỆ THỐNG ĐÈN GIAO
THÔNG" bao gồm :
- Chương dẫn nhập : Nói về khả năng thực dụng của "Mạch đèn giao
thông"
- Chương 2 : Giới thiệu về pic 16F877A.
- Chương 3: Giới thiệu vềđặc tính các linh kiện được dùng trong
mạch.
- Chương 4: Giới thiệu về LCD
- Chương 5: Giới thiệu về sơđồ mạch điện của hệ thống điều khiển
đèn giao thông.
- Chương kết luận: Tóm tắt đề tài qua khảo sát chi tiết mạch.
-Đề tài được nghiên cứu và thi công dựa vào sự hướng dẫn tận tình của
thầy : THƯỢNG VĂN BÉ đã có nhiều năm kinh nghiệm giảng dạy ở các
trường đại học và cao đẳng, nhóm chúng em trân trọng cảm ơn sự nhiệt
tình hướng dẫn của thầy; để chúng em có thể hoàn thành đồ án.
Nhóm sinh viên thực hành
Khoa: Điện Tử - Tin Học GVHD:Thượng Văn Bé
CHƯƠNG DẪNNHẬP
1.1.ĐẶT VẤN ĐỀ
"Hệ thống điều khiển đèn giao thông " là đề tài được xây dựng thuộc hai
vấn đề cơ bản : các chếđộ làm việc của Vi Điều Khiển 16F877A và khả năng thực dụng,
cũng như tính quan trọng của một hệ thống điều khiển đèn giao thông.
Thực tế Vi Điều khiển Pic 16F877A là một trong những dòng sản phẩm của
Microchip có khả năng ứng dụng thực tế rất cao, có thể chống nhiễu tốt, và đó là một
trong những điều kiện tối ưu để Nhóm chúng em chọn dòng sản phẩm này vào ứng dụng
cho đề tài này.
Một "hệ thống" cần nhất là tính ổn định, hoạt động một cách logic, hoặc khi
gặp sự cố có thể tự khôi phục lại trạng thái ban đầu, cơ bản hơn là khả năng ứng dụng
của hệ thống đó vào thực tế là như thế nào? Từđó chúng ta có thể thấy rõ ứng dụng thực
tế của "hệ thống đèn giao thông" là rất quan trọng vì nó rất quen thuộc với chúng ta
trong đời sống hằng ngày, đặt biệt đối với những người tham gia giao thông. Vấn đề "
quan trọng" là chúng ta có thể thấy rõ, đểđáp ứng được vấn đềđó thì hệ thống cần sựổn
định cao và thậm chí cần tính thông minh….đó là lý do đểNhóm chúng em thực hiện đề tài
này.
1.2.TẦM QUAN TRỌNG CỦA ĐỀ TÀI
Trong cuộc sống hằng ngày, vấn đề giao thông là vấn đề cấp thiết hằng ngày,
đặt ra nhiều vấn đề cho các ngành chức năng như vấn đề ùng tắt giao thông tại các ngã
tư, người tham gia giao thông không tuân thủđúng các tín hiệu đèn tại các trạm giao
thông…chính vì thế dẫn đến nhiều sự cố không thể tránh khỏi và đáng tiết xảy ra cho gia đình,
cũng như cho xã hội.
Xuất phát từ nhu cầu thực tếđó, chúng ta thiết nghĩ cần các giải pháp để giải
quyết một phần nào đó về các nhu cầu thực tế trên.Và "hệ thống đèn giao thông thông
minh" là hết sức cần thiết, nó có thể có những tính năng được cài đặt sẵn đểgiải quyết
những sự cố kịp thời, tránh thời giờ lãng phí trong khi giao thông bị ùng tắt tại các ngã tư.
1.3.GIỚI HẠN ĐỀ TÀI
Do thời gian có hạn nên Nhóm chúng em chỉ khảo sát trong phạm vi là tìm
hiểu và thiết kế mạch từ mạch nguyên lý.
Quan sát một số chếđộ hoạt động của hệ thống đã được cài đặt sẵn. Các tính
năng ứng dụng của một số chếđộ vào nhu cầu thực tế. Khảo sát khả năng
làm việc ổn định của Pic 16F877A.
Đánh giá ưu điểm, khuyết điểm và hướng phát triển của đề tài ở phạm vi khác.
SVTH: Lê Văn Lâm - Hồ Thanh Phi 4
Khoa: Điện Tử - Tin Học GVHD:Thượng Văn Bé
1.4.MỤC ĐÍCH ĐỀ TÀI
Nhóm sinh viên thực hiện chọn đề tài này với các mục đích sau:
Củng cố và vận dụng các kiến thức đã học vào thực tế.
Tìm hiểu và ứng dụng kiến thức chuyên môn về lĩnh vực ứng dụng thực tiễn.
Nghiên cứu vi điều khiển PIC 16F877A.
Nghiên cứu cách làm việc của LCD 8 bit cũng như 4 bit.
Thiết kế và thi công mô hình hệ thống đèn giao thông. Nghiên
cứu ngôn ngữ lập trình CCS.
Trong ứng dụng xa hơn ởđề tài "hệ thống đèn giao thông này" chúng ta có thể
thiết kế cho hệ thống giao tiếp với máy tính, tăng khả năng điều khiển từ xa đến hệ thống,
bám sát thực tếđể thiết kế những tính năng mới và phù hợp với nhiều nhu cầu hơn.
Những từđược dùng trong quyển báo cáo này :
Manual Control : điều khiển bằng tay.
RUNNING MODEL 1 (2) : đang chạy trong chếđộ 1 (2). Cst
(beaconing station): trạm báo hiệu. R (RED) : đỏ (đèn đỏ).
Y (YELLOW) : vàng (đèn vàng).
G (Gr) (GREEN): xanh lá (đèn xanh).
SVTH: Lê Văn Lâm - Hồ Thanh Phi 5
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
CHƯƠNG
2
GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC 16F877A
2.1.SƠ LƯỢC VỀ VI ĐIỀU KHIỂN PIC 16F877A:
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng, 40
chân,bộ nhớđủ cho hầu hết các ứng dụng thông thường). Cấu trúc tổng quát của
PIC 16F877A như sau: +8 K
Flash ROM. +368 Bytes RAM.
+256 Bytes EEPROM.
+5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập. +2
bộđịnh thời 8 bits (Timer 0 và Timer 2).
-Một bộđịnh thời 16 bits (Timer 1) có thể hoạt động trong chếđộ tiết kiệm năng lượng
(SLEEP MODE) với nguồn xung Clock ngoài. +2 bô CCP( Capture / Compare/ PWM).
+1 bộ biến đổi AD 10 bits, 8 ngõ vào. +2 bộ
so sánh tương tự (Compartor).
+1 bộđịnh thời giám sát (WatchDog Timer).
-Một cổng song song 8 bits với các tín hiệu điều khiển. -Một
cổng nối tiếp. -15 nguồn ngắt.
-Có chếđộ tiết kiệm năng lượng.
-Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial Programming)
-Được chế tạo bằng công nghệ CMOS -35 tập
lệnh có độ dài 14 bits.
-Tần số hoạt động tối đa 20MHz.
2.2. SƠ LƯỢC VỀ HÌNH DẠNG CHÂN CỦA PIC16F877A:
SVTT: Lê Văn Lâm - Hồ Thanh Phi 6
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Hình 2.1: Các dạng sơđồ chân của pic 16F877A
SVTT: Lê Văn Lâm - Hồ Thanh Phi 7
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Hình 2.2: Sơđồ khối củapic 16F877A
SVTT: Lê Văn Lâm - Hồ Thanh Phi 8
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
2.3.TỔ CHỨC BỘ NHỚ
Cấu trúc bộ nhớ của Vi Điều Khiển PIC 16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory).
2.3.1.Bộ Nhớ chương Trình
Bộ nhớ chương trình của pic 16F877A là bộ nhớ flash, dung lượng bộ nhớ 8k
word (1 word = 14bit) và được phân thành nhiều trang (từ page 0 đế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ì 1 lệnh sau khi mã
hoá sẽ có dung lượng 1 word (14bit).
Khi vi điều khiển được reset, bộđếm chương trình sẽ chỉđến địa chỉ 0000h (Reset
vector).Khi có ngắt xảy ra, bộđếm chương trình sẽ chỉđến địa chỉ 0004h (Interrupts vector).
Bộnhớ chương không bao gồm bộ nhớ stack và không được địa chỉ hoá bởi bộđếm
chương trình.
Hình 2.3: Bộ nhớ chương trình PIC 16F877A
2.3.2.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
PIC 16F877a bộ nhớ dữ liệu được làm 4 bank. Mỗi bank có dung lượng 128byte, 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
SVTT: Lê Văn Lâm - Hồ Thanh Phi 9
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
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ộ 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.Sơđồ cụ thể như sau:
Hình 2.4: Bộ nhớ dữ liệu PIC 16F877A
SVTT: Lê Văn Lâm - Hồ Thanh Phi 10
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
2.3.2.1.Thanh Ghi Chức Năng Đặc Biệt SFR
Đây là thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điều
khiển các khối chức năng được tích hợp bên trong vi điều khiển.Có thể phân thanh ghi
SFR làm hai loại: thanh ghi SFR lien quan đến các chức năng bên trong CPU và thanh
ghi SFR dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví dụ
như ADC,PWM ).Một số thanh ghi SFR như sau:
Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả thự hiện
phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ
nhớ dữ liệu.
Thanh ghi OPTION-REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho
phép điều khiển chức năng pull-up củ các chân trong PORTB, xác lập các tham số về
xung tác động, cạnh tác động của ngắt ngoại vi và bộđếm Timer0.
Thanh ghi INTCON (0Bh, 8Bh, 10Bh, 18Bh): thanh ghi cho phép đọc ghi, chức
các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT và ngắt
interrupt-on-change tại các chân của PORTB.
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của khối chức
năng ngoại vi.
Thanh ghi PIR1 (0Ch): chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt
này được phép bởi các bit điều khiển chứa trong thanh ghi PIE1.
SVTT: Lê Văn Lâm - Hồ Thanh Phi 11
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng
CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM.
Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi,
các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2.
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chếđộ reset của
vi điều khiển.
2.3.2.2.Thanh ghi mục đích chung GPR
Các thanh ghi này có thểđược truy xuất trực tiếp hoặc gián tiếp thong qua thanh
ghi FSG (File Select Register).Đây là các thanh ghi dữ liệu thông thường, người sửdụng
có thể tuỳ theo mục đích chương trình mà có thể dùng các thanh ghi này đểchứa các
biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình.
2.4.CÁC CỔNG XUẤT NHẬP CỦA PIC 16F877A
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương
tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua quá trình tương
tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.
Vi điều khiển PIC 16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB,
PORTC, PORTD, PORTE.
2.4.1. Port A và thanh ghi TRISA
PORTA gồm 6 chân từ RA0 đến RA5.Việc ghi giá trị vào thanh ghi TRISA sẽ
qui định các chân của Port A là input hay output (nếu là 1 thì là input, là output nếu là
0).Việc đọc thanh ghi Port A sẽđọc trạng thái của các chân ở Port A.Việc ghi giá trị vào
thanh ghi Port A sẽ thay đổi trạng thái của các chân Port A.Riêng chân RA4 được tích
hợp chức năng là chân cung cấp xung clock ngoài cho Timer 0 (RA4/T0CKI). Những
chân khác của Port A được đa hợp với các chân ngõ vào Analog của ADC và chân ngõ
vào điện thế so sánh của bộ so sánh Comparator. Hoạt động của những chân này được
quy định bằng những bit tương ứng trong các
SVTT: Lê Văn Lâm - Hồ Thanh Phi 12
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
thanh ghi ADCCON1 và CMCON1.Khi các chân của Port A được sử dụng làm ngõ vào
Analog thì các bit trong thanh ghi TRISA phải được set bằng 1.
Hình 2.5: Cấu trúc bên trong của PORTA
Hình 2.6: Cấu trúc bên trong của thanh ghi TrisA
SVTT: Lê Văn Lâm - Hồ Thanh Phi 13
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Bảng 2.1:Chức năng của PORTA
Chú ý:
Các thanh ghi SFR liên quan đến PORTA bao gồm:
PORTA (địa chỉ 05h): chứa giá trị các pin trong PORTA.
TRISA (địa chỉ 85h): điều khiển xuất nhập.
CMCON (địa chỉ 9Ch): thanh ghi điều khiển bộ so sánh.
ADCON1(địa chỉ 9Fh): thanh ghi điều khiển bộ ADC.
CVRCON (địa chỉ 9Dh): thanh ghi điều chỉnh bộ so sánh điện áp.
2.4.2.PORTB và Thanh Ghi TRISB
Port B gồm 8 chân từ chân RB0-RB7. Việc ghi giá trị vào thanh ghi TRISB sẽ
quy định các chân của Port B là input hay output (1: input, 0: output). Việc đọc thanh
ghi Port B sẽđọc trạng thái của các chân ở Port B. Việc ghi giá trị vào thanh ghi Port B
sẽ thay đổi trạng thái của các chân Port B.
Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và Low Voltage
Programming function: RB3/PGM, RB6/PGC, RB7/PGD. Mỗi chân Port B có một
transistor kéo lên Vdd. Chức năng này hoạt động khi bit RBPU (Option <7>) được xóa.
Chức năng này sẽ tựđộng được xóa khi Port B được quy định là iput.Bốn chân của Port
B từ RB7 đến RB4 có chức năng ngắt khi trạng thái chân Port B thay đổi (Khi Port B
được quy định là output thì chức năng này không hoạt động. Giá trị chân của Port được
so sánh với giá trịđã được lưu trước đó, khi có sựsai lệch giữa 2 giá trị này ngắt sẽ xảy ra
với cờ ngắt RBIF (INTCON<0) sẽ bật lên. Ngắt có thể làm cho VĐK thoát khỏi trạng
thái SLEEP.
Bất cứ sự truy xuất nào trên PortB sẽ xóa trạng thái sai lệch, kết thúc ngắt và cho phép
xóa cờ ngắt RBIF.
SVTT: Lê Văn Lâm - Hồ Thanh Phi 14
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Hình 2.6: Cấu trúc bên trong của PORTB từ RB0 - RB7
Bảng 2.2: Chức năng của PORTB
Chú ý:
Các thanh ghi SFR liên quan đến PORTB bao gồm:
PORTB (địa chỉ 06h, 106h): chứa giá trị các pin trong PORTB.
TRISB (địa chỉ 86h, 186h): điều khiển xuất nhập.
OPTION_REG (địa chỉ 81h, 181h): điều khiển ngắt ngoại vi và bộ
Timer0.
SVTT: Lê Văn Lâm - Hồ Thanh Phi 15
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
2.4 3. PORTC và Thanh Ghi TRISC
Port C gồm 8 chân từ chân RC0-RC7. Việc ghi giá trị vào thanh ghi TRISC sẽ
quy định các chân của Port C là input hay output (1: input, 0: output). Việc đọc thanh
ghi Port C sẽđọc trạng thái của các chân ở Port C. Việc ghi giá trị vào thanh ghi Port C
sẽ thay đổi trạng thái của các chân Port C.
Các chân của Port C được đa hợp với các chức năng ngoại vi.
Khi các chức năng ngoại vi được cho phép ta cần quan tâm chặt chẽ tới giá trị các bit
của thanh ghi TRISC. Một số chức năng ngoại vi sẽ ghi đè giá trị 0 lên các bit của thanh
ghi TRISC và mặc định các chân này là output, ngoài ra một số chức năng ngoại vi khác
sẽ tựđộng mặc định một số chân là ngõ vào. Do đó cần xem xét kĩ các tính năng của các
hàm ngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC cho thích hợp.
Hình 2.7:Cấu trúc của chân RC3,
RC4.
Hình 2.8:Cấu trúc của chân RC0-
RC2, RC5-RC7.
SVTT: Lê Văn Lâm - Hồ Thanh Phi 16
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Bảng 2.3: Chức năng PORTC
Chú ý:
Các thanh ghi SFR liên quan đến PORTC bao gồm:
PORTC (địa chỉ 07h): chứa giá trị các pin trong PORTC.
TRISC(địa chỉ 87h): điều khiển xuất nhập.
2.4.4. PORTD và Thanh Ghi TRISD
Port D gồm 8 chân từ chân RD0-RD7. Bên cạnh chức năng là port xuất nhập,
Port D còn có thể hoạt động như một cổng song song bằng cách set bit PSPMODE
(TRISE<4>), trong chếđộ này buffer ngõ vào là TTL.
Hình 2.9: Cấu trúc bên trong của PORTD
SVTT: Lê Văn Lâm - Hồ Thanh Phi 17
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Bảng 2.4: Chức năng của PORTD
Chú ý:
Các thanh ghi SFR liên quan đến PORTD bao gồm:
PORTD (địa chỉ 08h): chứa giá trị các pin trong PORTD.
TRISD(địa chỉ 88h): điều khiển xuất nhập.
2.4.5. PORTE và Thanh Ghi TRISE
Port E có 3 chân RE0 /RD/AN5, RE1/WR /AN6, RE2 /CS/AN7, có thểđược cấu
hình như các chân xuất nhập thông thường.
Các chân của Port E có thể trở thành các chân điều khiển cho cổng song song của VĐK
khi bit PSPMODE (TRISE<4>) được set bằng 1. Trong chếđộ này, người sử dụng phải
đảm bảo các chân của PortE là ngõ vào.
Ngoài ra các chân Port E còn có thểđược cấu hình như các ngõ vào Analog, tại
chếđộ này, khi đọc giá trị của các chân này sẽ cho ta giá trị là 0.
Thanh ghi TRISE quy định chức năng xuất nhập của Port E ngay cả khi nó được sử
dụng như các ngõ vào Analog. Phải đảm bảo các chân này được quyđịnh là ngõ vào
trong chếđộ này.
Hình 2.10: Cấu trúc bên trong của PORTE
SVTT: Lê Văn Lâm - Hồ Thanh Phi 18
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Bảng 2.5: Chức năng của PORTE
2.5.BỘĐỊNH THỜI TIMER 0
Đây lả một trong ba bộđếm hoặc bộđịnh thời của vi điều khiển PIC
16F877A.Timer0 là bộđếm 8bit được kết nối với bộ chia tần số (prescaler) 8bit.Cấu trúc
của Timer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock.
Ngắt Timer0 sẽ xuất hiện khi Timer0 bị tràn.Bit TMR0IE (INTCON<5>) là bit điều
khiển của Timer 0, TMR0IE =1 cho phép ngắt Timer0 tác động, TMR0IF =0
không cho phép ngắt Timer0 tác động.Sơđồ khối của Timer0 như sau:
Hình 2.11: Sơđồ khối của Timer 0
SVTT: Lê Văn Lâm - Hồ Thanh Phi 19
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Muốn Timer0 hoạt động ở chếđộ Timer ta clear bit TOSC
(OPTION_REG<5>), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kỳ xung đồng
hồ (tần số vào Timer0 bằng ¼ tần số Oscillator).Khi giá trị thanh ghi TMR0 từFFh trở về
00h, ngắt Timer0 sẽ xuất hiện.Thanh ghi TMR0 cho phép ghi và xoá được giúp ta ấn
định được thời điểm ngắt của Timer0 xuất hiện một cách linh động.
Muốn Timer 0 hoạt động ở chếđộ counter ta set bit TOSC
(OPTION_REG<5>).Khi đó xung tác động lên bộđếm được lấy từ chân
RA4/TOCK1.Bit TOSE (OPTION_REG<4>) cho phép lựa chọn cạnh tác động vào
bộđếm.Cạnh tác động sẽ là cạnh lên nếu TOSE =0 và ngược lại là TOSE =1.
Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON <2>) sẽđược set.Đây chính là
cờ ngắt của Timer0.Cờ ngắt này phải được xoá bằng chương trình trước khi bộđếm bắt
đầu thực hiện lại quá trình đếm.Ngắt Timer0 không thểđánh thức vi điều khiển từ chếđộ
sleep.
Bộ chia tần số (prescaler) được chia sẻ giữa Timer0 và WDT (Watchdog
Timer).Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽ không
có được hỗ trợ của prescaler và ngược lại.Prescaler được điều khiển bởi thanh ghi
OPTION_REG.Bit PSA (OPTION_REG <3>) xác định đối tượng tác động của
prescaler.Các bit PS2:PS0 (OPTION_REG <2:0>) xác định tỉ số chia tần số của
prescaler.
Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xoá chếđộ hoạt động của
prescaler.Khi đối tượng tác động là Timer0 tác động lên giá trị thanh ghi TMR0 sẽxoá
prescaler nhưng không làm thay đổi đối tượng tác động của prescaler.Khi đối tượng tác
động là WDT, lệnh CLRWDT sẽ xoá prescaler, đồng thời prescaler sẽngưng tác vụ hỗ
trợ cho WDT.
Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:
TMR0 (địa chỉ 01h, 101h): chứa giá trịđếm của Timer0.
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động.
OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler.
2.6.BỘĐỊNH THỜI TIMER 1
Timer1 là bộđịnh thời 16bit, giá trị của Timer1 sẽđược lưu trong hai thanh ghi
(TMR1H:TMR1L).Cờ ngắt của Timer1 là bit TMR1IF (PIR1<0>).Bit điều khiển của
Timer1 sẽ là TMR1IE (PIE<0>).
Tương tự như Timer0,Timer 1 cũng có hai chếđộ hoạt động: chếđộđịnh thời (timer)
với xung kích là xung clock của oscillator (tần số của timer bằng ¼ tần sốcủa oscillator)
và chếđộđếm (counter với xung kích là xung phản ánh các sự kiện cần đếm lấy từ bên
ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnh lên).Việc lựa chọn
xung tác động (tương ứng với việc lựa chọn chếđộ hoạt động là timer hay counter)
được điều khiển bởi bit TMR1CS (T1CON<1>).Sau
đây là sơđồ khối của Timer1:
SVTT: Lê Văn Lâm - Hồ Thanh Phi 20
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
Hình 2.12: Sơđồ khối của Timer 1
Ngoài ra Timer1 còn có chức năng reset input bên trong được điều khiển bới một trong
hai khối CCP (Capture/Compare/PWM).
Khi bit T1OSCEN (T1CON <3>)được set, Timer1 sẽ lấy xung clock từ hai chân
RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đếm.Timer1 sẽ bắt đầu dếm sau
cạnh xuống đầu tiên của xung ngõ vào.Khi đó PORTC sẽ bỏ qua sự tác động của hai
bit TRISC<1:0> và PORTC <2:1>được gán giá trị 0.Khi clear bit T1OSCEN Timer1
sẽ lấy xung đếm từ Oscillator hoặc từ chân RC0/T1OSO/T1CKI.
Timer1 có hai chếđộđếm là đồng bộ (Synchrobous) và bất đồng bộ
(Asynchronous).Chếđộđếm được quyết định bởi bit điều khiển (T1CON<2>).
Khi T1CON<2> 1 xung đếm lấy từ bên ngoài sẽ không được đồng bộ hoá với xung
clock bên trong,Timer1 sẽ tiếp tục quá trình đếm khí vi điều khiển ở chếđộ sleep và
ngắt do Timer1 tạo ra khi bị tràn có khả năng đánh thức vi điều khiển.Ởchếđộđếm bất
đồng bộ, Timer1 không thểđược sử dụng để làm nguồn xung clock cho khối CCP.
Khi T1CON <2> 0 xung đếm vào Timer1 sẽđược đồng bộ hoá với xung clock
bên trong. Ở chếđộ này Timer1 sẽ không hoạt động khi vi điều khiển ở chếđộ sleep.
Các thanh ghi liên quan đến Timer1 bao gồm:
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): Cho phép ngắt hoạt động.
PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF).
PIE1 (địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE).
TMR1L (địa chỉ 0Eh): chứa giá trị 8bit thấp của bộđếm Timer1.
TMR1H (địa chỉ 10h): xác lập các thông số cho Timer1.
SVTT: Lê Văn Lâm - Hồ Thanh Phi 21
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
2.7.BỘĐỊNH THỜI TIMER 2
Timer2 là bộđịnh thời 8bit và được hỗ trợ bởi hai bộ chia tần số prescaler và
postscaler.Thanh ghi chứa giá trịđếm của Timer2 là TMR2.Bit cho phép ngắt Timer2
tác động là TMR2ON (T2CON<2>).Cờ ngắt của Timer2 là bit TMR2IF
(PIR1<1>).Xung ngõ vào (tần số ¼ oscillator) được đưa qua bộ chia tần sốprescaler
4bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc 1:16 và được điều khiển bởi
các bit T2CKPS1:T2CKPSO (T2CON<1:0>). Sau đây là sơđồ khối của Timer2:
Hình 2.13: Sơđồ khối của Timer 2
Timer2 còn được hỗ trợ bởi thanh ghi PR2.Giá trịđếm trong thanh ghi TMR2 sẽtăng
từ 00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset về 00h.Khi reset thanh ghi
PR2 được nhận giá trị mặc định FFh.
Ngõ ra của Timer2 được đưa qua bộ chia tần số postscaler với các mức chia từ 1:1
đến 1:16.Postscaler được điều khiển bởi 4bit T2OUTPS3:T2OUTPS0.Ngõ ra của
postscaler đóng vai trò quyết định trong việc điều khiển cờ ngắt.
Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó Timer2 còn đóng
vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP.
Các thanh ghi liên quan đến Timer2 bao gồm:
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): Cho phép ngắt hoạt động.
PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF).
PIE1 (địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE).
TMR2 (địa chỉ 11h):chứa giá trịđếm của Timer2.
T2CON (địa chỉ 12h): xác lập các thông số cho Timer2. PR2
(địa chỉ 92h): thanh ghi hỗ trợ Timer2.
2.8.SỰ CHUYỂN ĐỔI ADC.
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạng
tương tư và số.PIC 16f877A có 8 ngõ vào analog (RA0:RA4 và RE0:RE2).Hiệu
SVTT: Lê Văn Lâm - Hồ Thanh Phi 22
Khoa: Điện Tử-Tin Học GVHD: Thượng Văn Bé
điện thế chuẩn V
REF
có thểđược lựa chọn là V
DD
, V
SS
hay hiệu điện thế chuẩn được xác lập
trên chân RA2 và RA3.Kết quả của sự chuyển đổi từ tín hiệu tương tự sang
tín hiệu số là 10bit số tương ứng và được lưu trong hai thanh ghi
ADRESH:ADRESL.Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này có
thểđược sử dụng như các thanh ghi thông thường khác.Khi quá trình chuyển đổi hoàn
tất, kết quả sẽđược lưu vào hai thanh ghi ADRESh:ADRESL, bit (ADCON0<2>)
được xoá về 0 và cờ ngắt ADIF được set.
Qui trình chuyển đổi từ tương tự sang số bao gồm:
Bước 1: Cấu hình cho module ADC.
Cấu hình cho các chân ngõ vào điện thế chuẩn và I/O số (ADCON1). Lựa
chọn kênh ngõ vào AD (ADCON0). Lựa chọn tần số chuyển đổi
(ADCON0). Cấp nguồn cho module ADC (ADCON0).
Bước 2: Cấu hình các ngắt ADC (nếu cần).
Xoá cờ ngắt ADIF.
Set bit GIE (cho phép ngắt toàn cục).
Set bit ADIE (cho phép ngắt chuyển đổi ADC).
Bước 3:Đợi thời gian Acquisition (lấy mẫu ) cần thiết.
Bước 4:Đọc kết quả trong 2 thanh ghi ADRESH và ADRESL, xoá bit ADIF (nếu cần
thiết).
Bước 5:Đợi quá trình ADC hoàn tất.
Chạy vòng lập đợi bit GO/DONE bị xoá hoặc cờ ngắt ADIF bật lên.
Bước 6:Bắt đầu quá trình chuyển đổi ADC.
Set bit GO/DONE (ADCON <0>).
Bước 7:Nếu muốn tiếp tục thực hiện chuyển đổi ADC trong chu kỳ kế tiếp thì quay lại
bước 1 và bước 2.
Hình 2.14: Sơđồ khối bộ chuyển đổi ADC
SVTT: Lê Văn Lâm - Hồ Thanh Phi 23