2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  物理機(jī)電工程學(xué)院課程設(shè)計(jì)報(bào)告</p><p>  課程名稱:《單片機(jī)原理》課程設(shè)計(jì) </p><p>  系 部:物理與機(jī)電工程 </p><p>  專業(yè)班級: 09電子信息工程(1)班</p><p>  學(xué)生姓名: </p><

2、;p>  指導(dǎo)教師: </p><p>  完成時(shí)間: </p><p>  報(bào)告成績: </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)交通燈的控制?,F(xiàn)今世界單片機(jī)作為微型計(jì)算機(jī)一個(gè)重要部分,由于它具有抗干擾能力強(qiáng)、靈活性好、環(huán)境要求不高、價(jià)格低廉、開放容易等優(yōu)點(diǎn),在我國廣泛的應(yīng)用在工業(yè)自動(dòng)化控制、自動(dòng)檢測、智能儀器儀表、家用電器、電力電子、機(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í)刻對顯示器件進(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é)省線路板空間。</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)。對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腳將會出現(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波特率,用于有串口通訊的場合)/12MHz(產(chǎn)生精確的uS級時(shí)歇,方便定時(shí)操作)</p><p> ?。?)信號燈控制電路,LED及顯示接口</p><p>  發(fā)光二極管簡稱LED,采用砷化鎵、鎵鋁砷、和磷化鎵等材料制成,其內(nèi)部結(jié)構(gòu)為一個(gè)PN結(jié),具有單向?qū)щ娦?。?dāng)在發(fā)光二極管PN結(jié)上加正向電壓時(shí),PN結(jié)勢壘降低,載流子的擴(kuò)散運(yùn)動(dòng)大于漂移運(yùn)動(dòng),

10、致使P區(qū)的空穴注入到N區(qū),N區(qū)的電子注入到P區(qū),這樣相互注入的空穴與電子相遇后會產(chǎn)生復(fù)合,復(fù)合時(shí)產(chǎn)生的能量大部分以光的形式出現(xiàn),因此而發(fā)光。 當(dāng)所有二極管都發(fā)出光時(shí),大多數(shù)都不是很有效的。在普通二極管里,半導(dǎo)體材料本身吸引大量的光能而結(jié)束。發(fā)光二極管是由一個(gè)塑性燈泡覆蓋集中燈光在一個(gè)特定方向。由于不同材料的禁帶寬度不同,所以由不同材料制成的發(fā)光二極管可發(fā)出不同波長的光。另外,有些材料由于組分和摻雜不同,例如,有的具有很復(fù)雜的能帶結(jié)構(gòu)

11、,相應(yīng)的還有間接躍遷輻射等,因此有各種各樣的發(fā)光二極管。</p><p>  發(fā)光二極管在制作時(shí),使用的材料有所不同,那么就可以發(fā)出不同顏色的光。發(fā)光二極管的發(fā)光顏色有:紅色光、黃色光、綠色光、紅外光等。 </p><p>  發(fā)光二極管的外形有:圓形、長方形、三角形、正方形、組合形、特殊形等。 </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長時(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í)間的長短。其特點(diǎn)是定時(shí)時(shí)間精確,不需外加硬件電路,但占用CPU時(shí)間。因此軟件定時(shí)的時(shí)間不宜過長。</p><p> ?。?)硬件定時(shí)

16、:利用硬件電路實(shí)現(xiàn)定時(shí)。其特點(diǎn)是不占用CPU時(shí)間,通過改變電路元器件參數(shù)調(diào)來節(jié)定時(shí),但使用不夠靈活方便。對于時(shí)間較長的定時(shí),常用硬件電路來實(shí)現(xiàn)。</p><p> ?。?)可編程定時(shí)器:通過專用的定時(shí)計(jì)數(shù)器芯片來實(shí)現(xiàn)。其特點(diǎn)是通過對系統(tǒng)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)實(shí)現(xiàn)定時(shí),定時(shí)的時(shí)間可通過程序的設(shè)定的方法改變,使用靈活方便。也可實(shí)現(xiàn)對外部脈沖的計(jì)數(shù)功能。單片機(jī)交通控制器的設(shè)計(jì)</p><p>  當(dāng)定

17、時(shí)計(jì)數(shù)器設(shè)置為計(jì)數(shù)工作方式時(shí),技術(shù)器對來自輸入引腳T0和T1的外部信號計(jì)數(shù),外部信號的下降沿將觸發(fā)計(jì)數(shù)。最高檢測頻率為振蕩頻率的二十四分之一。計(jì)數(shù)器對外部輸入信號的占空比沒有特別的限制,但必須保證輸入信號的高電平與低電平的持續(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)生溢出中斷請求。因此,我們可以把計(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>  我們在這里采用的是方式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)它的溢出中斷請求,進(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)某些急需處理的異常情況和特殊請求,CPU會暫時(shí)中止正在執(zhí)行的指令,轉(zhuǎn)去對隨機(jī)發(fā)生的更緊迫事件進(jìn)行處理;處理完后,CPU會自動(dòng)返回原來的程序繼續(xù)執(zhí)行。</p><p>

23、  5、單片機(jī)的中斷系統(tǒng)的作用</p><p>  CPU響應(yīng)中斷申請時(shí),首先使先級有效位置位,以阻止同級或低級的終端申請;然后把程序計(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è)中斷源在程序存儲器中各有中斷服務(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)并非一次就可以正確無誤地設(shè)計(jì)出來,尤其是設(shè)計(jì)的程序,必須經(jīng)過多次的調(diào)試才能確鑿無誤地工作。為避免浪費(fèi),并不把剛剛編寫好的程序直接寫到EPROM、EEPROM等中去,更不會急于生產(chǎn)安裝部分硬件,在專用的仿真器或開發(fā)試驗(yàn)臺上進(jìn)行。</p><p>  我們首先在KEIL軟件中編寫程序,來進(jìn)行C語言程序的調(diào)試。然后再把程序加載在

26、PRETEUS軟件上進(jìn)行仿真調(diào)試。</p><p><b>  仿真結(jié)果:</b></p><p> ?。?)東西方向通行時(shí)間為40秒,當(dāng)剩余3秒時(shí)黃燈亮,南北方向通行時(shí)間為25秒,當(dāng)剩余3秒時(shí)黃燈亮。</p><p> ?。?)東西、南北方向各用三個(gè)(綠、黃、紅)LED表示,并用數(shù)碼管顯示東西、南北方向的剩余時(shí)間。</p>&l

27、t;p> ?。?)可利用按鍵修改時(shí)間參數(shù)。</p><p><b>  五、安裝與調(diào)試</b></p><p><b>  1、最小系統(tǒng)調(diào)試</b></p><p>  首先應(yīng)該確認(rèn)電源電壓是否正常。用電壓表測量接地引腳跟電源引腳之間的電壓,看是否是電源電壓,我們所用的電源電壓是5V。接下來就是檢查復(fù)位引腳電壓是否正

28、常。分別測量按下復(fù)位按鈕和放開復(fù)位按鈕的電壓值,看是否正確。然后再檢查晶振是否起振了,一般用示波器來看晶振引腳的波形,注意應(yīng)該使用示波器探頭的“X10”檔。另一個(gè)辦法是測量復(fù)位狀態(tài)下的IO口電平,按住復(fù)位鍵不放,然后測量IO口(沒接外部上拉的P0口除外)的電壓,看是否是高電平,如果不是高電平,則多半是因?yàn)榫д駴]有起振。另外還要注意的地方是,要將EA引腳拉高,因?yàn)槲覀冇玫氖瞧瑑?nèi)ROM,否則會出現(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的電容會有所改善。如果電源沒有濾波電容的話,則需要再接一個(gè)更大濾波電容,例如220uF的。遇到系統(tǒng)不穩(wěn)定時(shí),就可以并上電容試試。</p><p><b>  2、故障點(diǎn)分析</b><

30、;/p><p>  檢測故障點(diǎn)的方法如下:</p><p> ?、贉y量電壓法。首先要確認(rèn)的是各芯片電源引腳的電壓是否正常,其次檢查各種參考電壓是否正常,另外還有各點(diǎn)的工作電壓是否正常等。</p><p> ?、谛盘栕⑷敕ā⑿盘栐醇又凛斎攵?,然后依次往后測量各點(diǎn)的波形,看是否正常,以找到故障點(diǎn)。有時(shí)我們也會用更簡單的辦法,例如用手握一個(gè)鑷子,去碰觸各級的輸入端,看輸出端

31、是否有反應(yīng),</p><p>  ③當(dāng)然,還有很多其它的尋找故障點(diǎn)的方法,例如看、聽、聞、摸等?!翱础本褪强丛袩o明顯的機(jī)械損壞,例如破裂、燒黑、變形等;“聽”就是聽工作聲音是否正常,例如一些不該響的東西在響,該響的地方不響或者聲音不正常等;“聞”就是檢查是否有異味,例如燒焦的味道、電容電解液的味道等,對于一個(gè)有經(jīng)驗(yàn)的電子維修人員來說,對這些氣味是很敏感的;“摸”就是用手去試探器件的溫度是否正常,例如太熱,或者

32、太涼。一些功率器件,工作起來時(shí)會發(fā)熱,如果摸上去是涼的,則基本上可以判斷它沒有工作起來。但如果不該熱的地方熱了或者該熱的地方太熱了,那也是不行的。一般的功率三極管、穩(wěn)壓芯片等,工作在70度以下是完全沒問題的。70度大概是怎樣的一個(gè)概念呢?如果你將手壓上去,可以堅(jiān)持三秒鐘以上,就說明溫度大概在70度以下(注意要先試探性的去摸,千萬別把手燙傷了)。</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)知識,加深了解單片機(jī)的工作原理。初步掌握簡單單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)、制作、調(diào)試的方法。提高動(dòng)手實(shí)踐能力、提高科學(xué)的思維能力;對單片機(jī)又有了更深的認(rèn)識,讓我對其從硬件和軟件都有了實(shí)質(zhì)性的探究,自己動(dòng)手設(shè)計(jì),組裝使自己的知識得到了系統(tǒng)化和產(chǎn)品化真正達(dá)到了學(xué)以致用。至此我要特別感謝學(xué)校和老師安排的這項(xiàng)活動(dòng)使我們脫離了高中只會理論不會實(shí)踐

34、的階段而真正進(jìn)入了實(shí)質(zhì)性的層次。使我們對將來的工作及研發(fā)奠定了一定的基礎(chǔ)。</p><p><b>  七、參考文獻(xiàn)</b></p><p>  [1] 肖洪兵. .跟我學(xué)用單片機(jī)[M]. 北京:北京航空航天大學(xué)出版社,2006</p><p>  [2] 何立民. 單片機(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>  (1)車輛通行繁忙的十字交叉路口,設(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) //檢測是否退出調(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論