簡易計算器的設計_第1頁
簡易計算器的設計_第2頁
簡易計算器的設計_第3頁
簡易計算器的設計_第4頁
簡易計算器的設計_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、遼 寧 工 業(yè) 大 學 單片機原理及接口技術 課程設計(論文)題目: 簡易計算器的設計 院(系): 電氣工程學院 專業(yè)班級: 自動化132班 學 號: 130302044 學生姓名: 陸強 指導教師: (簽字)起止時間: 2016.6.6-2016.6.17 課程設計(論文)任務及評語院(系):電氣工程學院 教研室:自動化 學 號130302044學生姓名陸強專業(yè)班級自動化132班課程設計(論文)題目簡易計算器的設計課程設計(論文)任務課題完成的功能、設計任務及要求、技術參數實現功能簡易計算器采用4*4鍵盤輸入要計算的數字及要進行的計算操作,并顯示上次輸入的數據及結果,能夠進行加、減、乘、除的

2、運算,并存儲上次計算的值。硬件設計包括CPU選型、最小系統(tǒng)電路、按鍵電路、顯示電路等。設計任務及要求1、確定設計方案,畫出方案框圖。2、進行硬件電路的設計,包括元器件選擇,繪制原理圖。3、進行實物的制作4、繪出程序流程圖,并編寫完整程序。5、要求認真獨立完成所規(guī)定的全部內容;所設計的內容要求正確、合理。6、按學校規(guī)定的格式,撰寫、打印設計說明書一份;設計說明書應在4000字以上。技術參數密碼長度可修改,密碼可修改,密碼輸入正確,在顯示屏上出現Right,并控制開鎖;密碼錯誤出現Error,連續(xù)輸入錯誤三次,隔30S才能再次輸入。進度計劃1、布置任務,查閱資料,確定系統(tǒng)設計方案(2天)2、系統(tǒng)硬

3、件設計及實物制作(3天)3、系統(tǒng)軟件設計及編寫功能程序及調試(3天)4、撰寫、打印設計說明書(1天)5、驗收及答辯。(1天)指導教師評語及成績 平時: 論文質量: 答辯: 總成績: 指導教師簽字: 年 月 日注:成績:平時20% 論文質量60% 答辯20% 以百分制計算摘 要計算器是日常生活中比較的常見的電子產品之一。在各種智能化產品中也常常會用到計算器,而且在現代化系統(tǒng)中人們對計算器技術要求更加的嚴格和精確,因此計算器已成為生產中必不可少的設備。本設計的硬件包括4*4鍵盤、單片機最小系統(tǒng)、液晶顯示器,軟件包括C語言編程和KeiluVision5。簡易計算器的設計使得計算器的技術更加的成熟、簡

4、單。簡易計算器設計是以AT89C52單片機為核心的,輸入采用4*4矩陣鍵盤,簡易計算器不僅可以進行加、減、乘、除帶符號數字運算(八位整數),還可以進行負數運算和錯誤提示,并在液晶顯示器LCD1602上顯示操作結果。計算器的出現不僅使計算數據越來越方便,而且在算術方面節(jié)省了大量的計算時間。關鍵詞:單片機;矩陣鍵盤;液晶顯示;計算器 目 錄第1章 緒論1第2章 課程設計的方案22.1 概述22.2 系統(tǒng)組成總體結構2第3章 硬件設計33.1 單片機最小系統(tǒng)設計33.1.1 AT89S52單片機簡介33.1.2 AT89C52單片機的引腳功能及說明3 單片機最小系統(tǒng)設計53.2 液晶顯示器電路設計6

5、3.2.1 1602液晶顯示器的簡介6 液晶引腳說明7 液晶顯示模塊電路73.3 電源電路的設計83.4 按鍵電路設計83.5 總體電路圖設計9第4章 軟件設計104.1 主程序流程圖設計104.2 子程序流程圖設計10第5章 系統(tǒng)分析與調試125.1 系統(tǒng)調試125.2 實驗數據與分析12第6章 課程設計總結15參考文獻16附錄I17附錄II18第1章 緒論計算工具最早誕生于中國,中國古代最早采用的一種計算工具叫籌策,也被叫做算籌。這種算籌多用竹子制成,也有用木頭,獸骨充當材料的,約二百七十枚一束,放在布袋里可隨身攜帶。另外直到今天仍在使用的珠算盤,是中國古代計算工具領域中的另一項發(fā)明,明代

6、時的珠算盤已經與現代的珠算盤幾乎相同。 17世紀初,西方國家的計算工具有了較大的發(fā)展,英國數學家納皮爾發(fā)明的“納皮爾算籌”,英國牧師奧卻德發(fā)明了圓柱型對數計算尺,這種計算尺不僅能做加、減、乘、除、乘方和開方運算,甚至可以計算三角函數、指數函數和對數函數。這些計算工具不僅帶動了計算器的發(fā)展,也為現代計算器發(fā)展奠定了良好的基礎,成為現代社會應用廣泛的計算工具。1642年,年僅19歲的法國偉大科學家帕斯卡引用算盤的原理,發(fā)明了第一部機械式計算器,在他的計算器中有一些互相聯鎖的齒輪,一個轉過十位的齒輪會使另一個齒輪轉過一位,人們可以像撥電話號碼盤那樣,把數字撥進去,計算結果就會出現在另一個窗口中,但是

7、它只能做加減運算。1694年,萊布尼茲在德國將其改進成可以進行乘除的計算。此后,一直到20世紀50年代末才有電子計算器的出現。電子計算器的出現給人們帶來了很大的方便,不僅使計算更為方便,而且使計算結果更加準確,人們的日常生活中已經離不開計算器了,社會的各個角落都有它的身影,比如商店,辦公室,學校等計算器電源采用交流轉換器或電池,電池可用交流轉換器或太陽能轉換器再充電。為節(jié)省電能,計算器都采用CMOS工藝制作的大規(guī)模集成電路(見互補金屬-氧化物-半導體集成電路),并在內部裝有定時不操作自動斷電電路。計算器可選用的外圍設備有微型打印機、盒式磁帶機和磁卡機等。現在社會大部分使用的是都是科學計算器,簡

8、易計算器在我們日常生活中已經不常見了,但是它的設計非常重要,科學計算器只是在簡易計算器的設計的基礎上加以改動,加部分功能,但是如是沒有簡易計算器的出現,科學計算器也不會出現及普及,因為簡易計算器是最基礎的,但同時也是最重要的,所以簡易計算器的設計顯得尤為重要。第2章 課程設計的方案2.1 概述計算器一般由運算器、控制器、存儲器、鍵盤、顯示器、電源和一些可選外圍設備及電子配件通過人工或機器設備組成。低檔計算器的運算器、控制器由數字邏輯電路實現簡單的串行運算,其隨機存儲器只有一、二個單元,提供累加存儲用。鍵盤是計算器的輸入部件,一般采用接觸式或傳感式。為減少計算器的尺寸,一鍵常常有很多功能。顯示器

9、是計算器的輸出部件,有發(fā)光二極管顯示器或液晶顯示器等。除顯示加、減、乘、除的計算結果外,還有負數運算、錯誤顯示等。2.2 系統(tǒng)組成總體結構AT89C52主控制模塊液晶顯示模塊晶振模塊 矩陣鍵盤模塊電源模塊圖2.1系統(tǒng)框圖本設計是以STC89C52單片機為核心器件,配合電阻電容晶振等器件,構成單片機的最小系統(tǒng)。其它個模塊圍繞著單片機最小系統(tǒng)展開。其中包括,顯示設備采用1602液晶,該液晶可以進行2行內容的顯示。對于本設計來說,第1行顯示輸入的內容,第2行顯示計算結果。輸入設備采用4*4的矩陣鍵盤,共16個按鍵,除去10個數字鍵后,剩下的六個按鍵功能分別為加、減、乘、除、等于、清除。電源供電則采用

10、USB的形式,常用的供電電源可以是手機充電器、移動電源、電腦USB口等。第3章 硬件設計3.1 單片機最小系統(tǒng)設計3.1.1 AT89S52單片機簡介單片機是單片微型機的簡稱,故又稱為微控制器MCU(Micro Control Unit)。通常由單塊集成電路芯片組成,內部包含有計算機的基本功能部件:中央處理器CPU,存儲器和I/O接口電路等。因此,單片機只要和適當的軟件及外部設備相結合,便可成為一個單片機控制系統(tǒng)。單片機廣泛用于智能產品,智能儀表,測控技術,智能接口等,具有操作簡單,實用方便,價格便宜等優(yōu)點,而其中AT89S52以MCS-51為內核,是單片機中最典型的代表,應用于各種控制領域。

11、 AT89S52單片機是一種低功耗高性能的CMOS8位微控制器,內置8KB可在線編程閃存。該器件采用Atmel公司的高密度非易失性存儲技術生產,其指令與工業(yè)標準的80C51指令集兼容。片內程序存儲器允許重復在線編程,允許程序存儲器在系統(tǒng)內通過SPI串行口改寫或用同用的非易失性存儲器改寫。通過把通用的8位CPU與可在線下載的Flash集成在一個芯片上,AT89S52便成為一個高效的微型計算機。它的應用范圍廣,可用于解決復雜的控制問題,且成本較低。AT89S52單片機如圖3.1所示。 圖3.1 單片機AT89C523.1.2 AT89C52單片機的引腳功能及說明STC89C52有40個引腳,32個

12、外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數器,2個全雙工串行通信口,2個讀寫口線??臻e模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。STC89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產品的需求。AT89C52的主要功能特性如下:1)兼容MCS51指令系統(tǒng);2)8k可反復擦寫(1000次)Flash ROM; 3)32個雙向I/O口; 4)256*8bit內部RAM ;5)3個16位可編程定時/計數器

13、中斷;6)時鐘頻率0-24MHz; 7)2個串行中斷;8)可編程UART串行通道; 9)2個外部中斷源; 10)共8個中斷源; 11)2個讀寫中斷口線; 12)3級加密位; 13)低功耗空閑和掉電模式; 14)軟件設置睡眠和喚醒功能;AT89C52系列單片機一般采用40個引腳,雙列直插式封裝,用HMOS工藝制造,其外部引腳排列如圖3.2所示。其中,各引腳的功能為: 圖3.2 AT89C52的引腳圖 1)主電源引腳VCC(40腳),接5V電源正端;GND(20腳),接5V電源地端;2)外接晶體或外部振蕩器引腳XTAL1(19腳),接外部晶振和微調電容的一個引腳。在單片機內部,它是振蕩電路的一個反

14、相放大器的輸入端,振蕩電路的頻率就是晶體的固有頻率。當采用外部振蕩器時,此引腳應接地。XTAL2(18腳),接外部晶振和微調電容的另一個引腳。在片內接至反相放大器的輸出端和內部時鐘電路的輸入端。當采用外部振蕩器時,此腳接外部振蕩器的輸出端。3)控制信號線RESET(9腳),復位信號輸入端,復位/掉電時內部RAM的備用電源輸入端。ALE(30腳),地址鎖存允許/編程脈沖輸入,用ALE鎖存從P0口輸出的低8位地址。在對片內EPROM編程時,編程脈沖由此輸入。PSEN (29腳),外部程序存儲器讀選通信號,PSEN端可以驅動8個LSTTL門電路,低電平有效。EA(31腳),訪問外部存儲器允許/編程電

15、壓輸入。EA為高電平時,訪問內部存儲器;低電平時,訪問外部存儲器。3.1.3 單片機最小系統(tǒng)設計基于ST89C52的單片機最小系統(tǒng)如圖3.3所示,整個單片機最小系統(tǒng)由復位電路部分、晶振電路部分、輔助電路等三個部分組成。復位電路是由極性電容C1和電阻R3組成的,其中電容C1為10uF,電阻R3的阻值為10K,復位電路的工作原理是利用電容電壓不能突變的性質進行設計的,一旦供電,RESET腳就會出現高電平,并且高電平持續(xù)時間是由R和C的大小決定的,只有當RESET引腳上出現兩次及兩次以上的高電平才會復位,所以選取適當的R和C就可以保證及精準又可靠的復位。晶振電路是由兩個電容及一個晶振組成的,其中兩個

16、電容分別為C2和C3,其大小為30pF,晶振X1的大小為12M。電容的作用是幫助晶振更加容易的起振,所以電容的大小將影響起振的效果,晶振越大效果越好,取值范圍為15-33pF,所以我們取整數30pF。而晶振的取值也可以是24M,因為晶振越大單片機的執(zhí)行速度就越快,所以在設計單片機最小系統(tǒng)時,晶振電路離單片機越近越好。輔助電路是由一個10K大的排阻R1和電源組成,其作用就是在擴展I/O口時使用,以便接LCD1602液晶顯示器。因為STC89C52的P0口是漏極開路輸出,所以在P0口接了一個10K的排阻R1,這樣子就可以使P0口作為普通的I/O口使用,而且P0口還得以充分利用,P2口用作擴展用,用

17、于接外部擴展的RAM和ROM,本設計用P0口來做液晶的數據口。單片機最小系統(tǒng)如圖3.3所示。圖3.3 單片機最小系統(tǒng)電路3.2 液晶顯示器電路設計3.2.1 1602液晶顯示器的簡介液晶顯示器是一種顯示器件,具有小體積、輕重量、低功耗等特色。由于其功耗低、顯示的信息量大(例如,文本,圖形,曲線等)、無電磁輻射、使用壽命長,它已被廣泛應用在便攜式電子產品。本系統(tǒng)采用的1602是一款物美價廉的液晶顯示屏,可以顯示2行標準字符,每行共有16個字符。在通信系統(tǒng),智能操作儀表和辦公設備的自動化中被廣泛的應用,主要功能是顯示ASCII字符,因此被稱為“字符型顯示裝置”。當在內部沒有適合的漢字庫的液晶類型顯

18、示器想要表達漢字的時候,第一步就是要獲得想要的漢文或者圖形的子模數據。子模塊的軟件不能直接提取子模塊的數據5*8點陣,可以從手工提取漢字的字體以模具。第二步,把取得的漢字子模數據保存在液晶存儲器里面。1602LCD主要技術參數:u1)顯示容量:16*2個字符u2)芯片工作電壓:4.55.5Vu3)工作電流:2.0mA(5.0V)u4)模塊最佳工作電壓:5.0Vu5)字符尺寸:2.95*4.35(W*H)mm3.2.2 液晶引腳說明第1腳:接地電源VSS。 第2腳:5V正電源為VDD。 第3腳:VL為液晶顯示器對比度調整的端口,對比度的強弱由接電源的不同決定,對比度的調整可以通過一個10k的電位

19、器。 第4腳:RS是寄存器選擇,高水平的數據寄存器,低選擇指令寄存器。 第5腳:R / W的讀和寫信號線,高水平低的讀操作,寫操作。 第6腳:使能端E,當E端由1至0時,液晶模塊中的命令開始被運行。 第7至14腳:D0-D7為8位雙向數據線。第15腳:背光源正極。 第16腳:背光源負極。3.2.3 液晶顯示模塊電路液晶模塊的電路的連接圖如圖3.4所示,LCD1602一共有16個引腳,引腳1和引腳2分別接到了電路的地和電源,這2個腳是液晶工作時電源輸入端引腳。而第3引腳則是通過一個10K的滑動電阻器連接到地端,可通過調節(jié)該電位器來調節(jié)液晶的清晰度。第4腳是液晶的寄存器控制腳,接到了單片機的P12

20、腳上。第5腳是液晶的讀寫控制腳,接到了單片機的P13腳上。第6腳是液晶的使能端腳,接到了單片機的P14腳上。第7腳到第14腳是液晶的數據/地址8位總線,接到了單片機的P0口上。最后第15腳和第16腳是液晶的背光電源腳,直接連接系統(tǒng)VCC和GND。 圖3.4 液晶模塊連接圖3.3 電源電路的設計本設計是采用USB借口提供電源供電的,由于通過USB的電源輸出的電壓都為5V,符合給單片機和液晶的供電電壓,所以可以直接給單片機和液晶供電,電源電路設計較為簡單,不需要加穩(wěn)壓和降壓電路,只需要一個USB接口和按鍵開關即可,電源電路的連接圖如圖3.5所示。 圖3.5 電源電路3.4 按鍵電路設計按鍵電路的設

21、計是采用4*4的是16個按鍵的矩陣式按鍵。鍵盤是單片機系統(tǒng)中最常用的人機對話輸入設備,用戶通過鍵盤向單片機輸入數據或指令。鍵盤控制程序需完成的任務有:監(jiān)測是否有鍵按下,有鍵按下時,在無硬件去抖的動電路時,應用軟件延時方法消除按鍵抖動影響;當有多個鍵同時按下時,只處理一個按鍵,不管一次按鍵持續(xù)多長時間,僅執(zhí)行一次按鍵功能程序。矩陣按鍵掃描程序是一種節(jié)省I/O口的方法,按鍵數目越多節(jié)省I/O口就越可觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程序的寫法上,采用了最簡單的方法,使得程序效率最高。本程序中,如果檢測到某鍵按下了,就不再檢測其它的按鍵,這完全能滿足

22、絕大多數需要,又能節(jié)省大量的CPU時間。本鍵盤掃描程序的優(yōu)點在于:不用專門的按鍵延時程序,提高了CPU效率,也不用中斷來掃描鍵盤,節(jié)省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用CPU時最短,不論有鍵按下或者無鍵按下都可以在很短的時間完成一次掃描。本設計由于用到的按鍵比較多,故采用矩陣鍵盤的方式和單片機進行連接,不同按鍵按下具有不同的按鍵功能,本設計共用到的按鍵共16個,除去10個數字鍵后,剩下的六個按鍵功能分別為加、減、乘、除、等于、清除。按鍵的連接圖3.6所示。 圖3.6 按鍵電路3.5 總體電路圖設計總體電路圖見附錄I所示。第4章 軟件設計4.1 主程序流程圖設計主程序的功能主要是LC

23、D顯示與清屏、液晶的光標定位、液晶初始化、鍵盤掃描、按鍵處理、子程序調用和判斷當前狀態(tài)等。主程序的設計是整個程序設計的最重要的部分,不僅可以體現設計人的思想結構,還可以體現出設計人對設計理解的深度和認識的程度。主程序流程圖如下圖4.1所示。開始系統(tǒng)初始化LCD顯示按鍵處理判斷當前狀態(tài)是否繼續(xù)進行?Y是否N結束圖4.1 主程序流程圖4.2 子程序流程圖設計子程序設計包括鍵盤掃描子程序和顯示模塊子程序的設計。鍵盤掃描子程序,首先讀出P1的低四位,然后讀出P1口的高四位。然后鍵值并顯示緩存。然后將鍵如的值轉換為ASCII碼然后就可以軟件來設置硬件按鍵各個鍵代表的內容。讀鍵程序使用的是反轉法讀鍵,不管

24、鍵盤矩陣的規(guī)模大小,均進行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤信息(列信息);第二次所有列線均輸出低電平,從所有行線讀入鍵盤信息(行信息)。數字鍵按下則將相應的數字送入緩存區(qū),功能鍵按下則執(zhí)行相應的程序。顯示模塊程序首先要對顯示模塊進行初始化;然后控制光標的位置;定義液晶顯示的控制端口,用SBIT指令完成;然后設置清屏、關閉顯示、歸位、開顯示、顯示位置的首地址等等。子程序的設計是整個設計的中間部分,用于主程序中的指令的調用,主要是運算部分的加、減、乘、除和功能部分的等于、清零等。除此之外,在本設計中又添加了錯誤顯示和負數運算的功能。子程序流程圖如下圖4.2所示。開始 清屏掃描鍵

25、盤加減乘除運算子程序液晶顯示顯示結束?N Y 返回圖4.2 子程序流程圖第5章 系統(tǒng)調試與分析5.1 系統(tǒng)調試調試是整個系統(tǒng)功能否實現的關鍵步驟,我們將整個調試過程分為兩大部分:硬件調試和軟件調試。硬件調試主要工具是萬用表和烙鐵等工具,主要是為了排查板子焊錯線、焊少線、短路和斷路等情況??赏ㄟ^電壓、電流、電阻等物理量的測量,再進行推測,最終發(fā)現存在問題的地方,利用烙鐵進行維修。通常軟件調試應具備四種技能,跟蹤、斷點、查看變量和更改數值等。整個程序是一個主程序調用各個子程序實現功能的過程,要使主程序和整個程序都能平穩(wěn)運行,各個模塊的子程序的正確與平穩(wěn)運行必不可少,所以在軟件調試的最初階段就是把各

26、個子程序模塊進行分別調試。5.2 實驗數據與分析本設計是簡易計算器的設計,由單片機最小系統(tǒng)、矩陣鍵盤、液晶顯示、晶振電路等部分組成,具體實物如下圖5.1所示。 圖5.1 實物圖 此設計是簡易計算器的設計,除存在一些簡單的運算如:加、減、乘、除等基本運算外,還有錯誤顯示、負數運算等部分功能,以下為實物運行狀態(tài)下的簡單運行的結果:1)加減法運算:例如9加6等于15得運算如下圖5.2所示,9減4等于5的運算如圖5.3所示。圖5.2 加法運算 圖5.3 減法運算2)乘除法運算:例如2乘以8等于16的運算如下圖5.4所示,99除以9等于11的運算如下圖5.5所示。圖5.4 乘法運算圖5.5 除法運算 本

27、次設計加減法的最高位只能為4位數,超過四位數將不顯示,運行結果將只會運行之前顯示的前四位數之間的運算,也就是說當按鍵被按下五次,五次之間沒有運算符號鍵的按下時,將只顯示前四次的按鍵結果,同時不顯示的數也不會參與運算。 簡易計算器的設計不僅只有加、減、乘、除等基本運算,而且還有負數運算和錯誤顯示的功能,使得計算器更加靈活,應用更為方便,所適用的場合也越來越多。3)錯誤顯示:當除數為0時出現錯誤顯示,例如22除以0出現錯誤的運算如下圖5.6所示。 圖5.6錯誤顯示4)負數運算:例如3減去9等于負6的運算如下圖5.7所示。圖5.7負數運算以上為簡易計算器的加、減、乘、除及負數運算和錯誤顯示的結果,從

28、顯示中可以看出來本次設計的程序是對的,運算結果沒有錯誤,這也間接告訴我們中間的焊接過程也沒有出現問題,所以總結來說,本次設計還是比較成功的。第6章 課程設計總結單片機課程設計終于結束了,通過緊張的工作,完成了我的設計任務-簡易計算器的設計??偟膩碚f,這次課程設計是還算成功的。當然,這其中也經歷了許多坎坷,但是在我的堅持不懈下,在郭老師的細心指導下,在同學們的熱情幫助下,最終克服了種種困難,取得了成功。 剛開始接到這個計算器的課程設計任務時,因為以前動手實踐做過類似的題目,于是在腦海中初步構建了編寫程序的一些控制程序。但是由于缺乏編寫大量程序的經驗,不能如行云流水般的將全部的各部分代碼寫出,于是

29、去網上查找相關資料,了解計算器的輸入控制原理、運算處理以及顯示的原理。了解之后自己嘗試編寫程序,在此過程中,其中鍵盤掃描和動態(tài)掃描顯示掃描程序困擾了我很久,經過幾天的辛苦工作,終于初步把所需要的程序編好了,于是就用Keil uversion5進行仿真,在仿真期間也發(fā)現了許多錯誤,基本上都是平日容易犯的錯誤,比如忘記了子程序標號、死循環(huán)程序、標點符號的漏寫等。經過反復的編譯差錯,仿真編譯通過后,Keil生成的Hex文件.然后將Hex文件導入仿真軟件進行仿真,發(fā)現軟件與硬件不能夠對應協調工作,于是分別對軟件和硬件進行檢查,經過反復的仿真調試,并且在郭老師和同學的熱心幫助和自己對每個子程序進行仿真觀

30、察下,終于在設計快結束時成功的調試出結果了。這就是我的課程設計的經過,看似簡單,過程卻曲折艱辛。通過這次單片機課程設計,我進一步加深了對單片機的了解。并進一步熟練了對Keil軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發(fā)現自己以前學習上存在的不足,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,對C語言掌握得不夠好。通過與同學探討和請教老師,終于把問題都解決了,并加深了對計算器工作的原理的了解。做單片機課程設計時,先查閱相關知識,把原理吃透,確定一個大的設計方向,在按照這個方向分模塊的把要實現的功能用流程圖的形式展示。學會了怎么樣去制定計劃,怎么樣去實現這個計劃,并掌握了在執(zhí)行過程中

31、怎么樣去克服心理上的不良情緒??傊?,通過這次課程的設計,進一步了解了單片機的應用及原理,收獲很大,對軟件編程、排錯調試、查閱資料等方面得到較全面的鍛煉和提高。參考文獻1 樓然苗,李光飛.單片機課程設計指導M.北京:北京航空航天大學出版社,2012. 2 梅麗鳳,王艷秋.單片機原理及接口技術M.北京:清華大學出版社,2015.3 顏暉.C語言程序設計M.北京:高等教育出版社,2012.4 徐昆良,基于AT89C52單片機的簡易計算器設計與仿真J.電腦知識與技術.2015,24(16):14-20.5 槽瑞,徐森.基于單片機的計算器的設計J.科技視界.2012,12(4):121-121. 6 宋

32、慧超.簡易計算器的設計與仿真J.科技創(chuàng)新導報.2015,23(29):7-9.7 吳洋.基于單片機的建議計算器的設計J.電子世界.2016,34(8):56-56.8 李峽.基于單片機控制的簡易計算器J.電子產品世界.2012,39(9):10-11.9 吳芳琴.基于單片機的簡易計算器設計J.電子世界.2015,17(19):20-22.10 劉利華.簡易計算器的設計與制作J.無線互聯網科技.2014,13(4):17-19.11 程曉艷.基于單片機控制的計算器設計J.才智創(chuàng)新.2013,13(4):5-7.12 董雷剛.基于單片機的計算器的設計J.電腦知識技術.2012,31(4):42-4

33、4.13 周懷芳.簡易計算器的設計與實現J.天津聯合學報.2013,25(6):11-12.14 王麗琴.數字式計算器設計與仿真J.現代制造技術.2015,21(6):75-75.15 李嘉誠.簡易數學計算器設計與實現J.軟件導刊.2015,35(5):14-16.附錄I 總體電路圖附錄II #include / 包含51單片機相關的頭文件#define uchar unsigned char/ 以后unsigned char 就可以用uchar代替#define uint unsigned int/ 以后unsigned int 就可以用uint 代替#define ulong unsign

34、ed long/ 以后unsigned ulong就可以用ulong代替sbit LcdRs_P = P27; / 1602液晶的RS管腳 sbit LcdRw_P = P26; / 1602液晶的RW管腳 sbit LcdEn_P = P25; / 1602液晶的EN管腳uint num1;/ 運算數1uint num2; / 運算數2ulong num3; / 計算結果uchar cal; / 運算符號,1加,2減,3乘,4除uchar num1_flag;/ 運算數1的輸入標志uchar num2_flag;/ 運算數2的輸入標志void DelayMs(uint time)uint i

35、,j;for(i=0;itime;i+)for(j=0;j112;j+);/ 1602液晶寫命令函數,cmd就是要寫入的命令void LcdWriteCmd(uchar cmd) LcdRs_P = 0; LcdRw_P = 0; LcdEn_P = 0; P0=cmd;DelayMs(2); LcdEn_P = 1; DelayMs(2); LcdEn_P = 0; / 1602液晶寫數據函數,dat就是要寫入的命令void LcdWriteData(uchar dat) LcdRs_P = 1; LcdRw_P = 0; LcdEn_P = 0; P0=dat;DelayMs(2); Lc

36、dEn_P = 1; DelayMs(2); LcdEn_P = 0; / 1602液晶初始化函數void LcdInit() LcdWriteCmd(0x38); / 16*2顯示,5*7點陣,8位數據口 LcdWriteCmd(0x0C); / 開顯示,不顯示光標 LcdWriteCmd(0x06); / 地址加1,當寫入數據后光標右移 LcdWriteCmd(0x01); / 清屏 / 液晶光標定位函數void LcdGotoXY(uchar line,uchar column)/ 第一行 if(line=0) LcdWriteCmd(0x80+column); / 第二行 if(lin

37、e=1) LcdWriteCmd(0x80+0x40+column); / 液晶輸出字符串函數void LcdPrintStr(uchar *str) while(*str!=0) LcdWriteData(*str+);/ 液晶輸出數字void LcdPrintNum(uchar num)LcdWriteData(num+0x30); / 矩陣鍵盤掃描程序,按鍵對應的返回值如下所示:/ | 第1列 第2列 第3列 第4列 |/ |第1行 1 2 310 |/ |第2行 4 5 6 11 |/ |第3行 7 8 9 12 |/ |第4行 13 0 14 15 |/ -/ 如果掃描不到有按鍵按下

38、,則返回99 char KeyScanf() uchar ret=99; uchar temp;/*第一行按鍵的判斷*/ P1=0xfe;/ 讓P10口為低電平 temp=P1&0xf0;/ 變量temp保存P1口高4位的電平狀態(tài) switch(temp)/ 根據temp變量的值,判斷不同的按鍵case 0x70: ret=1; break;/ 第一個按鍵被按下case 0xb0: ret=2; break;/ 第二個按鍵被按下case 0xd0: ret=3; break;/ 第三個按鍵被按下case 0xe0: ret=10; break; / 第四個按鍵被按下/*第二行按鍵的判斷*/ P

39、1=0xfd;/ 讓P11口為低電平 temp=P1&0xf0;/ 變量temp保存P1口高4位的電平狀態(tài) switch(temp)/ 根據temp變量的值,判斷不同的按鍵case 0x70: ret=4; break;/ 第一個按鍵被按下case 0xb0: ret=5; break;/ 第二個按鍵被按下case 0xd0: ret=6; break;/ 第三個按鍵被按下case 0xe0: ret=11; break; / 第四個按鍵被按下/*第三行按鍵的判斷*/ P1=0xfb;/ 讓P12口為低電平 temp=P1&0xf0;/ 變量temp保存P1口高4位的電平狀態(tài) switch(t

40、emp)/ 根據temp變量的值,判斷不同的按鍵case 0x70: ret=7; break;/ 第一個按鍵被按下case 0xb0: ret=8; break;/ 第二個按鍵被按下case 0xd0: ret=9; break;/ 第三個按鍵被按下case 0xe0: ret=12; break; / 第四個按鍵被按下/*第四行按鍵的判斷*/ P1=0xf7;/ 讓P13口為低電平 temp=P1&0xf0;/ 變量temp保存P1口高4位的電平狀態(tài) switch(temp)/ 根據temp變量的值,判斷不同的按鍵case 0x70: ret=13; break;/ 第一個按鍵被按下cas

41、e 0xb0: ret=0; break;/ 第二個按鍵被按下case 0xd0: ret=14; break;/ 第三個按鍵被按下case 0xe0: ret=15; break; / 第四個按鍵被按下return ret; / 返回按鍵的掃描結果/ 主函數void main() uchar ret; uchar i; LcdInit();while(1) LcdWriteCmd(0x01); / 清除屏幕顯示LcdWriteCmd(0x0f); / 開啟光標閃爍num1=0; / 運算數1 清零num2=0;/ 運算數2 清零num3=0; / 計算結果 清零cal=0; / 運算符號 清零i=0; / 臨時變量 清零num1_flag=0;/ 運算數1輸入標志 清零num2_flag=0; / 運算數2輸入標志 清零while(1)ret=KeyScanf(); / 讀取矩陣鍵盤的掃描結果if(ret!=99)/ 返回值不等于99,說明有按鍵按下了 /*檢測到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論