版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、畢業(yè)論文用單片機(jī)控制數(shù)碼管顯示數(shù)字的設(shè)計(jì)與研究學(xué)生姓名: 專 業(yè): 年 級(jí): 學(xué) 號(hào): 指導(dǎo)教師: 目錄 TOC o 1-3 h z u HYPERLINK l _Toc278643692 摘 要 PAGEREF _Toc278643692 h 2 HYPERLINK l _Toc278643693 設(shè)計(jì)背景與方案3 HYPERLINK l _Toc278643693 第一章 單片機(jī)介紹 PAGEREF _Toc278643693 h 5 HYPERLINK l _Toc278643694 1.1 單片機(jī)根底知識(shí)學(xué)習(xí) PAGEREF _Toc278643694 h 5 HYPERLINK l
2、_Toc278643696 1.2 AT89S51單片機(jī)的主要性能參數(shù)7 HYPERLINK l _Toc278643697 1.3 AT89S51芯片內(nèi)部結(jié)構(gòu)簡介 PAGEREF _Toc278643697 h 7 HYPERLINK l _Toc278643698 1.4 主要引腳功能 PAGEREF _Toc278643698 h 8 HYPERLINK l _Toc278643699 第二章 數(shù)碼管的介紹 PAGEREF _Toc278643699 h 12 HYPERLINK l _Toc278643699 2.1 數(shù)碼管分類、結(jié)構(gòu)及工作原理 PAGEREF _Toc27864369
3、9 h 12 HYPERLINK l _Toc278643700 2.2 數(shù)碼管的引腳13 HYPERLINK l _Toc278643700 2.3 驅(qū)動(dòng)方式14 HYPERLINK l _Toc278643693 第三章 Keil軟件簡介16 HYPERLINK l _Toc278643694 3.1 系統(tǒng)概述16 HYPERLINK l _Toc278643696 3.2 整體結(jié)構(gòu)簡介16 HYPERLINK l _Toc278643697 3.3 建立工程步驟17 HYPERLINK l _Toc278643701 第四章 程序設(shè)計(jì)及仿真22 HYPERLINK l _Toc27864
4、3702 4.1 設(shè)計(jì)要求 PAGEREF _Toc278643702 h 22 HYPERLINK l _Toc278643703 4.2 利用proyeus仿真軟件畫出電路圖 PAGEREF _Toc278643703 h 224.3 流程圖繪制以及說明23 HYPERLINK l _Toc278643704 4.4 用kiel設(shè)計(jì)程序及仿真結(jié)果 PAGEREF _Toc278643704 h 23 HYPERLINK l _Toc278643697 4.5 心得體會(huì)29 HYPERLINK l _Toc278643705 HYPERLINK l _Toc278643705 HYPERLI
5、NK l _Toc278643706 附錄a30 HYPERLINK l _Toc278643706 附錄b31 HYPERLINK l _Toc278643707 致謝34 HYPERLINK l _Toc278643707 參考文獻(xiàn)35摘 要單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是頗具生命力的機(jī)種。單片機(jī)微型計(jì)算機(jī)簡稱單片機(jī),特別適用于控制領(lǐng)域,故又稱為微控制器。通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的根本功能部件:中央處理器、存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。AT89S51是美國ATMEL公司生產(chǎn)的
6、低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4k bytes的可系統(tǒng)編程的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序存儲(chǔ)器 既可在線編程ISP也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強(qiáng)大,低價(jià)位AT89S51單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。關(guān)鍵詞: 單片機(jī) AT89s51 數(shù)碼管 proteus keil3設(shè)計(jì)背景與方案一、設(shè)計(jì)背景1.單片機(jī)開展前景目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。 HYPERLINK
7、:/baike.baidu /view/35448.htm t _blank 導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能 HYPERLINK :/baike.baidu /view/4189.htm t _blank IC卡,民用豪華轎車的平安保障系統(tǒng), HYPERLINK :/baike.baidu /view/111680.htm t _blank 錄像機(jī)、 HYPERLINK :/baike.baidu /view/45678.htm t _blank 攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這
8、些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。2.共陽極數(shù)碼管的顯示方法LED數(shù)碼管是單片機(jī)控制系統(tǒng)中最常見的顯示器件之一,一般用來顯示處理結(jié)果或輸入輸出信號(hào)的狀態(tài)。數(shù)碼管顯示是一個(gè)系統(tǒng)工程中必不可少的人機(jī)交互環(huán)節(jié),因此關(guān)于數(shù)碼管的驅(qū)動(dòng)也就是系統(tǒng)工程中的一個(gè)重要的環(huán)節(jié)。數(shù)碼管的驅(qū)動(dòng)分為動(dòng)態(tài)驅(qū)動(dòng)和靜態(tài)驅(qū)動(dòng)兩種。所謂靜態(tài)驅(qū)動(dòng),就是指無論多少位LED數(shù)碼管,同時(shí)處于顯示狀態(tài)。動(dòng)態(tài)顯示驅(qū)動(dòng)是指無論在任何時(shí)刻只有一個(gè)LED數(shù)碼管處于顯示狀態(tài),及單片機(jī)采用“掃描方式控制各個(gè)數(shù)碼管輪流顯示。3.共陽極數(shù)碼
9、管的驅(qū)動(dòng)設(shè)計(jì)將數(shù)碼管每個(gè)LED燈對(duì)應(yīng)單片機(jī)的一個(gè)I/O口。通過單片機(jī)的P口來控制LED燈的亮和滅。I/O口之間互相獨(dú)立,需要用I/O口直接控制LED。動(dòng)態(tài)顯示將數(shù)碼管的每個(gè)引腳一對(duì)一連接在一起接單片機(jī)的數(shù)據(jù),而將各個(gè)數(shù)碼管的公共端單獨(dú)送至單片機(jī)的I/O口進(jìn)行片選。此外,在此根底上,用單片機(jī)與三極管來驅(qū)動(dòng)數(shù)碼管,從而實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)顯示。二、設(shè)計(jì)方案1.靜態(tài)顯示靜態(tài)顯示,就是每一個(gè)數(shù)碼管顯示器都要占用單獨(dú)的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種方法單片機(jī)中CPU的開銷小。能供
10、應(yīng)單獨(dú)鎖存的I/O接口電路很多,各數(shù)碼管的公共極固定接有效電平,各數(shù)碼管的字形控制端分別由各自的控制信號(hào)控制。LED顯示亮度溫度,容易調(diào)節(jié),編程容易,工作是占用CPU時(shí)間短。但假設(shè)直接用單片機(jī)輸出各位數(shù)碼管的字形信號(hào)時(shí),占用單片機(jī)的I/O口線較多。一般僅適用于顯示位數(shù)較少的應(yīng)用場合。2.動(dòng)態(tài)顯示端口控制數(shù)碼管的個(gè)位的供電,當(dāng)相應(yīng)的端口變成低電平時(shí),驅(qū)動(dòng)相應(yīng)的三極管會(huì)導(dǎo)通,+5V通過驅(qū)動(dòng)三極管給數(shù)碼管相應(yīng)的位供電,這是只要P3口送出數(shù)字的顯示代碼,數(shù)碼管就能正常的顯示數(shù)字。3.動(dòng)態(tài)顯示與靜態(tài)顯示比照本設(shè)計(jì)要求循環(huán)顯示,要求顯示不同數(shù)字,所以要求用動(dòng)態(tài)掃描的方式實(shí)現(xiàn),即采用動(dòng)態(tài)的顯示方式,就是顯示
11、1毫秒,不斷循環(huán),這樣只要掃描時(shí)間小于1/50秒,就會(huì)因?yàn)槿搜鄣囊曈X殘留效應(yīng),看到不同數(shù)字的穩(wěn)定顯示。數(shù)碼管的字形控制端對(duì)應(yīng)的并在一起,由一組I/O端口進(jìn)行控制,公共極相互獨(dú)立,分別由不同的I/O控制信號(hào)控制。為了到達(dá)我們的設(shè)計(jì)要求,實(shí)現(xiàn)用單片機(jī)控制數(shù)碼管顯示數(shù)字的設(shè)計(jì),下面我們將從根底知識(shí)開始研究。第一章 單片機(jī)介紹單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)
12、算機(jī)系統(tǒng)。單片機(jī)也被稱為 HYPERLINK :/baike.baidu /view/368297.htm t _blank 微控制器Microcontroller Unit,常用英文字母的縮寫MCU表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專用 HYPERLINK :/baike.baidu /view/50152.htm t _blank 處理器開展而來。最早的設(shè)計(jì)理念是通過將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和專用處理器的開展
13、便分道揚(yáng)鑣。單片機(jī)根底知識(shí)學(xué)習(xí)早期的單片機(jī)都是8位或4位的。其中最成功的是INTEL的8031,因?yàn)楹唵慰煽慷阅懿诲e(cuò)獲得了很大的好評(píng)。此后在8031上開展出了MCS51系列單片機(jī)系統(tǒng)?;谶@一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領(lǐng)域要求的提高,開始出現(xiàn)了16位單片機(jī),但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用。90年代后隨著消費(fèi)電子產(chǎn)品大開展,單片機(jī)技術(shù)得到了巨大提高。隨著INTEL i960系列特別是后來的ARM系列的廣泛應(yīng)用,32位單片機(jī)迅速取代16位單片機(jī)的高端地位,并且進(jìn)入主流市場。而傳統(tǒng)的8位單片機(jī)的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。目前,高端的32
14、位單片機(jī)主頻已經(jīng)超過300MHz,性能直追90年代中期的專用處理器,而普通的型號(hào)出廠價(jià)格跌落至1美元,最高端的型號(hào)也只有10美元。當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在全系列的單片機(jī)上。而在作為掌上電腦和 核心處理的高端單片機(jī)甚至可以直接使用專用的Windows和Linux操作系統(tǒng)。單片機(jī)比專用處理器更適合應(yīng)用于 HYPERLINK :/baike.baidu /view/6115.htm t _blank 嵌入式系統(tǒng),因此它得到了最多的應(yīng)用。事實(shí)上單片機(jī)是世界上數(shù)量最多的 HYPERLINK :/baike.baidu /view/3314.ht
15、m t _blank 計(jì)算機(jī)?,F(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī)。 、 、 HYPERLINK :/baike.baidu /view/42510.htm t _blank 計(jì)算器、家用電器、電子玩具、 HYPERLINK :/baike.baidu /view/30816.htm t _blank 掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部單片機(jī)。而個(gè)人電腦中也會(huì)有為數(shù)不少的單片機(jī)在工作。汽車上一般配備40多部單片機(jī),復(fù)雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百臺(tái)單片機(jī)在同時(shí)工作!單片機(jī)的數(shù)量不僅遠(yuǎn)超過PC機(jī)和其他計(jì)算的總和,甚至比人類的數(shù)量還要多。 單片機(jī)又稱單片微控制器,
16、它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格廉價(jià)、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最正確選擇。 單片機(jī)內(nèi)部也用和電腦功能類似的模塊,比方CPU,內(nèi)存,并行總線,還有和硬盤作用相同的htm t _blank 存儲(chǔ)器件,不同的是它的這些部件性能都相對(duì)我們的家用電腦弱很多,不過價(jià)錢也是低的,一般不超過10元即可用它來做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動(dòng)滾筒洗衣機(jī)、排煙罩、VCD等等的
17、家電里面都可以看到它的身影!它主要是作為控制局部的核心部件。 它是一種在線式實(shí)時(shí)控制計(jì)算機(jī),在線式就是現(xiàn)場控制,需要的是有較強(qiáng)的抗干擾能力,較低的本錢,這也是和離線式計(jì)算機(jī)的比方家用PC的主要區(qū)別。圖1-1 單片機(jī)芯片目前,很多人對(duì) HYPERLINK :/baike.baidu /view/49.htm t _blank 匯編語言并不認(rèn)可??梢哉f,掌握用C語言單片機(jī)編程很重要,可以大大提高開發(fā)的效率。不過初學(xué)者可以不了解單片機(jī)的匯編語言,但一定要了解單片機(jī)具體性能和特點(diǎn),不然在單片機(jī)領(lǐng)域是比擬致命的。如果不考慮單片機(jī)硬件資源,在KEIL中用C胡亂編程,結(jié)果只能是出了問題無法解決!可以肯定的說
18、,最好的C語言單片機(jī)工程師都是從匯編走出來的編程者因?yàn)閱纹瑱C(jī)的C語言雖然是高級(jí)語言,但是它不同于臺(tái)式機(jī)個(gè)人電腦上的VC+什么的單片機(jī)的硬件資源不是非常強(qiáng)大,不同于我們用VC、VB等高級(jí)語言在臺(tái)式PC上寫程序畢竟臺(tái)式電腦的硬件非常強(qiáng)大,所以才可以不考慮硬件資源的問題。還有就是在單片機(jī)編程中 HYPERLINK :/baike.baidu /view/1219.htm t _blank C語言雖然編程方便,便于人們閱讀,但是在執(zhí)行效率上是要比匯編語言低10%到20%,所以用什么語言編寫程序是要看具體用在什么場合下??偟膩碚f做單片機(jī)編程要靈活使用匯編語言與C語言,讓單片機(jī)的強(qiáng)大功能以最高是效率展示給
19、用戶。1.2 AT89S51單片機(jī)的主要性能參數(shù)AT89S51 是美國 ATMEL 公司生產(chǎn)的低功耗,高性能 CMOS8 位單片機(jī),片內(nèi)含 4k bytes 的可系統(tǒng)編程的 Flash 只讀程序存儲(chǔ)器,器件采用 ATMEL 公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn) 8051 指令系統(tǒng)及引腳。它集 Flash 程序存儲(chǔ)器既可在線編程ISP也可用傳統(tǒng)方法進(jìn)行編程及通用 8 位微處理器于單片芯片中,ATMEL 公司的功能強(qiáng)大,低價(jià)位 AT89S51單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。主要性能參數(shù)與單片機(jī)產(chǎn)品兼容4k 字節(jié) Flash 閃速存儲(chǔ)器、128 字節(jié)內(nèi)部 R
20、AM、1000次擦寫周期、全靜態(tài)操作:0Hz33Hz、三級(jí)加密程序存儲(chǔ)器、32個(gè)可編程I/O口線 、兩個(gè)數(shù)據(jù)指針、兩個(gè) 16 位定時(shí)/計(jì)數(shù)器、六個(gè)中斷源 、全雙工UART串行通道低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時(shí)器WDT、雙數(shù)據(jù)指針、掉電標(biāo)識(shí)符、一個(gè) 5 向量兩級(jí)中斷結(jié)構(gòu)、片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89S51 可降至 0Hz 的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止 CPU 的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存 RAM 中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。1.3 AT89S51
21、芯片內(nèi)部結(jié)構(gòu)簡介AT89S51單片機(jī)的片內(nèi)硬件組成結(jié)構(gòu)如附錄A中圖1所示。把作為控制應(yīng)用所必需的根本功能部件都集成在一個(gè)尺寸有限的集成電路芯片上。下面介紹附錄A中圖1里片內(nèi)各功能部件。一、中央處理器:中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。二、數(shù)據(jù)存儲(chǔ)器(內(nèi)部RAM):數(shù)據(jù)存儲(chǔ)器用于存放變化的數(shù)據(jù)。AT89S51中數(shù)據(jù)存儲(chǔ)器的地址空間為256個(gè)RAM單元,但其中能作為數(shù)據(jù)存儲(chǔ)器供用戶使用的僅有前面128個(gè),后128個(gè)被專用存放器占用。三、程序存儲(chǔ)器(內(nèi)部R
22、OM):程序存儲(chǔ)器用于存放程序和固定不變的常數(shù)等。通常采用只讀存儲(chǔ)器,且其又多種類型,在89系列單片機(jī)中全部采用閃存。AT89S51內(nèi)部配置了4KB閃存。四、定時(shí)/計(jì)數(shù)器(ROM): 定時(shí)/計(jì)數(shù)器用于實(shí)現(xiàn)定時(shí)和計(jì)數(shù)功能。AT89S51共有2個(gè)16位定時(shí)/計(jì)數(shù)器。五、并行輸入輸出(I/O)口: 8051共有4組8位I/O口(P0、 P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。每個(gè)口都由1個(gè)鎖存器和一個(gè)驅(qū)動(dòng)器組成。它們主要用于實(shí)現(xiàn)與外部設(shè)備中數(shù)據(jù)的并行輸入與輸出,有些I/O口還有其他功能。六、全雙工串行口:AT89S51內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步
23、通信收發(fā)器,也可以當(dāng)同步移位器使用。七、時(shí)鐘電路:時(shí)鐘電路的作用是產(chǎn)生單片機(jī)工作所需要的時(shí)鐘脈沖序列。八、中斷系統(tǒng):中斷系統(tǒng)的作用主要是對(duì)外部或內(nèi)部的終端請求進(jìn)行管理與處理。AT89S51共有5個(gè)中斷源,其中又2個(gè)外部中斷源和3個(gè)內(nèi)部中斷源。1.4 主要引腳功能AT89S51 引腳圖如圖1-2所示:1VCC:電源電壓2GND:地線3P0口:P0口是一組8位漏極開路型雙向I/0口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口寫“l(fā)可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址低8位和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。4P
24、1口:Pl 是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,Pl的輸出緩沖級(jí)可驅(qū)動(dòng)吸收或輸出電流4個(gè)TTL邏輯門電路。對(duì)端口寫“l(fā),通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流IIL。Flash編程和程序校驗(yàn)期間,Pl接收低8位地址。表1 具有第二功能的P1口引腳端口引腳第二功能MOSI用于ISP編程MOSI用于ISP編程MOSI用于ISP編程圖1-2 AT89S51引腳圖5P2 口:P2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)吸收或輸出電流4 個(gè)TTL邏輯門電路。對(duì)端口寫“1,通過內(nèi)部
25、的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流IIL。在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器例如執(zhí)行MOVXDPTR指令時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲(chǔ)器如執(zhí)行MOVXRi 指令時(shí),P2 口線上的內(nèi)容也即特殊功能存放器SFR區(qū)中P2存放器的內(nèi)容,在整個(gè)訪問期間不改變。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和其它控制信號(hào)。6P3 口:P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/0 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)吸收或輸出電流4 個(gè)TTL邏輯門電路。對(duì)P3口寫入“l(fā)時(shí),它們被內(nèi)部上拉
26、電阻拉高并可作為輸入端口。作輸入端時(shí),被外部拉低的P3口將用上拉電阻輸出電流IIL。P3口除了作為一般的I/0口線外,更重要的用途是它的第二功能,如下表所示:表2 具有第二功能的P3口引腳端口引腳第二功能RXD串行輸入口TXD串行輸出口/INT0外中斷0P/ INT1外中斷1T0定時(shí)/計(jì)數(shù)器0外部輸入T1定時(shí)/計(jì)數(shù)器1外部輸入/ WR外部數(shù)據(jù)存儲(chǔ)器寫選通/ RD外部數(shù)據(jù)存儲(chǔ)器讀選通P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。7RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。WDT 溢出將使該引腳輸出高電平,設(shè)置SFR AUXR的DIS
27、RT0 位地址8EH可翻開或關(guān)閉該功能。DISRT0位缺省為RESET輸出高電平翻開狀態(tài)。8ALE/:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE地址鎖存允許輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲(chǔ)器,ALE 仍以時(shí)鐘振蕩頻率的1/6 輸出固定的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。對(duì)F1ash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖PROG。如有必要,可通過對(duì)特殊功能存放器SFR區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條M0VX和M0VC指令A(yù)LE才會(huì)被激活。此外,該引腳會(huì)被微弱拉高
28、,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效。9程序儲(chǔ)存允許輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S51 由外部程序存儲(chǔ)器取指令或數(shù)據(jù)時(shí),每個(gè)機(jī)器周期兩次有效,即輸出兩個(gè)脈沖。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,沒有兩次有效的信號(hào)。10/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器地址為0000HFFFFH,EA端必須保持低電平接地。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平接VCC端,CPU那么執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。F1ash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程電壓Vpp。11XTAL1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。第二章 數(shù)碼管的介紹
29、2.1 數(shù)碼管分類、結(jié)構(gòu)及工作原理一、數(shù)碼管分類數(shù)碼管也稱 HYPERLINK :/baike.baidu /view/3080038.htm t _blank LED數(shù)碼管,數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其根本單元是發(fā)光二極管.數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元多一個(gè)小數(shù)點(diǎn)顯示;按能顯示多少個(gè)“8可分為1位、2位、3位、4位、5位、6位、7位等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管
30、的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陽極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極PWR接到電源輸入PWR上, 當(dāng)某一字段發(fā)光二極管的陰極極為低電平時(shí), 相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。二、數(shù)碼管結(jié)構(gòu)038.htm t _blank LED數(shù)碼管LED Segment Displays是由多個(gè)發(fā)光二極管封裝在一起組成“8”字型的 HYPERLINK :/baike.baidu /view/481400.htm t _blank 器件,引線已在內(nèi)部連接完成,只需引出它們
31、的各個(gè)筆劃,公共電極。LED數(shù)碼管常用段數(shù)一般為7段有的另加一個(gè)小數(shù)點(diǎn),還有一種是類似于3位“+1”型。位數(shù)有半位、1、2、3、4、5、6、8、10位等等,LED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對(duì)編程是很重要的,因?yàn)椴煌愋偷臄?shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。共陰和共陽極數(shù)碼管的內(nèi)部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。顏色有紅,綠,藍(lán),黃等幾種。LED數(shù)碼管廣泛用于儀表,時(shí)鐘,車站,家電等場合。選用時(shí)要注意產(chǎn)品尺寸顏色,功耗,亮度,波長等。三、數(shù)碼管工作原理數(shù)碼管的每一段是由發(fā)光二極管組成,所以在使用時(shí)跟發(fā)光二極管
32、一樣,也要連接限流電阻,否那么電流過大會(huì)燒毀發(fā)光二極管的。共陽極數(shù)碼管中8個(gè)發(fā)光二極管的陽極二極管正端連接一起,即為共陽極接法,簡稱共陽數(shù)碼管。通常,公共陽極接高電平一般接電源,其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸入端為低電平時(shí),該端所連接的字段導(dǎo)通并點(diǎn)亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。共陰極數(shù)碼管中8個(gè)發(fā)光二極管的陰極二極管負(fù)端連接在一起,即為共陰極接法,簡稱共陰數(shù)碼管。通常,共陰極接低電平一般接地,其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為高電平時(shí),該端所連
33、接的字符導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。同樣,要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。數(shù)碼管的引腳數(shù)碼管一般有七段或者八段(小數(shù)點(diǎn)DP段有就是八段,否那么就是ABCDEFG七段)。圖2-1 共陽極數(shù)碼管引腳圖數(shù)碼管分共陰極和共陽極兩種共陽極就是把所有LED的陽極連接到共同接點(diǎn)COM,而每個(gè)LED的陰極分別為A、B、C、D、E、F、G及DP小數(shù)點(diǎn);共陰極那么是把所有LED的陰極連接到共同接點(diǎn)COM,而每個(gè)LED的陽極分別為A、B、C、D、E、F、G及DP小數(shù)點(diǎn),引腳有a、c、d、e、f、g、h和公共端,如下列圖(h引腳
34、也叫做DP引腳,接的就是小數(shù)點(diǎn)) 圖2-2 共陰極數(shù)碼管引腳圖對(duì)于單個(gè)數(shù)碼管來說,從它的正面看進(jìn)去,左下角那個(gè)腳為1腳,以逆時(shí)針方向依次為110腳,左上角那個(gè)腳便是10腳了,上面兩個(gè)圖中的數(shù)字分別與這10個(gè)管腳一一對(duì)應(yīng)。注意,3腳和8腳是連通的,這兩個(gè)都是公共腳。2.3 驅(qū)動(dòng)方式數(shù)碼管要正常顯示,就要用 HYPERLINK :/baike.baidu /view/1614863.htm t _blank 驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的 HYPERLINK :/baike.baidu /view/37407.htm t _blank 數(shù)字,因此根據(jù)數(shù)碼管的 HYPERLINK
35、 :/baike.baidu /view/131317.htm t _blank 驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。一、靜態(tài)顯示驅(qū)動(dòng) HYPERLINK :/baike.baidu /view/612026.htm t _blank 靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè) HYPERLINK :/baike.baidu /view/1012.htm t _blank 單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示那么需要58=40根I/O端口來驅(qū)
36、動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè)呢,實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。二、動(dòng)態(tài)顯示驅(qū)動(dòng)數(shù)碼管動(dòng)態(tài)顯示接口是 HYPERLINK :/baike.baidu /view/1012.htm t _blank 單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃“a、b、c、d、e、f、g、dp的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是哪個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只
37、要將需要顯示的數(shù)碼管的選通控制翻開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為12ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的 HYPERLINK :/baike.baidu /view/1196747.htm t _blank 余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且 HYPERLINK :/baike.baidu /view/7200
38、38.htm t _blank 功耗更低。第三章 Keil軟件簡介單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷開展,從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷開展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)
39、功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境uVision將這些部份組合在一起。運(yùn)行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的愛好者來說是十分必要的,如果你使用C語言編程,那么Keil幾乎就是你的不二之選目前在國內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。系統(tǒng)概述Keil C51是美國Keil Software公司出品的
40、51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會(huì)更加深刻。Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能表達(dá)高級(jí)語言的優(yōu)勢。3.2 整體結(jié)構(gòu)簡介C51工具包的整體結(jié)構(gòu),如圖3-1所示,其中uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE
41、),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)立生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。圖3-1 C51工具包的整體結(jié)構(gòu)圖3.3 建立工程步驟1點(diǎn)擊Project菜單,選擇彈出的下拉式菜單中的New Project,如圖3-2。
42、圖3-2接著彈出一個(gè)標(biāo)準(zhǔn)Windows文件對(duì)話窗口,在“文件名中輸入您的第一個(gè)C程序工程名稱,“保存后的文件擴(kuò)展名為uv2,這是KEIL uVision2工程文件擴(kuò)展名,以后我們可以直接點(diǎn)擊此文件以翻開先前做的工程。2選擇所要的單片機(jī)。3首先我們要在工程中創(chuàng)立新的程序文件或參加舊程序文件。如果你沒有現(xiàn)成的程序,那么就要新建一個(gè)程序文件。4點(diǎn)擊保存新建的程序,也可以用菜單FileSave或快捷鍵Ctrl+S進(jìn)行保存。我們把第一個(gè)程序命名為,保存在工程所在的目錄中,這時(shí)你會(huì)發(fā)現(xiàn)程序單詞有了不同的顏色,說明KEIL的C語法檢查生效了。如圖3-3,鼠標(biāo)在屏幕左邊的Source Group1文件夾圖標(biāo)上
43、右擊彈出菜單,在這里可以做在工程中增加減少文件等操作。 圖3-35C程序文件已被我們加到了工程中了,下面就剩下編譯運(yùn)行了。如圖3-4,圖中1、2、3都是編譯按鈕,不同是1是用于編譯單個(gè)文件。2是編譯當(dāng)前工程,如果先前編譯過一次之后文件沒有做動(dòng)編輯改動(dòng),這時(shí)再點(diǎn)擊是不會(huì)再次重新編譯的。3是重新編譯,每點(diǎn)擊一次均會(huì)再次編譯鏈接一次,不管程序是否有改動(dòng)。在3右邊的是停止編譯按鈕,只有點(diǎn)擊了前三個(gè)中的任一個(gè),停止按鈕才會(huì)生效。在4中可以看到編譯的錯(cuò)誤信息和使用的系統(tǒng)資源情況等,以后我們要查錯(cuò)就靠它了。6是有一個(gè)小放大鏡的按鈕,這就是開啟關(guān)閉調(diào)試模式的按鈕,它也存在于菜單DebugStartStop D
44、ebug Session,快捷鍵為Ctrl+F5。 圖3-46進(jìn)入調(diào)試模式,軟件窗口樣式大致如圖3-5所示。圖中1為運(yùn)行,當(dāng)程序處于停止?fàn)顟B(tài)時(shí)才有效,2為停止,程序處于運(yùn)行狀態(tài)時(shí)才有效。3是復(fù)位,模擬芯片的復(fù)位,程序回到最開頭處執(zhí)行。按4我們可以翻開5中的串行調(diào)試窗口,這個(gè)窗口我們可以看到從51芯片的串行口輸入輸出的字符,這里的第一個(gè)工程也正是在這里看運(yùn)行結(jié)果。首先按4翻開串行調(diào)試窗口,再按運(yùn)行按鈕。要停止程序運(yùn)行回到文件編輯模式中,就要先按停止按鈕再按開啟關(guān)閉調(diào)試模式按鈕。然后我們就可以進(jìn)行關(guān)閉KEIL等相關(guān)操作了。7生成HEX文件。HEX文件格式是Intel公司提出的按地址排列的數(shù)據(jù)信息,
45、數(shù)據(jù)寬度為字節(jié),所有數(shù)據(jù)使用16進(jìn)制數(shù)字表示,常用來保存單片機(jī)或其他處理器的目標(biāo)程序代碼。它保存物理程序存儲(chǔ)區(qū)中的目標(biāo)代碼映象。一般的編程器都支持這種格式。 圖3-5翻開目錄,找到的文件就可以翻開先前的工程了。然后右擊圖3-6中的1工程文件夾,彈出工程功能菜單,選Options for TargetTarget1,彈出工程選項(xiàng)設(shè)置窗口,同樣先選中工程文件夾圖標(biāo),這時(shí)在Project菜單中也有一樣的菜單可選。 圖3-6翻開工程選項(xiàng)窗口,轉(zhuǎn)到Output選項(xiàng)頁圖3-7所示,圖中1是選擇編譯輸出的路徑,2是設(shè)置編譯輸出生成的文件名,3那么是決定是否要?jiǎng)?chuàng)立HEX文件,選中它就可以輸出HEX文件到指定的
46、路徑中。 圖3-7選好后再將它重新編譯一次,很快在編譯信息窗口中就顯示HEX文件創(chuàng)立到指定的路徑中了,如圖3-8這樣我們就可用自己的編程器所附帶的軟件去讀取并燒到芯片了,再用實(shí)驗(yàn)板看結(jié)果。 圖3-8第四章 程序設(shè)計(jì)及仿真4.1 設(shè)計(jì)要求要求利用單片機(jī)中斷功能控制數(shù)碼管顯示,狀態(tài):當(dāng)無外中斷時(shí),主程序運(yùn)行狀態(tài)為七段數(shù)碼管的A到G段依次點(diǎn)亮,不斷循環(huán),有外中斷輸入時(shí),顯示為0到9,然后返回主程序原斷點(diǎn),繼續(xù)執(zhí)行,數(shù)碼管繼續(xù)段點(diǎn)亮。利用proyeus仿真軟件畫出電路圖首先添加元器件:元件拾取共有兩種方法,一種是按類別查找和拾取元件,另一種是直接查找和拾取元件。然后在原理圖編輯區(qū)單擊鼠標(biāo)左鍵即完成元件
47、的釋放。最后電路連線:用鼠標(biāo)左鍵單擊編輯區(qū)元件的一個(gè)端點(diǎn)拖動(dòng)到要連接的另外一個(gè)元件的端點(diǎn),先松開左鍵后再單擊鼠標(biāo)左鍵,即完成一根連線,以此類推最終結(jié)果如圖 4-2所示。圖4-2流程圖繪制以及說明主程序主要分為四局部,包括復(fù)位電路局部、獨(dú)立按鍵的判別局部、單片機(jī)控制主程序局部和譯碼顯示局部,模塊流程圖如圖4-1所示:結(jié)束返回重新檢測按鍵將單片機(jī)處理的數(shù)據(jù)進(jìn)行顯示單片機(jī)主控制電路向單片機(jī)申請顯示0計(jì)數(shù)加1,向單片機(jī)申請顯示該數(shù)值。Y是否按鍵?開始N 圖4-1 主程序流程圖4.4 用keil設(shè)計(jì)程序及仿真結(jié)果一、程序如下: ORG 0000H ;從0000H單元開始 LJMP START ;跳轉(zhuǎn)到真
48、正的程序起點(diǎn)START: MOV SP,#5FH ;堆棧初始化 MOV 20H,#00H ;20H作為計(jì)數(shù)器LOOP: CALL DISP ;調(diào)用顯示程序 CALL DELAY ;調(diào)用延時(shí)程序 INC 20H ;計(jì)數(shù)器加1 MOV A,20H ;將計(jì)數(shù)器中的值送到A中 CJNE A, #0AH,L1 ;A中的值到了10嗎?未到轉(zhuǎn)L1 MOV 20H,#00H ;A中的值到了10讓其回0L1: LJMP LOOP ;轉(zhuǎn)LOOP繼續(xù)循環(huán)DISP: ;顯示子程序 CLR P2.7 ;由硬件電路要求 MOV A,20H ;取出計(jì)數(shù)器中的值送A MOV DPTR,#50H ;將字形碼表的首地址送到DPT
49、R中 MOVC A,A+DPTR ;根據(jù)A中的值查表 MOV P0,A ;查出相應(yīng)字形碼送到P0口 RET ;返回DELAY: ;延時(shí)子程序 MOV R7,#10 ;R7=10D1: MOV R6,#250 ;R6=250D2: MOV R5,#250 ;R5=250D3: DJNZ R5,D3 ;R5中的值不等于0轉(zhuǎn)本身循環(huán) DJNZ R6,D2 ;R6中的值不等于0轉(zhuǎn)D2 DJNZ R7,D1 ;R7中的值不等于0轉(zhuǎn)D1 RET ;返回 ORG 50H ;從50H單元開始存放字形碼表DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END ;
50、結(jié)束偽指令二、程序仿真及燒錄啟動(dòng)Keil軟件,輸入源程序,并保存起來;然后建立工程文件,參加源程序,設(shè)置工程。翻開Debug選項(xiàng)卡后,在左側(cè)最下面的Parametet文本框中輸入“-ddpj,單擊“確定關(guān)閉對(duì)話框,如圖4-3所示。圖4-3 設(shè)置工程文件按F7匯編、鏈接以獲得目標(biāo)文件,然后選擇Debug-Start/Stor Debug菜單項(xiàng)進(jìn)入調(diào)試狀態(tài)。選擇Peripherals“鍵盤顯示實(shí)驗(yàn)仿真板。如圖4-4所示。圖4-4 選擇實(shí)驗(yàn)仿真板再單擊“運(yùn)行按鈕即可開始運(yùn)行??梢詮姆抡姘迳现庇^地觀察到LED上有數(shù)字的顯示,如圖4-5所示。圖4-5 仿真運(yùn)行顯示三、仿真結(jié)果如下:從仿真板上直觀地觀察到
51、LED上有數(shù)字的顯示,顯示數(shù)字從0到9,如圖4-6所示。圖4-6 仿真顯示數(shù)字0到94.5 心得體會(huì):本次設(shè)計(jì)主要是針對(duì)單片機(jī)知識(shí),用匯編語言在KEIL中編程,在PROTEUS中繪制原理圖并進(jìn)行仿真,通過對(duì)這兩個(gè)軟件的學(xué)習(xí),了解了其功能的強(qiáng)大,掌握了AT89S51的內(nèi)部結(jié)構(gòu)及工作原理,對(duì)于我們以后的學(xué)習(xí)和實(shí)踐有很大的指導(dǎo)意義。這次課程設(shè)計(jì)使我在學(xué)習(xí)新知識(shí)的同時(shí),還鍛煉了我的意志品質(zhì),當(dāng)調(diào)試程序出現(xiàn)錯(cuò)誤時(shí),并沒有使我灰心,讓我放棄,而是通過自己不懈的努力,弄懂了每一局部知識(shí)。因此,本次課設(shè)對(duì)我以后無論是學(xué)習(xí)還是工作,都有著較大的幫助。通過這次課程設(shè)計(jì),使我意識(shí)到了課本上的知識(shí)遠(yuǎn)遠(yuǎn)不能滿足當(dāng)今社會(huì)
52、的需要,讓我知道了未來學(xué)習(xí)知識(shí)要更加注重實(shí)踐與實(shí)用。通過此次設(shè)計(jì)給我最大的感觸就是做任何事都要自信和認(rèn)真。自信不可盲目,更不要自大,一切有真實(shí)學(xué)和能力的人往往對(duì)此把握的游刃有余。認(rèn)真是一種作風(fēng)和態(tài)度,是一個(gè)人品質(zhì)的集中表達(dá),也包含對(duì)事業(yè)的責(zé)任心!有時(shí)候我們需要的太多,我們不妨從這兩方面做起,去挑戰(zhàn)自己!附錄A圖1 AT89S51結(jié)構(gòu)框圖附錄B 單片機(jī)AT89S51匯編指令表數(shù)據(jù)傳送指令序助記符功能字節(jié)數(shù)振蕩周期1MOVA,Rn存放器內(nèi)容送入累加器1122MOVA,direct直接地址單元中的數(shù)據(jù)送入累加器2123MOVA,Ri間接RAM中的數(shù)據(jù)送入累加器1124MOVA,#tata立即數(shù)送入累
53、加器2125MOVRn,A累加器內(nèi)容送入存放器1126MOVRN,dinrect直接地址單元中的數(shù)據(jù)送入存放器2247MOVRn,#data立即數(shù)送入存放器2128MOVdirect,A累加器內(nèi)容送入直接地址單元2129MOVdirect,A存放器內(nèi)容送入直接地址單元22410MOVDirect,direct直接地址單元中的數(shù)據(jù)送入另一個(gè)直接地址單元32411MOVDirect,Ri間接RAM中的數(shù)據(jù)送入另一個(gè)直接地址單元22412MOVEirect,#data立即數(shù)送入直接地址單元32413MOVRi,A累加器內(nèi)容送間接RAM單元11214MOVRi,direct直接地址單元數(shù)據(jù)送入間接RA
54、M單元22415MOVRi,#data立即數(shù)送入間接RAM單元21216MOVDPTR,#datl616位立即數(shù)送入地址存放器32417MOVC A,A+DPTR以DPTR為基地址變址尋址單元中的數(shù)據(jù)送入累加器12418MOVCA,A+PC以PC位基地址變址尋址單元中的數(shù)據(jù)送入累加器12419MOVXA,Ri外部RAM8位地址送入累加器12420MOVXA,DPTR外部RAM16位地址送入累加器12421MOVXRi,A累加器器送外部RAM8位地址12422MOVXDPTR,A累加器器送外部RAM16位地址12423PUSHDirect直接地址單元中的數(shù)據(jù)壓入堆棧22424POPDirect彈
55、棧送直接地址單元22425XCHA,Rn存放器與累加器交換11226XCHA,direct直接地址單元與累加器交換21227XCHA,Ri間接RAM與累加器交換11228XCHDA,Ri間接RAM的低半字節(jié)與累加器交換112算術(shù)操作類指令序助記符功能字節(jié)數(shù)振蕩周期1ADDA,Rn存放器內(nèi)容加到累加器1122ADDA,direct直接地址單元的內(nèi)容加到累加器2123ADDA,Ri間接RAM的內(nèi)容加到累加器1124ADDA,#data立即數(shù)加到累加器2125ADDCA,Rn存放器內(nèi)容帶進(jìn)位加到累加器1126ADDCA,direct直接地址單元的內(nèi)容帶進(jìn)位加到累加器2127ADDCA,Ri間接RAM
56、的內(nèi)容帶進(jìn)位回到累加器1128ADDCA,#data立即數(shù)帶進(jìn)位加到累加器2129SUBBA,Rn累加器帶借位減存放器內(nèi)容11210SUBBA,direct累加器帶借位減直接地址單元的內(nèi)容21211SUBBA,Ri累加器帶借位減間接RAM中的內(nèi)容11212SUBBA,#data累加器帶借位減立即數(shù)21213INCA累加器加111214INCRn存放器加111215INCDirect直接地址單元加121216INCRi間接RAM單元加111217DECA累加器減111218DECRn存放器減111219DECDirect直接地址單元減121220DECRi間接RAM單元減111221INCDPT
57、R地址存放器DPTR加112422MULABA乘以B14823DIVABA除以B14824DAA累回器十進(jìn)制調(diào)整112邏輯操作類指令序助記符功能字節(jié)數(shù)振蕩周期1ANLA,Rn累加器與存放器相“與1122ANLA,Ri累加器與直接地址單元相“與2123ANLA,Ri累加器與間接RAM單元單元相“與1124ANLA,#data累加器與立即數(shù)相“與2125ANLDirect,A直接地址單元與累加器相“與2126ANLDirect,#data直接地址單元與累加器相“與3247ORLA,Rn累加器與存放器相“或1128ORLA,direct累加器與直接地址單元相“或2129ORLA,Ri累加器與間接RAM單元單元相“或1121
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 道路交通反違章培訓(xùn)課件
- 道法安全記心上課件
- 2026年甘肅省隴南市高職單招職業(yè)適應(yīng)性測試題庫試題附答案
- 2025胸腔鏡肺結(jié)節(jié)日間手術(shù)圍手術(shù)期健康教育專家共識(shí)解讀課件
- 車險(xiǎn)新人培訓(xùn)
- 木材加工設(shè)備安裝計(jì)劃主要內(nèi)容
- 軍隊(duì)文職面試考生回憶版試題(軟件工程工程技術(shù))
- 車間節(jié)后返崗安全培訓(xùn)課件
- 酒店客戶服務(wù)標(biāo)準(zhǔn)流程制度
- 2025年學(xué)校教學(xué)管理與核心教學(xué)制度落實(shí)工作心得(2篇)
- 腫瘤放射治療的新技術(shù)進(jìn)展
- 土壤微生物群落結(jié)構(gòu)優(yōu)化研究
- 2024外研版四年級(jí)英語上冊Unit 4知識(shí)清單
- 視頻會(huì)議系統(tǒng)施工質(zhì)量控制方案
- 2025年高二數(shù)學(xué)建模試題及答案
- 2025年黨的二十屆四中全會(huì)精神宣講稿及公報(bào)解讀輔導(dǎo)報(bào)告
- 壓力管道安裝單位壓力管道質(zhì)量安全風(fēng)險(xiǎn)管控清單
- 停車場道閘施工方案范本
- 2025年實(shí)驗(yàn)室安全事故案例
- 衛(wèi)生院關(guān)于成立消除艾滋病、梅毒、乙肝母嬰傳播領(lǐng)導(dǎo)小組及職責(zé)分工的通知
- 鐵路更換夾板課件
評(píng)論
0/150
提交評(píng)論