版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 物理機(jī)電工程學(xué)院課程設(shè)計(jì)報(bào)告</p><p> 課程名稱:《單片機(jī)原理》課程設(shè)計(jì) </p><p> 系 部:物理與機(jī)電工程 </p><p> 專業(yè)班級(jí): 09電子信息工程(1)班</p><p> 學(xué)生姓名: </p><
2、;p> 指導(dǎo)教師: </p><p> 完成時(shí)間: </p><p> 報(bào)告成績(jī): </p><p> 單片機(jī)交通的燈控制設(shè)計(jì)與實(shí)現(xiàn)</p><p> 一、交通燈設(shè)計(jì)與要求</p><
3、;p> ?。?)車輛通行繁忙的十字交叉路口,設(shè)計(jì)一交通燈控制器,設(shè)東西方向通行時(shí)間為40秒,當(dāng)剩余3秒時(shí)黃燈亮,南北方向通行時(shí)間為25秒,當(dāng)剩余3秒時(shí)黃燈亮。</p><p> ?。?)東西、南北方向各用三個(gè)(綠、黃、紅)LED表示,并用數(shù)碼管顯示東西、南北方向的剩余時(shí)間。</p><p> ?。?)可利用按鍵修改時(shí)間參數(shù)。</p><p><b>
4、 二、方案設(shè)計(jì)與論證</b></p><p> 該設(shè)計(jì)是單片機(jī)控制交通燈,運(yùn)用C51單片機(jī)實(shí)現(xiàn)交通燈的控制。現(xiàn)今世界單片機(jī)作為微型計(jì)算機(jī)一個(gè)重要部分,由于它具有抗干擾能力強(qiáng)、靈活性好、環(huán)境要求不高、價(jià)格低廉、開放容易等優(yōu)點(diǎn),在我國(guó)廣泛的應(yīng)用在工業(yè)自動(dòng)化控制、自動(dòng)檢測(cè)、智能儀器儀表、家用電器、電力電子、機(jī)電一體化設(shè)備等。</p><p> 用單片機(jī)驅(qū)動(dòng)LED數(shù)碼管有很多方法
5、,按顯示方式分,有靜態(tài)顯示和 動(dòng)態(tài)(掃描)顯示,按譯碼方式可分硬件譯碼和軟件譯碼之分。</p><p> 方案一:靜態(tài)顯示就是顯示驅(qū)動(dòng)電路具有輸出鎖存功能,單片機(jī)將所要顯示的數(shù)據(jù),顯示數(shù)據(jù)穩(wěn)定,占用很少的CPU時(shí)間。</p><p> 方案二:動(dòng)態(tài)顯示需要CPU時(shí)刻對(duì)顯示器件進(jìn)行數(shù)據(jù)刷新,顯示數(shù)據(jù)有閃爍感,占用的CPU時(shí)間多。</p><p> 這兩種顯示方式
6、各有利弊;靜態(tài)顯示雖然數(shù)據(jù)穩(wěn)定,占用很少的CPU時(shí)間,但每個(gè)顯示單元都需要單獨(dú)的顯示驅(qū)動(dòng)電路,使用的硬件較多;動(dòng)態(tài)顯示雖然有閃爍感,占用的CPU時(shí)間多,但使用的硬件少,能節(jié)省線路板空間。 </p><p> 在此設(shè)計(jì)中我們選擇動(dòng)態(tài)顯示,簡(jiǎn)化電路、節(jié)省線路板空間。</p><p><b> 三、硬件電路設(shè)計(jì)</b></p><p> 1.什
7、么是單片機(jī)系統(tǒng)</p><p> 單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對(duì)51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路。下面給出一個(gè)51單片機(jī)的最小系統(tǒng)電路圖:</p><p> (1)復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合"電容電壓不能突變"的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會(huì)出現(xiàn)高電平
8、,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來決定.典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位,所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位.一般教科書推薦C 取10u,R取8.2K.當(dāng)然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個(gè)機(jī)周期的高電平.至于如何具體定量計(jì)算,可以參考電路分析相關(guān)書籍。</p><p> ?。?)晶振電路:典型的晶振取11.0592MHz
9、(因?yàn)榭梢詼?zhǔn)確地得到9600波特率和19200波特率,用于有串口通訊的場(chǎng)合)/12MHz(產(chǎn)生精確的uS級(jí)時(shí)歇,方便定時(shí)操作)</p><p> ?。?)信號(hào)燈控制電路,LED及顯示接口</p><p> 發(fā)光二極管簡(jiǎn)稱LED,采用砷化鎵、鎵鋁砷、和磷化鎵等材料制成,其內(nèi)部結(jié)構(gòu)為一個(gè)PN結(jié),具有單向?qū)щ娦?。?dāng)在發(fā)光二極管PN結(jié)上加正向電壓時(shí),PN結(jié)勢(shì)壘降低,載流子的擴(kuò)散運(yùn)動(dòng)大于漂移運(yùn)動(dòng),
10、致使P區(qū)的空穴注入到N區(qū),N區(qū)的電子注入到P區(qū),這樣相互注入的空穴與電子相遇后會(huì)產(chǎn)生復(fù)合,復(fù)合時(shí)產(chǎn)生的能量大部分以光的形式出現(xiàn),因此而發(fā)光。 當(dāng)所有二極管都發(fā)出光時(shí),大多數(shù)都不是很有效的。在普通二極管里,半導(dǎo)體材料本身吸引大量的光能而結(jié)束。發(fā)光二極管是由一個(gè)塑性燈泡覆蓋集中燈光在一個(gè)特定方向。由于不同材料的禁帶寬度不同,所以由不同材料制成的發(fā)光二極管可發(fā)出不同波長(zhǎng)的光。另外,有些材料由于組分和摻雜不同,例如,有的具有很復(fù)雜的能帶結(jié)構(gòu)
11、,相應(yīng)的還有間接躍遷輻射等,因此有各種各樣的發(fā)光二極管。</p><p> 發(fā)光二極管在制作時(shí),使用的材料有所不同,那么就可以發(fā)出不同顏色的光。發(fā)光二極管的發(fā)光顏色有:紅色光、黃色光、綠色光、紅外光等。 </p><p> 發(fā)光二極管的外形有:圓形、長(zhǎng)方形、三角形、正方形、組合形、特殊形等。 </p><p> 常用的發(fā)光二極管應(yīng)用電路有四種,即直流驅(qū)動(dòng)電路、
12、交流驅(qū)動(dòng)電路、脈沖驅(qū)動(dòng)電路、變色發(fā)光驅(qū)動(dòng)電路。 </p><p> 使用LED作指示電路時(shí),應(yīng)該串接限流電阻,該電阻的阻值大小應(yīng)根據(jù)不同的使用電壓和LED所需工作電流來選擇。發(fā)光二極管的壓降一LED的光學(xué)參數(shù)與pn結(jié)結(jié)溫有很大的關(guān)系。一般工作在小電流IF<10mA,或者10~20 mA長(zhǎng)時(shí)間連續(xù)點(diǎn)亮LED溫升不明顯。因此我們選的二極管顏色為紅色,黃色。</p><p> 2、交通燈總原
13、理圖:</p><p><b> 四、軟件設(shè)計(jì)</b></p><p> 1、設(shè)計(jì)一個(gè)十字路口交通燈自動(dòng)控制電路。</p><p> a--------南北方向綠燈接通, 東西方向綠燈接通; </p><p> b--------南北方向黃燈接通, 東西方向黃燈接通;</p><p>
14、c--------南北方向紅燈接通, 東西方向紅燈接通。</p><p> 工作順序?yàn)閍→b→c→a, 要求各狀態(tài)的工作時(shí)間如下圖所示:</p><p> 綠燈-(25s)-黃燈--(3s)-紅燈--(40s)--綠燈--(循環(huán))</p><p><b> 2、單片機(jī)的定時(shí)器</b></p><p> 在單片機(jī)應(yīng)
15、用系統(tǒng)中,實(shí)現(xiàn)定時(shí)的方法一般有以下三種:</p><p> ?。ǎ保┸浖〞r(shí):讓計(jì)算機(jī)執(zhí)行一段程序來進(jìn)行事件延時(shí)。這個(gè)程序段本身份沒有安排其他的執(zhí)行目的,只是利用該程序段的執(zhí)行花費(fèi)的一個(gè)固定時(shí)間。通過適當(dāng)?shù)倪x擇指令和安排循環(huán)次數(shù),可調(diào)節(jié)這段程序執(zhí)行所需花費(fèi)的時(shí)間的長(zhǎng)短。其特點(diǎn)是定時(shí)時(shí)間精確,不需外加硬件電路,但占用CPU時(shí)間。因此軟件定時(shí)的時(shí)間不宜過長(zhǎng)。</p><p> ?。?)硬件定時(shí)
16、:利用硬件電路實(shí)現(xiàn)定時(shí)。其特點(diǎn)是不占用CPU時(shí)間,通過改變電路元器件參數(shù)調(diào)來節(jié)定時(shí),但使用不夠靈活方便。對(duì)于時(shí)間較長(zhǎng)的定時(shí),常用硬件電路來實(shí)現(xiàn)。</p><p> (3)可編程定時(shí)器:通過專用的定時(shí)計(jì)數(shù)器芯片來實(shí)現(xiàn)。其特點(diǎn)是通過對(duì)系統(tǒng)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)實(shí)現(xiàn)定時(shí),定時(shí)的時(shí)間可通過程序的設(shè)定的方法改變,使用靈活方便。也可實(shí)現(xiàn)對(duì)外部脈沖的計(jì)數(shù)功能。單片機(jī)交通控制器的設(shè)計(jì)</p><p> 當(dāng)定
17、時(shí)計(jì)數(shù)器設(shè)置為計(jì)數(shù)工作方式時(shí),技術(shù)器對(duì)來自輸入引腳T0和T1的外部信號(hào)計(jì)數(shù),外部信號(hào)的下降沿將觸發(fā)計(jì)數(shù)。最高檢測(cè)頻率為振蕩頻率的二十四分之一。計(jì)數(shù)器對(duì)外部輸入信號(hào)的占空比沒有特別的限制,但必須保證輸入信號(hào)的高電平與低電平的持續(xù)時(shí)間在一個(gè)機(jī)器周期以上。當(dāng)設(shè)置了定時(shí)器的工作方式并啟動(dòng)定時(shí)器工作后,定時(shí)器就安倍設(shè)定的工作方式獨(dú)立工作,不在占用CPU的操作時(shí)間,只有在計(jì)數(shù)器計(jì)滿溢出時(shí)才能中斷CPU當(dāng)前的操作。</p><p&
18、gt; 3、定時(shí)器數(shù)值的設(shè)置應(yīng)該注意的事項(xiàng)</p><p> 延時(shí)方法可以有兩種一中是利用MCS-51內(nèi)部定時(shí)器才生溢出中斷來確定1秒的時(shí)間,另一種是采用軟延時(shí)的方法。定時(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ì)算通式:</p>&l
19、t;p><b> TC=M-C</b></p><p> 式中,M為計(jì)數(shù)器摸值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為8196 ;在方式1時(shí)M的值為65536;在方式2和3為256。</p><p> T=(M-TC)T計(jì)數(shù) 或TC=M-T/T計(jì)數(shù)</p><p> T計(jì)數(shù)是單片機(jī)時(shí)鐘周期TCLK的12倍;TC為定時(shí)初值,如單
20、片機(jī)的主脈沖頻率為TCLK12MHZ,經(jīng)過12分頻。</p><p> 方式0:TMAX=213 *1微秒=8.192毫秒</p><p> 方式1:TMAX=216?。蔽⒚耄剑叮担担常逗撩?lt;/p><p> 我們?cè)谶@里采用的是方式1,則初始值TC=65536-10000</p><p> THO=(65536-10000)%25
21、6 TL0=(65536-10000)/256</p><p> 顯然1秒鐘已經(jīng)超過了計(jì)數(shù)器的最大定時(shí)間,所以我們只有采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問題。</p><p> 我們采用在主程序中設(shè)定一個(gè)初值為0的軟件計(jì)數(shù)器和使T0定時(shí)10毫秒。這樣每當(dāng)T0到10毫秒時(shí)CPU就響應(yīng)它的溢出中斷請(qǐng)求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,CPU先使軟件計(jì)數(shù)器加1,然后
22、判斷它是否為100,為100表示1秒已到可以返回到輸出時(shí)間顯示程序</p><p><b> 4、中斷系統(tǒng)的概念</b></p><p> 計(jì)算機(jī)在執(zhí)行正常程序時(shí),如果系統(tǒng)出現(xiàn)某些急需處理的異常情況和特殊請(qǐng)求,CPU會(huì)暫時(shí)中止正在執(zhí)行的指令,轉(zhuǎn)去對(duì)隨機(jī)發(fā)生的更緊迫事件進(jìn)行處理;處理完后,CPU會(huì)自動(dòng)返回原來的程序繼續(xù)執(zhí)行。</p><p>
23、 5、單片機(jī)的中斷系統(tǒng)的作用</p><p> CPU響應(yīng)中斷申請(qǐng)時(shí),首先使先級(jí)有效位置位,以阻止同級(jí)或低級(jí)的終端申請(qǐng);然后把程序計(jì)數(shù)器PC的內(nèi)容壓入堆餞,再把與中斷服務(wù)程序入口地址送到程序計(jì)數(shù)器PC;同時(shí)清除某些中斷標(biāo)志。以上過程均由端系統(tǒng)自動(dòng)完成。</p><p> 6、如何實(shí)現(xiàn)單片機(jī)的中斷</p><p> MCS-51單片機(jī)的中斷源共有5個(gè),分為3類
24、:外部中斷源,片內(nèi)溢出中斷源,串行口中斷源。外部中斷源可以分為由片內(nèi)P3.2引腳輸入的INT0中斷,以及由P3.3引腳輸入的INT1中斷。片內(nèi)溢出中斷分為定時(shí)器T0中斷和定時(shí)器T1中斷。串行口中斷只有一個(gè),片內(nèi)串行數(shù)據(jù)的接收和發(fā)送中斷。這5個(gè)中斷源在程序存儲(chǔ)器中各有中斷服務(wù)程序的入口地址,這個(gè)地址也稱為矢量地址。在CPU響應(yīng)中斷時(shí),硬件自動(dòng)形成各自的入口地址,由此進(jìn)入中斷服務(wù)程序,從而實(shí)現(xiàn)了正確的轉(zhuǎn)移。</p><p
25、> 五、仿真過程與仿真結(jié)果</p><p> 一個(gè)應(yīng)用系統(tǒng)并非一次就可以正確無(wú)誤地設(shè)計(jì)出來,尤其是設(shè)計(jì)的程序,必須經(jīng)過多次的調(diào)試才能確鑿無(wú)誤地工作。為避免浪費(fèi),并不把剛剛編寫好的程序直接寫到EPROM、EEPROM等中去,更不會(huì)急于生產(chǎn)安裝部分硬件,在專用的仿真器或開發(fā)試驗(yàn)臺(tái)上進(jìn)行。</p><p> 我們首先在KEIL軟件中編寫程序,來進(jìn)行C語(yǔ)言程序的調(diào)試。然后再把程序加載在
26、PRETEUS軟件上進(jìn)行仿真調(diào)試。</p><p><b> 仿真結(jié)果:</b></p><p> (1)東西方向通行時(shí)間為40秒,當(dāng)剩余3秒時(shí)黃燈亮,南北方向通行時(shí)間為25秒,當(dāng)剩余3秒時(shí)黃燈亮。</p><p> ?。?)東西、南北方向各用三個(gè)(綠、黃、紅)LED表示,并用數(shù)碼管顯示東西、南北方向的剩余時(shí)間。</p>&l
27、t;p> (3)可利用按鍵修改時(shí)間參數(shù)。</p><p><b> 五、安裝與調(diào)試</b></p><p><b> 1、最小系統(tǒng)調(diào)試</b></p><p> 首先應(yīng)該確認(rèn)電源電壓是否正常。用電壓表測(cè)量接地引腳跟電源引腳之間的電壓,看是否是電源電壓,我們所用的電源電壓是5V。接下來就是檢查復(fù)位引腳電壓是否正
28、常。分別測(cè)量按下復(fù)位按鈕和放開復(fù)位按鈕的電壓值,看是否正確。然后再檢查晶振是否起振了,一般用示波器來看晶振引腳的波形,注意應(yīng)該使用示波器探頭的“X10”檔。另一個(gè)辦法是測(cè)量復(fù)位狀態(tài)下的IO口電平,按住復(fù)位鍵不放,然后測(cè)量IO口(沒接外部上拉的P0口除外)的電壓,看是否是高電平,如果不是高電平,則多半是因?yàn)榫д駴]有起振。另外還要注意的地方是,要將EA引腳拉高,因?yàn)槲覀冇玫氖瞧瑑?nèi)ROM,否則會(huì)出現(xiàn)程序亂跑的情況。有時(shí)用仿真器可以,而燒入片子
29、不行,往往是因?yàn)镋A引腳沒拉高的緣故(當(dāng)然,晶振沒起振也是原因只一)。經(jīng)過上面幾點(diǎn)的檢查,一般即可排除故障了。如果系統(tǒng)不穩(wěn)定的話,有時(shí)是因?yàn)殡娫礊V波不好導(dǎo)致的。在單片機(jī)的電源引腳跟地引腳之間接上一個(gè)0.1uF的電容會(huì)有所改善。如果電源沒有濾波電容的話,則需要再接一個(gè)更大濾波電容,例如220uF的。遇到系統(tǒng)不穩(wěn)定時(shí),就可以并上電容試試。</p><p><b> 2、故障點(diǎn)分析</b><
30、;/p><p> 檢測(cè)故障點(diǎn)的方法如下:</p><p> ①測(cè)量電壓法。首先要確認(rèn)的是各芯片電源引腳的電壓是否正常,其次檢查各種參考電壓是否正常,另外還有各點(diǎn)的工作電壓是否正常等。</p><p> ②信號(hào)注入法。將信號(hào)源加至輸入端,然后依次往后測(cè)量各點(diǎn)的波形,看是否正常,以找到故障點(diǎn)。有時(shí)我們也會(huì)用更簡(jiǎn)單的辦法,例如用手握一個(gè)鑷子,去碰觸各級(jí)的輸入端,看輸出端
31、是否有反應(yīng),</p><p> ?、郛?dāng)然,還有很多其它的尋找故障點(diǎn)的方法,例如看、聽、聞、摸等。“看”就是看元件有無(wú)明顯的機(jī)械損壞,例如破裂、燒黑、變形等;“聽”就是聽工作聲音是否正常,例如一些不該響的東西在響,該響的地方不響或者聲音不正常等;“聞”就是檢查是否有異味,例如燒焦的味道、電容電解液的味道等,對(duì)于一個(gè)有經(jīng)驗(yàn)的電子維修人員來說,對(duì)這些氣味是很敏感的;“摸”就是用手去試探器件的溫度是否正常,例如太熱,或者
32、太涼。一些功率器件,工作起來時(shí)會(huì)發(fā)熱,如果摸上去是涼的,則基本上可以判斷它沒有工作起來。但如果不該熱的地方熱了或者該熱的地方太熱了,那也是不行的。一般的功率三極管、穩(wěn)壓芯片等,工作在70度以下是完全沒問題的。70度大概是怎樣的一個(gè)概念呢?如果你將手壓上去,可以堅(jiān)持三秒鐘以上,就說明溫度大概在70度以下(注意要先試探性的去摸,千萬(wàn)別把手燙傷了)。</p><p><b> 六、結(jié)論與心得</b&g
33、t;</p><p> 通過課程設(shè)計(jì)的教學(xué)實(shí)踐,進(jìn)一步學(xué)習(xí)、掌握單片機(jī)應(yīng)用系統(tǒng)的有關(guān)知識(shí),加深了解單片機(jī)的工作原理。初步掌握簡(jiǎn)單單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)、制作、調(diào)試的方法。提高動(dòng)手實(shí)踐能力、提高科學(xué)的思維能力;對(duì)單片機(jī)又有了更深的認(rèn)識(shí),讓我對(duì)其從硬件和軟件都有了實(shí)質(zhì)性的探究,自己動(dòng)手設(shè)計(jì),組裝使自己的知識(shí)得到了系統(tǒng)化和產(chǎn)品化真正達(dá)到了學(xué)以致用。至此我要特別感謝學(xué)校和老師安排的這項(xiàng)活動(dòng)使我們脫離了高中只會(huì)理論不會(huì)實(shí)踐
34、的階段而真正進(jìn)入了實(shí)質(zhì)性的層次。使我們對(duì)將來的工作及研發(fā)奠定了一定的基礎(chǔ)。</p><p><b> 七、參考文獻(xiàn)</b></p><p> [1] 肖洪兵. .跟我學(xué)用單片機(jī)[M]. 北京:北京航空航天大學(xué)出版社,2006</p><p> [2] 何立民. 單片機(jī)高級(jí)教程[M]. 北京:北京航空航天大學(xué)出版社,2007</p&g
35、t;<p> [3] 張毅剛. 單片機(jī)原理極其應(yīng)用(第二版).高等教育出版社,2011</p><p><b> 附件:按鍵說明</b></p><p> (1)按下key1時(shí)進(jìn)入紅綠燈延時(shí)調(diào)時(shí):第一次(單數(shù))進(jìn)入為調(diào)</p><p> 試紅燈延時(shí)參數(shù);第二次(雙數(shù))進(jìn)入為調(diào)試綠燈延時(shí)參數(shù);</p><
36、p> ?。?)key2為時(shí)間調(diào)整按鍵;</p><p> ?。?)key3為退出調(diào)時(shí)狀態(tài)。</p><p><b> 附件:程序</b></p><p> //------------------------------------------------</p><p> /****************
37、***********************</p><p> ?。?)車輛通行繁忙的十字交叉路口,設(shè)計(jì)一交通燈控制器,設(shè)東西方向通行時(shí)間為40秒,當(dāng)剩余3秒時(shí)黃燈亮,南北方向通行時(shí)間為25秒,當(dāng)剩余3秒時(shí)黃燈亮。</p><p> ?。?)東西、南北方向各用三個(gè)(綠、黃、紅)LED表示,并用數(shù)碼管顯示東西、南北方向的剩余時(shí)間。</p><p> ?。?)可利用按
38、鍵修改時(shí)間參數(shù)。</p><p><b> 注釋:</b></p><p> 按下key1時(shí)進(jìn)入紅綠燈延時(shí)調(diào)時(shí):第一次(單數(shù))進(jìn)入為調(diào)</p><p> 試紅燈延時(shí)參數(shù);第二次(雙數(shù))進(jìn)入為調(diào)試綠燈延時(shí)參數(shù);</p><p> key2為時(shí)間調(diào)整按鍵;</p><p> key3為退出調(diào)
39、時(shí)狀態(tài)。</p><p> ***********************************/</p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p>
40、<p> #define chuzhi1 15 //紅燈初值</p><p> #define chuzhi2 10 //綠燈初值</p><p> //----------------定義接口------------------------</p><p> sbit key1=P2^0;</p><p>
41、sbit key2=P2^1;</p><p> sbit key3=P2^2;</p><p> sbit wela1=P2^4;//定義數(shù)碼管位選</p><p> sbit wela2=P2^3;</p><p> sbit hong=P2^5;</p><p> sbit
42、 huang=P2^6;</p><p> sbit lv=P2^7;</p><p> //----------------定義變量------------------------</p><p> /*uchar code table[]={ </p><p> 0xc0,0xf9,0xa4,0xb0,</p&
43、gt;<p> 0x99,0x92,0x82,0xf8,</p><p> 0x80,0x90};*/</p><p> uchar code table[]={ //共陰數(shù)碼管</p><p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p&g
44、t;<p> 0x7f,0x6f,0x77,0x7c,</p><p> 0x39,0x5e,0x79,0x71}; </p><p> uint shi,ge,num,k,aa,bb,shu1,shu2; </p><p> //----------------延時(shí)u毫秒----------------------------*/</
45、p><p> void delay(uint u) </p><p><b> {</b></p><p> uint x, y;</p><p> for(x = u; x > 0; x--) </p><p> for(y = 110; y > 0; y--
46、);</p><p> }</p><p> //----------------初始化-------------------------- </p><p> void init(void)</p><p><b> {</b></p><p> TMOD=0x01
47、;//設(shè)置定時(shí)器T0為工作方式1</p><p> TH0=(65536-10000)/256;//賦初值</p><p> TL0=(65536-10000)%256;</p><p> EA=1;//開總中斷</p><p><b> ET0=1;</b></p>
48、<p><b> TR0=1;</b></p><p> num=chuzhi1;</p><p> shu1=chuzhi1;</p><p> shu2=chuzhi2;</p><p><b> k=0;</b></p><p><b>
49、 aa=0;</b></p><p><b> bb=0;</b></p><p> shi=num/10;</p><p> ge=num%10;</p><p><b> hong=0;</b></p><p><b> huang=1;
50、</b></p><p><b> lv=1;</b></p><p><b> }</b></p><p> //-----------------數(shù)碼管顯示函數(shù)----------------------</p><p> void xianshi(uchar shi,uch
51、ar ge)</p><p><b> {</b></p><p><b> wela2=0;</b></p><p><b> wela1=1;</b></p><p> P0=table[shi];</p><p><b> de
52、lay(5);</b></p><p><b> wela1=0;</b></p><p><b> wela2=1;</b></p><p> P0=table[ge];</p><p><b> delay(5);</b></p><
53、p><b> }</b></p><p> //----------------主函數(shù)-------------------------- */</p><p> void KeyRead();</p><p> void main(void)</p><p><b> {</b&g
54、t;</p><p><b> init();</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> xianshi(shi,ge);</p><p> KeyRead();
55、 </p><p><b> }</b></p><p><b> }</b></p><p> //----------------讀按鍵--------------------------</p><p> void KeyRead() </p><p&
56、gt;<b> { </b></p><p> if(key1==0)</p><p><b> {</b></p><p> delay(10);//消抖</p><p> if(key1==0)</p><p><b> {</b>
57、;</p><p><b> k++;</b></p><p><b> TR0=0;</b></p><p> while(!TR0)</p><p><b> { </b></p><p> if(key1==0)//修改k值</p&
58、gt;<p><b> {</b></p><p> delay(10);</p><p> if(key1==0)</p><p><b> {</b></p><p><b> if(k==2)</b></p><p>&l
59、t;b> {</b></p><p><b> k=0;</b></p><p><b> }</b></p><p><b> k++;</b></p><p><b> }</b></p><p>
60、 while(!key1);//是否松手</p><p><b> delay(5);</b></p><p> while(!key1);</p><p><b> }</b></p><p> if(key3==0) //檢測(cè)是否退出調(diào)時(shí)</p><p>&
61、lt;b> {</b></p><p> delay(10);</p><p> if(key3==0) </p><p><b> {</b></p><p><b> if(k==2)</b></p><p><b>
62、{</b></p><p><b> k=0;</b></p><p><b> bb=1;</b></p><p><b> }</b></p><p><b> TR0=1;</b></p><p><
63、b> }</b></p><p><b> }</b></p><p> if(k==1)//按下第一次進(jìn)入設(shè)置紅燈時(shí)間模式</p><p><b> { </b></p><p><b> num=shu1;</b></p>
64、;<p> shi=num/10;</p><p> ge=num%10;</p><p> xianshi(shi,ge);</p><p><b> hong=0;</b></p><p><b> huang=1;</b></p><p><
65、;b> lv=1;</b></p><p> if(key2==0)</p><p><b> {</b></p><p> delay(10);</p><p> if(key2==0)//按下key2鍵調(diào)整通行時(shí)間</p><p><b> {<
66、/b></p><p><b> num--;</b></p><p><b> shu1=num;</b></p><p> shi=num/10;</p><p> ge=num%10;</p><p> xianshi(shi,ge);</p>
67、;<p> if(shu1==0)</p><p><b> {</b></p><p> shu1=chuzhi1;</p><p><b> num=shu1;</b></p><p> shi=num/10;</p><p> ge=num%1
68、0;</p><p> xianshi(shi,ge);</p><p><b> }</b></p><p> while(!key2);</p><p><b> delay(5);</b></p><p> while(!key2);</p>&
69、lt;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(k==2)//按下第二次進(jìn)入設(shè)置綠燈時(shí)間模式</p><p><b> {</b><
70、;/p><p><b> num=shu2;</b></p><p> shi=num/10;</p><p> ge=num%10;</p><p> xianshi(shi,ge);</p><p><b> hong=1;</b></p><p
71、><b> huang=1;</b></p><p><b> lv=0;</b></p><p> if(key2==0)</p><p><b> {</b></p><p> delay(10);</p><p> if(key2
72、==0)//按下key2鍵調(diào)整通行時(shí)間</p><p><b> {</b></p><p><b> num--;</b></p><p><b> shu2=num;</b></p><p> shi=num/10;</p><p> g
73、e=num%10;</p><p> xianshi(shi,ge);</p><p> if(shu2==0)</p><p><b> {</b></p><p> shu2=chuzhi2;</p><p><b> num=shu2;</b></p&g
74、t;<p> shi=num/10;</p><p> ge=num%10;</p><p> xianshi(shi,ge);</p><p><b> }</b></p><p> while(!key2);</p><p><b> delay(5);&l
75、t;/b></p><p> while(!key2);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
76、t;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //定時(shí)器中斷函數(shù)</b></p><p> void timer0() i
77、nterrupt 1</p><p><b> {</b></p><p> TH0=(65536-10000)/256; //重賦初值</p><p> TL0=(65536-10000)%256;</p><p><b> aa++;</b></p><p&
78、gt; if(aa==100)// 定時(shí)達(dá)到1秒</p><p><b> {</b></p><p><b> aa=0;</b></p><p><b> num--;</b></p><p> shi=num/10;</p><p&g
79、t; ge=num%10;</p><p> xianshi(shi,ge);</p><p><b> if(bb==0)</b></p><p><b> {</b></p><p> if(num==3)</p><p><b> {&
80、lt;/b></p><p><b> hong=1;</b></p><p><b> huang=0;</b></p><p><b> lv=1;</b></p><p><b> }</b></p><p>
81、 if(num==0)</p><p><b> {</b></p><p><b> hong=1;</b></p><p><b> huang=1;</b></p><p><b> lv=0;</b></p><p&g
82、t;<b> num=shu2;</b></p><p> shi=num/10;</p><p> ge=num%10;</p><p> xianshi(shi,ge);</p><p><b> bb++;</b></p><p><b> }
83、</b></p><p><b> }</b></p><p><b> if(bb==1)</b></p><p><b> {</b></p><p> if(num==3)</p><p><b> {&
84、lt;/b></p><p><b> hong=1;</b></p><p><b> huang=0;</b></p><p><b> lv=1;</b></p><p><b> }</b></p><p>
85、 if(num==0)</p><p><b> {</b></p><p><b> hong=0;</b></p><p><b> huang=1;</b></p><p><b> lv=1;</b></p><p&g
86、t;<b> num=shu1;</b></p><p> shi=num/10;</p><p> ge=num%10;</p><p> xianshi(shi,ge);</p><p><b> bb=0;</b></p><p><b> }
87、</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> //----------------程序結(jié)束------------------------ */<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈控制設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)控制的交通燈控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)控制交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的控制循環(huán)燈設(shè)計(jì)
- 單片機(jī)控制交通燈課程設(shè)計(jì)
- 單片機(jī)控制交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---交通燈控制
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈設(shè)計(jì) (2)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的交通燈
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈系統(tǒng)的設(shè)計(jì)
- 單片機(jī)交通燈的控制課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--交通燈
- 單片機(jī)課程設(shè)計(jì)(交通燈)
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---交通燈
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-交通燈
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論