单片机设计一个十字路口交通灯模拟控制系统(51单片机实训)
1.東西、南北兩個(gè)方向都通行25s(綠燈亮),警告5s(黃燈亮),禁行30s(紅燈亮),用LED模擬交通燈
2.各個(gè)方向用數(shù)碼管顯示剩余時(shí)間
3.考慮到異常狀態(tài)
東西發(fā)生異常時(shí),東西通行,南北禁止,東西方向綠燈閃,南北方向紅燈閃60s
南北方向異常時(shí),南北通行,東西禁行,南北方向綠燈閃,東西方向紅燈閃60s
4.兩種異常用外部中斷0和外部中斷1管理,外接開關(guān)模擬異常發(fā)生
proteus電路圖如下:(如有需要原圖的可評(píng)論找我拿)
代碼如下:
#include<reg51.h>
sbit SN_green=P0^3;
sbit SN_yellow=P0^4;
sbit SN_red=P0^5;
sbit EW_green=P0^0;
sbit EW_yellow=P0^1;
sbit EW_red=P0^2;
//sbit SN_cg=P2^0;
//sbit SN_cs=P2^1;
//sbit EW_cg=P2^2;
//sbit EW_cs=P2^3;
unsigned char data cnt_sn,cnt_ew;
unsigned int data T1_cnt;
unsigned char data state_val_sn,state_val_ew;
//char code led_seg_code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char code led_seg_code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char code init_sn[3]={24,4,29};
char code init_ew[3]={29,24,4};
void delay(unsigned int t)
{
while(–t);
}
void led_show(unsigned int u,unsigned int v)
{
}
void timer1() interrupt 3
{
T1_cnt++;
if(T1_cnt>3999)
{
T1_cnt=0;
}
}
void abnorma1() interrupt 0 //異常1 南北通行
{
cnt_sn=60;
cnt_ew=60;
SN_green=0;
SN_yellow=1;
SN_red=1;
EW_green=1;
EW_yellow=1;
EW_red=0;
}
void abnorma2() interrupt 2 //異常2 東西通行
{
cnt_sn=60;
cnt_ew=60;
SN_green=1;
SN_yellow=1;
SN_red=0;
EW_green=0;
EW_yellow=1;
EW_red=1;
}
main()
{
cnt_sn=init_sn[0];
cnt_ew=init_ew[0];
T1_cnt=0;
state_val_sn=0;
state_val_ew=0;
SN_green=0;
SN_yellow=1;
SN_red=1;
EW_green=1;
EW_yellow=1;
EW_red=0;
TMOD=0x20;
TH1=0x19;
TL1=0x19;
EA=1;
ET1=1;TR1=1;
IT1=1;EX1=1;
IT0=1;EX0=1;
while(1)
{ delay(10);
led_show(cnt_sn,cnt_ew);
}
}
總結(jié)
以上是生活随笔為你收集整理的单片机设计一个十字路口交通灯模拟控制系统(51单片机实训)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 概率练习 (16.04.30)
- 下一篇: Vue--问题解决