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

正文內(nèi)容

交通燈控制系統(tǒng)設(shè)計論文(編輯修改稿)

2024-11-13 09:55 本頁面
 

【文章內(nèi)容簡介】 5 管腳結(jié)構(gòu) 74LS245 芯片 具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù) , 74LS245 芯片內(nèi)部結(jié)構(gòu)如圖 所示。 11 圖 74LS245 內(nèi)部結(jié)構(gòu) 當片選端 CE 低電平有效時, DIR=“ 0” ,信號由 B 向 A 傳輸 ,即 接收 數(shù)據(jù);DIR=“ 1” ,信號由 A 向 B 傳輸 ,即 發(fā)送 數(shù)據(jù)。 當 CE 為高電平時, A、 B 均為高阻態(tài) 。 所以,在本控制系統(tǒng)中需要用 74LS245 芯片對數(shù)碼管進行驅(qū)動。 本章對單片機進行了簡單介紹,設(shè)計了交通燈控制系統(tǒng)硬件電路。接下來,還需要對軟件部分進行設(shè)計,完成整個控制系統(tǒng)的設(shè)計要求。 12 4 交通燈控制系統(tǒng)的軟件設(shè)計 硬件平臺結(jié)構(gòu)一旦確定,功能框架就已經(jīng)形成。軟件在硬件平臺的基礎(chǔ)上構(gòu)筑,完成各部分硬件的控制 和協(xié)調(diào)。系統(tǒng)是由軟硬件共同實現(xiàn)的,由于軟件的可伸縮性,最終實現(xiàn)的系統(tǒng)功能可強可弱,差別可能很大。因此,軟件是本系統(tǒng)的靈魂。軟件采用模塊化設(shè)計方法,不僅易于編程和調(diào)試,也可減小軟件故障率和提高軟件的可靠性。同時,對軟件進行全面測試也是檢驗錯誤排除故障的重要手段。 軟件設(shè)計環(huán)境簡介 Proteus 仿真軟件簡介 Proteus ISIS 是英國 Labcenter 公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows 操作系統(tǒng)上,可以仿真、分析 (SPICE)各種模擬器件和集成電路 [16]。 該軟件的 特點是: (1)實現(xiàn)了單片機仿真和 SPICE 電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、 RS232 動態(tài)仿真、 I2C 調(diào)試器、 SPI調(diào)試器、鍵盤和 LCD 系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。 (2)支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有: 68000 系列、 8051系列、 AVR 系列、 PIC12 系列、 PIC16 系列、 PIC18 系列、 Z80 系列、 HC11 系列以及各種外圍芯片。 (3)提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點 等調(diào)試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如 Keil C51 uVision2 等軟件。 (4)具有強大的原理圖繪制功能 [17]。 總之,該軟件是一款集單片機和 SPICE 分析于一身的仿真軟件,功能極其強大。 KeilC51 編譯軟件簡介 目前流行的 51 系列單片機開發(fā)軟件是德國 Keil 公司推出的 Keil C51 軟件,它是一個基于 32 位 Windows環(huán)境的應(yīng)用程序,支持 C 語言和匯編語言編程,其 以上的版本將編 譯和仿真軟件統(tǒng)一為 uVision(通常稱為 uV2) [18]。 Keil 提供包括 C 編譯 13 器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,由以下幾部分組成: uVision IDE 集成開發(fā)環(huán)境(包括工程管理器、源程序編輯器、程序調(diào)試器)、 C51 編譯器、 A51 匯編器、 LIB51 庫管理器、 BL51 連接 /定位器、 OH51目標文件生成器以及 Monitor5 RTX51 實時操作系統(tǒng) [1921]。 交通燈系統(tǒng)主程序 在交通燈控制系統(tǒng)的設(shè)計中,首先對交通燈進行初始參數(shù)設(shè)置,然后根據(jù)是否出現(xiàn) 鍵盤事件,如出現(xiàn)鍵盤事件就啟動鍵盤程序,進行鍵盤時間處理;若沒有出現(xiàn),繼續(xù)進行由初始參數(shù)進行的控制程序。交通燈控制系統(tǒng)的設(shè)計流程如圖 所示: 圖 交通燈控制系統(tǒng)設(shè)計流程 交通燈延時程序 延時方法可以有兩種,一種是利用 MCS51 內(nèi)部定時器才生溢出中斷來確定 1 秒的延時時間,另一種是采用軟件延時的方法。 計數(shù)器硬件延時 (1)計數(shù)器初值計算 定時器工作時必須給計數(shù)器初值,這個值是送到 TH 和 TL 中的。它是以加法計數(shù)的,并 能從全 1 到全 0 時自動產(chǎn)生溢出中斷請求 [2226]。因此,我們可以把計數(shù)器記滿為零所需的計數(shù)值設(shè)定為 C 和計數(shù)初值設(shè)定為 TC 可得到如下計算通式: TC=M- C 式中, M 為計數(shù)器模值,該值和計數(shù)器工作方式有關(guān)。在方式 0 時 M 為 213;在方式 1 時 M 的值為 216;在方式 2 和 3 為 28。 (2)計算公式 開始 初始化 等待鍵盤事件 鍵盤事 件處理 顯示程 序處理 14 TC=M- T/ T 計數(shù) T 計數(shù) 是單片機時鐘周期 TCLK 的 12 倍; TC 為定時初值, 如單片機的主脈沖頻率 TCLK 為 12MHZ,經(jīng)過 12 分頻: 方式 0: TMAX=213﹡ 1us = 方式 1: TMAX=216﹡ 1us= 方式 2 和 3: TMAX=28﹡ 1us= 顯然 1 秒鐘已經(jīng)超過了計數(shù)器的最大定時時間,所以只有采用定時器和軟件相結(jié)合的辦法才能解決這個問題。 (3)延時 1 秒的方法 系統(tǒng)中采用在主程序中設(shè)定一個初值為 4000 的軟件計數(shù)器和使定時器定時250us。這樣每當 T0 到 250us 時 CPU 就響應(yīng)它的溢出中斷請求,進入它的中斷服務(wù)子程序。在中斷子程序中, CPU 先使軟件計數(shù)器減 1,然后判斷它是否為 0。為 0 表示 1 秒已到可以返回到輸出時間顯示程序。 (4)相應(yīng)程序 代碼 主程序中:定時器需要定時 250 us,故 T0 工作于方式 2。初值: TC=M- T/ T 計數(shù) =28- 250us/1us=06H TMOD = 0x02。 //設(shè)置定時器 0 為工作方式 2 TH0 = 0x06。 TL0 = 0x06。 //初始化 8 位定時器 (256- 6)*4000 = 1s EA = 1。 //總中斷允許 ET0 = 1。 //T0 中斷允許 TR0 = 1。 //打開 T0 中斷 軟件延時 軟件延時需要通過編寫延時程序進行延時。計算機執(zhí)行一條指令需要一定的時間,由一些指令組成一段程序,并反復(fù)循環(huán)執(zhí)行,利用計算機執(zhí)行程序所用的時間來實現(xiàn)延時,這種程序稱為延時程序 [2728]。如當系統(tǒng)使用 12MHz 晶振時,一個機器周期為 1us,執(zhí)行一條雙字雙周期 DJNZ 指令的時間為 2us,因此執(zhí)行該指令 50 萬次,就可以實現(xiàn)延時 1s的目的,對于 50 萬次循環(huán)可采用外循環(huán)、中循環(huán)、內(nèi)循環(huán)嵌套的多重循環(huán)結(jié)構(gòu)。 15 交通燈顯示程序 交通燈顯示程序設(shè)計流程如圖 所示。交通燈顯示程序總共有 4 個狀態(tài) S SS3 和 S4,每個狀態(tài)中發(fā)光二極管顯示信號燈點亮情況,數(shù)碼管來進行倒計時顯示,完成這 4 個狀態(tài)后再進入初始狀態(tài) S1, 進行循環(huán)。 圖 交通燈顯示設(shè)計流程 按鍵處理程序 鍵盤是人機進行交互的重要接口之一。用戶通過對儀器下達命令,儀器獲得相應(yīng)的鍵值,并執(zhí)行相應(yīng)的命令程序 [29]。鍵盤部分的軟件設(shè)計主要是對鍵盤管理芯片 8051進行編程,從而成功地讀取鍵盤值,實現(xiàn)相應(yīng)功能。 按鍵模塊設(shè)計流程如圖 所示。在系統(tǒng)中有 3 個按鍵設(shè)置,分別為“設(shè)置鍵”、“增加鍵”、“減少鍵”。若“設(shè)置鍵”沒有按下,不進行按鍵處理。若“設(shè)置鍵”按下, 則按照到“設(shè)置鍵”程序處理,看是否有“增加鍵 ” 和“減少鍵”被按下,若沒有,不進行處理;若有,進行相應(yīng)按鍵處理。 開始 初始化,狀態(tài) S1 延時,并顯示時間 狀態(tài) S2 延時,并顯示時間 狀態(tài) S3 延時,并顯示時間 狀態(tài) S4 延時,并顯示時間 16 圖 按鍵模塊設(shè)計流程 設(shè)置鍵處理 (1)設(shè)置鍵的功能 設(shè)置鍵的功能是根據(jù)按鍵次數(shù)決定的,如表 所示。按下“設(shè)置鍵” 1 次,則設(shè)置東西方向的綠燈點亮?xí)r間;按下“設(shè)置鍵” 2 次,則設(shè)置東西方向黃燈點亮?xí)r間;按下“設(shè)置鍵” 3 次,則設(shè)置南北方向的綠燈點亮?xí)r間;按下“設(shè)置鍵” 4 次,則設(shè)置南北方向黃燈點亮?xí)r間;按下“設(shè)置鍵” 5 次,則恢復(fù) 交通燈工作狀態(tài),時間顯示設(shè)置后的通行時間和暫緩?fù)ㄐ袝r間。 表 設(shè)置鍵功能 按“設(shè)置鍵”次數(shù) 第 1 次 第 2 次 第 3 次 第 4 次 第 5 次 調(diào)整內(nèi)容 東西方向 綠燈點亮 時間 東西方向 黃燈點亮 時間 南北方向 綠燈點亮 時間 南北方向 黃燈點亮 時間 恢復(fù)交通燈工作狀態(tài) (2)設(shè)置鍵設(shè)計流程 Y Y N N Y 等待按鍵按下 設(shè)置鍵是否按下 增加鍵是否按下 減少鍵是否按下 設(shè)置鍵處 理程序 增加鍵處 理程序 減少鍵處 理程序 17 圖 設(shè)置鍵設(shè)計流程 (3)設(shè)置鍵相關(guān)程序 void setSecond(void) {while(P3_4 == 0)。 tP3_4++。 //標志設(shè)置鍵被按下的次數(shù) switch(tP3_4) {case 1:tEW = 5。// tEW 為東西向標志位 P1 = 0xf7。//東西向綠燈點亮 break。 case 2:tEW = 1。 P1 = 0xef。//東西向黃燈點亮 break。 case 3:tSN = 1。// tSN 為南北向標志位 P1 = 0xfe。//南北向綠燈點亮 N N N N Y Y Y Y Y 等待按鍵釋放 第 5 次按下 東西向綠燈 點亮,數(shù)碼管閃爍,設(shè)置通行時間 東西向黃燈點亮,數(shù)碼管閃爍,設(shè)置暫緩?fù)ㄐ袝r間 南北向綠燈點亮,數(shù)碼管閃爍,設(shè)置通行時間 南北向黃燈點亮,數(shù)碼管閃爍,設(shè)置暫緩?fù)ㄐ袝r間 交通燈正常顯示,數(shù)碼管顯示設(shè)置好的時間 返回等待 第 4 次按下 第 3 次按下 第 2 次按下 第 1 次按下 18 break。 case 4:tSN = 3。 P1 = 0xfd。//南北向黃燈點亮 break。 case 5:tEW = 5。//東西方向和南北方向標志位都回到初始狀態(tài) tSN = 5。 t_num = 0。 tP3_4 = 0。 break。 } } 增加鍵處理 (1)增加鍵的功能 當系統(tǒng)系統(tǒng)需要進行按鍵設(shè)置時,通過“增加鍵”可以改變東西方向和南北方向的通行時間和暫緩?fù)ㄐ袝r間。此按鍵分為兩個功能,一個是“加 1”功能,一個是“加10”功能。 (2)增加鍵處理流程 圖 增加鍵設(shè)計流程 N N N Y Y Y Y 延時 按鍵是否還在按下 延時 按鍵是否釋放 按鍵是否還在按下 等待按鍵釋放 數(shù)碼管值加 1 返回 數(shù)碼管值加 10 數(shù)碼管加 10 延時 19 (3)“增加鍵”相關(guān)程序 秒數(shù)加 1 程序: void addSecond(void) { while(P3_5 == 0)。 t_key = 0。 //記錄長按鍵的參數(shù)清零 switch(tP3_4) { case 1: if(keyMemory != greenEW + 10) //判斷按鍵是否已經(jīng)加 10,如果沒有加 10則秒數(shù)加 1,如果已經(jīng)加 10 則不加 1 { greenEW++。 } if(greenEW == 90) { greenEW = 0。//90 為秒數(shù)增加后的最大值,當超過 90s 后自動為 0 } scdEW = greenEW。 scdSN = greenEW + yellowEW + 1。 break。 //東西向綠燈顯示時間設(shè)置 case 2: if(yellowEW++ == 9) { yellowEW = 0。 } scdEW = yellowEW。 break。 //東西 向黃燈顯示時間設(shè)置 case 3: if(keyMemory != greenSN + 10) { greenSN++。 } if( greenSN == 90) { greenSN = 0。 } 20 scdEW = greenSN + yellowSN + 1。 scdSN = greenSN。 break。 //南北向綠燈顯示時間設(shè)置 case 4: if(yellowSN++ == 9) { yellowSN = 0。 } scdSN = yellowSN。 break。 } //南北向黃燈顯示時間設(shè)置 } 長按加 10s 程序:當長時間按下按鍵后,增加的時間為 10s void add_10s(void
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1