Mạch điều khiển đèn giao thông
Sơ vật dụng khối của mạch điều khiển
công dụng của từng khối: • Khối xử lý trung vai trung phong PIC18F4520: áp dụng vi tinh chỉnh PIC18F4520 để điều khiển và tinh chỉnh toàn bộ hoạt động vui chơi của mạch.Bạn đang xem: Mạch điều khiển đèn giao thông
• Khối hiển thị: thực hiện LED7 thanh nhằm hiển thị đếm giây với led solo hiển thị trạng thái. • Khối mối cung cấp nuôi: thực hiện khối tạo nên điện áp 5VDC cung cấp cho cục bộ linh khiếu nại trong mạch. • Khối thời gian thực: Đếm thời gian thực của hệ thống. Mạch thiết kế:Sau khi layout bằng ứng dụng Altium;
Mô hình dựng thực tế:
Dưới đây là lưu thiết bị thuật toán:
Cách hoạt động vui chơi của mạch: bắt đầu chương trình bao gồm sẽ kiểm soát phím bấm : – nếu như kt=0 không biến đổi thời gian vận động và chương trình sẽ chạy theo thời gian mặc định để sẵn + Đèn xanh rẽ trái sáng 10s, + Đèn xanh đi liền mạch sáng 17s. + Đèn vàng sáng 3s. + Đèn đỏ sáng 30s).
Xem thêm: Máy Ấp Trứng Mactech 200 - Máy Ấp Trứng 200 Quả Mactech Mt200G
– Nếu thay đổi kt=1 có nghĩa là đã biến đổi thời gian buổi giao lưu của đèn. + Đèn xanh rẽ trái sáng (Tđặt/3)(s). + Đèn xanh đi liền mạch sáng Tđặt-(Tđặt/3+3)(s). + Đèn xoàn sáng 3s. + Đèn đỏ sáng sủa Tđặt(s). – Chạy vào công tác ngắt sau 1s thì thời hạn sẽ sụt giảm 1 với xuất tín hiệu điều khiển ra những đèn. Chương trình hiển thị đang hiển thị thời gian đếm ngược ra những LED 7 đoạn.Source code:
#include
#include
#include
#include
#pragma config OSC=HS#pragma config MCLRE=ON#pragma config WDT=OFF#pragma config LVP=OFFint giay,s,m,h,s0;unsigned char seg<10>=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;unsigned char chedo_cd, chedo_td, chedo_fre;char LCD<32>;#define clk PORTCbits.RC0#define lat PORTCbits.RC1#define data PORTCbits.RC2#define RS PORTEbits.RE2#define RW PORTEbits.RE1#define EN PORTEbits.RE0#define DATA PORTD#define CD PORTBbits.RB1#define TD PORTBbits.RB0#define FRE PORTBbits.RB2#define V1 PORTAbits.RA1#define V2 PORTAbits.RA4#define WR1 PORTCbits.RC5#define WB1 PORTCbits.RC6#define B1 PORTAbits.RA0#define Y1 PORTAbits.RA1#define R1 PORTAbits.RA2#define B2 PORTAbits.RA3#define Y2 PORTAbits.RA4#define R2 PORTAbits.RA5#define WR2 PORTBbits.RB3#define WB2 PORTBbits.RB4unsigned int lan1,lan2,lan3,lan4;unsigned int x,chedo;unsigned int time,time1;void ngat_timer0 (void);#pragma code ngat_cao = 0x08voidngat_cao (void)_asmgoto ngat_timer0 //jump to lớn interrupt routine_endasm//----------------------------------------------------------------------------// High priority interrupt routine#pragma code#pragma interrupt ngat_timer0void ngat_timer0 ()if(INTCONbits.TMR0IF==1)T0CONbits.TMR0ON=0; // tat bo timergiay--;INTCONbits.TMR0IF=0; // xoa co tranTMR0H=(65535-62500)/256; // nap gia tri cho TMR0L,TMR0H de duoc thoi gian 1sTMR0L=(65535-62500)%256;T0CONbits.TMR0ON=1; // bat bo timervoid quet(unsigned char ch4, unsigned char dv4, unsigned char ch3, unsigned char dv3, unsigned char ch2, unsigned char dv2, unsigned char ch1, unsigned char dv1)char i;for (i = 0; i =35)lan1=lan3=giay-35;lan2=lan4=giay-30;PORTA=0B00100001;//L24 do, L13 XanhWB2=WR1=1;WB1=WR2=0;if(giay=30)lan1=lan3=giay-30;lan2=lan4=giay-30;PORTA=0B00100010;//L24 do, L13 VangWB2=WR1=1;WB1=WR2=0;if(giay=5)lan1=lan3=giay;lan2=lan4=giay-5;PORTA=0B00001100;//L24 xanh,L13 doWB2=WR1=0;WB1=WR2=1;if(giay=50)lan1=lan3=giay-50;lan2=lan4=giay-45;PORTA=0B00100001;//L24 do, L13 XanhWB2=WR1=1;WB1=WR2=0;if(giay=45)lan1=lan3=giay-45;lan2=lan4=giay-45;PORTA=0B00100010;//L24 do, L13 VangWB2=WR1=1;WB1=WR2=0;if(giay=5)lan1=lan3=giay;lan2=lan4=giay-5;PORTA=0B00001100;//L24 xanh,L13 doWB2=WR1=0;WB1=WR2=1;if(giay>4)&0x0f)*10)+(x&0x0f);int int_bcd(int x){char N<10>=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09;int a,b;a=x/10;b=x%10;return ((N18&& time18&& time22&&time18&& time22&&time