




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目二智慧交通顯示系統(tǒng)智能控制
馮蓉珍
《微處理器程序設(shè)計(jì)》任務(wù)2.2精準(zhǔn)的時(shí)間顯示任務(wù)目標(biāo)
隨著科技飛速發(fā)展,微處理器不斷深入我們的生活。本學(xué)習(xí)任務(wù)模擬交通信號(hào)燈系統(tǒng)利用典型的AT89S51為核心元件,實(shí)現(xiàn)智能控制路面上的交通信號(hào)燈。本任務(wù),根據(jù)實(shí)際情況設(shè)計(jì)一套交通信號(hào)燈控制系統(tǒng),假設(shè)在十字路口,分為南北向和東西向,在任一時(shí)刻,只有一個(gè)方向通行,另一方向禁行,持續(xù)一段時(shí)間后,經(jīng)過(guò)短暫過(guò)渡,將通行方向和禁行方向?qū)Q。知識(shí)準(zhǔn)備
定時(shí)/計(jì)數(shù)器是嵌入式計(jì)算機(jī)中重要的功能模塊之一,也可用于對(duì)外部事件計(jì)數(shù)。以51系列為代表的嵌入式計(jì)算機(jī)內(nèi)部有兩個(gè)16位可編程定時(shí)/計(jì)數(shù)器,即定時(shí)器T0和定時(shí)器T1。它們都具有定時(shí)和計(jì)數(shù)的功能,并由4種工作方式可以選擇。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備一、定時(shí)/計(jì)數(shù)器工作原理圖2-7定時(shí)器/計(jì)數(shù)器工作原理圖
定時(shí)/計(jì)數(shù)器T0和T1實(shí)質(zhì)上是加1計(jì)數(shù)器,即每輸入一個(gè)脈沖,計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器全為1時(shí),再輸入一個(gè)脈沖,就使得計(jì)數(shù)器歸零,且計(jì)數(shù)器溢出使TCON中的標(biāo)志位TF1或TF0置1,向CPU發(fā)出中斷請(qǐng)求。根據(jù)輸入的計(jì)數(shù)脈沖來(lái)源不同,把它們分成定時(shí)與計(jì)數(shù)兩種功能。作定時(shí)器時(shí),脈沖來(lái)自于內(nèi)部時(shí)鐘振蕩器;作計(jì)數(shù)器時(shí),脈沖來(lái)自于外部引腳。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備(1)定時(shí)器模式
在作定時(shí)器使用時(shí),輸入脈沖由內(nèi)部振蕩器的輸出經(jīng)過(guò)12分頻后送來(lái),因此定時(shí)器也可看作是對(duì)機(jī)器周期的計(jì)數(shù)器。若晶振為12MHz,則機(jī)器周期為1us,定時(shí)器每接收一個(gè)輸入脈沖的時(shí)間為1us;若晶振頻率為6MHz,則一個(gè)機(jī)器周期為2us,定時(shí)器每接收一個(gè)輸入脈沖的時(shí)間為2us。因此,確定定時(shí)時(shí)間,其實(shí)只需要對(duì)脈沖進(jìn)行計(jì)數(shù)即可。(2)計(jì)數(shù)模式在作計(jì)數(shù)器使用時(shí),輸入脈沖是由外部引腳P3.4(T0)或P3.5(T1)輸入到計(jì)數(shù)器。在每個(gè)機(jī)器周期的S5P2期間采樣T0,T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一個(gè)周期又采樣到一低電平時(shí),則計(jì)數(shù)器加1。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備(3)計(jì)數(shù)器位數(shù)計(jì)數(shù)器位數(shù)確定了計(jì)數(shù)器的最大計(jì)數(shù)值M和計(jì)數(shù)范圍。n位計(jì)數(shù)器的最大計(jì)數(shù)值M=2n,計(jì)數(shù)范圍為0~2n-1。比如8位計(jì)數(shù)器的最大計(jì)數(shù)值為M=256,計(jì)數(shù)范圍為0~255。二、定時(shí)/計(jì)數(shù)器的組成以51系列為代表的單片機(jī)內(nèi)部有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器T0和T1。其邏輯結(jié)構(gòu)如圖2-8所示。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備T0、T1是16位加法計(jì)數(shù)器,分別由兩個(gè)8位專用寄存器組成,T0由TH0和TL0組成,T1由TH1和TL1組成。每個(gè)寄存器均可被單獨(dú)訪問(wèn),因此可以被設(shè)置為8位、13位或16位計(jì)數(shù)器使用。定時(shí)/計(jì)數(shù)器允許用戶編程設(shè)定開始計(jì)數(shù)的數(shù)值,稱為賦初值。初值不同,則計(jì)數(shù)器產(chǎn)生溢出時(shí),計(jì)數(shù)個(gè)數(shù)也不同。例如:對(duì)于8位計(jì)數(shù)器,計(jì)數(shù)最大值為256。當(dāng)初值設(shè)為100時(shí),再加1計(jì)數(shù)156個(gè),計(jì)數(shù)器就產(chǎn)生溢出;當(dāng)初值設(shè)為200時(shí),再加1計(jì)數(shù)56個(gè),計(jì)數(shù)器產(chǎn)生溢出。初值計(jì)算方法:假設(shè)晶振頻率為12MHz,那么計(jì)數(shù)頻率f計(jì)數(shù)=12MHZ/12=1MHz;計(jì)數(shù)周期為T計(jì)數(shù)=1/f計(jì)數(shù)=1us;如果需要定時(shí)1ms,那么計(jì)數(shù)個(gè)數(shù)count=1ms/1us=1000,任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備假設(shè)使用16位計(jì)數(shù)器,則初值=216-1000=65536-1000=64536。假設(shè)由定時(shí)/計(jì)數(shù)器T0進(jìn)行定時(shí)/計(jì)數(shù),則兩個(gè)寄存器的初值分別為:TH0=64536/256;TL0=64536%256。三、定時(shí)/計(jì)數(shù)器工作方式寄存器TMODTMOD為定時(shí)/計(jì)數(shù)器工作方式寄存器,其格式為表2-8表2-8定時(shí)/計(jì)數(shù)器工作方式寄存器TMOD的格式位序號(hào)D7D6D5D4D3D2D1D0位符號(hào)GATEC/TM1M0GATEC/TM1
M0T1T0任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備假設(shè)使用16位計(jì)數(shù)器,則初值=216-1000=65536-1000=64536。假設(shè)由定時(shí)/計(jì)數(shù)器T0進(jìn)行定時(shí)/計(jì)數(shù),則兩個(gè)寄存器的初值分別為:TH0=64536/256;TL0=64536%256。三、定時(shí)/計(jì)數(shù)器工作方式寄存器TMODTMOD為定時(shí)/計(jì)數(shù)器工作方式寄存器,其格式為表2-8表2-8定時(shí)/計(jì)數(shù)器工作方式寄存器TMOD的格式TMOD的低4位為T0的工作方式字段,高4位為T1的工作方式字段,它們的含義如表2-9所示。位序號(hào)D7D6D5D4D3D2D1D0位符號(hào)GATEC/TM1M0GATEC/TM1
M0T1T0任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備表2-9工作方式選擇位含義M1M0工作方式功能說(shuō)明00方式013位計(jì)數(shù)器01方式116位計(jì)數(shù)器10方式2初值自動(dòng)重載8位計(jì)數(shù)器11方式3T0:分成兩個(gè)獨(dú)立的8位計(jì)數(shù)器T1:停止計(jì)數(shù)工作方式0為由THx的高8位和TLx的低5位組成13位計(jì)數(shù)器。(x取值為0或1);工作方式1為由THx的高8位和TLx的低8位組成16位計(jì)數(shù)器。(x取值為0或1);工作方式2為8位定時(shí)/計(jì)數(shù)器,初值由TLx決定,THx的值和TLx一致。每次中斷結(jié)束后都會(huì)將THx的值自動(dòng)沖載到TLx寄存器中。(x取值為0或1);任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備
當(dāng)工作在方式3時(shí),定時(shí)/計(jì)數(shù)器T0被拆成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器使用,T1停止計(jì)數(shù)。TL0所對(duì)應(yīng)的定時(shí)/計(jì)數(shù)器使用T0原來(lái)的資源,即使用TR0控制啟動(dòng),TF0作為溢出標(biāo)志。TH0對(duì)應(yīng)的定時(shí)/計(jì)數(shù)器借用T1的資源TR1和TF1。只有T0可以設(shè)置為工作方式3,T1設(shè)置為工作方式3時(shí)不工作。
說(shuō)明:當(dāng)T0在工作方式3時(shí),T1仍然可以設(shè)置為方式0,方式1和方式2.但由于TR1,TF1和T1的中斷源已被T0占用,因此,定時(shí)器T1僅由控制位C/T切換其定時(shí)或計(jì)數(shù)功能。當(dāng)計(jì)數(shù)器計(jì)滿溢出時(shí),只能將輸出送往串行口。在這種情況下,T1一般用作串行口波特率發(fā)生器或不需要中斷的場(chǎng)合。因T1的TR1被占用,當(dāng)設(shè)置好工作方式后,T1自動(dòng)開始計(jì)數(shù),當(dāng)送入一個(gè)設(shè)置T1為工作方式3的方式字后,T1停止計(jì)數(shù)。每種工作方式的邏輯電路如圖2-8和圖2-9所示任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備表2-10其他各位含義控制位功
能
說(shuō)
明C/T功能選擇位C/T=0時(shí),設(shè)定為定時(shí)器工作方式;C/T=1時(shí),設(shè)定為計(jì)數(shù)器工作方式。GATE門控位GATE=0時(shí),軟件啟動(dòng)方式,將TCON寄存器中的TR0或TR1置1即可啟動(dòng)相應(yīng)定時(shí)器;當(dāng)GATE=1時(shí),軟硬件共同啟動(dòng)方式,軟件控制TR0或TR1置1的同時(shí),還需要INT0(P3.2)或INT1(P3.3)為高電平才可啟動(dòng)相應(yīng)定時(shí)器,即允許外部中斷0或外部中斷1啟動(dòng)定時(shí)器。任務(wù)二精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備四、定時(shí)/計(jì)數(shù)器控制寄存器TCON
該寄存器既有定時(shí)/計(jì)數(shù)器的控制功能又有中斷控制功能。TCON可以位尋址,即對(duì)寄存器的每一位可進(jìn)行單獨(dú)操作。復(fù)位時(shí)TCON全部被清0。表2-11為TCON的格式;表2-12為TCON各位的定義。
表2-11定時(shí)/計(jì)數(shù)器控制寄存器TCON的格式位序號(hào)D7D6D5D4D3D2D1D0位符號(hào)TF1TR1TF0TR0IE1IT1IE0IT0任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備表2-12定時(shí)/計(jì)數(shù)器控制寄存器TCON各位的意義位符號(hào)說(shuō)明功
能TF1T1溢出標(biāo)志位T1被啟動(dòng)計(jì)數(shù)后,從初值開始加1計(jì)數(shù),計(jì)數(shù)滿溢出后由硬件置位TF1,同時(shí)向CPU發(fā)出中斷請(qǐng)求,此標(biāo)志一直保持到CPU響應(yīng)中斷后才由硬件自動(dòng)清零。也可由軟件查詢?cè)摌?biāo)志,并由軟件清零。TR1T1運(yùn)行控制位由軟件清零關(guān)閉定時(shí)器1。即TR1=0,關(guān)閉定時(shí)器1。當(dāng)GATE=0時(shí),TR1軟件置1即啟動(dòng)定時(shí)器1。當(dāng)GATE=1時(shí),且INT1為高電平時(shí),TR1置1啟動(dòng)定時(shí)器1TF0T0溢出標(biāo)志位T0被啟動(dòng)計(jì)數(shù)后,從初值開始加1計(jì)數(shù),計(jì)數(shù)滿溢出后由硬件置位TF0,同時(shí)向CPU發(fā)出中斷請(qǐng)求,此標(biāo)志一直保持到CPU響應(yīng)中斷后才由硬件自動(dòng)清零。也可由軟件查詢?cè)摌?biāo)志,并由軟件清零。TR0T0運(yùn)行控制位由軟件清零關(guān)閉定時(shí)器0。即TR0=0,關(guān)閉定時(shí)器0。當(dāng)GATE=0時(shí),TR0軟件置1即啟動(dòng)定時(shí)器0。當(dāng)GATE=1時(shí),且INT0為高電平時(shí),TR0置1啟動(dòng)定時(shí)器0IE1外部中斷1請(qǐng)求標(biāo)志位IE1=1,外部中斷1向CPU申請(qǐng)中斷(硬件置1),當(dāng)CPU響應(yīng)中斷后,由硬件自動(dòng)清零。IT1外部中斷1觸發(fā)方式選擇位IT1=1,下降沿觸發(fā)方式;IT1=0,低電平觸發(fā)方式,該位由軟件置位或清除。IE0外部中斷0請(qǐng)求標(biāo)志位IE0=1,外部中斷0向CPU申請(qǐng)中斷(硬件置1),當(dāng)CPU響應(yīng)中斷后,由硬件自動(dòng)清零。IT0外部中斷0觸發(fā)方式選擇位IT0=1,下降沿觸發(fā)方式;IT0=0;低電平觸發(fā)方式,該位由軟件置位或清除。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示知識(shí)準(zhǔn)備五、定時(shí)/計(jì)數(shù)器的工作過(guò)程(1)設(shè)置定時(shí)/計(jì)數(shù)器工作方式。通過(guò)設(shè)置TMOD,確定相應(yīng)的定時(shí)/計(jì)數(shù)器是定時(shí)功能還是計(jì)數(shù)功能,確定工作方式及啟動(dòng)方式。(2)設(shè)置計(jì)數(shù)初值。定時(shí)時(shí)間=(2n-X)*12/fosc;其中n為計(jì)數(shù)位數(shù);X為初始值,fosc為晶振頻率。THM=X/256;TLM=X%256,M為0或1(3)啟動(dòng)定時(shí)/計(jì)數(shù)器。根據(jù)第(1)步中設(shè)置的啟動(dòng)方式啟動(dòng)定時(shí)/計(jì)數(shù)器。(4)計(jì)數(shù)溢出。一旦計(jì)數(shù)溢出,溢出標(biāo)志位TF1或TF0會(huì)置1,通知用戶定時(shí)/計(jì)數(shù)器已經(jīng)計(jì)滿,用戶可以通過(guò)查詢溢出標(biāo)志位的狀態(tài)或者中斷方式進(jìn)行操作。任務(wù)2.2精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施子任務(wù)一分秒不差的秒表設(shè)計(jì)
現(xiàn)在計(jì)時(shí)搶答類娛樂(lè)節(jié)目中,通常會(huì)用到由兩位數(shù)碼管顯示計(jì)時(shí)時(shí)間,或者是由一分鐘倒計(jì)時(shí),哪位選手用時(shí)最短,剩余時(shí)間最多者獲勝。主持人通過(guò)按下計(jì)時(shí)按鈕開始倒計(jì)時(shí),選手按下停止按鈕,停止計(jì)時(shí),數(shù)碼管顯示的時(shí)間即為剩余時(shí)間。一旦倒計(jì)時(shí)到0秒,沒有選手按下停止按鈕,則會(huì)點(diǎn)亮某個(gè)LED燈以示報(bào)警。本項(xiàng)目要求完成的工作是分解出60秒倒計(jì)時(shí)的工作過(guò)程及控制方法,完成硬件電路設(shè)計(jì)和軟件編程。通過(guò)單片機(jī)的兩個(gè)外部中斷和定時(shí)器中斷實(shí)現(xiàn)60S倒計(jì)時(shí)控制,以模擬仿真生活中真實(shí)的倒計(jì)時(shí)顯示效果。本項(xiàng)目主要采用中斷方式進(jìn)行外部中斷和定時(shí)器中斷控制,由此使學(xué)生加深對(duì)中斷的理解,為后面的綜合應(yīng)用打下夯實(shí)的基礎(chǔ)。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施1、硬件電路設(shè)計(jì)
根據(jù)任務(wù)說(shuō)明及工作內(nèi)容及要求,通過(guò)具體分析,設(shè)計(jì)如下圖2-10所示電路。圖2-1160s倒計(jì)時(shí)秒表電路圖
任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施2、60S倒計(jì)時(shí)秒表程序設(shè)計(jì)1)主程序設(shè)計(jì)在主程序中需要對(duì)TMOD、TCON、TH0、TL0等寄存器進(jìn)行初始化。首先確定選用定時(shí)/計(jì)數(shù)器0作為定時(shí)器,工作方式設(shè)定為方式1,16位計(jì)數(shù)器,使用12MHz晶振,每次定時(shí)器定時(shí)時(shí)間為10毫秒。(1)定時(shí)器T0工作方式設(shè)置:TMOD=00000001B;即TMOD=0X01;T0工作方式1;(2)初始值計(jì)算:10ms=(216-X)*12/12MHz;其中X為初始值X=65536-10*10-3/(1*10-6)=55536;因此,TH0=55536/256;TL0=55536%256;任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施(3)優(yōu)先級(jí)設(shè)定考慮到實(shí)際應(yīng)用情況,當(dāng)按下連接在外部中斷1上K3按下后,應(yīng)立即停止計(jì)時(shí),因此外部中斷1的優(yōu)先最高;外部中斷0和定時(shí)/計(jì)數(shù)器0按自然優(yōu)先級(jí)排序即可。因此,PX1=1;PX0=0;PT0=0;(4)打開中斷總開關(guān),同時(shí)允許外部中斷0和外部中斷1,定時(shí)器T0中斷,因此EA=1;EX1=1;EX0=1;ET0=1;(5)P1和P2端口輸出全0,使得數(shù)碼管SMG1、SMG2分別顯示8。因此,P1=0X00;P2=0X00;(6)設(shè)定時(shí)間顯示的初始值為60;因此定義seconds=60。(7)循環(huán)體設(shè)計(jì)主程序除了進(jìn)行一些寄存器的初始化設(shè)置和一些變量初始化外,就進(jìn)入while(1)的死循環(huán)中,循環(huán)顯示當(dāng)前的時(shí)間秒數(shù),并等待外部中斷0、外部中斷1和定時(shí)器中斷的產(chǎn)生。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施2)外部中斷0程序設(shè)計(jì)當(dāng)按下K2觸發(fā)外部中斷0提出請(qǐng)求,啟動(dòng)T0開始計(jì)時(shí),即TR0=1;每次按下K2都是從60S開始倒計(jì)時(shí),因此seconds=60;3)外部中斷1程序設(shè)計(jì)當(dāng)按下K3觸發(fā)外部中斷1提出請(qǐng)求,停止T0計(jì)時(shí),及TR0=0;4)定時(shí)器T0中斷程序設(shè)計(jì)T0的定時(shí)時(shí)間為10毫秒,就是說(shuō)每10ms,定時(shí)器會(huì)觸發(fā)一次定時(shí)中斷,如果需要定時(shí)1秒,就需要觸發(fā)100次,因此用變量n來(lái)統(tǒng)計(jì)觸發(fā)的次數(shù),當(dāng)n>=100,表示1秒時(shí)間到,此時(shí)需要將顯示秒數(shù)減1,并獲取顯示的十位和各位數(shù)字。若定義shi表示十位數(shù),ge表示個(gè)位數(shù),則shi=seconds/10;ge=seconds%10;任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施5)數(shù)碼管顯示數(shù)字的程序設(shè)計(jì)
考慮到用共陽(yáng)極7段數(shù)碼管,將數(shù)碼管顯示0-9的碼值存放到數(shù)組table中,數(shù)字0的碼值為0xc0;則table[0]=0xc0;那么如果希望SMG1顯示0的話,只需要設(shè)置P1=table[0]即可,以此類推。3、程序調(diào)試與仿真4、開發(fā)板運(yùn)行圖2-1360s倒計(jì)時(shí)秒表開發(fā)板連線及運(yùn)行效果任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施子任務(wù)二奇妙的信號(hào)燈顯示
本項(xiàng)目要完成的工作是分解出交通信號(hào)燈工作順序和控制狀態(tài)方式,完成交通信號(hào)燈的硬件設(shè)計(jì)和軟件設(shè)計(jì)。通過(guò)單片機(jī)控制外圍電路點(diǎn)亮發(fā)光二極管,模擬仿真生活中真實(shí)的交通信號(hào)燈顯示效果。本項(xiàng)目對(duì)交通信號(hào)燈控制過(guò)程中,主要采用位操作,通過(guò)對(duì)某一位的置位或清零來(lái)完成基本信號(hào)燈的亮滅控制,由此加深學(xué)生對(duì)位操作的理解,為以后的應(yīng)用打下夯實(shí)的基礎(chǔ)。由于接在端口的各個(gè)信號(hào)燈狀態(tài)不同,采用位操作優(yōu)勢(shì)明顯。因此,本項(xiàng)目注重對(duì)位操作的使用,同時(shí)提高對(duì)項(xiàng)目任務(wù)的分析能力,抓住解決問(wèn)題的關(guān)鍵點(diǎn)。任務(wù)2.2精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施1、硬件電路設(shè)計(jì)思路
根據(jù)任務(wù)說(shuō)明及工作內(nèi)容及要求,通過(guò)具體分析,設(shè)計(jì)如下圖2-14所示電路。
根據(jù)分析,東西南北每個(gè)方向有3個(gè)燈,一共有12個(gè)燈,可以分別連接到單片機(jī)的P0的8個(gè)端口和P3的4個(gè)端口。但是在實(shí)際應(yīng)用中考慮到單片機(jī)帶負(fù)載能力,通常需要在端口和led燈之間連接反相器或其他驅(qū)動(dòng)電路。圖2-14利用可編程通用并行接口8255實(shí)現(xiàn)單片機(jī)對(duì)信號(hào)燈的控制圖
任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施2、交通信號(hào)燈硬件設(shè)計(jì)
本項(xiàng)目使用單片機(jī)的端口直接連接LED燈來(lái)模擬仿真交通信號(hào)燈控制。如圖2-15所示。和數(shù)碼管連接的電阻參數(shù)設(shè)置為470歐姆,和led串聯(lián)的電阻參數(shù)設(shè)置為300歐姆。P0端口接300歐姆的排阻后連接+5V電源。圖2-15交通信號(hào)燈控制系統(tǒng)硬件電路圖任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施3、交通信號(hào)燈控制程序設(shè)計(jì)(1)交通信號(hào)燈控制程序由表2-14可知,交通信號(hào)燈控制狀態(tài)有6中方式,即東西方向和南北方向兩組信號(hào)燈有6中工作形式,表中“0”對(duì)應(yīng)燈點(diǎn)亮,“1”對(duì)應(yīng)燈熄滅。由于單片機(jī)的并行端口都可以進(jìn)行位操作,因此采用sbitledR_N=P0^2;來(lái)定義北面的紅燈連接的是P0的2號(hào)端口。表2-16列出了12個(gè)燈連接的每個(gè)端口的位定義。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施表2-16信號(hào)燈與端口連接的位定義路口信號(hào)燈位變量名對(duì)應(yīng)端口東面綠燈ledG_EP3.1東面黃燈ledY_EP3.4東面紅燈ledR_EP3.5西面綠燈ledG_WP0.6西面黃燈ledY_WP0.7西面紅燈ledR_WP3.0南面綠燈ledG_SP3.3南面綠燈ledY_SP3.4南面紅燈ledR_SP3.5北面綠燈ledG_NP0.0北面黃燈ledY_NP0.1北面紅燈ledR_NP0.2任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施各狀態(tài)程序:狀態(tài)1:東西向綠燈亮,南北向紅燈亮,其他燈都不亮;ledR_N=0;ledR_S=0;ledG_E=0;ledG_W=0;其他位變量均為1;狀態(tài)2:東西向綠燈閃爍;南北向紅燈亮,其他燈都不亮狀態(tài)3:東西向黃燈亮,南北向紅燈亮,其他燈都不亮:ledY_E=0;ledY_W=0;ledR_N=0;ledR_S=0;其他位變量為1;狀態(tài)4:東西向紅燈亮,南北向綠燈亮,其他燈都不亮;ledR_E=0;ledR_W=0;ledG_N=0;ledG_S=0;其他位變量為1;狀態(tài)5:南北向綠燈閃爍;東西向紅燈亮,其他燈都不亮狀態(tài)6:東西向紅燈亮,南北向黃燈亮,其他燈都不亮;ledR_E=0;ledR_W=0;ledY_N=0;ledY_S=0;其他位變量為1;任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施設(shè)計(jì)思路:狀態(tài)5的情況和狀態(tài)2類似,下面分析狀態(tài)2的設(shè)計(jì)思路。利用定時(shí)器計(jì)時(shí)0.5S燈亮0.5S燈滅來(lái)實(shí)現(xiàn)綠燈閃爍利用12MHz晶振,定時(shí)/計(jì)數(shù)器T0工作方式1(16位計(jì)數(shù)器),定時(shí)時(shí)間為50ms;A)TMOD=00000001b,設(shè)置定時(shí)器工作方式1;B)定時(shí)初值設(shè)置X:50ms=(216-X)*12/12MHz得到X=65536-50000=15536;因此TH0=15536/256;TL0=15536%256;C)0.5S為10個(gè)50ms,因此10次定時(shí)器T0中斷即為0.5S,所以10次中斷后控制燈亮,再10次中斷后控制燈滅,上面的循環(huán)3次為3s定時(shí)器T0中斷程序?yàn)椋喝蝿?wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施voidmyto()interrupt1using0{TH0=15536/256;//對(duì)于12MHz晶振,定時(shí)50ms的初始值TL0=15536%256;//50000=65536-Xn1++;//統(tǒng)計(jì)中斷次數(shù),n1為0.5S的計(jì)數(shù)次數(shù),n2++;//n2為1s的計(jì)數(shù)次數(shù)if(n1>=10){//0.5S計(jì)時(shí)到,控制黃燈狀態(tài)的標(biāo)志位翻轉(zhuǎn)label=!label;n1=0;}if(n2>=20){//1S計(jì)時(shí)到,時(shí)間變量減1n2=0;seconds--;//時(shí)間秒數(shù)減1 if(seconds==5){step++;//進(jìn)入第2個(gè)或第5個(gè)狀態(tài)
}任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施if(seconds==2){step++;//進(jìn)入第3個(gè)或第6個(gè)狀態(tài)}if(seconds<=0){//進(jìn)入第4個(gè)或第1個(gè)狀態(tài)step++;if(step>=7){ step=1;}seconds=30;}}}定時(shí)器T0中斷程序負(fù)責(zé)狀態(tài)的切換。6個(gè)狀態(tài)下的燈的亮滅在主程序的while()循環(huán)中完成,根據(jù)注釋,不難理解程序的含義。任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施while(1){switch(step){//step標(biāo)志交通信號(hào)燈所處在的狀態(tài) case1://狀態(tài)1 //東西向綠燈亮,南北向紅燈亮 ledR_N=0;ledR_S=0; ledG_E=0;ledG_W=0;
//東西南北向黃燈熄滅
ledY_E=1;ledY_W=1;ledY_N=1; ledY_S=1;
//東西向紅燈滅,南北向綠燈滅
ledG_N=1;ledG_S=1;ledR_W=1;ledR_E=1; break; case2://東西綠燈閃爍,南北紅燈亮
ledR_N=0;ledR_S=0;
if(label){
ledG_E=0;ledG_W=0;
}else{
ledG_E=1;ledG_W=1;
}
任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施//東西南北黃燈熄滅
ledY_E=1; ledY_W=1; ledY_N=1; ledY_S=1;//南北綠燈和東西紅燈熄滅
ledG_N=1; ledG_S=1; ledR_W=1; ledR_E=1;
break;
case3://東西黃燈亮,南北紅燈亮,其他熄滅
ledY_E=0;ledY_W=0;ledR_N=0;ledR_S=0;//東南西北綠燈熄滅
ledG_E=1;ledG_W=1;ledG_N=1;ledG_S=1;//東西紅燈滅,南北黃燈滅;
ledR_E=1;ledR_W=1;ledY_N=1;ledY_S=1;
break; case4://南北向綠燈亮,東西向紅燈亮
ledR_E=0; ledR_W=0;ledG_N=0; ledG_S=0;
//東西南北向黃燈熄滅
ledY_E=1; ledY_W=1;ledY_E=1; ledY_W=1;
任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施//南北向紅燈滅,東西向綠燈滅
ledG_W=1; ledG_E=1;ledR_N=1; ledR_S=1; break;case5://南北綠燈閃爍,東西紅燈亮ledR_E=0;ledR_W=0;
if(label){ledG_N=0;ledG_S=0;}else{ledG_N=1;ledG_S=1;}
ledY_N=1;ledY_S=1;ledY_E=1;ledY_W=1;
ledR_N=1;ledR_S=1;ledG_E=1;ledG_W=1; break;
任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施
case6://南北黃燈亮,東西紅燈亮,其他熄滅ledY_N=0;ledY_S=0;ledR_E=0;ledR_W=0;//東南西北綠燈熄滅ledG_E=1;ledG_W=1;ledG_N=1;ledG_S=1;//南北紅燈滅,東西黃燈滅;ledR_N=1;ledR_S=1;ledY_E=1;ledY_W=1; break;default:break;
}}4、仿真調(diào)試
根據(jù)交通信號(hào)燈控制系統(tǒng)的任務(wù)說(shuō)明及本任務(wù)的工作內(nèi)容和要求,把交通信號(hào)燈控制系統(tǒng)設(shè)計(jì)分解成以下幾個(gè)部分:(1)根據(jù)前面的任務(wù),將信號(hào)燈的工作狀態(tài)和顯示電路連接起來(lái),構(gòu)成一個(gè)完整的交通信號(hào)燈控制系統(tǒng)的硬件電路;硬件電路圖如圖2-16任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施圖2-16交通信號(hào)燈控制系統(tǒng)仿真運(yùn)行效果圖任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施4、開發(fā)板運(yùn)行
把本程序在Proteus仿真軟件中進(jìn)行調(diào)試與仿真,當(dāng)調(diào)試成功后,因?yàn)殚_發(fā)板上數(shù)碼管的連接方式和圖2-16不一樣。所以需要根據(jù)開發(fā)板的硬件連接對(duì)程序進(jìn)行修改后下載到開發(fā)板上運(yùn)行才能得到想要的結(jié)果。我們來(lái)看下開發(fā)板的硬件電路圖,圖2-17所示。圖2-17開發(fā)板的硬件電路圖任務(wù)2.2
精準(zhǔn)的時(shí)間顯示任務(wù)實(shí)施
顯示時(shí)間的十位和個(gè)位數(shù)字的兩個(gè)數(shù)碼管的7段LED同時(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度教育培訓(xùn)檔口租賃合同
- T-ZJCX 0046-2024 簾子線直捻機(jī)
- 二零二五年度公車私用行為規(guī)范與責(zé)任追究協(xié)議
- 二零二五年度全新碼頭租賃協(xié)議及倉(cāng)儲(chǔ)服務(wù)合作協(xié)議
- 2025年度果園租賃與農(nóng)業(yè)科技研發(fā)合同
- 二零二五年度廣告代理合同解除與權(quán)益調(diào)整協(xié)議
- 2025年度高科技企業(yè)計(jì)件工資勞動(dòng)合同
- 2025年度智能合同履約跟蹤與風(fēng)險(xiǎn)控制管理辦法
- 2025年度消防設(shè)施定期維護(hù)與消防通道清理合同
- 二零二五年度美發(fā)店員工勞動(dòng)健康保險(xiǎn)與意外傷害合同
- 醫(yī)院轉(zhuǎn)診轉(zhuǎn)院記錄單
- 余熱回收節(jié)能技術(shù)課件
- 表面工程學(xué)第四章-表面淬火和表面形變強(qiáng)化技術(shù)
- 健康管理調(diào)查表
- 汶川地震波時(shí)程記錄(臥龍3向)
- NACHI那智機(jī)器人(操作篇)課件
- 企業(yè)員工培訓(xùn)PPT課件:職務(wù)犯罪培訓(xùn)
- 場(chǎng)地租賃安全管理協(xié)議書
- 數(shù)學(xué)物理方程(很好的學(xué)習(xí)教材)PPT課件
- 電力建設(shè)工程質(zhì)量監(jiān)督檢查大綱新版
- GB-T-15894-2008-化學(xué)試劑-石油醚
評(píng)論
0/150
提交評(píng)論