基于C51的簡易計(jì)算器_第1頁
基于C51的簡易計(jì)算器_第2頁
基于C51的簡易計(jì)算器_第3頁
基于C51的簡易計(jì)算器_第4頁
基于C51的簡易計(jì)算器_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、寧波理工學(xué)院 單片機(jī)原理與應(yīng)用課程設(shè)計(jì) (論文)題 目 基于C51單片機(jī)設(shè)計(jì)的簡易計(jì)算器_ 姓 名 XXX 學(xué) 號 309040XXXX 專業(yè)班級 09通信工程3班 指導(dǎo)教師 李林功 分 院 信息科學(xué)與工程分院 完成日期 2012年5月20日 摘要隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研等各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種用單片機(jī)設(shè)計(jì)的計(jì)算器。這個(gè)計(jì)算器除了會加減乘除的運(yùn)算功能以外,還具有連續(xù)運(yùn)算的功能。當(dāng)鍵入值或運(yùn)算結(jié)果大于255時(shí),它會自動清零,可以重新輸入新值。正文中首先簡單描述了硬件系統(tǒng)的工作原理,且附以硬件系統(tǒng)的設(shè)計(jì)框圖,論述了本次畢業(yè)設(shè)計(jì)所應(yīng)

2、用的各種硬件接口技術(shù)和各個(gè)接口模塊的功能及工作過程, 并具體描述了外接電路接口的軟、硬件調(diào)試。其次闡述了程序的流程和實(shí)現(xiàn)過程。本設(shè)計(jì)就是以單片機(jī)的基本語言匯編語言來進(jìn)行軟件設(shè)計(jì),軟件的設(shè)計(jì)采用模塊化結(jié)構(gòu),使程序設(shè)計(jì)的邏輯關(guān)系更加簡潔明了。使硬件在軟件的控制下協(xié)調(diào)運(yùn)作。本文撰寫的主導(dǎo)思想是軟、硬件相結(jié)合,以硬件為基礎(chǔ),來進(jìn)行各功能模塊的編寫。關(guān)鍵詞: 計(jì)算器,單片機(jī),AT89C51,匯編語言,模塊化目 錄摘要I第一章、設(shè)計(jì)要求與方案論證31.1設(shè)計(jì)要求:31.2 方案的比較與論證31.2.1單片機(jī)芯片的選擇方案和論證:31.2.2 顯示模塊選擇方案和論證:31.2.3 電路設(shè)計(jì)最終方案決定3第二

3、章、系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)52.1總體框圖設(shè)計(jì)52.2 主要單元電路的設(shè)計(jì)52.2.2 單片機(jī)最小應(yīng)用系統(tǒng)52.3 4X4鍵盤控制電路72.3.1 對矩陣式鍵盤的認(rèn)識72.3.2 矩陣式鍵盤的按鍵識別方法82.4 LCD顯示電路92.4.1顯示模塊的設(shè)計(jì)(詳細(xì)資料)9第三章 系統(tǒng)軟件設(shè)計(jì)(程序設(shè)計(jì))183.1設(shè)計(jì)思路183.2 總體流程圖19結(jié)論20附 錄21致 謝227第一章、設(shè)計(jì)要求與方案論證1.1設(shè)計(jì)要求:為了滿足一般計(jì)算器的要求,本設(shè)計(jì)要求可以實(shí)現(xiàn)進(jìn)行基本的加減乘除運(yùn)算,數(shù)據(jù)歸零和錯(cuò)誤提示。1.2 方案的比較與論證1.2.1單片機(jī)芯片的選擇方案和論證:方案一: 采用89C51芯片作為硬件

4、核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲空間,能于3V的超低壓工作。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能、CMOS、8位單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,而且與MCS-51系列單片機(jī)完全兼容。1.2.2 顯示模塊選擇方案和論證:方案一: 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對較高,所以不用此種作為顯示.方案二:采用LE

5、D數(shù)碼管動態(tài)掃描,雖然LED數(shù)碼管價(jià)格適中,但要顯示多個(gè)數(shù)字所需要的個(gè)數(shù)偏多,功耗較大,所以也不用此種作為顯示。方案三: 采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,與普通數(shù)碼管相比功耗較小,硬件連接簡單。所以顯示部分采用1602液晶。 1.2.3 電路設(shè)計(jì)最終方案決定綜上各方案所述,對本次設(shè)計(jì)的方案選定為: 采用AT89C51作為主控制系統(tǒng); 4X4矩陣鍵盤作為輸入;1602液晶作為顯示。第二章、系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)2.1總體框圖設(shè)計(jì)1本設(shè)計(jì)里用到的單片機(jī)芯片是AT89C51芯片,除此之外還包括:晶振電路和復(fù)位電路構(gòu)成單片機(jī)最小應(yīng)用系統(tǒng);24x4

6、矩陣鍵盤;3LCD顯示電路。AT89C51最小應(yīng)用系統(tǒng)晶振電路復(fù)位電路按鍵電路LCD顯示圖2.1總體設(shè)計(jì)框圖2.2 主要單元電路的設(shè)計(jì)2.2.2 單片機(jī)最小應(yīng)用系統(tǒng)單片機(jī)附屬電路主要有晶體振蕩電路和復(fù)位電路。一、晶體振蕩電路晶體振蕩器的作用:它用來穩(wěn)定頻率和選擇頻率,是一種可以取代LC諧振回路的晶體諧振元件。 時(shí)鐘周期就是單片機(jī)外接晶振的倒數(shù),例如12M的晶振,它的時(shí)間周期就是1/12 us),是計(jì)算機(jī)中最基本的、最小的時(shí)間單位。在一個(gè)時(shí)鐘周期內(nèi),CPU僅完成一個(gè)最基本的動作。對于單片機(jī),時(shí)鐘脈沖是基本的工作脈沖,它控制著單片機(jī)的工作節(jié)奏(使單片機(jī)的每一步都統(tǒng)一到它的步調(diào)上來)。顯然,對同一種

7、機(jī)型的單片機(jī),時(shí)鐘頻率越高,單片機(jī)的工作速度就越快。但是,由于不同的單片機(jī)的硬件電路和器件不完全相同,所以其需要的時(shí)鐘頻率范圍也不相同。本設(shè)計(jì)晶振電路所選用的石英晶振頻率為12MHZ。如圖2.2所示:圖2.2 晶振電路二、復(fù)位電路單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作,例如復(fù)位后PC0000H,使單片機(jī)從第個(gè)單元取指令。無論是在單片機(jī)剛開始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位,所以我們必須弄清楚MCS-51型單片機(jī)復(fù)位的條件、復(fù)位電路和復(fù)位后狀態(tài)。單片機(jī)常用的復(fù)位電路如圖2.4所示:圖2.3 復(fù)位電路 圖2.3為按鍵復(fù)位電路。該電路除具

8、有上電復(fù)位功能外,若要復(fù)位,只需按圖中的RESET鍵,此時(shí)電源VCC經(jīng)電阻R分壓,在RESET端產(chǎn)生復(fù)位高電平。2.3 4X4鍵盤控制電路2.3.1 對矩陣式鍵盤的認(rèn)識矩陣式鍵盤的結(jié)構(gòu)與工作原理:在鍵盤中的按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖2.5所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,只需要單片機(jī)的一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比

9、較多時(shí),采用矩陣法來做鍵盤比較是合理的。由于本系統(tǒng)按鍵較多,在這里采用矩陣式4*4鍵盤,這樣可以合理應(yīng)用硬件資源,用一個(gè)8位I/O口控制, 如圖2.5所示:圖2.5 按鍵電路矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,圖2.5中,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。一旦有鍵按下,則輸入線就會被拉低,行線輸出是低電平。這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識別及編程方法如2.3.2所述。2.3.2 矩陣式鍵盤的按鍵識別方法 為了確定矩陣式鍵盤上

10、何鍵被按下,我們采用一種“掃描法”。掃描法 :掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法。以圖2.5所示鍵盤電路為例,介紹過程如下:1.判斷鍵盤中有無鍵按下 將全部行線X0-X3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。2.判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它行線為高電平。在確定某根行線為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為

11、低電平的行線交叉處的按鍵就是閉合的按鍵。如圖2.5所示。AT89C51單片機(jī)的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的高4位,鍵盤的行線接到P1口的低4位。列線P14-P17分別接有4個(gè)上拉電阻到正電源+5V,并把行線P10-P13設(shè)置為輸出線,列線P14-P17設(shè)置為輸入線。4根行線和4根列線形成16個(gè)相交點(diǎn)。1.檢測當(dāng)前是否有鍵被按下。檢測的方法是P10-P13輸出全“0”,讀取P14-P17的狀態(tài),若P14-P17為全“1”,則無鍵閉合,否則有鍵閉合。2.去除鍵抖動。當(dāng)檢測到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測判斷。3.若有鍵被按下,應(yīng)識別出是哪一個(gè)鍵閉合。方法是對鍵盤的行線進(jìn)

12、行掃描。P10-P13按下述4種組合依次輸出:P13 1 1 1 0P12 1 1 0 1P11 1 0 1 1P10 0 1 1 1在每組行輸出時(shí)讀取P14-P17,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。4.為了保證鍵每閉合一次CPU僅作一次處理,必須消除鍵釋放時(shí)的抖動。 2.4 LCD顯示電路2.4.1顯示模塊的設(shè)計(jì)(詳細(xì)資料)1. 1602介紹 字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以

13、長沙太陽人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實(shí)物如圖- 4:圖- 4 1602字符型液晶顯示器實(shí)物圖2. 1602LCD的基本參數(shù)及引腳功能 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖-5所示:圖-5 1602LCD尺寸圖1602LCD主要技術(shù)參數(shù):顯示容量:16×2個(gè)字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能說明:編號

14、符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表-3:引腳接口說明表第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時(shí)進(jìn)行讀操作

15、,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號,當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。3. 1602LCD的指令說明及時(shí)序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表-4所示:序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)

16、或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表-4:控制命令表1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移 屏幕上所有文字是否左

17、移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動顯示的文字,低電平時(shí)移動光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平

18、表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。與HD44780相兼容的芯片時(shí)序表如下:讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無表-5:基本操作時(shí)序表讀寫操作時(shí)序如圖- 6和圖-7所示:圖-6 讀操作時(shí)序圖-7 寫操作時(shí)序4 .1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫表 液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模 塊的忙標(biāo)志

19、為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖-8是1602的內(nèi)部顯示地址。圖-8 1602LCD內(nèi)部顯示地址例如第二行第一個(gè)字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部

20、的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個(gè)不同的點(diǎn)陣字符圖形,如圖10-58所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”圖-9字符代碼與圖形對應(yīng)圖5. 1602LCD的一般初始化(復(fù)位)過程延時(shí)15mS寫指令38H(不檢測忙信號)延時(shí)5mS寫指令38H(不檢測忙信號)延時(shí)5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置寫指令0CH:顯示開及光標(biāo)設(shè)置LCD電路第三章 系統(tǒng)軟件設(shè)計(jì)(程序設(shè)計(jì))3.1設(shè)計(jì)思路1顯示子程序,當(dāng)鍵入一個(gè)數(shù)值或符號時(shí)顯示程序要把這個(gè)鍵入的值給顯示出來。經(jīng)過運(yùn)算在按下等號之后顯示出此次運(yùn)算的結(jié)果。2按鍵程序,當(dāng)一個(gè)鍵盤按下的時(shí)候,經(jīng)過按鍵程序要判斷,如果是數(shù)字鍵就要轉(zhuǎ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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論