




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄概述系統(tǒng)軟件設(shè)計(jì)TOC\o"1-5"\h\z\o"CurrentDocument"2.1設(shè)計(jì)目標(biāo)和實(shí)現(xiàn)方法1\o"CurrentDocument"2.2整體方案論證1\o"CurrentDocument"系統(tǒng)硬件的設(shè)計(jì)2.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.???.\o"CurrentDocument"3.1復(fù)位電路的設(shè)計(jì)2\o"CurrentDocument"3,2時(shí)鐘振蕩器電路的設(shè)計(jì)3\o"CurrentDocument"3,3輸入電路的設(shè)計(jì)4\o"CurrentDocument"3?4輸出電路的設(shè)計(jì)74?系統(tǒng)程序的設(shè)計(jì)與介紹\o"CurrentDocument"4?1讀鍵輸入程序流程圖設(shè)計(jì)9\o"CurrentDocument"4般LED顯示程序流程圖設(shè)計(jì)114*主程序流程圖設(shè)計(jì)12%程序設(shè)計(jì)體會???????????????????????????????????????????12附1源程序代碼14附2計(jì)算器電路圖241.概述隨著社會的發(fā)展,科學(xué)的進(jìn)步,人們的生活水平在逐步地提高,尤其是微電子技術(shù)的發(fā)展猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了。計(jì)算器在人們的日常中是比較常見的電子產(chǎn)品之一,如何使計(jì)算器技術(shù)更加的成熟,充分利用已有的軟件和硬件條件,設(shè)計(jì)出更出色的計(jì)算器,使其更好地為各個行業(yè)服務(wù),成了如今電子領(lǐng)域重要的研究課題。現(xiàn)如今,人們的日常生活中已經(jīng)離不開計(jì)算器了,社會的各個角落都有它的身影,比如商店、辦公室、學(xué)?!虼嗽O(shè)計(jì)一款簡單實(shí)用的計(jì)算器會有很大的實(shí)際意義。本設(shè)計(jì)旨在進(jìn)一步掌握單片機(jī)理論知識,理解嵌入式單片機(jī)系統(tǒng)的硬軟件設(shè)計(jì),加強(qiáng)對實(shí)際應(yīng)用系統(tǒng)設(shè)計(jì)的能力。通過本設(shè)計(jì)的學(xué)習(xí),使我掌握單片機(jī)程序設(shè)計(jì)和微機(jī)接口應(yīng)用的基本方法,并能綜合運(yùn)用本科階段所學(xué)軟、硬件知識分析實(shí)際問題,提高解決畢業(yè)設(shè)計(jì)實(shí)際問題的能力,為單片機(jī)應(yīng)用和開發(fā)打下良好的基礎(chǔ)。1、對字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調(diào)用及外特性有較清楚的認(rèn)識,并會使用LCD(液晶顯示模塊)實(shí)現(xiàn)計(jì)算結(jié)果的顯示;掌握液晶顯示模塊的驅(qū)動和編程,設(shè)計(jì)LCD和單片機(jī)的接口電路,以及利用單片機(jī)對液晶顯示模塊的驅(qū)動和操作;2、在充分分析內(nèi)部邏輯的概念,進(jìn)行軟件和調(diào)試,學(xué)會使用,并能夠以其為平臺設(shè)計(jì)出具有四則運(yùn)算能力簡易計(jì)算器的硬件電路和軟件程序。系統(tǒng)軟件設(shè)計(jì)2.1設(shè)計(jì)目標(biāo)和實(shí)現(xiàn)方法為了滿足簡易計(jì)算器的基本要求,可以進(jìn)行基本的加、減、乘、除運(yùn)算以及數(shù)據(jù)歸零操作,我們采用基于51單片機(jī)設(shè)計(jì)計(jì)算器,并用七段共陰極LED數(shù)碼管顯示數(shù)據(jù),4*4的矩陣鍵盤實(shí)現(xiàn)數(shù)據(jù)的輸入。2.2整體方案論述根據(jù)簡單計(jì)算器的功能和本方案中的設(shè)計(jì)指標(biāo)要求,本系統(tǒng)選用了MCS51單片機(jī)為主控機(jī)。通過擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對簡單計(jì)算器的設(shè)計(jì)。具體設(shè)計(jì)考慮如下:由于要設(shè)計(jì)的是簡單的計(jì)算器,可以進(jìn)行基本的四則運(yùn)算,對數(shù)字的大小范圍要求不高,故我們采用可以進(jìn)行四位數(shù)字的運(yùn)算,選用8個LED數(shù)碼管顯示數(shù)據(jù)和運(yùn)算結(jié)果。另外鍵盤包括數(shù)字鍵(0~9)、符號鍵(+、-、X、:)、清除鍵和等號鍵,故只需要16個按鍵即可。系統(tǒng)模塊圖:圖2-1系統(tǒng)模塊圖系統(tǒng)硬件的設(shè)計(jì)3.1復(fù)位電路的設(shè)計(jì)上電復(fù)位的原理:VCC上電時(shí),C充電,在10K電阻上出現(xiàn)了電壓,使單片機(jī)復(fù)位;幾個毫秒后,C充滿,10K電阻上電流降為0,電壓也為0,使得單片機(jī)進(jìn)入工作狀態(tài)。手動復(fù)位的原理:工作期間,按下S,C放電。、松手,C又充電,在10K電阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位。幾個毫秒后,單片機(jī)進(jìn)入工作狀態(tài)。如SW復(fù)位鍵按下時(shí):RST經(jīng)1k電阻接VCC,獲得10k電阻上所分得電壓,形成高電平,進(jìn)入“復(fù)位狀態(tài)”。當(dāng)SW復(fù)位鍵斷開時(shí):RST經(jīng)10k電阻接地,電流降為0,電阻上的電壓也將為0,RST降為低電平,開始正常工作。對于成熟產(chǎn)品,從降低成本角度,可以使用上電復(fù)位。另外,作為產(chǎn)品,最
好使用上電復(fù)位。因?yàn)槭褂谜咄ǔ]有專業(yè)知識,就知道斷電通電,對他們來說,按鍵復(fù)位成了擺設(shè)。按鍵復(fù)位比較適合樣品制作或者實(shí)驗(yàn)室調(diào)試場合,上電復(fù)位電路成本也低一些。綜上所述我們在本方案中選用了上電自動復(fù)位電路。上位自動復(fù)位電路圖和手動復(fù)位電路圖如下圖上電自動復(fù)位手動復(fù)位電路如圖3—1兩種復(fù)位方式3.2時(shí)鐘振蕩電路的設(shè)計(jì)上電自動復(fù)位手動復(fù)位電路能夠產(chǎn)生振蕩電流的電路叫做振蕩電路。一般由電阻、電感、電容等元件和電子器件所組成。由電感線圈l和電容器c相連而成的lc電路是最簡單的一種振蕩電路,其固有頻率為f=[sx(]1[]2nlc?!煲环N不用外加激勵就能自行產(chǎn)生交流信號輸出的電路。它在電子科學(xué)技術(shù)領(lǐng)域中得到廣泛地應(yīng)用,如通信系統(tǒng)中發(fā)射機(jī)的載波振蕩器、接收機(jī)中的本機(jī)振蕩器、醫(yī)療儀器以及測量儀器中的信號源等。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用此振動器。如采用外部時(shí)鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號要通過一個二分頻觸發(fā)器,因此對外部時(shí)鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。使用片內(nèi)振蕩器,可以節(jié)省IO引腳,減少成本,但是內(nèi)部振蕩器使用阻容震蕩,導(dǎo)致它的精度不高,如果使用了串口、或者PWM等對時(shí)鐘比較敏感的功能,最好還是使用外部晶體振蕩。在本方案中我們選擇了內(nèi)部時(shí)鐘方式,如下圖:3.3輸入電路的設(shè)計(jì)每一個按鍵都有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。鍵盤的一端(列線)通過電阻接VCC,而接地是通過程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開時(shí)的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態(tài)接地;另一個并行口輸入按鍵狀態(tài),由行掃描值和回饋信號共同形成鍵編碼而識別按鍵,通過軟件查表,查出該鍵的功能。當(dāng)無按鍵閉合時(shí),P10~P13與P14~P17之間開路;當(dāng)有鍵閉合時(shí),與閉合鍵相連的兩條I/O口線之間短路。判斷有無按鍵按下的方法是:第一步,置列線P14?P17為輸入狀態(tài),從行線P10?P13輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。第二步,行線輪流輸出低電平,從列線P14?P17讀入數(shù)據(jù),若有某一列為低電平,則對應(yīng)行線上表示有鍵按下。綜合一二兩步的結(jié)果,可以確定按鍵編號。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因此須等到按鍵釋放后,再進(jìn)行鍵功能操作,否則按一次鍵,有可能會連續(xù)多次進(jìn)行同樣的鍵操作。鍵盤是單片機(jī)系統(tǒng)中常用的人機(jī)對話輸入設(shè)備,用戶通過鍵盤向單片機(jī)輸入數(shù)據(jù)或者指令。鍵盤控制程序需要完成的任務(wù)有:監(jiān)測是否有鍵按下,有鍵按下時(shí),在無硬件去抖的動電路時(shí),應(yīng)用軟件延時(shí)方法消除按鍵抖動影響;當(dāng)有多個鍵同時(shí)按下時(shí),只處理一個按鍵,不管一次按鍵持續(xù)多長時(shí)間,僅執(zhí)行一次按鍵功能程序。矩陣按鍵掃描程序是一種節(jié)省IO口的方法,按鍵數(shù)目越多節(jié)省IO口就越可觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程序的寫法上,采用了最簡單的方法,使得程序的效率最高。本程序中,如果檢測到了某個鍵按下了,就不再檢測其它的按鍵,這完全能滿足絕大多數(shù)需要,又能節(jié)省大量的CPU時(shí)間。本鍵盤掃描程序的優(yōu)點(diǎn)在于:不使用專門的按鍵延時(shí)程序,提高了CPU效率,也不用中斷來掃描鍵盤,節(jié)省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用CPU時(shí)最短,不論有鍵按下或者無鍵按下都可以在很短的時(shí)間完成一次掃描。本鍵盤掃描子程序名叫key,每次要掃描時(shí)用lcallkey調(diào)用即可。鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個以上)和專用驅(qū)動芯片的組合,當(dāng)按下某個鍵時(shí),它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預(yù)。通用PC機(jī)使用的標(biāo)準(zhǔn)鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口芯片HD7279均可以組成編碼鍵盤,同時(shí)還可以兼顧數(shù)碼管的顯示驅(qū)動,其相關(guān)的接口電路和接口軟件均可以在相關(guān)資料中得到。當(dāng)系統(tǒng)功能比較復(fù)雜,案件數(shù)量很多時(shí),采用編碼鍵盤可以簡化軟件設(shè)計(jì)。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不很多(20個以內(nèi)),為了降低成本和簡化電路通常采用非編碼鍵盤。非編碼鍵盤的電路由設(shè)計(jì)者根據(jù)需要自己決定,按鍵信息通過接口軟件來獲取。本課題需要16個按鍵,由P3口采用4*4矩陣式鍵盤。如圖3-3鍵盤
圖3-4鍵盤掃描流程圖3.4輸出電路設(shè)計(jì)數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點(diǎn)顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽級數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽級數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),對應(yīng)的字段就不亮。。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽極為低電平時(shí),對應(yīng)的字段就不亮。LED顯示器由七段發(fā)光二極管組成,排列成8字形狀,因此也成為七段LED顯示器,器排列形狀如下圖所示:afbg已cd圖3-5LED段碼為了顯示數(shù)字或符號,要為LED顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個小數(shù)點(diǎn)位,共計(jì)8段,因此提供的字形代碼的長度正好是一個字節(jié)。簡易計(jì)算器用到的數(shù)字0~9的共陰極字形代碼如下表3-1所示:顯示字型gfedcBa段碼001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh表3-10~9七段數(shù)碼管共陰級字形代碼由于數(shù)值單元存放的是二進(jìn)制數(shù),而我們大家熟悉的是十進(jìn)制數(shù),所以應(yīng)將數(shù)值單元中的二進(jìn)制數(shù)字轉(zhuǎn)換為十進(jìn)制數(shù)字,即BCD碼。要通過數(shù)碼管顯示出當(dāng)前的數(shù)值,還必須將BCD碼進(jìn)一步轉(zhuǎn)換為七段碼,轉(zhuǎn)換的最終結(jié)果數(shù)據(jù)存放于顯示緩沖區(qū)30H-33H單元中,其中30H單元存放數(shù)值的個位七段碼,31H單元存放數(shù)值的十位七段碼,32H單元存放數(shù)值的百位七段碼,33H單元存放數(shù)值的千位七段碼。本方案設(shè)計(jì)中由P1口輸出字形碼,P0口輸出字位碼。先將存放于30H單元的數(shù)值個位七段碼由P1口輸出,同時(shí)P0口輸出使數(shù)值個位顯示數(shù)碼管點(diǎn)亮的字位碼。由于采用的是共陰數(shù)碼管,所以只有該位數(shù)碼管對應(yīng)的P0.0為1,其他位P0.1-P0.3位0,點(diǎn)亮延時(shí)10MS。然后P1口輸出數(shù)值十位七段碼,P0.1位1,數(shù)值十位數(shù)碼管點(diǎn)亮,延時(shí)10MS。接著P1口輸出數(shù)值百位七段碼,P0.2為1,數(shù)值百位數(shù)碼管點(diǎn)亮,延時(shí)10MS。最后P1口輸出數(shù)值千位七段碼,P0.3為1,數(shù)值千位數(shù)碼管點(diǎn)亮,延時(shí)10MS。發(fā)光二極管LED是單片機(jī)應(yīng)用系統(tǒng)中的一種簡單而最常用的輸出設(shè)備,其在系統(tǒng)中的主要作用是顯示單片機(jī)的輸出數(shù)據(jù)、狀態(tài)等。因而作為典型的外圍器件,LED顯示單元是反映系統(tǒng)輸出和操作輸入的有效元器件°LED具備數(shù)字接口可以方便的和單片機(jī)引腳連接;它的優(yōu)點(diǎn)是價(jià)格低,壽命長,對電壓電流的要求低以及容易實(shí)現(xiàn)多路等,因而在單片機(jī)應(yīng)用系統(tǒng)中獲得了廣泛的應(yīng)用,所以在此設(shè)計(jì)中我首先選用了LED作為顯示器件。8808888B且肆蚱的bp翁圖3-7數(shù)碼顯示管系統(tǒng)的程序設(shè)計(jì)本方案中的程序設(shè)計(jì)采用了模塊化設(shè)計(jì),各部分程序都分別進(jìn)行獨(dú)立的設(shè)計(jì),最后主程序通過調(diào)用各模塊程序來運(yùn)行,編程中所使用的語言全部都是C語言,可以利用keil軟件進(jìn)行靈活的編譯,編譯完成后也可生成HEX文件,利用ISP編程軟件通過串口寫到單片機(jī)中。本方案程序設(shè)計(jì)中部分包括主程序模塊、液晶顯示模塊、功能按鍵和控制輸出等部分。4.1讀鍵輸入程序流程圖為了實(shí)現(xiàn)鍵盤的數(shù)據(jù)輸入功能和命令處理功能,每個鍵都有其處理子程序,為此每個鍵都對應(yīng)一個碼一一鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識別按鍵。列掃描信號進(jìn)行讀入行的信號判斷該列是否有列的輸出一一是則進(jìn)行按照行列計(jì)算鍵盤的值,查表取得鍵碼并返回一一若否則進(jìn)行再次掃描。圖4-1讀鍵輸入程序4.2LED顯示程序流程圖設(shè)計(jì)LED數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們需要的數(shù)位,數(shù)碼管動態(tài)顯示介面是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃〃a,b,c,d,e,f,g,dp〃的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位元選通控制電路,位元選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是哪個數(shù)碼管會顯示出字形,取決于單片機(jī)對位元選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位元就會顯示出字形,沒有選通的數(shù)碼管就不會亮。透過分時(shí)輪流控制各個LED數(shù)碼管的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位元數(shù)碼管的點(diǎn)亮?xí)r間為1?2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示資料,不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O埠,而且功耗更低。返回圖4-2數(shù)碼管顯示流程圖4.3主程序設(shè)計(jì)主程序進(jìn)行程序中用到的一些存儲單元的初始化,數(shù)值顯示和4*4鍵盤掃描。首先,進(jìn)行存儲單元初始化,給數(shù)碼管顯示單元30H-33H賦予“0000”字形數(shù)據(jù),將數(shù)值計(jì)數(shù)單元,存儲單元,23H-25H,34H-37H,38H,39H,3AH,3BH,3CH,賦予初值零。之后,調(diào)用鍵盤掃描子程序,和數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換程序,數(shù)碼管動態(tài)顯示子程序。主程序不斷進(jìn)行鍵盤掃描,數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換子程序和動態(tài)顯示子程序。首先初始化參數(shù),送LED低位顯示“0”,功能鍵“+”、"-”、“*”、“/”、“+”)位不顯示。然后掃描鍵盤看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是“+”、“一”、“*”“/”,是數(shù)值鍵則送LED顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“二”還是運(yùn)算鍵,若是“二”則計(jì)算最后結(jié)果并送LED顯示,若是運(yùn)算鍵則保存相對運(yùn)算程序的首地址。課程設(shè)計(jì)體會本次課程設(shè)計(jì),我們小組在實(shí)驗(yàn)前的一個星期里,已經(jīng)查好了資料,并且提前在自己的電腦上安裝了keil和proteus兩個軟件。經(jīng)過努力的編程和不斷的查資料及調(diào)試,在寢室的時(shí)候已經(jīng)將所需連接的電路圖仿真出來了。所以,周五去到實(shí)驗(yàn)室的時(shí)候就直接連接了電路圖,可是我們在仿真的時(shí)候出現(xiàn)了問題,一直沒有得到預(yù)期的結(jié)果。后來經(jīng)過反復(fù)的檢查程序和電路圖后,才發(fā)現(xiàn)是數(shù)碼管的共陰共陽弄反了,程序里面是共陰的,連電路圖的時(shí)候不小了連成了共陽的,換了共陽數(shù)碼管后,馬上就得到了想要的實(shí)驗(yàn)結(jié)果。在后來連接面包板的過程中,我們的實(shí)驗(yàn)過程一直不順利。因?yàn)檫@個計(jì)算器的設(shè)計(jì)用到了鍵盤和8個數(shù)碼管,所以線路連接比較復(fù)雜,我們花了一下午的時(shí)間連接了線路,可是通電后并沒有出現(xiàn)實(shí)驗(yàn)結(jié)果,仔細(xì)檢查后,還是一直進(jìn)入不了調(diào)試狀態(tài)。剛開始的時(shí)候懷疑自己的電路連接可能有問題,所以問了老師,后來我們又參考了單片機(jī)實(shí)驗(yàn)書后面的連接圖,在沒有弄清楚的情況下,我太倉促地拆掉了已連接好的電路圖,然后又加入了鎖存器和138譯碼器。連接完后,還是進(jìn)入不了調(diào)試。這時(shí)我們就開始好好仔細(xì)檢查錯誤了,其實(shí)我們程序里并沒有關(guān)于138譯碼器的編程,所以現(xiàn)在電路和程序是對不上的。要不改程序或者再改電路,最后我們還是回到了最初的電路,其實(shí)最初的電路一直都是正確的,只是我們真的太粗心和太著急了。經(jīng)過反復(fù)檢查后,線路和程序都已經(jīng)沒有問題了,可就是進(jìn)入不了調(diào)試,后來我們有用C語言編寫了一個測試程序,可結(jié)果卻是一樣的,進(jìn)入不了調(diào)試。就這樣一直找錯,一直調(diào)試,花了近一天的時(shí)間,仍得不到想要的結(jié)果,詢問老師后,老師讓我們先焊接電路板。最后,我們就開始焊板了。焊完板后,仍然進(jìn)入不了調(diào)試,換了四臺電腦不斷的嘗試、檢查和排錯。花了很長的時(shí)間后,終于在第五臺電腦上進(jìn)入調(diào)試了。當(dāng)時(shí)都特別激動,后來發(fā)現(xiàn)在焊接過程中,雖然已經(jīng)注意了,還是把高低位接反了。整個課程設(shè)計(jì)過程中,團(tuán)隊(duì)合作是非常重要的,我們的隊(duì)員都有不同的分工?;ハ嘀g都配合的很好。通過同學(xué)之間的討論,不僅加深了我們對計(jì)算器工作的原理的了解還增進(jìn)了我們同學(xué)之間的友誼。并且通過這次課設(shè),能將書本上的理論知識和實(shí)際有機(jī)地結(jié)合起來,從理論中得出結(jié)論。鍛煉了我們實(shí)際分析問題和解決問題的能力,提高了適應(yīng)實(shí)際的能力,為我們今后的學(xué)習(xí)和實(shí)踐打下了良好的基礎(chǔ)。此次課設(shè)還鞏固了所學(xué)過的原理知識,從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。為我們以后要參加的各種比賽打下了堅(jiān)實(shí)的基礎(chǔ)!附1源程序代碼ORG0000HLJMPSTARTORG0030HSTART:MOV30H,#00HMOV38H,#00HMOV39H,#00HMOV3AH,#00HMOV3BH,#00HMOV3CH,#00HMOV3DH,#00HMOV3EH,#00HMOV3FH,#00HMOV40H,#00HMOV41H,#00HMOV42H,#00HMOV43H,#00HMOV44H,#00HMOV50H,#0E0HMOV51H,#0D0HMOV52H,#0B0HMOV53H,#70HLOOP3:ACALLDISPLAYMOVR0,#50HMOVR7,#04HLOOP1:MOVA,@R0MOVP3,AMOVA,#0FFHMOVP1,AMOVA,P1ANLA,#0FHMOVR5,ACJNEA,#0FH,LOOP2INCR0DJNZR7,LOOP1JMPLOOP3LOOP2:MOVR4,#0A0HTFF:ACALLDELAY1mSDJNZR4,TFF;;;;;;;;;;;;;;;初始化定義;;;;;;;;;;;;;;;;;;;行定義;;;;;;;;;;;;;;;;;;;;;;;;;;;;R01表示啟用R0;;;;;;;;尋鍵值;;;;;;;;;;;;??R71;?…循環(huán)4次;;▲、/兀;;;;;I中IF"、;;;;;;;;;;;;;;;;;;;;;;;;;A1;;;;;;;;;;;;R0行號;;;;;;;;;;;;;;;;;;;;;;A2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;^^q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;^^q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A1讀P1口;^^工;;;;;;;;;;;A±.I;;;;;;;;;;;;;;;;;;;A2;;;;;;;;;;;;;;;;;;;;;;;;;^>-^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;判斷有無按鍵;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;延遲10MS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SS:MOVA,#0FFHMOVP1,AMOVA,P1;;;;;;;;;;;;;判鍵是否松開;;;;;;;;;;;;;;ANLA,#0FHCJNEA,#0FH,SSMOVA,42HMOVR1,#30HCJNEA,#01H,NEXT1;;;;;;;;;;;;;判斷是否按X/號;;;;;;;;;;;;;;;;;顯示區(qū)低字節(jié)地址指針;;;;;;;;;;;;;;;;;;;;;;;MOV40H,#00HMOV42H,#00HNEXT1:CJNE@R0,#0E0H,ROW2KEYMOVA,R5ORLA,@R0CJNEA,#0EEH,KEY2MOVA,40HCJNEA,#08H,TW1ACALLWARNNINGJMPLOOP3TW1:INC40HMOVA,#07HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3KEY2:CJNEA,#0EDH,KEY3MOVA,40HCJNEA,#08H,TW2ACALLWARNNINGJMPLOOP3TW2:INC40HMOVA,#08HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3KEY3:CJNEA,#0EBH,KEY4MOVA,40HCJNEA,#08H,TW3ACALLWARNNINGJMPLOOP3TW3:MOVA,#09HINC40HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3;;;;;;;;;111111;;;;;;;;;;R0行號;;;;;;;;;;;;;;;;;;A1;;R5列號;;;;;;;;;;R02表示停用R0;;;;;;;;;;;;;;;;;;;;;;;;A2;;;;;;;;;;;;;;;;KEY4:ACALLJUDEG;;計(jì)算結(jié)果放入3CH起始的單元;;;;;;;;;;;;;;;;;;;;;;;ACALLCHANGE;;;;;將結(jié)果放入顯示緩沖區(qū);;;;;;;;;;;;;;;;;;;;;;;;;MOV42H,#01HMOV41H,#04H;;;;;;;;;;;;04表示除法;;;;;;;;;;JMPLOOP3ROW2KEY:CJNE@R0,#0D0H,ROW3KEY;;;;;;;;;;;;;;2222222222;;;;;;;;;;;;;;;;;;;;;;;MOVA,R5ORLA,@R0CJNEA,#0DEH,KEY5MOVA,40HCJNEA,#08H,TW4ACALLWARNNINGJMPLOOP3TW4:INC40HMOVA,#04HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3KEY5:CJNEA,#0DDH,KEY6MOVA,40HCJNEA,#08H,TW5ACALLWARNNINGJMPLOOP3TW5:MOVA,#05HINC40HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3KEY6:CJNEA,#0DBH,KEY7MOVA,40HCJNEA,#08H,TW6ACALLWARNNINGJMPLOOP3TW6:MOVA,#06HINC40HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3KEY7:ACALLJUDEG;;;;計(jì)算結(jié)果放入3CH起始的單元;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACALLCHANGE;;;將結(jié)果放入顯示緩沖區(qū);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV42H,#01HMOV41H,#03H;;;;;;;;;;;;03表示乘法;;;;;;;;;;JMPLOOP3ROW3KEY:CJNE@R0,#0B0H,ROW4KEY;;;;;;;;;;;;3333333333333;;;;;;;;;;;;;;;;;;;;;;;;
MOVA,R5ORLA,@R0CJNEA,#0BEH,KEY8MOVA,40HCJNEA,#08H,TW7ACALLWARNNINGJMPLOOP3TW7:MOVA,#01HINC40HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3KEY8:CJNEA,#0BDH,KEY9MOVA,40HCJNEA,#08H,TW8ACALLWARNNINGJMPLOOP3TW8:MOVA,#02HINC40HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3KEY9:CJNEA,#0BBH,KEY10MOVA,40HCJNEA,#08H,TW9ACALLWARNNINGJMPLOOP3TW9:MOVA,#03HINC40HMOV43H,AACALLMOVEACALLCHANGE11JMPLOOP3KEY10:ACALLJUDEGKEY10:ACALLJUDEGACALLCHANGE;;;;;;放入3CH起始的單元;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;將結(jié)果放入顯示緩沖區(qū);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV42H,#01HMOV41H,#02HJMPLOOP3;;;;;;;;;;;;02表示減法;;;;;;;;;;ROW4KEY:MOVA,R5ORLA,@R0CJNEA,#7EH,KEY11JMPSTART;;;;;;;;;;;;444444444444;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CLEAR;;;;;;;;;;;;;;;;;;;;;;;;;;;KEY11:CJNEA,#7DH,KEY12JZQQCJNEA,#08H,TW10ACALLWARNNINGJMPLOOP3TW10:MOVA,#00HINC40HMOV43H,AACALLMOVEACALLCHANGE11QQ:JMPLOOP3KEY12:CJNEA,#0BBH,KEY13ACALLJUDEGACALLCHANGEQQ:JMPLOOP3KEY12:CJNEA,#0BBH,KEY13ACALLJUDEGACALLCHANGE;;;;將結(jié)果放入顯示緩沖區(qū);;;;;;;;;;;;;;;;;;;;;;;;;;JMPLOOP3KEY13:ACALLJUDEGACALLCHANGE;計(jì)算結(jié)果放入3CH起始的單元;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;將結(jié)果放入顯示緩沖區(qū);;;;;;;;;;;;;;;;;;;;;;;MOV42H,#01H;;;;;;;;;;;;01表示加法;;;;;;;;;;MOV41H,#01HJMPLOOP3MOVE:MOVR1,#30HMOVR6,40H;;;;;;;;;;;;;交換指令;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DDD:XCHA,@R1NOPNOPKEY13:ACALLJUDEGACALLCHANGE;;;;;;;;;;;;01表示加法;;;;;;;;;;;;;;;;;;;;;;;交換指令;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;NOPNOPNOPINCR1DJNZR6,DDDRETMAKEADD:MOVA,R0MOVR2,AMOVA,R3MOVR7,ACLRCLOP:MOVA,@R0ADDCA,@R1MOV@R0,AINCR0INCR1DJNZR7,LOPJNCNEXTINCR3MOV@R0,#01HNEXT:MOVA,R2;;;R1=30H;;;;;;;保存地址;;;;;;;;回復(fù)地址;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;RETMAKESUB:CLR07HMOVA,R0MOVR2,AMOVA,R3MOVR7,ACLRCLOP1:MOVA,@R0SUBBA,@R1MOV@R0,AINCR0INCR1DJNZR7,LOP1JNCLOP2SETB07HLOP2:MOVA,R2MOVR0,ARETMAKEMUL:MOVA,R3MOVB,R7MULABXCHA,R7MOVR5,BMOVB,R2MULABADDA,R5MOVR4,ACLRAADDCA,BMOVR5,AMOVA,R6MOVB,R3MULABADDA,R4XCHA,R6XCHA,BADDCA,R5MOVR5,AMOVF0,CMOVA,R2MULABADDA,R5MOVR5,ACLRAMOVACC.0,CMOVC,F0ADDCA,BMOVR4,ARETMAKEDIV:MOVA,R5CLRCSUBBA,R3MOVA,R4SUBBA,R2JNCDIV11MOVB,#16DIV22:CLRCMOVA,R7RLCAMOVR7,AMOVA,R6RLCAMOVR6,AMOVA,R5RLCAMOVR5,AXCHA,R4RLCAXCHA,R4MOVF0,CCLRCSUBBA,R3MOVR1,AMOVA,R4SUBBA,R2JBF0,DIV33JCDIV44DIV33:MOVR4,AMOVA,R1MOVR5,AINCR7DIV44:DJNZB,DIV22CLRF0RETDIV11:SETBF0RETCHANGE11:MOVR0,#40HCJNE@R0,#01H,TA1;;;;;;;;;;;;;;;;;;CHANGE;;;;;;;;;;;;;;;;;;;;;;MOV38H,43HJMPTA2TA1:MOVR3,38HMOVR2,39HMOVR6,#00HMOVR7,#0AHACALLMAKEMULMOV39H,R6MOV38H,R7MOV3AH,R5MOV3BH,R4MOVR0,#38HMOVR1,#43HMOVR3,#02HACALLMAKEADDTA2:RETCHANGE:MOV40H,#00HMOVR0,#30HMOVR7,3CHMOVR6,3DHTD1:MOVR5,#00HMOVR4,#00HMOVR2,#00HMOVR3,#0AHINC40HACALLMAKEDIVMOVA,R5MOV@R0,AINCR0MOVA,R6CJNEA,#00H,TD1MOVA,R7CJNEA,#00H,TD1RETJUDEG:MOVA,3AHJZJUD1ACALLERRORLJMPLOOP3JUD1
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商務(wù)車租賃合同范本
- 制作印刷材料合同范本
- 包裝接單合同范本
- 公司欠款還款合同范本
- 廠家代理商合同范本
- 合同范本大會
- 合同以外合同范本有效
- 廠房漏雨維修合同范例
- 精煤銷售批發(fā)合同范本
- 個人商業(yè)購房合同范本
- 高速公路綠化工程施工
- 多動癥兒童養(yǎng)育六步法:給家長的自助指南
- 范可尼貧血病癥演示稿件
- 智能制造在食品加工業(yè)中的應(yīng)用與發(fā)展
- 文本排版習(xí)題
- 醫(yī)院預(yù)算執(zhí)行情況分析報(bào)告
- 年終存貨盤點(diǎn)管理制度
- 化工公司原址污染場地污染土壤治理修復(fù)方案
- 法蘭標(biāo)準(zhǔn)尺寸表(美標(biāo)、日標(biāo)、德標(biāo))
- 施工技術(shù)管理項(xiàng)總體思路、方式和方法解析
- 《大學(xué)生安全教育》課件-第一課 國家安全
評論
0/150
提交評論