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 phản biện
………………………………
…
.
NHẬN XÉT CỦA HỘI ĐỒNG
.
.
đè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,
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 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
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ộ
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
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:
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).