freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-交通信號智能控制系統(tǒng)的研究和設(shè)計-資料下載頁

2025-06-03 20:55本頁面
  

【正文】 研 究與設(shè)計 22 第 4 章 系統(tǒng)軟件設(shè)計 上面主要講述了系統(tǒng)的硬件設(shè)計部分,但一個系統(tǒng)必須有軟件(即程序)來控制計算機運行。目前,對大多數(shù) MCS51 單片機的應(yīng)用系統(tǒng)的編程語言主要有 PLM[8]、匯編和 c 語言。其中匯編和 c 語言比較常用。匯編語言的機器代碼生成效率很高但可讀性并不強,復(fù)雜一點的程序就更難讀懂,而 c 語言在大多數(shù)情況下,其機器代碼生成效率和匯編語言相當(dāng),但可讀性和可移植性卻遠(yuǎn)遠(yuǎn)超過匯編語言,而且 c 語言還可以嵌入?yún)R編語言來解決高時效性的代碼編寫問題。目前, c 語言已經(jīng)成為在單片機基礎(chǔ)上應(yīng) 用最為廣泛的計算機語言之一。將 c 語言向單片機移植始于 20 世紀(jì) 80 年代的中后期。這些年,經(jīng)過各公司( Keil/Franklin、 Archmeades、 IAR 等公司)堅持不懈的努力,終于在 20 世紀(jì) 90 年代,單片機 c 語言編程開始日趨成熟?,F(xiàn)在 c 語言已經(jīng)成為專業(yè)化的單片機編程高級語言。過去長期困擾人們的所謂 ―高級語言產(chǎn)生代碼太長,運行速度太慢,因此不適合單片機使用 ‖的缺點已被克服。 現(xiàn)在 MCS51 單片機上 c 語言的代碼長度,已經(jīng)做到了只有匯編語言的 倍。4K 字節(jié)以上的程序, c 語言的優(yōu)勢更能得到發(fā)揮。從開 發(fā)速度、軟件質(zhì)量、結(jié)構(gòu)嚴(yán)謹(jǐn)、程序堅固等方面比較, c 語言的優(yōu)勢更多。 c 語言有很多鮮明的特點,比較適于編寫系統(tǒng)軟件和大型的應(yīng)用軟件。下面結(jié)合MCS51 介紹單片機 c 語言的優(yōu)越性。 (1) 不懂得單片機的指令集 [6],也能夠編寫完美的單片機程序。 (2) 直接訪問物理地址,可以進行位操作。 (3) 同函數(shù)的數(shù)據(jù)實行覆蓋,有效利用片上有限的 RAM 空間。 (4) 語言提供復(fù)雜的數(shù)據(jù)類型(數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉、指針等),極大地增強了程序處理能力和靈活性。 (5) 提供專門針對 MCS51 單片機的 data、 idata、 pdata、 xdata、 code 等存儲類型,自動為變量合理地分配地址。 (6) 提供 small、 pact、 large 等編譯模式,以適應(yīng)片上存儲器的大小。 (7) 提供常用的標(biāo)準(zhǔn)函數(shù)庫 [9],以供用戶直接使用。 (8) c 語言作為高級語言對機器沒有依賴性,可以在各種不同的機器和操作系統(tǒng)上應(yīng)交通信號智能控制系統(tǒng)的研 究與設(shè)計 23 用,而不必改寫源代碼(所謂的移植性好),生成目標(biāo)代碼的效率高。 主程序設(shè)計 本系統(tǒng)的程序就是用的 c 語言來編譯的,下面是系統(tǒng)的主程序流程圖: 交通信號智能控制系統(tǒng)的研 究與設(shè)計 24 開 始單 片 機 初 始 化賦 值 東 西 方 向 綠 燈 的 初 始 時 間初 始 化 計 數(shù) 器 T 0 / T 1啟 動 計 數(shù) 器 T 0 / T 1東 西 方 向 綠 燈 亮南 北 方 向 紅 燈 亮倒 計 時 減 一 操 作有 緊 急 車 輛 通 過 ?停 止 計 數(shù) 器 并 計 算 出 南 北 方 向 綠 燈 時 間啟 動 計 數(shù) 器 T 0 / T 1南 北 方 向 綠 燈 亮方 向 紅 燈 亮倒 計 時 結(jié) 束 ?黃 燈 閃 爍 3 秒 鐘停 止 計 數(shù) 器 并 計 算 出 東 西 方 向 綠 燈 時 間黃 燈 閃 爍 3 秒 鐘執(zhí) 行 緊 急 車 輛 通 過 程 序是否是否倒 計 時 減 一 操 作有 緊 急 車 輛 通 過 ?倒 計 時 結(jié) 束 ?執(zhí) 行 緊 急 車 輛 通 過 程 序是是否否 圖 主程序流程圖 交通信號智能控制系統(tǒng)的研 究與設(shè)計 25 主程序: void main() { P3=0x00。 //P3 口清 0 dx_cll=60。 //給東西方向綠燈時間賦初值 60s TMOD=0x55。 //初始化定時器 /計數(shù)器 T0、 T1 為計數(shù)模式,工作于方式 1,二進制計數(shù) while(1) { jishuqi()。 //計數(shù)器啟動計數(shù) for(。dx_cll3。dx_cll) //東西方向綠燈倒計時,直至 4s { P0=0xde。 //東西方向綠燈和南北方向紅燈亮 timer(dx_cll,100)。 //延時 while(jinji==1) int0()。 //檢測 口是否為高電平 } for(i=3。i0。i) //黃燈倒計時 3s { while(jinji==1) int0()。 //檢測 口是否為高電平 P0=0xed。 timer(i,50)。 P0=0xff。 timer(i,50)。 //黃燈閃爍點亮 } TR0=0。 TR1=0。 //計數(shù)器停止計數(shù) i=1。 nb_cll=suanfa(i)。 //算出南北方向綠燈的時間 交通信號智能控制系統(tǒng)的研 究與設(shè)計 26 jishuqi()。 //計數(shù)器啟動計數(shù) for(。nb_cll3。nb_cll) //南北方向綠燈倒計時,直至 4s { P0=0xf3。 //南北方向綠燈和南北方向紅燈亮 timer(nb_cll,100)。 //延時 while(jinji==1) int0()。 //檢測 口是否為高電平 } for(i=3。i0。i) //黃燈倒計時 3s { while(jinji==1) int0()。 //檢測 口是否為高電平 P0=0xed。 timer(i,50)。 P0=0xff。 timer(i,50)。 //黃燈閃爍點亮 } TR0=0。 TR1=0。 //計數(shù)器停止計數(shù) i=0。 dx_cll=suanfa(i)。 //算出東西方向綠燈的時間 } } 延時子程序 單片機的 1 秒鐘延時可以有兩種方法,一種是利用 AT89C51 單片機內(nèi)部定時器溢出中斷來確定 1 秒的時間;另一種是采用軟件延時來確定 1 秒的時間。 計數(shù)器硬件延時 交通信號智能控制系統(tǒng)的研 究與設(shè)計 27 (1) 計數(shù)器初值計算 定時 器工作時必須給計數(shù)器送計數(shù)器初值,這個值是送到 TH 和 TL 中的。他是以加法記數(shù)的,并能從全 1 到全 0 時自動產(chǎn)生溢出中斷請求。因此,我們可以把計數(shù)器記滿為零所需的計數(shù)值設(shè)定為 C 和計數(shù)初值設(shè)定為 TC 可得到如下計算通式: TC=MC 式中, M 為計數(shù)器摸值,該值和計數(shù)器工作方式有關(guān)。在方式 0 時 M 為 13;在方式 1時 M 的值為 16;在方式 2 和 3 時 M 的值為 8。 (2) 計算公式 T=(MTC) T? 計 數(shù) 或 TC=MT/T計 數(shù) T 計數(shù) 是單片機時鐘周期 TCLK的 12 倍; TC 為定時初值 如單片機的主脈沖頻率為 TCLK12MHz,經(jīng)過 12 分頻 方式 0 13T MA X =2 1us=8. 192m s? 方式 1 16T M A X=2 1u s=6 5. 53 6m s? 顯然 1 秒鐘已經(jīng)超過了計數(shù)器的最大定時間,所以我們只有采用定時器和軟件相結(jié)合的辦法才能解決這個問題. (3) 1秒的方法 我們采用在主程序中設(shè)定一個初值為 20 的軟件計數(shù)器和使 T0 定時 50 毫秒.這樣每當(dāng) T0 到 50 毫秒時 CPU就響應(yīng)它的溢出中斷請求,進入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中, CPU 先使軟件計數(shù)器減 1,然后判斷它是否為零。為零表示 1 秒已到可以返回到輸出時間顯示程序。 (4) 相應(yīng)程序代碼 主程序 : 定時器需定時 50 毫秒,故 T0 工作于方式 1。 初值: 16T C =M T / T =2 50m s/ 1us=15536=3CB 0H計 數(shù) ┇ void main() { 交通信號智能控制系統(tǒng)的研 究與設(shè)計 28 uint A 。 TMOD=0x01 。令 T0 為定時器方式1 TH0=0x3c 。裝入定時器初值 TL0=0xb0 IE=0x82 。開 T0 中斷 TR0=1 。啟動 T0 計數(shù)器 A=0x14 。賦初值 _nop_() 。等待中斷 ┇ } 中斷服務(wù)子程序 : ┇ void BRT0(void) interrupt 3 () { for(。A0。A) //循環(huán) 20 次 NEXT() 。重新定時 50ms } void NEXT() { A=0x14 。恢復(fù) A 值 TH0=0x3c 。重裝裝入定時器初值 TL0=0xb0 。 IE=0x82 。 } ┇ 軟件延時 MCS51 系列的單片機的工作頻率為 212MHZ,我們選用的 8951 單片機的工作頻率為 12MHZ。機器周期與主頻有關(guān),機器周期是主頻的 12 倍,所以一個機器周期的時交通信號智能控制系統(tǒng)的研 究與設(shè)計 29 間為 12*( 1/12M) =1us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定 1 秒的時間。下面給出是 4ms 的延時子程序: void delay(uint z) //延時子程序 4ms { uint x,y。 for(x=500。x0。x) //循環(huán) 500 次 for(y=z。y0。y)。 } 一個 for 循環(huán)結(jié)構(gòu) ―for( y=1。y0。y) {。}‖的執(zhí)行時間為 8us,則上面的子程序執(zhí)行周期為 8us*500=4000us=4ms。主程序中用到了 1s 延時和 延時,可以通過程序嵌套賦值 z 來達到 1s 和 的延時時間。 另外,需要注意的是,算嵌套時間時要算上一個 LCALL 指令( 2us)執(zhí)行時間,還有返回指令 RET( 2us)執(zhí)行時間。 計數(shù)器計數(shù) 由硬件部分單片機的簡介,我們知道了 8951 包含兩個計數(shù) /定時器 [12]。 T0 是由 TH0和 TL0 組合而成, T1 的結(jié)構(gòu)也是一樣。當(dāng) T0 或 T1 用作計數(shù)器時,計數(shù)器的計數(shù)脈沖是從外部引腳引入的,這兩個引腳分別是 和
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1