功能
1、本設(shè)計(jì)基于STC89C51/52(與AT89S51/52、AT89C51/52通用,可任選)單片機(jī)
2、數(shù)碼管倒計(jì)時(shí)顯示時(shí)間。
3、東西和南北方向各有兩個(gè)數(shù)碼管,分別顯示時(shí)間,東西和南北的時(shí)間是不一樣的哦,要相差黃燈的時(shí)間才是正確的。
4、可以分別設(shè)置主干道和支干道的通行時(shí)間。
5、有緊急模式,可以特種車輛優(yōu)先通行或交通事故應(yīng)急處理。
操作說(shuō)明
按鍵依次功能:黃燈長(zhǎng)亮(深夜模式)、紅燈長(zhǎng)亮(禁行)、確定調(diào)時(shí)時(shí)間、時(shí)間加、時(shí)間減、切換調(diào)時(shí)方向(東西和南北均可以分別設(shè)置通行時(shí)間)。單獨(dú)的是復(fù)位按鍵。
參考論文

原理圖

程序源代碼
//主程序
void main()
{
TMOD=0X11; //定時(shí)器設(shè)置
TH1=0X3C;
TL1=0XB0;
TH0=0X3C; //定時(shí)器0置初值 0.05S
TL0=0XB0;
EA=1; //開總中斷
ET0=1; //定時(shí)器0中斷開啟
ET1=1; //定時(shí)器1中斷開啟
TR0=1; //啟動(dòng)定時(shí)0
TR1=0; //關(guān)閉定時(shí)1
logo(); //開機(jī)初始化
P2=0Xc3; // 開始默認(rèn)狀態(tài),東西綠燈,南北黃燈
sec_nb=sec_dx+5; //默認(rèn)南北通行時(shí)間比東西多5秒
while(1) //主循環(huán)
{
key(); //調(diào)用按鍵掃描程序
display(); //調(diào)用顯示程序
}
}
//函數(shù)的定義部分
void key(void) //按鍵掃描子程序
{
if(k1!=1) //當(dāng)K1(時(shí)間加)按下時(shí)
{
display(); //調(diào)用顯示,用于延時(shí)消抖
if(k1!=1) //如果確定按下
{
TR0=0; //關(guān)定時(shí)器
shanruo=0; //閃爍標(biāo)志位關(guān)
P2=0x00; //滅顯示
TR1=0; //啟動(dòng)定時(shí)1
if(set==0) //設(shè)置鍵按下
set_timedx++; //南北加1S
else
set_timenb++; //東西加1S
if(set_timenb==100)
set_timenb=1;
if( set_timedx==100)
set_timedx=1; //加到100置1
sec_nb=set_timenb ; //設(shè)置的數(shù)值賦給東西南北
sec_dx=set_timedx;
do
{
display(); //調(diào)用顯示,用于延時(shí)
}
while(k1!=1); //等待按鍵釋放
}
}
if(k2!=1) //當(dāng)K2(時(shí)間減)按鍵按下時(shí)
{
display(); //調(diào)用顯示,用于延時(shí)消抖
if(k2!=1) //如果確定按下
{
TR0=0; //關(guān)定時(shí)器0
shanruo=0; //閃爍標(biāo)志位關(guān)
P2=0x00; //滅顯示
TR1=0; //關(guān)定時(shí)器1
if(set==0)
set_timedx--; //南北減1S
else
set_timenb--; //東西減1S
if(set_timenb==0)
set_timenb=99;
if( set_timedx==0 )
set_timedx=99; //減到1重置99
sec_nb=set_timenb ; //設(shè)置的數(shù)值賦給東西南北
sec_dx=set_timedx;
do
{
display(); //調(diào)用顯示,用于延時(shí)
}
while(k2!=1); //等待按鍵釋放
}
}
if(k3!=1) //當(dāng)K3(確認(rèn))鍵按下時(shí)
{
display(); //調(diào)用顯示,用于延時(shí)消抖
if(k3!=1) //如果確定按下
{
TR0=1; //啟動(dòng)定時(shí)器0
sec_nb=set_timenb; //從中斷回復(fù),仍顯示設(shè)置過(guò)的數(shù)值
sec_dx=set_timedx; //顯示設(shè)置過(guò)的時(shí)間
TR1=0; //關(guān)定時(shí)器1
if(set==0) //時(shí)間倒時(shí)到0時(shí)
{
P2=0X00; //滅顯示
Green_dx=1; //東西綠燈亮
Red_nb=1; //南北紅燈亮
sec_nb=sec_dx+5; //回到初值
}
else
{
P2=0x00; //南北綠燈,東西紅燈
Green_nb=1;
Red_dx=1;
sec_dx=sec_nb+5;
}
}
}
if(k4!=1) //當(dāng)K4(切換)鍵按下
{
display(); //調(diào)用顯示,用于延時(shí)消抖
if(k4!=1) //如果確定按下
{
TR0=0; //關(guān)定時(shí)器0
set=!set; //取反set標(biāo)志位,以切換調(diào)節(jié)方向
TR1=0; //關(guān)定時(shí)器1
dx_nb=set;
do
{
display(); //調(diào)用顯示,用于延時(shí)
}
while(k4!=1); //等待按鍵釋放
}
}
if(k5!=1) //當(dāng)K5(禁止)鍵按下時(shí)
{
display(); //調(diào)用顯示,用于延時(shí)消抖
if(k5!=1) //如果確定按下
{
TR0=0; //關(guān)定時(shí)器
P2=0x00; //滅顯示
Red_dx=1;
Red_nb=1; //全部置紅燈
TR1=0;
sec_dx=00; //四個(gè)方向的時(shí)間都為00
sec_nb=00;
do
{
display(); //調(diào)用顯示,用于延時(shí)
}
while(k5!=1); //等待按鍵釋放
}
}
if(k6!=1) //當(dāng)K6(夜間模式)按下
{
display(); //調(diào)用顯示,用于延時(shí)消抖
if(k6!=1) //如果確定按下
{
TR0=0; //關(guān)定時(shí)器
P2=0x00;
TR1=1;
sec_dx=00; //四個(gè)方向的時(shí)間都為00
sec_nb=00;
do
{
display(); //調(diào)用顯示,用于延時(shí)
}
while(k6!=1); //等待按鍵釋放
}
}
}
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6072文章
45267瀏覽量
661161 -
STC89C52
+關(guān)注
關(guān)注
41文章
330瀏覽量
83956 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1889瀏覽量
93526 -
智能交通燈
+關(guān)注
關(guān)注
0文章
15瀏覽量
9671
原文標(biāo)題:【畢業(yè)設(shè)計(jì)004】-基于STC89C52的智能交通燈(程序、原理圖、視頻講解、操作說(shuō)明、參考lunwen)
文章出處:【微信號(hào):精通單片機(jī)與嵌入式,微信公眾號(hào):精通單片機(jī)與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
怎樣去設(shè)計(jì)基于STC89C52單片機(jī)的霓虹燈
基于STC89C52單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)
基于STC89C52單片機(jī)的智能交通燈控系統(tǒng)設(shè)計(jì)
基于STC89C52單片機(jī)的智能窗簾控制系統(tǒng)
基于STC89C52單片機(jī)的智能循跡小車設(shè)計(jì)
基于單片機(jī)STC89c52 GSM的智能家居報(bào)警系統(tǒng)設(shè)計(jì)
基于單片機(jī)STC89C52控制的智能小車簡(jiǎn)介
STC89C52單片機(jī)
STC89C52_51單片機(jī)_例程4_交通燈_C語(yǔ)言代碼
基于STC89C52單片機(jī)的霓虹燈

基于STC89C52單片機(jī)的智能交通燈設(shè)計(jì)
評(píng)論