單片機(jī)簡(jiǎn)易四路搶答器_第1頁(yè)
單片機(jī)簡(jiǎn)易四路搶答器_第2頁(yè)
單片機(jī)簡(jiǎn)易四路搶答器_第3頁(yè)
單片機(jī)簡(jiǎn)易四路搶答器_第4頁(yè)
單片機(jī)簡(jiǎn)易四路搶答器_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

TOC\o"1-5"\h\z\o"CurrentDocument"1 設(shè)計(jì)任務(wù)和方案 3\o"CurrentDocument"1.1設(shè)計(jì)任務(wù) 3\o"CurrentDocument"1.2功能要求說(shuō)明 3\o"CurrentDocument"1.3設(shè)計(jì)總體方案及工作原理說(shuō)明 3\o"CurrentDocument"2搶答器的硬件系統(tǒng)的設(shè)計(jì) 5\o"CurrentDocument"2.1硬件系統(tǒng)各模塊功能簡(jiǎn)要介紹 5\o"CurrentDocument"2.2電路原理圖、PCB圖和元器件布局圖 5\o"CurrentDocument"2.3元器件清單 6\o"CurrentDocument"3搶答器軟件系統(tǒng)的設(shè)計(jì) 7\o"CurrentDocument"3.1使用的單片機(jī)資源的情況 8\o"CurrentDocument"3.2各模塊功能簡(jiǎn)要介紹 8\o"CurrentDocument"3.3程序的流程框圖 8\o"CurrentDocument"3.4程序清單 12\o"CurrentDocument"4搶答器的設(shè)計(jì)結(jié)論、仿真結(jié)果和教學(xué)建議 13\o"CurrentDocument"4.1設(shè)計(jì)結(jié)論和使用說(shuō)明 13\o"CurrentDocument"4.2仿真結(jié)果 13\o"CurrentDocument"4.3設(shè)計(jì)體會(huì) 14\o"CurrentDocument"4.4教學(xué)建議 15\o"CurrentDocument"參考文獻(xiàn) 16致謝 17附錄 181設(shè)計(jì)任務(wù)和方案1.1設(shè)計(jì)任務(wù)(一) 設(shè)計(jì)題目:搶答器(二) 設(shè)計(jì)目的與任務(wù):學(xué)生通過(guò)理論設(shè)計(jì)和實(shí)物制作解決相應(yīng)的實(shí)際問(wèn)題,鞏固和運(yùn)用在《單片機(jī)技術(shù)》中所學(xué)的理論知識(shí)和實(shí)驗(yàn)技能,掌握單片機(jī)應(yīng)用系統(tǒng)的一般設(shè)計(jì)方法,提高設(shè)計(jì)能力和實(shí)踐動(dòng)手能力,為以后從事電子電路設(shè)計(jì)、研發(fā)電子產(chǎn)品打下良好的基礎(chǔ)。1.2功能要求說(shuō)明該搶答器上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“P.”。設(shè)定S2GN鍵、S3GN鍵、S4GN鍵、S5GN鍵、S6GN鍵、S7GN鍵、S8GN鍵分別為一號(hào)選手鍵、二號(hào)選手鍵、三號(hào)選手鍵、四號(hào)選手鍵、開始鍵、答完鍵、復(fù)位鍵。若在主持人按下開始鍵之前有人按下?lián)尨疰I,則搶答違規(guī),數(shù)碼管顯示器顯示違規(guī)臺(tái)號(hào),違規(guī)指示燈(接在P3.2上的燈)亮,只有主持人按復(fù)位鍵后才能重新開始搶答。主持人按下開始鍵后,搶答開始并限定時(shí)間30S;10S內(nèi)無(wú)人搶答,蜂鳴器發(fā)出音響;若30S后依然無(wú)人搶答,蜂鳴器發(fā)出音響,違規(guī)指示燈亮。正常搶答下,從搶答鍵按下開始30S內(nèi),答完鍵沒(méi)按下,則數(shù)碼管顯示器顯示違規(guī)臺(tái)號(hào),違規(guī)指示燈亮,蜂鳴器發(fā)出音響。各臺(tái)數(shù)字顯示的消除、蜂鳴器音響及違規(guī)指示燈的關(guān)斷,都要通過(guò)主持人按復(fù)位鍵實(shí)現(xiàn)。1.3設(shè)計(jì)總體方案及工作原理說(shuō)明設(shè)計(jì)中采用AT89S52芯片、LED顯示器、蜂鳴器、LED燈和一些獨(dú)立式按鍵構(gòu)成一個(gè)簡(jiǎn)易四路搶答器。設(shè)計(jì)中是采用單片機(jī)的內(nèi)部定時(shí)器進(jìn)行定時(shí),原理框圖如圖1.1所示整個(gè)搶答器的工作原理是:在正常的供電狀態(tài)下,開始搶答時(shí)利用單片機(jī)倒計(jì)時(shí),并由單片機(jī)將所需要顯示的數(shù)據(jù)送到LED顯示器的輸入口,當(dāng)有鍵按下時(shí)則執(zhí)行相應(yīng)的鍵功能程序。圖1.1原理框圖2搶答器的硬件系統(tǒng)的設(shè)計(jì)2.1硬件系統(tǒng)各模塊功能設(shè)計(jì)該搶答器主要由單片機(jī)最小系統(tǒng)、獨(dú)立式鍵盤模塊、LED顯示電路模塊、蜂鳴電路模塊和LED指示燈電路模塊組成。各模塊的功能如下:(1) 單片機(jī)最小系統(tǒng)由AT89S52單片機(jī)、時(shí)鐘電路和復(fù)位電路構(gòu)成。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。時(shí)鐘電路由一個(gè)12MHz的石英晶體振蕩器和兩個(gè)33pF的的電容組成振蕩電路和分頻電路。復(fù)位電路采用上電復(fù)位和按鍵復(fù)位結(jié)合的方式對(duì)電路進(jìn)行復(fù)位,主要是通過(guò)RST引腳送入單片機(jī)。單片機(jī)最小系統(tǒng)為整個(gè)電路的核心。(2) 獨(dú)立式鍵盤模塊采用獨(dú)立式鍵盤接法,共有七個(gè)按鍵來(lái)對(duì)電路進(jìn)行控制。分別通過(guò)上拉電阻接在單片機(jī)的P1口線上。其中有四個(gè)按鍵為搶答鍵(接在P1.0--P1.3口線上),開始鍵接在P1.4口線上,答完鍵接在P1.5口線上,復(fù)位鍵接在P1..6口線上。(3) LED顯示電路模塊采用兩個(gè)四位一體共陽(yáng)型數(shù)碼管顯示器進(jìn)行顯示。由于位控線的驅(qū)動(dòng)電流較大,0文檔來(lái)源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.因此在P2口線上接了8個(gè)PNP型三極管提高驅(qū)動(dòng)能力;在單片機(jī)的P1口線和P2口線上接了16個(gè)470Q的電阻,這些電阻起限流的作用。將段控口a--dp接在P0.0--P0.7上,位控口接在P2口線上,實(shí)現(xiàn)對(duì)顯示的控制。LED顯示電路模塊主要用來(lái)指示第一搶答者,顯示倒計(jì)時(shí)和違規(guī)的臺(tái)號(hào)。蜂鳴電路模塊單片機(jī)P3.1口線上接上一個(gè)1KQ電阻然后再通過(guò)一個(gè)PNP型三極管與蜂鳴器相連接組成蜂鳴器電路,接入PNP型三極管是為了增強(qiáng)蜂鳴器的驅(qū)動(dòng)電流。蜂鳴電路主要完成提示和違規(guī)報(bào)警功能。LED指示燈電路模塊單片機(jī)P3.2口線上經(jīng)過(guò)一個(gè)470Q的電阻與LED燈的陰極相連接,LED燈的陽(yáng)極接正五伏電壓°470Q的電阻起限流的作用。LED指示燈電路模塊主要用來(lái)指示用違規(guī)操作發(fā)生。2.2電路原理圖、PCB圖和元器件布局Proteus原理圖、PCB圖以及元器件布局圖分別見附錄1附錄2與附錄3。2.3元器件清單元器件清單見附錄4。3搶答器軟件系統(tǒng)的設(shè)計(jì)3.1使用的單片機(jī)資源的情況該搶答器用到了單片機(jī)的定時(shí)器的功能,定時(shí)器0采用工作方式1并以中斷方式工作;在數(shù)據(jù)的顯示時(shí)采用的是查表的方法,因此需要將表格、數(shù)據(jù)存到單片機(jī)的程序存儲(chǔ)器中去。本設(shè)計(jì)采用獨(dú)立式鍵盤,鍵盤直接接在P1口上且按鍵的結(jié)果存貯在單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器里面。用到的LED顯示器接到了單片機(jī)的P0口線上和P2口線上°LED指示燈和蜂鳴器接在P3口線上。3.2各模塊功能簡(jiǎn)要介紹該搶答器所用的軟件模塊有定時(shí)器模塊、按鍵模塊、LED顯示模塊。定時(shí)器模塊選擇定時(shí)器0,設(shè)置定時(shí)器定時(shí)方式為方式1以中斷方式工作,設(shè)置定時(shí)時(shí)間為50mS。按鍵模塊采用獨(dú)立式鍵盤,共用七個(gè)按鍵對(duì)電路進(jìn)行控制和操作,分別為S2GN、S3GN、S4GN、S5GN、S6GN、S7GN、S8GN來(lái)控制搶答器。S2GN、S3GN、S4GN、S5GN代表選手;S6GN為開始鍵、S7GN為答完鍵、S8GN為復(fù)位鍵。LED顯示模塊搶答器上電顯示P.,按開始鍵開始搶答,顯示器顯示倒計(jì)時(shí),若為無(wú)效搶答則顯示器顯示違規(guī)臺(tái)號(hào)。3.3程序的流程框圖主程序流程框圖如圖3.1所示。圖3.1主程序流程框圖搶答鍵程序流程框圖搶答鍵程序流程框圖如圖3.2所示。圖中的①代表主程序流程框圖中的①。圖3.2搶答鍵程序流程框圖開始鍵程序流程框圖開始鍵程序流程框圖如圖3.3所示。圖中的①代表主程序流程框圖中的①。圖②代表?yè)尨疰I程序流程框圖中的②圖3.3開始鍵程序流程框圖答完鍵程序流程框圖開始鍵程序流程框圖如圖3.4所示。圖中的①代表主程序流程框圖中的①。圖3.4答完鍵程序流程框圖復(fù)位鍵程序流程框圖復(fù)位鍵程序流程框圖如圖3.5所示,圖中的①代表主程序流程框圖中的①。圖3.5復(fù)位鍵程序流程框圖3.4程序清單見附錄5。4搶答器的設(shè)計(jì)結(jié)論、仿真結(jié)果和教學(xué)建議4.1設(shè)計(jì)結(jié)論和使用說(shuō)明設(shè)計(jì)結(jié)論通過(guò)對(duì)單片機(jī)進(jìn)行外接鍵盤和LED數(shù)碼管的操作以及加上硬件電路和軟件的結(jié)合,實(shí)現(xiàn)了搶答器P.顯示以及搶答倒計(jì)時(shí)的顯示,正常搶答時(shí)顯示臺(tái)號(hào),搶答違規(guī)時(shí)顯示違規(guī)臺(tái)號(hào)、違規(guī)指示燈亮、蜂鳴器報(bào)警。通過(guò)測(cè)試和仿真以及修改,該搶答器完成了設(shè)計(jì)任務(wù),符合設(shè)計(jì)要求。使用說(shuō)明該搶答器采用兩個(gè)四位一體八段數(shù)碼管顯示。當(dāng)搶答器一上電即可顯示“P.”,進(jìn)入準(zhǔn)備工作狀態(tài)。按下S6GN(開始鍵)鍵后,搶答開始并計(jì)時(shí)30S;若10S內(nèi)無(wú)人搶答,蜂鳴器發(fā)出警示音,若計(jì)時(shí)到仍無(wú)人搶答則違規(guī)指示燈亮,蜂鳴器報(bào)警。若在S6GN鍵按下之前有人搶答,則顯示器顯示違規(guī)臺(tái)號(hào),違規(guī)指示燈亮,只有按S8GN(復(fù)位鍵)才能重新開始搶答。正常搶答下,顯示器顯示臺(tái)號(hào),蜂鳴器發(fā)出音響,其它搶答鍵無(wú)效;正常搶答下,從搶答鍵按下開始30S內(nèi),S7GN鍵(答完鍵)沒(méi)按下,則數(shù)碼管顯示器顯示違規(guī)臺(tái)號(hào),違規(guī)指示燈亮,蜂鳴器發(fā)出音響。各臺(tái)數(shù)字顯示的消除、蜂鳴器音響及違規(guī)指示燈的關(guān)斷,都要通過(guò)主持人按S8GN鍵實(shí)現(xiàn)。4.2仿真結(jié)果在仿真時(shí)用到了兩個(gè)軟件,第一個(gè)是Keil,第二個(gè)是Proteus,本次仿真是將兩個(gè)軟件結(jié)合起來(lái)進(jìn)行的。運(yùn)用Keil軟件用來(lái)編譯和調(diào)試程序,運(yùn)用Ptoteus軟件來(lái)仿真。Ptoteus仿真電路原理圖參見附錄。搶答器上電時(shí),仿真的數(shù)碼管顯示器顯示如圖4.1所示,當(dāng)按下開始鍵時(shí),顯示器顯示倒計(jì)時(shí),此時(shí)數(shù)碼管顯示器的顯示如圖4.2所示,若在開始鍵按下之前有人搶答,數(shù)碼管顯示違規(guī)臺(tái)號(hào),違規(guī)指示燈亮,仿真圖如圖4.3所示。正常搶答時(shí),數(shù)碼管顯示臺(tái)號(hào)仿真圖如圖4.4所示。搶答超時(shí)時(shí),數(shù)碼管顯示違規(guī)臺(tái)號(hào),違規(guī)指示燈亮,蜂鳴器發(fā)出音響,仿真圖如圖4.5所示。圖4.1搶答器上電顯示P.圖圖4.2搶答器顯示倒計(jì)時(shí)圖圖4.3搶答器正常搶答圖圖4.4搶答器搶答違規(guī)圖圖4.5搶答器超時(shí)違規(guī)圖4.3設(shè)計(jì)體會(huì)本次我設(shè)計(jì)的搶答器已經(jīng)能夠完成任務(wù),達(dá)到了設(shè)計(jì)要求。這次設(shè)計(jì)的巧妙之處是在中斷服務(wù)程序中完成了一些標(biāo)志位的處理,使得編程更加容易。雖然最后我設(shè)計(jì)的搶答器能完成任務(wù),但仍存在很多的不足。例如,我所設(shè)計(jì)的搶答器統(tǒng)計(jì)選手的得分情況,因此還需多加改進(jìn)。我所用的實(shí)物板子的電路雖然不是自己設(shè)計(jì)的,但是通過(guò)老師的講解我知道了各個(gè)模塊電路設(shè)計(jì)的原理。由于以前已經(jīng)做過(guò)幾塊板子了,因此在用Ptrtel軟件繪制電路原理圖、畫PCB圖以及制版的過(guò)程中并沒(méi)有遇到太大的困難。在進(jìn)行程序編寫時(shí),雖然遇到了一點(diǎn)小小的問(wèn)題,但是我通過(guò)Keil軟件調(diào)試,最終將編寫有誤的程序修正過(guò)來(lái)。在進(jìn)行編程時(shí)我用匯編語(yǔ)言和C語(yǔ)言各編寫了一套。通過(guò)編寫程序,我進(jìn)一步熟悉了指令的運(yùn)用。這次課程設(shè)計(jì)讓我認(rèn)識(shí)到,調(diào)試程序時(shí)必須具有良好的耐性,不能急躁,否則會(huì)事倍功半。遇到問(wèn)題是應(yīng)當(dāng)迎難而上,不能逃避,必須對(duì)自己有足夠的信心!4.4教學(xué)建議王老師不僅傳授了知識(shí)給我們還教會(huì)了我們不少做人的道理,對(duì)于大學(xué)教師來(lái)說(shuō)這是難能可貴的,這些做人的道理對(duì)于我們經(jīng)后進(jìn)入社會(huì)將會(huì)有很大的幫助。在教學(xué)方面,我尤其覺(jué)得王老師的課件做的特別的好,課件重點(diǎn)、難點(diǎn)突出,講解非常詳細(xì),而且還補(bǔ)充了一些很實(shí)用的知識(shí)。王老師將理論教學(xué)與實(shí)際操作相結(jié)合,讓我們更深刻的掌握了知識(shí),同時(shí)也讓我們認(rèn)識(shí)到書本上的東西不一定都全對(duì),必須通過(guò)實(shí)踐來(lái)檢驗(yàn)它。我認(rèn)為王老師的課講得已經(jīng)很好了,在此我只想提一個(gè)自己的拙見,希望在以后王老師能多啟發(fā)我們的創(chuàng)新精神。參考文獻(xiàn)馬忠梅,籍順心,張凱,馬巖.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2006MaZhongmei,J,ZhangKai,MaYan.MCUClanguageprogramdesign[M].beijing:Beijingaerospaceuniversitypress,2006李廣弟,朱月秀,冷祖祁.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2007LiGuangdi,ZhuYuexiu,LengZuqi.Microcontroller[M].beijing:Beijinguniversityofaeronauticsandpress,2007李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2004.9LiGuangfei.Thiscoursedesignexampleguide[M].beijing:Beijinguniversityofaeronauticsandpress,2004.9邢增平.Protel99SE設(shè)計(jì)專家指導(dǎo)[M].北京:中國(guó)鐵道出版社,2004XingZengping.Protel99SEdesignexpertguidance[M].beijing:Chinarailwaypublishinghouse,2004附錄1附錄4兀器件名稱規(guī)格數(shù)量AT89S521底座40腳3

晶振12MHz1發(fā)光二極管9單排插40腳1三極管90129蜂鳴器1小按鍵9下載口座子十芯118b20溫度傳感器1六腳開關(guān)1USB電源線加接口1電阻200Q1電阻4.7K1電阻1K3電阻470Q24電解電容220呻1瓷片電容33pF2排阻10K2短路帽3杜邦線8p1PCB板子1電源白色插座1(1)匯編語(yǔ)言■■.個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè).;項(xiàng)目名稱:搶答器;設(shè)計(jì)者:潘艷;設(shè)計(jì)日期:2010年12月20日;項(xiàng)目功能要求:搶答器上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“P.”,; 進(jìn)入準(zhǔn)備工作狀態(tài)。主持人按下開始按鈕后,搶答開始并; 限定時(shí)間30S;10S內(nèi)無(wú)人搶答,蜂鳴器發(fā)出音響;主持人; 按下開始按鈕之前有人按下?lián)尨鹌?,搶答違規(guī),顯示器顯; 示違規(guī)臺(tái)號(hào),違規(guī)指示燈亮,其它按鈕不起作用;正常搶; 答,顯示器顯示臺(tái)號(hào),蜂鳴器發(fā)出音響,其它搶答按鈕無(wú); 效;正常搶答下,從按下?lián)尨鸢粹o開始30S內(nèi),答完按鈕; 沒(méi)按下,則作超時(shí)處理,超時(shí)處理時(shí),違規(guī)指示燈亮,數(shù); 碼管顯示違規(guī)臺(tái)號(hào),蜂鳴器發(fā)出音響;各臺(tái)數(shù)字顯示的消; 除,蜂鳴器音響及違規(guī)指示燈的關(guān)斷,都要通過(guò)支持人按; 復(fù)位按鈕。;違規(guī)指示燈使用接在P3.2上的LED燈■■;;;堆棧棧底7FH;■■;;;8個(gè)LED燈接至P30---P37■■;*********************************************************************************;;LED數(shù)碼管顯示器設(shè)定;;P0.7---P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,a;P2.7---P2.0位控線,從左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);顯示緩沖區(qū)設(shè)定從右至左依次為78H,79H,7AH,7BH,7CH,7DH,7EH,7FH■■;;;獨(dú)立式鍵盤設(shè)定;;8個(gè)按鍵S2至S9分別依次接在P1.0至P1.7口線;■■;*********************************************************************************;;鍵功能程序;;S2GN(S2鍵鍵功能程序)1號(hào)選手;S3GN(S3鍵鍵功能程序)2號(hào)選手;S4GN(S4鍵鍵功能程序)3號(hào)選手;S5GN(S5鍵鍵功能程序)4號(hào)選手;S6GN(S6鍵鍵功能程序)開始鍵;S7GN(S7鍵鍵功能程序)答完鍵;S8GN(S8鍵鍵功能程序)復(fù)位鍵■■;;;常數(shù)表格;;DISBH(系統(tǒng)提示符P.字型代碼序號(hào)表);TAB(共陽(yáng)數(shù)碼管字型代碼表)■■;;;子程序;;KEY(鍵掃描子程序);;KEYCHULI(P1口數(shù)據(jù)處理子程序);DISP(數(shù)碼管顯示子程序);DL(1毫秒延時(shí)子程序)■■;;;中斷服務(wù)程序;TC0(50ms定時(shí)器0以中斷方式1進(jìn)行中斷)■■;*********************************************************************************;;數(shù)據(jù)存儲(chǔ)器變量及常量單元定義;

;40H字節(jié)單兀:十六進(jìn)制數(shù)存放定時(shí)50ms循環(huán)次數(shù);20H字節(jié)單兀:十六進(jìn)制數(shù)鍵值;21H.0:開始鍵按下標(biāo)志位;21H.1:搶答鍵按下標(biāo)志位;21H.2:超時(shí)標(biāo)志位;78H-7FH字節(jié)單兀:顯示緩存區(qū);30HT單兀:十進(jìn)制數(shù) 秒個(gè)位數(shù)非壓縮BCD碼;3^字節(jié)單兀:十進(jìn)制數(shù) 秒十位數(shù)非壓縮BCD碼;32H^單兀:十進(jìn)制數(shù) 秒值 壓縮BCD碼■■;*********************************************************************************;;偽指令定義區(qū)SECGE EQU 30HSECSHI EQU 31HSHU EQU 32H■■

.*********************************************************************************?;系統(tǒng)起始程序區(qū)ORG0000HSTART:LJMPMAINORG000BHLJMPTC0■■;;;系統(tǒng)監(jiān)控程序區(qū)ORG0030HMAIN:MOVSP,#7FH;確立堆棧區(qū)MOVPSW,#00HMOVR0,#20H;RAM區(qū)首地址MOVR7,#96;RAM區(qū)單元個(gè)數(shù)ML:MOV@R0,#00HINCR0DJNZR7,MLMOVTMOD,#01H;定時(shí)器初始化,定時(shí)器0以工作方式1工作MOVTH0,#3CHMOVTL0,#0B0HSETBEA;開啟總中斷SETBET0;開啟定時(shí)器0分中斷■■;;;顯示系統(tǒng)提示符'“P.”TSF:MOVDPTR,#DISBH;系統(tǒng)初始化后提示符“P.”字符代MOVR5,#08H;碼表首地址MOVR0,#78HDISPTSF:CLRAMOVCA,@A+DPTR

MOV@R0,AINCR0INCDPTRDJNZR5,DISPTSFLCALLDISP■■

.*********************************************************************************?;鍵盤控制指令TTLCALLDISP;調(diào)用顯示程序LCALLKEYJB20H.0,S2GN;1號(hào)選手JB20H.1,S3GN1;2號(hào)選手JB20H.2,S4GN1;3號(hào)選手JB20H.3,S5GN1;4號(hào)選手JB20H.4,S6GN1;開始鍵JB20H.5,S7GN1;答完鍵JB20H.6,S8GN1;復(fù)位鍵LJMPTT;無(wú)鍵按下,則返回TT,繼續(xù)調(diào)顯示、掃描按鍵S3GN1LJMPS3GNS4GN1LJMPS4GNS5GN1LJMPS5GNS6GN1LJMPS6GNS7GN1LJMPS7GNS8GN1LJMPS8GN■、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?、!?■

.*********************************************************************************?;鍵功能區(qū);\\S2鍵功能區(qū)S2GN:JNB21H.0,W20;若搶答違規(guī)則跳轉(zhuǎn)到W20SETBTR0CLRP3.1SETB21H.1LCALLDLLW23:MOVR2,#5MOVR0,#78HMOV@R0,#0INCR0MOV@R0,#3INCR0W21:MOV@R0,#16INCR0DJNZR2,W21MOV@R0,#01H;此段程序?yàn)楦嘛@示緩沖區(qū)SETBP3.1W24:LCALLDISP

LCALLKEYJB20H.5,S7GN22;答完鍵JB20H.6,S8GN22;復(fù)位鍵JB21H.2,W25LJMPW24W20:MOVR2,#7MOVR0,#78HW22:MOV@R0,#16INCR0DJNZR2,W22MOV@R0,#01HLJMPW26W25:LCALLDISPCLRP3.2CLRP3.1LCALLKEYJB20H.6,S8GN22;復(fù)位鍵LJMPW25W26:LCALLDISPCLRP3.2LCALLKEYJB20H.6,S8GN22;復(fù)位鍵LJMPW26S7GN22:LJMPS7GNS8GN22:LJMPS8GN;\\S3鍵功能區(qū)S3GN:JNB21H.0,W30;若搶答違規(guī)則跳轉(zhuǎn)到W30SETBTR0CLRP3.1LCALLDLLSETB21H.1W33:MOVR2,#5MOVR0,#78HMOV@R0,#0INCR0MOV@R0,#3INCR0W31:MOV@R0,#16INCR0DJNZR2,W31MOV@R0,#02H;此段程序?yàn)楦嘛@示緩沖區(qū)SETBP3.1W34:LCALLDISPLCALLKEY

JB20H.5,S7GN33;答完鍵JB20H.6,S8GN33;復(fù)位鍵JB21H.2,W35LJMPW34W30:MOVR2,#7MOVR0,#78HW32:MOV@R0,#16INCR0DJNZR2,W32MOV@R0,#02HLJMPW36W35:LCALLDISPCLRP3.2CLRP3.1LCALLKEYJB20H.6,S8GN33;復(fù)位鍵LJMPW35W36:LCALLDISPCLRP3.2LCALLKEYJB20H.6,S8GN33;復(fù)位鍵LJMPW36S7GN33:LJMPS7GNS8GN33:LJMPS8GN;\\S4鍵功能區(qū)S4GN:JNB21H.0,W40;若搶答違規(guī)則跳轉(zhuǎn)到W40SETBTR0CLRP3.1LCALLDLLSETB21H.1W43:MOVR2,#5MOVR0,#78HMOV@R0,#0INCR0MOV@R0,#3INCR0W41:MOV@R0,#16INCR0DJNZR2,W41MOV@R0,#03H;此段程序?yàn)楦嘛@示緩沖區(qū)SETBP3.1W44:LCALLDISPLCALLKEYJB20H.5,S7GN44;答完鍵

JB20H.6,S8GN44;復(fù)位鍵JB21H.2,W45LJMPW44W40:MOVR2,#7MOVR0,#78HW42:MOV@R0,#16INCR0DJNZR2,W42MOV@R0,#03HLJMPW46W45:LCALLDISPCLRP3.2CLRP3.1LCALLKEYJB20H.6,S8GN44;復(fù)位鍵LJMPW45W46:LCALLDISPCLRP3.2LCALLKEYJB20H.6,S8GN33;復(fù)位鍵LJMPW46S7GN44:LJMPS7GNS8GN44:LJMPS8GN;\\S5鍵功能區(qū)S5GN:JNB21H.0,W50;若搶答違規(guī)則跳轉(zhuǎn)到W50SETBTR0CLRP3.1LCALLDLLSETB21H.1W53:MOVR2,#5MOVR0,#78HMOV@R0,#0INCR0MOV@R0,#3INCR0W51:MOV@R0,#16INCR0DJNZR2,W51MOV@R0,#04H;此段程序?yàn)楦嘛@示緩沖區(qū)SETBP3.1W54:LCALLDISPLCALLKEYJB20H.5,S7GN55;答完鍵JB20H.6,S8GN55;復(fù)位鍵JB21H.2,W55LJMPW54W50:MOVR2,#7MOVR0,#78HW52:MOV@R0,#16INCR0DJNZR2,W52MOV@R0,#04HLJMPW56W55:LCALLDISPCLRP3.2CLRP3.1LCALLKEYJB20H.6,S8GN;復(fù)位鍵LJMPW55W56:LCALLDISPCLRP3.2LCALLKEYJB20H.6,S8GN;復(fù)位鍵LJMPW56S7GN55:LJMPS7GNS8GN55:LJMPS8GN;\\S6鍵功能區(qū)S6GN:SETBTR0SETB21H.0W63:MOVR2,#6MOVR0,#78HMOV@R0,#0INCR0MOV@R0,#3INCR0W61:MOV@R0,#16INCR0DJNZR2,W61W64:LCALLDISPLCALLKEYJB20H.0,S2GN66;1號(hào)選手JB20H.1,S3GN66;2號(hào)選手JB20H.2,S4GN66;3號(hào)選手JB20H.3,S5GN66;4號(hào)選手JB20H.6,S8GN;復(fù)位鍵JB21H.2,W65LJMPW64W65:LCALLDISPCLRP3.2CLRP3.1LCALLKEYJB20H.6,S8GN;復(fù)位鍵LJMPW65S2GN66:LJMPS2GNS3GN66:LJMPS3GNS4GN66:LJMPS4GNS5GN66:LJMPS5GN;\\S7鍵功能區(qū)S7GN:JNB21H.0,T7CLRTR0LCALLDISPLCALLKEYJB20H.6,S8GN;復(fù)位鍵LJMPS7GNT7:LJMPTT;\\S8鍵功能區(qū)S8GN:MOVP3,#0FFHCLR21H.0CLR21H.1CLR21H.2MOV40H,#00HCLRTR0LJMPMAIN■■;;;子程序區(qū);;(1)鍵掃描子程序KEY:LCALLKEYCHULI;調(diào)?1口數(shù)據(jù)處理子程序JZEXIT;沒(méi)有鍵按下,轉(zhuǎn)返回LCALLDISP;調(diào)顯示子程序去抖動(dòng)LCALLDISPLCALLKEYCHULI;調(diào)?1口數(shù)據(jù)處理子程序JZEXIT;沒(méi)有鍵按下,轉(zhuǎn)返回MOVB,20H;保存取反后的鍵值KEYSF:LCALLKEYCHULI;調(diào)?1口數(shù)據(jù)處理子程序JZKEY1;鍵釋放,轉(zhuǎn)恢復(fù)鍵值LCALLDISP;調(diào)顯示子程序延時(shí)LJMPKEYSF;等待釋放KEY1:MOV20H,B;鍵值送20H保存EXIT:RET;子程序返回;(2)P1口數(shù)據(jù)處理子程序KEYCHULI:PUSHPSW;保護(hù)現(xiàn)場(chǎng)CLRRS1;改變當(dāng)前寄存器組為組1

SETBRS0MOVP1,#0FFH;先向P1口寫1MOVA,P1;讀?1口數(shù)據(jù)CPLA;P1口數(shù)據(jù)取反MOV20H,A;保存取反后的鍵值CLRRS1;恢復(fù)當(dāng)前寄存器組為組0CLRRS0POPPSW;恢復(fù)現(xiàn)場(chǎng)RET;子程序返回;■■.個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè).;常數(shù)表格區(qū);系統(tǒng)初始化后提示符“P.”字符代碼表DISBH:DB10H,10H,10H,10H,10H,10H,10H,11H 提示符“P.”字符序號(hào);顯示字符段選碼表(共陽(yáng)極代碼)TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8DB 90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH;9,A,B,C,D,E,;F,滅,p.,-■■;*********************************************************************************;;(3)數(shù)碼管顯示子程序DISP;入口:7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)DISP:PUSHDPHPUSHDPLPUSHACCPUSHPSWCLRRS1;改變當(dāng)前寄存器組為組1SETBRS0MOVR1,#78H;顯示緩沖存儲(chǔ)單元首地址MOVR2,#0FEH;從右至左顯示MOVR5,#08H;循環(huán)次數(shù),即驅(qū)動(dòng)數(shù)碼管的位數(shù)DISP1:MOVA,@R1MOVDPTR,#TABMOVCA,@A+DPTRMOVP2,#0FFHMOVP2,#0FFHMOVP0,A;送段控MOVP2,R2;送位控LCALLDL;延時(shí)1毫秒MOVA,R2;位控碼送ARLA;獲得新的位控碼MOVR2,A;保存新的位控碼INCR1;獲得新的顯示緩沖單元地址

DJNZR5,DISP1;循環(huán)沒(méi)有結(jié)束則繼續(xù)DISP2:POPPSW;恢復(fù)當(dāng)前寄存器組的組號(hào)POPACCPOPDPLPOPDPHRET(4)延時(shí)1ms子程序(晶振頻率12MHz)DLDL:MOVR7,#02HDL1:MOVR6,#0FFHDL2:DJNZR6,DL2DJNZR7,DL1RET(5)延時(shí)130ms子程序(晶振頻率12MHz)DLDLL:MOVR7,#0FFHDLL1:MOVR6,#0FFHDLL2:DJNZR6,DLL2DJNZR7,DLL1RET(6)減一子程序SS:MOVSECGE,78HMOVSECSHI,79HMOVA,SECSHISWAPA;累加器中高低字節(jié)交換ORLA,SECGEDECA;累加器自減1MOVSHU,A;全值暫存SHU中ANLA,#0FH;屏蔽十位數(shù),取出個(gè)位數(shù)CJNEA,#0FH,SS1SUBBA,#6;對(duì)非法數(shù)據(jù)進(jìn)行調(diào)整SS1:MOVSECGE,AMOV78H,SECGEMOVA,SHUSWAPA;累加器中高低字節(jié)交換ANLA,#0FH;屏蔽個(gè)位數(shù),取出十位數(shù)CJNEA,#0FH,SS2SUBBA,#6;對(duì)非法數(shù)據(jù)進(jìn)行調(diào)整SS2:MOVSECSHI,AMOV79H,SECSHIMOVA,SECSHISWAPA;累加器中高低字節(jié)交換ORLA,SECGEMOVSHU,A;全值暫存SHU中RET;中斷服務(wù)程序

;定時(shí)器中斷程序TC0:PUSHACCPUSHPSWPUSHDPHPUSHDPL;保護(hù)現(xiàn)場(chǎng)、保護(hù)斷點(diǎn)SETBRS1;切換至通用寄存器第3組SETBRS0MOVTH0,#3CHMOVTL0,#0B0H;送定時(shí)50ms的初值INC40HMOVR2,40HCJNER2,#20,RET1MOV40H,#00HLCALLSSMOVR3,SHUJNB21H.1,LL5LJMPLL2LL5:CJNER3,#20H,LL1CLRP3.1LL1:CJNER3,#19H,LL2SETBP3.1LL2:CJNER3,#00H,RET1SETB21H.2CLRTR0RET1:POPDPLPOPDPHPOPPSWPOPACCRETIEND(2)C語(yǔ)言/*A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**A**1**A**A**A**A**A**A**A**A*?:項(xiàng)目名稱:搶答器設(shè)計(jì)者:潘艷設(shè)計(jì)日期:2010年10月01日*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*■個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè);功能要求:搶答器上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“P.”,進(jìn)入準(zhǔn)備工作狀態(tài)。主持人按下開始按鈕后,搶答開始并限定時(shí)間30S;10S內(nèi)無(wú)人搶答,蜂鳴器發(fā)出音響;主持人按下開始按鈕之前有人按下?lián)尨鹌?,搶答違規(guī),顯示器顯示違規(guī)臺(tái)號(hào),違規(guī)指示燈亮,其它按鈕不起作用;正常搶答,顯示器顯示臺(tái)號(hào),蜂鳴器發(fā)出音響,其它搶答按鈕無(wú)效;正常搶答下,從按下?lián)尨鸢粹o開始30S內(nèi),答完按鈕沒(méi)按下,則作超時(shí)處理,超時(shí)處理時(shí),違規(guī)指示燈亮,數(shù)碼管顯示違規(guī)臺(tái)號(hào),蜂鳴器發(fā)出音響;各臺(tái)數(shù)字顯示的消除,蜂鳴器音響及違規(guī)指示燈的關(guān)斷,都要通過(guò)支持人按復(fù)位按鈕。違規(guī)指示燈使用接在P3.2上的LED燈*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*■個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)?LED數(shù)碼管顯示器設(shè)定;P0.7---P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,aP2.7---P2.0位控線,從左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*■;獨(dú)立式鍵盤設(shè)定;8個(gè)按鍵S2至S9分別依次接在P1.0至P1.7口線*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*■;鍵功能程序;S2GN(S2鍵鍵功能程序)1號(hào)選手S3GN(S3鍵鍵功能程序)2號(hào)選手S4GN(S4鍵鍵功能程序)3號(hào)選手S5GN(S5鍵鍵功能程序)4號(hào)選手S6GN(S6鍵鍵功能程序)開始鍵S7GN(S7鍵鍵功能程序)答完鍵S8GN(S8鍵鍵功能程序)復(fù)位鍵/個(gè)*********************************************************************************宏定義"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*個(gè)*個(gè)*******************************************************************************數(shù)組區(qū)共陽(yáng)數(shù)碼管字型碼P.顯示序號(hào)"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*個(gè)*個(gè)*******************************************************************************函數(shù)區(qū)voidDelayX1ms(uintcount)延時(shí)函數(shù)voidled_buf_auto_flush(void)顯示緩沖區(qū)更新函數(shù)voidtimer0(void)定時(shí)器t0中斷服務(wù)函數(shù)voidput_on_leds(void)顯示輸出函數(shù)keychuli()鍵值處理函數(shù)key()鍵盤掃描函數(shù)voiddisP(void)顯示P.的顯示緩沖區(qū)更新函數(shù)voidmain()主函數(shù)"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*個(gè)*個(gè)*******************************************************************************變量定義ucharsec計(jì)時(shí)變量ucharpos段碼序號(hào)數(shù)組下標(biāo)uchardmask位控碼uchark返回鍵值ucharkeyzhi,keyzhii鍵盤按鍵值臨時(shí)存放ucharbiaozhi標(biāo)志位

*/#include"reg52.h”#include"intrins.h”#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongsbitP3_1=P3”1;sbitP3_2=P3"2;〃定義超時(shí)標(biāo)志位〃定義搶答標(biāo)志位〃定義超時(shí)標(biāo)志位〃定義搶答標(biāo)志位//定義開始標(biāo)志位//定義計(jì)時(shí)變量ucharbiaozhil;ucharbiaozhi2;ucharsec;ucharled_buf[8];/*共陽(yáng)數(shù)碼管字型碼*//*0,1,2,3,4,5,6,7,8,9,p.,滅*//*定義LED顯示字符段碼*/staticstruct{ucharascii;/*查代碼的序號(hào)*/ucharstroke;/*數(shù)碼管顯示段碼*/}codeled_strokes[13]={{'0',0xc0},{T',0xf9},{'2',0xa4},{'3',0xb0},{'4',0x99},{'5',0x92},{'6',0x82},{'7',0xf8},{'8',0x80},{'9',0x90},{'-',0xbf},{'p',0x0c},{'o',0xff} };/********************顯示緩沖區(qū)更新函數(shù)*****************************/voidled_buf_auto_flush(void){led_buf[0]=sec%10+0x30;led_buf[1]=sec/10+0x30;}/****************************段碼查找函數(shù)*****************************/ucharget_strokes(ucharc){uchari=0;while(led_strokes[i].ascii!=c)//根據(jù)顯示信息(序號(hào))查到相應(yīng)的短控代碼i++;return(led_strokes[i].stroke);}//函數(shù)名: voidDelayX1ms(uintcount)//功能: 延時(shí)時(shí)間為1ms〃調(diào)用函數(shù)://輸入?yún)?shù):count,1ms計(jì)數(shù)//輸出參數(shù)://說(shuō)明:總共延時(shí)時(shí)間為1ms乘以count,crystal=12Mhz/"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/*********************************************************************************voidDelayX1ms(uintcount){uintj;while(count—!=0){for(j=0;j<80;j++);}}/*************************顯示p.的顯示緩沖區(qū)更新函數(shù)*****************************/voiddisP(void){led_buf[0]='o';led_buf[1]='o';led_buf[2]='o';led_buf[3]='o';led_buf[4]='o';led_buf[5]='o';led_buf[6]='o';led_buf[7]='p';}/**************************定時(shí)器t0中斷服務(wù)函數(shù)**********************************/voidtimer0(void)interrupt1using2 //選用定時(shí)器0工作方式為1{staticucharclick=0; //定時(shí)器0定時(shí)中斷次數(shù)TH0=0x3c; //設(shè)置初始值50ms為循環(huán)20次為1s,12MHzTL0=0xb0;++click;if(click==20){click=0;if(—sec==0){TR0=0;P3_1=0;P3_2=0;biaozhi0=1;}if(biaozhi1==0){if(sec==20)P3_1=0;if(sec==19)P3_1=1;}if(biaozhi1==1)

P3_1=1;}//LED顯示緩沖區(qū)時(shí)間值更新//LED顯示緩沖區(qū)時(shí)間值更新}/*********************************顯示輸出函數(shù)**********************************/voidput_on_leds(void){//位控碼初始化uchardmask=0xFE;//位控碼初始化ucharpos;for(pos=0;pos<8;pos++){P2=0xff;P2=0xff;//取顯示段碼并輸出到段控口//位控碼輸出到位控口//取顯示段碼并輸出到段控口//位控碼輸出到位控口//延時(shí)//修改位控碼P2=dmask;DelayX1ms(2);dmask=_crol_(dmask,1);}}/個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)函數(shù)原型:keychuli();功 能:處理與鍵盤相連的P1口的內(nèi)容,作為鍵值。""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/************************************************************************ucharkeychuli(){uchark;//P1口內(nèi)容送//P1口內(nèi)容送K//取反//返回鍵值k=~k;return(k);}************************************************************************函數(shù)原型:key();功 能:鍵盤掃描函數(shù),函數(shù)返回值即鍵值。""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)/ucharkey(){//鍵盤按鍵鍵值臨時(shí)存放//調(diào)//鍵盤按鍵鍵值臨時(shí)存放//調(diào)P1口處理函數(shù)//有鍵動(dòng)作延時(shí)去抖動(dòng),否則函數(shù)返回keyzhi=keychuli();if(keyzhi!=0){put_on_leds();put_on_leds();//再次調(diào)P1//再次調(diào)P1口處理函數(shù)//真正有鍵按下,取鍵值并暫存if(keyzhi!=0)

{keyzhii=keyzhi;while(keyzhi!=0){put_on_leds();put_on_leds();keyzhi=keychuli();}keyzhi=keyzhii;}}return(keyzhi);}/*主函數(shù)*/voidmain(){ucharkeyzhiii;biaozhi0=0;biaozhi1=0;biaozhi2=0;sec=30;TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=0;disP();while(1){put_on_leds();keyzhiii=key();switch(keyzhiii){case0:break;ww2:case1:if(biaozhi2==0){//判按鍵是否釋放,沒(méi)有釋放延時(shí)去抖動(dòng)等待釋放//按鍵釋放后恢復(fù)按鍵鍵值//返回按

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論