8/28/2013

MẠCH ĐÈN ĐIỀU KHIỂN GIAO THÔNG KHÔNG HIỂN THỊ GIÂY TRỄ BẰNG DELAY

   Yêu cầu của mạch là mô phỏng lại điều khiển giao thông với 3 loại màu nhưng không có đếm giây, gây trễ bằng hàm delay.
   Trước tiên phân tích theo đèn giao thông tại các ngã tư ta thấy như sau :

  • Chu kỳ là đèn đỏ sáng 30s -> đèn xanh 25s -> đèn vàng 5s .
  • Hai cột đèn đối diện nhau thì hoạt động giống nhau.
     Sơ đồ ngã tư như sau :

   Vậy ta sẽ chia chu kỳ của mỗi cột đèn thành 4 pha với :
  1. Pha 1 25s ở cột số 1-2 đèn đỏ sáng, các đèn khác tắt ; cột số 3-4 đèn xanh, các đèn khác tắt.
  2. Pha 2 5s ở cột số 1-2 đèn đỏ sáng, các đèn khác tắt ; cột số 3-4 đèn vàng, các đèn khác tắt.
  3. Pha 3 25s ở cột số 1-2 đèn xanh sáng, các đèn khác tắt ; cột số 3-4 đèn đỏ sáng, các đèn khác tắt.
  4. Pha 4 5s ở cột số 1-2 đèn vàng sáng, các đèn khác tắt; cột số 3-4 đèn đỏ sáng, các đèn khác tắt.
   Sau đó chu kỳ lặp lại. Từ yêu cầu đầu bài ta có mạch như sau (chú ý chỉ là mạch mô phỏng):
Lấy đại diện đèn D1->D3 là các đèn thuộc cụm 1-2, các đèn D4->D6 là cụm 3-4. Code asm :

;-----------------------------------------------------------;
;---------Code den giao thong khong dem giay------------;
;-------------Created by dang minh hai--------------------;
;-----------------------------------------------------------;
;*******************************************************
;khai bao cac chan
;-------------------------------------------------------
xanh1   BIT   P2.0 ;Dat chan 2.0 den xanh1                                   
do1     BIT   P2.1              ;---------2.1-----do1                      
vang1   BIT   P2.2              ;---------2.2-----vang1                      
xanh2   BIT   P2.3              ;---------2.3-----xanh2                      
do2     BIT   P2.4 ;---------2.4-----do2      
vang2   BIT   P2.5 ;---------2.5-----vang2      
;-------------------------------------------------------
;khai bao vung rom
;-------------------------------------------------------
ORG 00H ;Bat dau o dia chi 00h
FIST: MOV A,#00 ;Dat nhan fist de lap lai tu dau
MOV P2,A ;Xoa cong p2
SETB do1 ;Bat den do1
SETB xanh2 ;Bat den xanh2
MOV R5,#25 ;nap 25 vao r5 de thuc hien dem giay
LOOP1: ACALL DELAY ;goi ham tre 1 giay
DJNZ R5,LOOP1 ;lap lai 25 lan tre 1s,moi lan thuc hien vong lap se tru 1 vao r5
CLR xanh2 ;tat den xanh2
SETB vang2 ;bat den vang2
MOV R5,#5 ;nap 5 vao r5 de thuc hien dem giay
LOOP2: ACALL DELAY ;goi ham tre 1s
DJNZ R5,LOOP2 ;lap lai 5 lan tre 1s
CLR do1 ;tat den do1
CLR vang2 ;tat den vang 2
SETB xanh1 ;bat den xanh 1
SETB do2 ;bat den do2
MOV R5,#25 ;nap 25 vao r5
LOOP3: ACALL DELAY ;goi ham lam tre 1s
DJNZ R5,LOOP3 ;lap lai 25 lan ham tre 1s
CLR xanh1 ;tat den xanh1
SETB vang1 ;bat den vang1
SETB do2 ;bat den do2
MOV R5,#5 ;nap5 vao r5
LOOP4: ACALL DELAY ;goi ham gay tre 1s
DJNZ R5,LOOP4 ;lap lai 5 lan
SJMP FIST ;nhay ve dau chuong trinh
DELAY: ;nhan delay
MOV R1,#7 ;thuc hien vong lap here1 co 2*255 chu ky
HERE3: MOV R2,#255 ;vong lap here2 lap lai here1 255 cong them
HERE2: MOV R3,#255 ;lenh djnz r2,here va move r3,#255 co here2=(here1*255)+(3*255)
HERE1: DJNZ R3,HERE1 ;tuong tu here3=(here2*7)+(3*7)
DJNZ R2,HERE2 ;
DJNZ R1,HERE3 ;
RET
END

No comments:

Post a Comment