Mạch điều khiển đèn giao thông

     
Khối MCU sử dụng chip PIC18F4520 Khối hiển thị sử dụng screen LED7 thanh Khối nguồn nuôi 5VDC Khối điều khiển

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