版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 單片機(jī)課程設(shè)計(jì)報(bào)告十進(jìn)制加法計(jì)算器設(shè)計(jì) 學(xué)院:物理與微電子科學(xué)學(xué)院 班級:- 姓名:- 學(xué)號:- 單片機(jī)課程設(shè)計(jì)報(bào)告 目錄1、摘 要-22、設(shè)計(jì)任務(wù)和要求-23、單片機(jī)簡要原理-3 3.1 at89c51的介紹-3 3.2 單片機(jī)最小系統(tǒng)-8 3.3 七段共陽極數(shù)碼管-9 4、硬件設(shè)計(jì)-9 4.1 鍵盤電路的設(shè)計(jì)-9 4.2 顯示電路的設(shè)計(jì)-115、 軟件設(shè)計(jì)-12 5.1 系統(tǒng)設(shè)計(jì)-12 5.2 顯示與按鍵設(shè)計(jì)-146、 系統(tǒng)調(diào)試.-226.1系統(tǒng)初始狀態(tài)的調(diào)試-22 6.2鍵盤輸入功能的調(diào)試-23 6.3系統(tǒng)運(yùn)算功能的調(diào)試-257、心得體會-26參考文獻(xiàn)-29附錄 系統(tǒng)硬件電路圖-29-
2、1、摘要 近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動傳統(tǒng)控制檢測技術(shù)日益更新。在實(shí)時(shí)檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來使用,僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。 本設(shè)計(jì)是實(shí)現(xiàn)兩位數(shù)的加減運(yùn)算的簡易計(jì)算器,實(shí)現(xiàn)鍵盤輸入,由七段led數(shù)碼管輸出;程序都是根據(jù)教材內(nèi)和網(wǎng)絡(luò)中的程序參考編寫而成,在功能上還并不十分完善,限制也較多。本設(shè)計(jì)重在設(shè)計(jì)構(gòu)思,使得我們用專業(yè)知識、專業(yè)技能分析和解決問題,通過設(shè)計(jì)使得我們對所學(xué)知識徹底鞏固。2、設(shè)計(jì)任務(wù)和要求本次課程設(shè)計(jì),我選題是單片機(jī)十進(jìn)制加法計(jì)算器軟設(shè)計(jì) ,設(shè)計(jì)任務(wù)為: 設(shè)計(jì)一鍵盤顯
3、示裝置,鍵盤上除需定義10個(gè)十進(jìn)制數(shù)字鍵外還要相應(yīng)的功能鍵,其它鍵不定義無響應(yīng)。利用此系統(tǒng)可分別可輸入十進(jìn)制被加數(shù)與加數(shù),實(shí)現(xiàn)兩數(shù)相加并將結(jié)果以十進(jìn)制形式顯示出來。(擴(kuò)展:多位10進(jìn)制數(shù)相加) 本課程設(shè)計(jì)的十進(jìn)制加法計(jì)算器的計(jì)算范圍為0255,計(jì)算結(jié)果全為整數(shù),計(jì)算結(jié)果溢出結(jié)果不顯示。 1、加法:三位加法,計(jì)算結(jié)果超過255溢出不顯示 2、減法:三位減法,計(jì)算結(jié)果若小于零溢出不顯示 3、乘法:三位數(shù)乘法 4、除法:整數(shù)除法 5、有清零功能3、 單片機(jī)簡要原理 在該課程設(shè)計(jì)中,主要用到一個(gè)at89c51芯片和串接的共陰數(shù)碼管。作為該設(shè)計(jì)的主要部分,下面將對它們的原理及功能做詳細(xì)介紹和說明。3.1
4、 at89c51的介紹: 圖一 at89c51外形結(jié)構(gòu)和引腳分布圖芯片at89c51的外形結(jié)構(gòu)和引腳圖如圖一所示。at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(fperomfalsh programmable and erasable read only memory)的低電壓,高性能cmos8位微處理器,俗稱單片機(jī)。該器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個(gè)芯片中,atmel的at89c51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。其功能特性描述:a
5、t89c51單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。at89c52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,256字節(jié)ram, 32 位i/o 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路,8 位微控制器 8k 字節(jié)在系統(tǒng)可編程 flash rom。p0 口:p0口是一個(gè)8位漏極開路的雙向i/o口。作為輸出口,每位能驅(qū)動8個(gè)ttl邏 輯電平。對p0端口寫“1”時(shí),引腳用作高阻抗輸入端用。 在訪問外部數(shù)據(jù)存儲器或程序存儲器時(shí),p0口被分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。 在flash 編程時(shí),
6、p0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。 p1 口:p1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向i/o 口,p1 輸出緩沖器能驅(qū)動4 個(gè)ttl 邏輯電平。對p1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會輸出一個(gè)電流(iil)。 此外,p1.0和p1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(p1.0/t2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(p1.1/t2ex),具體如下表所示。在flash編程和校驗(yàn)時(shí),p1口接收低8位地址字節(jié)。 p1端口引腳號第二功能: p1.0 t2(定時(shí)器/
7、計(jì)數(shù)器t2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 p1.1 t2ex(定時(shí)器/計(jì)數(shù)器t2的捕捉/重載觸發(fā)信號和方向控制) p2 口:p2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個(gè)ttl邏輯門電路。對端口p2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會輸出一個(gè)電流(iil)。 在訪問外部程序存儲器或16 位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行movx dptr 指令)時(shí),p2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行movx ri 指令)時(shí),p2 口輸出
8、p2 鎖存器的內(nèi)容。 flash 編程或校驗(yàn)時(shí),p2亦接收高位地址和一些控制信號。p3 口:p3 口是一組帶有內(nèi)部上拉電阻的8 位雙向i/o 口。p3 口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個(gè)ttl 邏輯門電路。對p3 口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的p3 口將用上拉電阻輸出電流(iil)。 p3 口還接收一些用于flash 閃速存儲器編程和程序校驗(yàn)的控制信號。 p3 口除了作為一般的i/o 口線外,更重要的用途是它的第二功能。p3口亦作為at89c52特殊功能(第二功能)使用,如下所示。 在flash編程和校驗(yàn)時(shí),p3口也接收一些控制信號。 p3端
9、口引腳第二功能:p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 into(外中斷0)p3.3 int1(外中斷1)p3.4 to(定時(shí)/計(jì)數(shù)器0)p3.5 t1(定時(shí)/計(jì)數(shù)器1)p3.6 wr(外部數(shù)據(jù)存儲器寫選通)p3.7 rd(外部數(shù)據(jù)存儲器讀選通)rst復(fù)位輸入。當(dāng)振蕩器工作時(shí),rst引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。ale/prog當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時(shí),ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ale仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器
10、時(shí)將跳過一個(gè)ale脈沖。對flash存儲器編程期間,該引腳還用于輸入編程脈沖(prog)。如有必要,可通過對特殊功能寄存器(sfr)區(qū)中的8eh單元的d0位置位,可禁止ale操作。該位置位后,只有一條movx和movc指令才能將ale激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ale禁止位無效。psen程序儲存允許(psen)輸出是外部程序存儲器的讀選通信號,當(dāng)at89c52由外部程序存儲器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次psen有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次psen信號。ea/vpp外部訪問允許,欲使cpu僅訪問外部程序存儲器(地址為00
11、00h-ffffh),ea端必須保持低電平(接地)。需注意的是:如果加密位lb1被編程,復(fù)位時(shí)內(nèi)部會鎖存ea端狀態(tài)。如ea端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲器的指令。flash存儲器編程時(shí),該引腳加上+12v的編程允許電源vpp,當(dāng)然這必須是該器件是使用12v編程電壓vpp。引腳使用說明:i/o端口的編程實(shí)際上就是根據(jù)應(yīng)用電路的具體功能和要求對i/o寄存器進(jìn)行編程。具體步驟如下:l. 根據(jù)實(shí)際電路的要求,選擇要使用哪些i/o端口。2. 初始化端口的數(shù)據(jù)輸出寄存器,應(yīng)避免端口作為輸出時(shí)的開始階段出現(xiàn)不確定狀態(tài),影響外圍電路正常工作。3. 根據(jù)外圍電路功能,確定po端口的方向,初始
12、化端口的數(shù)據(jù)方向寄存器。對于用作輸入的端口可以不考慮方向初始化,因?yàn)閜o的復(fù)位缺省值為輸入。4. 用作輸入的po管腳,需上拉電阻。5. 最后對i/o端口進(jìn)行輸出(寫數(shù)據(jù)輸出寄存器)和輸入(讀端口)編程,完成對外圍電路的相應(yīng)功能。3.2 單片機(jī)最小系統(tǒng) 單片機(jī)最小系統(tǒng)就是支持主芯片正常工作的最小部分,包括主控芯片、復(fù)位電路和晶振電路。 (一) 復(fù)位電路 圖二 復(fù)位電路 本設(shè)計(jì)采用上電與手動復(fù)位電路,電阻分別選取100和10k,電容選取10uf,系統(tǒng)一上電,芯片就復(fù)位,或者中途按按鍵也可以進(jìn)行復(fù)位。(2) 晶振電路 圖三 晶振電路晶振電路是單片機(jī)的心臟,它用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號。單片機(jī)
13、的晶振選取11.0592mhz,晶振旁電容選取30pf。3.3 七段共陽極數(shù)碼管 圖四 七段共陽數(shù)碼管 圖為七段共陽數(shù)碼管的引腳圖,從左到右數(shù)碼管的段碼分別為a,b,c,d,e,f,g和小數(shù)點(diǎn)dp,低電平時(shí)點(diǎn)亮,最右邊為位選端。4、硬件設(shè)計(jì) 簡易數(shù)字計(jì)算器系統(tǒng)硬件設(shè)計(jì)主要包括:鍵盤電路,顯示電路以及其他輔助電路。下面分別進(jìn)行設(shè)計(jì)。 4.1 鍵盤電路的設(shè)計(jì) 鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個(gè)以上)和專用驅(qū)動芯片的組合,當(dāng)按下某個(gè)按鍵時(shí),它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預(yù)。通用計(jì)算機(jī)使用的標(biāo)準(zhǔn)鍵盤就是編碼鍵盤。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵
14、數(shù)量很多時(shí),采用編碼鍵盤可以簡化軟件設(shè)計(jì)。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不太多(20個(gè)以內(nèi)),為了降低成本和簡化電路通常采用非編碼鍵盤。非編碼鍵盤的接口電路有設(shè)計(jì)者根據(jù)需要自行決定,按鍵信息通過接口軟件來獲取。本課題需要的是16個(gè)按鍵,故選擇用非編碼鍵盤。計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會很簡單,但是會占用大量的i/o 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條i/o 線作為行線,四條i/o 線作為列線組成鍵盤,在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤上按鍵的個(gè)數(shù)就為44個(gè)。這種行列式
15、鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中i/o 口的利用率。矩陣鍵盤的工作原理:計(jì)算器的鍵盤布局如圖五所示:一般有16個(gè)鍵組成,在單片機(jī)中正好可以用一個(gè)p口實(shí)現(xiàn)16個(gè)按鍵功能,這種形式在單片機(jī)系統(tǒng)中也最常用。具體電路連接如圖五所示: 圖五 4*4鍵盤接口電路4.2 顯示電路的設(shè)計(jì) 當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時(shí),采用led數(shù)碼管進(jìn)行顯示是一種經(jīng)濟(jì)實(shí)用的方法。數(shù)碼管顯示有靜態(tài)顯示和動態(tài)顯示兩種方法。為了減少端口的使用,故選擇動態(tài)顯示。 電路如下圖六所示: 圖六 三位數(shù)碼管的顯示電路5、 軟件設(shè)計(jì)在十進(jìn)制加法計(jì)算器的軟件規(guī)劃要求下,簡易計(jì)算器的程序主要包括以下功能模塊:(1) 主模塊,為系統(tǒng)的初始化。(2)顯示
16、與讀鍵模塊,分為判鍵程序段、運(yùn)算操作子程序、顯示子程序等部分;5.1系統(tǒng)設(shè)計(jì)(一) 系統(tǒng)模塊圖 圖七 系統(tǒng)模塊圖 此系統(tǒng)包括晶振電路、復(fù)位電路、led顯示電路、矩陣按鍵電路運(yùn)算法則指示燈以及單片機(jī)。其中通過輸入鍵盤模塊將數(shù)字09和運(yùn)算符號“+”、“-”、“*”、“/”輸入單片機(jī)進(jìn)行運(yùn)算;運(yùn)算模塊分別根據(jù)輸入的運(yùn)算符進(jìn)行加減乘除運(yùn)算;顯示模塊將運(yùn)算后的數(shù)值通過動態(tài)掃描使之在數(shù)碼管上輸出。(2) 系統(tǒng)總流程圖主程序主要是用來進(jìn)行初始化的,調(diào)用其他子程序,清空各個(gè)標(biāo)志位,清空緩存區(qū),讀取鍵碼,判斷功能,在led上作出回應(yīng),主程序流程圖如圖六所示。(1)數(shù)字送顯示緩沖程序設(shè)計(jì)簡易計(jì)算器所顯示的數(shù)值最大
17、位三位。要顯示數(shù)值,先判斷數(shù)值大小和位數(shù),如果是超過三位或大于255,將不顯示數(shù)字??芍匦螺斎霐?shù)字,再次計(jì)算。(2)運(yùn)算程序的設(shè)計(jì)首先初始化參數(shù),送led三位顯示“0”,其它位不顯示。然后掃描鍵盤看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是功能鍵,是數(shù)值鍵則送led顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運(yùn)算鍵,若是“=”則計(jì)算最后結(jié)果并送led顯示,若是運(yùn)算鍵則保存相對運(yùn)算程序的首地址。5.2 顯示與按鍵設(shè)計(jì)(1) led顯示程序設(shè)計(jì) led顯示器由七段發(fā)光二極管組成,排列成8字形狀,因此也稱為七段led顯示器。為了顯示數(shù)字或符號,要為led顯示器提
18、供代碼,即字形代碼。七段發(fā)光二極管,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供的字形代碼的長度正好是一個(gè)字節(jié)。簡易計(jì)算器用到的數(shù)字09的共陽極字形代碼如下表:顯示字型gfedcba段碼001111110c0h100001100f9h210110110a4h310011110b0h4110011099h5110110192h6111110182h700001110f8h8111111180h9110111190h 表一 共陽極數(shù)碼管段碼對照表(2) 讀鍵子程序設(shè)計(jì)為了實(shí)現(xiàn)鍵盤的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有其處理子程序,為此每個(gè)鍵都對應(yīng)一個(gè)碼鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識別按鍵
19、。其程序框圖如圖八:讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤矩陣的規(guī)模大小,均進(jìn)行兩次讀鍵。第一次所有列線均輸出低電平,從所有讀入鍵盤信息(行信息);第二次所有行線均輸出低電平,從所有行線讀入鍵盤信息(列信息)。將兩次讀鍵信息進(jìn)行組合就可以得到按鍵的特征編碼,然后通過查表得到按鍵的順序編碼。將各特征編碼按希望的順序排成一張表,然后用當(dāng)前讀得的特征碼來查表。當(dāng)表中有該特征碼時(shí),它的位置就是對應(yīng)的順序編碼;當(dāng)表中沒有該特征碼時(shí),說明這是一個(gè)沒有定義的鍵碼,與沒有按鍵(0ffh)同等看待。 (3) 流程圖 圖八 計(jì)算鍵值子程序流程圖(4) 源程序result equ60h result1 equ61h
20、functionkey equ62h org 00hstart:mov r3,#0 mov functionkey,#0mov 32h,#00hmov 33h,#00hmov 34h,#00hmloop:call disp ;調(diào)顯示子程序wait:call testkey ;判斷有無按鍵jz wait call getkey ;讀鍵inc r3 ;按鍵個(gè)數(shù)cjne a,#0,next1 ;判斷是否數(shù)字鍵ljmp e1 ;轉(zhuǎn)數(shù)字鍵處理next1:cjne a,#1,next2ljmp e1next2:cjne a,#2,next3ljmp e1next3:cjne a,#3,next4ljmp
21、e1next4:cjne a,#4,next5ljmp e1next5:cjne a,#5,next6ljmp e1next6:cjne a,#6,next7ljmp e1next7:cjne a,#7,next8ljmp e1next8:cjne a,#8,next9ljmp e1next9:cjne a,#9,next10ljmp e1next10:cjne a,#10,next11 ;判斷是否功能鍵ljmp e2 ;轉(zhuǎn)功能鍵處理next11:cjne a,#11,next12ljmp e2next12:cjne a,#12, next13ljmp e2next13:cjne a,#13,
22、next14ljmp e2next14:cjne a,#14,next15ljmp e2next15:ljmp e3 ;判斷是否清除鍵e1:cjne r3,#1,n1 ;判斷第幾次按鍵ljmp e11 ;為第一個(gè)數(shù)字n1:cjne r3,#2,n2ljmp e12 ;為第二個(gè)數(shù)字n2:cjne r3,#3,n3 ljmp e13 ;為第三個(gè)數(shù)字n3:ljmp e3 ;第四個(gè)數(shù)字轉(zhuǎn)溢出e11:mov r4,a ;輸入值暫存r4mov 34h,a ;輸入值送顯示緩存mov 33h,#00hmov 32h,#00hljmp mloop ;等待再次輸入e12: mov r7,a ;個(gè)位數(shù)暫存r7mov
23、 b,#10mov a,r4mul ab ;十位數(shù)adda,r7mov r4,a ;輸入值存r4mov 32h,#00h ;輸入值送顯示緩存mov 33h,34hmov 34h,r7ljmp mloope13:mov r7,amov b,#10mov a,r4mul abjb ov,e3 ;輸入溢出add a,r7jb cy,e3 ;輸入溢出mov r4,amov 32h,33h;輸入值送顯示緩存mov 33h,34hmov 34h,r7ljmp mloope3:mov r3,#0 ;按鍵次數(shù)清零mov r4,#0 ;輸入值清零mov result,#0 ;計(jì)算結(jié)果清零mov function
24、key,#0 ;功能鍵設(shè)為零 mov 32h,#00h;顯示清空mov 33h,#00hmov 34h,#00hljmp mloope2:mov 34h,#00hmov 33h,#00hmov 32h,#00hmov r0,functionkey ;與上次功能鍵交換mov functionkey,amov a,r0cjne a,#10,n21 ;判斷功能鍵ljmp jia ;n21: cjne a,#11,n22ljmp jian ;n22: cjne a,#12,n23ljmp cheng ;*n23:cjne a,#13,n24ljmp chu ;/n24:cjne a,#0,n25ljm
25、p first ;首次按功能鍵n25:ljmp den ;=n4:ljmp e3first:mov result,r4 ;輸入值送結(jié)果mov r3,#0 ;按鍵次數(shù)清零ljmp disp1 ;結(jié)果處理jia:mov a,result;上次結(jié)果送累加器add a,r4;上次結(jié)果加輸入值jb cy,n4;溢出mov result,a;存本次結(jié)果mov r3,#0;按鍵次數(shù)清零ljmp disp1jian:mov a,resultsubb a,r4;上次結(jié)果減輸入值jb cy,n4;負(fù)數(shù)溢出mov result,amov r3,#0ljmp disp1cheng:mov a,resultmov b,
26、amov a,r4mul ab;上次結(jié)果乘輸入值jb ov,n4;溢出mov result,aljmp disp1chu:mov a,r4mov b,amov a,resultdiv ab;上次結(jié)果除輸入值mov result,amov r3,#0ljmp disp1den:mov r3,#0ljmp disp1disp1:movb,#10mova,result;結(jié)果送累加器divab;結(jié)果除10movresult1,a;暫存商mova,b;取個(gè)位數(shù)mov34h,a;個(gè)位數(shù)送顯示緩存mova,result1jzdisp11;結(jié)果是否為一位數(shù)movb,#10mova,result1divabmo
27、vresult1,amova,bmov33h,a;十位送顯示緩存mova,result1jzdisp11;結(jié)果是否為二位數(shù)mov32h,a;百位數(shù)送顯示緩存disp11:ljmpmloopdisp: mov r0,#34hdir1: mov dptr,#segtab mov a,r0 movc a,a+dptr mov p0,a cjne r0,#34h,dir2 setb p2.0 call d1ms clr p2.0 dec r0 sjmp dir1dir2: cjne r0,#33h,dir3 setb p2.1 call d1ms clr p2.1 dec r0 sjmp dir1di
28、r3: setb p2.2 call d1ms clr p2.2 retd1ms: mov r7,#02hdms: mov r6,#0f0h djnz r6,$djnz r7,dms retsegtab:db 0c0h, 0f9h, 0a4h, 0b0h db 99h, 92h, 82h, 0f8h db 80h, 90h, 88h, 83h db 0c6h, 0a1h, 86h, 8ehtestkey:acall dispmovp1,#0fh;讀入鍵狀態(tài)mova,p1cplaanla,#0fh;高四位不用retkeytable:db0eeh,0edh,0ddh,0bdh;鍵碼定義db0ebh
29、,0dbh,0bbh,0e7hdb0d7h,0b7h,0deh,0behdb07eh,07dh,07bh,077hgetkey:movr6,#10;讀鍵子程序acalldelaymovp1,#0fhmova,p1cjnea,0fh,k12ljmpmloopk12: movb,amovp1,#0efhmova,p1cjnea,#0efh,k13movp1,#0dfhmova,p1cjnea,#0dfh,k13movp1,#0bfhmova,p1cjnea,#0bfh,k13movp1,#07fhmova,p1cjnea,#07fh,k13ljmpmloopk13: anl a,#0f0horla
30、,bmovb,amovr1,#16movr2,#0movdptr,#keytablek14:mova,r2movca,a+dptrcjnea,b,k16movp1,#0fhk15:mova,p1cjnea,#0fh,k15movr6,#10acalldelaymova,r2retk16:incr2djnzr1,k14ajmpmloop ;10ms延時(shí)子程序delay:movr7,#10ts1: mov r6,#0ffhts2:nopnop djnzr6,ts2djnzr7,ts1retend6系統(tǒng)調(diào)試 6.1系統(tǒng)初始狀態(tài)的調(diào)試 系統(tǒng)初始狀態(tài)時(shí),2個(gè)led顯示器顯示“0”,運(yùn)算法則指示燈全滅。調(diào)
31、試結(jié)果如圖9所示。圖9 系統(tǒng)初始狀態(tài)調(diào)試結(jié)果6.2鍵盤輸入功能的調(diào)試通過鍵盤分別輸入“8”、“*”、“9”,led顯示電路和運(yùn)算法則指示電路分別顯示相應(yīng)的結(jié)果。調(diào)試結(jié)果如圖11所示。(a)輸入“8”(b)輸入“*”(c)輸入“9”圖10 鍵盤輸入功能調(diào)試結(jié)果6.3系統(tǒng)運(yùn)算功能的調(diào)試當(dāng)輸入“8”、“*”、“9”后,點(diǎn)擊“=”可得到運(yùn)算結(jié)果“72”,并通過led顯示電路顯示。調(diào)試結(jié)果如圖11所示。圖11 系統(tǒng)運(yùn)算功能調(diào)試結(jié)果7、 心得體會 單片機(jī)課程設(shè)計(jì)終于結(jié)束了,通過緊張的工作,完成了我的設(shè)計(jì)任務(wù)-十進(jìn)制加法計(jì)算器??偟膩碚f,這次課程設(shè)計(jì)是比較成功的。當(dāng)然,這其中也經(jīng)歷了許多坎坷,但是在我的堅(jiān)持
32、不懈下,在老師的細(xì)心指導(dǎo)下,在同學(xué)們的熱情幫助下,最終克服了種種困難,取得了成功。 起初我還想從老師所給的四個(gè)單片機(jī)課程設(shè)計(jì)題目中選擇一題,后來發(fā)覺自己自己對計(jì)算器挺感興趣的,所以就決定利用自己所學(xué)的單片機(jī)知識自己做一個(gè)計(jì)算器。但由于以前從未做過像這種軟硬件相結(jié)合的設(shè)計(jì),所以我請教了好幾個(gè)有參加電子競賽的同學(xué)并且在網(wǎng)上和圖書館查閱了不少的有關(guān)于單片機(jī)課程設(shè)計(jì)的文獻(xiàn)以及計(jì)數(shù)器的相關(guān)資料。我在了解計(jì)算機(jī)所需要的主體硬件之后決定編寫程序,在此過程中,其中鍵盤掃描和動態(tài)掃描顯示掃描程序困擾了我很久,經(jīng)過三四天的辛苦工作,終于初步把所需要的程序編好了,于是keil 開始進(jìn)行仿真,在仿真期間也發(fā)現(xiàn)了許多錯誤
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑公司供應(yīng)鏈合作協(xié)議書
- 貴重物品管理制度包括哪些內(nèi)容(5篇)
- 海洋工程施工安全協(xié)議書
- 延期還款協(xié)議
- 主通風(fēng)機(jī)司機(jī)安全技術(shù)操作規(guī)程有哪些(11篇)
- 2024年中國輕型細(xì)水霧消防車市場調(diào)查研究報(bào)告
- 2024年中國自動弧長控制器市場調(diào)查研究報(bào)告
- 2024年中國氨基漆市場調(diào)查研究報(bào)告
- 2024至2030年智能高效節(jié)電系統(tǒng)項(xiàng)目投資價(jià)值分析報(bào)告
- 2024年銅鎳電阻合金絲項(xiàng)目可行性研究報(bào)告
- 小記者第一課我是一名小記者
- 團(tuán)結(jié)友愛和睦相處主題班會
- 2024年采購部年度工作總結(jié)
- 2024年總經(jīng)理聘任書
- 2024年江蘇省中等職業(yè)學(xué)校學(xué)生學(xué)業(yè)水平考試機(jī)械CAD繪圖評分表
- 期中 (試題) -2024-2025學(xué)年外研版(三起)英語六年級上冊
- 中小學(xué)教師職業(yè)道德規(guī)范(2023年修訂)全文1500字
- 2024年車路云一體化系統(tǒng)建設(shè)與應(yīng)用指南報(bào)告
- 2024年福建省托育服務(wù)職業(yè)技能競賽理論考試題庫(含答案)
- 2024下半年江蘇蘇州城市學(xué)院招聘管理崗位工作人員27人歷年(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
- 二年級乘除法口算題大全500題(可直接打印)
評論
0/150
提交評論