Đề tài Thiết kế hệ thống đèn giao thông ở ngã tư

Tổ chức bộ nhớ :

Có 3 khối bộ nhớ trong pic16F877A: bộ nhớ chương trình ,bộ nhớ dữ liệu và khối bộ nhớ EEPROM. bộ nhớ chương trình và bộ nhớ dữ liệu có đường bus riêng vì vậy có thể truy cập vào từng bộ nhớ một cách riêng rẽ.

Bộ đếm chương trình có 13 bit vì vậy không gian địa chỉ sẽ là 8k word x 8bit. Truy cập ngoài vùng không gian trên sẽ gây lỗi.

Bộ nhớ dữ liệu được chia thành 4 bank (Bank0÷Bank3) ,trong các bank chứa các thanh ghi thường và các thanh ghi chức năng đặc biệt. Bank được chọn phụ thuộc vào bit RP1 và RP0 (bit thứ 6 và bit thứ 5) của thanh ghi trạng thái status.

 

 

doc21 trang | Chia sẻ: maiphuongdc | Lượt xem: 6332 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế hệ thống đèn giao thông ở ngã tư, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÁO CÁO BÀI TẬP LỚN VI XỬ LÝ Đề tài: Thiết kế hệ thống đèn giao thông ở ngã tư Phần 1 GIỚI THIỆU SƠ LƯỢC VỀ ĐỀ TÀI Mô tả tổng quan Đề tài nhằm thiết kế và triển khai một hệ thống điều khiển cho đèn giao thông tại một ngã tư thông thường trong đó không tách biệt tín hiệu đèn điều khiển rẽ trái, rẽ phải, đi thẳng. Hệ thống cần đảm bảo chức năng điều khiển các tín hiệu đèn, các bộ đếm ngược và cân chỉnh được thang thời gian cho các tín hiệu theo thời gian trong ngày. Các tín hiệu điều khiển được thể hiện bằng các LED màu tương ứng vàng, đỏ, xanh và bộ đếm thể hiện bằng các LED 7 thanh. Các chức năng của hệ thống Điều khiển các tín hiệu đèn: Điều khiển tín hiệu đèn cho các phương tiện giao thông: trên các hướng đi có bộ ba đèn điều khiển vàng, đỏ xanh. Các đèn hiệu sẽ được điều khiển theo logic và phải đảm bảo thời gian đèn đỏ của hướng này phải lớn hơn hoặc bằng tổng thời gian đèn xanh và đèn vàng của hướng kia. Thứ tự đèn cho mỗi hướng là: vàng -> đỏ -> xanh -> vàng… Điều khiển tín hiệu đèn cho người đi bộ: trên các hướng đi có bộ đèn hiệu cho người đi bộ bao gồm hai tín hiệu xanh và đỏ. Tín hiệu đèn xanh cho người đi bộ sẽ bắt đầu sau khi đèn đỏ cho phương tiện của hướng đó sáng được 05s và kết thúc trước khi tín hiệu đèn xanh cho phương tiện giao thông của hướng đó sáng 05s. Hiển thị thời gian đếm ngược của các tín hiệu đèn: Hệ thống có khả năng hiển thị thời gian đếm ngược của tín hiệu đèn bằng Led 7 thanh với khả năng hiển thị số lớn nhất là 99. Điều chỉnh thang thời gian điều khiển các tín hiệu đèn theo thời gian trong ngày: Thời gian thực trong ngày sẽ được lưu trong hệ thống ngay cả khi hệ thống bị mất điện. Thời gian thực lưu theo dạng 24 giờ bắt đầu từ 00:00 đến 23:59. Hệ thống dựa vào giờ được lưu này để điều chỉnh thang thời gian điều khiển tín hiệu cho phù hợp vào các thời điểm cao điểm, trung bình và ban đêm trong ngày. Ở khoảng thời gian ban đêm đến 5 giờ , hệ thống sẽ nhấp nháy đèn vàng với chu kỳ 1s. Giờ cao điểm trong ngày là khoảng thời gian từ 7 giờ đến 9 giờ và từ 17 giờ đến 19 giờ. Điều chỉnh các thông số của hệ thống: Giao diện điều chỉnh các thông số: Người dùng nhập thông số thông qua 4 nút bấm: menu, up, down, set. Thông số đang điều chỉnh sẽ được hiển thị lên màn hình LCD dạng text đồng thời đèn LCD cũng bật sáng đèn màn hình. Để bắt đầu điều chỉnh các thông số, người dùng nhấn nút menu, sau đó nhấn các nút up và down để điều chỉnh thông số hiện tại, khi đã điều chỉnh xong thông số này, người dùng nhấn nút set để lưu thông số. Để điều chỉnh thông số tiếp theo người dùng tiếp tục nhấn nút menu. Thứ tự điều chỉnh các thông số lần lượt như sau: Giờ -> phút -> thời gian đèn vàng -> thời gian đèn đỏ lúc cao điểm -> thời gian đèn xanh lúc cao điểm -> thời gian đèn đỏ lúc trung bình -> thời gian đèn xanh lúc trung bình -> thời gian đèn đỏ giao nhau lúc cao điểm -> thời gian đèn đỏ giao nhau lúc trung bình -> thời điểm bắt đầu nhấp nháy đèn vàng. Khi đã điều chỉnh xong các thông số, người dùng nhấp menu thêm một lần nữa để thoát chế độ điều chỉnh. Khi thoát chế độ này, LCD xóa toàn bộ nội dung hiển thị và tắt đèn màn hình. Các thông sô điều chỉnh theo kiểu quay vòng: mỗi thông số có khoảng nhất định từ nhỏ nhất đến cao nhất, khi chỉnh đến giá trị cao nhất mà người dùng nhấn nút up một lần nữa thì thông số quay về giá trị nhỏ nhất, tương tự khi chỉnh đến giá trị nhỏ nhất mà người dùng nhấn nút down một lần nữa thì thông số quay về giá trị cao nhất. Khoảng điều chỉnh giờ: 00h -> 23h. Khoảng điều chỉnh phút: 00h -> 59h. Khoảng điều chỉnh thời gian đèn vàng: 03s -> 10s. Khoảng điều chỉnh thời gian đèn đỏ: 20s -> 90s. Khoảng điều chỉnh thời gian đèn xanh: 10s -> 70s. Khoảng điều chỉnh thời gian đèn đỏ giao nhau: 00s -> 10s. Khoảng điều chỉnh thời điểm bắt đầu nhấp nháy đèn vàng: 21h -> 23h. Phần 2 Các công cụ thực hiện Về phần cứng Vi điều khiển dùng cho đề tài là vi điều khiển PIC16F877A, dùng thạch anh có tần số 20Mhz. LCD dùng trong đề tài là loại LCD 1602 có đèn màn hình. LED đơn dùng trong đề tài là loại 3.5 mm trong suốt. LED 7 thanh dùng trong đề tài là loại có chiều cao 0.56”. Các bo mạch được được thiết kế với phần mềm orcad và được đặt để sản xuất. Ở 4 góc của bo mạch có khoan lỗ 2.5mm để gắn đế cách điện. Mạch nguồn và mạch điều khiển được thiết kế trên cùng một bo mạch. Đầu vào mạch nguồn dùng connector 6.5mm dành cho Adapter thông dụng. Trên mạch nguồn cần có led báo có điện và chuyển mạch đóng ngắt điện. Adapter dùng cấp điện loại 12V DC- 1.5A. Có vỏ nhựa bảo vệ bên ngoài. Mạch nạp qua cổng USB Về phần mềm Chương trình biên dịch dùng trong đề tài: MPLAB IDE v8.43 của Microchip, CCS C Compilers v4.1 của CCS. Chương trình mô phỏng dùng trong đề tài: Proteus v7.6. Chương trình vẽ mạch và layout dùng trong đề tài: Orcad v10.1. Phần mềm nạp đi kèm mạch nạp: WinPic cho mạch nạp qua cổng USB Phần mềm lập kế hoạch: MS Project v12 2007. Phần mềm vẽ hình: MS Visio v12 2007. Phần 3:Thực Hiện Đề Tài I.Mô tả mạch: Sơ đồ khối Đèn giao thông Màn hình(LCD) Vi điều khiển Thời gian thực DS1307 Phím bấm II.Sơ đồ nguyên lý sơ lược trên Proteus III.Tổng quan về các khối: 1. Tổng quan về PIC 16f877a: Vi điều khiển PIC 16f877a có sơ đồ chân như sau: PIC16F877A trong mạch là loại có 40chân,với 5 cổng vào ra la Port A(RA0÷RA5),PortB(RB0÷RB7),Port C(RC0÷RC7),Port D(RD0÷RD7),Port E(RE0÷RE2). Có 3 bộ định thời là timer0,timer1,timer2. 8K bộ nhớ chương trình flash. Tổ chức bộ nhớ : Có 3 khối bộ nhớ trong pic16F877A: bộ nhớ chương trình ,bộ nhớ dữ liệu và khối bộ nhớ EEPROM. bộ nhớ chương trình và bộ nhớ dữ liệu có đường bus riêng vì vậy có thể truy cập vào từng bộ nhớ một cách riêng rẽ. Bộ đếm chương trình có 13 bit vì vậy không gian địa chỉ sẽ là 8k word x 8bit. Truy cập ngoài vùng không gian trên sẽ gây lỗi. Bộ nhớ dữ liệu được chia thành 4 bank (Bank0÷Bank3) ,trong các bank chứa các thanh ghi thường và các thanh ghi chức năng đặc biệt. Bank được chọn phụ thuộc vào bit RP1 và RP0 (bit thứ 6 và bit thứ 5) của thanh ghi trạng thái status. RP1:RP0 Bank 00 0 01 1 10 2 11 3 Các thanh ghi chức năng đặc biệt được CPU và bộ ngoại vi sử dụng để điều khiển các thiết bị. các thanh ghi này hoạt động như một thanh RAM tĩnh. Thanh ghi trạng thái chứa trạng thái số học của ALU,trạng thái Reset và các bit chọn bank ở bộ nhớ dữ liệu. Các cổng vào ra của pic: +Port A: có 6 bit (tương ứng với 6 chân RA0÷RA5) các chân của cổng A có tích hợp một số chức năng ngoại vi,nếu một thiết bị ngoại vi được enable thì cổng này sẽ không hoạt động như một cổng vào ra . Bình thường Port A sẽ là một cổng vào ra 2 chiều. Thanh ghi xác đinh chiều tương ứng của các chân port A là thanh ghi TrisA. Các bit ở thanh ghi TrisA bằng 1 sẽ xác định các chân ở port A là đầu vào ngược lại sẽ là đầu ra. + Port B: rộng 8 bit(tương ứng với 8 chân RB0÷RB7),là một cổng vào ra 2 chiều. Thanh ghi qui đinh chiều của cổng B là thanh ghi Tris B. thiết lập các bit ở thanh ghi TrisB bằng 1 sẽ làm cho cổng B là cổng vào ngược lại sẽ là cổng ra. + Port C: rộng 8 bit(tương ứng với các chân RC0÷RC7),bình thường nó là một cổng vào ra 2 chiều, thanh ghi qui định chiều của cổng là thanh ghi TrisC. Các chân RC3,RC4 dùng để kết nối truyền nhân thông tin với các thiết bị ngoại vi. + Port D: rộng 8 bit (RD0÷RD7),nó có thể là cổng vào hoặc cổng ra. Port D có thể được cấu hình như một cổng vi xử lý rộng 8 bit (cổng slave song song) bằng cách thiêt lập bit điều khiển PSPSTATUS (TrisE.4). ở chế độ này thì đầu vào la tín hiệu TTL. + Port E: rộng 3 bit(RE0÷RE2), được cấu hình là đầu ra hoặc đầu vào. Port E có thể là đầu vào điều khiển I/O khi bit PSPSTATUS (TrisE.4) được thiết lập. Từ hình vẽ ta có thể thấy, pic16F877A có 2 chân Vcc và 2 chân GND, để pic có thể hoạt động được ta phải cấp nguồn cho tất cả các chân này. Ngoài cấp nguồn cung cấp ta phải cấp nguồn xung dao động để cho vi điều khiển hoạt động. ta sẽ dùng một thạch anh 20MHz để cấp xung dao động. nguồn dao động được cấp thông qua 2 chân 13 và 14 của pic. Mạch reset cho vi điều khiển là một công tắc để hở thông qua chân MCLR của vi điều khiển. mạch sẽ thực hiện reset khi chân này từ mức logic 1 xuống logic 0. khi công tắc để hở thì chân này luôn mang mức logic 1 do luôn được nối với nguồn thông qua một điện trở hạn dòng R1, điện trở này phải có giá trị nhỏ hơn 10k để đảm bảo điện áp cung cấp cho vi điều khiển. 2.Khối thời gian thực- DS1307. DS1307 là chip thời gian thực hay RTC (Read time clock). Đây là một IC tích hợp cho thời gian bởi vì tính chính xác về thời gian tuyệt đối cho thời gian : Thứ, ngày,tháng, năm, giờ, phút, giây. DS1307 là chế tạo bởi Dallas. Chip  này có 7 thanh ghi 8 bit mỗi thanh ghi này chứa : Thứ , ngày, tháng, năm, giờ , phút, giây. Ngoài ra DS1307 còn chứa 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống các thanh ghi này có thể dùng như là RAM. DS1307 được đọc thông qua chuẩn truyền thông I2C nên do đó để đọc được và ghi từ DS1307 thông qua chuẩn truyền thông này. Do nó được giao tiếp chuẩn I2C nên cấu tạo bên ngoài nó rất đơn giản. - DS1307 là một IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhật thời gian và ngày tháng với 56 bytes SRAM. Địa chỉ và dữliệu được truyền nối tiếp qua 2 đường bus 2 chiều. Nó cung cấp thông tin về giờ,phút,giây ,thứ,ngày ,tháng, năm.Ngày cuối tháng sẽ tự động được điều chỉnh với các tháng nhỏ hơn 31 ngày,bao gồm cả việc tự động nhảy năm. Đồng hồ có thể hoạt động ở dạng 24h hoặc 12h với chỉ thị AM/PM. DS1307 có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động đóng ngắt với nguồn pin cung cấp. - DS 1307 hoạt động với vai trò slave trên đường bus nối tiếp. Việc truy cập được thi hành với chỉ thị START và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi. Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP được thực thi. Mô tả hoạt động của các chân: + X1 và X2 là đầu vào dao động cho DS1307. Cần dao động thạch anh 32.768Khz. Là một mạch tạo dao động ngoài,để hoạt động ổn định thì phải nối thêm 2 tụ 33pF + Vbat là nguồn nuôi cho chip. Nguồn này từ ( 2V- 3.5V) ta lấy pin có nguồn 3V. Đây là nguồn cho chip hoạt động liên tục khi không có nguồn Vcc mà DS1307 vẫn hoạt động theo thời gian + Vcc là nguồn cho giao tiếp I2C. Điện áp cung cấp là 5V chuẩn và được dùng chung với vi xử lý. Nếu mà Vcc không có mà Vbat có thì DS1307 vẫn hoạt động bình thường nhưng mà không ghi và đọc được dữ liệu. + GND là nguồn Mass chung cho cả Vcc và Vbat + SCL(serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữ liệu trên đường dây nối tiếp. + SDA(serial data input/out): là chân vào ra cho 2 đường dây nối tiếp. Chân SDA thiết kế theo kiểu cực máng hở , đòi hỏi phải có một điện trở kéo trong khi hoạt động. + SQW/OUT(square wave/output driver)- khi được kích hoạt thì bit SQWE được thiết lập 1, chân SQW/OUT phát đi 1 trong 4 tần số (1Hz,4kHz,8kHz,32kHz). Chân này cũng được thiết kế theo kiểu cực máng hở vì vậy nó cũng cần có một điện trở kéo trong. Chân này sẽ hoạt động khi cả Vcc và Vbat được cấp. 3.Khối màn hình-LCD (1602A). Để hiển thị các thông số trong quá trình giao tiếp giữa người điều khiển với hệ thống như xem ngày giờ và xem các thông số khi thực hiện điều khiển hệ thống (Active).Sử dụng LCD text 16x2. Sơ đồ chân của LCD 1602a Chức năng các chân: Chân số Tên Chức năng 1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điều khiển 2 Vdd Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V của mạch điều khiển 3 Vee Chân này dùng để điều chỉnh độ tương phản của LCD. 4 RS Chân chọn thanh ghi (Register select). Nối chân RS với logic “0” (GND) hoặc logic“1” (VCC) để chọn thanh ghi. + Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” -write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD. 5 R/W Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc. 6 E Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E. + Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E. + Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp. 7-14 DB0-DB7 Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ sử dụng 8 đường bus này : + Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7. + Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7. 15 Lamp+ Đèn LCD 16 Lamp- Đèn LCD 4.Khối nút bấm: Khối phím bấm gồm 5 phím điều chỉnh: Phím MENU để bắt đầu điều chỉnh các thông số và cho phép điều chỉnh các thông số tiếp theo Phím SET để đưa hệ thống vào trình setup để điều chỉnh các thông số và thoát khỏi trình setup khi xong. Các Down,Up để thay đổi tăng giảm giá trị các thông số khi cài đạt Phím RESET khởi động lại hệ thống. Trong quá trình mạch đang điều kiển giao thông tất cả các phím bấm bị vô hiệu hóa trừ phím MENU và RESET.Trong quá trình cài đặt LED 7 thanh và đèn giao thông được tắt. 5.Khối đèn giao thông: Chương IV Thuật toán Giải thuật điều khiển khối đèn giao thông Ta thấy khi đèn giao thông ở hướng này đang là xanh hoặc vàng thì hướng kia không được đi tức là luôn đỏ trong thời gian đó.Gọi tx là thời gian đèn xanh,tv là thời gian đèn vàng.Như vậy thời gian đèn đỏ tối thiểu luôn bằng thời gian đèn xanh+ đèn vàng tức là tx+tv. Do sự ràng buộc trên ta đưa vào đại lượng tdgn là thời gian đèn đỏ giao nhau. Như vậy thay vì điều chỉnh thời gian đèn đỏ ta sẽ điều chỉnh thời gian tdgn và ta sẽ có thời gian đèn đỏ sẽ là tx+tv+tdgn. Sơ đồ giải thuật. Quá trình này được lặp đi lặp lại.Thời gian đèn đỏ luôn lớn hơn thời gian đèn xanh +đèn vàng .Người đi bộ chỉ được đi khi trên đường không còn xe lưu thông.Thời gian tdgn đảm bảo xe đang lưu thông trong ngã tư đi hết trước khi cho hướng khác đi.Chỉ cần điều chỉnh tx,tv,tdgn là ta có thời gian đèn giao thông như ý muốn. Vào giờ cao điểm thời gian đèn đỏ tự tăng lên một khoảng người dùng xác định tránh ùn tắc giao thông.Thời điểm từ 23h00 hôm trước đến 5h00 hôm sau đèn vàng nhấp nháy,các đèn khác tắt đưa hệ thống vào trạng thái nghỉ.Tiết kiệm tối đa năng lượng và số công việc PIC phải làm. Khối thời gian thực được PIC cập nhật sau mỗi giây đảm bảo dộ chính xác của thời gian và giảm số công việc PIC phải thực thi chống quá tải PIC. 2. Lưu đồ giải thuật lập trình hệ thống BEGIN Nạp vùng địa chỉ Stack (SP) = 5FH Nạp địa chỉ vùng mã 7 đoạn KIỂM TRA THỚI GIAN MODE2: (GIỜ CAO ĐIẺM) Giờ = 7h-9h&17h-19h? Y Giờ = 23h-5h? N MODE3: (GIỜ KHUYA) Y MODE1: (GIỜ THẤP ĐIẺM) N Kết luận -Chúng em xin chân thành cám ơn thầy giáo đã giúp chúng em hoàn thành bài tập lớn này. -Qua bài tập lớn này giúp chúng em hiểu sâu và rõ hơn cấu tạo của vi xử lý PIC 16F877A cũng như cách xử lý các câu lệnh của PIC cũng như 8051 . -Giúp chúng em có nhiều kinh nghiệm thực tế thú vị -Nhờ sự hướng dẫn của thầy giáo bọn em cũng có những kết quả nhất định như sau: +Thiết kế được mạch điều khiển giao thông cho một ngã tư .Thích hợp với quy mô bài tập lớn. +Mô phỏng được 90% mạch thật trên proteus do phần mềm ko hỗ trợ đèn giao thông +Mạch thực tế đã chạy đúng các yêu cầu thiết kế và chạy ổn định +Kinh nghiệm làm mạch in ít nên mạch chưa được đẹp. +Do phím bấm được tích hợp với các khối hiển thị nên khả năng mở rộng phím cao. Có thể thay bằng bàn phím số. +Code được tối ưu hóa tiết kiệm dung lượng ROM và RAM,PIC hoạt động không bị quá tải. Tài liệu tham khảo: Điện tử Việt Nam : PIC Việt Nam : Học AVR : Tài liệu hướng dẫn làm bài tập lớn của khoa.

Các file đính kèm theo tài liệu này:

  • docbao_cao_bai_tap_lon_vi_xu_ly_2009.doc