版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、遼 寧 工 業(yè) 大 學(xué) 單片機(jī)原理及接口技術(shù) 課程設(shè)計(jì)(論文)題目: 簡(jiǎn)易計(jì)算器的設(shè)計(jì) 院(系): 電氣工程學(xué)院 專業(yè)班級(jí): 自動(dòng)化132班 學(xué) 號(hào): 130302044 學(xué)生姓名: 陸強(qiáng) 指導(dǎo)教師: (簽字)起止時(shí)間: 2016.6.6-2016.6.17 課程設(shè)計(jì)(論文)任務(wù)及評(píng)語(yǔ)院(系):電氣工程學(xué)院 教研室:自動(dòng)化 學(xué) 號(hào)130302044學(xué)生姓名陸強(qiáng)專業(yè)班級(jí)自動(dòng)化132班課程設(shè)計(jì)(論文)題目簡(jiǎn)易計(jì)算器的設(shè)計(jì)課程設(shè)計(jì)(論文)任務(wù)課題完成的功能、設(shè)計(jì)任務(wù)及要求、技術(shù)參數(shù)實(shí)現(xiàn)功能簡(jiǎn)易計(jì)算器采用4*4鍵盤輸入要計(jì)算的數(shù)字及要進(jìn)行的計(jì)算操作,并顯示上次輸入的數(shù)據(jù)及結(jié)果,能夠進(jìn)行加、減、乘、除的
2、運(yùn)算,并存儲(chǔ)上次計(jì)算的值。硬件設(shè)計(jì)包括CPU選型、最小系統(tǒng)電路、按鍵電路、顯示電路等。設(shè)計(jì)任務(wù)及要求1、確定設(shè)計(jì)方案,畫出方案框圖。2、進(jìn)行硬件電路的設(shè)計(jì),包括元器件選擇,繪制原理圖。3、進(jìn)行實(shí)物的制作4、繪出程序流程圖,并編寫完整程序。5、要求認(rèn)真獨(dú)立完成所規(guī)定的全部?jī)?nèi)容;所設(shè)計(jì)的內(nèi)容要求正確、合理。6、按學(xué)校規(guī)定的格式,撰寫、打印設(shè)計(jì)說(shuō)明書一份;設(shè)計(jì)說(shuō)明書應(yīng)在4000字以上。技術(shù)參數(shù)密碼長(zhǎng)度可修改,密碼可修改,密碼輸入正確,在顯示屏上出現(xiàn)Right,并控制開鎖;密碼錯(cuò)誤出現(xiàn)Error,連續(xù)輸入錯(cuò)誤三次,隔30S才能再次輸入。進(jìn)度計(jì)劃1、布置任務(wù),查閱資料,確定系統(tǒng)設(shè)計(jì)方案(2天)2、系統(tǒng)硬
3、件設(shè)計(jì)及實(shí)物制作(3天)3、系統(tǒng)軟件設(shè)計(jì)及編寫功能程序及調(diào)試(3天)4、撰寫、打印設(shè)計(jì)說(shuō)明書(1天)5、驗(yàn)收及答辯。(1天)指導(dǎo)教師評(píng)語(yǔ)及成績(jī) 平時(shí): 論文質(zhì)量: 答辯: 總成績(jī): 指導(dǎo)教師簽字: 年 月 日注:成績(jī):平時(shí)20% 論文質(zhì)量60% 答辯20% 以百分制計(jì)算摘 要計(jì)算器是日常生活中比較的常見的電子產(chǎn)品之一。在各種智能化產(chǎn)品中也常常會(huì)用到計(jì)算器,而且在現(xiàn)代化系統(tǒng)中人們對(duì)計(jì)算器技術(shù)要求更加的嚴(yán)格和精確,因此計(jì)算器已成為生產(chǎn)中必不可少的設(shè)備。本設(shè)計(jì)的硬件包括4*4鍵盤、單片機(jī)最小系統(tǒng)、液晶顯示器,軟件包括C語(yǔ)言編程和KeiluVision5。簡(jiǎn)易計(jì)算器的設(shè)計(jì)使得計(jì)算器的技術(shù)更加的成熟、簡(jiǎn)
4、單。簡(jiǎn)易計(jì)算器設(shè)計(jì)是以AT89C52單片機(jī)為核心的,輸入采用4*4矩陣鍵盤,簡(jiǎn)易計(jì)算器不僅可以進(jìn)行加、減、乘、除帶符號(hào)數(shù)字運(yùn)算(八位整數(shù)),還可以進(jìn)行負(fù)數(shù)運(yùn)算和錯(cuò)誤提示,并在液晶顯示器LCD1602上顯示操作結(jié)果。計(jì)算器的出現(xiàn)不僅使計(jì)算數(shù)據(jù)越來(lái)越方便,而且在算術(shù)方面節(jié)省了大量的計(jì)算時(shí)間。關(guān)鍵詞:?jiǎn)纹瑱C(jī);矩陣鍵盤;液晶顯示;計(jì)算器 目 錄第1章 緒論1第2章 課程設(shè)計(jì)的方案22.1 概述22.2 系統(tǒng)組成總體結(jié)構(gòu)2第3章 硬件設(shè)計(jì)33.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)33.1.1 AT89S52單片機(jī)簡(jiǎn)介33.1.2 AT89C52單片機(jī)的引腳功能及說(shuō)明3 單片機(jī)最小系統(tǒng)設(shè)計(jì)53.2 液晶顯示器電路設(shè)計(jì)6
5、3.2.1 1602液晶顯示器的簡(jiǎn)介6 液晶引腳說(shuō)明7 液晶顯示模塊電路73.3 電源電路的設(shè)計(jì)83.4 按鍵電路設(shè)計(jì)83.5 總體電路圖設(shè)計(jì)9第4章 軟件設(shè)計(jì)104.1 主程序流程圖設(shè)計(jì)104.2 子程序流程圖設(shè)計(jì)10第5章 系統(tǒng)分析與調(diào)試125.1 系統(tǒng)調(diào)試125.2 實(shí)驗(yàn)數(shù)據(jù)與分析12第6章 課程設(shè)計(jì)總結(jié)15參考文獻(xiàn)16附錄I17附錄II18第1章 緒論計(jì)算工具最早誕生于中國(guó),中國(guó)古代最早采用的一種計(jì)算工具叫籌策,也被叫做算籌。這種算籌多用竹子制成,也有用木頭,獸骨充當(dāng)材料的,約二百七十枚一束,放在布袋里可隨身攜帶。另外直到今天仍在使用的珠算盤,是中國(guó)古代計(jì)算工具領(lǐng)域中的另一項(xiàng)發(fā)明,明代
6、時(shí)的珠算盤已經(jīng)與現(xiàn)代的珠算盤幾乎相同。 17世紀(jì)初,西方國(guó)家的計(jì)算工具有了較大的發(fā)展,英國(guó)數(shù)學(xué)家納皮爾發(fā)明的“納皮爾算籌”,英國(guó)牧師奧卻德發(fā)明了圓柱型對(duì)數(shù)計(jì)算尺,這種計(jì)算尺不僅能做加、減、乘、除、乘方和開方運(yùn)算,甚至可以計(jì)算三角函數(shù)、指數(shù)函數(shù)和對(duì)數(shù)函數(shù)。這些計(jì)算工具不僅帶動(dòng)了計(jì)算器的發(fā)展,也為現(xiàn)代計(jì)算器發(fā)展奠定了良好的基礎(chǔ),成為現(xiàn)代社會(huì)應(yīng)用廣泛的計(jì)算工具。1642年,年僅19歲的法國(guó)偉大科學(xué)家帕斯卡引用算盤的原理,發(fā)明了第一部機(jī)械式計(jì)算器,在他的計(jì)算器中有一些互相聯(lián)鎖的齒輪,一個(gè)轉(zhuǎn)過(guò)十位的齒輪會(huì)使另一個(gè)齒輪轉(zhuǎn)過(guò)一位,人們可以像撥電話號(hào)碼盤那樣,把數(shù)字撥進(jìn)去,計(jì)算結(jié)果就會(huì)出現(xiàn)在另一個(gè)窗口中,但是
7、它只能做加減運(yùn)算。1694年,萊布尼茲在德國(guó)將其改進(jìn)成可以進(jìn)行乘除的計(jì)算。此后,一直到20世紀(jì)50年代末才有電子計(jì)算器的出現(xiàn)。電子計(jì)算器的出現(xiàn)給人們帶來(lái)了很大的方便,不僅使計(jì)算更為方便,而且使計(jì)算結(jié)果更加準(zhǔn)確,人們的日常生活中已經(jīng)離不開計(jì)算器了,社會(huì)的各個(gè)角落都有它的身影,比如商店,辦公室,學(xué)校等計(jì)算器電源采用交流轉(zhuǎn)換器或電池,電池可用交流轉(zhuǎn)換器或太陽(yáng)能轉(zhuǎn)換器再充電。為節(jié)省電能,計(jì)算器都采用CMOS工藝制作的大規(guī)模集成電路(見互補(bǔ)金屬-氧化物-半導(dǎo)體集成電路),并在內(nèi)部裝有定時(shí)不操作自動(dòng)斷電電路。計(jì)算器可選用的外圍設(shè)備有微型打印機(jī)、盒式磁帶機(jī)和磁卡機(jī)等?,F(xiàn)在社會(huì)大部分使用的是都是科學(xué)計(jì)算器,簡(jiǎn)
8、易計(jì)算器在我們?nèi)粘I钪幸呀?jīng)不常見了,但是它的設(shè)計(jì)非常重要,科學(xué)計(jì)算器只是在簡(jiǎn)易計(jì)算器的設(shè)計(jì)的基礎(chǔ)上加以改動(dòng),加部分功能,但是如是沒有簡(jiǎn)易計(jì)算器的出現(xiàn),科學(xué)計(jì)算器也不會(huì)出現(xiàn)及普及,因?yàn)楹?jiǎn)易計(jì)算器是最基礎(chǔ)的,但同時(shí)也是最重要的,所以簡(jiǎn)易計(jì)算器的設(shè)計(jì)顯得尤為重要。第2章 課程設(shè)計(jì)的方案2.1 概述計(jì)算器一般由運(yùn)算器、控制器、存儲(chǔ)器、鍵盤、顯示器、電源和一些可選外圍設(shè)備及電子配件通過(guò)人工或機(jī)器設(shè)備組成。低檔計(jì)算器的運(yùn)算器、控制器由數(shù)字邏輯電路實(shí)現(xiàn)簡(jiǎn)單的串行運(yùn)算,其隨機(jī)存儲(chǔ)器只有一、二個(gè)單元,提供累加存儲(chǔ)用。鍵盤是計(jì)算器的輸入部件,一般采用接觸式或傳感式。為減少計(jì)算器的尺寸,一鍵常常有很多功能。顯示器
9、是計(jì)算器的輸出部件,有發(fā)光二極管顯示器或液晶顯示器等。除顯示加、減、乘、除的計(jì)算結(jié)果外,還有負(fù)數(shù)運(yùn)算、錯(cuò)誤顯示等。2.2 系統(tǒng)組成總體結(jié)構(gòu)AT89C52主控制模塊液晶顯示模塊晶振模塊 矩陣鍵盤模塊電源模塊圖2.1系統(tǒng)框圖本設(shè)計(jì)是以STC89C52單片機(jī)為核心器件,配合電阻電容晶振等器件,構(gòu)成單片機(jī)的最小系統(tǒng)。其它個(gè)模塊圍繞著單片機(jī)最小系統(tǒng)展開。其中包括,顯示設(shè)備采用1602液晶,該液晶可以進(jìn)行2行內(nèi)容的顯示。對(duì)于本設(shè)計(jì)來(lái)說(shuō),第1行顯示輸入的內(nèi)容,第2行顯示計(jì)算結(jié)果。輸入設(shè)備采用4*4的矩陣鍵盤,共16個(gè)按鍵,除去10個(gè)數(shù)字鍵后,剩下的六個(gè)按鍵功能分別為加、減、乘、除、等于、清除。電源供電則采用
10、USB的形式,常用的供電電源可以是手機(jī)充電器、移動(dòng)電源、電腦USB口等。第3章 硬件設(shè)計(jì)3.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)3.1.1 AT89S52單片機(jī)簡(jiǎn)介單片機(jī)是單片微型機(jī)的簡(jiǎn)稱,故又稱為微控制器MCU(Micro Control Unit)。通常由單塊集成電路芯片組成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器CPU,存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。單片機(jī)廣泛用于智能產(chǎn)品,智能儀表,測(cè)控技術(shù),智能接口等,具有操作簡(jiǎn)單,實(shí)用方便,價(jià)格便宜等優(yōu)點(diǎn),而其中AT89S52以MCS-51為內(nèi)核,是單片機(jī)中最典型的代表,應(yīng)用于各種控制領(lǐng)域。
11、 AT89S52單片機(jī)是一種低功耗高性能的CMOS8位微控制器,內(nèi)置8KB可在線編程閃存。該器件采用Atmel公司的高密度非易失性存儲(chǔ)技術(shù)生產(chǎn),其指令與工業(yè)標(biāo)準(zhǔn)的80C51指令集兼容。片內(nèi)程序存儲(chǔ)器允許重復(fù)在線編程,允許程序存儲(chǔ)器在系統(tǒng)內(nèi)通過(guò)SPI串行口改寫或用同用的非易失性存儲(chǔ)器改寫。通過(guò)把通用的8位CPU與可在線下載的Flash集成在一個(gè)芯片上,AT89S52便成為一個(gè)高效的微型計(jì)算機(jī)。它的應(yīng)用范圍廣,可用于解決復(fù)雜的控制問題,且成本較低。AT89S52單片機(jī)如圖3.1所示。 圖3.1 單片機(jī)AT89C523.1.2 AT89C52單片機(jī)的引腳功能及說(shuō)明STC89C52有40個(gè)引腳,32個(gè)
12、外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。STC89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。AT89C52的主要功能特性如下:1)兼容MCS51指令系統(tǒng);2)8k可反復(fù)擦寫(1000次)Flash ROM; 3)32個(gè)雙向I/O口; 4)256*8bit內(nèi)部RAM ;5)3個(gè)16位可編程定時(shí)/計(jì)數(shù)器
13、中斷;6)時(shí)鐘頻率0-24MHz; 7)2個(gè)串行中斷;8)可編程UART串行通道; 9)2個(gè)外部中斷源; 10)共8個(gè)中斷源; 11)2個(gè)讀寫中斷口線; 12)3級(jí)加密位; 13)低功耗空閑和掉電模式; 14)軟件設(shè)置睡眠和喚醒功能;AT89C52系列單片機(jī)一般采用40個(gè)引腳,雙列直插式封裝,用HMOS工藝制造,其外部引腳排列如圖3.2所示。其中,各引腳的功能為: 圖3.2 AT89C52的引腳圖 1)主電源引腳VCC(40腳),接5V電源正端;GND(20腳),接5V電源地端;2)外接晶體或外部振蕩器引腳XTAL1(19腳),接外部晶振和微調(diào)電容的一個(gè)引腳。在單片機(jī)內(nèi)部,它是振蕩電路的一個(gè)反
14、相放大器的輸入端,振蕩電路的頻率就是晶體的固有頻率。當(dāng)采用外部振蕩器時(shí),此引腳應(yīng)接地。XTAL2(18腳),接外部晶振和微調(diào)電容的另一個(gè)引腳。在片內(nèi)接至反相放大器的輸出端和內(nèi)部時(shí)鐘電路的輸入端。當(dāng)采用外部振蕩器時(shí),此腳接外部振蕩器的輸出端。3)控制信號(hào)線RESET(9腳),復(fù)位信號(hào)輸入端,復(fù)位/掉電時(shí)內(nèi)部RAM的備用電源輸入端。ALE(30腳),地址鎖存允許/編程脈沖輸入,用ALE鎖存從P0口輸出的低8位地址。在對(duì)片內(nèi)EPROM編程時(shí),編程脈沖由此輸入。PSEN (29腳),外部程序存儲(chǔ)器讀選通信號(hào),PSEN端可以驅(qū)動(dòng)8個(gè)LSTTL門電路,低電平有效。EA(31腳),訪問外部存儲(chǔ)器允許/編程電
15、壓輸入。EA為高電平時(shí),訪問內(nèi)部存儲(chǔ)器;低電平時(shí),訪問外部存儲(chǔ)器。3.1.3 單片機(jī)最小系統(tǒng)設(shè)計(jì)基于ST89C52的單片機(jī)最小系統(tǒng)如圖3.3所示,整個(gè)單片機(jī)最小系統(tǒng)由復(fù)位電路部分、晶振電路部分、輔助電路等三個(gè)部分組成。復(fù)位電路是由極性電容C1和電阻R3組成的,其中電容C1為10uF,電阻R3的阻值為10K,復(fù)位電路的工作原理是利用電容電壓不能突變的性質(zhì)進(jìn)行設(shè)計(jì)的,一旦供電,RESET腳就會(huì)出現(xiàn)高電平,并且高電平持續(xù)時(shí)間是由R和C的大小決定的,只有當(dāng)RESET引腳上出現(xiàn)兩次及兩次以上的高電平才會(huì)復(fù)位,所以選取適當(dāng)?shù)腞和C就可以保證及精準(zhǔn)又可靠的復(fù)位。晶振電路是由兩個(gè)電容及一個(gè)晶振組成的,其中兩個(gè)
16、電容分別為C2和C3,其大小為30pF,晶振X1的大小為12M。電容的作用是幫助晶振更加容易的起振,所以電容的大小將影響起振的效果,晶振越大效果越好,取值范圍為15-33pF,所以我們?nèi)≌麛?shù)30pF。而晶振的取值也可以是24M,因?yàn)榫д裨酱髥纹瑱C(jī)的執(zhí)行速度就越快,所以在設(shè)計(jì)單片機(jī)最小系統(tǒng)時(shí),晶振電路離單片機(jī)越近越好。輔助電路是由一個(gè)10K大的排阻R1和電源組成,其作用就是在擴(kuò)展I/O口時(shí)使用,以便接LCD1602液晶顯示器。因?yàn)镾TC89C52的P0口是漏極開路輸出,所以在P0口接了一個(gè)10K的排阻R1,這樣子就可以使P0口作為普通的I/O口使用,而且P0口還得以充分利用,P2口用作擴(kuò)展用,用
17、于接外部擴(kuò)展的RAM和ROM,本設(shè)計(jì)用P0口來(lái)做液晶的數(shù)據(jù)口。單片機(jī)最小系統(tǒng)如圖3.3所示。圖3.3 單片機(jī)最小系統(tǒng)電路3.2 液晶顯示器電路設(shè)計(jì)3.2.1 1602液晶顯示器的簡(jiǎn)介液晶顯示器是一種顯示器件,具有小體積、輕重量、低功耗等特色。由于其功耗低、顯示的信息量大(例如,文本,圖形,曲線等)、無(wú)電磁輻射、使用壽命長(zhǎng),它已被廣泛應(yīng)用在便攜式電子產(chǎn)品。本系統(tǒng)采用的1602是一款物美價(jià)廉的液晶顯示屏,可以顯示2行標(biāo)準(zhǔn)字符,每行共有16個(gè)字符。在通信系統(tǒng),智能操作儀表和辦公設(shè)備的自動(dòng)化中被廣泛的應(yīng)用,主要功能是顯示ASCII字符,因此被稱為“字符型顯示裝置”。當(dāng)在內(nèi)部沒有適合的漢字庫(kù)的液晶類型顯
18、示器想要表達(dá)漢字的時(shí)候,第一步就是要獲得想要的漢文或者圖形的子模數(shù)據(jù)。子模塊的軟件不能直接提取子模塊的數(shù)據(jù)5*8點(diǎn)陣,可以從手工提取漢字的字體以模具。第二步,把取得的漢字子模數(shù)據(jù)保存在液晶存儲(chǔ)器里面。1602LCD主要技術(shù)參數(shù):u1)顯示容量:16*2個(gè)字符u2)芯片工作電壓:4.55.5Vu3)工作電流:2.0mA(5.0V)u4)模塊最佳工作電壓:5.0Vu5)字符尺寸:2.95*4.35(W*H)mm3.2.2 液晶引腳說(shuō)明第1腳:接地電源VSS。 第2腳:5V正電源為VDD。 第3腳:VL為液晶顯示器對(duì)比度調(diào)整的端口,對(duì)比度的強(qiáng)弱由接電源的不同決定,對(duì)比度的調(diào)整可以通過(guò)一個(gè)10k的電位
19、器。 第4腳:RS是寄存器選擇,高水平的數(shù)據(jù)寄存器,低選擇指令寄存器。 第5腳:R / W的讀和寫信號(hào)線,高水平低的讀操作,寫操作。 第6腳:使能端E,當(dāng)E端由1至0時(shí),液晶模塊中的命令開始被運(yùn)行。 第7至14腳:D0-D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。 第16腳:背光源負(fù)極。3.2.3 液晶顯示模塊電路液晶模塊的電路的連接圖如圖3.4所示,LCD1602一共有16個(gè)引腳,引腳1和引腳2分別接到了電路的地和電源,這2個(gè)腳是液晶工作時(shí)電源輸入端引腳。而第3引腳則是通過(guò)一個(gè)10K的滑動(dòng)電阻器連接到地端,可通過(guò)調(diào)節(jié)該電位器來(lái)調(diào)節(jié)液晶的清晰度。第4腳是液晶的寄存器控制腳,接到了單片機(jī)的P12
20、腳上。第5腳是液晶的讀寫控制腳,接到了單片機(jī)的P13腳上。第6腳是液晶的使能端腳,接到了單片機(jī)的P14腳上。第7腳到第14腳是液晶的數(shù)據(jù)/地址8位總線,接到了單片機(jī)的P0口上。最后第15腳和第16腳是液晶的背光電源腳,直接連接系統(tǒng)VCC和GND。 圖3.4 液晶模塊連接圖3.3 電源電路的設(shè)計(jì)本設(shè)計(jì)是采用USB借口提供電源供電的,由于通過(guò)USB的電源輸出的電壓都為5V,符合給單片機(jī)和液晶的供電電壓,所以可以直接給單片機(jī)和液晶供電,電源電路設(shè)計(jì)較為簡(jiǎn)單,不需要加穩(wěn)壓和降壓電路,只需要一個(gè)USB接口和按鍵開關(guān)即可,電源電路的連接圖如圖3.5所示。 圖3.5 電源電路3.4 按鍵電路設(shè)計(jì)按鍵電路的設(shè)
21、計(jì)是采用4*4的是16個(gè)按鍵的矩陣式按鍵。鍵盤是單片機(jī)系統(tǒng)中最常用的人機(jī)對(duì)話輸入設(shè)備,用戶通過(guò)鍵盤向單片機(jī)輸入數(shù)據(jù)或指令。鍵盤控制程序需完成的任務(wù)有:監(jiān)測(cè)是否有鍵按下,有鍵按下時(shí),在無(wú)硬件去抖的動(dòng)電路時(shí),應(yīng)用軟件延時(shí)方法消除按鍵抖動(dòng)影響;當(dāng)有多個(gè)鍵同時(shí)按下時(shí),只處理一個(gè)按鍵,不管一次按鍵持續(xù)多長(zhǎng)時(shí)間,僅執(zhí)行一次按鍵功能程序。矩陣按鍵掃描程序是一種節(jié)省I/O口的方法,按鍵數(shù)目越多節(jié)省I/O口就越可觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程序的寫法上,采用了最簡(jiǎn)單的方法,使得程序效率最高。本程序中,如果檢測(cè)到某鍵按下了,就不再檢測(cè)其它的按鍵,這完全能滿足
22、絕大多數(shù)需要,又能節(jié)省大量的CPU時(shí)間。本鍵盤掃描程序的優(yōu)點(diǎn)在于:不用專門的按鍵延時(shí)程序,提高了CPU效率,也不用中斷來(lái)掃描鍵盤,節(jié)省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用CPU時(shí)最短,不論有鍵按下或者無(wú)鍵按下都可以在很短的時(shí)間完成一次掃描。本設(shè)計(jì)由于用到的按鍵比較多,故采用矩陣鍵盤的方式和單片機(jī)進(jìn)行連接,不同按鍵按下具有不同的按鍵功能,本設(shè)計(jì)共用到的按鍵共16個(gè),除去10個(gè)數(shù)字鍵后,剩下的六個(gè)按鍵功能分別為加、減、乘、除、等于、清除。按鍵的連接圖3.6所示。 圖3.6 按鍵電路3.5 總體電路圖設(shè)計(jì)總體電路圖見附錄I所示。第4章 軟件設(shè)計(jì)4.1 主程序流程圖設(shè)計(jì)主程序的功能主要是LC
23、D顯示與清屏、液晶的光標(biāo)定位、液晶初始化、鍵盤掃描、按鍵處理、子程序調(diào)用和判斷當(dāng)前狀態(tài)等。主程序的設(shè)計(jì)是整個(gè)程序設(shè)計(jì)的最重要的部分,不僅可以體現(xiàn)設(shè)計(jì)人的思想結(jié)構(gòu),還可以體現(xiàn)出設(shè)計(jì)人對(duì)設(shè)計(jì)理解的深度和認(rèn)識(shí)的程度。主程序流程圖如下圖4.1所示。開始系統(tǒng)初始化LCD顯示按鍵處理判斷當(dāng)前狀態(tài)是否繼續(xù)進(jìn)行?Y是否N結(jié)束圖4.1 主程序流程圖4.2 子程序流程圖設(shè)計(jì)子程序設(shè)計(jì)包括鍵盤掃描子程序和顯示模塊子程序的設(shè)計(jì)。鍵盤掃描子程序,首先讀出P1的低四位,然后讀出P1口的高四位。然后鍵值并顯示緩存。然后將鍵如的值轉(zhuǎn)換為ASCII碼然后就可以軟件來(lái)設(shè)置硬件按鍵各個(gè)鍵代表的內(nèi)容。讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管
24、鍵盤矩陣的規(guī)模大小,均進(jìn)行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤信息(列信息);第二次所有列線均輸出低電平,從所有行線讀入鍵盤信息(行信息)。數(shù)字鍵按下則將相應(yīng)的數(shù)字送入緩存區(qū),功能鍵按下則執(zhí)行相應(yīng)的程序。顯示模塊程序首先要對(duì)顯示模塊進(jìn)行初始化;然后控制光標(biāo)的位置;定義液晶顯示的控制端口,用SBIT指令完成;然后設(shè)置清屏、關(guān)閉顯示、歸位、開顯示、顯示位置的首地址等等。子程序的設(shè)計(jì)是整個(gè)設(shè)計(jì)的中間部分,用于主程序中的指令的調(diào)用,主要是運(yùn)算部分的加、減、乘、除和功能部分的等于、清零等。除此之外,在本設(shè)計(jì)中又添加了錯(cuò)誤顯示和負(fù)數(shù)運(yùn)算的功能。子程序流程圖如下圖4.2所示。開始 清屏掃描鍵
25、盤加減乘除運(yùn)算子程序液晶顯示顯示結(jié)束?N Y 返回圖4.2 子程序流程圖第5章 系統(tǒng)調(diào)試與分析5.1 系統(tǒng)調(diào)試調(diào)試是整個(gè)系統(tǒng)功能否實(shí)現(xiàn)的關(guān)鍵步驟,我們將整個(gè)調(diào)試過(guò)程分為兩大部分:硬件調(diào)試和軟件調(diào)試。硬件調(diào)試主要工具是萬(wàn)用表和烙鐵等工具,主要是為了排查板子焊錯(cuò)線、焊少線、短路和斷路等情況??赏ㄟ^(guò)電壓、電流、電阻等物理量的測(cè)量,再進(jìn)行推測(cè),最終發(fā)現(xiàn)存在問題的地方,利用烙鐵進(jìn)行維修。通常軟件調(diào)試應(yīng)具備四種技能,跟蹤、斷點(diǎn)、查看變量和更改數(shù)值等。整個(gè)程序是一個(gè)主程序調(diào)用各個(gè)子程序?qū)崿F(xiàn)功能的過(guò)程,要使主程序和整個(gè)程序都能平穩(wěn)運(yùn)行,各個(gè)模塊的子程序的正確與平穩(wěn)運(yùn)行必不可少,所以在軟件調(diào)試的最初階段就是把各
26、個(gè)子程序模塊進(jìn)行分別調(diào)試。5.2 實(shí)驗(yàn)數(shù)據(jù)與分析本設(shè)計(jì)是簡(jiǎn)易計(jì)算器的設(shè)計(jì),由單片機(jī)最小系統(tǒng)、矩陣鍵盤、液晶顯示、晶振電路等部分組成,具體實(shí)物如下圖5.1所示。 圖5.1 實(shí)物圖 此設(shè)計(jì)是簡(jiǎn)易計(jì)算器的設(shè)計(jì),除存在一些簡(jiǎn)單的運(yùn)算如:加、減、乘、除等基本運(yùn)算外,還有錯(cuò)誤顯示、負(fù)數(shù)運(yùn)算等部分功能,以下為實(shí)物運(yùn)行狀態(tài)下的簡(jiǎn)單運(yùn)行的結(jié)果:1)加減法運(yùn)算:例如9加6等于15得運(yùn)算如下圖5.2所示,9減4等于5的運(yùn)算如圖5.3所示。圖5.2 加法運(yùn)算 圖5.3 減法運(yùn)算2)乘除法運(yùn)算:例如2乘以8等于16的運(yùn)算如下圖5.4所示,99除以9等于11的運(yùn)算如下圖5.5所示。圖5.4 乘法運(yùn)算圖5.5 除法運(yùn)算 本
27、次設(shè)計(jì)加減法的最高位只能為4位數(shù),超過(guò)四位數(shù)將不顯示,運(yùn)行結(jié)果將只會(huì)運(yùn)行之前顯示的前四位數(shù)之間的運(yùn)算,也就是說(shuō)當(dāng)按鍵被按下五次,五次之間沒有運(yùn)算符號(hào)鍵的按下時(shí),將只顯示前四次的按鍵結(jié)果,同時(shí)不顯示的數(shù)也不會(huì)參與運(yùn)算。 簡(jiǎn)易計(jì)算器的設(shè)計(jì)不僅只有加、減、乘、除等基本運(yùn)算,而且還有負(fù)數(shù)運(yùn)算和錯(cuò)誤顯示的功能,使得計(jì)算器更加靈活,應(yīng)用更為方便,所適用的場(chǎng)合也越來(lái)越多。3)錯(cuò)誤顯示:當(dāng)除數(shù)為0時(shí)出現(xiàn)錯(cuò)誤顯示,例如22除以0出現(xiàn)錯(cuò)誤的運(yùn)算如下圖5.6所示。 圖5.6錯(cuò)誤顯示4)負(fù)數(shù)運(yùn)算:例如3減去9等于負(fù)6的運(yùn)算如下圖5.7所示。圖5.7負(fù)數(shù)運(yùn)算以上為簡(jiǎn)易計(jì)算器的加、減、乘、除及負(fù)數(shù)運(yùn)算和錯(cuò)誤顯示的結(jié)果,從
28、顯示中可以看出來(lái)本次設(shè)計(jì)的程序是對(duì)的,運(yùn)算結(jié)果沒有錯(cuò)誤,這也間接告訴我們中間的焊接過(guò)程也沒有出現(xiàn)問題,所以總結(jié)來(lái)說(shuō),本次設(shè)計(jì)還是比較成功的。第6章 課程設(shè)計(jì)總結(jié)單片機(jī)課程設(shè)計(jì)終于結(jié)束了,通過(guò)緊張的工作,完成了我的設(shè)計(jì)任務(wù)-簡(jiǎn)易計(jì)算器的設(shè)計(jì)??偟膩?lái)說(shuō),這次課程設(shè)計(jì)是還算成功的。當(dāng)然,這其中也經(jīng)歷了許多坎坷,但是在我的堅(jiān)持不懈下,在郭老師的細(xì)心指導(dǎo)下,在同學(xué)們的熱情幫助下,最終克服了種種困難,取得了成功。 剛開始接到這個(gè)計(jì)算器的課程設(shè)計(jì)任務(wù)時(shí),因?yàn)橐郧皠?dòng)手實(shí)踐做過(guò)類似的題目,于是在腦海中初步構(gòu)建了編寫程序的一些控制程序。但是由于缺乏編寫大量程序的經(jīng)驗(yàn),不能如行云流水般的將全部的各部分代碼寫出,于是
29、去網(wǎng)上查找相關(guān)資料,了解計(jì)算器的輸入控制原理、運(yùn)算處理以及顯示的原理。了解之后自己嘗試編寫程序,在此過(guò)程中,其中鍵盤掃描和動(dòng)態(tài)掃描顯示掃描程序困擾了我很久,經(jīng)過(guò)幾天的辛苦工作,終于初步把所需要的程序編好了,于是就用Keil uversion5進(jìn)行仿真,在仿真期間也發(fā)現(xiàn)了許多錯(cuò)誤,基本上都是平日容易犯的錯(cuò)誤,比如忘記了子程序標(biāo)號(hào)、死循環(huán)程序、標(biāo)點(diǎn)符號(hào)的漏寫等。經(jīng)過(guò)反復(fù)的編譯差錯(cuò),仿真編譯通過(guò)后,Keil生成的Hex文件.然后將Hex文件導(dǎo)入仿真軟件進(jìn)行仿真,發(fā)現(xiàn)軟件與硬件不能夠?qū)?yīng)協(xié)調(diào)工作,于是分別對(duì)軟件和硬件進(jìn)行檢查,經(jīng)過(guò)反復(fù)的仿真調(diào)試,并且在郭老師和同學(xué)的熱心幫助和自己對(duì)每個(gè)子程序進(jìn)行仿真觀
30、察下,終于在設(shè)計(jì)快結(jié)束時(shí)成功的調(diào)試出結(jié)果了。這就是我的課程設(shè)計(jì)的經(jīng)過(guò),看似簡(jiǎn)單,過(guò)程卻曲折艱辛。通過(guò)這次單片機(jī)課程設(shè)計(jì),我進(jìn)一步加深了對(duì)單片機(jī)的了解。并進(jìn)一步熟練了對(duì)Keil軟件的操作。在編寫程序的過(guò)程中,遇到了很多問題,使我發(fā)現(xiàn)自己以前學(xué)習(xí)上存在的不足,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,對(duì)C語(yǔ)言掌握得不夠好。通過(guò)與同學(xué)探討和請(qǐng)教老師,終于把問題都解決了,并加深了對(duì)計(jì)算器工作的原理的了解。做單片機(jī)課程設(shè)計(jì)時(shí),先查閱相關(guān)知識(shí),把原理吃透,確定一個(gè)大的設(shè)計(jì)方向,在按照這個(gè)方向分模塊的把要實(shí)現(xiàn)的功能用流程圖的形式展示。學(xué)會(huì)了怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過(guò)程中
31、怎么樣去克服心理上的不良情緒??傊?,通過(guò)這次課程的設(shè)計(jì),進(jìn)一步了解了單片機(jī)的應(yīng)用及原理,收獲很大,對(duì)軟件編程、排錯(cuò)調(diào)試、查閱資料等方面得到較全面的鍛煉和提高。參考文獻(xiàn)1 樓然苗,李光飛.單片機(jī)課程設(shè)計(jì)指導(dǎo)M.北京:北京航空航天大學(xué)出版社,2012. 2 梅麗鳳,王艷秋.單片機(jī)原理及接口技術(shù)M.北京:清華大學(xué)出版社,2015.3 顏暉.C語(yǔ)言程序設(shè)計(jì)M.北京:高等教育出版社,2012.4 徐昆良,基于AT89C52單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)與仿真J.電腦知識(shí)與技術(shù).2015,24(16):14-20.5 槽瑞,徐森.基于單片機(jī)的計(jì)算器的設(shè)計(jì)J.科技視界.2012,12(4):121-121. 6 宋
32、慧超.簡(jiǎn)易計(jì)算器的設(shè)計(jì)與仿真J.科技創(chuàng)新導(dǎo)報(bào).2015,23(29):7-9.7 吳洋.基于單片機(jī)的建議計(jì)算器的設(shè)計(jì)J.電子世界.2016,34(8):56-56.8 李峽.基于單片機(jī)控制的簡(jiǎn)易計(jì)算器J.電子產(chǎn)品世界.2012,39(9):10-11.9 吳芳琴.基于單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)J.電子世界.2015,17(19):20-22.10 劉利華.簡(jiǎn)易計(jì)算器的設(shè)計(jì)與制作J.無(wú)線互聯(lián)網(wǎng)科技.2014,13(4):17-19.11 程曉艷.基于單片機(jī)控制的計(jì)算器設(shè)計(jì)J.才智創(chuàng)新.2013,13(4):5-7.12 董雷剛.基于單片機(jī)的計(jì)算器的設(shè)計(jì)J.電腦知識(shí)技術(shù).2012,31(4):42-4
33、4.13 周懷芳.簡(jiǎn)易計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)J.天津聯(lián)合學(xué)報(bào).2013,25(6):11-12.14 王麗琴.數(shù)字式計(jì)算器設(shè)計(jì)與仿真J.現(xiàn)代制造技術(shù).2015,21(6):75-75.15 李嘉誠(chéng).簡(jiǎn)易數(shù)學(xué)計(jì)算器設(shè)計(jì)與實(shí)現(xiàn)J.軟件導(dǎo)刊.2015,35(5):14-16.附錄I 總體電路圖附錄II #include / 包含51單片機(jī)相關(guān)的頭文件#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;/ 運(yùn)算數(shù)1uint num2; / 運(yùn)算數(shù)2ulong num3; / 計(jì)算結(jié)果uchar cal; / 運(yùn)算符號(hào),1加,2減,3乘,4除uchar num1_flag;/ 運(yùn)算數(shù)1的輸入標(biāo)志uchar num2_flag;/ 運(yùn)算數(shù)2的輸入標(biāo)志void DelayMs(uint time)uint i
35、,j;for(i=0;itime;i+)for(j=0;j112;j+);/ 1602液晶寫命令函數(shù),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液晶寫數(shù)據(jù)函數(shù),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液晶初始化函數(shù)void LcdInit() LcdWriteCmd(0x38); / 16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)口 LcdWriteCmd(0x0C); / 開顯示,不顯示光標(biāo) LcdWriteCmd(0x06); / 地址加1,當(dāng)寫入數(shù)據(jù)后光標(biāo)右移 LcdWriteCmd(0x01); / 清屏 / 液晶光標(biāo)定位函數(shù)void LcdGotoXY(uchar line,uchar column)/ 第一行 if(line=0) LcdWriteCmd(0x80+column); / 第二行 if(lin
37、e=1) LcdWriteCmd(0x80+0x40+column); / 液晶輸出字符串函數(shù)void LcdPrintStr(uchar *str) while(*str!=0) LcdWriteData(*str+);/ 液晶輸出數(shù)字void LcdPrintNum(uchar num)LcdWriteData(num+0x30); / 矩陣鍵盤掃描程序,按鍵對(duì)應(yīng)的返回值如下所示:/ | 第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)/ 根據(jù)temp變量的值,判斷不同的按鍵case 0x70: ret=1; break;/ 第一個(gè)按鍵被按下case 0xb0: ret=2; break;/ 第二個(gè)按鍵被按下case 0xd0: ret=3; break;/ 第三個(gè)按鍵被按下case 0xe0: ret=10; break; / 第四個(gè)按鍵被按下/*第二行按鍵的判斷*/ P
39、1=0xfd;/ 讓P11口為低電平 temp=P1&0xf0;/ 變量temp保存P1口高4位的電平狀態(tài) switch(temp)/ 根據(jù)temp變量的值,判斷不同的按鍵case 0x70: ret=4; break;/ 第一個(gè)按鍵被按下case 0xb0: ret=5; break;/ 第二個(gè)按鍵被按下case 0xd0: ret=6; break;/ 第三個(gè)按鍵被按下case 0xe0: ret=11; break; / 第四個(gè)按鍵被按下/*第三行按鍵的判斷*/ P1=0xfb;/ 讓P12口為低電平 temp=P1&0xf0;/ 變量temp保存P1口高4位的電平狀態(tài) switch(t
40、emp)/ 根據(jù)temp變量的值,判斷不同的按鍵case 0x70: ret=7; break;/ 第一個(gè)按鍵被按下case 0xb0: ret=8; break;/ 第二個(gè)按鍵被按下case 0xd0: ret=9; break;/ 第三個(gè)按鍵被按下case 0xe0: ret=12; break; / 第四個(gè)按鍵被按下/*第四行按鍵的判斷*/ P1=0xf7;/ 讓P13口為低電平 temp=P1&0xf0;/ 變量temp保存P1口高4位的電平狀態(tài) switch(temp)/ 根據(jù)temp變量的值,判斷不同的按鍵case 0x70: ret=13; break;/ 第一個(gè)按鍵被按下cas
41、e 0xb0: ret=0; break;/ 第二個(gè)按鍵被按下case 0xd0: ret=14; break;/ 第三個(gè)按鍵被按下case 0xe0: ret=15; break; / 第四個(gè)按鍵被按下return ret; / 返回按鍵的掃描結(jié)果/ 主函數(shù)void main() uchar ret; uchar i; LcdInit();while(1) LcdWriteCmd(0x01); / 清除屏幕顯示LcdWriteCmd(0x0f); / 開啟光標(biāo)閃爍num1=0; / 運(yùn)算數(shù)1 清零num2=0;/ 運(yùn)算數(shù)2 清零num3=0; / 計(jì)算結(jié)果 清零cal=0; / 運(yùn)算符號(hào) 清零i=0; / 臨時(shí)變量 清零num1_flag=0;/ 運(yùn)算數(shù)1輸入標(biāo)志 清零num2_flag=0; / 運(yùn)算數(shù)2輸入標(biāo)志 清零while(1)ret=KeyScanf(); / 讀取矩陣鍵盤的掃描結(jié)果if(ret!=99)/ 返回值不等于99,說(shuō)明有按鍵按下了 /*檢測(cè)到
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工作心得體會(huì)格式
- 2025機(jī)械試用買賣合同書參考式樣
- 2025贊助合同常用版范本
- 2025補(bǔ)償貿(mào)易購(gòu)銷合同書范本
- 二零二五年度農(nóng)村房屋買賣合同協(xié)議書(含農(nóng)村土地整治工程)
- 二零二五年度高效養(yǎng)雞場(chǎng)飼養(yǎng)員技能提升合同3篇
- 二零二五年度二零二五年度商標(biāo)轉(zhuǎn)讓與全球市場(chǎng)布局合同3篇
- 2025知識(shí)產(chǎn)權(quán)共享合同范本
- 2025年度子女對(duì)父母贍養(yǎng)及家庭財(cái)產(chǎn)管理協(xié)議3篇
- 2025年度公司汽車銷售業(yè)務(wù)員銷售目標(biāo)責(zé)任合同2篇
- 心腦血管疾病預(yù)防課件
- 科研倫理與學(xué)術(shù)規(guī)范-期末考試答案
- 數(shù)字后端工程師招聘筆試題與參考答案2024年
- 2024南京市商品房買賣合同書
- 數(shù)據(jù)中心災(zāi)難恢復(fù)預(yù)案
- 《電氣檢測(cè)技術(shù)》教學(xué)大綱
- 2024年醫(yī)院全面質(zhì)量管理方案
- 01685《動(dòng)漫藝術(shù)概論》歷年考試真題試題庫(kù)(含答案)
- 【傳統(tǒng)村落的保護(hù)與發(fā)展探究的文獻(xiàn)綜述8600字】
- 金屬冶煉(鉛、鋅冶煉)主要負(fù)責(zé)人安全資格考試題及答案
- 2024-2030年中國(guó)船用燃料油市場(chǎng)供需趨勢(shì)及競(jìng)爭(zhēng)狀況綜合分析研究報(bào)告
評(píng)論
0/150
提交評(píng)論