資源描述:
《紅綠燈源程序.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、設(shè)計(jì)方案一、實(shí)訓(xùn)名稱;單片機(jī)實(shí)訓(xùn)二、基本功能;設(shè)計(jì)一個(gè)交通燈,模型,通過(guò)紅,黃,綠三色發(fā)光二極管仿真紅綠交通燈,三色光的狀態(tài)按照實(shí)際的交通燈處理,各色燈的顯示時(shí)間自行定義,能夠通過(guò)LED顯示當(dāng)前狀態(tài)時(shí)間倒計(jì)時(shí)顯示。擴(kuò)展功能;各色燈的時(shí)間可以通過(guò)按鍵來(lái)進(jìn)行修改。三、任務(wù)分析1一般情況下由南北和東西組成的十字路口,南北道放行13秒(數(shù)碼管從13秒開(kāi)始倒數(shù),其中3秒用于黃燈時(shí)間),東西道放行10秒(兩個(gè)數(shù)碼管從13秒開(kāi)始倒數(shù),其中3秒用于黃燈時(shí)間)。2、編程過(guò)程:顯示界面:采用數(shù)碼管和LED燈相結(jié)合的方法,因?yàn)閷?shí)際既要求倒計(jì)時(shí)施主輸出,又要求又狀態(tài)燈輸
2、出等,為方便觀看并考慮到現(xiàn)實(shí)狀況,用2個(gè)共陰極數(shù)碼管與12個(gè)LED分別顯示時(shí)間和燈提示信息??刂贫丝赻`0/用p1口來(lái)控制紅綠燈的變化1、用p3口來(lái)控制數(shù)碼管的顯示2、用p2口的高四位來(lái)控制com端口3、用p2口的低四位來(lái)控制按鍵端口4、用共陰極數(shù)碼管來(lái)顯示倒計(jì)時(shí)5、P1口用低電平點(diǎn)亮燈,1、設(shè)計(jì)思路;51單片機(jī)來(lái)作為主控,根據(jù)電平的變換來(lái)控制紅綠燈的狀態(tài),時(shí)間用數(shù)碼管的顯示來(lái)控制,2、設(shè)一個(gè)十字路口的初始狀態(tài)1:南北綠燈亮,東西紅燈亮;持續(xù)一段時(shí)間然后轉(zhuǎn)狀態(tài)2:南北綠燈變成黃燈亮,東西紅燈亮;過(guò)后轉(zhuǎn)狀態(tài),持續(xù)一段時(shí)間3:東西綠燈亮,南北紅燈亮;
3、持續(xù)一段時(shí)間再轉(zhuǎn)狀態(tài)4:東西綠燈變成黃燈亮,南北紅燈亮。一段時(shí)間后,又循環(huán)至狀態(tài)1。中間可通過(guò)中斷按鍵產(chǎn)生中斷,跳入中斷程序執(zhí)行中斷。按鍵方面我用了三個(gè),一個(gè)用來(lái)南北、東西互換是時(shí)候用來(lái)調(diào)整紅綠燈的狀態(tài)時(shí)間用其他兩按鍵來(lái)控制,實(shí)現(xiàn)調(diào)整。7、交通信號(hào)燈的狀態(tài)表如下:(其中,0代表燈亮,1代表燈滅)1)P1口:做為輸出口,與發(fā)光二極管相連接,其狀態(tài)及對(duì)應(yīng)的十六進(jìn)制值如下:方向狀態(tài)無(wú)南北東西十六進(jìn)制值說(shuō)明P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.01000111100x6c南北綠東西紅2001011100xac南北黃東西紅30011
4、00110xd8東西綠南北紅4001101010xd4東西綠南北黃2)對(duì)于交通信號(hào)燈來(lái)說(shuō),應(yīng)該有東西南北共四組燈,但由于同一道上的兩組的信號(hào)燈的顯示情況是相同的,因此,采用單片機(jī)內(nèi)部的I/O口上的P1口中的6個(gè)引腳即可來(lái)控制12個(gè)信號(hào)燈。3、通過(guò)編寫程序,實(shí)現(xiàn)對(duì)發(fā)光二極管的控制,來(lái)模擬交通信號(hào)燈的管理。每延時(shí)一段時(shí)間,燈的顯示情況都會(huì)按交通燈的顯示規(guī)律進(jìn)行狀態(tài)轉(zhuǎn)換。4、通過(guò)延時(shí)時(shí)間來(lái)實(shí)現(xiàn)倒計(jì)時(shí)顯示器,增添和減少顯示時(shí)間來(lái)實(shí)現(xiàn)其倒計(jì)時(shí)和燈持續(xù)的時(shí)間。5、共陰極:把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極。使用時(shí)公共陰極接地。這樣陽(yáng)極端輸入高電平的段發(fā)光
5、二極管就導(dǎo)通點(diǎn)亮,而輸入低電平的則不亮。4控制數(shù)碼管驅(qū)動(dòng)級(jí)的控制電路有靜態(tài)式和動(dòng)態(tài)式兩類:5靜態(tài)驅(qū)動(dòng):它是指每個(gè)數(shù)碼管都要用一個(gè)譯碼器譯碼驅(qū)動(dòng)。6動(dòng)態(tài)驅(qū)動(dòng):它是所的數(shù)碼管使用一個(gè)專門的譯碼驅(qū)動(dòng)器,使各位數(shù)碼管逐個(gè)輪流顯示,延時(shí)時(shí)間比較短所以顯示出來(lái)電路圖紅綠燈的源程序#includesbitcom1=P2^7;//定義com端sbitcom2=P2^6;sbitcom3=P2^5;sbitcom4=P2^4;sbitk1=P2^3;//定義開(kāi)關(guān)端口sbitk2=P2^1;sbitk3=P2^0;unsignedchartable
6、[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管的代碼顯示unsignedcharnum=0,num1,temp1=10,temp2=13,flag;//定義變量voiddelay();//定義延時(shí)voidscanfkey();//定義按鍵控制voiddisplay();//定義調(diào)用程序unsignedcharm1=10,m2=13,m3=13,m4=10,a,b,c,d;//全局變量的定義voidmain(){TMOD=0X01;//定時(shí)計(jì)數(shù)器工作在方式一TH0=(6553
7、5-50000)/256;//定義定時(shí)計(jì)數(shù)器每次執(zhí)行運(yùn)行50MSTL0=(65535-50000)%256;ET0=1;//允許T0中斷開(kāi)始EA=1;//cpu工作TR0=1;//定時(shí)計(jì)數(shù)器運(yùn)行com1=1;//顯示器工作com2=1;com3=1;com4=1;P1=0x6c;//東西綠燈時(shí)候的亮燈情況while(1){display();//調(diào)用數(shù)碼管顯示子程序scanfkey();//按鍵調(diào)用子程序}}voidtimer0()interrupt1//定時(shí)計(jì)數(shù)器0{TH0=(65535-50000)/256;//定義定時(shí)計(jì)數(shù)器每次執(zhí)行運(yùn)行50
8、MSTL0=(65535-50000)%256;num++;if(num==4)//當(dāng)運(yùn)行到20次的時(shí)候是1秒{num=0;//運(yùn)行20