Tải bản đầy đủ (.docx) (31 trang)

Thiết kế và xây dựng hệ thống điều khiển giao thông

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 (970.07 KB, 31 trang )

BÀI BÁO CÁO
Môn: Thực hành điều khiển và vi xử lý
ĐỀ TÀI: “Thiết kế và xây dựng hệ thống điều khiển giao thông”
Lớp : CNVTK9A
Giảng viên hướng dẫn: Nguyễn Thế Dũng
1
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
KHOA CÔNG NGHỆ ĐIỆN TỬ VÀ TRUYỀN THÔNG

MỤC LỤC
LỜI NÓI ĐẦU
Ngày nay, sự phát triển của ngành kỹ thuật số đã và đang có tầm ảnh hưởng lớn
đến ngành kinh tế toàn cầu. Nhờ có ưu điểm của xử lý số như độ tin cậy trong truyền dẫn,
tính đa thích nghi và kinh tế của nhiều phần mềm khác nhau, tính tiện lợi trong điều
khiển và khai thác mạng cho nên số hóa đang là xu hướng phát triển tất yếu của nhiều
lĩnh vực kỹ thuật và kinh tế khác nhau. Không chỉ trong lĩnh vực thông tin liên lạc và
trong tin học, ngày nay kỹ thuật số đã và đang thâm nhập mạnh mẽ vào Kỹ thuật điện tử,
phát thanh truyền hình, y tế…và ngay cả trong các đồ dùng sinh hoạt gia đình.
Ngay từ những ngày đầu của sự phát triển, kỹ thuật số nói riêng và ngành điện tử
nói chung đã tạo ra nhiều bước đột phá mới cho các ngành kinh tế và đảm bảo được yêu
cầu của người dùng cả về chất lượng và dịch vụ. Với sự phát triển mạnh mẽ đó, là những
sinh viên điện tử thì kiến thức về kỹ thuật số là không thể thiếu đối với mỗi sinh viên. Vì
thế việc học hỏi, nghiên cứu kiến thức về chuyên môn là việc làm rất cần thiết với sinh
viên đặc biệt là tăng cường nghiên cứu, tạo ra các sản phẩm thực tế ứng dụng trong đời
sống thường ngày.
Ngày nay, hệ thống giao thông nước ta rất phức tạp và rối ren.Vì vậy việc sử dụng
đèn giao thông tại các giao lộ là rất cần thiết. Để hiểu rõ hơn về nguyên lý hoạt động
chúng em tiến hành thực hiện đề tài : Thiết kế và xây dựng hệ thống điều khiển giao thông.
Nội dung của bài báo cáo gồm các nội dung chính sau:
 Lời nói đầu
 Chương 1: Phân tích yêu cầu của thiết kế và các giải pháp đưa ra để thực hiện


 Chương 2: Thiết kế hệ thống
2
 Chương 3: Xây dựng hệ thống
 Kết luận và hướng phát triển hoàn thiện đề tài
3
CHƯƠNG I: PHÂN TÍCH HỆ THỐNG
1.1.GIỚI THIỆU HỆ THỐNG MẠCH ĐIỀU KHIỂN ĐÈN GIAO THÔNG.
1.1.1. Ý tưởng thiết kế hệ thống điều khiển đèn giao thông.
Hệ thống đèn giao thông hoạt động theo các chế độ trong ngày: giờ cao điểm, bình
thường và thấp điểm. Tuy nhiên, trong hệ thống thiết kế của chúng em chỉ thiết kế ở chế
độ bình thường và hiển thị thời gian trên LED 7 đoạn.
-Bình thường: Đèn xanh 30s, đèn đỏ 27s, đèn vàng 3s.
-Có 4 LED 7 đoạn đơn: 2 LED hiển thị đếm ngược cho 1 làn đường.
-Hệ thống LED đơn hiển thị cho các đèn xanh, đèn đỏ, đèn vàng.
-Hệ thống nút nhấn để reset mạch.
1.1.2. Yêu cầu của mạch điều khiển giao thông
- Mạch phải đơn giản, dễ thiết kế, dễ lắp đặt, dễ dàng sửa chữa.
- Mạch phải chạy ổn định, chính xác và dễ vận hành.
-Chi phí để thiết kế phải rẻ.
1.2.CÁC GIẢI PHÁP VÀ XÁC ĐỊNH BÀI TOÁN
a. Xác định bài toán
Mô hình đèn giao thông gồm có:
 Khối vi xử lý: Mạch xử lý với vi điều khiển pic 16F877A làm nhiệm vụ xử
lí chính, bộ nguồn cung cấp điện áp 5VDC.
 Khối hiển thị: Khối này gồm
-LED đơn: hiện thị tín hiệu đèn giao thông.
-LED 7 đoạn: Hiển thị thời gian sáng của đèn.
 Khối nguồn: Cung cấp điện áp 5V DC
 Khối giải mã:
b. Giới hạn của đề tài

Mạch thực hiện chỉ chạy được một chế độ, chưa mở rộng được các chế độ theo
yêu cầu của người sử dụng.
4
CHƯƠNG II: THIẾT KẾ HỆ THỐNG
2.1. SƠ ĐỒ KHỐI CỦA HỆ THỐNG
Hình: Sơ đồ khối hệ thống đèn giao thông
• Khối hiển thị: Hiển thị chính xác thời gian trên LED 7 đoạn và tín hiệu đèn giao
thông trên led đơn.
• Khối điều khiển trung tâm: Điều khiển mọi sự hoạt động theo giờ của hệ thống
đèn tín hiệu giao thông.
• Khối nguồn:
2.2. SƠ ĐỒ ĐẶC TẢ CỦA HỆ THỐNG
5
KHỐI
HIỂN THỊ
KHỐI MÃ
HÓA
KHỐI ĐIỀU
KHIỂN
KHỐI NGUỒN
Đèn đỏ 1 sáng
Đèn xanh 2 sáng
Các đèn vàng 1, đỏ 1, đỏ
2, vàng 2 đều tắt
Đèn vàng 1 sáng
Đèn đỏ 2 sáng
Các đèn vàng 2, đỏ 1,
xanh1, vàng 2 đều tắt
Đèn đỏ1 sáng
Đèn vàng 2 sáng

Các đèn vàng 1, đỏ 2,
xanh2, vàng 2 đều tắt
Đèn xanh 1 sáng
Đèn đỏ 2 sáng
Các đèn vàng 1, đỏ 1,
xanh2, vàng 2 đều tắt
2.3. CÁC MODULE TRONG HỆ THỐNG
2.3.1. Module điều khiển trung tâm
Sử dụng vi điều khiển PIC 16F877A
6
2.3.2 Module khối hiển thị
Khối hiển thị có chức năng đưa ra thông tin hiển thị tương ứng với trạng thái hiện
thời của hệ thống. Khối này gồm 2 phần: đèn hiển thị tín hiệu giao thông và đồng hồ.
Đèn hiển thị tín hiệu đèn giao thông bao gồm: Đèn dành cho các phương tiện tham
gia giao thông: xanh, đỏ, vàng.
Đồng hồ dùng các LED 7 thanh để tạo thành các bộ hiển thị từ 00-99.Ở đây ta
dùng loại cathode chung (phù hợp với IC 74LS274).
7
2.3.3 Module khối dao động.
Trong khối này sử dụng thạch anh để tạo xung nhịp dao động ổn định dao động
của PIC 16F877A. Khối tạo dao động có nhiệm vụ đồng bộ hóa hoạt động của tất cả các
mạch bên trong vi điều khiển. Mỗi loại vi điều khiển cần có số chu kì khác nhau để thực
hiện lệnh. Đầu vào của bộ dao động thạch anh được nối với chân 13 của vi điều khiển,
đầu ra được nối với chân 14.
8
2.4. LỰA CHỌN LINH KIỆN
2.4.1 Vi điều khiển PIC 16F877A
a. Sơ đồ PIC 16F877A
Sơ đồ chân của vi điều khiển PIC 16F877A: 40 pins, 5 cổng vào ra số RA, RB,
RC, RD, RE.

Hình: Sơ đồ chân vi điều khiển PIC 16F877A
PIC16F877A có 40/44 chân với sự phân chia cấu trúc như sau :
+ Có 5 port xuất/nhập
+ Có 8 kênh chuyển đổi A/D 10-bit
+ Có 2 bộ PWM
+ Có 3 bộ định thời: Timer0, timer1 và timer2
+ Có giao tiếp truyền nối tiếp: chuẩn RS 232, I2C…
+ Có giao tiếp LCD
9
Chức năng các chân:
Chân Tên Chức năng
1 /V
PP
- : Hoạt động Reset ở mức thấp
- V
PP
: ngõ vào áp lập trình
2 RA0/AN0
- RA0 : xuất/nhập số
- AN0 : ngõ vào tương tự
3 RA1/AN1
- RA1 : xuất/nhập số
- AN1 : ngõ vào tương tự
4 RA2/AN2/V
REF-
/CV
REF
- RA2 : xuất/nhập số
- AN2 : ngõ vào tương tự
- V

REF -:
ngõ

vào điện áp chuẩn (thấp) của bộ A/D
5 RA3/AN3/V
REF+
- RA3 : xuất/nhập số
- AN3 : ngõ vào tương tự
- V
REF+
: ngõ vào điện áp chuẩn (cao) của bộ A/D
6 RA4/TOCKI/C1OUT
- RA4 : xuất/nhập số
- TOCKI : ngõ vào xung clock bên ngoài cho timer0
- C1 OUT : Ngõ ra bộ so sánh 1
7 RA5/AN4/ /C2OUT
- RA5 : xuất/nhập số
- AN4 : ngõ vào tương tự 4
- SS : ngõ vào chọn lựa SPI phụ
- C2 OUT : ngõ ra bộ so sánh 2
8 RE0/ /AN5
- RE0 : xuất nhập số
- RD : điều khiển việc đọc ở port nhánh song song
- AN5 : ngõ vào tương tự
9
RE1/ /AN6
- RE1 : xuất/nhập số
- WR : điều khiển việc ghi ở port nhánh song song
- AN6 : ngõ vào tương tự
10

RE2/ /AN7
- RE2 : xuất/nhập số
- CS : Chip lựa chọn sự điều khiển ở port nhánh
song song
- AN7 : ngõ vào tương tự
11 V
DD
Chân nguồn của PIC.
12 V
SS
Chân nối đất
13 OSC1/CLKI
Ngõ vào dao động thạch anh hoặc xung clock bên
ngoài.
- OSC1 : ngõ vào dao động thạch anh hoặc xung
clock bên ngoài. Ngõ vào Schmit trigger khi được
cấu tạo ở chế độ RC ; một cách khác của CMOS.
10
- CLKI : ngõ vào nguồn xung bên ngoài. Luôn được
kết hợp với chức năng OSC1.
14 OSC2/CLKO
Ngõ vào dao động thạch anh hoặc xung clock
- OSC2 : Ngõ ra dao động thạch anh. Kết nối đến
thạch anh hoặc bộ cộng hưởng.
- CLKO : ở chế độ RC, ngõ ra của OSC2, bằng tần số
của OSC1 và chỉ ra tốc độ của chu kỳ lệnh.
15 RC0/T1 OCO/T1CKI
- RC0 : xuất/nhập số
- T1OCO : ngõ vào bộ dao động Timer 1
- T1CKI : ngõ vào xung clock bên ngoài Timer 1

16 RC1/T1OSI/CCP2
- RC1 : xuất/nhập số
- T1OSI : ngõ vào bộ dao động Timer 1
- CCP2 : ngõ vào Capture 2, ngõ ra compare 2, ngõ
ra PWM2
17 RC2/CCP1
- RC2 : xuất/nhập số
- CCP1 : ngõ vào Capture 1, ngõ ra compare 1, ngõ
ra PWM1
18 RC3/SCK/SCL
- RC3 : xuất/nhập số
- SCK : ngõ vào xung clock nối tiếp đồng bộ/ngõ ra
của chế độ SPI
- SCL : ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra
của chế độ I2C
19 RD0/PSP0
- RD0 : xuất/nhập số
- PSP0 : dữ liệu port nhánh song song
20 RD1/PSP1
- RD1 : xuất/nhập số
- PSP1 : dữ liệu port nhánh song song
21 RD2/PSP2
- RD2 : xuất/nhập số
- PSP2 : dữ liệu port nhánh song song
22 RD3/PSP3
- RD3: xuất/nhập số
- PSP3 : dữ liệu port nhánh song song
23 RC4/SDI/SDA
- RC4 : xuất/nhập số
- SDI : dữ liệu vào SPI

- SDA : xuất/nhập dữ liệu vào I2C
24 RC5/SDO
- RC5 : xuất/nhập số
- SDO : dữ liệu ra SPI
25 RC6/TX/CK
- RC6 : xuất/nhập số
- TX : truyền bất đồng bộ USART
- CK : xung đồng bộ USART
26 RC7/RX/DT
- RC7 : xuất/nhập số
- RX : nhận bất đồng USART
- DT : dữ liệu đồng bộ USART
11
27 RD4/PSP
- RD4: xuất/nhập số
- PSP4 : dữ liệu port nhánh song song
28 RD5/PSP5
- RD5: xuất/nhập số
- PSP5 : dữ liệu port nhánh song song
29 RD6/PSP6
- RD6: xuất/nhập số
- PSP6 : dữ liệu port nhánh song song
30 RD7/PSP7
- RD7: xuất/nhập số
- PSP7 : dữ liệu port nhánh song song
31 V
SS
Chân nối đất
32 V
DD

Chân nguồn của PIC.
33 RB0/INT
- RB0 : xuất/nhập số
- INT : ngắt ngoài
34 RB1
xuất/nhập số
35 RB2
xuất/nhập số
36 RB3
- RB3 : xuất/nhập số
- Chân cho phép lập trình điện áp thấp ICPS
37 RB4
- xuất/nhập số
- Ngắt PortB
38 RB5
- xuất/nhập số
- Ngắt PortB
39 RB6/PGC
- RB6 : xuất/nhập số
- PGC : mạch vi sai và xung clock lập trình ICSP
- Ngắt PortB
40 RB7/PGD
- RB7 : xuất/nhập số
- PGD : mạch vi sai và dữ liệu lập trình ICSP
- Ngắt PortB
b. Đặc điểm của PIC 16F877A
Công nghệ CMOS có đặc tính: công suất thấp, công nghệ bộ nhớ flash/EEPROM
có tốc độ sao. Điện áp hoạt động ừ 2V – 5V và tiêu tốn năng lượng thấp, phù hợp với chế
độ làm việc trong công nghiệp và trong thương mại.
Đặc điểm PIC16F877A

12
Tần số hoạt động DC – 20MHZ
Reset (Delay) POR, BOR ( PWRT, OST)
Bộ nhớ chương trình flash ( 14 – bitword) 8k
Bộ nhớ dữ liệu (Byte) 368
Bộ nhớ dữ liệu EEPROM (byte) 256
Các nguồn ngắt 15
Các Port xuất nhập Port A, B, C, D, E
Timer 3
Các module capture/ compare/PWM 2
Giao tiếp nối tiếp MSSP, USART
Giao tiếp song song PSP
Module A/D 10 bit 8 kênh ngõ vào
Bộ so sánh tương tự 2
Tập lệnh 35
Số chân 40 chân PDIP
44 chân PLCC
44 chân TQFP
44 chân QFN
13
c. Sơ đồ khối VĐK PIC 16F877A
14
d. Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory).
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. Như vậy bộ nhớ
chương trình có khả năng chứa được 8*1024=8192 lệnh.
Để 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.
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h. khi có
ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h.
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.
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.
Stack
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng
nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện hay khi một
ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương trình PC tự động
được vi điều khiển cất vào trong stack. Khi một trong các lênh RETURN, RETLW hay
RETFIE được thực thi, giá trị PC sẽ tự động được lấy ra từ trong stack, vi điều khiển sẽ
thực hiện liên tiếp chương trình theo đúng qui trình định trước.
15
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứ được 8 địa chỉ và
hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ stack lần thứ 9 sẽ ghi đè
lên giá trị vất vào stack lần đầu tiên và giá trị cất vào bộ nhớ stack lần thứ 10 sẽ ghi đè
lên giá trị cất vào stack lần thứ 2.
e. Cổng xuất nhập của PIC16F877A
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ác rõ ràng.
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân, tùy theo cách bố trí và chức

năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng chân trong mỗi cổng có
thể khác nhau. Bên cạnh đó, do vi điều khiển được tích hợp sẵn bên trong các đặc tính
giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập thông thường, một số chân
xuất nhập còn có thêm chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi
nêu trên đối với thế giới bên ngoài. Chức năng của từng chân xuất nhập trong mỗi cổng
hoàn toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên quan
đến chân xuất nhập đó.
Vi đjều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB,
PORTC, PORTD, PORTE.
PORTA
Port A bao gồm 6 I/O pin. Đây là các chân “hai chiều”, nghĩa là có thể xuất và
nhập được. chức năng I/O này được điều khiển bởi thanh ghi TRISA (địa chỉ 85h). muốn
xác lập chức năng của một chân trong PORTA là input ta set bit điều khiển tương ứng
với chấn đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân
trong PORTA là output, ta clear bit điều khiển tương ứng với chân đó trong thanh ghi
TRISA. Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển
tương ứng TRIS. Bên cạnh đó PORTA còn là ngõ ra bộ ADC, bộ so sánh, ngõ vào analog
ngõ vào xung clock của timer0 và ngõ vào của bộ giao tiếp MSSP.
PORTB
16
PORTB (RPB) gồm 8 pin I/O. thanh ghi điều khiển xuất nhập tương ứng là
TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp
chương trình cho vi điều khiển với các chế độ nạp khác nhau. PORTB còn liên quan đến
ngắt ngoại vi và bộ Timer0. PORTB còn được tích hợp chức năng điện trở kéo lên được
điều khiển bởi chương trình.
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
PORTC

PORTC gồm 8 pin I/O. thanh ghi điều khiển xuất nhập tương ứng là TRISC. Bên
cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ Timer1, bộ PWM và
các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.
Các thanh ghi điều khiển 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
PORTD
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là
TRISD. PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP
Các thanh ghi liên quan đến PORTD gồm:
Thanh ghi PORTD: chứa các giá trị pin trong PORTD
Thanh ghi TRISD: điều khiển xuất nhập
Thanh ghi TRISE: điều khiển xuất nhập PORTE và chuẩn giao tiếp PSP
PORTE
PORTE gồm 3 chân I/O. thanh ghi điều khiển xuất nhập tương ứng là TRISE. Các
chân của PORTE có các ngõ vào analog. Bên cạnh đó PORTE còn là các chân điểu khiển
của chuẩn giao tiếp PSP.
17
f. Timer 0
Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển PIC16F877A.
timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số 8 bit. 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 là bit điều khiển của Timer0. TMR0IE = 1
cho phép ngắt Timer0 tác động, TMR0IE = 0 không cho phép ngắt Timer0 tác động. sơ
đồ khối của Timer0 như sau:
Hình: sơ đồ khối timer0
Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC, khi đó giá trị thanh ghi
TMR0 sẽ tăng theo từng chu kì xung đồng hồ. 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à xóa được giúp ta ấn định
thời điểm ngắt Timer0 xuất hiện một cách linh động.

Muốn Timer0 hoạt động ở chế độ counter ra set bit TOSC. Khi đó xung tác động
lên bộ đếm được được lấy từ chân RA4/TOCK1. Bit TOSE cho phép lựa chọn cạnh tác
18
động vào bộ đếm. cạnh tác động sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnh
xuống nếu TOSE=1.
Khi thanh ghi TMR0 bị tràn, bit TMR0IF sẽ được set. Đây chính là cờ ngắt của
Timer0. Cờ ngắt này phải được xóa 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.
Các thanh ghi điều khiển liên quan đến Timer0 gồm:
TMR0: chứa giá trị đếm của timer0
INTCON: cho phép ngắt hoạt động
OPTION_REG: điều khiển prescaler
g. Timer 1
Timer1 là bộ định thời 16bit, giá trị của Timer1 sẽ được lưu trong hai thanh ghi.
Cờ ngắt của Timer1 là bít TMR1IF. Bit điều khiển của Timer1 sẽ là TMR1IF
Tương tự như timer0, timer1 cũng có hai chế độ hoạt động: chế độ định thời với xung
kích là xung clock của oscillator và chế độ đếm 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. việc lựa chọn xung
tác động được điều khiển bởi bit TMR1CS. Sau đây là sơ đồ khối của timer1
Hình: sơ đồ khối timer1
Ngoài ra timer1 còn có chức năng reset inptu bên trong được điều khiển bởi một trong 2
khối CCP.
19
Timer1 có 2 chế độ đếm là đồng bộ và bất đồng bộ. chế độ đếm được quyết định bởi bit
điều khiển T1SYNC.
i. Timer 2
Timer2 là bộ định thời 8 bit 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. Cờ ngắt của timer2 là bit TMR2IF. Xung ngõ vào được đưa qua bộ chia tần
số prescaler 4 bit. Sơ đồ khối timer 2:

Hình:: sơ đồ khối timer2
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ứa chia từ 1:1 đến
1:16. Postscaler được điều khiển bởi 4 bít T2OUTPS3:T2OUTPS0. Ngõ ra của postscaler
đóng vai trò quyết đinh 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 xung clock đồng bộ cho khối giao tiếp SSP.
20
2.4.2 Thạch anh
Chức năng: Lọc nhiễu cho dao động thạch anh. 2 tụ gốm 33pF sẽ được nối một
đầu với chân của thạch anh, đầu còn lại đấu ra Mass.
Thạch anh:
Chức năng: Là nguồn tạo xung nhịp dao động clock ổn định cho dao động của PIC
16F877A.
2.4.3 LED
Trong các thiết bị, để báo trạng thái hoạt động của thiết bị đó cho người sử dụng
với thông số chỉ là các dãy số đơn thuần, thường người ta sử dụng "led 7 đoạn". Led 7
đoạn được sử dụng khi các dãy số không đòi hỏi quá phức tạp, chỉ cần hiện thị số là đủ,
chẳng hạn led 7 đoạn được dùng để hiển thị nhiệt độ phòng, trong các đồng hồ treo tường
bằng điện tử, hiển thị số lượng sản phẩm được kiểm tra sau một công đoạn nào đó
Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình và có thêm
một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn.
8 led đơn trên led 7 đoạn có Anode(cực +) hoặc Cathode(cực -) được nối chung
với nhau vào một điểm, được đưa chân ra ngoài để kết nối với mạch điện. 8 cực còn lại
trên mỗi led đơn được đưa thành 8 chân riêng, cũng được đưa ra ngoài để kết nối với
mạch điện. Nếu led 7 đoạn có Anode(cực +) chung, đầu chung này được nối với +Vcc,
các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi
tín hiệu đặt vào các chân này ở mức 0. Nếu led 7 đoạn có Cathode(cực -) chung, đầu

chung này được nối xuống Ground ( Mass), các chân còn lại dùng để điều khiển
trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức
1.
21
Hình 2.1 Cấu tạo LED 7 thanh
Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòng qua
mỗi led đơn trong khoảng 10mA-20mA để bảo vệ led. Nếu kết nối với nguồn 5V có
thể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều khiển.
Các điện trở 330Ω là các điện trở bên ngoài được kết nối để giới hạn dòng điện qua led
nếu led 7 đoạn được nối với nguồn 5V. Chân nhận tín hiệu a điều khiển led a sáng tắt,
ngõ vào b để điều khiển led b. Tương tự với các chân còn lại.
Hình 2.2 Hình ảnh thực tế của Led 7 thanh
22
2.5 SƠ ĐỒ NGUYÊN LÍ CỦA MẠCH
23
2.6 NGUYÊN LÍ HOẠT ĐỘNG CỦA MẠCH
Mạch đèn giao thông hoạt động dựa trên nội dung đã lập trình cho pic
16F877A . PIC 16F877A đưa dữ liệu đến các LED xanh, đỏ, vàng để điều khiển
các LED này đóng, mở. LED 7 đoạn nhận dữ liệu từ vi điều khiển trung tâm để
thực hiện việc đếm lùi thời gian.
Như vậy khi mạch bắt đầu đếm lùi, nếu đường bên này đèn xanh hoặc vàng
sáng thì đường bên kia đèn đỏ sáng và ngược lại.
Cụ thể đèn giao thông hoạt động theo nguyên lý cơ bản như sau: Thời gian
đèn đỏ 2 của đường ưu tiên sáng bằng tổng thời gian đèn xanh 1 và đèn vàng 1
sáng. Thời gian đèn xanh 2 sáng bằng thời gian đèn đỏ 1 sáng Vì vậy khi thực
hiện hiển thị ta chú ý về mặt thời gian để hiển thị các đèn tương ứng. Một số hệ
thống thực tế có chế độ kiểm soát thời gian thực tối ưu phù hợp với yêu cầu thực tế.
- Tín hiệu đèn đỏ: Báo dừng lại.
- Tín hiệu đèn xanh: Được phép đi.
- Tín hiệu màu vàng: Chuẩn bị dừng.

Trong bài nguyên lý trên đèn giao thông thực hiện 4 pha:
- Pha 1: Đèn đỏ 1 đèn xanh 2 sáng.
- Pha 2: Đèn đỏ 2 đèn xanh 1 sáng
Và đèn vàng sẽ sáng vào 3s cuối cùng trước khi chuyển về pha 1
Trong PIC16F877A mắc sử dụng các led catode chung. Các chân dữ liệu của
led bên phải được nối với các chân của cổng PC và các chân dữ liệu của led bên
trái được nối với các chân của cổng PD. Khi cổng đó xuất giá trị là “1” thì thành
led sáng và ngược lại xuất “0” thì tắt.
Các đèn led xanh, đỏ và vàng cũng được nối đến các cổng của vi điều khiển
PIC. Khi vi điều khiển xuất giá trị “1” ra cổng đó thì đèn tương ứng sáng, ngược lại
nếu xuất giá trị “0” đèn sẽ tắt. Các đèn led nối với vi điều khiển PIC theo như bảng
sau:
24
LED Tên cổng
Đỏ 1 A0
Vàng 1 A1
Xanh 1 A2
Xanh 2 A3
Vàng 2 A4
Đỏ 2 A5
Bảng : Sơ đồ mô phỏng mạch điều khiển đèn giao thông
25

×