'單片機課程設(shè)計 簡易計算器的設(shè)計',_type,_第1頁
'單片機課程設(shè)計 簡易計算器的設(shè)計',_type,_第2頁
'單片機課程設(shè)計 簡易計算器的設(shè)計',_type,_第3頁
'單片機課程設(shè)計 簡易計算器的設(shè)計',_type,_第4頁
'單片機課程設(shè)計 簡易計算器的設(shè)計',_type,_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄目錄目錄目錄 摘要1 緒論1 1.1 設(shè)計要求1 1.2 根本功能2 2 2.1 硬件局部設(shè)計方案2 2.1.1 單片機局部2 2.1.2 按鍵局部2 2.1.3 顯示局部2 2.2 軟件局部設(shè)計方案2 4 3.1 系統(tǒng)的總體硬件設(shè)計4 3.2 鍵盤連接電路4 3.3 顯示屏連接電路5 3.4 單片 機芯片AT89C516 3.5 外接電路7 8 4.1 鍵盤識別程序設(shè)計8 4.2 顯示程序11 4.3 運算程序11 12 5.1 元器件清單12 5.2 程序清單12 18 6.1 仿真驗證18 6.2 性能分析20 6.3 出現(xiàn)故障及其原因20 6.4 解決方法20 結(jié)論20 參考文獻(xiàn)2

2、1 致謝21 附錄PCB圖22 耍?苉7雮bhw:dv>袏g皐;豽? 1簡易計算器的設(shè)計 學(xué)生:李飛 馬鵬超 舒宏超 指導(dǎo)老師:王孝儉 摘 要:單片機是指一個集成在一塊芯片上的完整計算機系統(tǒng)。盡管他的大局部功能集成在一塊小芯片上,但是它具有一個完整計算機所需要的大局部部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會具有外存。同時集成諸如通訊接口、定時器,實時時鐘等外圍設(shè)備。而現(xiàn)在最強大的單片機系統(tǒng)甚至可以將聲音、圖像、網(wǎng)絡(luò)、復(fù)雜的輸入輸出系統(tǒng)集成在一塊芯片上。單片機內(nèi)部也用和電腦功能類似的模塊,比方CPU,內(nèi)存,并行總線,還有和硬盤作用相同的存儲器件,不同的是它的這些部件性能都相對

3、我們的家用電腦弱很多,不過價錢也是低的,一般不超過10元即可,用它來做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動滾筒洗衣機、排煙罩、VCD等等的家電里面都可以看到它的身影!它主要是作為控制局部的核心部件。它是一種在線式實時控制計算機,在線式就是現(xiàn)場控制,需要的是有較強的抗干擾能力,較低的本錢,這也是和離線式計算機的比方家用PC的主要區(qū)別。單片機比專用處理器最適合應(yīng)用于嵌入式系統(tǒng),因此它得到了最多的應(yīng)用。事實上單片機是世界上數(shù)量最多的計算機?,F(xiàn)代人類生活中所用的幾乎每件電子和機械產(chǎn)品中都會集成有單片機。 、 、計算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部

4、單片機。而個人電腦中也會有為數(shù)不少的單片機在工作。汽車上一般配備40多部單片機,復(fù)雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百臺單片機在同時工作!單片機的數(shù)量不僅遠(yuǎn)超過PC機和其他計算的綜合,甚至比人類的數(shù)量還要多。 關(guān)鍵詞:單片機、計算器、控制電路、仿真。 緒論 設(shè)計要求掌握數(shù)碼管移位動態(tài)掃描顯示的編程方法,掌握矩陣掃描的編程方法,掌握數(shù)據(jù)在內(nèi)部運算的編程方法。設(shè)計任務(wù)實現(xiàn)最大8位正整數(shù)加、減、乘、除,具備清零、等于功能,16個按鍵功能依次為: 數(shù)字0、數(shù)字1、數(shù)字2、數(shù)字3、數(shù)字4、數(shù)字5、數(shù)字6、數(shù)字7、數(shù)字8、數(shù)字9、清零、等于、加、減、乘、除。 1設(shè)計要求及功能分析 1.1設(shè)計要求: 本次單片微

5、型計算機與接口技術(shù)課程設(shè)計做的是利用C51單片機為主體的計算器,實現(xiàn)了簡單的加、減、乘、除功能。采取的是鍵盤輸入和液晶顯示屏的輸出結(jié)果顯示。主要硬件構(gòu)成局部由四個,一個AT89C51單片機芯片,一個液晶顯示屏,一個4*4鍵盤和一個排阻10K做P0口的上拉電阻,可以實現(xiàn)16位的數(shù)值操作計算。 1.2根本功能: 首先,計算器可現(xiàn)實8位數(shù)字,開機運行時,只有數(shù)碼管最低位顯示為“0,其他位全部不顯示; 翩_?臣( 2其次,可以對計算結(jié)果在16位以內(nèi)的;兩個無符號數(shù)進(jìn)行加、減、乘、除運算,并顯示計算結(jié)果,如果輸入操作數(shù)和輸出結(jié)果超過16位,那么會顯示“error,以提示使用者輸入錯誤,應(yīng)清零后重新輸入。

6、 最后,運算時,如果按錯了可以使用清零鍵直接清零,重新輸入數(shù)據(jù),運算過程中,如果運算表達(dá)式是加、減、乘、除混合運算,可以進(jìn)行連續(xù)運算,不需要按等號鍵,運算規(guī)那么那么是從左到右,不區(qū)分運算等級。即認(rèn)為加減乘除是同等級的運算。 2.設(shè)計方案 2.1硬件局部設(shè)計方案 2.1.1 單片機局部 單片機以AT89C51來作為核心元器件。 2.1.2 按鍵局部 方案一:采用4*4行列式鍵盤,分別設(shè)定數(shù)字鍵和功能鍵,采用查詢方式,每次有鍵按下時,先判斷是實數(shù)字鍵還是功能鍵,但是這種方式采用了大量的I/O口線。 方案二:采用獨立式按鍵,獨立式按鍵借口電路配置靈活,軟件結(jié)構(gòu)簡單。 雖然采用獨立式按鍵時每個按鍵必須

7、占用一根I/O口線,但是在本實驗中根據(jù)實際的需要采用通過四個按鍵即只占用四個I/O口線,而如果采用4*4行列式鍵盤時占用8個I/O口線,所以我們采用一方案。 2.1.3 顯示局部 在單片機應(yīng)用系統(tǒng)中,使用的顯示器主要有LED發(fā)光二極管顯示器、LCD液晶顯示親以及CRT接口。 方案一:使用8位LED數(shù)碼管來顯示,LED顯示器是由發(fā)光二極管顯示字段組成的顯示器件,在單片機應(yīng)用系統(tǒng)中通常使用的是七段LED,這種顯示器有共陰極和共陽極兩種,它具有本錢低廉、配置靈活和單片機接口方便等特點。 方案二:使用液晶顯示器來顯示。液晶是介于固態(tài)和液態(tài)間的有機化合物,將其加熱會變成透明液態(tài),冷卻后變成結(jié)晶的渾濁固態(tài)

8、。在電機的作用下,產(chǎn)生冷熱變化,從而影響它的透光性,來到達(dá)顯示的目的。LCD還具有以下優(yōu)點:1低壓、微功耗;2顯示信息量大;3長壽命;4無輻射、無污染。 2.2軟件局部設(shè)計方案 軟件局部的設(shè)計思路時將整個程序劃分為鍵盤掃描局部、顯示局部、運算程序局部、清屏顯示局部。 對于其中的鍵盤掃描局部在編寫時又分為動態(tài)掃描和靜態(tài)掃描;運算程序局部包括加、減、乘、除四個子程序。 軟件流程大致如下:開始,然后是系統(tǒng)的初始化,進(jìn)行鍵盤掃描,對掃描的鍵值進(jìn)行判斷分為數(shù)字鍵和功能鍵,如果是數(shù)字鍵,執(zhí)行數(shù)字處理子程序,即顯示數(shù)字并將數(shù)值存儲;如果是命令鍵,即先判斷是否為清屏,如為清屏鍵,那么執(zhí)行清屏子程序,假設(shè)為加減

9、乘除運算鍵那么顯示相應(yīng)的符號并存儲結(jié)果,假設(shè)都不是那么為=鍵,即要先判斷上個符號位,然后調(diào)用對應(yīng)的運算子程序運算,就可以得到需要的結(jié)果。 ,其他位全部不顯示; 翩_?臣( 3 圖1 系統(tǒng)原理框圖 8位LCD顯示 局部 51系列單片機 時鐘電路和復(fù)位控制電路 4*4鍵盤 P 43. 系統(tǒng)的硬件總體設(shè)計 3.1 系統(tǒng)的總體硬件設(shè)計 硬件系統(tǒng)是指構(gòu)成微機系統(tǒng)的實際裝置,通常是由運算器、控制器、存儲器、輸入接口電路和輸入設(shè)備、輸出接口電路和輸出設(shè)備等組成。單片機實質(zhì)上是一個硬件的芯片,在實際應(yīng)用中,通常很難直接和被控對象進(jìn)行電氣連接,必須外加各種拓展接口電路、外部設(shè)備等才能構(gòu)成一個單片機應(yīng)用系統(tǒng)。 單

10、片機芯片選擇AT89C51,顯示區(qū)域使用顯示屏,鍵盤是4*4普通矩陣鍵盤,P0口接上拉電阻,芯片的P0口和P3口的前5腳接入數(shù)字顯示屏,鍵盤橫行AD接入單片機芯片AT89C51的后四個接口,鍵盤的豎行14那么分別接入單片機芯片AT89C51的P2口的前四個接口。另外12M Hz晶振接入單片機芯片AT89C51的XTAL1接口。 系統(tǒng)總接線圖如下: 圖2 系統(tǒng)硬件總接線圖 3.2 鍵盤連接電路 本設(shè)計之中使用的是4*4的普通鍵盤,我們可以使用其行列號來識別被按下的按鍵以此來獲知被按鍵的信息,因此將行輸出信號和列輸出信號分別接入單片機芯片C51的P2口,通過循環(huán)掃描,讀取行列的數(shù)據(jù)來判斷是否有按鍵

11、被按下,如果有那么調(diào)用按鍵識別程序來識別具體按鍵,并執(zhí)行相應(yīng)的操作,按鍵識別是根據(jù)按鍵時得到的列代碼與行代碼的結(jié)合,在匯編語言中進(jìn)行查表來判斷是哪個鍵。 5鍵盤如圖: 圖3 數(shù)字輸入鍵盤 3.3 顯示屏連接電路 如上所述,當(dāng)數(shù)字輸入鍵盤有鍵按下的時候,經(jīng)過程序識別,那么會有相應(yīng)結(jié)果被送入顯示屏得到顯示。如果是數(shù)字鍵那么直接放入液晶顯示緩沖區(qū),如果再次有數(shù)字鍵按下,那么應(yīng)將緩沖區(qū)的數(shù)字向高位移動一位,以構(gòu)成兩位數(shù),之前輸入的置之高位,并記錄按鍵次數(shù),每輸入一個鍵值都調(diào)用顯示程序出來;如果是運算符,那么執(zhí)行相應(yīng)的運算,送入單片機芯片C51內(nèi)進(jìn)行計算后將結(jié)果調(diào)用顯示程序顯示結(jié)果。 該設(shè)計中選取的是L

12、M0202型號液晶顯示屏,如下列圖: 6 圖4 液晶顯示屏 3.4 單片機芯片AT89C51 應(yīng)本次課程設(shè)計的要求,此設(shè)計之中選取的是C51芯片,取代了之前設(shè)計之中的pic芯片。芯片包含有一個8位CPU;一個片內(nèi)振蕩器及時鐘電路;4KB ROM程序存儲器;128B RAM數(shù)據(jù)存儲器;可尋址64KB外部數(shù)據(jù)存儲器和64KB外部程序存儲空間的控制電路;32條可編程的I/O線4個8位并行I/O端口;兩個16位的定時/計數(shù)器;一個可編程全雙工串行口;5個中斷源、兩個優(yōu)先級嵌套終端結(jié)構(gòu)。 芯片如下列圖: 6 7 圖5 單片機芯片AT89C51 3.5 外接電路 為了進(jìn)一步強化該設(shè)計的功能,所以在單片機芯

13、片C51外圍添加了時鐘脈沖芯片和復(fù)位電路,這樣就可以對其電路頻率進(jìn)行調(diào)節(jié)。這個電路當(dāng)中,是選取的是12M的晶振,對其兩頭電容接地,并一端接入芯片XALT1端口輸入,調(diào)節(jié)芯片內(nèi)部頻率。另外一端,高電平通過按鈕接入單片機芯片RST端口,并接一個電容和一個電阻,降低電流沖擊對芯片的影響。 時鐘脈沖電路和復(fù)位電路如下列圖: 構(gòu)。 芯片0賤殔 8 圖6 時鐘脈沖電路和復(fù)位電路 由此,就是由以上的鍵盤連接電路、顯示屏連接電路、外部電路和芯片共同構(gòu)成了整個設(shè)計的硬件結(jié)構(gòu)局部。 4.系統(tǒng)的軟件總體設(shè)計 編程語言當(dāng)中,匯編語言比擬接近底層,編程效率高;C語言那么語言靈活,在編寫算法中會比擬方便。但是我們在學(xué)習(xí)中

14、是學(xué)習(xí)的匯編語言,我們還是對于單片機的編程更加熟悉,盡管匯編語言在計算器中涉及到算法之中會比擬繁瑣,但是我們還是選擇匯編語言。 4.1 鍵盤識別程序設(shè)計 首先將P2口送0E0H,將P1口弦送1在讀P1口的數(shù)據(jù)當(dāng)P1口低四位全1時說明沒有鍵按下;再掃描下一行,如果P1口不是全1,那么說明有鍵按下,將P2口高四位和低四位組合成一個字節(jié),放入R5存放器中,通過延遲技術(shù)來進(jìn)行按鍵去抖,判斷按鍵是否松開,如松開那么將得到的鍵值進(jìn)行判斷是哪一個鍵。如果是數(shù)字鍵那么首先將其對應(yīng)的數(shù)字放入緩沖區(qū)30H,同時將鍵值放入結(jié)果緩沖區(qū),并調(diào)用顯示程序,顯示鍵值。在調(diào)用掃描鍵盤程序,如果再有鍵值輸入那么將原來的數(shù)值在顯

15、示屏高位依次移一位,將剛鍵入的數(shù)值放入最低位,并將原來的數(shù)值乘十加上剛鍵入的鍵值的數(shù)放入結(jié)果緩沖區(qū),然后調(diào)用顯示程序;如果是運算符,那么記錄運算符標(biāo)志,加法用01H表示,劍法使用02H表示,乘法使用03H表示,除法使用04H表示,并將結(jié)果緩沖區(qū)的數(shù)轉(zhuǎn)移到中間結(jié)果紅區(qū),將結(jié)果緩沖區(qū)清零,等待輸入運算數(shù)據(jù),當(dāng)按下等號時,根據(jù)記錄的運算符標(biāo)志,判斷運算類型,執(zhí)行運算將結(jié)果依次除以10取余數(shù)放入結(jié)果顯示緩沖區(qū),調(diào)用顯示程序。依次循環(huán)執(zhí)行。 鍵盤識別程序流程圖如下: q愜7-闌p屋_7M缷!0賁? 10 圖8 鍵盤掃描程序流程圖 掃描第一行 是否有鍵按下 掃描第四行 掃描第三行 掃描第二行 是否有鍵按下

16、 是否有鍵按下 是否有鍵按下 開始 結(jié)束 械鶻凇飧齙緶返敝+0資繀 11 4.2 顯示程序 顯示程序是將30H37H單元設(shè)置成液晶顯示屏顯示緩沖區(qū),分別存放各個位置的數(shù)據(jù),40H單元作為輸入數(shù)據(jù)的計數(shù)單元。因為運算結(jié)果超出范圍時應(yīng)采取報錯,使之顯示“error即可,將數(shù)字09和“error存入列表中,當(dāng)調(diào)用顯示程序時,顯示程序根據(jù)40H單元記錄的個數(shù)決定顯示位數(shù)。如果輸入錯誤將在數(shù)碼管上顯示“error。 這樣就得到了顯示程序的入口:30H37H,依次存放各位到千萬位;40H,存放輸出的數(shù)字位數(shù)。出口:數(shù)碼管,P0輸出字段碼P2輸出位選碼。 圖9 顯示程序流程圖 4.3 運算程序 運算程序分四

17、個模塊,即加減乘除。分別采用兩字節(jié)運算,因此運算結(jié)果不能超出亮開始 初始化R0緩沖區(qū)指針,R1位控制,RS循環(huán)控制次數(shù),R0=30H, R1=#80H, R5=40H 數(shù)碼管顯示 判斷顯示是否完畢? 完成 Y N 一起查找并改正錯誤,同時,教我們正確,0賌鰠 12字節(jié),否那么會溢出。溢出時顯示“error。 加法程序:入口是R0被加數(shù)低位字節(jié)地址指針,R1加數(shù)低位字節(jié)地址指針,R3字節(jié)數(shù)。出口R0和值地址指針,R3和值字節(jié)數(shù)。 運算時用R0、R1間接尋址,從低字節(jié)算起,高字節(jié)采用帶進(jìn)位加ADDC,計算結(jié)果回送到R0所指的單元中,并將和字節(jié)數(shù)放入R3單元中,如果R3大于3說明溢出。 減法程序同加

18、法類似,入口R0被減數(shù)低位字節(jié)地址指針,R1減數(shù)低位字節(jié)地址指針,R3字節(jié)數(shù)。出口R0差值低位字節(jié)地址指針,R3差值字節(jié)數(shù)。只是判斷溢出時通過CY位,如果運算后CY位有借位,那么將07H位置1,否那么置0. 乘法程序入口R3被乘數(shù)低位地址字節(jié),R2被乘數(shù)高位地址字節(jié),R7乘數(shù)低位地址字節(jié),R6乘數(shù)高位地址字節(jié)。出口R3,R5,R6,R7結(jié)果字節(jié)由高到低。通過判斷R5是否為零就可以知道運算結(jié)果是否溢出,如果溢出就顯示“error。 除法程序入口被除數(shù)放在R4R5R6R7,R4R5內(nèi)容為0,R4高R5低,除數(shù)放在R2R3,R2高R3低。出口商放在R6R7,R6高R7低,余數(shù)放在R4R5,R4高R5

19、低。 5.元器件清單及程序清單 5.1元器件清單 序號 名稱 型號 數(shù)量 1 滑動變阻器 3214G-1-100E 1 2 51系列單片機 AT89C51 1 3 按鈕 BUTTON 1 4 電容 CAP 22pF 2 5 電容 CAP-ELEC 20uF 1 6 晶振 CRYSTAL 12MHz 1 7 4*4鍵盤 KEYPAD-SMALLCALC 1 8 液晶顯示器 LM020L 1 9 電阻 RES 1k 1 10 上拉電阻 RESPACK-8 1 5.2程序清單 rs equ p1.5 ;確定具體硬件的連接方式 rw equ p1.6 ;確定具體硬件的連接方式 e equ p1.7 ;

20、lcd1602引腳 org 0h main: acall start mov p0,#8fh ;寫入顯示起始地址第一行第一個位置 acall enable ;調(diào)用寫入命令子程序 mov r0,#2fh 0R 13 mov 2fh,#30h mov r6,#1 acall write1 mov 55h,#0 ;運算方式標(biāo)志 main1: mov r0,#20h d: mov r0,#0 inc r0 cjne r0,#50h,d ;清理系統(tǒng)內(nèi)存 mov 50h,#0 ;被操作數(shù)的位數(shù) mov 51h,#0 ;操作數(shù)的位數(shù) mov 52h,#0 ;結(jié)果的位數(shù) mov 53h,#0 ; mov 58

21、h,#0 ;符號標(biāo)志位 d0: mov 56h,#0 mov r1,#50h mov 54h,#2fh sjmp test ;接收被操作數(shù) d1: mov a,50h cjne a,#0,d2 mov 50h,#1 acall start mov p0,#8fh acall enable mov r0,#2fh mov 2fh,#30h mov r6,#1 acall write1 d2: mov r1,#51h mov 54h,#3fh sjmp test test: mov p2,#0f0h mov a,p2 anl a,#0f0h ;anl :與 cjne a,#0f0h,have ;a

22、!=f0, sjmp have sjmp test have: mov a,#0feh next: mov b,a mov p2,a read: mov a,p2 anl a,#0f0h ;a=f0 cjne a,#0f0h,yes mov a,b rl a cjne a,#0efh,next yes:acall day mov a,p2 anl a,#0f0h cjne a,#0f0h,yes1 sjmp test yes1: mov r2,a mov a,b anl a,#0fh orl a,r2 ;orl 或 y0: cjne a,#0e7h,y1 ajmp main y1: cjne

23、a,#0d7h,y2 mov b,#31h ajmp cha y2: cjne a,#0b7h,y3 mov b,#34h ajmp cha y3: cjne a,#77h,y4 mov b,#37h ajmp cha y4: cjne a,#0ebh,y5 mov b,#30h ajmp cha y5: cjne a,#0dbh,y6 mov b,#32h ajmp cha y6: cjne a,#0bbh,y7 mov b,#35h ajmp cha y7: cjne a,#7bh,y8 mov b,#38h ajmp cha y8: cjne a,#0edh,y9 cjne r1,#50

24、h,y81 cjne r1,#0,y81 ajmp d0 y81:mov a,55h cjne a,#0,y82 ajmp d0 y82:mov a,5ah cjne a,#0,y87 mov a,51h cjne a,#0,y88 mov 51h,50h mov r0,#2fh mov r1,#3fh mov r2,#10h y83:mov a,r0 mov r1,a dec r0 dec r1 djnz r2,y83 mov a,55h cjne a,#1,y84 mov a,58h cjne a,#0ffh,y87 mov 55h,#2 sjmp y87 y84:cjne a,#2,y8

25、8 mov a,58h cjne a,#0ffh,y87 mov 55h,#1 sjmp y87 y88:mov a,55h cjne a,#3,y89 sjmp y85 y89:cjne a,#4,y87 y85:mov a,58h cjne a,#0ffh,y86 mov 59h,#0ffh y86:xrl a,59h mov 58h,a y87:acall suan ajmp d0 y9: cjne a,#0ddh,ya 骷撲恪?1.2根本功能: 首先,計算器可現(xiàn)實8位數(shù)字,開機運行時,只有數(shù)碼管最低位顯示為“0,其他位全部不顯示; 翩_?臣( 14 mov b,#33h ajmp ch

26、a ya: cjne a,#0bdh,yb mov b,#36h ajmp cha yb: cjne a,#7dh,yc mov b,#39h ajmp cha yc: cjne a,#0eeh,yd mov a,#1 mov 59h,#0 push acc acall f sjmp yg yd: cjne a,#0deh,ye mov a,#2 mov 59h,#0 push acc acall f sjmp yg ye: cjne a,#0beh,yf mov a,#3 mov 59h,#0 push acc acall f sjmp yg yf: mov a,#4 mov 59h,#0

27、push acc acall f yg: pop 55h mov 51h,#0 mov r0,#30h yg0:mov r0,#0 inc r0 cjne r0,#40h,yg0 ajmp d1 cha:mov a,56h cjne a,#0,cha6 sjmp cha0 cha6: cjne r1,#10,cha0 ajmp test cha0: mov 59h,#0 ;乘法和除法中用 cjne r1,#50h,cha2 mov 55h,#0 mov 58h,#0 mov a,56h cjne a,#0,cha2 mov 56h,#1 mov 50h,#0 mov r0,#20h cha1:

28、 mov r0,#0 inc r0 cjne r0,#30h,cha1 cha2: cjne r1,#1,cha3 mov r0,54h cjne r0,#30h,cha3 mov r0,#0 mov r1,#0 cha3: cjne r1,#51h,cha4 mov 5ah,#2 cha4: mov r2,#8 ;重要語句 cha5: mov a,54h subb a,r2 mov r0,a mov a,r0 dec r0 mov r0,a dec r2 inc r0 mov a,r0 cjne a,54h,cha5 mov r0,54h mov r0,b acall show ajmp t

29、est ; f: mov 5ah,#0 cjne r1,#50h,f3 mov 51h,#0 mov r0,#30h ff: mov r0,#0 inc r0 cjne r0,#40h,ff f2: pop dpl pop dpl mov dptr,#yg push dpl push dph ret f3: mov a,51h cjne a,#0,f4 sjmp f2 f4: acall suan ret show: acall start mov a,#8fh subb a,r1 mov p0,a ;寫入顯示起始地址第一行第一個位置 acall enable ;調(diào)用寫入命令子程序 mov a

30、,54h subb a,r1 mov r0,a inc r1 mov a,r1 mov r6,a acall write1 ret ;lcd1602局部 start: mov p0,#1h ;清屏并光標(biāo)復(fù)位 acall enable ;調(diào)用寫入命令子程序 mov p0,#8h ;設(shè)置顯示模式:8位2行5x7點陣 acall enable ;調(diào)用寫入命令子程序 mov p0,#0ch ;顯示器開、光標(biāo)關(guān) acall enable ;調(diào)瀃E枿RKb齹汻孴靣藌剉齹汻0T鰁(W緥剉菑z-N裇皊哊陙馷剉N硩KN 15用寫入命令子程序 mov p0,#6h ;文字不動,光標(biāo)自動右移 acall enabl

31、e ;調(diào)用寫入命令子程序 ret enable: clr rs ;寫入控制命令的子程序 clr rw clr e acall delay setb e ret write1: mov a,r0 lcall write2 ;調(diào)用寫入數(shù)據(jù)存放器子程序 inc r0 ;取碼指針加1 djnz r6,write1 ret write2: mov p0,a setb rs ;rs=1 clr rw ;rw=0準(zhǔn)備寫入數(shù)據(jù) clr e ;e=0執(zhí)行顯示命令 acall delay ;判斷液晶模塊是否忙?(用延時代替) setb e ;e=1 ret delay: mov r2,#2fh dl1:mov r

32、3,#0fh djnz r3,$ djnz r2,dl1 ret day:mov r2,#100 ;按鍵延時0.1s dl3:mov r3,#250 dl2:nop nop djnz r3,dl2 djnz r2,dl3 ret ;計算局部 suan: mov a,55h cjne a,#1,su0 mov a,58h cjne a,#0,su acall jiafa sjmp suan0 su: acall jianfa sjmp suan0 su0:cjne a,#2,su4 mov a,58h cjne a,#0,su1 acall jianfa sjmp suan0 su1:acall

33、 jiafa sjmp suan0 su4:cjne a,#3,su5 acall chengfa sjmp suan0 su5:acall chufa suan0: mov r0,50h cjne r0,#16,suan1 suan1: jc suan2 su6:mov r0,#20h su7:mov r0,#0 inc r0 cjne r0,#30h,su7 mov 2ah,#'E' mov 2bh,#'r' mov 2ch,#'r' mov 2dh,#'o' mov 2eh,#'r' mov 2fh,#

34、9;!' acall start mov p0,#80h mov r0,#20h mov r6,#10h acall write1 pop dpl pop dpl mov dptr,#main1 push dpl push dph ret suan2: mov 53h,#1 mov a,50h cjne a,#1,suan3 mov a,2fh cjne a,#30h,suan3 sjmp suan4 suan3: mov a,58h cjne a,#0ffh,suan4 mov a,#2fh subb a,50h mov r1,a mov r1,#'-' suan4:

35、 acall start mov p0,#80h mov r0,#20h mov r6,#16 acall write1 mov r1,#0 ret ;加法局部 jiafa: mov a,50h cjne a,51h,jia1 jia1: jc jia2 mov r2,50h mov 52h,50h sjmp jia3 jia2: mov r2,51h mov 52h,51h jia3: mov 54h,#2fh mov 57h,#3fh mov r1,#4fh e ;調(diào)瀃E枿RKb齹汻孴靣藌剉齹汻0T鰁(W緥剉菑z-N裇皊哊陙馷剉N硩KN 16jia4: mov r0,54h mov a,r

36、0 anl a,#0fh push acc mov r0,57h mov a,r0 anl a,#0fh pop b add a,b push acc mov a,r1 pop b add a,b acall bcd mov r1,b dec r1 mov r1,a dec 54h dec 57h djnz r2,jia4 mov a,#4fh subb a,52h mov r0,a cjne r0,#0,jia5 sjmp jia6 jia5: inc 52h jia6: acall jieguo ret jianfa: mov a,50h cjne a,51h,j3 j0: mov r2,

37、50h mov a,#2fh subb a,50h inc a mov r0,a add a,#10h mov r1,a j1: mov a,r0 subb a,r1 cjne a,#0,j2 inc r0 inc r1 djnz r2,j1 mov r0,#20h j5: mov r0,#0 inc r0 cjne r0,#2fh,j5 mov 58h,#0 mov 2fh,#30h mov 50h,#1 ret j2: mov a,r0 subb a,r1 j3: jnc j4 mov 54h,#3fh mov 57h,#2fh mov r1,#4fh mov r2,51h mov 52h

38、,51h mov a,58h cpl a mov 58h,a sjmp jian j4: mov 54h,#2fh mov 57h,#3fh mov r1,#4fh mov r2,50h mov 52h,50h jian: mov r0,57h mov a,r0 anl a,#0fh push acc pop b mov r0,54h mov a,r0 anl a,#0fh clr c push acc push b subb a,b push acc jnc jian3 pop b pop b pop acc add a,#10 subb a,b mov r1,a mov a,r2 mov

39、r3,a dec r3 mov r0,54h dec r0 jian1: clr c mov a,r0 anl a,#0fh push acc subb a,#1 push acc jnc jian2 clr c pop b pop acc add a,#10 subb a,#1 orl a,#30h mov r0,a dec r0 djnz r3,jian1 jian2: pop acc orl a,#30h mov r0,a pop b sjmp jian4 jian3: pop acc mov r1,a pop b pop b jian4: dec 54h dec 57h dec r1

40、djnz r2,jian lcall jieguo mov a,#2fh subb a,50h inc a ll start mov p0,#80h mov r0,#20h mov r6,#16 acall write1 mov r1,#0 ret ;加法局部 jiafa: mov a,50h cjne a,51h,jia1 jia1:'0賃? 17 mov r0,a jian5: cjne r0,#30h,jian6 mov r0,#0 dec 50h inc r0 cjne r0,#30h,jian5 jian6: ret ;乘法局部 chengfa: mov a,50h cjne

41、 a,#1,cheng4 mov a,2fh cjne a,#30h,cheng4 ret cheng4: mov a,51h cjne a,#1,cheng5 mov a,3fh cjne a,#30h,cheng5 mov 52h,#1 sjmp cheng cheng5: mov 57h,#3fh mov r2,#0 mov a,50h add a,51h mov 52h,a mov r3,51h cjne a,#17,cheng3 cheng3: jc cheng mov 50h,#16 ret cheng: mov 54h,#2fh mov r1,#4fh mov a,r1 clr

42、c subb a,r2 mov r1,a mov r4,50h cheng0: mov r0,54h mov a,r0 anl a,#0fh push acc mov r0,57h mov a,r0 anl a,#0fh pop b mul ab push acc mov a,r1 pop b add a,b lcall bcd mov r1,b dec r1 push acc mov a,r1 pop b add a,b mov r1,a dec 54h djnz r4,cheng0 dec 57h inc r2 djnz r3,cheng dec 52h mov a,#4fh subb a

43、,52h mov r0,a cjne r0,#0,cheng1 sjmp cheng2 cheng1: inc 52h cheng2: lcall jieguo ret ;除法局部 chufa: mov a,51h cjne a,#1,chuf mov a,3fh cjne a,#30h,chuf mov 50h,#16 ret chuf: mov a,50h cjne a,#1,chu mov a,2fh cjne a,#30h,chu mov 2fh,#30h mov 58h,#0 sjmp chu2 chu:mov a,50h cjne a,51h,chu5 mov a,#2fh sub

44、b a,50h inc a mov r0,a add a,#10h mov r1,a mov r2,50h chu0: mov a,r0 mov 5bh,r1 cjne a,5bh,chu5 inc r0 inc r1 djnz r2,chu0 mov 2fh,#31h chu2: mov r0,#20h chu3: mov r0,#0 inc r0 cjne r0,#2fh,chu3 mov 50h,#1 ret chu5: jnc chu6 mov 2fh,#30h mov 58h,#0 sjmp chu2 chu6: mov a,50h subb a,51h inc a mov r4,a

45、 mov 5ch,a chu7: mov a,r4 ite1 mov r1,#0 ret ;加法局部 jiafa: mov a,50h cjne a,51h,jia1 jia1:* 18 dec a mov r5,a cjne r5,#0,chu9 sjmp chu11 chu9: mov r0,#31h chu10: mov a,r0 dec r0 mov r0,a inc r0 inc r0 cjne r0,#40h,chu10 mov 3fh,#30h djnz r5,chu9 sjmp chu11 chu19: mov r0,#3fh chu20: dec r0 mov a,r0 in

46、c r0 mov r0,a dec r0 cjne r0,#2fh,chu20 mov 30h,#0 chu11: mov r0,#21h mov r1,#31h chu12: mov a,r0 mov 5bh,r1 cjne a,5bh,chu13 inc r0 inc r1 cjne r0,#30h,chu12 mov a,#70h subb a,r4 mov r0,a inc r0 sjmp chu15 chu13: jc chu14 mov a,#70h subb a,r4 mov r0,a inc r0 lcall j4 sjmp chu11 chu14: djnz r4,chu19 chu15: mov r0,#4fh mov r1,#6fh chu16: mov a,r1 mov r0,a mov r1,#0 dec r0 dec r1 cjne r0,#40h,chu16 mov 52h,5ch dec 52h mov a,#4fh subb a,52h mov r0,a cjne r0,#0,chu17 sjmp chu18 chu17: inc 52h chu18: mov r0,#2fh chu21: mov r0,#0 dec r0 cjne r0,#1fh,chu

溫馨提示

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

評論

0/150

提交評論