基于單片機的冒泡排序動態(tài)顯示系統(tǒng)設(shè)計論文_圖文_第1頁
基于單片機的冒泡排序動態(tài)顯示系統(tǒng)設(shè)計論文_圖文_第2頁
基于單片機的冒泡排序動態(tài)顯示系統(tǒng)設(shè)計論文_圖文_第3頁
基于單片機的冒泡排序動態(tài)顯示系統(tǒng)設(shè)計論文_圖文_第4頁
基于單片機的冒泡排序動態(tài)顯示系統(tǒng)設(shè)計論文_圖文_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄0. 前言 . . 11. 基于單片機的冒泡排序動態(tài)顯示系統(tǒng)基本理論 . . 12. 方案設(shè)計 . . 23. 硬件電路的工作原理 . . 23.1單片機AT89C51工作原理 . 23.2鍵盤輸入模塊 . . 43.3動態(tài)顯示模塊 . . 53.4時鐘模塊 . . 63.5復(fù)位模塊 . . 63.6發(fā)光提示和按鍵中斷模塊 . . 74. 軟件編程 . . 74.1主程序功能 . . 74.2鍵盤程序功能 . . 84.3冒泡排序法程序功能 . . 95. 系統(tǒng)調(diào)試和結(jié)果分析 . . 106. 結(jié)論及進一步設(shè)想 . . 12參考文獻 . . 12課設(shè)體會 . . 13附錄1 元件清單 .

2、 . 14附錄2 總體電路圖 . . 15基于單片機的冒泡排序動態(tài)顯示系統(tǒng)設(shè)計金遠華 沈陽航空航天大學(xué)自動化學(xué)院摘要:本文設(shè)計的是基于單片機的冒泡排序動態(tài)顯示系統(tǒng), 它的主要功能是利用鍵盤輸入數(shù)據(jù)和八位LED 數(shù)碼管動態(tài)地顯示排序過程。采用AT89C51作為電路核心部件,利用按鍵開關(guān)做成44鍵盤代表數(shù)字0F ,并且通過LED 數(shù)碼管作為顯示電路,當確認排序后系統(tǒng)還可以在數(shù)碼管中動態(tài)的顯示排序過程。通過硬件和軟件的結(jié)合可以看到實驗結(jié)果與設(shè)計要求基本吻合,實現(xiàn)了數(shù)據(jù)輸入和動態(tài)排序顯示。關(guān)鍵詞:單片機;鍵盤;冒泡排序;動態(tài)LED 顯示0. 前言單片機具有顯著的優(yōu)點,它已成為科技領(lǐng)域的有力工具,人類生

3、活的得力助手。它的應(yīng)用遍及各個領(lǐng)域.可以說,二十世紀跨越了三個“電”的時代,即電氣時代、電子時代和現(xiàn)已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC 機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數(shù)人卻不怎么熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱微控制器)。顧名思義,這種計算機的最小系統(tǒng)只用了一片集成電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了?,F(xiàn)在,這種單片機的使用領(lǐng)域已十分廣泛,如智能儀表、實時工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機

4、,就能起到使產(chǎn)品升級換代的功效,常在產(chǎn)品名稱前冠以形容詞“智能型”,如智能型洗衣機等。現(xiàn)在有些工廠的技術(shù)人員或其它業(yè)余電子開發(fā)者搞出來的某些產(chǎn)品,不是電路太復(fù)雜,就是功能太簡單且極易被仿制。究其原因,可能就卡在產(chǎn)品未使用單片機或其它可編程邏輯器件上。綜合所述,單片機已成為計算機發(fā)展和應(yīng)用的一個重要方面。另一方面,單片機應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。本文論述了單片機控制鍵盤和LED 數(shù)碼管顯示電路,實現(xiàn)

5、將單片機采集到的數(shù)據(jù)排序顯示的功能。由于單片機具有4個I/O口,故利用單片機本身即可以實現(xiàn)本次任務(wù)要求。1. 基于單片機的冒泡排序動態(tài)顯示系統(tǒng)基本理論把一批數(shù)據(jù)想象成縱向排列,自下而上比較相鄰的兩個數(shù)據(jù)元素,如果這兩個數(shù)據(jù)元素的大小順序符合要求,則保持原樣,否則交換它們的位置。這樣比較一輪后,最小的數(shù)據(jù)元素就象氣泡一樣浮到最頂上,故稱冒泡算法。實際編程設(shè)計時,每一輪操作都從數(shù)據(jù)區(qū)的首地址開始,向末端推進。N 個數(shù)據(jù)元素一般要進行N-1次輪次比較、交換排序,但如果操作過程中沒有出現(xiàn)位置交換,則說明數(shù)據(jù)已經(jīng)有序,可以提前結(jié)束排序。然后再連接LED 顯示器,實現(xiàn)動態(tài)顯示排序。2. 方案設(shè)計基于單片機

6、的冒泡排序動態(tài)顯示系統(tǒng)的基本組成如圖1所示。 圖1 基于單片機的冒泡排序動態(tài)顯示系統(tǒng)的原理框圖根據(jù)設(shè)計任務(wù)要求,現(xiàn)采用如下方案實現(xiàn)。硬件部分包括鍵盤輸入電路、數(shù)碼管顯示電路、提示和外部中斷按鍵電路,這些硬件電路不僅能產(chǎn)生按鍵信號送入單片機而且能通過數(shù)碼管顯示出來;軟件部分能準確地識別鍵值和正確顯示數(shù)據(jù),還需要讓采集到的數(shù)據(jù)實現(xiàn)從小到大的排序過程,同時通過數(shù)碼管動態(tài)的顯示出其過程。單片機可以利用4個I/O口實現(xiàn)對外設(shè)的控制,通過軟件編程方法可以達到設(shè)計要求。3. 硬件電路的工作原理3.1單片機AT89C51工作原理AT89C51的管腳結(jié)構(gòu)圖見圖2。 圖2 A T89C51的管腳結(jié)構(gòu)圖P0口:P0

7、口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL 門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。P1口: P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口:P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫

8、時,P2口輸出其特殊功能寄存器的內(nèi)容。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL 門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL )這是由于上拉的緣故。RST :復(fù)位輸入。當振蕩器復(fù)位器件時,要保持RST 腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH 編程期間,此引腳用于輸入編程脈沖。在平時,ALE 端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。PS

9、EN :外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH ),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET ;當/EA端保持高電平時,此間內(nèi)部程序存儲器。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。AT89C51是一個低功耗高性能CMOS 8位單片機,32k Bytes Flash 只讀程序存儲器(ROM,512 Bytes 內(nèi)部數(shù)據(jù)存儲

10、器(RAM,該微處理器采用ATMEL 公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準MCS-51指令系統(tǒng),引腳兼容80C51和80C52芯片,片內(nèi)的Flash 存儲器可以象常規(guī)程序存儲器一樣進行燒寫,AT89C51RC 片內(nèi)總共有512字節(jié)的用戶數(shù)據(jù)區(qū),而256字節(jié)的內(nèi)部擴展數(shù)據(jù)區(qū)需通過清SFR(8EH的位1并用MOVX 指令訪問,片內(nèi)置通用8位中央處理器和Flash 存儲單元,另一個256BytesRAM 區(qū)與ATMEL之AT89系列8052兼容的單片機是一致的,AT89C51RC 結(jié)合通用的8位微處理器和Flash存儲技術(shù)構(gòu)成功能強大單片微處理器,可提供許多高性能低價位的系統(tǒng)控制應(yīng)用場合。A

11、T89C51具有如下主要特點:40個引腳,32kBytes 的程序存儲器,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,內(nèi)置時鐘振蕩器, 其Flash 存儲器,可反復(fù)擦寫1000次的Flash 存儲器可有效地降低開發(fā)成本。軟件設(shè)置電源省電模式,睡眠其間,定時/計數(shù)器,串行口和中斷口均停止工作,RAM 中的數(shù)據(jù)被“凍結(jié)”,直到下次被中斷激活或硬件復(fù)位方可恢復(fù)工作。3.2鍵盤輸入模塊鍵盤在單片機應(yīng)用系統(tǒng)中能實現(xiàn)向單片機輸入數(shù)據(jù)、傳送命令等功能,是人工干預(yù)單片機的主要手段。由于在按鍵數(shù)目較多的場合,行列式鍵盤要節(jié)省很多的I/O口,故本

12、系統(tǒng)采用44的行、列結(jié)構(gòu)構(gòu)成的16個按鍵的矩陣式鍵盤,見圖3。按鍵設(shè)置在行、列線的交點上,行、列線分別連結(jié)到按鍵開關(guān)的兩端。通過軟件編程掃描鍵盤的行線,當無鍵按下時,行線為低電平、列線為高電平,當有鍵按下時,按鍵所在的行線變?yōu)楦唠娖?,?zhí)行一段延時10ms 的子程序后,確認該行線是否仍為高電平,如果仍為高電平,則認為該行確實有鍵按下。然后掃描列線,使行線輸出為高電平,列線輸出為低電平,當有鍵按下時,按鍵所在列為高電平,而其余列為低電平,確認有鍵按下,然后等待鍵釋放,當鍵釋放以后求出按鍵的鍵值。 圖3 44矩陣鍵盤3.3動態(tài)顯示模塊基本的LED 數(shù)碼管是由七個條狀發(fā)光二極管芯片按圖4排列而成的,可

13、實現(xiàn)0F 的顯示。 圖4 LED數(shù)碼管原理圖LED (Light Emitting Diode),發(fā)光二極管,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。LED 的心臟是一個半導(dǎo)體的晶片.LED 是由多個發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成。LED 數(shù)碼管常用段數(shù)一般為7段,有的另加一個小數(shù)點,還有一種是類似于3位“1+”型。LED 數(shù)碼管根據(jù)接法不同分為共陰和共陽兩類。LED 數(shù)碼管廣泛應(yīng)用于儀表,時鐘,車站,家電等場合。如圖5,8位共陰級LED 顯示器采用動態(tài)顯示接法。在AT89C51的內(nèi)部RAM 中設(shè)置8個緩沖單元30H 37H ,分別存放顯示器要顯示的8位

14、數(shù)據(jù),單片機AT89C51的P0口用于輸出段碼,P2口用于輸出位選碼。 圖5 8位LED 數(shù)碼管顯示電路圖工作時,利用軟件譯碼的方法求出被按下鍵對應(yīng)的段碼送至P0口,同時將位選碼送至P2口,于是選中的顯示器點亮,其余顯示器處于熄滅狀態(tài)。若將各位從左至右依次進行顯示,每位數(shù)碼管顯示10ms ,顯示完最后一位后,再重復(fù)上述過程,則可得到連續(xù)顯示的效果。當有第二個鍵被按下時,將最右面的LED 中的數(shù)據(jù)左移一位,同時把按下鍵對應(yīng)的段碼送至P0口,位選碼送P2口,在最右面的LED 中顯示出來。形成了移位的顯示方式。雖然這些字符是在不同時刻出現(xiàn)的,而在同一時刻,只有一位顯示,但由于LED 顯示器的余輝和人

15、眼的“視覺暫留”作用,只要每位顯示間隔足夠短,則可以造成“多位同時亮的假象”。 3.4時鐘模塊AT89C51單片機各功能部件的運行是以時鐘控制信號為基準的,有條不紊地一拍一拍地工作。常用的時鐘電路設(shè)計有兩種方式,一種是內(nèi)部時鐘方式,另一種是外部時鐘方式。內(nèi)部時鐘方式的電路圖如圖6。 圖6 單片機時鐘電路圖3.5復(fù)位模塊復(fù)位是單片機的初始化操作,起功能主要是使單片機內(nèi)邏輯電路回到起始點。 AT89C51的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位,見下圖7。此外,RESET/Vpd 還是一復(fù)用腳,V cc 掉電其間,此腳可接上備用電源,以保證單片機內(nèi)部RAM 的數(shù)據(jù)不丟失。 圖7 單片機復(fù)位電路圖

16、3.6發(fā)光提示和按鍵中斷模塊由于使用的是8位LED 數(shù)碼管,當輸入數(shù)據(jù)超過8位時,系統(tǒng)會清零當前顯示,故利用發(fā)光二極管的特性設(shè)置了提示電路。當輸入第8位數(shù)據(jù)時,單片機P3.0口輸出低電平,發(fā)光二極管導(dǎo)通點亮,進行提示。當再次輸入數(shù)據(jù)后,發(fā)光二極管熄滅,提示結(jié)束。為了使單片機工作效率更高,在單片機的外部中斷口設(shè)置1個按鍵式開關(guān),作為開始排序按鍵,當按下開始排序按鍵后,單片機P3.2口變?yōu)榈碗娖?,?zhí)行中斷程序,系統(tǒng)開始排序。電路圖見圖8。 圖8 發(fā)光提示和按鍵中斷電路圖4. 軟件編程4.1主程序功能基于單片機的冒泡排序動態(tài)顯示系統(tǒng)主要應(yīng)用了單片機強大的多功能I/O口,可以實現(xiàn)數(shù)據(jù)采集和數(shù)碼管顯示而

17、無須添加其他芯片。主程序?qū)⑺蟹种С绦虬ㄆ渲?。主程序流程圖見圖9。 圖9 主程序流程圖由圖可以看出,主程序?qū)崿F(xiàn)了數(shù)據(jù)的鍵盤輸入、數(shù)碼管顯示和冒泡動態(tài)排序所有要求。 4.2鍵盤程序功能鍵盤程序部分主要完成鍵盤輸入和顯示的功能。當沒有鍵按下時主程序一直執(zhí)行鍵掃描工作,當有鍵按下時,先執(zhí)行延遲消抖程序,然后在確認是否有鍵按下。若確實有鍵按下,計算出鍵值后顯示執(zhí)行顯示程序。鍵盤掃描的流程圖見圖10。 圖10 鍵盤掃描流程圖4.3冒泡排序法程序功能數(shù)據(jù)排序就是將一批數(shù)由小到大排列,或由大到小排列。本部分采用的數(shù)據(jù)排序算法是冒泡法。冒泡法是相鄰數(shù)互換的排序方法,排序時從前向后進行相鄰兩個數(shù)的比較,如果數(shù)

18、據(jù)的大小次序與要求的順序不相符時,就將兩個數(shù)互換,否則,順序符合要求不互換。為了實現(xiàn)升序排列,通過這種相鄰數(shù)互換的方法,使小數(shù)向前移,大數(shù)向后移。如此從前向后進行一次次相鄰數(shù)呼喚,就會把這一批數(shù)據(jù)的最大排到最后,最小數(shù)排到最前,從而實現(xiàn)了數(shù)據(jù)從小到大的排列。每次排序后調(diào)用一次顯示子程序,將排序后的數(shù)據(jù)通過數(shù)碼管輸出,即可實現(xiàn)動態(tài)顯示。冒泡排序流程圖見圖11。 圖11 冒泡法程序流程圖5. 系統(tǒng)調(diào)試和結(jié)果分析根據(jù)方案設(shè)計要求,進行了硬件電路和軟件電路的實際聯(lián)接。打開程序調(diào)試軟件Keil uVision4,將已編寫好的源程序保存成. ASM 形式,通過編譯后,生成. HEX 和. BIN 文件。在

19、編譯提示框中可以看到錯誤和警告提示信息。如缺少;,指令錯誤、跳轉(zhuǎn)范圍不正確等,經(jīng)過查看程序逐步改正過來,直到提示無錯誤和警告信息為止。然后在仿真軟件PROTEUS 中搭建硬件電路圖以便進行仿真試驗,電路連好后在仿真電路圖的AT89C51中添加Keil uVision4中生成的. HEX 文件。接下來就可以進行硬件仿真了。硬件仿真亦存在很多的錯誤,在我仿真過程中最初做的按鍵按下后,數(shù)碼管無顯示,結(jié)合程序和電路對比之后發(fā)現(xiàn)電路連接存在問題,依照程序改正后數(shù)碼管依然無法正常顯示,檢查數(shù)碼管后才知道是錯誤的選用了共陽極的數(shù)碼管。通過仿真可以觀察到與設(shè)計要求相同的結(jié)果。當按下鍵盤中的鍵值時能準確無誤的通

20、過數(shù)碼管顯示,如下圖圖12所示。 圖12 鍵盤輸入和數(shù)碼管顯示仿真結(jié)果圖當按鍵次數(shù)達到8次時,可以看到發(fā)光LED 數(shù)碼管點亮進行提示。結(jié)果如圖13所示。 圖13 發(fā)光二極管提示仿真結(jié)果圖輸入數(shù)據(jù):2、A 、3、5、B 、0、1后,按下開始排序按鍵,可以觀察到數(shù)碼管中的數(shù)據(jù)進行排序過程,排序結(jié)果見圖14。 圖14 動態(tài)排序顯示仿真結(jié)果圖6. 結(jié)論及進一步設(shè)想本次設(shè)計的冒泡排序動態(tài)顯示系統(tǒng),能夠進行數(shù)據(jù)排序的動態(tài)顯示,并可用LED 動態(tài)顯示數(shù)據(jù)排序過程,同時可以用鍵盤選擇數(shù)據(jù)的輸入。通過單片機AT89C51的I/O口控制外設(shè)鍵盤和數(shù)碼顯示電路,完成了本次設(shè)計要求。根據(jù)實驗結(jié)果可以知道基本完成了設(shè)計

21、任務(wù)要求。參考文獻1 李華.MCS-51單片機實用接口技術(shù). 北京:北京航空航天出版社大學(xué),1999 2 方彥軍,孫建. 智能儀器技術(shù)及其應(yīng)用. 北京:化學(xué)工業(yè)出版社,2003 3 孫傳友. 測控系統(tǒng)原理與設(shè)計. 北京:北京航空航天大學(xué)出版社,2002 4 劉守義等. 單片機應(yīng)用技術(shù). 西安:西安電子科技大學(xué)出版社,2002 5 何立民. 單片機高級教程. 北京:北京航空航天大學(xué)出版社,20006張毅剛. MCS51單片機Y 原理及應(yīng)用. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004 7趙茂泰. 智能儀器原理及應(yīng)用. 北京:電子工業(yè)出版社,2004.78公茂法.MCS 51/52單片機原理與應(yīng)用.

22、北京:北京航空航天大學(xué)出版社,2009.3 9凌玉華. 單片機原理及應(yīng)用系統(tǒng)設(shè)計. 北京:電子工業(yè)出版社,2006.410周潤景. 基于PROTEUS 的電路及單片機系統(tǒng)設(shè)計與仿真. 北京:北京航空航天大學(xué)出版社,2006.5課設(shè)體會在此次的基于單片機的冒泡排序動態(tài)顯示系統(tǒng)設(shè)計過程中,讓我更進一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和其具體的使用方法。每次課程設(shè)計都是一次難得的鍛煉機會,讓我們能夠充分利用所學(xué)過的理論知識還有己的想象的能力,另外還讓我們學(xué)習(xí)查找資料的方法,以及自己處理分析電路,編寫程序的能力。這次課程設(shè)計讓我受益匪淺,無論從知識上還是其他的各個方面。上課的時候的學(xué)習(xí)從來沒

23、有見過真正的單片機,只是從理論的角度去理解枯燥乏味。但在課設(shè)中見過甚至使用了單片機及其系統(tǒng),能夠理論聯(lián)系實際的學(xué)習(xí),開闊了眼界,提高了單片機知識的理解和水平。在這次課程設(shè)計中又讓我體會到了合作與團結(jié)的力量,當遇到不會或是設(shè)計不出來的地方,我們就會在QQ 群里討論或者是同學(xué)之間相互幫助。團結(jié)就是力量,無論在現(xiàn)在的學(xué)習(xí)中還是在以后的工作中,團結(jié)都是至關(guān)重要的,有了團結(jié)會有更多的理念、更多的思維、更多的情感。其實, 我在開始做設(shè)計時,難度很大,很迷茫。不積跬步何以至千里,通過求助于許老師、理清了思路。同時,在圖書館里、網(wǎng)上查閱資料,攻克了設(shè)計中的道道難題。最后經(jīng)過指導(dǎo)老師胡老師的耐心指點和連續(xù)的奮戰(zhàn)

24、才算基本合格。本次設(shè)計中我用自己學(xué)到的知識完成代碼,對單片機設(shè)計也有了新的認識,又學(xué)到了在設(shè)計過程中的許多流程和該注意的事項,增強了電子產(chǎn)品開發(fā)的意識。促進我以后更好的學(xué)習(xí),鍛煉了自身的能力。單片機是很重要的一門課程,老師和一些工作的朋友都曾說過,如果學(xué)好一門單片機,就憑這個技術(shù)這門手藝找一個好工作也不成問題。盡管我們在課堂學(xué)到的內(nèi)容很有限,但在以后的學(xué)習(xí)中單片機還需要好好的深入研究和學(xué)習(xí),學(xué)好了單片機也就多了一項生存的本錢。最后感謝我的課設(shè)指導(dǎo)老師胡老師對我的精心指導(dǎo)和幫助。附錄1 元件清單 附錄2 總體電路圖 附錄3 源程序;*; 以下8個存儲單元分別存放8位數(shù)碼管的段碼LED_BIT_1

25、 EQU 30HLED_BIT_2 EQU 31HLED_BIT_3 EQU 32HLED_BIT_4 EQU 33HLED_BIT_5 EQU 34HLED_BIT_6 EQU 35HLED_BIT_7 EQU 36HLED_BIT_8 EQU 37HT_COUNT EQU 38HKEY_CNT EQU 39HLINE EQU 3AHROW EQU 3BH;*ORG 0000HLJMP STARTORG 0003HLJMP SORTORG 0013HLJMP INT_1START: SETB EASETB EX0CLR IT0MOV T_COUNT,#00H ; 初始化MOV KEY_CNT

26、,#00HMOV LINE,#00HMOV ROW,#00HMOV LED_BIT_1,#00HMOV LED_BIT_2,#00HMOV LED_BIT_3,#00HMOV LED_BIT_4,#00HMOV LED_BIT_5,#00HMOV LED_BIT_6,#00HMOV LED_BIT_7,#00HMOV LED_BIT_8,#3FH;最右位LED 顯示0,其余熄滅MOV 40H,#00HMOV 41H,#00HMOV 42H,#00HMOV 43H,#00HMOV 44H,#00HMOV 45H,#00HMOV 46H,#00HMOV 47H,#00HMOV DPTR,#TABL

27、EA0: LCALL DISP;*; 按鍵掃描LSCAN: MOV P1,#0F0H;行碼掃描L1: JNB P1.0,L2LCALL DELAYJNB P1.0,L2MOV LINE,#00HLJMP RSCANL2: JNB P1.1,L3LCALL DELAYJNB P1.1,L3MOV LINE,#04HLJMP RSCANL3: JNB P1.2,L4LCALL DELAYJNB P1.2,L4MOV LINE,#08HLJMP RSCANL4: JNB P1.3,A0LCALL DELAYJNB P1.3,A0MOV LINE,#0CHRSCAN: MOV P1,#0FH ; 列碼

28、掃描C1: JNB P1.4,C2MOV ROW,#00HLJMP CALCUC2: JNB P1.5,C3MOV ROW,#01HLJMP CALCUC3: JNB P1.6,C4MOV ROW,#02HLJMP CALCUC4: JNB P1.7,C1MOV ROW,#03H;*CALCU: INC KEY_CNT ;統(tǒng)計按鍵次數(shù)MOV A,KEY_CNTCJNE A,#8,CLEAR;如果按鍵8次, 發(fā)光LED 提示CLR P3.0CLEAR: CJNE A,#9,KEY1SETB P3.0W10: MOV A,P1; 等待按鍵抬起CJNE A,#0FH,W11MOV P0,#00HLJ

29、MP STARTW11: MOV A,P1CJNE A,#0F0H,W10MOV P0,#00HLJMP START;*; 第1次按鍵, 清除已顯示的0, 顯示按下的數(shù)字KEY1: CJNE A,#1,KEY2MOV A,LINEADD A,ROWMOV 47H,AMOVC A,A+DPTR;查斷碼表MOV LED_BIT_8,ADISP1: LCALL DISPW20: MOV A,P1; 等待按鍵抬起CJNE A,#0FH,W21LJMP A0;鍵已抬起W21: MOV A,P1CJNE A,#0F0H,W22LJMP A0W22: LJMP DISP1RET;*; 第2到8次按鍵, 移位

30、顯示按下的數(shù)字KEY2: MOV A,LINEADD A,ROWMOV 50H,AMOVC A,A+DPTRLCALL SHIFT; 調(diào)用段碼移位DISP2: LCALL DISP ;調(diào)用顯示子程序W30: MOV A,P1; 等待按鍵抬起CJNE A,#0FH,W31LJMP A0W31: MOV A,P1CJNE A,#0F0H,W32LJMP A0W32: LJMP DISP2;*;LED 段碼移位子程序SHIFT: MOV 30H,31HMOV 31H,32HMOV 32H,33HMOV 33H,34HMOV 34H,35HMOV 35H,36HMOV 36H,37HMOV 37H,AMOV 40H,41HMOV 41H,42H

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論