版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p><b> 籃球計(jì)時(shí)計(jì)分器</b></p><p> 姓 名: ××× </p><p> 學(xué) 號: ×××××
2、 </p><p> 專業(yè)班級: ×××× </p><p> 指導(dǎo)老師: ××× </p><p> 所在學(xué)院:××××××××××
3、 </p><p> 2007年6月30日</p><p><b> 1 引言</b></p><p> 籃球比賽計(jì)時(shí)計(jì)分器是為了解決籃球比賽時(shí)計(jì)分與計(jì)時(shí)準(zhǔn)確的問題。此裝置利用單片機(jī)AT89C51完成了計(jì)時(shí)和計(jì)分的功能。該設(shè)計(jì)將介紹系統(tǒng)硬件與軟件的設(shè)計(jì)過程,采用該裝置可根據(jù)實(shí)際情況進(jìn)行比分修改和時(shí)間的準(zhǔn)確顯示,具有低功耗,可靠性,安全
4、性以及低成本等特點(diǎn)。</p><p><b> 1.1背景知識介紹</b></p><p> 單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。</p>
5、<p> 單片機(jī)自20世紀(jì)70年代問世以來,以極其高的性價(jià)比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。單片機(jī)的優(yōu)點(diǎn)是體積小、重量輕、抗干擾能力強(qiáng),對環(huán)境要求不高,價(jià)格低廉,可靠性高,靈活性好,開發(fā)較為容易。例如,80C51系列單片機(jī)已有十多年的生命期,如今仍保持著上升的趨勢,就充分證明了這一點(diǎn)。單片機(jī)以其一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表,及通訊設(shè)備、日常消費(fèi)
6、類產(chǎn)品、玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié)以及人民生活的各層次中,如車間流水線控制、自動化系統(tǒng)等、智能型家用電器等。而美國ATMEL公司開發(fā)生產(chǎn)了新型的8位單片機(jī)——AT89系列單片機(jī)。他不但具有一般MCS-51單片機(jī)的所有特性,而且還擁有一些獨(dú)特的優(yōu)點(diǎn),此次設(shè)計(jì)中所用到的AT89C51就是其中典型的代表。</p><p> 單片機(jī)內(nèi)部也用和電腦功能類似的模塊,比如CPU,內(nèi)存,并行總線,還有和硬盤作用相
7、同的存儲器件,用它來做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動滾筒洗衣機(jī)、排煙罩、VCD等等的家電里面都可以看到它的身影。 </p><p> 單片機(jī)是靠程序?qū)崿F(xiàn)功能的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能。一個(gè)不是很復(fù)雜的功能要是用美國50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件的話,電路一定
8、是一塊大PCB板。但是如果要是用美國70年代成功投放市場的系列單片機(jī),結(jié)果就會有天壤之別。只因?yàn)閱纹瑱C(jī)的通過你編寫的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性。 </p><p><b> 1.2 設(shè)計(jì)目的</b></p><p> 隨著單片機(jī)在各個(gè)領(lǐng)域的廣泛應(yīng)用,許多用單片機(jī)做控制的球賽計(jì)時(shí)計(jì)分系統(tǒng)也應(yīng)運(yùn)而產(chǎn)生,如用單片機(jī)控制LCD液晶顯示器計(jì)時(shí)計(jì)分器,用單片機(jī)控
9、制LED七段顯示器計(jì)時(shí)計(jì)分器等。</p><p> 本設(shè)計(jì)用由AT89C51編程控制LED七段數(shù)碼管作顯示的球賽計(jì)時(shí)計(jì)分系統(tǒng)。該系統(tǒng)具有賽程定時(shí)設(shè)置,賽程時(shí)間暫停,及時(shí)刷新甲、乙雙方的成績以及賽后成績暫存等功能。它具有價(jià)格低廉,性能穩(wěn)定,操作方便并且易于攜帶等特點(diǎn)。廣泛適合各類學(xué)?;蛘咝⌒蛨F(tuán)體作為賽程計(jì)時(shí)計(jì)分。</p><p> 通過本次基于C51系列籃球計(jì)時(shí)計(jì)分器的設(shè)計(jì),可以了解、熟
10、悉有關(guān)單片機(jī)開發(fā)設(shè)計(jì)的過程,并加深對單片機(jī)的理解和應(yīng)用以及掌握單片機(jī)與外圍接口的一些方法和技巧,這主要表現(xiàn)在以下一些方面:</p><p> (1) 籃球賽計(jì)時(shí)計(jì)分系統(tǒng)包含了8051系列單片機(jī)的最小應(yīng)用系統(tǒng)的構(gòu)成,同時(shí)在此基礎(chǔ)上擴(kuò)展了一些使用性強(qiáng)的外圍接口。</p><p> (2) 可以了解到LED顯示器的結(jié)構(gòu)、工作原理以及這種顯示器的接口實(shí)例與具體連接與編程方法。</p>
11、;<p> (3) 怎樣利用串行口來擴(kuò)展顯示接口等。</p><p><b> 1.3功能要求</b></p><p> (1)能記錄整個(gè)賽程的比賽時(shí)間,并能在比賽開始前設(shè)定比賽時(shí)間,在比賽過程中能暫停比賽時(shí)間。</p><p> ?。?)能隨時(shí)刷新甲、乙兩隊(duì)在真?zhèn)€賽程中的比分,即對甲乙兩隊(duì)的分?jǐn)?shù)進(jìn)行加分和減分。</p
12、><p> ?。?)中場交換比賽場地時(shí),能交換甲、乙兩隊(duì)比分的位置。</p><p> ?。?)比賽結(jié)束時(shí)能發(fā)出報(bào)警提示。</p><p> ?。?)在每次交換球權(quán)后24秒能手動賦初值,進(jìn)攻超過24秒計(jì)時(shí)暫停知道按下繼續(xù)開始計(jì)時(shí)。</p><p> 1.4硬件系統(tǒng)方案設(shè)計(jì)</p><p> 基于單片機(jī)系統(tǒng)的籃球記時(shí)記分
13、器的系統(tǒng)結(jié)構(gòu)如圖1.1</p><p> 圖1.1 籃球記時(shí)記分器的系統(tǒng)結(jié)構(gòu)</p><p> 系統(tǒng)硬件由以下三個(gè)部分組成:</p><p> ?。?)處理器:單片機(jī) AT89C51</p><p><b> ?。?)顯示部分</b></p><p><b> ?。?)按鍵開關(guān)&l
14、t;/b></p><p> 處理器:本系統(tǒng)采用單片機(jī)AT89C51作為本設(shè)計(jì)的核心元件,兼容MCS—51指令系統(tǒng),32個(gè)雙向I/O口,兩個(gè)16位可編程定時(shí)/計(jì)數(shù)器,1個(gè)串行中斷,兩個(gè)外部中斷源,低功耗空閑和掉電模式,4k可反復(fù)擦寫(>1000次)Flash ROM,全靜態(tài)操作0-24MHz,128x8bit內(nèi)部RAM,共6個(gè)中斷源,足以滿足本次設(shè)計(jì)的要求。</p><p>
15、 顯示部分:在本次設(shè)計(jì)中,共接入12個(gè)七段共陰LED顯示器,其中6個(gè)用于計(jì)錄甲、乙兩隊(duì)的分?jǐn)?shù),每隊(duì)3個(gè)LED顯示器分?jǐn)?shù)范圍可達(dá)到0—999分,足夠滿足賽程需要。另外的6個(gè)LED顯示器則用于計(jì)錄賽程的時(shí)間。分、秒、進(jìn)攻時(shí)間,各用2個(gè)用LED顯示。其中顯示分鐘的兩位數(shù)字和顯示進(jìn)攻時(shí)間的四個(gè)LED可以通過按鍵進(jìn)行調(diào)整設(shè)定。當(dāng)把時(shí)間設(shè)置好后,按下開始計(jì)時(shí)按鍵比賽開始時(shí)啟動計(jì)時(shí)。分鐘和進(jìn)攻時(shí)間可以設(shè)置的范圍為0—99。根據(jù)設(shè)計(jì),計(jì)時(shí)范圍可達(dá)0—
16、99分鐘,進(jìn)攻時(shí)間最大為99秒也完全滿足賽程的需要。</p><p> 按鍵部分:本次設(shè)計(jì)共用了10各按鍵。其中4各來調(diào)整甲乙兩隊(duì)的分?jǐn)?shù),每個(gè)隊(duì)用兩個(gè)按鍵,分別對分?jǐn)?shù)進(jìn)行加1分和減1分;2各按鍵用來設(shè)定比賽時(shí)間的分鐘,其中這兩個(gè)按鍵分別控制分鐘的十位和個(gè)位;同樣兩個(gè)按鍵來設(shè)定進(jìn)攻時(shí)間的十位和個(gè)位;剩下的兩個(gè)按鍵一個(gè)用來控制比賽時(shí)間的開始與暫停,另外一個(gè)用來控制進(jìn)攻時(shí)間,當(dāng)按下比賽開始暫停按鍵時(shí),比賽的時(shí)間有原來
17、的狀態(tài)變?yōu)榱硪环N狀態(tài),進(jìn)攻調(diào)整按鍵則是在交換球權(quán)的時(shí)候,手動來賦予進(jìn)攻時(shí)間初值。</p><p> 當(dāng)一場比賽結(jié)束的時(shí)候,暫停/開始按鍵還能完成交換兩隊(duì)分?jǐn)?shù)的功能。</p><p><b> 1.5軟件設(shè)計(jì)要求</b></p><p> 一、在上電點(diǎn)時(shí),先對系統(tǒng)初始化。等待時(shí)間設(shè)定。</p><p> 二、當(dāng)時(shí)間
18、設(shè)定完成之后,按下開始鍵,系統(tǒng)顯示分值和比賽時(shí)間。</p><p> 三、進(jìn)攻時(shí)間由設(shè)定值減到0時(shí)。整個(gè)體統(tǒng)暫停計(jì)時(shí),直到開始鍵重新按下。進(jìn)攻時(shí)間重新賦值,開始繼續(xù)計(jì)時(shí)。</p><p> 四、當(dāng)按下暫停按鍵時(shí),進(jìn)攻時(shí)間賦初值,停止計(jì)時(shí),等待繼續(xù)計(jì)時(shí)鍵按下。</p><p> 五、倒計(jì)時(shí)結(jié)束時(shí),發(fā)出10秒警報(bào)。</p><p> 六、
19、在整個(gè)計(jì)時(shí)過程中,都可以對甲乙兩隊(duì)分?jǐn)?shù)進(jìn)行修改。</p><p><b> 2 系統(tǒng)硬件設(shè)計(jì)</b></p><p> 2.1單片機(jī)AT89C51介紹</p><p> MCS-51是指由美國INTEL公司生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了很多品種,如8031,8051,8751,8032,8052,8752等,其中8051
20、是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS51系列單片機(jī),而8031是前些年在我國最流行的單片機(jī),所以很多場合會看到8031的名稱。</p><p> AT89C51是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用AT
21、MEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的AT89C51提供了高性價(jià)比的解決方案。</p><p> AT89C51具有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。AT89C51也是一個(gè)低功耗高性能單片機(jī),有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通
22、信口,AT89C51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。如圖所示,圖2.1為AT89C51單片機(jī)基本構(gòu)造,其基本性能介紹如下:</p><p> 圖2.1 AT89C51引腳圖</p><p><b> 2.1.1管腳說明</b></p>&
23、lt;p><b> VCC:供電電壓</b></p><p><b> GND:接地。</b></p><p> P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸
24、入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p><p> P2口:P2口為一個(gè)內(nèi)
25、部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)
26、接收高八位地址信號和控制信號。</p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> P3口也可作為AT89C51的一些特殊功能口,如下表所示:</p><p>
27、 表2.1 AT89C51特殊功能表</p><p> P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p> ALE/PROG:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖
28、。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器
29、的選通信號。在由外部程序存儲器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。</p><p> /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源
30、(VPP)。</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p><p> XTAL2:來MCS-51系列單片機(jī)片內(nèi)有一個(gè)串行I/O端口,通過引腳 RXD(P3.0)和TXD(P3.1)可與外設(shè)電路進(jìn)行全雙工的 串行異步通信。 </p><p> 8051單片機(jī)的串行端口有4種基本工作方式,通過編程設(shè)置,可以使其工作在任一方式
31、,以滿足不同應(yīng)用場合的需要。其中,方式0主要用于外接移位寄存器,以擴(kuò)展單片機(jī)的I/O電路;方式1多用于雙機(jī)之間或與外設(shè)電路的通信;方式2,3除有方式l的功能外,還可用作多機(jī)通信,以構(gòu)成分布式多微機(jī)系統(tǒng)。串行端口有兩個(gè)控制寄存器(SCON和PCON),用來設(shè)置工作方式、發(fā)送或接收的狀態(tài)、特征位、數(shù)據(jù)傳送的波特率(每秒傳送的位數(shù))以及作為中斷標(biāo)志等。</p><p> 串行端口有一個(gè)數(shù)據(jù)寄存器SBUF(在特殊功能寄
32、存器中的字節(jié)地址為99H),該寄存器為發(fā)送和接收所共同。發(fā)送時(shí),只寫不讀;接收時(shí),只讀不寫。在一定條件下,向SBUF寫入數(shù)據(jù)就啟動了發(fā)送過程;讀SBUF就啟動了接收過程。串行通信的波特率可以程控設(shè)定。在不同工作方式中,由時(shí)鐘振蕩頻率的分頻值或由定時(shí)器T1的溢出率確定,使用十分方便靈活自反向振蕩器的輸出。</p><p> 2.1.2 芯片擦除特性</p><p> 整個(gè)PEROM陣列和
33、三個(gè)鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。</p><p> 2.1.3 AT89C51省電模式</p><p> AT89C51有兩種可用軟件編程的省電模式,它們是空閑模式和掉電工作模式。這兩種方式是控制專用寄存器PCON(電源控制寄存器)中的PD(
34、PCON.1)和IDL(PCON.0)位來實(shí)現(xiàn)的。PD是掉電模式,當(dāng)PD=1時(shí),激活掉電工作模式,單片機(jī)進(jìn)入掉電工作狀態(tài),IDL是空閑等待狀態(tài),當(dāng)IDL=1時(shí),激活空閑工作模式,單片機(jī)進(jìn)入睡眠狀態(tài),如需同時(shí)進(jìn)入兩種工作模式,即PD和IDL同時(shí)為1,則先激活掉電工作模式。</p><p><b> 空閑模式:</b></p><p> 在空閑工作模式狀態(tài),CPU保持
35、睡眠狀態(tài)而所有片內(nèi)的外設(shè)仍保持激活狀態(tài),這種方式由軟件產(chǎn)生。此時(shí),片內(nèi)RAM和所有特殊功能寄存器的內(nèi)容保持不變。空閑模式可由任何允許的中斷請求或者硬件復(fù)位終止。</p><p> 終止空閑工作模式的方法有兩種</p><p> 其一是任何一條被允許中斷的事件被激活,IDL(PCON.0)被硬件清除,即刻終止空閑工作模式。程序會首先響應(yīng)中斷,進(jìn)入中斷服務(wù)程序,執(zhí)行完中斷服務(wù)程序并緊隨RE
36、TI(中斷返回)指令后,下一條要執(zhí)行的指令就是使單片機(jī)進(jìn)入空閑模式那條指令后面的一條指令。</p><p> 其二是通過硬件復(fù)位也可以將空閑工作模式終止。需要注意的是,當(dāng)由硬件復(fù)位來終止空閑工作模式時(shí),CPU通常是從激活模式那條指令的下一條指令開始繼續(xù)執(zhí)行程序的,要完成內(nèi)部復(fù)位操作,硬件復(fù)位脈沖要保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)有效,在這種情況下,內(nèi)部禁止CPU訪問片內(nèi)RAM,而允許訪問其他端口。為了避免對端
37、口產(chǎn)生意外寫入,激活空閑模式的那條指令的后一條指令不應(yīng)是一條對端口或者外部存儲器的寫入指令。</p><p><b> 掉電模式:</b></p><p> 在掉電模式下,振蕩器停止工作,進(jìn)入掉電模式的指令是最后一條被執(zhí)行的指令,片內(nèi)RAM和特殊功能寄存器的內(nèi)容在終止掉電模式前被凍結(jié)。推出掉電模式的唯一方法是硬件復(fù)位。</p><p>
38、復(fù)位后將重新定義全部特殊功能寄存器但不改變RAM中的內(nèi)容,在VCC恢復(fù)到正常工作電平前,復(fù)位應(yīng)無效,且必須保持一定時(shí)間以使振蕩器重新啟動并且穩(wěn)定的工作。</p><p> 空閑和掉電模式外部引腳狀態(tài)如表2.3所示</p><p> 表2.2 外部引腳狀態(tài)表</p><p> 2.1.4最小系統(tǒng)設(shè)計(jì)</p><p> 通過上面對單片機(jī)
39、的介紹,我們已經(jīng)對單片的功能有了充分的了解。下面就以AT89C51單片機(jī)來設(shè)計(jì)該設(shè)計(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> 圖2.2 單片機(jī)最小系統(tǒng)</p>
40、<p> 復(fù)位電路:由電容串聯(lián)電阻構(gòu)成。由圖并結(jié)合"電容電壓不能突變"的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會出現(xiàn)高電平,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來決定。典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位。所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位。在電路圖中,電容的的大小是22uF,電阻的大小是10k。所以根據(jù)公式,可以算出電容充電到電源電壓的0.7倍(單片機(jī)的電源
41、是5V,所以充電到0.7倍即為3.5V),需要的時(shí)間是10K*10UF=0.1S。也就是說在開機(jī)的0.1S內(nèi),電容兩端的電壓時(shí)在0~3.5V增加。這個(gè)時(shí)候10K電阻兩端的電壓為從5~1.5V減少(串聯(lián)電路各處電壓之和為總電壓)。所以在0.1S內(nèi),RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機(jī)中小于1.5V的電壓信號為低電平信號,而大于1.5V的電壓信號為高電平信號。所以在開機(jī)0.1S內(nèi),單片機(jī)系統(tǒng)自動復(fù)位(RST引
42、腳接收到的高電平信號時(shí)間為0.1S左右)。當(dāng)然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個(gè)機(jī)周期的高電平。51單片機(jī)最小系統(tǒng)復(fù)位電路的極性電容C</p><p> 除上電復(fù)位外,還可以通過手動來復(fù)位,單片機(jī)手動復(fù)位電路就好比電腦的重啟部分,當(dāng)電腦在使用中出現(xiàn)死機(jī),按下重啟按鈕電腦內(nèi)部的程序從頭開始執(zhí)行。單片機(jī)也一樣,當(dāng)單片機(jī)系統(tǒng)在運(yùn)行中,受到環(huán)境干擾出現(xiàn)程序跑飛的時(shí)候,按下手動復(fù)位按鈕內(nèi)部
43、的程序自動從頭開始執(zhí)行。原理同上電復(fù)位,當(dāng)按鍵被按下時(shí),給RST腳一個(gè)復(fù)位信號,使其重新開始運(yùn)行。由于在比賽過程中,我們通常不希望系統(tǒng)從頭開始計(jì)時(shí),在該設(shè)計(jì)中手動復(fù)位就不再設(shè)計(jì)電路中。</p><p> 晶振電路:51單片機(jī)最小系統(tǒng)晶可以采用6MHz或者11.0592MHz,在正常工作的情況下可以采用更高頻率的晶振,51單片機(jī)最小系統(tǒng)晶振的振蕩頻率直接影響單片機(jī)的處理速度,頻率越大處理速度越快。典型的晶振取11
44、.0592MHz(因?yàn)榭梢詼?zhǔn)確地得到9600波特率和19200波特率,用于有串口通訊的合)/12MHz(產(chǎn)生精確的uS級時(shí)歇,方便定時(shí)操作),本設(shè)計(jì)使用的晶振為12MHz。單片機(jī)最小系統(tǒng)起振電容C2、C3一般采用15~33pF,并且電容離晶振越近越好,晶振離單片機(jī)越近越好。設(shè)置為定時(shí)器模式時(shí),加1計(jì)數(shù)器是對內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tc就是定時(shí)時(shí)間t。<
45、/p><p> 在本設(shè)計(jì)中特別注意:對于31腳(EA/Vpp),當(dāng)接高電平時(shí),單片機(jī)在復(fù)位后從內(nèi)部ROM的0000H開始執(zhí)行;當(dāng)接低電平時(shí),復(fù)位后直接從外部ROM的0000H開始執(zhí)行??紤]到本設(shè)計(jì)用到的程序不多,內(nèi)部ROM可以滿足要求。所以在最小系統(tǒng)中P3.1管腳接高電平。</p><p><b> 2.2顯示器設(shè)計(jì)</b></p><p>
46、 顯示器是最常用的輸出設(shè)備,其種類繁多,但在單片機(jī)系統(tǒng)設(shè)計(jì)中最常用的是發(fā)光二極管顯示器(LED)和液晶顯示器(LCD)兩種。由于這兩種顯示器結(jié)構(gòu)簡單,價(jià)格便宜,接口容易實(shí)現(xiàn),因而得到廣泛的應(yīng)用。</p><p> 發(fā)光二極管LED,組成的顯示屏,每個(gè)點(diǎn)都是一個(gè)或多個(gè)發(fā)光二極管,通過控制電路控制二極管的亮與滅來控制點(diǎn)的發(fā)光,從而使整個(gè)大屏幕顯示圖案。 液晶顯示器LCD最常見的就是TFT類型的,它是由光源,液晶光柵
47、,和控制芯片組成,他的光源是常亮的白色強(qiáng)光,當(dāng)光線通過液晶光柵(液晶屏)的時(shí)候,通過電壓改變液晶顆粒濾光方向,從而改變每個(gè)點(diǎn)的顏色和強(qiáng)度來顯示圖案。</p><p> 液晶顯示器分很多種類,按顯示方式可分為段式,行點(diǎn)陣式和全點(diǎn)陣式。段式與數(shù)碼管類似,行點(diǎn)陣式一般是英文字符,全點(diǎn)陣式可顯示任何信息, 如漢字、圖形、圖表等。兩者之間的區(qū)別:</p><p> ?。?)二極管本身時(shí)發(fā)光, 液晶
48、本身也不發(fā)光,只是透射光。 </p><p> ?。?)二極管體積大,圖像質(zhì)量一般,適合作室外大屏幕,價(jià)格較低;而液晶成本較高,面積無法做得很大,但圖像質(zhì)量很好,適合做顯示器。 </p><p> ?。?)二極管耗電大,液晶耗電小。</p><p> (4)二極管圖像刷新率低,液晶的高 </p><p> 二者的檔次相差比較大,一般來講在
49、一些圖像簡單,對成本控制較嚴(yán)格的場合,用二極管,比如商場、銀行等服務(wù)部門的電子提示窗,街道、百貨公司外面的廣告宣傳窗;而液晶一般都是作計(jì)算機(jī)顯示器、電視、手持設(shè)備等對圖像質(zhì)量要求高的場合。</p><p> 2.2.1 LED結(jié)構(gòu)與原理</p><p> LED顯示器又稱為數(shù)碼管,LED顯示器由8個(gè)發(fā)光二極管組成。中7個(gè)長條形的發(fā)光管排列成“日”字形,另一個(gè)賀點(diǎn)形的發(fā)光管在顯示器的右
50、下角作為顯示小數(shù)點(diǎn)用,它能顯示各種數(shù)字及部份英文字母。</p><p> 圖2.3 7段LED數(shù)碼管</p><p> LED顯示器有兩種不同的形式:一種是8個(gè)發(fā)光二極管的陽極都連在一起的,稱之為共陽極LED顯示器;另一種是8個(gè)發(fā)光二極管的陰極都連在一起的,稱之為共陰極LED顯示器。共陽和共陰兩種結(jié)構(gòu),如上圖所示。圖上為共陰結(jié)構(gòu)。即把8個(gè)發(fā)光二極管陰極連在一起。這時(shí)如果需要點(diǎn)亮a到g
51、中的任何一盞燈,只需要在相應(yīng)的端口輸入高電平即可;輸入低電平則截止。比如我們現(xiàn)在要顯示數(shù)字“3”,則只要在對應(yīng)的a、b、c、d、g段送入高電平,在其他端送入低電平即可,點(diǎn)亮為“3”。</p><p> 共陰和共陽結(jié)構(gòu)的LED顯示器各筆劃段名和安排位置是相同的。當(dāng)二極管導(dǎo)通時(shí),相應(yīng)的筆劃段發(fā)亮,由發(fā)亮的筆劃段組合而顯示的各種字符。</p><p> 8個(gè)筆劃段hgfedcba對應(yīng)于一個(gè)字
52、節(jié)(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二進(jìn)制碼就可以表示欲顯示字符的字形代碼。例如,對于共陰LED顯示器,當(dāng)公共陰極接地(為零電平),而陽極hgfedcba各段為0111011時(shí),顯示器顯示"P"字符,即對于共陰極LED顯示器,“P”字符的字形碼是73H。如果是共陽LED顯示器,公共陽極接高電平,顯示“P”字符的字形代碼應(yīng)為10001100(8CH)。</p><p
53、> 表2.3列出了共陽極與共陰極LED顯示器顯示數(shù)字、字母與顯示代碼之間的對應(yīng)關(guān)系</p><p> 表2.3 代碼對應(yīng)表</p><p> 2.2.2 LED顯示器顯示方式</p><p> 點(diǎn)亮LED顯示器有兩種方式:一是靜態(tài)顯示;二是動態(tài)顯示。</p><p> 所謂靜態(tài)顯示,就是每一個(gè)顯示器都要占用單獨(dú)的具有鎖存功能的
54、I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種方法單片機(jī)中CPU的開銷小。</p><p> 這種電路的優(yōu)點(diǎn)在于:在同一時(shí)間可以顯示不同的字符;但缺點(diǎn)就是占用端口資源較多。從下圖可以看出,每位LED顯示器需要單獨(dú)占用8根端口線,因此,在數(shù)據(jù)較多的時(shí)候,往往不采用這種設(shè)計(jì)。</p><p>
55、 圖2.4 動態(tài)顯示圖</p><p> 動態(tài)顯示,就是將要顯示的多位LED顯示器采用一個(gè)8位的段選端口,然后采用動態(tài)掃描一位一位地輪流點(diǎn)亮各位顯示器。下圖為4位LED顯示器動態(tài)顯示電路。</p><p> 圖2.5 靜態(tài)顯示圖</p><p> 在此電路中,單片機(jī)的P1口用于控制4位LED的段選碼:P2口的P2.0~~P2.3用于控制4位LED位選碼。&
56、lt;/p><p> 由于所有的段選碼連在一起,所以同一瞬間只能顯示同一種字符。但如果要顯示不同字符,則要借助位選碼來控制。(如果LED為共陰則P2.0~~P2.3輸出為高電平,如果LED為共陽則P2.0~~P2.3輸出為低電平。)</p><p> 例如,現(xiàn)在要顯示5678四個(gè)數(shù)字,則首先應(yīng)該將“5”的顯示代碼(共陰LED顯示器的顯示代碼為6DH,共陽LED顯示器的顯示代碼為92H)由P
57、1.0送出,然后P2.0~~P2.3輸出相應(yīng)位碼(LED為共陰則P2.0~~P2.3輸出1000,) LED為共陰則P2.0~~P2.3輸出0111)時(shí),則可以看到在數(shù)碼管1上顯示的數(shù)字為“5”。再將顯示的數(shù)字“5”延時(shí)5~10ms,以造成視覺暫留效果;同時(shí)代碼由P1.0送出。</p><p> 用同樣的方法將其余3個(gè)數(shù)字“678”送數(shù)碼管2,3,4顯示,于是最后則可以在4位LED顯示器上看到“5678”四個(gè)數(shù)
58、字。為了使顯示效果更加穩(wěn)定,可以使每個(gè)數(shù)碼管顯示的數(shù)字不斷的重復(fù),但其中重復(fù)頻率達(dá)到了一定的程度的時(shí)候,加之人眼睛本身的視覺暫留效果的作用,便可以看到相當(dāng)穩(wěn)定的“5678”四個(gè)數(shù)字。</p><p> 如下表,即為模擬以上的過程表(以共陰LED設(shè)置顯示代碼,共陽與此相反)。</p><p> 表2.4 模擬過程表</p><p> 2.2.3 LED顯示器接
59、口</p><p> 由LED的結(jié)構(gòu)及工作原理可知,要想在LED上顯示數(shù)據(jù)或者字母,則首先必須要把待顯示的數(shù)據(jù)或者字母轉(zhuǎn)換成LED的7位顯示代碼,方可顯示相應(yīng)的數(shù)字或者字母。通過實(shí)現(xiàn)這種轉(zhuǎn)換有兩種方法:一種是專用硬件譯碼器,另一種是專用軟件譯碼器。本次設(shè)計(jì)采用的LED有12個(gè),至于用哪種顯示方式,在下面的設(shè)計(jì)過程中,我們將根據(jù)具體的功能要求選擇相應(yīng)的譯碼方式。</p><p> 在前面
60、我們已經(jīng)介紹過該設(shè)計(jì)的功能,該籃球計(jì)時(shí)計(jì)分器上所需要顯示的LED有12個(gè),不管用上面所介紹的動態(tài)顯示還是靜態(tài)顯示,這都要給CPU帶來很大的負(fù)擔(dān)。而且可能會出現(xiàn)閃爍現(xiàn)象。為了避免該問題的出現(xiàn),在該設(shè)計(jì)中我們選用硬件鎖存的方法來解決上面的問題。所謂硬件鎖存,就是在需要改變顯示的數(shù)值時(shí),只需要CPU重新給鎖存芯片一次信號,把信號鎖存到芯片即可完成顯示。下面就分?jǐn)?shù)顯示和時(shí)間顯示來分別設(shè)計(jì)。</p><p> 2.2.4
61、 計(jì)時(shí)顯示設(shè)計(jì)</p><p> 時(shí)間顯示部分包括倒計(jì)時(shí)的分鐘顯示、秒鐘顯示、進(jìn)攻時(shí)間顯示6個(gè)LED塊,由于時(shí)間顯示相對分?jǐn)?shù)顯示來言,刷新比較頻繁,所以采用并口顯示,并用鎖存器鎖存,在這里我們選用CD4511。</p><p> CD4511是將鎖存、譯碼、驅(qū)動三種功能集于一身的“三合一”電路。鎖存器的作用是避免在計(jì)數(shù)過程中出現(xiàn)跳數(shù)現(xiàn)象,便于觀察和記錄。譯碼器將BCD碼轉(zhuǎn)換成7段碼,再
62、經(jīng)過大電流反相器,驅(qū)動共陰極LED數(shù)碼管。譯碼器屬于非時(shí)序電路,其輸出狀態(tài)與時(shí)鐘無關(guān),僅取決于輸入的BCD碼。</p><p> 如圖2.6顯示為CD4511引腳分布圖,D~A為BCD碼輸入端。a~g是7段碼輸出端。</p><p> 圖2.6 CD4511引腳分布圖</p><p> CD4511為四——七段BCD碼譯碼器;它可以實(shí)現(xiàn)對BCD碼的譯碼,但不
63、對大于9的二進(jìn)制數(shù)譯碼。其中,A~~D為BCD碼輸入端;a~~g是7段輸出;LT為試燈腳;BI為消隱(滅燈);LT和BI接高電平(電源);LE端為選通腳,接低電平有效,當(dāng)LT=0時(shí)LED數(shù)碼管顯示全亮筆段“8“字,可以檢查數(shù)碼管的質(zhì)量好壞,有無筆段殘缺現(xiàn)象。當(dāng)BI=0時(shí),強(qiáng)迫顯示器消隱;當(dāng)LE=0時(shí)選通,LE=1時(shí)鎖存。考慮到正常工作時(shí)不需檢查LED的全亮筆段,不必強(qiáng)迫LED消隱,因此將LT、BI端接UDD。需要加鎖存功能時(shí)LE端應(yīng)接上
64、拉電阻,常態(tài)下呈高電平,選通信號為負(fù)脈沖。</p><p> 進(jìn)行累計(jì)數(shù)譯碼顯示時(shí)不需要鎖存功能,LE端可固定接USS。LED數(shù)碼管的每段工作電流IF一般為5mA~10mA,7段全亮電流可達(dá)35mA~70mA??紤]到依次顯示0~9數(shù)字時(shí)每次平均只有4.5段發(fā)光。因此正常顯示的平均電流為17mA~32mA。LED的正向壓降UF=1.5V~2V。CD4511選+5V電源時(shí),每段最大輸出電流為40mA~50mA。這表
65、明必須采取限流措施,以免因驅(qū)動電流過大而損壞數(shù)碼管。</p><p> 具體方法是在每個(gè)筆段驅(qū)動端串入幾百歐的限流電阻R,將各段驅(qū)動電流限制在5mA~10mA為宜。改變R值,可以調(diào)節(jié)IF,進(jìn)而控制顯示器亮度。選擇UDD=+5V、+10V、+15V時(shí),CD4511輸出的高電平依次約為+4V、+9V和+14V。舉例說明:假設(shè)設(shè)UDD=+5V,IF=10mA,UOH=4V,UF=3-4V。那么由此可以計(jì)算出R=210
66、Ω??蛇x標(biāo)稱阻值為200Ω的1/8W電阻。UF的準(zhǔn)確值可用數(shù)字多用表的二極管擋測出。使用時(shí),只要將CD4511的輸入端與微機(jī)系統(tǒng)輸出端口的某4個(gè)數(shù)據(jù)位相連,而CD4511的輸出直接與LED的a~~g相連,便可實(shí)現(xiàn)對BCD的顯示。下圖為對1位BCD碼的顯示</p><p> 圖2.7 CD4511對BCD碼的顯示</p><p> 時(shí)間顯示電路如附錄2.</p><
67、p> 在該電路中,有單片機(jī)送給CD4511鎖存器的BCD碼由P1口的低4四位送出,并有P2口的P2.0~P2.5分別對進(jìn)攻時(shí)間的個(gè)位、進(jìn)攻時(shí)間的十位、秒鐘的個(gè)位、秒鐘的十位、分鐘的個(gè)位、分鐘的十位進(jìn)行鎖存。當(dāng)需要對某一位數(shù)碼管進(jìn)行刷新顯示的時(shí)候,先通過P2口的相應(yīng)端口將其LE引腳寫0,再通過P1口將要寫入的BCD碼寫入CD4511鎖存器,并將LE重新寫1,以把P1口的數(shù)據(jù)鎖存到該鎖存器,并通過LED顯示</p>&
68、lt;p> 下表為CD4511的邏輯功能表(表2.5)。</p><p> 表2.5 CD4511邏輯功能表</p><p> 2.2.5 分?jǐn)?shù)顯示設(shè)計(jì)</p><p> 分?jǐn)?shù)顯示部分同樣也是用到了6個(gè)LED,但是相對時(shí)間顯示部分,這部分的LEE顯示刷新速度并不塊,這里我們用串口工作方式來實(shí)現(xiàn)數(shù)據(jù)的傳送顯示。</p><p>
69、 在串口顯示過程中,如果要讓數(shù)據(jù)通過led顯示,我們還應(yīng)該將串輸出的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,然后再送給LED,并把該數(shù)據(jù)鎖存到LED的引腳。由于本次設(shè)計(jì)所用的LED是12個(gè),為了盡量少的使用單片機(jī)的端口,我們使用集成電路CD4094。CD4094是8位移位寄存器,它主要完成串行輸入,并行輸出8位數(shù)據(jù)的功能,所以又叫8位串/并轉(zhuǎn)換器。下圖為CD4094的引腳圖:</p><p> 圖2.8 CD4094引腳分布圖&
70、lt;/p><p> CD4094是8位移位寄存器,它主要完成串行輸入,并行輸出8位數(shù)據(jù)的功能,是典型的串行/并行轉(zhuǎn)換芯片。其中引腳分布圖如圖2-9所示。其中2腳DATA為串行數(shù)據(jù)輸入腳;3腳CLOCK為時(shí)鐘脈沖輸入;4、5、6、7、14、1、3、12、11腳為并行8位數(shù)據(jù)輸出,前7腳與LED顯示器a~~g引腳相連,11腳置空;8腳接地;16腳接電源5V。</p><p> MCS-51系
71、列單片機(jī)片內(nèi)有一個(gè)串行I/O端口,通過引腳 RXD(P3.0)和TXD(P3.1)可與外設(shè)電路進(jìn)行全雙工的 串行異步通信。 </p><p> 8051單片機(jī)的串行端口有4種基本工作方式,通過編程設(shè)置,可以使其工作在任一方式,以滿足不同應(yīng)用場合的需要。其中,方式0主要用于外接移位寄存器,以擴(kuò)展單片機(jī)的I/O電路;方式1多用于雙機(jī)之間或與外設(shè)電路的通信;方式2,3除有方式l的功能外,還可用作多機(jī)通信,以構(gòu)成分布式
72、多微機(jī)系統(tǒng)。串行端口有兩個(gè)控制寄存器(SCON和PCON),用來設(shè)置工作方式、發(fā)送或接收的狀態(tài)、特征位、數(shù)據(jù)傳送的波特率(每秒傳送的位數(shù))以及作為中斷標(biāo)志等。</p><p> 串行端口有一個(gè)數(shù)據(jù)寄存器SBUF(在特殊功能寄存器中的字節(jié)地址為99H),該寄存器為發(fā)送和接收所共同。發(fā)送時(shí),只寫不讀;接收時(shí),只讀不寫。在一定條件下,向SBUF寫入數(shù)據(jù)就啟動了發(fā)送過程;讀SBUF就啟動了接收過程。串行通信的波特率可以
73、程控設(shè)定。在不同工作方式中,由時(shí)鐘振蕩頻率的分頻值或由定時(shí)器T1的溢出率確定,使用十分方便靈活。</p><p> 表2.6為寄存器SCON內(nèi)容定義表,表2.7為寄存器PCON位地址:</p><p> 表2.6 SCON各位內(nèi)容定義</p><p> 位 D7 D6 D5 D4 D3 D2 D1
74、 D0</p><p> 表2.7 PCON位地址</p><p> D7 D0</p><p> 本次設(shè)計(jì)的計(jì)分電路中,我們使用集成電路CD4094。CD4094是8位移位寄存器,它主要完成串行輸入,并行輸出8位數(shù)據(jù)的功能,是典型的串行/并行轉(zhuǎn)換芯片。<
75、;/p><p> 與單片機(jī)的連接如:附錄2——硬件原理圖</p><p><b> 2.3 報(bào)警器</b></p><p> 蜂鳴器有兩類3大品種。一類是壓電式,一類是電磁式,電磁式又有兩大品種,鐵振膜式和動圈式,二者原理一樣只是結(jié)構(gòu)不同。所有蜂鳴器都有兩種類型:純蜂鳴器和帶驅(qū)動的蜂鳴器,蜂鳴器都是用音頻信號驅(qū)動的,都是交流驅(qū)動。</p
76、><p> 報(bào)警器的種類很多,比如:揚(yáng)聲器,蜂鳴器等,本次設(shè)計(jì)采用的是電磁式蜂鳴器作為報(bào)警器。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、震動膜片以及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號通過電磁線圈,使得電磁線圈產(chǎn)生了一個(gè)磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。</p><p> 在該設(shè)計(jì)中所用到的報(bào)警電路是一個(gè)小揚(yáng)聲器。揚(yáng)聲器的工作電流一般在上百毫安,而單片機(jī)的輸
77、出電流只有幾十毫安,如果用單片機(jī)來直接驅(qū)動揚(yáng)聲器報(bào)警,揚(yáng)聲器的的聲音較小。所以在該電路中,我們對單片機(jī)輸出的報(bào)警信號進(jìn)行放大,然后驅(qū)動揚(yáng)聲器產(chǎn)生報(bào)警信號。電路圖如圖2.9。</p><p><b> 圖2.9 報(bào)警電路</b></p><p><b> 2.4鍵盤設(shè)計(jì)</b></p><p> 對整個(gè)設(shè)計(jì)來說,鍵盤是
78、整個(gè)設(shè)計(jì)的一個(gè)重要的部分。該部分的設(shè)計(jì),可以決定對整個(gè)操作的難易程度,及該產(chǎn)品實(shí)用性。所以設(shè)計(jì)一個(gè)較好的鍵盤,對產(chǎn)品的適用性起至關(guān)重要的作用。在單片機(jī)設(shè)計(jì)中,鍵盤通常有兩種:獨(dú)立式鍵盤和矩陣鍵盤。由于在本設(shè)計(jì)中所用到的按鍵并不是很多,我就采用獨(dú)立式鍵盤接入方式來對鍵盤進(jìn)行設(shè)計(jì)。由于采用的是獨(dú)立的按鍵接入方式,所以10個(gè)按鍵就需要十個(gè)端口,分別用P0~P7和P2.6、P2.7這10個(gè)作為鍵盤的輸入端。</p><p&g
79、t; 在前面的單片機(jī)介紹中可知。當(dāng)P0口作為輸入端口時(shí),必須接上拉電阻,而P2口則不需要另接上拉電阻。所以鍵盤電路如圖2.10。當(dāng)按鍵被按下時(shí),按鍵所對應(yīng)的單片機(jī)管腳由搞電平變?yōu)榈碗娖?,通過內(nèi)部程序?qū)@些管腳的掃描,來判斷是哪個(gè)管腳被按下,然后執(zhí)行相應(yīng)的操作。由于P2口的內(nèi)部有上拉電阻,當(dāng)手松開按鍵時(shí),其內(nèi)部電路自動回復(fù)為高電平;而對于P0口,內(nèi)部沒有自動回復(fù)高電平電路,所以要外接上拉電阻,當(dāng)接在P0管腳上的按鍵被松開時(shí),有外部電路的
80、作用,可以將其自動回復(fù)高電平。其中按鍵5~8四個(gè)按鍵來設(shè)定時(shí)間,1~4四個(gè)按鍵用來調(diào)整兩隊(duì)的分?jǐn)?shù),9、10兩個(gè)按鍵分別用來控制計(jì)時(shí)的開始與暫停和進(jìn)攻時(shí)間清零。</p><p> 圖2.10 鍵盤電路</p><p> 在前面的分?jǐn)?shù)顯示部分的刷新速度相對于時(shí)間顯示較慢,所以采用的是串口顯示根據(jù)設(shè)計(jì)的要求:當(dāng)需要對兩隊(duì)分?jǐn)?shù)調(diào)整的時(shí),才對分?jǐn)?shù)顯示器進(jìn)行刷新,所以該顯示采用的是外部中斷方式進(jìn)行
81、顯示。如圖2.10所示,當(dāng)1~4按鍵的任意一個(gè)按鍵被按下時(shí),都會給相應(yīng)的管腳一個(gè)低電平,同時(shí)也給四與門電路芯片74LS21一個(gè)信號,通過四與門電路給單片機(jī)的外部中斷入口一個(gè)中斷信號,來處理外部中斷——分?jǐn)?shù)的顯示。</p><p> 該設(shè)計(jì)的原理圖如附錄2</p><p> 3 軟件編程及調(diào)試</p><p> 軟件的編程設(shè)計(jì)是單片機(jī)系統(tǒng)設(shè)計(jì)的核心部分,也是能
82、否實(shí)現(xiàn)預(yù)定功能的關(guān)鍵。單片機(jī)編程常用的語言是C語言和匯編語言,最終都要轉(zhuǎn)為Intel HEX格式或二進(jìn)制格式(Binary)文件拷入單片機(jī)芯片內(nèi)。這里我們使用的是匯編語言進(jìn)行編程設(shè)計(jì)。</p><p> 3.1匯編語言特點(diǎn)簡介</p><p> 匯編語言的實(shí)質(zhì)和機(jī)器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標(biāo)識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用
83、命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應(yīng)實(shí)際操作過程中的一個(gè)很細(xì)微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復(fù)雜、容易出錯(cuò),而且使用匯編語言編程需要有更多的計(jì)算機(jī)專業(yè)知識,但匯編語言的優(yōu)點(diǎn)也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實(shí)現(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文件不僅比較小,而且執(zhí)行速度很快。</p><p> 高級語言主要
84、是相對于匯編語言而言的。高級語言是目前絕大多數(shù)編程者的選擇,和匯編語言相比,它不但將許多相關(guān)的機(jī)器指令合成為單條指令,并且去掉了與具體操作有關(guān)但與完成工作無關(guān)的細(xì)節(jié),例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時(shí),由于省略了很多細(xì)節(jié),編程者也就不需要有太多的專業(yè)知識。高級語言所編制的程序不能直接被計(jì)算機(jī)識別,必須經(jīng)過轉(zhuǎn)換才能被執(zhí)行。C語言就屬于高級語言。作為最基本的編程語言之一,匯編語言雖然應(yīng)用的范圍不大,但仍然具有重要性,
85、因?yàn)樗軌蛲瓿稍S多其它語言所無法完成的功能。匯編語言的優(yōu)點(diǎn)是速度快,可以直接對硬件進(jìn)行操作,這對諸如圖形處理等關(guān)鍵應(yīng)用是非常重要的。</p><p> 匯編語言直接同計(jì)算機(jī)的底層軟件甚至硬件進(jìn)行交互,它具有如下一些優(yōu)點(diǎn):</p><p> (1)能夠直接訪問與硬件相關(guān)的存儲器或 I/O 端口;</p><p> ?。?)能夠不受編譯器的限制,對生成的二進(jìn)制代碼進(jìn)
86、行完全的控制;</p><p> ?。?)能夠?qū)﹃P(guān)鍵代碼進(jìn)行更準(zhǔn)確的控制,避免因線程共同訪問或者硬件設(shè)備共享引起的死鎖;</p><p> (4)能夠根據(jù)特定的應(yīng)用對代碼做最佳的優(yōu)化,提高運(yùn)行速度; </p><p> (5)能夠最大限度地發(fā)揮硬件的功能。</p><p><b> 3.2軟件設(shè)計(jì)</b></
87、p><p> 軟件設(shè)計(jì)的內(nèi)容主要是根據(jù)前面的硬件原理來編寫程序,在此我也用計(jì)算機(jī)來設(shè)計(jì)仿真。主要軟件有兩個(gè)一個(gè)是Proteus軟件,一個(gè)是KEIL軟件。通過這兩軟件的配合,來模擬仿真實(shí)際的電路設(shè)計(jì)。</p><p> 3.2.1主程序設(shè)計(jì)</p><p> 主程序流程圖如圖3.1示</p><p> 圖3.1 主程序流程圖</p&g
88、t;<p> 這部分的功能是上電后要對整個(gè)系統(tǒng)進(jìn)行初始化,籃球計(jì)時(shí)計(jì)分器的分?jǐn)?shù)顯示部分和時(shí)間顯示部分也要清零,然后進(jìn)入時(shí)間設(shè)定環(huán)境。在這部分里只主程序只對是否有開始鍵按下鍵和時(shí)間設(shè)定鍵的五個(gè)按鍵進(jìn)行掃描。當(dāng)時(shí)間調(diào)整按鍵S5~S8被按下時(shí),對相應(yīng)的位進(jìn)行時(shí)間設(shè)定;當(dāng)開始暫停按鍵被按下時(shí),系統(tǒng)不再掃描時(shí)間調(diào)整按鍵,而是進(jìn)入下一個(gè)狀態(tài)——計(jì)時(shí)開始。</p><p> 在計(jì)時(shí)階段主程序只對開始按鍵和進(jìn)攻
89、復(fù)位按鍵進(jìn)行掃描,如果掃描到這兩個(gè)按鍵的任意一個(gè)按鍵被按下,則主程序開始執(zhí)行相應(yīng)的操作。開始暫停按鍵被按下時(shí),系統(tǒng)把進(jìn)攻時(shí)間初始化,系統(tǒng)進(jìn)入暫停計(jì)時(shí)狀態(tài),并延時(shí)一段時(shí)間,等待再次被按下繼續(xù)計(jì)時(shí);當(dāng)進(jìn)攻復(fù)位鍵被按下時(shí),倒計(jì)時(shí)不停止計(jì)時(shí),而是將進(jìn)攻時(shí)間的值賦予一個(gè)初值。</p><p> 當(dāng)計(jì)時(shí)到時(shí),系統(tǒng)停止計(jì)時(shí),并且產(chǎn)生一個(gè)報(bào)警信號,通過報(bào)警電路讓轟鳴器響一段時(shí)間,同時(shí)等待按下開始按鍵進(jìn)行分?jǐn)?shù)交換和再次進(jìn)行時(shí)間設(shè)
90、定。此時(shí)的分?jǐn)?shù)顯示的值不會因?yàn)闀r(shí)間到而賦初值。</p><p> 3.2.2 外部中斷設(shè)計(jì)</p><p> 在上面的設(shè)計(jì)中我們已經(jīng)對外部中斷做了詳細(xì)的說明,外部中斷是用來處理分?jǐn)?shù)的,當(dāng)調(diào)整分?jǐn)?shù)的按鍵被按下時(shí),電路會給外部中斷一個(gè)信號,來處理分?jǐn)?shù)。下面為外部中斷的程序流程圖。</p><p> 圖3—2外部中斷程序流程圖</p><p>
91、; 乙兩隊(duì)的分?jǐn)?shù)分別存儲在單片機(jī)的數(shù)據(jù)存儲單元RAM區(qū)33H、34H、35H、36H、37、38H。其中甲隊(duì)分?jǐn)?shù)的個(gè)位、十位、百位分別存放在36H、37、38H;而乙隊(duì)分?jǐn)?shù)的個(gè)位、十位、百位分別存放33H、34H、35H。S4和S3分別對甲隊(duì)分?jǐn)?shù)進(jìn)行加1分和減1分;而S2和S1分別對乙隊(duì)分?jǐn)?shù)進(jìn)行加1分和減1分。</p><p> 每當(dāng)對甲乙兩隊(duì)分?jǐn)?shù)進(jìn)行修改后,自動調(diào)用串行顯示程序,通過查表把兩隊(duì)分?jǐn)?shù)鎖存到芯片
92、CD4094中。</p><p><b> 3.2.3定時(shí)</b></p><p> 判斷一個(gè)定時(shí)裝置的計(jì)時(shí)是否夠精確,就是看該裝置的定時(shí)器是否準(zhǔn)確。MCS-51單片機(jī)內(nèi)部帶有兩個(gè)16位定時(shí)計(jì)數(shù)器T0和T1,兩者均可以作為定時(shí)器/計(jì)數(shù)器(一下簡稱T/C)使用。如果T/C工作于定時(shí)狀態(tài),則表示定時(shí)的時(shí)間到;若T/C工作于計(jì)數(shù)狀態(tài),則表示計(jì)數(shù)回零。當(dāng)T/C處于定時(shí)方式
93、時(shí),加1計(jì)數(shù)在每個(gè)機(jī)器周期加1,因此,也可以把它看作在累計(jì)機(jī)器周期。由于一個(gè)機(jī)器周期包含12個(gè)震蕩周期,所以它的計(jì)數(shù)速度是震蕩周期的1/12。</p><p> 定時(shí)器工作方式寄存器TMOD設(shè)定:</p><p> TMOD是一個(gè)8位的寄存器,其中高四位控制T1,低4位控制T0。其中T0的低兩位控制著定時(shí)計(jì)數(shù)器的工作方式,第三位為定時(shí)/計(jì)數(shù)的選擇位,“0”為定時(shí),“1”為計(jì)數(shù)。第四位G
94、ATE為門控制位,用于控制定時(shí)器的啟動是否受外部中斷的影響。GATE=0與外部中斷無關(guān),有TCON寄存器中的TRx位控制啟動。在該設(shè)計(jì)中只用到定時(shí)器T0定時(shí)器的工作方式0,所以只需要對TMOD寫入#00H即可。</p><p> 在該設(shè)計(jì)中用的晶振是12MHz,機(jī)器周期計(jì)算公式得到Tp</p><p> Tp=12/12MHz=0.000001s</p><p>
95、; 該工作方式的最大計(jì)數(shù)時(shí)間為:</p><p> Tp*212=0.008192s</p><p> 為了便于計(jì)算,在該設(shè)計(jì)中我把定時(shí)時(shí)間設(shè)為0.005秒,通過計(jì)算得知,應(yīng)該給TH0、TL0的值分別為#63H、18H。這樣,如果要計(jì)時(shí)1秒,只需要讓定時(shí)器進(jìn)行200次定時(shí),把R0賦值為200,當(dāng)定時(shí)到,就對R0減1,當(dāng)R0為0時(shí),這個(gè)時(shí)間就是所要計(jì)時(shí)1秒的時(shí)間。此時(shí)對時(shí)間進(jìn)行調(diào)整并顯
96、示</p><p> 由于我們希望在比賽過程中能及時(shí)暫停和繼續(xù)計(jì)時(shí),在定時(shí)器中我們還可以通過控制TRx來實(shí)現(xiàn)該功能,需要繼續(xù)計(jì)時(shí)給該位進(jìn)行置位,需要暫停給該位清零。</p><p> 下面為定時(shí)中斷的程序流程圖:</p><p> 圖3.3 定時(shí)中斷程序流程圖</p><p><b> 程序參考附錄1</b>&l
97、t;/p><p><b> 參考文獻(xiàn)</b></p><p> 1.彭為 等。 單片機(jī)典型系統(tǒng)設(shè)計(jì)實(shí)例精解。電子工業(yè)出版社。2006.5</p><p> 2.何立民。 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)。北京航空航天大學(xué)出版社,1990</p><p> 3.周德明 。微型計(jì)算機(jī)原理及應(yīng)用。清華大學(xué)出版社,2002</p&
98、gt;<p> 4.郭維?,F(xiàn)代通信系統(tǒng)集成電路使用手冊。電子工業(yè)出版社。1995</p><p> 5.何立民。 單片機(jī)高級教程。北京航空航天大學(xué)出版社,2000</p><p> 6.石東海。 單片機(jī)數(shù)據(jù)通信技術(shù)從入門到精簡。西安電子科技大學(xué)出版社,2002</p><p> 7.陳善久。單片微型計(jì)算機(jī)原理與應(yīng)用。西安電子科技大學(xué)出版社,19
99、98.9</p><p> 8.楊學(xué)昭。單片機(jī)原理、接口技術(shù)與應(yīng)用。西安電子科技大學(xué)出版社,2009.2</p><p> 9.沙占友。單片機(jī)外圍電路設(shè)計(jì)。電子工業(yè)出版社,2007.6</p><p> 10.康華光。電子技術(shù)基礎(chǔ)(數(shù)字部分)。高等教育出版社。2006.1</p><p> 11.丁元杰。單片機(jī)微機(jī)原理及應(yīng)用。機(jī)械工業(yè)
100、出版社,1994.6</p><p> 12.張友德。飛利浦80C51單片機(jī)原理與應(yīng)用技術(shù)手冊。北京航空航天大學(xué)出版社,1995</p><p> 13.徐愛鈞,keil Cx51 v7.0單片機(jī)高級語言與vision2應(yīng)用。電子工業(yè)出版社,2004.6</p><p> 14.C51 Compiler user's Guide keil,Elektr
101、onik Gmbh,and keil softwarer,inc.2001</p><p> 15.Macro Assembler and utilities, keil,Elektronik.Gmbh.and keil software inc.2001</p><p><b> 附錄1 程序</b></p><p> ORG
102、0000H </p><p> AJMP SD ;主程序地址</p><p> ORG 0003H ;外部中斷入口地址</p><p> AJMP CXT</p><p> ORG 000BH
103、;定時(shí)中斷入口地址</p><p> AJMP CTCO</p><p> ORG 0100H</p><p> SD: MOV 33H,#00H ;甲隊(duì)計(jì)分清0</p><p> MOV 34H,#00H</p><p> MOV
104、35H,#00H</p><p> MOV 36H,#00H ;乙隊(duì)計(jì)分清0</p><p> MOV 37H,#00H</p><p> MOV 38H,#00H</p><p> MOV 40H,#00H ;計(jì)時(shí)分鐘清0</p><p&
105、gt; MOV 41H,#00H</p><p> MOV 42H,#00H</p><p> MOV 43H,#00H</p><p> MOV 44H,#00H</p><p> MOV 45H,#00H</p><p> MOV 46H,#00H<
106、/p><p> MOV 47H,#00H</p><p> CLR P3.5</p><p> MP: CLR P2.0 ;計(jì)時(shí)牌子分分秒秒0</p><p> CLR P2.1</p><p> CLR P2.2<
107、/p><p> CLR P2.3</p><p> CLR P2.4</p><p> CLR P2.5</p><p><b> NOP</b></p><p> MOV P1,#00H</p><p><b>
108、NOP</b></p><p><b> NOP</b></p><p> SETB P2.0</p><p> SETB P2.1</p><p> SETB P2.2</p><p> SETB P2.3</p><p&
109、gt; SETB P2.4</p><p> SETB P2.5</p><p> MOV R1,#01H</p><p> MOV R2,#01H </p><p> MOV R3,#01H </p><p> MOV R4,#01H </p>
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)—籃球計(jì)時(shí)計(jì)分器
- 單片機(jī)課程設(shè)計(jì)——籃球計(jì)時(shí)計(jì)分器
- 單片機(jī)課程設(shè)計(jì)—籃球計(jì)時(shí)計(jì)分器
- 單片機(jī)籃球計(jì)時(shí)計(jì)分器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——籃球計(jì)時(shí)計(jì)分器 - 副本
- 單片機(jī)課程設(shè)計(jì)報(bào)告-籃球計(jì)時(shí)計(jì)分器
- 單片機(jī)技術(shù)課程設(shè)計(jì)報(bào)告(籃球計(jì)時(shí)計(jì)分器)
- -基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)
- 單片機(jī)c51籃球計(jì)時(shí)計(jì)分器課程設(shè)計(jì)
- 基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)設(shè)計(jì)
- 課程設(shè)計(jì)--- 基于單片機(jī)的籃球賽計(jì)時(shí)計(jì)分器的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---籃球比賽計(jì)分計(jì)時(shí)器
- 綜合課程設(shè)計(jì)--籃球計(jì)時(shí)計(jì)分器
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)籃球計(jì)分器
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)
- 課程設(shè)計(jì)-- 籃球賽計(jì)時(shí)計(jì)分器
- 基于單片機(jī)籃球賽計(jì)時(shí)計(jì)分器設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的籃球計(jì)時(shí)計(jì)分器畢業(yè)論文
- 籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)
- 基于單片機(jī)的籃球比賽計(jì)時(shí)計(jì)分系統(tǒng)設(shè)計(jì).pdf
評論
0/150
提交評論