版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、畢業(yè)論文基于單片機控制的簡單計算器設計與仿真designandsimulationofasimplecalculatorbasedonsinglechipmicrocomputercontrol摘 要隨著社會的不斷發(fā)展,科技的不斷創(chuàng)新。計算器已在數(shù)十年間遍布千家萬戶,對于計算器的百年歷史,1946年2月15日,在美國賓夕法尼亞大學,世界上第一臺電子計算器eniac正式投入了運行。在隆重的揭幕儀式上,eniac表演了它的“絕招”:在1秒鐘內進行5000次加法運算;在1秒鐘內進行500次乘法運算。這比當時最快的電器計算器的運算速度要抉1000多倍。全場起立歡呼,歡呼科學技術進入了一個新的歷史發(fā)展時
2、期。 數(shù)學家把聰明給了電子計算器,電子計算器將使數(shù)學家變得更加明。而且電子計算器不僅是一種工具,它與其它的工具都不相同:電子計算器是人腦的一個側面的延伸。因為電子計算器不僅具有非凡的計算能力,速度之快令人望塵莫及,而且還能夠仿真人的某些思維功能,按照一定的規(guī)則進行邏輯判和邏輯推理,代替人的部分腦力勞動。1976年,數(shù)學家憑借電子計算器去證明四色定理,“依靠機器完成了人沒有能夠完成的事情”,轟動了整個國際數(shù)學界。計算器的未來是小型化和輕便化,現(xiàn)在市面上出現(xiàn)的使用太陽能電池的計算器,使用asic設計的計算器,如使用純軟件實現(xiàn)的計算器等,未來的智能化計算器將是我們的發(fā)展方向,更希望成為應用廣泛的計算
3、工具。國內外研究現(xiàn)狀、發(fā)展動態(tài) (1)研究現(xiàn)狀與發(fā)展動態(tài)單片機誕生于20世紀70年代末,經(jīng)歷了scm、mcu、soc三大階段。單片機是嵌入式系統(tǒng)的獨立發(fā)展之路,向mcu階段發(fā)展的重要因素,就是尋求應用系統(tǒng)在芯片上的最大化解決;因此,專用單片機的發(fā)展自然形成了soc化趨勢。隨著微電子技術、ic設計、eda工具的發(fā)展,基于soc的單片機應用系統(tǒng)設計有較大的發(fā)展。因此,對單片機的理解可以從單片微型計算機、單片微控制器延伸到單片應用系統(tǒng)。 目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域 沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控
4、制和數(shù)據(jù)處理,廣泛使用的各種智能ic卡,民用豪華轎車的安全保障系統(tǒng),錄象機、攝象機,以及程控玩具等等,這些都離不開單片機。 單片機的技術進步反映在內部結構、功率消耗、外部電壓等級以及制造工藝上。在這幾方面,較為典型地說明了數(shù)字單片機的水平。在目前,用戶對單片機的需要越來越多,但是,要求也越來越高。在單片機應用中,可靠性是首要因素為了擴大單片機的應用范圍和領域,提高單片機自身的可靠性是一種有效方法。近年來,單片機的生產(chǎn)廠家在單片機設計上采用了各種提高可靠性的新技術:eft(ellectrical fast transient)技術,低噪聲布線技術及驅動技術,采用低頻時鐘。同時單片機在目前的發(fā)展形
5、勢下還表現(xiàn)出可靠性及應用越來越水平高和互聯(lián)網(wǎng)連接,所集成的部件越來越多,功耗越來越低和模擬電路結合越來越多等發(fā)展趨勢。本設計采用80s52 芯片,實現(xiàn)了利用單片機進行了一個簡單計算器設計。允許對輸入數(shù)據(jù)進行加減乘除運算及l(fā)ed 顯示。如果設計對象是更為復雜的計算器系統(tǒng),其實際原理與方法與本設計基本相同。另外,實例所設計的計算器是用led 數(shù)碼管顯示的,當然也可以用其他的器件顯示,如led 顯示屏,這樣就可以顯示出更多的字符,在此基礎上,還可以編寫更加完善的程序來實現(xiàn)更多的計算功能。設計的關鍵所在,必須非常熟悉單片機的原理與結構,同時還要對整個設計流程有很好的把握,將單片機和其他模塊完整的銜接。
6、- iii -abstract內容應與“中文摘要”對應。使用第三人稱,最好采用現(xiàn)在時態(tài)編寫。書寫格式說明:標題“abstract”可設置成字體:times new roman,居中。字號:小二,1.5倍行距。段后11磅,段前為0。abstract正文選用設置成每段落首行縮進2字,字體:times new roman,字號:小四,行距:多倍行距 1.3,間距:前段、后段均為0行。key words與abstract之間空一行。key words與中文“關鍵詞”一致。詞間用分號間隔,末尾不加標點,3-5個,times new roman,小四,加粗。示例:decision support and
7、data warehouse systems is intended as a textbook for a one-semester course in decision support systems, with data warehousing playing the same starring role in the course as it does in todays decision support picture. with the addition of enrichment material in data warehousing, much of which can be
8、 found on the web, it also fits a quarter systems: the dss portion of the book fits one quarter, and the data warehousing portion can expanded to fill another.decision support and data warehouse systems is intended as a textbook for a one-semester course in decision support systems, with data wareho
9、using playing the same starring role in the course as it does in todays decision support picture. with the addition of enrichment material in data warehousing, much of which can be found on the web, it also fits a quarter systems: the dss portion of the book fits one quarter, and the data warehousin
10、g portion can expanded to fill another.key words:content;request;format- 31 -目 錄摘 要iabstractiii第1章 緒 論1第2章 設計方案22.1設計方案22.2模塊設計2第3章 at89c52單片機的簡單介紹53.1 at89c52單片機的簡單介紹53.2 mm94c22芯片介紹73.3 led介紹93.4鍵盤模塊介紹10第4章 總體電路圖介紹114.1 總體電路圖114.2各模塊的簡單介紹11第5章 軟件介紹145.1 c51語言介紹145.2 keil開發(fā)環(huán)境145.3 protues軟件的簡介155.4
11、 各模塊程序編程16結 論27參考文獻28附錄a29致 謝31第1章 緒 論單片機誕生于1971年,經(jīng)歷了scm、mcu、soc三大階段,早期的scm單片機都是8位或4位的。其中最成功的是intel的8051,此后在8051上發(fā)展出了mcs51系列mcu系統(tǒng)。基于這一系統(tǒng)的單片機系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領域要求的提高,開始出現(xiàn)了16位單片機,但因為性價比不理想并未得到很廣泛的應用。90年代后隨著消費電子產(chǎn)品大發(fā)展,單片機技術得到了巨大提高。隨著intel i960系列特別是后來的arm系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,并且進入主流市場。而傳統(tǒng)的8位單片機
12、的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。高端的32位soc單片機主頻已經(jīng)超過300mhz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。當代單片機系統(tǒng)已經(jīng)不再只在裸機環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的windows和linux操作系統(tǒng)。單片機作為計算機發(fā)展的一個重要分支領域,根據(jù)發(fā)展情況,從不同角度,單片機大致可以分為通用型/專用型、總線型/非總線型及工控型/家電型。通用型與專用型這是按單片機適用范圍來區(qū)分的。例如,80c51
13、是通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產(chǎn)品甚至某一個產(chǎn)品設計生產(chǎn)的,例如為了滿足電子體溫計的要求,在片內集成adc接口等功能的溫度測量控制電路線型這是按單片機是否提供并行總線來區(qū)分的??偩€型單片機普遍設置有并行地址總線、 數(shù)據(jù)總線、控制總線,這些引腳用以擴展并行外圍器件都可通過串行口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設接口集成一片內,因此在許多情況下可以不要并行擴展總線,大大減省封裝成本和芯片體積,這類單片機稱為非總線型單片機?,F(xiàn)代人類生活中所用的幾乎每件有電子器件的產(chǎn)品中都會集成有單片機。手機、電話、計算器、家用電器、電子玩具、掌上電腦以及鼠標
14、等電子產(chǎn)品中都含有單片機。 汽車上一般配備40多片單片機,復雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百片單片機在同時工作!單片機的數(shù)量遠遠超過pc機和其他計算機的總和。本設計采用80s52 芯片,實現(xiàn)了利用單片機進行了一個簡單計算器設計。允許對輸入數(shù)據(jù)進行加減乘除運算及l(fā)ed 顯示。第2章 設計方案2.1設計方案本系統(tǒng)選用at89c51單片機為主控機。通過擴展必要的外圍接口電路,實現(xiàn)對計算器的設計,具體設計如下:(1)由于設計的計算器要進行四則運算,為了得到較好的顯示效果,經(jīng)綜合分析后,最后采用lcd 顯示數(shù)據(jù)和結果。(2)采用鍵盤輸入方式,鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、)、清除鍵(onc)和
15、等號鍵(=),故只需要16 個按鍵即可,設計中采用集成的計算鍵盤。(3)在執(zhí)行過程中,開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過lcd顯示出來,當鍵入+、-、*、/運算符,計算器在內部執(zhí)行數(shù)值轉換和存儲,并等待再次鍵入數(shù)值,當再鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號就會在lcd上輸出運算結果。(4)錯誤提示:當計算器執(zhí)行過程中有錯誤時,會在lcd上顯示相應的提示,如:當輸入的數(shù)值或計算得到的結果大于計算器的表示范圍時,計算器會在lcd上提示overflow;當除數(shù)為0時,計算器會在lcd上提示error。為了滿足計算器的基本要求,可以基本的運算(加減乘除),數(shù)據(jù)歸零和出錯警告提示,我們采用基于單片
16、機設計計算器,并用led 數(shù)碼管顯示數(shù)據(jù),4*4 的矩陣鍵盤實現(xiàn)數(shù)據(jù)輸入。設計仿真和調試要用到protues 、keil等軟件。 2.2模塊設計一、系統(tǒng)模塊圖2-1 系統(tǒng)模塊圖二、算數(shù)運算流程圖2-2 算數(shù)運算流程圖三、系統(tǒng)總流程圖2-3系統(tǒng)總流程圖第3章 at89c52單片機的簡單介紹3.1 at89c52單片機的簡單介紹at89c52 是美國 atmel 公司生產(chǎn)的低電壓,高性能 cmos 8 位單片機,片內含 8k bytes 的可反復擦寫的只讀程序存 儲器(perom)和 256 bytes 的隨機存取數(shù)據(jù)存儲器(ram),器件采用 atmel 公司的高密度、非易失性存儲技術生產(chǎn), 與
17、標準 mcs-51 指令系統(tǒng)及 8052 產(chǎn)品引腳兼容,片內置通用 8 位中央處理器(cpu)和 flash 存儲單元,功能強大 at89c52 單片機適合于許多較為復雜控制應用場合。3-1 at89c52實物圖3-2 at89c52實物引腳圖主要性能參數(shù): 與 mcs-51 產(chǎn)品指令和引腳完全兼容 8k 字節(jié)可重擦寫 flash 閃速存儲器1000 次擦寫周期全靜態(tài)操作:0hz24mhz三級加密程序存儲器2568 字節(jié)內部 ram32 個可編程 io 口線3 個 16 位定時計數(shù)器8 個中斷源可編程串行 uart 通道 低功耗空閑和掉電模式 功能特性概述: at89c52 提供以下標準功能:
18、8k 字節(jié) flash 閃速存儲器,256 字節(jié)內部 ram,32 個 io 口線,3 個 16 位定時計數(shù)器,一個 6 向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,at89c52 可降至 0hz 的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止 cpu 的工作,但允許 ram,定時計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存 ram 中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。 at89c51單片機引腳介紹:vcc: 供電電壓。 gnd:接地。 p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當p0口
19、的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當fiash進行校驗時,p0輸出原碼,此時p0外部必須被拉高。 p1口:p1口是一個內部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收。 p2口:p2口為一個內部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當p2口被寫“1”時,其管腳被內部
20、上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。p2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,p2口輸出其特殊功能寄存器的內容。p2口在flash編程和校驗時接收高八位地址信號和控制信號。 p3口:p3口管腳是8個帶內部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當p3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 p3口也可作為
21、at89c51的一些特殊功能口:p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口) p3.2 /int0(外部中斷0) p3.3 /int1(外部中斷1) p3.4 t0(記時器0外部輸入) p3.5 t1(記時器1外部輸入) p3.6 /wr(外部數(shù)據(jù)存儲器寫選通) p3.7 /rd(外部數(shù)據(jù)存儲器讀選通) p3口同時為閃爍編程和編程校驗接收一些控制信號。 rst:復位輸入。當振蕩器復位器件時,要保持rst腳兩個機器周期的高電平時間。 ale/prog:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端
22、以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。 /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。 /ea/vpp:當/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffff
23、h),不管是否有內部程序存儲器。注意加密方式1時,/ea將內部鎖定為reset;當/ea端保持高電平時,此間內部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。3.2 mm94c22芯片介紹mm94c22是一個16位的譯碼器,44的鍵盤,在單片機系統(tǒng)中,是很常見的。一般都是占用一個單片機的8位接口。 對于這種輸入設備,通常是由單片機來識別某行某列的按鍵是否按下,還需要延時消抖等等。為了節(jié)省單片機的io接口,也可以使用外接芯片來驅動44的鍵盤。mm74c922,就是一塊較好
24、的44的鍵盤編碼芯片。它能夠自己獨立地進行鍵盤檢測、消抖,以8421碼給出鍵值。它還能給出按鍵是否按下的標志,其數(shù)據(jù)線還具有三態(tài)輸出的功能,便于進行總線連接3-3 mm94c22硬件圖mm74c922引腳說明:(1) y1y4(腳1腳4):4*4鍵盤第一列至第四。(2) x1x4(腳11、10、8、7):4*4鍵盤第一行至第四行。(3) doa dod(dataout ad,腳1417):按鍵之bcd碼輸出,其中doa為lsb,dod為msb。(4) vcc(腳18):電源腳,+3v+15v。ab126計算公式大全(5) gnd(腳9):接地管腳。新藝圖庫(6) osc(oscillator,
25、腳5):鍵盤掃描電路之頻率所需外加電容的連引腳。(7) kbm(keyboard mask,腳6):內部消除開關彈跳電路所外加電容的引腳。(8) oe(output enable,腳13):芯片使能腳,接低電位可使芯片使能。(9) da(data available,腳12):數(shù)據(jù)有效輸出腳。任一按鍵按下時,此腳位會輸出高電位,按鍵釋放后此腳又會恢復為低電位。mm74c922對各按鍵的響應如下表所示:3.3 led介紹發(fā)光二極管led 是單片機應用系統(tǒng)中的一宗簡單而常用的輸出設備,其在系統(tǒng)中的主要作用是顯示單片機的輸出數(shù)據(jù)、狀態(tài)等。因而作為典型的外圍器件,led 顯示單元是反映系統(tǒng)輸出和操作輸
26、入的有效器件。led 具備數(shù)字接口可以方便的和大年紀系統(tǒng)連接;它的優(yōu)點是價格低,壽命長,對電壓電流的要求低及容易實現(xiàn)多路等,因而在單片機應用系統(tǒng)中獲得了廣泛的應用,所以在此設計中我首先選用了led為基礎的lcd作為顯示器件。3-4 lcd引腳圖下面是lcd的引腳功能介紹:第1腳:vss為地電源第2腳:vdd接5v正電源第3腳:v0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10k的電位器調整對比度第4腳:rs為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:r/w為讀寫信號線,高電平時進行讀操作,低電平
27、時進行寫操作。當rs和rw共同為低電平時可以寫入指令或者顯示地址,當rs為低電平rw為高電平時可以讀忙信號,當rs為高電平rw為低電平時可以寫入數(shù)據(jù)。第6腳:e端為使能端,當e端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:d0d7為8位雙向數(shù)據(jù)線。3.4鍵盤模塊介紹每個按鍵都有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和cpu通信。鍵盤的一端(列線)通過電阻接vcc,而接地是通過程序輸出數(shù)字“0”實現(xiàn)的。鍵盤處理程序的任務是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼
28、,使按鍵逐行動態(tài)接地;另一個并行口輸入按鍵狀態(tài),由行掃描值和回饋信號共同形成鍵編碼而識別按鍵,通過軟件查表,查出該鍵的功能。計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會很簡單,但是會占用大量的i/o 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條i/o 線作為行線,四條i/o 線作為列線組成鍵盤,在行線和列線的每個交叉點上設置一個按鍵。這樣鍵盤上按鍵的個數(shù)就為44個。這種行列式鍵盤結構能有效地提高單片機系統(tǒng)中i/o 口的利用率。矩陣鍵盤的工作原理:計算器的鍵盤布局如圖1所示:一般有16個鍵組成,在單片機中正好可以用
29、一個p口實現(xiàn)16個按鍵功能,這種形式在單片機系統(tǒng)中也最常用鍵盤電路:3-5鍵盤電路第4章 總體電路圖介紹4.1 總體電路圖根據(jù)設計方案要求以選擇的器件設計出下面的電路圖:4-1 單片機控制的簡單計算器4.2各模塊的簡單介紹一、手動上電復位電路4-2手動復位電路當vcc上電時,c充電,在10k電阻上出現(xiàn)電壓,使得單片機復位;幾個毫秒后,c充滿,10k電阻上電流降為0,電壓也為0,使得單片機進入工作狀態(tài)。工作期間,按下s,c放電。s松手,c又充電,在10k電阻上出現(xiàn)電壓,使得單片機復位。幾個毫秒后,單片機進入工作狀態(tài)。二、內部時鐘模式電路:當單片機工作于內部時鐘模式的時候,只需在xtal1和xta
30、l2引腳連接一個晶體振蕩器或者陶瓷振蕩器,并接兩個電容后接地即可,在使用時對于電容的選擇有一定的要求:當外接晶體振蕩器的時候,電容值一般選擇c1=c2=30+10pf或30-10pf;當外接陶瓷振蕩器的時候,電容值一般選擇c1=c2=40+10pf或40-10pf;三、鍵盤接口電路在本設計中,計算器輸入鍵盤的4條行線、列線分別連接到mm74c922的x1-x4、y1-y4引腳,mm74c922的數(shù)據(jù)輸出口與單片機的p2口相連,mm74c922的da引腳經(jīng)過一個非門連接到單片機的/int0腳,當mm74c922檢測到鍵盤輸入時,da產(chǎn)生高電平,與之相連的/int0檢測到低電平,給單片機一個中斷,
31、單片機從p2口的低四位讀入鍵盤上按下的鍵的值。四、運算模塊(單片機控制):mcs-51 單片機是在一塊芯片中集成了cpu、ram、rom、定時器/計數(shù)器和多功能i/o等一臺計算機所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(cpu)、數(shù)據(jù)存儲器(ram)、程序存儲器(rom/eprom)、并行i/o 口、串行口、定時器/計數(shù)器、中斷系統(tǒng)及特殊功能寄存器(sfr)。單片機是靠程序運行的,并且可以修改。通過不同的程序實現(xiàn)不同的功能,尤其是特殊的獨特的一些功能,通過使用單片機編寫的程序可以實現(xiàn)高智能,高效率,以及高可靠性!因此我們采用單片機作為計算器的主要功能部件,可以很快
32、地實現(xiàn)運算功能。第5章 軟件介紹5.1 c51語言介紹本次實習運用c語言編程來對單片機進行靜態(tài)顯示的控制、信號的傳輸轉換控制。c語言編程具有以下特點:1)c語言簡潔、緊湊,使用方便、靈活。c語言程序比其他許多高級語言簡練,源程序短,因此輸入程序時工作量少.2)運算符豐富。共有34種。c把括號、賦值、逗號等都作為運算符處理。從而使c的運算類型極為豐富,可以實現(xiàn)其他高級語言難以實現(xiàn)的運算。3)數(shù)據(jù)結構類型豐富,c語言提供的數(shù)據(jù)類型有:整形、浮點型、字符型、數(shù)組類型、指針類型、結構體類型、共用體等。4)具有結構化的控制語句。5)語法限制不太嚴格,程序設計自由度大。6)c語言允許直接訪問物理地址,能進
33、行位(bit)操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進行操作。因此有人把它稱為中級語言。7)生成目標代碼質量高,程序執(zhí)行效率高。8)與匯編語言相比,用c語言寫的程序可移植性好。5.2 keil開發(fā)環(huán)境keil c51是美國keil software公司出品的51系列兼容單片機c語言軟件開發(fā)系統(tǒng),與匯編相比,c語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用c來開發(fā),體會更加深刻。一、keil c51 的概述keil c51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調試工具,全windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能
34、體會到keil c51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細介紹keil c51開發(fā)系統(tǒng)各部分功能和使用。二、keil c51單片機軟件開發(fā)系統(tǒng)的整體結構c51的工具包非常豐富,其中uvision與ishell分別是c51 for windows和for dos的集成開發(fā)環(huán)境(ide),可以完成編輯、編譯、連接、調試、仿真等整個開發(fā)流程。開發(fā)人員可用ide本身或其它編輯器編輯c或匯編源文件。然后分別由c51及a51編譯器編譯生成目標文件(.obj)。目標文件可由lib51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)l51連接
35、定位生成絕對目標文件(.abs)。abs文件由oh51轉換成標準的hex文件,以供調試器dscope51或tscope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如eprom中。5.3 protues軟件的簡介protues軟件是英國labcenter electronics公司出版的eda 工具軟件。它不僅具有其它eda工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。proteus是世界上著名的eda工
36、具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協(xié)同仿真,一鍵切換到pcb設計,真正實現(xiàn)了從概念到產(chǎn)品的完整設計。迄今為止是世界上唯一將電路仿真軟件、pcb設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086和msp430等,2010年即將增加cortex和dsp系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持iar、keil和matlab等多種編譯.功能特點:proteus軟件具有其它eda工具軟件(例:multisim)的功能。這些功能是:1原理布圖2pcb自
37、動或人工布線3spice電路仿真革命性的特點1互動的電路仿真用戶甚至可以實時采用諸如ram,rom,鍵盤,馬達,led,lcd,ad/da,部分spi器件,部分iic器件。2仿真處理器及其外圍電路可以仿真51系列、avr、pic、arm、等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,proteus建立了完備的電子設計開發(fā)環(huán)境。器件庫超過27000種元器件,可方便地創(chuàng)建新元件;智能的器 件搜索:通過模糊搜索可以快速定位所需要的器件;智能化的連線功能:自動連線功能使連接導線簡單快捷,大大縮短繪圖時間;
38、支持總線結構:使用總線器件和總線布線使電路設計簡明清晰;可輸出高質量圖紙:通過個性化設置,可以生成印刷質量的bmp圖紙,可以方便地供word、powerpoint等多種文檔使用。仿真功能prospice混合仿真:基于工業(yè)標準spice3f5,實現(xiàn)數(shù)字/模擬電路的混合仿真;超過27000個仿真器件:可以通過內部原型或使用廠家的spice文件自行設計仿真器件,labcenter也在不斷地發(fā)布新的仿真器件,還可導入第三方發(fā)布的仿真器件; 多樣的激勵源:包括直流、正弦、脈沖、分段線性脈沖、音頻(使用wav文件)、指數(shù)信號、單頻fm、數(shù)字時鐘和碼流,還支持文件形式的信號輸入; 豐富的虛擬儀器:13種虛擬
39、儀器,面板操作逼真,如示波器、邏輯分析儀、信號發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖案發(fā)生器、頻率計/計數(shù)器、邏輯探頭、虛擬終端、spi調試器、i2c調試器等; 生動的仿真顯示:用色點顯示引腳的數(shù)字電平,導線以不同顏色表示其對地電壓大小,結合動態(tài)器件(如電機、顯示器件、按鈕)的使用可以使仿真更加直觀、生動; 高級圖形仿真功能(asf):基于圖標的分析可以精確分析電路的多項指標,包括工作點、瞬態(tài)特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等,還可以進行一致性分析。5.4 各模塊程序編程各模塊程序編程:1、主函數(shù)設計:/*函數(shù)聲明*/#include#include#defin
40、e uchar unsigned char#define uint unsigned intchar translate(int keycode);void arithmetic();void init_lcm();void write_data(char ddata);void write_com(char command);void check_bf();void clearlcd();void display(long a);void dealerror(); void dataoverflow();/*定義變量和數(shù)組*/long x=0,y=0,num=0;int operators,
41、input,iny=0;char key;char error5=error;char overflow8=overflow;sbit en=p34;sbit r_w=p35;sbit rs=p36;/*主函數(shù)*/main()ea=1;ex0=1;it0=1;p2=0xff;display(0);init_lcm();write_data(0x30);while(1)2、分塊程序設計:(1)鍵盤輸入檢測程序設計:有鍵按下時,單片機響應外部中斷0,轉入外部中斷0中斷處理函數(shù),在中斷處理函數(shù)中完成對按鍵的判斷,以進行下一步的程序處理。/*鍵值轉化為鍵盤上按鍵值函數(shù)*/char translate(
42、int keycode)switch(keycode)case 0:return 7;break;case 1:return 4;break;case 2:return 1;break;case 3:return c;break;case 4:return 8;break;case 5:return 5;break;case 6:return 2;break;case 7:return 0;break;case 8:return 9;break;case 9:return 6;break;case 10:return 3;break;case 11:return =;break;case 12
43、:return /;break;case 13:return *;break;case 14:return -;break;case 15:return +;break; /*外部中斷0處理函數(shù)*/void int_0(void) interrupt 0 using 0key=translate(p2&0x0f);if(key=0) /判斷按下的鍵是否為數(shù)值num=num*10+(key-0);if (operators0)y=num;iny=1;elsex=num;if(num-134217728) /當前數(shù)值是否超出限定范圍display(num);elsedataoverflow();e
44、lseswitch(key)case c:x=0;y=0;num=0;iny=0;operators=0;display(num);break;case =:arithmetic();iny=0;operators=0;num=0;break;case +: if (operators)arithmetic();operators=1;num=0;break;case -: if (operators)arithmetic();operators=2;num=0;break;case *: if (operators)arithmetic();operators=3;num=0;break;c
45、ase /:if (operators)arithmetic();operators=4;num=0;break;(2)算術運算程序設計:/*算術運算函數(shù)*/void arithmetic()if (iny)switch(operators)case 1:x=x+y;num=x;if(num-134217728)display(num);elsedataoverflow();break;case 2:x=x-y;num=x;if(num-134217728)display(num);elsedataoverflow();break;case 3:x=x*y;num=x;if(num-13421
46、7728)display(num);elsedataoverflow();break;case 4:if (y=0)dealerror();elsex=x/y;num=x; if(num-134217728)display(num);elsedataoverflow();break;y=0;(3)lcd顯示程序設計:利用lcd靜態(tài)顯示,通過程序向lcd寫指令字或數(shù)據(jù)使lcd完成不同功能或顯示相應數(shù)據(jù)。/*lcd初始化函數(shù)*/void init_lcm()write_com(0x30);write_com(0x30);write_com(0x30);write_com(0x38);write_c
47、om(0x08);write_com(0x01);write_com(0x06);write_com(0x0e);/*lcd寫數(shù)據(jù)函數(shù)*/void write_data(char ddata)rs=1;/*寫指令*/r_w=0;en=1;/*使能信號開*/p1=ddata;/*將數(shù)據(jù)送入p1口*/en=0;/*使能信號關*/check_bf();/*lcd寫指令函數(shù)*/void write_com(char command)rs=0;/*寫指令*/r_w=0;en=1;/*使能信號開*/p1=command;/*將數(shù)據(jù)送入p1口*/en=0;/*使能信號關*/check_bf();/*lcd檢
48、查忙碌函數(shù)*/void check_bf()char i,x=0x80;p1=0xff;while(x&0x80)rs=0;r_w=1;en=1;x=p1;en=0;for (i=0;i10;i+);en=0;/*關閉使能信號*/*lcd清屏函數(shù)*/void clearlcd()write_com(0x01);/*lcd顯示函數(shù)*/void display(long a)long temp,b,c=-1;int lenth=1,i,j;clearlcd();if(a0;i-)b=1;for(j=0;ji-1;j+)b=b*10;write_data(0x30+a/b);a=a%b;(4)錯誤處理及提示程序設計:/*除數(shù)為處理函數(shù)*/void dealerror()int i=0;clearlcd();for(i=0;i5;i+)write_data(errori);/*數(shù)值溢出處理函數(shù)*/void dataoverflow()int i=0;clearlcd();for(i=0;i8;i+)write_data(overflowi);結 論本設計是基于51系列單片機來進行的數(shù)字計算器系統(tǒng)設計,完成計算器的鍵盤輸入,進行加、減、乘、除基本四則運算,并在lcd上顯示相應的結果;設計電路采用at89c52單片機為主要控制電路,利用mm74c922作為計算器4*4鍵盤的掃描ic讀取鍵盤
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療合同管理規(guī)范制度
- 第一單元+任務二《詩歌朗誦》課件-2024-2025學年統(tǒng)編版語文九年級上冊
- 石河子大學《影像診斷學》2021-2022學年第一學期期末試卷
- 防三無食品安全
- 石河子大學《包裝容器與紙盒結構》2023-2024學年第一學期期末試卷
- 沈陽理工大學《數(shù)據(jù)庫系統(tǒng)原理》2022-2023學年期末試卷
- 沈陽理工大學《科技文獻檢索與寫作》2022-2023學年第一學期期末試卷
- 沈陽理工大學《產(chǎn)品形導思維設計》2022-2023學年第一學期期末試卷
- 規(guī)范人事檔案和勞動合同
- 合股開店協(xié)議合同書模板
- 小議“雙減”政策及其落實措施效果研究
- 【企業(yè)杜邦分析國內外文獻綜述6000字】
- 區(qū)域地質調查及礦產(chǎn)普查專業(yè)畢業(yè)實習周記范文原創(chuàng)全套
- 錐坡工程量計算(支持斜交、溜坡計算)
- 自然災害風險管理
- 中國智庫名錄類別索引-社會智庫
- 世界七大洲及各個國家的英文名字
- 管溝回填土、砂施工方案及工藝方法
- 情緒的身體密碼-心理健康教育教案
- 2023年中考復習文言文比較訓練-《誡子書》與“世家子弟最易犯”
- GB/T 4339-1999金屬材料熱膨脹特征參數(shù)的測定
評論
0/150
提交評論