Thiết kế và xây dựng hệ thống điều khiển giao thông
Trang 1BÀI BÁO CÁOMô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
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
Trang 2MỤ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ềukhiể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ềulĩ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êucầ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ữngsinh 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 sinhviê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 đờisố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 độngchú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
Trang 3 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
Trang 4CHƯƠ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ìnhthườ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
Trang 5CHƯƠ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
KHỐIHIỂ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ángCác đèn vàng 1, đỏ 1, đỏ
2, vàng 2 đều tắt
Đèn vàng 1 sángĐèn đỏ 2 sángCác đèn vàng 2, đỏ 1,xanh1, vàng 2 đều tắt
Đèn đỏ1 sángĐèn vàng 2 sángCác đèn vàng 1, đỏ 2,xanh2, vàng 2 đều tắt
Đèn xanh 1 sángĐèn đỏ 2 sángCác đèn vàng 1, đỏ 1,xanh2, vàng 2 đều tắt
Trang 62.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
Trang 72.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ệnthờ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 thamgia 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 tadùng loại cathode chung (phù hợp với IC 74LS274)
Trang 82.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
Trang 92.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
Trang 10Chức năng các chân:
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.
Trang 11- 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õ
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
Trang 1227 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
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
Trang 13Tần số hoạt động DC – 20MHZ
Bộ nhớ chương trình flash ( 14 – bitword) 8k
Các module capture/ compare/PWM 2
Trang 14c Sơ đồ khối VĐK PIC 16F877A
Trang 15d 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ộ đếmchươ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ớiPIC16F877A 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ácvù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ệntrong 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ùngnhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL được thực hiện hay khi mộtngắ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 hayRETFIE đượ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
Trang 16Bộ 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ươngtá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ứcnă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ínhgiao 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ânxuấ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 vinê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ổnghoà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ốnxá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 ứngvớ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ântrong PORTA là output, ta clear bit điều khiển tương ứng với chân đó trong thanh ghiTRISA 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ểntương ứng TRIS Bên cạnh đó PORTA còn là ngõ ra bộ ADC, bộ so sánh, ngõ vào analogngõ vào xung clock của timer0 và ngõ vào của bộ giao tiếp MSSP
PORTB
Trang 17PORTB (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ạpchươ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 đếnngắ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êncạ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ácchâ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ểncủa chuẩn giao tiếp PSP
Trang 18f 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 chophé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 = 1cho 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 ghiTMR0 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 địnhthờ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 độnglê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
Trang 19độ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ạnhxuố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ủaTimer0 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ựchiệ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 xungkí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 xungtá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 2khối CCP