workshop 16f877 6sx

4
46 Assignment 39 Traffic Light Control System with Count down Display จุดประสงค เพื่อสามารถออกแบบระบบการควบคุมไฟสัญญาณจราจรแบบที่มีตัวเลขนับถอยหลัง กอน การเปลี่ยนสัญญาณไฟดวยระบบไมโครคอนโทรลเลอร ทฤษฎีพื้นฐาน ปจจุบันระบบไฟสัญญาณจราจรมีการนําเอาระบบแสดงผลตัวเลขนับถอยหลังเพื่อบอกระยะ เวลารอการเปลี่ยนสัญญาณไฟ โดยเฉพาะตามสี่แยกซึ่งจะตองมีระบบการนับถอยหลังเพื่อรอ เวลาการเปลี่ยนสัญญาณไฟอยางนอย 2 ชุด ชุดของถนน A และชุดของถนน B ตามรูปที1 รูปที1 แสดงผังการติดตั้งระบบไฟสัญญาณจราจร รูปที2 แสดงวงจรระบบควบคุมไฟสัญญาณจราจรดวยไมโครคอนโทรลเลอร การทํางานของโปรแกรม

Upload: wanchai-ratchatasomboon

Post on 11-Mar-2015

184 views

Category:

Documents


6 download

DESCRIPTION

เอกสารใบงานการทดลอง PIC BASIC PRO COMPILER

TRANSCRIPT

46

Assignment 39 Traffic Light Control Systemwith Count down Display

จุดประสงค เพื่อสามารถออกแบบระบบการควบคุมไฟสัญญาณจราจรแบบที่มีตัวเลขนับถอยหลัง กอนการเปลี่ยนสัญญาณไฟดวยระบบไมโครคอนโทรลเลอร

ทฤษฎีพ้ืนฐาน ปจจุบันระบบไฟสัญญาณจราจรมีการนํ าเอาระบบแสดงผลตัวเลขนับถอยหลังเพื่อบอกระยะเวลารอการเปลี่ยนสัญญาณไฟ โดยเฉพาะตามสี่แยกซึ่งจะตองมีระบบการนับถอยหลังเพื่อรอเวลาการเปลี่ยนสัญญาณไฟอยางนอย 2 ชุด ชุดของถนน A และชุดของถนน B ตามรูปที่ 1

รูปที่ 1 แสดงผังการติดตั้งระบบไฟสัญญาณจราจร

รูปที่ 2 แสดงวงจรระบบควบคุมไฟสัญญาณจราจรดวยไมโครคอนโทรลเลอรการทํ างานของโปรแกรม

47

เริ่มแรก เมื่อกดสวิทช SW1 ระบบจะเริ่มทํ างานโดยหลอดไฟ RED1 กับ GREEN2 จะติดเพื่อใหรถบนถนน A-A วิ่งผานสี่แยกไปไดกอน เริ่มนับถอยหลัง 100 วินาที เมื่อนับครบถึง 0 ระบบจะเขาสูการกระพริบเตือนเปลี่ยนสัญญาณไฟ 5 ครั้ง จากนั้นจะเปลี่ยนเปนหลอด RED2 กับ GREEN1 ติดเพื่อใหรถบนถนนB-B วิ่งผานสี่แยกโดยเริ่มนับเวลาถอยหลัง 60 วินาที เมื่อนับครบจะกลับไปเริ่มทํ างานใหม

มีตอหนาถัดไป

'sw1 = start traffic light''RB5 = RED1, RB4 = YELLOW1, RB3 = GREEN1'RB2 = RED2, RB1 = YELLOW2, RB0 = GREEN2'sw1 VAR PORTA.3RED1 VAR PORTB.5YELLOW1 VAR PORTB.4GREEN1 VAR PORTB.3RED2 VAR PORTB.2YELLOW2 VAR PORTB.1GREEN2 VAR PORTB.0t VAR BYTE'TRISC = %00000000TRISD = %00000000PORTC = 255PORTD = 255digit VAR BYTEnum VAR WORDmax_count VAR WORDdisp VAR BYTEi VAR BYTEj VAR BYTE'''initialTRISB = 0TRISA = 255adcon1 = 7PORTB = 0'start:

IF sw1 = 1 Then startHigh RED1High GREEN2loop1:

max_count = 100GoSub countdownFor t = 1 TO 5

Toggle GREEN2Pause 300Toggle GREEN2Pause 300

Next t

48

Low GREEN2Pause 200High YELLOW2Pause 2000Low YELLOW2Low GREEN2Pause 200High RED2Pause 1000Low RED1Pause 200High GREEN1max_count = 60GoSub countdownFor t = 1 TO 5

Toggle GREEN1Pause 300Toggle GREEN1Pause 300

Next tLow GREEN1Pause 200High YELLOW1Pause 2000Low YELLOW1Low GREEN1Pause 200High RED1Pause 1000Low RED2High GREEN2GoTo loop1End

‘------------ End of Main Program ---------------‘‘ ------------ Subroutine Program -------------------------------‘countdown:

For num = max_count TO 0 STEP -1For i = 0 TO 20

For j = 0 TO 2digit = num DIG jLookUp digit,[$c0,$f9,$a4,$b0,$99,$92,$82,$f8,$80,$90],dispPORTC = dispLookUp j,[$fe,$fd,$fb,$f7],PORTDPause 5PORTD = $ff

Next jNext i

Next numReturn

‘‘ ------------- End of Subroutine -------------------------------

49

มอบหมายงานเมื่อศึกษาการทํ างานของโปรแกรมและฝกปฏิบัติเขาใจดีแลว ใหพัฒนาปรับปรุงโปรแกรมใหสามารถ

ใชปุมสวิทชที่เหลือในบอรดทดลอง ควบคุมการตั้งคานับถอยหลังไดทั้งสองดาน