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

正文內(nèi)容

基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)畢業(yè)論文(已改無(wú)錯(cuò)字)

2022-10-09 14:53:16 本頁(yè)面
  

【正文】 10S2S M G 2S3BCEDS4FADPGS11B2C3E4D5S26F7A8DP9G10S2S M G 2S3S4S1*S2*S3*S4*S5*S6*A1A2A3A4A5A6A1A2A3A4A5A6自鎖開(kāi)關(guān)1 23 45 6S W 1V C C自鎖開(kāi)關(guān)電池供電 U S B 供電電池盒上紅線接 1 、黑線接 2請(qǐng)先確定好正負(fù)極,用萬(wàn)用表可以量1234S9C O N 4 圖 25 主控置系統(tǒng)模塊電路 信號(hào)燈 輸出控制模塊 道口交通燈指示采用紅、黃、綠發(fā)光二極管進(jìn)行提示。其圖如圖 26所示: 圖 26 LED顯示模塊電路 時(shí)間顯示電路模塊 本系統(tǒng)使用數(shù)碼管完成倒計(jì)時(shí)顯示功能。以方向東西為為例,數(shù)碼管顯示的數(shù)值從綠燈的設(shè)置時(shí)間最大值往下減,每秒鐘減 1,一直減到 0。然后又從紅燈的設(shè)置時(shí)間最大值往下減,一直減到 0。接下來(lái)又顯示綠燈時(shí)間,如此循環(huán)。系統(tǒng)共有 4 個(gè)二位的 LED 數(shù)碼管,分別放置在模擬交通燈上方。道口通行剩余時(shí)間采用紅色 7 段數(shù)碼管顯示,采用共陰數(shù)碼管 ,如用單片機(jī) P0 口加上拉電阻驅(qū)動(dòng), 。其顯示電路如圖 27所示: 圖 27 數(shù)碼管顯示模塊電路 系統(tǒng)電源模塊電路 由于該系統(tǒng)中 51 單片機(jī)及二極管工作電壓均為 5V 電壓,所以要保證系統(tǒng)穩(wěn)定可靠的工作,需要設(shè)計(jì)一個(gè)可以穩(wěn)定提供 5V 電壓的供電系統(tǒng)。本設(shè)計(jì)采用外置 3節(jié) 5號(hào)電池作為系統(tǒng)的供電電源,該系統(tǒng)電源電路設(shè)計(jì)如圖 28所示: 圖 28系統(tǒng)電源電路 按鍵輸入模塊 由于該系統(tǒng)具有夜間模式,緊急模式 和交通燈倒計(jì)時(shí)時(shí)間設(shè)定功能,所有需要加上這些功能鍵,如下圖 29所示: 圖 29 按鍵輸入 夜間模式:按下夜間模式按鍵進(jìn)入,四方向紅燈長(zhǎng)亮,再次按下按鍵退出。 緊急模式:按下緊急模式按鍵進(jìn)入,四方向黃燈閃爍,再次按下按鍵退出。 設(shè)定倒計(jì)時(shí)時(shí)間:按下設(shè)定鍵后,進(jìn)入設(shè)定狀態(tài),先設(shè)定南北方向,再次按下按鍵設(shè)定東西方向,設(shè)定好后,按下按鍵退出,正常運(yùn)行。 3 系統(tǒng)軟件設(shè)計(jì) 軟件總體流程圖 軟件總體設(shè)計(jì)及流程圖見(jiàn)圖 31,主要完成各部分的軟件控制和協(xié)調(diào) 。 圖 31 流程圖 延時(shí)的設(shè)定 計(jì)數(shù)器初值計(jì)算 定時(shí)器工作時(shí)必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個(gè)值是送到 TH 和 TL中的。他是以加法記數(shù)的,并能從全 1 到全 0時(shí)自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值設(shè)定為 C和計(jì)數(shù)初值設(shè)定為 TC 可得到如下計(jì)算通式: TC=M- C 式中, M 為計(jì)數(shù)器模值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式 0 時(shí) M 為213 ;在方式 1 時(shí) M 的值為 216;在方 式 2和 3為 28 ; 算法公式: T=( M- TC) T 計(jì)數(shù) 或 TC=M- T/T 計(jì)數(shù) T 計(jì)數(shù) 是單片機(jī)時(shí)鐘周期 T CLK 的 12 倍;TC為定時(shí)初值 如單片機(jī)的主脈沖頻率為 T CLK 12MHZ ,經(jīng)過(guò)12分頻 方式0 TMAX= 213 1微秒= 毫秒 方式1 TMAX= 216 1微秒= 毫秒 顯然1秒鐘已經(jīng)超過(guò)了計(jì)數(shù)器的最大定時(shí)間,所以只有采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問(wèn)題. 實(shí)現(xiàn) 1 秒的方法: 我采用在主程序中設(shè)定一個(gè)初值為 20的軟件計(jì)數(shù)器和使 T1定時(shí) 50 毫秒。這樣每當(dāng) T1到 50毫秒時(shí) CPU 就響應(yīng)它的溢出中斷請(qǐng)求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中, CPU 先使軟件計(jì)數(shù)器減1,然后判斷它是否為零。為0表示1秒已到可以返回到輸出時(shí)間顯示程序。 相應(yīng)程序代碼 (1) 定時(shí)器的設(shè)置 定時(shí)器需定時(shí)50毫秒,故T 1工作于方式1。 初值計(jì)算: TC=M- T/T 計(jì)數(shù) = 216- 50ms/1us=15536=3CBOH START: MOV TMOD, 10H ;令TO為定時(shí)器方式1 MOV TH0, 3CH ;裝入定時(shí)器初值 MOV TL0, 0BOH SETB EA ; 打開(kāi)總中斷 SETB ET1 ;開(kāi)T 1 中斷 SETB ER ;啟動(dòng)T 1計(jì)數(shù)器 CLR FLAG1 CLR FLAG2 CLR FLAG3 MOV R3, 20H ;軟件計(jì)數(shù)器賦初值 (2)相應(yīng)中斷服務(wù)子程序 ORG 001BH LJMP DSD ORG 0030H DSD: INC R3 MOV TH0, 3CH ;重裝入定時(shí)器初值 MOV TL0, BOH CJNE R3, 20, FH DEC R0 DEC R1 MOV R3, 00H FH: RETI 程序的軟件延時(shí): 我選單片機(jī)的工作頻率為 12MHZ。機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的 12 倍,所以一個(gè)機(jī)器周期的時(shí)間為 12*( 1/12M) =1us??梢灾谰唧w每條指令的周期數(shù),這樣就可以通過(guò)指令的執(zhí)行條數(shù)來(lái)確定 1秒的時(shí)間。 具體的延時(shí)程序分析: DELAY: MOV R4,08H 延時(shí) 1秒主程序 DE2: LCALL DELAY1 DJNZ R4, DE2 RET DELAY1: MOV R4, 00H ;延時(shí) 125us 子程序 D1: MOV R5, 00H D2: DJNE R5, DL2 DJNE R4, D1 RET DELAY1 為一個(gè)雙重循壞 循環(huán)次數(shù)為 256*256=65536 所以延時(shí)時(shí)間=65536*2=131072us 約為 125us DELAY R4 設(shè)置的初值為 8 主延時(shí)程序循 環(huán) 8次,所以 125us*8= 1 秒 ( 3)數(shù)碼管動(dòng)態(tài)顯示 用于四個(gè)數(shù)碼管的倒計(jì)時(shí)顯示,代碼如下: sbit smg1=P3^0。 //定義南北方向數(shù)碼管低位 sbit smg2=P3^1。 //定義南北方向數(shù)碼管高位 sbit smg3=P3^2。 //定義東西方向數(shù)碼管低位 sbit smg4=P3^3。 //定義東西方向數(shù)碼管高位 void djsxs22() /4個(gè)數(shù)碼管動(dòng)態(tài)顯示 { int b1,b2。 b1=djs1/10。 //將倒計(jì)時(shí)時(shí)間的高位 賦予 b1 b2=djs1%10。 //將倒計(jì)時(shí)時(shí)間的低位賦予 b2 P0=table[b1]。 smg1=0。 delayms(3)。 smg1=1。 //顯示 b1 P0=table[b2]。 smg2=0。 delayms(3)。 smg2=1。 //顯示 b2 P0=table[b1]。 smg3=0。 delayms(3)。 smg3=1。 //顯示 b1 P0=table[b2]。 smg4=0。 delayms(3)。 smg4=1。 //顯示 b2 } void djsxs11() /4個(gè)數(shù)碼管動(dòng)態(tài)顯示 { int b1,b2。 b1=djs/10。 //將倒計(jì)時(shí)時(shí)間的高位賦予 b1 b2=djs%10。 //將倒計(jì)時(shí)時(shí)間的低位賦予 b2 P0=table[b1]。 smg1=0。 delayms(3)。 smg1=1。 //顯示 b1 P0=table[b2]。 smg2=0。 delayms(3)。 smg2=1。 //顯示 b2 P0=table[b1]。 smg3=0。 delayms(3)。 smg3=1。 //顯示 b1 P0=table[b2]。 smg4=0。 delayms(3)。 smg4=1。 //顯示 b2 } 利用對(duì)數(shù)字的拆分使數(shù)字分為十位和個(gè)位,比如 31,利用程序 int a=31;int b1,b2。b1=a/10。b2=a%10。 可以拆分為 b1=3, b2=,通過(guò)這個(gè)方法可以動(dòng)態(tài)在數(shù)碼管 上顯示出來(lái)。由于東西方向和南北方向的顯示時(shí)間不一樣,我們可以通過(guò)數(shù)碼管的高低位去組合的顯示正確的顯示時(shí)間。組合顯示程序如下: void djsxs1() / 用來(lái)顯示設(shè)定南北倒計(jì)時(shí)的時(shí)間 { int b1,b2。 b1=djs1/10。 //將倒計(jì)時(shí)時(shí)間的高位賦予 b1 b2=djs1%10。 //將倒計(jì)時(shí)時(shí)間的低位賦予 b2 P0=table[b1]。 smg3=0。 delayms(
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1