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

正文內(nèi)容

單片機交通燈設(shè)計資料(編輯修改稿)

2024-08-24 11:55 本頁面
 

【文章內(nèi)容簡介】 圖下面的分析僅對于NPN型硅三極管。,我們把從基極B流至發(fā)射極E的電流叫做基極電流Ib;把從集電極C流至發(fā)射極E的電流叫做集電極電流Ic。這兩個電流的方向都是流出發(fā)射極的,所以發(fā)射極E上就用了一個箭頭來表示電流的方向。三極管的放大作用就是:集電極電流受基極電流的控制(假設(shè)電源能夠提供給集電極足夠大的電流的話),并且基極電流很小的變化,會引起集電極電流很大的變化,且變化滿足一定的比例關(guān)系:集電極電流的變化量是基極電流變化量的β倍,即電流變化被放大了β倍,所以我們把β叫做三極管的放大倍數(shù)(β一般遠(yuǎn)大于1,例如幾十,幾百)。如果我們將一個變化的小信號加到基極跟發(fā)射極之間,這就會引起基極電流Ib的變化,Ib的變化被放大后,導(dǎo)致了Ic很大的變化。如果集電極電流Ic是流過一個電阻R的,那么根據(jù)電壓計算公式U=R*I可以算得,這電阻上電壓就會發(fā)生很大的變化。我們將這個電阻上的電壓取出來,就得到了放大后的電壓信號了。 鍵盤輸入電路單片機鍵盤有獨立鍵盤和矩陣式鍵盤兩種:獨立鍵盤每一個I/O 口上只接一個按鍵,按鍵的另一端接電源或接地(一般接地),這種接法程序比較簡單且系統(tǒng)更加穩(wěn)定;而矩陣式鍵盤式接法程序比較復(fù)雜,但是占用的I/O少。根據(jù)本設(shè)計的需要這里選用了獨立式鍵盤接法。獨立式鍵盤的實現(xiàn)方法是利用單片機I/O口讀取口的電平高低來判斷是否有鍵按下。將常開按鍵的一端接地,另一端接一個I/O 口,程序開始時將此I/O口置于高電平,平時無鍵按下時I/O口保護(hù)高電平。當(dāng)有鍵按下時,此I/O 口與地短路迫使I/O 口為低電平。按鍵釋放后,單片機內(nèi)部的上拉電阻使I/O口仍然保持高電平。我們所要做的就是在程序中查尋此I/O口的電平狀態(tài)就可以了解我們是否有按鍵動作了。在用單片機對鍵盤處理的時候涉及到了一個重要的過程,那就是鍵盤的去抖動。這里說的抖動是機械的抖動,是當(dāng)鍵盤在未按到按下的臨界區(qū)產(chǎn)生的電平不穩(wěn)定正常現(xiàn)象,并不是我們在按鍵時通過注意可以避免的。這種抖動一般10~200毫秒之間,這種不穩(wěn)定電平的抖動時間對于人來說太快了,而對于時鐘是微秒的單片機而言則是慢長的。為了提高系統(tǒng)的穩(wěn)定,我們必須去除或避開它。目前的技術(shù)有硬件去抖動和軟件去抖動,硬件去抖動就是用部分電路對抖動部分加之處理,但是實現(xiàn)的難度較大又會提高了成本。軟件去抖動不是去掉抖動,而是避抖動部分的時間,等鍵盤穩(wěn)定了再對其處理。所以這里選擇了軟件去抖動,實現(xiàn)法是先查尋按鍵當(dāng)有低電平出現(xiàn)時立即延時10~200毫秒以避開抖動(經(jīng)典值為20毫秒),延時結(jié)束后再讀一次I/O 口的值,這一次的值如果為1 表示低電平的時間不到10~200 毫秒,視為干擾信號。當(dāng)讀出的值是0時則表示有按鍵按下,調(diào)用相應(yīng)的處理程序。: 鍵盤控制電路圖4 交通燈系統(tǒng)詳細(xì)設(shè)計 軟件總體設(shè)計思想本程序由主程序,定時中斷子程序和外部中斷子程序組成。主程序主要負(fù)責(zé)系統(tǒng)初始化和等待中斷,定時中斷子程序主要負(fù)責(zé)數(shù)碼管顯示刷新和紅黃綠燈各種狀態(tài)切換。外部中斷子程序負(fù)責(zé)緊急情況處理和處理完成恢復(fù)。STC10F04計數(shù)的起停由STC10F04的P0和P4口控制,STC10F04的P0和P4口輸出1時,STC10F04開始計數(shù),交通燈按正常狀態(tài)切換工作,P0和P4口輸出0時,計數(shù)器停止工作,交通燈不再按正常狀態(tài)切換。STC10F04開始計數(shù)后每200ms發(fā)出一個中斷申請信號,在中斷子程序中先刷新數(shù)碼管,然后判斷當(dāng)前狀態(tài),進(jìn)入相應(yīng)的處理程序進(jìn)行處理。當(dāng)有緊急情況時進(jìn)入外部中斷服務(wù)子程序,先讓STC10F04停止計數(shù),然后點亮所有的紅燈,下一次外部中斷處理時,恢復(fù)原來的交通燈狀況。、:設(shè)置字型碼和字位碼,完成顯示初始化外部中斷定義狀態(tài)數(shù)組宏定義返回while(1)函數(shù)進(jìn)入while(1)循環(huán)I/O初始化定義字位碼函數(shù)定義共陰極字型編碼表調(diào)用顯示控制函數(shù)statusdis()進(jìn)入主函數(shù)main()定義函數(shù)變量并初始化定時器0初始化調(diào)用dissmg()函數(shù) 主程序流程圖INT1INT0 保護(hù)現(xiàn)場保護(hù)現(xiàn)場方程式控制顯示紅燈全亮維持10S恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場中斷返回中斷返回 交通控制算法實現(xiàn)定時中斷子程序是本設(shè)計的重點,負(fù)責(zé)完成數(shù)碼管輸出數(shù)據(jù)刷新和各個狀態(tài)的處理切換。中斷子程序包括數(shù)碼管輸出數(shù)據(jù)刷新程序和各狀態(tài)處理程序。中斷程序的流程圖如圖所示。定義1s定時中斷入口設(shè)置字型碼和字位碼,完成數(shù)碼管倒計時顯示啟動定時器中斷 關(guān)閉定時器0初始化定時器0 計數(shù)變量自加1 定時中斷流程圖定時中斷服務(wù)程序在系統(tǒng)中的函數(shù)如下:void int_t0( ) interrupt 1 using 1{ TR0 = 0。 time++。 tc++。 if(tc=3) {tc=0。} if(time==100) { waittime。 }else if(time==200) { waittime。 sec。 time=0。shu0=sec%10。 shu1 =sec/10。 } TH0 = 0xee。 TL0 = 0x00。 if(tc==0) { smdis=md[shu0]。 weishuang0 = 0。 weishuang1 = 1。 weishuang2 = 1。 } else if(tc==1) { smdis=md[shu1]。 weishuang0 = 1。 weishuang1 = 0。 weishuang2 = 1。 } else if(tc==2) { smdis=md[shu2]。 weishuang0 = 1。 weishuang1 = 1。 weishuang2 = 0。 } //if(tc=3) {tc=0。} TR0 = 1。 } 我們由在主程序中設(shè)定的初值可知T0定時5毫秒.這樣每當(dāng)T0到5毫秒時CPU就響應(yīng)它的溢出中斷請求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,CPU先使軟件計數(shù)器加1,然后判斷它是否為200。為零表示1秒已到可以返回到輸出時間顯示程序。并使計數(shù)器變量清0. 系統(tǒng)初始化模塊主程序負(fù)責(zé)系統(tǒng)的初始化,然后數(shù)碼管數(shù)據(jù)輸出顯示,同時檢測PC鍵盤按鍵,有按鍵按下就退出程序。系統(tǒng)初始化包括STC10F04的初始化,定時器、外部中斷向量初始化以及設(shè)置交通燈工作的初始狀態(tài)。由于定時器/計數(shù)器的各種功能是由軟件來確定的,所以在使用它之前,應(yīng)對其進(jìn)行編程初始化。初始化的主要內(nèi)容是對TCON和TMOD編程,計算和裝載T0和T1的計數(shù)初值。由設(shè)計要求可知,定時器T0的工作方式為1。系統(tǒng)程序中主函數(shù)初始化如下: P4SW=0xff。 TMOD=0x01。 TH0 = 0xee。 TL0 = 0x00。 EA = 1。 ET0 = 1。 PT0=1。 PX0=0。 PX1=0。 EX0=1。 IT0=0。 EX1=1。 IT1=1。 TR0 = 1。 單片機定時/計數(shù)器初值計算公式:T初值=2N -定時時間/機器周期時間 ,機器周期=12/fosc。根據(jù)TMOD=0X0TH0=0xee、TL0=0x00可得出定時器工作在方式1,所以N=16。T初值=0xee00=60928 。又因為fosc= ,所以根據(jù)上面的公式得:60928=216-定時時間/12/ 最后得出定時時間=5ms。 信號燈模塊 信息顯示模塊包括發(fā)光二極管模塊和LED倒計時顯示子模塊。 程序中開始是先定義發(fā)光二極管的I/O口,接著設(shè)定各個狀態(tài)量發(fā)光二極管的狀態(tài)數(shù)組。第三,運行main主函數(shù),調(diào)用主函數(shù)里的while循環(huán),while循環(huán)語句再通過statusdis函數(shù)調(diào)用狀態(tài)數(shù)組變量來顯示各個狀態(tài)下各個發(fā)光二極管的狀態(tài)。:定義發(fā)光二極管的I/O口While(1)大循環(huán)調(diào)用顯示控制函數(shù)statusdis() 調(diào)用狀態(tài)數(shù)組賦值完成發(fā)光二極管顯示設(shè)定各個狀態(tài)量數(shù)組 進(jìn)入main函數(shù)里的while(1)大循環(huán) 發(fā)光二極管模塊流程圖發(fā)光二極管I/ 發(fā)光二極管I/O口的接法北黃西黃南黃東黃北左黃南左黃南左紅南左綠東綠東紅南綠南紅西綠西紅北綠北紅P31RxdTxd緊急按鈕方式控制按鈕未用未用北左紅北左綠 程序中對I/O口的定義如下: sfr jtd = 0xa0。 // 交通燈的控制口,P2口sfr jtdh= 0x90。 //交通燈的控制口 ,P1口 sbit NLR = P3^6。 //北向左轉(zhuǎn)的紅燈 sbit NLG = P3^7。 //北向左轉(zhuǎn)的綠燈初始化狀態(tài)數(shù)組: unsigned char S0[]={0x59, 0x7f ,0x80,35 }。 unsigned char S1[]={0xdd, 0xca ,0xc0,3 }。 unsigned char S2[]={0x95, 0xbf ,0x40,35 }。 unsigned char S3[]={0xf7, 0xa4 ,0xc0,3 }。 unsigned char S4[]={0x66,0xbf ,0x80,20 }。 //unsigned char S5[]={0x7f,0xd1 ,0x80,3 }。 unsigned char S5[]={0x77,0xb5 ,0x80,3 }。 unsigned char S6[]={0x55, 0xbf ,0x80,10 }。 主函數(shù)main()運行while循環(huán),while循環(huán)調(diào)用statusdis函數(shù)來實現(xiàn)各個狀態(tài)數(shù)組。其程序如下:while(1) { //S0 //東西紅燈,南綠北紅 0x59 // 南左轉(zhuǎn)綠燈,北左轉(zhuǎn)紅燈 0x60 //等待35秒 35 statusdis(S0) 。 //S1 //東西紅;南北黃燈 0x11 //東西紅燈3秒,南北左轉(zhuǎn)均為黃燈 0x00 //等待3秒 3 statusdis(S1) 。 //S2 // 東西紅燈,南紅北綠 0x95 //南轉(zhuǎn)左紅燈,北轉(zhuǎn)左綠燈 0x90 //等待35秒 35 statusdis(S2) 。 //S3 // 東西紅燈,南紅北黃 0x04 //南轉(zhuǎn)左紅燈,北轉(zhuǎn)左綠燈 0x10 //等待3秒 3 statusdis(S3) 。 //S4 // 東西綠燈,南北紅 0x66 //南轉(zhuǎn)左紅燈,北轉(zhuǎn)左紅燈 0x50 //等待20秒 20 statusdis(S4) 。 //S5 // 東西黃燈,南紅北綠 0x44 //南轉(zhuǎn)左紅燈,北轉(zhuǎn)左紅燈 0x50 //等待3秒 3
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1