Chương trình điều khiển đèn giao thông
3 posters
Trang 1 trong tổng số 1 trang
Chương trình điều khiển đèn giao thông
ĐÈN GIAO THÔNG ĐIỀU KHIỂN TẠI 1 NGÃ TƯ
Ø ĐẶT VẤN ĐỀ:
_Bạn có nghĩ tại 1 ngã tư không có đèn giao thông sẽ như thế nào? Khi đó việc lưu thông sẽ trở nên khó khăn trong lưu thông, dễ gây ùn tắt…Để cho việc lưu thông trở nên dễ dàng hơn ta cần có đèn giao thông. Đèn giao thông sẽ giúp cho việc điều tiết xe lưu thông qua ngã tư thuận tiện hơn, tránh gây ra việc ùn tắt tại giao lộ.
Ø Làm thế nào để hiển thị các đèn đỏ-xanh-vàng?
_Làm thế nào để hiển thị giá trị trên led 7 đoạn ? Và đếm ngược giá trị như thế nào?
_ Dạng dữ liệu xuất ra port điều khiển( hiển thị trên led 7 đoạn) dạng BCD hay 7 đoạn?
_Cho các đèn sáng như sau:
ĐÈN THỜI GIAN
DO2 39S
VANG2 4S
XANH2 25S
DO1 29S
VANG1 4S
XANH1 35S
_Thời gian DO2 sáng = thời gian XANH1sáng + thời gian VANG1 sáng=39s
_ Thời gian DO1 sáng = thời gian XANH2 sáng + thời gian VANG2 sáng=29s
Ø Cách thực hiện:
_Đầu tiên, ta gán các địa chỉ cho các nhãn sau:
_ XANH1 EQU P1.2
VANG1 EQU P1.1
DO1 EQU P1.0
XANH2 EQU P1.5
VANG2 EQU P1.4
DO2 EQU P1.3
_ Nạp giá trị cho R0(=35h),R1(=39h), cho đèn DO2 sáng(39s), đèn XANH1 sáng(35s), giảm các giá trị R0, R1(mỗi lần đi 1), xuất các giá trị R0, R1 ra hiển thi trên led 7 đoạn qua các port P2, P3. Sau khi R0 giảm tới 0h (lúc đó R1=4h) ta nạp R0=4h và cho đèn XANH1 tắt, cho đèn VÀNG1 sáng(4s) cùng đèn DO2.
_ Khi R0, R1 bằng 0h, đèn DO2 và đèn VANG1 tắt, nạp giá trị cho R0(=29h), R1(=25h) đồng thời cho đèn DO1 sáng(29s) và đèn XANH2 sáng(25s), giảm giá trị R0, R1 và hiển thị các trị R0, R1 trên led 7 đoạn qua port P2, P3. Khi R1 giảm đến 0h, cho đèn XANH2 tắt, nạp R1=4h và cho đèn VANG2 sáng(4s) cùng đèn DO1, khi R0,R1 bằng 0h, đèn DO1 và VANG2 tắt, sau đó quay trở lại thực hiện bước trên.Hai quá trình trên lặp đi lặp lại.
_ Do dạng dữ liệu xuất ra led 7 đoạn là dạng BCD nên khi giảm đến số 0 ta phải xét điều kiện ở các giá trị ( 02Fh, 01Fh,00Fh,0h) cho R0, R1(không để hiển thị số hexa); mỗi lần như vậy ta nạp lại giá trị cho R0, R1, rồi xuất các giá trị R0, R1 ra P2, P3 cho hiển thị lên led 7 đoạn.Xuất trực tiếp giá trị BCD ra led 7 đoạn không cần vi mạch giải mã.
_Mỗi số hiển thị trên led 7 đoạn trong 1s
*Tập lệnh chương trình:
;CHUONG TRINH DIEU KHIEN DEN GIAO THONG TAI 1 NGA TU
$MOD51
ORG 00H
XANH1 EQU P1.2
VANG1 EQU P1.1
DO1 EQU P1.0
XANH2 EQU P1.5
VANG2 EQU P1.4
DO2 EQU P1.3
MAIN:
MOV R0,#35H ;BIEN DEM SO TRANG THAI HIEN THI
MOV R1,#39H
LAP: MOV P1,#00H ;XOA P1
SETB DO2 ;DEN DO2 SANG 39S
SETB XANH1 ;DEN XANH1 SANG 35S
MOV P2,R0 ;HIEN THI
MOV P3,R1 ;HIENTHI
DEC R0 ;GIAM GIA TRI
DEC R1
LCALL DELAY1S ;TAO TRE 1S
CJNE R0,#02FH,LAP ;KIEM TRA R0=02FH?
MOV R0,#29H ;NAP LAI BIEN DEM CHO R0
MOV R1,#33H
LL: MOV P2,R0 ;HIEN THI
MOV P3,R1 ;HIENTHI
DEC R0 ;GIAM GIA TRI
DEC R1
LCALL DELAY1S
CJNE R1,#02FH,LL ;KIEM TRA R1=02FH?
MOV R0,#25H ;NAP LAI BIEN DEM CHO R1
MOV R1,#29H
LL1: MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R0,#01FH,LL1 ;KIEM TRA R0=01FH?
MOV R0,#19H ;NAP LAI BIEN DEM CHO R0
MOV R1,#23H
LL2: MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R1,#01FH,LL2 ;KIEM TRA R1=01FH?
MOV R0,#15H ;NAP LAI BIEN DEM CHO R1
MOV R1,#19H
LL3: MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R0,#0FH,LL3 ;KIEM TRA R0=0FH?
MOV R0,#09H ;NAP LAI BIEN DEM CHO R0
MOV R1,#13H
LL4: MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R1,#00FH,LL4 ;KIEM TRA R1=0FH?
MOV R0,#05H ;NAP LAI BIEN DEM CHO R0
MOV R1,#09H
LL5: MOV P2,R0
MOV P3,R1
DEC R1
DEC R0
LCALL DELAY1S
CJNE R0,#00H,LL5 ;KIEM TRA R0=00H?
MOV R0,#04H ;NAP LAI BIEN DEM CHO R0
LAP1:
CLR XANH1 ; DEN XANH1 TAT
SETB VANG1 ; DEN VANG1 SANG 4S
MOV P3,R1
MOV P2,R0
DEC R1
DEC R0
LCALL DELAY1S
CJNE R1,#00,LAP1 ;KIEM TRA R1=00H?
MOV R0,#29H ;NAP LAI BIEN DEM CHO R0
MOV R1,#25H ;NAP LAI BIEN DEM CHO R1
LAP2: MOV P1,#00H
SETB DO1 ;DEN DO1 SANG 29S
SETB XANH2 ;DEN XANH2 SANG 25S
MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R1,#01FH,LAP2
MOV R1,#19H
MOV R0,#23H
LT0: MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R0,#01FH,LT0
MOV R0,#19H
MOV R1,#15H
LT1: MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R1,#00FH,LT1
MOV R0,#13H
MOV R1,#09H
LT2: MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R0,#00FH,LT2
MOV R0,#09H
MOV R1,#05H
LT3: MOV P2,R0
MOV P3,R1
DEC R0
DEC R1
LCALL DELAY1S
CJNE R1,#00H,LT3
MOV R1,#04 ;NAP LAI BIEN DEM CHO R1
LAP3: CLR XANH2 ;DEN XANH2 TAT
SETB VANG2 ;DEN VANG2 SANG 4S
MOV P3,R1
MOV P2,R0
DEC R1
DEC R0
LCALL DELAY1S
CJNE R1,#00H,LAP3 ;KIEM TRA R1=00H?
LJMP MAIN ;LAP LAI
;**********CHUONG TRINH TAO TRE THOI GIAN 1S*******
DELAY1S:
PUSH 00H
MOV R0,#100
MOV TMOD,#10H
LOOP:
MOV TH1,#0D8H
MOV TL1,#0F0H
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
DJNZ R0,LOOP
POP 00H
RET
END
tuanfet1987- Thành viên
- Tổng số bài gửi : 1
Ngày đăng ký : 13/05/2010
Re: Chương trình điều khiển đèn giao thông
chuong trinh nay dai wa! co chuong trinh den giao thong giao tiep may tinh bang VC++ k?
hanhan- Thành viên
- Tổng số bài gửi : 2
Ngày đăng ký : 19/05/2010
Re: Chương trình điều khiển đèn giao thông
Có chứ nhưng mình sử dụng 4 IC giải mã
Sơ đồ:
Chương trình:
//***DK DEN GIAO THONG***//
#include
#define COT1 P1
#define COT2 P3
#define D1 P2_0
#define V1 P2_1
#define X1 P2_2
#define D2 P2_3
#define V2 P2_4
#define X2 P2_5
void delay (unsigned int ms)
{
unsigned int i ;
unsigned char j ; //khai bien 1 byte
for (i=0;i
for (j=0;j<125;j++)
{}
}
void main(){
while(1) // Vong lap vo han
{
COT1=0x32;COT2=0x52;X1=0;V2=1;D1=1;D2=0;delay(2000);
COT1=0x22;COT2=0x42;delay(2000);
COT1=0x12;COT2=0x32;delay(2000);
COT1=0x02;COT2=0x22;delay(2000);
COT1=0x91;COT2=0x12;delay(2000);
COT1=0x81;COT2=0x02;delay(2000);
COT1=0x71;COT2=0x91;delay(2000);
COT1=0x61;COT2=0x81;delay(2000);
COT1=0x51;COT2=0x71;delay(2000);
COT1=0x41;COT2=0x61;delay(2000);
COT1=0x31;COT2=0x51;delay(2000);
COT1=0x21;COT2=0x41;delay(2000);
COT1=0x11;COT2=0x31;delay(2000);
COT1=0x01;COT2=0x21;delay(2000);
COT1=0x90;COT2=0x11;delay(2000);
COT1=0x80;COT2=0x01;delay(2000);
COT1=0x70;COT2=0x90;delay(2000);
COT1=0x60;COT2=0x80;delay(2000);
COT1=0x50;COT2=0x70;delay(2000);
COT1=0x40;COT2=0x60;delay(2000);
COT1=0x30;COT2=0x50;delay(2000);
COT1=0x20;COT2=0x40;delay(2000);
COT1=0x10;COT2=0x30;delay(2000);
COT1=0x00;COT2=0x20;delay(2000);
COT1=0x00;COT2=0x10;V1=0;X1=1;delay(2000);
COT1=0x00;COT2=0x00;delay(2000);
COT1=0x91;COT2=0x71;D1=0;X2=0;V1=1;D2=1;X1=1;delay(2000);
COT1=0x81;COT2=0x61;delay(2000);
COT1=0x71;COT2=0x51;delay(2000);
COT1=0x61;COT2=0x41;delay(2000);
COT1=0x51;COT2=0x31;delay(2000);
COT1=0x41;COT2=0x21;delay(2000);
COT1=0x31;COT2=0x11;delay(2000);
COT1=0x21;COT2=0x01;delay(2000);
COT1=0x11;COT2=0x90;delay(2000);
COT1=0x01;COT2=0x80;delay(2000);
COT1=0x90;COT2=0x70;delay(2000);
COT1=0x80;COT2=0x60;delay(2000);
COT1=0x70;COT2=0x50;delay(2000);
COT1=0x60;COT2=0x40;delay(2000);
COT1=0x50;COT2=0x30;delay(2000);
COT1=0x40;COT2=0x20;delay(2000);
COT1=0x30;COT2=0x10;delay(2000);
COT1=0x20;COT2=0x00;delay(2000);
COT1=0x10;COT2=0x00;V2=0;X2=1;delay(2000);
COT1=0x00;COT2=0x00;delay(2000);
}}
Sơ đồ:
Chương trình:
//***DK DEN GIAO THONG***//
#include
#define COT1 P1
#define COT2 P3
#define D1 P2_0
#define V1 P2_1
#define X1 P2_2
#define D2 P2_3
#define V2 P2_4
#define X2 P2_5
void delay (unsigned int ms)
{
unsigned int i ;
unsigned char j ; //khai bien 1 byte
for (i=0;i
for (j=0;j<125;j++)
{}
}
void main(){
while(1) // Vong lap vo han
{
COT1=0x32;COT2=0x52;X1=0;V2=1;D1=1;D2=0;delay(2000);
COT1=0x22;COT2=0x42;delay(2000);
COT1=0x12;COT2=0x32;delay(2000);
COT1=0x02;COT2=0x22;delay(2000);
COT1=0x91;COT2=0x12;delay(2000);
COT1=0x81;COT2=0x02;delay(2000);
COT1=0x71;COT2=0x91;delay(2000);
COT1=0x61;COT2=0x81;delay(2000);
COT1=0x51;COT2=0x71;delay(2000);
COT1=0x41;COT2=0x61;delay(2000);
COT1=0x31;COT2=0x51;delay(2000);
COT1=0x21;COT2=0x41;delay(2000);
COT1=0x11;COT2=0x31;delay(2000);
COT1=0x01;COT2=0x21;delay(2000);
COT1=0x90;COT2=0x11;delay(2000);
COT1=0x80;COT2=0x01;delay(2000);
COT1=0x70;COT2=0x90;delay(2000);
COT1=0x60;COT2=0x80;delay(2000);
COT1=0x50;COT2=0x70;delay(2000);
COT1=0x40;COT2=0x60;delay(2000);
COT1=0x30;COT2=0x50;delay(2000);
COT1=0x20;COT2=0x40;delay(2000);
COT1=0x10;COT2=0x30;delay(2000);
COT1=0x00;COT2=0x20;delay(2000);
COT1=0x00;COT2=0x10;V1=0;X1=1;delay(2000);
COT1=0x00;COT2=0x00;delay(2000);
COT1=0x91;COT2=0x71;D1=0;X2=0;V1=1;D2=1;X1=1;delay(2000);
COT1=0x81;COT2=0x61;delay(2000);
COT1=0x71;COT2=0x51;delay(2000);
COT1=0x61;COT2=0x41;delay(2000);
COT1=0x51;COT2=0x31;delay(2000);
COT1=0x41;COT2=0x21;delay(2000);
COT1=0x31;COT2=0x11;delay(2000);
COT1=0x21;COT2=0x01;delay(2000);
COT1=0x11;COT2=0x90;delay(2000);
COT1=0x01;COT2=0x80;delay(2000);
COT1=0x90;COT2=0x70;delay(2000);
COT1=0x80;COT2=0x60;delay(2000);
COT1=0x70;COT2=0x50;delay(2000);
COT1=0x60;COT2=0x40;delay(2000);
COT1=0x50;COT2=0x30;delay(2000);
COT1=0x40;COT2=0x20;delay(2000);
COT1=0x30;COT2=0x10;delay(2000);
COT1=0x20;COT2=0x00;delay(2000);
COT1=0x10;COT2=0x00;V2=0;X2=1;delay(2000);
COT1=0x00;COT2=0x00;delay(2000);
}}
Re: Chương trình điều khiển đèn giao thông
cám ơn nhé, nhưng mình muốn hỏi là có chương trình đèn giao thông giao tiếp với máy tính qua cổng COM bằng VC++ k? còn về code thì mình đã viết bằng assembly rồi, có điều chưa chạy được phần hẹn giờ cho đèn vàng nhấp nháy.
hanhan- Thành viên
- Tổng số bài gửi : 2
Ngày đăng ký : 19/05/2010
Similar topics
» Keil uVision3 - Lập trình cho họ vi điều khiển 8051
» Portable TeamViewer 4.0 Build 5671 (Phần mềm điều khiển máy tính qua internet)
» Lập trình viên nên biết 10 điều sau
» CHƯƠNG TRÌNH 32 LED SÁNG HẾT RỒI TẮT DẦN
» Chương trình ưu đãi lớn nhân dịp World Cup 2014
» Portable TeamViewer 4.0 Build 5671 (Phần mềm điều khiển máy tính qua internet)
» Lập trình viên nên biết 10 điều sau
» CHƯƠNG TRÌNH 32 LED SÁNG HẾT RỒI TẮT DẦN
» Chương trình ưu đãi lớn nhân dịp World Cup 2014
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|