加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于51單片機(jī)的交通燈【緊急,放行,調(diào)時(shí)】(仿真)

11小時(shí)前
360
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

AT89C52單片機(jī)控制一個(gè)交通信號(hào)燈系統(tǒng),晶振采用12MHz。設(shè)A車道與B車道交叉組成十字路口,A是主道,B是支道。設(shè)計(jì)要求如下所示:

(1)用發(fā)光二極管模擬交通信號(hào)燈,用按鍵開關(guān)模擬車輛檢測信號(hào)。

(2)正常情況下,A、B兩車道輪流放行,A車道放行50s,其中5s用于警告,B車道放行30s,其中5s用于警告。

(3)在交替繁忙時(shí),交通信號(hào)燈控制系統(tǒng)應(yīng)有手控開關(guān),可人為地改變信號(hào)燈的狀態(tài),以緩解交通擁擠狀況。在B車道放行期間,若A車道有車而B車道無車,按下開關(guān)K1使A車道放行15s;在A車道放行期間,若B車道有車而A車道無車,按下開關(guān)使B車道放行15s。

(4)有緊急車輛通行時(shí),按下開關(guān)A3,使A、B車道均為紅燈,禁行20s。

it k1=P3^2;//設(shè)置按鈕
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;//通行控制
sbit k5=P3^6;
sbit k6=P3^7;

sbit red1	=P1^0;	  //南北方向
sbit yellow1=P1^1;
sbit green1	=P1^2;
sbit red2	=P1^3;	  //東西方向
sbit yellow2=P1^4;
sbit green2	=P1^5;

sbit smg1=P2^0;//數(shù)碼管引腳
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;

uchar code tabel[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar sec=0,miao=0;	  //定時(shí)
uchar nan=0,dong=0;//東西南北時(shí)間
uchar mode=0;		  //路燈工作順序
uchar nan_lim=50,dong_lim=30;//自由調(diào)整時(shí)主次干道綠燈時(shí)間
uchar moshi=0;

void delay(uint i)//延時(shí)
{
	while(i--);
}

void control()//控制路燈
{
	switch(mode)
		{
			case 0:red1=0;yellow1=1;green1=1;red2=1;yellow2=1;green2=0;//南北紅燈亮
				nan=dong_lim+7;dong=dong_lim+1;//設(shè)置初始時(shí)間
				break;
			case 1:red1=0;yellow1=1;green1=1;red2=1;yellow2=0;green2=1;//東西黃燈亮
				dong=6;nan=6;
				break;
			case 2:red1=1;yellow1=1;green1=0;red2=0;yellow2=1;green2=1;//東西紅燈亮
				nan=nan_lim+1;dong=nan_lim+7;//設(shè)置初始時(shí)間
				break;
			case 3:red1=1;yellow1=0;green1=1;red2=0;yellow2=1;green2=1;//南北黃燈亮
				nan=6;dong=6;
		}
}

void display() //顯示各路口時(shí)間
{
	P0=tabel[nan/10];//南北
	smg1=1;
	delay(100);
	smg1=0;
	P0=tabel[nan%10];
	smg2=1;
	delay(100);
	smg2=0;
	P0=tabel[dong/10];//東西
	smg3=1;
	delay(100);
	smg3=0;
	P0=tabel[dong%10];
	smg4=1;
	delay(100);
	smg4=0;
}

void main()//主函數(shù)
{
	uchar k=0;
	TMOD=0x01;//定時(shí)器設(shè)置
	TH0=0x3c; //50ms
	TL0=0xb0;
	ET0=1;	  //開中斷
	EA=1;
	TR0=1;	 //啟動(dòng)定時(shí)器
	control();
	nan=dong_lim+6;dong=dong_lim;//設(shè)置初始時(shí)間
	while(1)
	{
		if(moshi==0)
			display();//顯示
		if(!k1 &&(k!=1))
		{				 //模式切換
			if(moshi<2)
				moshi++;
			else
				moshi=0;
			k=1;
		}
		if(moshi==1)//調(diào)節(jié)南北時(shí)間
		{
			if(!k2 &&(k!=2))
			{
				if(nan_lim<99)
					nan_lim++;
					k=2;
			}
			if(!k3 &&(k!=3))
			{
				if(nan_lim>1)
					nan_lim--;
				k=3;
			}
			P0=tabel[nan_lim/10];//南北
			smg1=1;
			delay(100);
			smg1=0;
			P0=tabel[nan_lim%10];
			smg2=1;
			delay(100);
			smg2=0;
		}
		if(moshi==2)//調(diào)節(jié)東西時(shí)間
		{
			if(!k2 &&(k!=2))
			{
				if(dong_lim<99)
					dong_lim++;
				k=2;
			}
			if(!k3 &&(k!=3))
			{
				if(dong_lim>1)
					dong_lim--;
				k=3;
			}
			P0=tabel[dong_lim/10];//東西
			smg3=1;
			delay(100);
			smg3=0;
			P0=tabel[dong_lim%10];
			smg4=1;
			delay(100);
			smg4=0;
		}
		//繁忙
		if(!k4 &&(k!=4))//A放行15s
		{
			k=4;
			if(mode==0)
			{
				mode=2;
  • 有需要資料的可了解一下.docx

相關(guān)推薦

電子產(chǎn)業(yè)圖譜