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

正文內(nèi)容

基于at89s51單片機的交通燈設(shè)計(編輯修改稿)

2024-12-16 23:44 本頁面
 

【文章內(nèi)容簡介】 態(tài)掃描:需要使用 4 個數(shù)碼管分別顯示東西、南北的倒計時數(shù)字,將暫存各狀態(tài)剩余時間的數(shù)字從變量中提取出 “十位 ”和 “個位 ”,用動態(tài)掃描的方式在數(shù)碼管中顯示。 整個程序依據(jù)定時器的溢出數(shù)來計時,每計時 1S 則相應狀態(tài)的剩余時間減 1,一直減到 0 時觸發(fā)下一個狀態(tài)的開始。 ( 2)單片機型號及所需外圍器件型號,單片機硬件電路原理圖 圖 35 交通燈硬件電路原理圖 選用 MCS51 系列 AT89S51 單片機作為微控制器,選擇兩個四聯(lián)的共陰極數(shù)碼管組成 8 位顯示模塊,由于 AT89S51 單片機驅(qū)動能力有限,采用兩片 74HC244 實現(xiàn)總線的驅(qū)動,一個 74HC244 完成共陰極數(shù)碼管位控線的控制和驅(qū)動,另一個 74HC244 完成數(shù)碼管的 7 段碼輸出,在 7 段碼輸出口上各串聯(lián)一個 100 歐姆的電阻對 7 段數(shù)碼管限流。用 P3 口的 完成發(fā)光二極管的控制,實現(xiàn)交通燈信號的顯 示,每個發(fā)光二極管串聯(lián) 500 歐姆電阻起限流作用。硬 件電路原理圖如圖 35 所示。 ( 3)程序設(shè)計思路,單片機資源分配以及程序流程 ① 單片機資源分配 單片機 P3 口的 引腳用作輸出,控制發(fā)光二極管的顯示。在計時模塊中,需要定義兩個數(shù)組變量( init_sn[3], init_ew[3])來存儲東西、南北兩個方向在不同狀態(tài)中倒計時的初始值,題目中每個方向的交通燈共有 3 種顯示狀態(tài),因此數(shù)組元素個數(shù)為 3。還需要定義兩個變量 ( t_ sn, t_ ew)暫存東西、南北兩個方向的倒計時剩余時間。 在狀態(tài)的切換中,為了明確當前處于哪種狀態(tài),東西、 南北方向各設(shè)置一個狀態(tài)變量 (state_val_sn, state_val_ew),當?shù)褂嫊r的剩余時間到零時,狀態(tài)變量增 1,表示啟動下一個狀態(tài),當該變量增到 3 時變?yōu)?0,回到序號為 1 的狀態(tài)。 ② 程序設(shè)計思路 在設(shè)計中,由于沒有鍵盤功能,因此只涉及定時計數(shù)和動態(tài)掃描功能。主程序?qū)⒆兞砍跏蓟? 后,設(shè)置單片機定時器和中斷特殊功能寄存器的初始值,將定時器 T1 的工作方式設(shè)置為 8 位自動 裝載模式,定時器每隔 250us 產(chǎn)生一次溢出。 在初始化變量與寄存器后,主程序進入一個循環(huán)結(jié)構(gòu),在循環(huán)中只做動態(tài)掃描的工作,根據(jù)東西、 南北兩向的剩余時時間進行動態(tài)掃描顯示。 計時以及狀態(tài)的切換通過定時器的中斷服務(wù)程序來實現(xiàn),在中斷服務(wù)程序中,每計時到一秒時,則各方向當前狀態(tài)的剩余時間減 1,一直減到 0 時觸發(fā)下一個狀態(tài)的開始,改變交通燈的指示。 ③ 程序流程 ( 4)軟硬件調(diào)試方案 軟件調(diào)試方案:偉福軟件中,在 “文件 \新建文件 ”中,新建 C 語言源程序文件,編寫相應的程序。在 “文件 \新建項目 ”的菜單中,新建項目并將 C 語言源程序文件包括在項目文件中。 在 “項目 \編譯 ”菜單中將 C 源文件編譯,檢查語法錯誤及邏輯錯誤。在編譯成功后,產(chǎn)生以 “*.hex”和 “*.bin” 后綴的目標文件。 硬件調(diào)試方案:在設(shè)計平臺中,將單片機的 分別與獨立式鍵盤的相應位通過插線連接起來。 在偉福中將程序文件編譯成目標文件后,運行 “MCU下載程序 ”,選擇相應的 flash 數(shù)據(jù)文件,點擊 “編程 ”按鈕,將程序文件下載到單片機的 Flash 中。 然后,上電重新啟動單片機,檢查所編寫的程序是否達到題目的要求,是否全面完整地完成試題的內(nèi)容。 程序設(shè)計(僅供參考的 C 語言源程序) //晶振: T1250 微秒溢出一次 /*變量的定義 : show_val_sn,show_val_ew: 顯示的值 059 state_val_sn,state_val_ew: 狀態(tài)值 南北方向 0綠燈亮 。1黃燈亮 。2紅燈亮 T1_t: 定時器計數(shù)溢出數(shù) t_sn,t_ew: 倒計時的數(shù)值 init_sn[3],init_ew[3] 倒計時 led_seg_code:數(shù)碼管 7 段碼 */ include sbit SN_green=P3^2 。//南北方向綠燈 sbit SN_yellow=P3^1 。//南北方向黃燈 sbit SN_red=P3^0 。//南北方向紅燈 sbit EW_green=P3^5 。//東西方向綠燈 sbit EW_yellow=P3^4 。//東西方向黃燈 sbit EW_red=P3^3 。//東西方向紅燈 unsigned char data t_sn,t_ew。 unsigned int data T1_t。 unsigned char data state_val_sn,state_val_ew。 char code led_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 char code init_sn[3]={24,4,29}。 char code init_ew[3]={29,24,4}。 // void delay(unsigned int i)//延時 { while(i)。 } // void led_show(unsigned int u,unsigned int v) { unsigned char i。 i=u%10。 //暫存?zhèn)€位 P0=led_seg_code[i]。 P2=0xbf。 delay(100)。 //延時 i=u%100/10。 //暫存十位 P0=led_seg_code[i]。 P2=0x7f。 delay(100)。 //延時 i=v%10。 //暫存?zhèn)€位 P0=led_seg_code[i]。 P2=0xfe。 delay(100)。 //延時 i=v%100/10。 //暫存十位 P0=led_seg_code[i]。 P2=0xfd。 delay(100)。 //延時 } // void timer1() interrupt 3 //T1 中斷 { T1_t++。 if(T1_t3999) //如果計數(shù) 3999, 計時 1s { T1_t=0。 if (t_sn!=0) //南北方向計時 { t_sn。 } else { state_val_sn++。 if (state_val_sn2) state_val_sn=0。 t_sn=init_sn[state_val_sn]。 switch (state_val_sn) //根據(jù)狀態(tài)值,刷新各信號燈的狀態(tài) { case 0: SN_green=0 。//南北方向綠燈 SN_yellow=1 。//南北方向黃燈 SN_red=1 。//南北方向紅燈 break。 case 1: SN_green=1 。//南北方向綠燈 SN_yellow=0 。//南北方向黃燈 SN_red=1 。//南北方向紅燈 break。 case 2:SN_green=1 。//南北方向綠燈 SN_yellow=1 。//南北方向黃燈 SN_red=0 。//南北方向紅燈 break。 } } if (t_ew!=0) //東西方向計時 { t_ew。 } else { state_val_ew++。 if (state_val_ew2) state_val_ew=0。 t_ew=init_ew[state_val_ew]。 switch (state_val_ew) //根據(jù)狀態(tài)值,刷新各信號燈的狀態(tài) { case 0: EW_green=1 。//東西方向綠燈 EW_yellow=1。//東西方向黃燈 EW_red=0 。//東西方向紅燈 break。 case 1: EW_green=0 。//東西方向綠燈 EW_yellow=1 。//東西方向黃燈 EW_red=1 。//東西方向紅燈 break。 case 2: EW_green=1 。//東西方向綠燈 EW_yellow=0 。//東西方向黃燈 EW_red=1 。//東西方向紅燈 break。 } } } } // main() {//初始化各變量 t_sn=init_sn[0]。 t_ew=init_ew[0]。 T1_t=0。 state_val_sn=0。 //啟動后,默認工作在序號為 1 的狀態(tài) state_val_ew=0。 //初始化各燈的狀態(tài) SN_green=0 。//南北方向綠燈亮 SN_yellow=1 。//南北方向黃燈滅 SN_red=1 。//南北方向紅燈滅 EW_green=1 。//東西方向綠燈滅 EW_yellow=1。//東西方向黃燈滅 EW_red=0 。//東西方向紅燈亮 //初始化 51 的寄存器 TMOD=0x20。//用 T1 計時 8 位自動裝載定時模式 TH1=0x19。//0x4b。 //500 微秒溢出一次 。 250=(256x)*12/ x= TL1=0x19。 EA=1。 //開中斷 ET1=1。 TR1=1。 //開定時器 T1 while(1) { led_show(t_sn,t_ew)。}} 實訓四 交通燈控制系統(tǒng) 當今 ,社會上的汽車越來越多,并且交通事故愈演愈烈,為了要減少此類的事情的發(fā)生,必須加強道路的管理。因此、合理設(shè)計交通燈控制系統(tǒng)可以大大減少此類事情發(fā)生。 一、 系統(tǒng)功能要求: 1. 設(shè)計任務(wù)在一十字路口設(shè)置交通燈,并用單片機對其進行合理的控制。 時間方向 控制要求 白天 東西 綠燈 黃燈 紅燈 南北 紅燈 綠燈 黃燈 晚上 東西 黃燈 南北 紅燈 。本設(shè)計采用一主干道(南北方向),一從干道(東西方向)的路口,即主干道的通行時間為從干道的 2倍。在正常情況下,兩干道的交通燈按圖 1進行轉(zhuǎn)換,并以倒計數(shù)的方式將剩余時間顯示在每個干道對應的兩位 LED 上;另發(fā)揮部分為當出現(xiàn)緊急情況時,路口的交通燈全為紅燈,緊急情況解除時,恢復到原來的狀態(tài)。 二、 總體設(shè)計方案提示: 。初始狀態(tài) 0 為東西紅燈,南北紅燈。然后轉(zhuǎn)狀態(tài) 1 東 西綠燈通車,南北紅燈。過一段時間轉(zhuǎn)狀態(tài)。 ,黃燈閃爍幾次,南北仍然紅燈。再轉(zhuǎn)狀態(tài)。 ,東西紅燈。過一段時間轉(zhuǎn)狀態(tài)。 ,閃幾次黃燈,延時幾秒,東西仍然紅燈。最后循環(huán)至狀態(tài) 1。 三.硬件設(shè)計 電路原理圖如下: G1F2C O M3A4B5E6D7C O M8C9DP10U38L E D10111213141516G1F2C O M3A4B5E6D7C O M8C9DP10U48L E D10111213141516G1F2C O M3A4B5E6D7C O M8C9DP10U78L E D10111213141516G1F2C O M3A4B5E6D7C O M8C9DP10U88L E D10111213141516G1F2C O M3A4B5E6D7C O M8C9DP
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1