基于PIC的簡易計(jì)算器課程設(shè)計(jì)報(bào)告_第1頁
基于PIC的簡易計(jì)算器課程設(shè)計(jì)報(bào)告_第2頁
基于PIC的簡易計(jì)算器課程設(shè)計(jì)報(bào)告_第3頁
基于PIC的簡易計(jì)算器課程設(shè)計(jì)報(bào)告_第4頁
基于PIC的簡易計(jì)算器課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)報(bào)告課程名稱:單片機(jī)原理與接口技術(shù)課程設(shè)計(jì)設(shè)計(jì)題目:基于PIC單片機(jī)的簡易計(jì)算器 院 系: 機(jī)電工程學(xué)院 班 級: 2012級電氣工程及其自動化專業(yè) 姓 名: 學(xué) 號: 指導(dǎo)教師: 設(shè)計(jì)時間: 2014年12月8日 出勤實(shí)物報(bào)告總分目錄前言1第一章 系統(tǒng)整體設(shè)計(jì)方案21.1 1.1 系統(tǒng)功能設(shè)計(jì) 1.1.1 系統(tǒng)軟件功能模塊2 1.1.2系統(tǒng)硬件模塊2第二章 硬件設(shè)計(jì)部分22.1 系統(tǒng)結(jié)構(gòu)圖3 2.2 電路圖3 2.3 單片機(jī)電路部分4 2.4 電源和燒寫電路部分4 2.5 數(shù)碼管顯示電路部分4 2.6矩陣按鍵電路4第三章 各部分程序設(shè)計(jì)53.1 主程序設(shè)計(jì)5 3.2 數(shù)碼管顯示部分6

2、 3.3 矩陣按鍵部分73.3.1鍵盤掃描部分73.3.2 各個鍵盤子程序流程圖8第四章 成果展示11結(jié)論12參考文獻(xiàn)13附件14單片機(jī)課程設(shè)計(jì)題目(五號楷體居中書寫)前言從古至今,計(jì)算便是人類的一個無法逃避的需求,而計(jì)算工具便是人類進(jìn)行計(jì)算的一大助力。中國所采用的最早的計(jì)算工具是籌策,也叫做算籌。這種算籌多用竹子制成,放在布袋里便可隨身攜帶。至于由籌算發(fā)展而來的珠算盤,至明代已于現(xiàn)代珠算盤基本相同。在西方,計(jì)算工具則于17初世紀(jì)開始有了較大的發(fā)展。如英國數(shù)學(xué)家納皮爾發(fā)明的“納皮爾算籌”和英國牧師奧卻德發(fā)明了圓柱型對數(shù)計(jì)算尺。圓柱型對數(shù)計(jì)算尺已經(jīng)可以計(jì)算三角函數(shù)、指數(shù)函數(shù)和對數(shù)函數(shù)。這些這些計(jì)

3、算工具的發(fā)明運(yùn)用為現(xiàn)代計(jì)算器發(fā)展奠定了良好的基礎(chǔ)。十九世紀(jì)末、二十世紀(jì)初電子技術(shù)異軍突起。20世紀(jì)50年代末,隨著電子技術(shù)在二十世紀(jì)的迅猛發(fā)展,第一臺電子計(jì)算器終于出世。從第一臺電子計(jì)算器發(fā)展至今,電子計(jì)算器技術(shù)已經(jīng)十分成熟。所能夠進(jìn)行的運(yùn)算種類變得異常豐富,計(jì)算量也是十分龐大。甚至類型已經(jīng)開始趨于細(xì)化,出現(xiàn)了各種專業(yè)功能的計(jì)算器。如個人所得稅計(jì)算器, 房貸計(jì)算器, 油耗計(jì)算器等。本設(shè)計(jì)僅是一十分簡易的電子計(jì)算器。對于設(shè)計(jì)者所需掌握的相應(yīng)技術(shù)也較為簡單。于硬件方面,只需設(shè)計(jì)者能夠熟識基本的電子器件并能夠讀懂電路圖成功焊接好硬件即可。軟件方面,則要求設(shè)計(jì)者能夠熟識PIC的35條匯編指令并能夠較為

4、熟練的運(yùn)用MPLAB軟件進(jìn)行編程即可。本設(shè)計(jì)的難點(diǎn)并不在于各個子程序的設(shè)計(jì)編寫而在于如何對子程序進(jìn)行合理的編排以便在使用者按下按鍵之后所設(shè)計(jì)的簡易電子計(jì)算器能夠正確的執(zhí)行設(shè)計(jì)者所設(shè)定的功能,進(jìn)行簡單的加減乘除運(yùn)算。本設(shè)計(jì)的簡易電子計(jì)算器功能簡單,所能進(jìn)行的運(yùn)算量也非常小。所以它的功用并不在于實(shí)際運(yùn)用而在于幫助設(shè)計(jì)者了解PIC單片機(jī)以及簡單的電子技術(shù),為更加深入的學(xué)習(xí)單片機(jī)和電子技術(shù)奠定一定的基礎(chǔ)。若是本設(shè)計(jì)還能對于初學(xué)者學(xué)習(xí)PIC單片機(jī)起到微薄的助力,那便是對設(shè)計(jì)者最大的鼓勵了。第1章 系統(tǒng)總體方案設(shè)計(jì)1.1 系統(tǒng)功能設(shè)計(jì) 1.1.1 系統(tǒng)軟件功能模塊本設(shè)計(jì)是一個無符號簡單整數(shù)計(jì)算器。他能夠?qū)?/p>

5、現(xiàn)8位二進(jìn)制以內(nèi)的無符號整數(shù)的加減乘除。并具有清零功能。1.1.2系統(tǒng)硬件模塊輸入硬件:4x4矩陣鍵盤,對十六個鍵盤分別定義0至9以及加減乘除和清零功能。顯示硬件:LCD數(shù)碼管。能夠正確顯示出被計(jì)算數(shù)和計(jì)算結(jié)果。其他各類主要硬件:名稱數(shù)量16F8871晶體整蕩器1保險(xiǎn)管1發(fā)光二極管1電解電容1電容310K電阻91K電阻5USB1第2章 硬件設(shè)計(jì)部分本章主要是對簡易計(jì)算器硬件電路的簡單介紹。本簡易計(jì)算器的電路主要由電源電路、燒寫電路、數(shù)碼管顯示電路以及矩陣按鍵電路組成(由于指示燈部分硬件雖焊接當(dāng)本成本中并未使用故不做介紹)。下面將分述這幾大模塊電路的具體功能及原理。2.1系統(tǒng)結(jié)構(gòu)圖如圖1所示:4

6、個LCD顯示管PIC16F887主控芯片 4×4矩陣鍵盤 圖12.2 電路圖電源和燒寫部分如圖2所示:4*4矩陣鍵盤 數(shù)碼管顯示部分單片機(jī)部分 圖22.3 單片機(jī)電路部分本系統(tǒng)選用的控制芯片是PIC16F887單片機(jī)。PIC16F887單片機(jī)是一款低功耗、高性能增強(qiáng)型閃存式8位單片機(jī),擁有高性能 RISC CPU,優(yōu)化的C語言編譯器架構(gòu)和匯編精簡指令集,程序存儲器線性尋址可達(dá)8 KB。與其他8位單片機(jī)比較,PIC16F887單片具有更快的處理速度,更高的性價(jià)比,片上資源更加豐富,使得開發(fā)更加高效快捷。 單片機(jī)部分具體電路圖如上圖2中所示,除16F887芯片之外主要還有復(fù)位以及時鐘電路

7、(晶振為4MZ)。2.4 電源和燒寫電路部分對于電源,現(xiàn)今USB供電十分方便,而PIC16F887具有低功耗特性,因此本設(shè)計(jì)采用USB供電方式。燒寫則使用PIC系列單片機(jī)的在線調(diào)試器MAPLAB ICD2在線燒寫程序的方式。此部分具體電路圖如上圖2中所示。2.5 數(shù)碼管顯示電路部分由4位數(shù)碼管組成。4位數(shù)碼管模塊共12個引腳,其中1、2、3、4、5、7、10、11分別對應(yīng)數(shù)碼管的8個段選,6、8、9、12分別對應(yīng)4位數(shù)碼管的位選。(電路中外加了4個PNP型三極管,以讓單片機(jī)通過控制三極管的開關(guān)間接的控制數(shù)碼管顯示電路。) 具體電路圖如上圖2中所示。2.6 矩陣按鍵電路采用4x4矩陣按鍵電路,共

8、16個按鍵。此部分具體電路圖如上圖2中所示。第3章 各部分程序設(shè)計(jì)開始3.1 主程序設(shè)計(jì)初始化鍵盤掃描按鍵是否按下 否 是調(diào)用相應(yīng)按鍵子程序調(diào)用顯示子程序結(jié)束 圖33.2 數(shù)碼管顯示部分本設(shè)計(jì)用了4位數(shù)碼管,用來顯示用戶輸入的操作數(shù)和最后結(jié)果。其中PORTB的1、2、3、4引腳分別控制4位數(shù)碼管的位選,PORTC的8個引腳控制數(shù)碼管的段選。顯示時先將輸入的數(shù)值或最后結(jié)果存放到變量中,再把所存入的值各位分開調(diào)用查表子程序后輸入3個不同的數(shù)碼管中進(jìn)行顯示。流程圖如下圖4所示: 圖43.3矩陣按鍵部分 3.3.1鍵盤掃描部分判斷鍵盤上有無鍵按下。將列線(Y0-Y3)全部輸出為0,此時讀行線(X0-X

9、3)的狀態(tài),如果行線全為1,則表示沒有任何鍵按下;如果行線不全為0,則表示有鍵按下。若有鍵按下,則需掃描按鍵的位置。先令列線Y0為低電平0,其余三根列線均為高電平1,此時讀取行線的狀態(tài)。如果行線均為高電平,則Y0這一列上沒有按鍵按下,如果行線不全為高電平,則其中為低電平的行線與Y0相交的鍵被按下。如果列Y0上沒有鍵被按下,則可以按照同樣的方法依次檢測列Y1、Y2、Y3有沒有鍵按下。這樣逐行掃描可以找到按鍵按下的位置。流程圖如下圖5所示: 3.3.2各個鍵盤子程序流程圖 各個按鍵內(nèi)程序流程圖如上圖69圖所示。 圖6 圖7 圖9 圖8加減法程序過于簡單因此流程圖省略,下圖1011圖為乘法以及除法子

10、程序。對于乘法本設(shè)計(jì)采用左移思想,對于除法則是采用了累減的方法。 圖 11 圖10第四章 成果展示在做出硬件實(shí)物并驗(yàn)證無誤之后。在MPLAB編譯器用匯編指令編程調(diào)試之后。本設(shè)計(jì)的簡易計(jì)算器終于成功開發(fā)出來。實(shí)現(xiàn)了預(yù)期目標(biāo)。本簡易計(jì)算器在每次計(jì)算完成之后都必須清零才可重新運(yùn)算,并且由于運(yùn)算程序的限制,只有結(jié)果為255以內(nèi)的加減乘除本程序才能正確計(jì)算出結(jié)果,結(jié)果超出255的運(yùn)算本簡易計(jì)算器并不能正確計(jì)算出結(jié)果。結(jié)論本設(shè)計(jì)從整體來說難度并不大。對于PIC匯編并不算十分熟知的人來說難度也是大多集中于細(xì)節(jié)部分。本設(shè)計(jì)的總體設(shè)計(jì)思路并無多大多大難度。由于設(shè)計(jì)者對于PIC匯編亦不過是一初學(xué)者,如何把總體設(shè)計(jì)

11、思路細(xì)化并正確編寫出程序才是最為困難之事。當(dāng)初學(xué)者落入細(xì)處之后往往便不能考慮全面,所寫程序也是漏洞百出。面對于此,唯有一步步的調(diào)試所編程序找出錯誤并加以改正而已。通過此,設(shè)計(jì)者才能不斷的增加自身編程能力,而非紙上談兵。由于設(shè)計(jì)者水平以及所能擁有的時間有限,所能設(shè)計(jì)出的成品便顯得十分簡單,不但僅僅只能對結(jié)果為255以內(nèi)的數(shù)據(jù)進(jìn)行正確計(jì)算,每次重新計(jì)算亦都需清零。如需改進(jìn)運(yùn)算量則加減乘除子程序都將改變,甚至顯示子程序也必須做出相應(yīng)調(diào)整。對于時間有限的設(shè)計(jì)者來說,亦是有心無力!參考文獻(xiàn)1李榮正.PIC單片機(jī)原理及應(yīng)用M.北京航空航天大學(xué)出版社.2006:239-2562王幸之.AT89系列單片機(jī)原理

12、與接口技術(shù)M.北京航空航天大學(xué)出版社.2004:189-196.3田豐國.基于PIC16F877A單片機(jī)軟件環(huán)分的步進(jìn)電機(jī)控制系統(tǒng)J.電氣技術(shù)2009:58.4張明峰.PIC單片機(jī)入門與實(shí)戰(zhàn)M.北京航空航天大學(xué)出版史.2004:187-201.5李學(xué)海.PIC單片機(jī)實(shí)用教程M.北京航空航天大學(xué)出版社.2002:56-79.12附件*; *; Filename: xxx.asm *; Date: *; File Version: *; *; Author: *; Company: *; *; *;*; *; Files required: *; *; *; *;*; *; Notes: *; *

13、; *; *; *;*list p=16f887 ; list directive to define processor#include <p16f887.inc> ; processor specific variable definitions_CONFIG _CONFIG1, _LVP_OFF & _IESO_OFF &_BOR_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC ;* VARIABLE DEFINITIONSw_temp EQU 0x71 ; variable used for context

14、saving status_temp EQU 0x72 ; variable used for context savingNUM EQU 0X36GEEQU 0X31SHANGEQU 0X32SH1EQU 0X33BAIEQU 0X34YUSHUEQU 0X35COUNTEQU 0X40PANEQU 0X41SHUEQU0X42R1EQU0X43COUNDEQU0X44ZONGEQU0X45ZONG1EQU0X46ZONG2EQU0X47;*ORG 0x000 ; processor reset vectorclrf PCLATH ; ensure page bits are cleared

15、 goto MAIN ; go to beginning of programORG 0x004 ; interrupt vector locationmovwf w_temp ; save off current W register contentsmovfSTATUS,w ; move status register into W registermovwfstatus_temp ; save off contents of STATUS register; isr code can go here or be located as a call subroutine elsewhere

16、movf status_temp,w ; retrieve copy of STATUS registermovwfSTATUS ; restore pre-isr STATUS register contentsswapf w_temp,fswapf w_temp,w ; restore pre-isr W register contentsretfie ; return from interruptMAIN BSFSTATUS,RP1BSFSTATUS,RP0CLRFANSELCLRFANSELHBCFSTATUS,RP1BCFSTATUS,RP0BSFSTATUS,RP0CLRFTRIS

17、BCLRFTRISDMOVLW0F0HMOVWFTRISCBCFSTATUS,RP0MOVLW0xFFMOVWFPORTDMOVWFPORTBCLRFNUMCLRFPANCLRFZONGCLRFZONG1CLRFZONG2STCALL JIANPANCALLDELAY10MSCALLLOOPGOTOSTJIANPANMOVLW0F0HMOVWFPORTCMOVLW0F0HANDWFPORTC,WSUBLW0F0HBTFSCSTATUS,ZRETURNCALLDELAY10MSCALLDELAY10MSMOVLW0F0HMOVWFPORTCMOVLW0F0HANDWFPORTC,WSUBLW0F

18、0HBTFSCSTATUS,ZRETURNMOVLW0FEHMOVWFPORTCBTFSSPORTC,4GOTOJIAN0BTFSSPORTC,5GOTOJIAN1BTFSSPORTC,6GOTOJIAN2BTFSSPORTC,7GOTOJIAN3MOVLW0FDHMOVWFPORTCBTFSSPORTC,4GOTOJIAN4BTFSSPORTC,5GOTOJIAN5BTFSSPORTC,6GOTOJIAN6BTFSSPORTC,7GOTOJIAN7MOVLW0FBHMOVWFPORTCBTFSSPORTC,4GOTOJIAN8BTFSSPORTC,5GOTOJIAN9BTFSSPORTC,6

19、GOTOJIANABTFSSPORTC,7GOTOJIANBMOVLW0F7HMOVWFPORTCBTFSSPORTC,4GOTOJIANCBTFSSPORTC,5GOTOJIANDBTFSSPORTC,6GOTOJIANEBTFSSPORTC,7GOTOJIANFRETURNJIAN0CALLSFANGCALLCHENG10MOVLW.0ADDWFZONG,WMOVWFNUMRETURNJIAN1CALLSFANGCALLCHENG10MOVLW.1ADDWFZONG,WMOVWFNUMRETURNJIAN2 CALLSFANGCALLCHENG10MOVLW.2ADDWFZONG,WMOV

20、WFNUMRETURNJIAN3CALLSFANGCALLCHENG10MOVLW.3ADDWFZONG,WMOVWFNUMRETURNJIAN4CALLSFANGCALLCHENG10MOVLW.4ADDWFZONG,WMOVWFNUMRETURNJIAN5CALLSFANGCALLCHENG10MOVLW.5ADDWFZONG,WMOVWFNUMRETURNJIAN6CALLSFANGCALLCHENG10MOVLW.6ADDWFZONG,WMOVWFNUMRETURNJIAN7CALLSFANGCALLCHENG10MOVLW.7ADDWFZONG,WMOVWFNUMRETURNJIAN

21、8CALLSFANGCALLCHENG10MOVLW.8ADDWFZONG,WMOVWFNUMRETURNJIAN9CALLSFANGCALLCHENG10MOVLW.9ADDWFZONG,WMOVWFNUMRETURNJIANACALLSFANGBSFPAN,0MOVFNUM,WMOVWFSHUCLRFNUMRETURNJIANBCALLSFANGBSFPAN,1MOVFNUM,WMOVWFSHUCLRFNUMRETURNJIANCCALLSFANGBSFPAN,2MOVFNUM,WMOVWFSHUCLRFNUMRETURNJIANDCALLSFANGBSFPAN,3MOVFNUM,WMOV

22、WFSHUCLRFNUMRETURNJIANECALLSFANGBTFSCPAN,0CALLJIABTFSCPAN,1CALLJIANBTFSCPAN,2CALLCHENGBTFSCPAN,3CALLCHURETURNJIANFCALLSFANGGOTOMAINRETURNLOOPCALLCALCCALLDISPLAYCALLDELAY10MSRETURNCALCMOVFNUM,WCALLDIV10MOVWFGEMOVFSHANG,WCALLDIV10MOVWFSH1MOVFSHANG,WMOVWFBAIRETURNDISPLAYMOVFGE,WCALLCHABIAOMOVWFPORTDBCF

23、PORTB,1CALLDELAY2BSFPORTB,1MOVFSH1,WCALLCHABIAOMOVWFPORTDBCFPORTB,2CALLDELAY2BSFPORTB,2MOVFBAI,WCALLCHABIAOMOVWFPORTDBCFPORTB,3CALLDELAY2BSFPORTB,3RETURNDIV10MOVWFYUSHUCLRFSHANGMOVLW.10DIVLOOPSUBWFYUSHU,FINCFSHANG,FBTFSCSTATUS,CGOTODIVLOOPDECFSHANG,FADDWFYUSHU,WRETURNDELAY2 DECFSZ30H,FGOTODELAY2RETURNCHABIAOADDWFPCL,FRETLW0XC0RETLW0XF9RETLW0XA4RETLW0XB0RETLW0X99RETLW0X92RETLW0X82RETLW0XF8RETLW0X80RETLW0X90DELAY10MSMOVLW0DHMOVWF20HLOOP1MOVWF0FFHMOVWF21HLOOP2DECFSZ21HGOTOLOOP2DECFSZ20HGOTOLOOP1 RETURNSFANGMOVLW00HMOVWFPORTCMOVLW0F0HAND

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論