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

下載本文檔

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

文檔簡介

1、 2013 屆畢業(yè)設計(論文) 題 目: 多功能計算器的設計 學 院: 浦江學院 專 業(yè): 電子信息工程 班 級: 電子 0904 姓 名: 于穎 指導教師: 袁建華 起訖時間: 2012-11-012013-06-10 2013年6月I 多功能計算器的設計 摘要本設計就是利用單片機的原理來進行多功能計算器的設計的,設計過程中的主控制器選用了AT89C52單片機,采用TC1602液晶顯示器,輸入按鍵為4×4矩陣鍵盤,通過軟硬件相結(jié)合,來實現(xiàn)整數(shù)的“加”、“減”、“乘”、“除”運算。在計算器基本功能順利完成的基礎上,對系統(tǒng)進行了簡單的擴展,增加了電子表功能,達到預期的要求,系統(tǒng)功能也更

2、加完善。本計算器系統(tǒng)簡單,實用性強,成本低,使用維護方便,軟件功能強,運行穩(wěn)定可靠等優(yōu)點。關鍵詞:計算器,運算,擴展 Design of multi-function calculatorABSTRACT This design principle is the use of single-chip design for multi-function calculator, the design process of the main controller selects the AT89C52 microcontroller, using TC1602 LCD monitors, input

3、 keys for the 4 × 4 matrix keyboard, through a combination of hardware and software to achieve integer "plus", "minus", "multiply", "in addition to" operation. The successful completion of the basic functions of the calculator, based on a simple extension

4、 of the system, increasing the spreadsheet functions, to achieve the desired requirements, the system functions more perfect. This calculator system is simple, practical, low cost, easy maintenance, software features strong, stable and reliable.Key Words:Calculator , Operation , Expand目 錄摘要IABSTRACT

5、II第一章 緒論11.1引言11.2設計任務11.3論文結(jié)構(gòu)2第二章 課題背景32.1 AT89Cxx系列單片機的簡介32.2計算器系統(tǒng)簡介42.3計算器的總體功能描述5第三章 計算器的硬件系統(tǒng)設計63.1計算器的硬件系統(tǒng)框架63.2最小系統(tǒng)的設計63.3鍵盤接口電路的設計83.4顯示電路的設計93.5 DS1302實時時鐘電路的設計10第四章 計算器的軟件系統(tǒng)設計124.1匯編語言和C語言的特點及選擇124.2主模塊程序的設計134.3鍵盤掃描模塊程序的設計144.4運算模塊程序的設計164.5顯示模塊程序的設計174.6 DS1302實時時鐘模塊程序的設計19第五章 計算器系統(tǒng)的組裝與調(diào)試

6、215.1軟件系統(tǒng)的調(diào)試與仿真215.2硬件系統(tǒng)的組裝與調(diào)試22第六章 總結(jié)和展望25參考文獻26附錄一 計算器電路原理圖27附錄二 程序代碼28致謝41III南京工業(yè)大學本科生畢業(yè)設計(論文)第一章 緒論1.1引言當今社會,隨著科技的不斷發(fā)展與進步,人民生活水平和物質(zhì)水平的不斷提高,多種多樣的電子產(chǎn)品走進了千家萬戶,給我們的生活、學習、工作、娛樂提供了很多的便利。在這當中,計算器作為一種簡單,快捷的操作,正確率高,被廣泛用于便攜式計算工具,已經(jīng)成為人類生活中不可或缺的助手。單片機是計算機、自動控制和大規(guī)模集成電路技術相結(jié)合的產(chǎn)物,融計算機結(jié)構(gòu)和控制功能于一體,因此除單片機外它還有其他名稱,例

7、如“嵌入式微處理器”、“微控制器”、“嵌入式微控制器”等。如今,單片機憑借其微小的體積和低廉的成本在各個領域被廣泛使用,例如用于家用電器、工業(yè)控制等,所以許多大學里都開設了單片機原理與應用這方面的課程。這是一門結(jié)合了技術性和實踐性的學科,學習及研究它不論對我們自身還是社會的發(fā)展都是及其有意義的。計算器就是利用單片機制作的產(chǎn)物,所以本設計的主控制器選用了AT89C52單片機,采用TC1602液晶顯示器,輸入按鍵為4×4矩陣鍵盤,通過軟硬件相結(jié)合,來實現(xiàn)整數(shù)的“加”、“減”、“乘”、“除”運算。在此基礎上還加入了DS1302實時時鐘電路的設計,使其本省還具有了電子表的功能。1.2設計任務

8、這次設計主要是通過單片機的原理和應用,在電子技術基礎的基本理論的指導下,我采用Protues仿真軟件和eil編程軟件來進行設計計算器,然后制作實物。它的主要設計任務有以下幾個部分,首先是硬件系統(tǒng)的設計,然后運用keil進行軟件系統(tǒng)部分的設計。利用protues仿真平臺,進行軟件部分調(diào)試及仿真;對照設計好的仿真圖進行計算器實物的焊接。在將軟件程序放入硬件之后,對整體電路進行調(diào)試與測試,看是否存在問題。 1.3. 論文結(jié)構(gòu) 本文共由六章組成,第二章為基礎理論部分,介紹單片機的發(fā)展現(xiàn)狀、AT89Cxx系列單片機的簡介,計算器系統(tǒng)簡介計算器的總體功能描述,;第三章為計算器的硬件系統(tǒng)設計,從結(jié)構(gòu)上分析計

9、算器的硬件系統(tǒng)框架,最小系統(tǒng)的設計,鍵盤接口電路的設計,顯示電路的設計及DS1302實時時鐘電路的設計;第四章介紹計算器的軟件系統(tǒng)設計,主要介紹主模塊程序的設計,鍵盤掃描模塊程序的設計,運算模塊程序的設計,顯示模塊程序的設計以及DS1302實時時鐘模塊程序的設計;第五章為計算器系統(tǒng)的組裝與調(diào)試,對系統(tǒng)的軟硬件分別進行了調(diào)試;第六章為論文總結(jié),對本次畢業(yè)設計做了相關小結(jié)并提出了下一步要做的工作。41 第二章 課題背景2.1 AT89Cxx系列單片機的簡介 MCS-51系列單片機具有性能優(yōu)越,技術成熟,可靠性高,成本效益的優(yōu)點,所以其迅速占領了工業(yè)測量和控制及自動化工程的主要市場,成為主流的芯片應

10、用。由于其卓越的性能和完美的結(jié)構(gòu),導致后來許多微控制器制造商多遵循參考它的架構(gòu)。和愛特梅爾公司一樣,飛利浦,達拉斯和其他領先的半導體公司已經(jīng)推出與MCS-51單片機產(chǎn)品兼容。這些知名廠商加入51系列獲得了突飛猛進的發(fā)展,進一步豐富和發(fā)展的51系列,產(chǎn)品性能有了很大的提高。其主要特性有:1、80C51核心處理單元。2、64/32/16/8B片內(nèi)Flash ROM,具有在應用可編程(IAP)、在系統(tǒng)可編程(ISP)的功能,可實現(xiàn)遠程軟件升級,無需編程器。3、1K字節(jié)RAM; 4、雙DPTR數(shù)據(jù)指針;5、支持6時鐘或12時鐘模式;6、4個8位I/O口, P1口、P2口、P3口可直接驅(qū)動LED;7、S

11、PI和增強型UAPT;8、有PCA(可編程計數(shù)器陣列),具有PWM的捕獲/比較功能;9、3個16位定時器/計數(shù)器;10、可編程看門狗定時器;11、低EMI方式(ALE禁止);12、兼容TTL和COMS邏輯電平;13、掉電模式和低功耗模式等;14、全靜態(tài)操作0Hz24Hz;圖2-1為AT89Cxx系列單片機的引腳排列圖:圖2-1 AT89Cxx系列單片機引腳排列圖 2.2計算器系統(tǒng)簡介計算器的組成包括運算器、控制器、存儲器、鍵盤、顯示器、電源和一些可選外圍設備及電子配件通過人工或機器設備。低級計算器運算器,控制器由數(shù)字邏輯電路簡單的串行操作,隨機存取存儲器是只有一個或兩個細胞,用于累加存儲。高級

12、計算器和只讀存儲器由微處理器來實現(xiàn)各種復雜的計算程序,有更多的隨機存取記憶體單元來存儲程序和數(shù)據(jù)輸入。鍵盤是計算機輸入成員,一般的接觸或傳感器類型。為了減少計算器的大小,一鍵常常有多種功能。計算機顯示輸出部件,發(fā)光二極管顯示器,液晶顯示器等。除了顯示的結(jié)果,但也經(jīng)常會有溢出指示,錯誤指示。計算器的電源使用AC電源適配器或電池,電池或太陽能供電的AC轉(zhuǎn)換器轉(zhuǎn)換器充電。為了節(jié)約能源,計算器生產(chǎn)大規(guī)模集成電路采用CMOS工藝(互補型金屬 - 氧化物 - 半導體集成電路),內(nèi)部配備掉電定時器電路不自動操作。計算器可選外設,微型打印機,盒式磁帶驅(qū)動器和磁機。2.3計算器的總體功能描述這次設計是多功能計算

13、器的設計,所以它實現(xiàn)的不僅僅是簡單的運算,還添加了電子表的功能,其主要實現(xiàn)功能如下所述:1、本設計為基于單片機的多功能計算器的設計,它的基本功能是進行四則運算“加”、“減”、“乘”、“除”;2、進行基本的四則運算,鍵盤由16個鍵組成,其中包含數(shù)字鍵09,符號鍵“+”、“-”、“*”、“/”、“=”和清零鍵;3、設計運算的過程中的數(shù)字和符號在顯示器上都需要顯示,按下“=”號鍵時,計算結(jié)果自動顯示出來;4、可以連續(xù)多次的運算,也就是說前面計算所得的結(jié)果還可以作為后面運算的第一個值; 5、錯誤提示,例如除數(shù)為0,或者運算結(jié)果超過了計算器本身設定的范圍時(溢出),可以在顯示器上提示錯誤并內(nèi)部歸零;6、

14、附加功能:在以上幾點完成的情況下對系統(tǒng)進行下一步的擴展,增加了時鐘芯片,這樣系統(tǒng)既可以作為計算器,也可作為電子表,電子表具有調(diào)時。第三章 計算器的硬件系統(tǒng)設計3.1計算器的硬件系統(tǒng)框架計算器的硬件系統(tǒng)框架如圖3-1所示:單片機按鍵及鍵掃電路顯示電路復位、晶振電路實時時鐘電路電源系統(tǒng)圖3-1 計算器的硬件系統(tǒng)框架圖3.2最小系統(tǒng)的設計單片機最小系統(tǒng)一般由單片機,復位電路和晶振電路組成,我們在設計中總是喜歡把按鍵輸入、顯示輸出等加到上述電路中。1、單片機的選擇在前面我們已經(jīng)介紹了AT89C系列的單片機,本設計中我們采用AT89C52單片機,它的性能好,價格低。其引腳圖如圖3-2所示。圖3-2 AT

15、89C52引腳圖2、晶振電路的設計本次設計的系統(tǒng)對于時間要求不是很高,只要按圖來進行設計就可以使系統(tǒng)可靠起振并運行的穩(wěn)定。但是由于圖中的電容C2、C3的作用是對系統(tǒng)時鐘頻率的微調(diào)和穩(wěn)定,所以在這次計算器系統(tǒng)的實際應用中一定要注意正確選擇參數(shù)(本設計采用30pF),振蕩頻率范圍是1.2MHz12MHz,這里采用11.0592MHz是因為可以準確地得到9600波特率和19200波特率,便于和計算機進行串口通訊。晶振電路的設計如下圖3-3所示。 圖3-3 晶振電路3、復位電路的設計本次設計對復位電路部分的考慮還是蠻周到的,因為復位電路對這次設計來說是很重要的。當程序運行出錯或操作錯誤導致系統(tǒng)死鎖狀態(tài)

16、時,為了讓系統(tǒng)化險為夷,需要按復位鍵重新啟動單片機。復位操作包過加電復位和手動復位,其中,按鍵手動復位分為電平方式和脈沖方式兩種。這次設計中,手動復位明顯比加電復位更適合,所以在這里采用按鍵手動復位中的按鍵電平復位,電路設計如圖3-4所示。 圖3-4 按鍵電平復位電路3.3鍵盤接口電路的設計這次設計是基于單片機的計算器的設計,并沒有要求進行復雜的運算,因此,采用4×4矩陣式鍵盤16個鍵來實現(xiàn)基本的“加” 、“減” 、“乘” 、“除”運算即可。矩陣式鍵盤的硬件結(jié)構(gòu)比較簡單,有行輸出口和列輸出口構(gòu)成行列式鍵盤,按鍵設置在行、列的交點上。4×4矩陣式鍵盤具體按鍵安排如表3-1:表

17、3-1 4×4矩陣式鍵盤 第0列第1列第2列 第3列第0行01 23第1行4567第2行89+-第3行*/=復位 電路設計如圖3-5所示,圖中1.、2、3、4分別接單片機的P10P13口,5、6、7、8分別接P14P17口。 圖3-5 鍵盤接口電路3.4顯示電路的設計單片機應用系統(tǒng)中常用的LED顯示器件有LED數(shù)碼管顯示器和LED液晶顯示器兩種。液晶顯示器和LED數(shù)碼管顯示器對比來說雖然價格貴點,但是它的顯示功能強大,體積小、功耗低、界面清晰,便于觀察。這次設計進行的是計算器設計,如果用液晶作為顯示器,兩行就足夠了,一行顯示算式,一行顯示結(jié)果,所以這次設計選擇TC1602字符型液晶模

18、塊進行顯示。TC1602的工作原理:TC1602顯示模塊采用點陣圖形來顯示字符,顯示分為2行、每行16個字符或1行16個字符兩種模式,常用模式為2行16個字符。它包含16個引腳,引腳功能如下表3-2:表3-2 TC1602顯示模塊第1腳GND電源地第2腳Vcc接+5V電源第3腳VL液晶顯示器調(diào)整對比度端第4腳RS寄存器選擇信號線。高電平時進行讀操作,低電平時選擇指令寄存器第5腳RW讀寫信號線第6腳E使能端,當E端由高電平跳變成低電平時,可以寫入數(shù)據(jù)第714腳8位雙向數(shù)據(jù)線D0D7第15腳BLA背光電源正極輸入端第16腳BLK背光電源負極輸入端。BLA接正,BLK接負便會點亮背光燈TC1602引

19、腳電路圖如圖3-6所示:圖3-6 TC1602電路圖圖中714腳接單片機的P0口。TC1602液晶顯示模塊內(nèi)置有字符發(fā)生ROM,字符發(fā)生RAM和字符顯示RAM,字符發(fā)生存儲器已經(jīng)存儲了192個不同的點陣字符圖形,每一個字符都有固定的代碼,可以通過查表找出所需要顯示的字符的地址讓其在液晶中顯示出來。3.5 DS1302實時時鐘電路的設計在這次設計中,DS1302時鐘電路是系統(tǒng)擴展的一個模塊,屬于附加功能,它跟計算器是不屬于一個部分的,在上學期創(chuàng)新設計的基礎上,我多添加了這個模塊,這樣我的計算器除了計算功能外,還多了一項電子表的功能,使系統(tǒng)功能完善了許多。我設計的計算器和電子表兩種模式可以用一個獨

20、立按鍵來進行切換,而且是在同一塊液晶屏上顯示。實時時鐘電路DS1302的主要特點是采用串行數(shù)據(jù)傳輸,可以為電源提供可編程的充電功能,并且還可以關閉充電功能,采用普通32.768kHz晶振,工作電壓為2.5V5.5V。它可以對年、月、日、周、日、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能。但是這次設計,我設計的只是電子表,所以只需要時、分、秒,很多功能不可以體現(xiàn)出來,我準備在以后對系統(tǒng)進一步擴展,比如可以做個萬年歷,這樣時鐘芯片就可以得到充分的利用。其引腳功能如表3-3所示:表3-3 DS1602引腳功能第1腳Vcc2第1腳Vcc2第2腳X1和第3腳X2振蕩源,外接32.768HZ的晶振第4腳

21、GND地線第5腳復位/片選線第6腳I/O串行數(shù)據(jù)輸入/輸出端(雙向)第7腳SCLK串行時鐘輸入第8腳Vcc1后背電源DS1302引腳電路圖如圖3-7所示: 圖3-7 DS1302電路圖在對該模塊進行設計時,我選用了4個獨立式按鍵,它們的功能分別是:“設置” 、“確認” 、“+” 、“-” ,用來準確的設置時間。設置方法如下:首先按設置鍵1下,可按“+”、“-”對“小時”進行設置,設置完畢按確認鍵退出;和前面一樣,按設置鍵2下對“分”進行設置,按設置鍵3下對“秒”進行設置。第四章 計算器的軟件系統(tǒng)設計這次設計需單片機硬件電路及軟件編程相結(jié)合,在單片機的應用系統(tǒng)程序設計時,一般選用匯編語言和C語言

22、。通過4.1的概述,這次設計我選擇用C語言進行編程。4.1 匯編語言和C語言的特點及選擇這次設計我用的是硬件電路和軟件編程相結(jié)合的設計方案,所以選擇合適的編程語言是很重要。在進行單片機的應用系統(tǒng)程序設計時,常見的有匯編語言和C語言兩種。C語言雖然執(zhí)行效率沒有匯編語言高,但是它語言簡單,便于操作,運算豐富,表達化類型多種多樣,數(shù)據(jù)結(jié)構(gòu)類型也很豐富,可以大大提高大大提高單片機應用系統(tǒng)研制開發(fā)的效率,而且它的易移植性也有助于打破不同單片機系列之間的界限。如今單片機的發(fā)展水平已經(jīng)達到了一定高度,內(nèi)部資源相當豐富,CPU的處理速度非???。我覺得這次設計用C語言來控制單片機是一個不錯的選擇。所以在這次設計

23、中我選擇C語言來編寫程序代碼。主函數(shù)設計:/*函數(shù)聲明*/#include <reg51.h>#include <key.h>#define uchar unsigned charuchar key;uchar rrr=0xff;uchar alldata12=0;uchar love14;uchar exit=0,yes=0,kind=0,fu=0,pfu=0,position1=0,position2=0;unsigned long data1=0,data2=0,data3=0,ddata=0;uchar keyscan(void);void display(uc

24、har);void prodis(void);void clear(void);void datapc(void);void remove0(void);void data3dis(void);void main()init();while(1) key=keyscan(); delay(); if(exit=1) display(key); 4.2主模塊程序的設計 主模塊是可以說是本次設計的主框架。在進行結(jié)構(gòu)化程序設計時經(jīng)常會用到“從上到下”和“從下到上”兩種方式,而“從上到下”法的核心便于主框架的構(gòu)建。它的好壞直接影響到程序最終功能的實現(xiàn)。本設計的主要目的是實現(xiàn)計算功能,而不是電子表,僅在

25、計算器功能的基礎上,成功完成附加功能的電子表格,所以時間的優(yōu)先級的設計,該系統(tǒng)應被引導到一種計算模式,而不是電子表格模式,設計完成后我可以根據(jù)需要在兩者之間切換,主模塊的程序流程圖如圖4-1所示。開始初始化液晶屏、DS1302及相關變量計算模式判斷模式切換鍵是否按下 N Y電子表模式 判斷模式切換鍵是否按下 N返回 Y 圖4-1 主模塊程序流程圖 4.3鍵盤掃描模塊程序的設計矩陣按鍵掃描程序是用來節(jié)省I/O口的,它可以根據(jù)按鍵數(shù)目的多少來節(jié)省對應的I/O口。鍵盤掃描模塊程序的流程圖如圖4.2所示。鍵盤掃描子程序應具有以下功能:(1)如果鍵有按下,就計算鍵值。它的方法為:行輸出口輸出全為0,讀列

26、輸入口信息,如果列輸入值全為1,沒有鍵按下;如果不是為全1,有鍵按下,對應的計算鍵值。(2)去除按鍵抖動。在按鍵操作過程中,按鍵受到彈性的影響會導致按鍵的機械觸電在閉合及斷開的瞬間發(fā)生抖動的現(xiàn)象,導致按鍵不能馬上實現(xiàn)完全閉合或斷開,并使輸入電壓信號也會出現(xiàn)抖動現(xiàn)象,抖動時間的長短根據(jù)按鍵的機械特性決定。在實際應用中,應大于20ms,否則,就會發(fā)生按一次做多次處理的情況,從而程序不能正常執(zhí)行。開始是否有鍵按下 N 消抖 Y 確實有鍵按下 N 判斷并計算鍵號,執(zhí)行相應命令 Y 按鍵是否釋放 N 返回 Y圖4-2 鍵盤掃描模塊程序流程圖 (3)判斷按鍵是否釋放。首先要計算出閉合鍵的鍵值,然后對按鍵判

27、斷是否釋放。如果按鍵釋放就等待;如果鍵已經(jīng)釋放,那么就再延時消抖。(4)命令處理。輸入閉合鍵的鍵值后,程序自動實現(xiàn)該鍵已經(jīng)設定的功能。4.4運算模塊程序的設計在這個模塊中,我要實現(xiàn)“加”、“減”、“乘”、“除”四種整數(shù)的運算,需要定義三個數(shù):x、y、z ,類型為長整型(-2147485648+2147485647);其中x為第一個數(shù),y為第二個數(shù),z為兩數(shù)運算的結(jié)果。這次設計還要求可以根據(jù)需要進行連續(xù)多次的運算,即把c的值賦給x,輸入運算符,再輸入y,按下“=”號,再得到z,再賦給x,以此反復執(zhí)行。在運算中x的值有可能是負數(shù),而y必定是正數(shù),所以我在進行“加”、“減”、“乘”三種運算時都可能會

28、有溢出,都需要進行報錯;在除法運算時,若除數(shù)為0,也需要報錯。設d=+2147485647,e=-2147485648,判斷溢出的方法是:(1)加法:當0<x<d時,若y>d-y,則溢出;(2)減法:當e<x<0時,若y>x-e,則溢出;(3)乘法:當0<x<d時,若y>d/x,則溢出; 當e<x<0時,若y>e/x,則溢出;這次需要當心的地方就是在設計過程中除法運算時為了保留四位小數(shù)需對z轉(zhuǎn)化為float型并進行×10000的操作,可以想象當z> +214748.5647時,z擴大一萬倍就不再屬于長整型的

29、范圍了,這就產(chǎn)生了溢出錯誤。為了阻止這種情況的發(fā)生,這次設計規(guī)定了當z> +214748.3645或z<-214748.5648時,結(jié)果顯示不保留小數(shù);當z<+214748.5647或z>-214748.5648時,結(jié)果顯示保留四位小數(shù)。運算模塊程序流程圖如圖4-3所示。開始判斷是哪個運算符乘減除加除數(shù)是否為0 N錯誤信息送顯示緩沖區(qū)運算結(jié)果是否溢出Y Y 數(shù)值送顯示緩沖區(qū) N 圖4-3 運算模塊程序流程圖4.5顯示模塊程序的設計在這次設計中,顯示器上只需要顯示數(shù)字和符號,不需要顯示圖形或者漢字,而且需要顯示的數(shù)字和符號都有在TC1602液晶模塊內(nèi)置的字符發(fā)生存儲器里,

30、在編程時,通過查表就可得到相應字符的代碼。顯示程序的流程圖如圖4-4所示。開顯示液晶初始化 判斷是否顯示字符 N 相應功能的設置 Y Y送地址 送數(shù)據(jù) 判斷是否顯示完 N 返回 Y 圖4-4 顯示程序流程圖在這個模塊中,我們需要了解液晶的基本操作時序?qū)懼噶詈蛯憯?shù)據(jù)。寫指令:輸入:RS=L,RW=L,D0D7=指令碼,E=高脈沖;輸出:無。寫數(shù)據(jù):輸入:RS=H,RW=L,D0D7=數(shù)據(jù),E=高脈沖;輸出:無。4.6 DS1302實時時鐘模塊程序的設計從前面已經(jīng)了解到了時鐘芯片的功能很強大,設計這部分程序前,我必須對DS1302有關日歷、時間的寄存器進行深入的了解。在本設計中,我只用到了時間,所

31、以我在這里就只對時間寄存器進行解釋,時(85H、84H)、分(83H、82H)、秒(81H、82H)寄存器及控制寄存器(8FH、8EH)介紹如表4-1所示。表4-1 時、分、秒、控制寄存器介紹讀寄存器寫寄存器bit7 bit6bit5bit4bit3bit2bit1bit0 范圍81H80HCH10秒秒005983H82H10分分005985H84H 0 020時10時 時0238FH8EH WP 0000000從表中,可以很明了的知道以上寄存器的功能和使用方法,需要說明的是控制寄存器的位7(WP)是寫保護位,其他七位都為0,在對任何時鐘和RAM進行寫操作前,WP必須為0。當WP為1時,禁止對

32、任一寄存器進行寫操作,也就是說在電路上電的初始態(tài)WP為1,必須先將它置為0,才可進行寫操作。還有秒寄存器的位7位定義為時鐘暫停標志(CH)位置為1時,時鐘振蕩器停止,DS1302時鐘芯片處于低功耗狀態(tài);為0時,時鐘開始運行。例如,執(zhí)行以下語句,就在時鐘芯片中寫入了時間11:20:05。write_ds1302(0x8e,0x00); /去保護write_ds1302(0x84,0x12); /寫小時,11時write_ds1302(0x82,0x30); /寫分鐘,20分write_ds1302(0x80,0x01); /寫秒鐘,05秒write_ds1302(0x8e,0x80); /寫完后

33、,上保護DS1302時鐘程序流程圖如圖4-5所示。開始相關變量初始化DS1302去保護復位端產(chǎn)生一個高電平復位端產(chǎn)生一個高電平寫1302地址延時寫1302地址將該地址數(shù)據(jù)讀出延時地址增加向該地址寫數(shù)據(jù)地址增加數(shù)據(jù)是否讀完 N數(shù)據(jù)是否寫完N顯示數(shù)據(jù) Y Y 圖4-5 DS1302時鐘程序流程圖第五章 計算器系統(tǒng)的組裝與調(diào)試5.1軟件系統(tǒng)的調(diào)試與仿真 在本次設計中,C程序是在Keil軟件中編寫并編譯的,在程序編寫中主要出現(xiàn)了以下問題:(1)在進行編程的時候,因為程序過長過復雜,容易出現(xiàn)少了或多了一個“”的現(xiàn)象。(2)有的變量所定義的類型錯誤,雖然程序沒有錯誤,但仿真后結(jié)果錯誤。(3)事先未被定義的

34、被調(diào)函數(shù)放在了主調(diào)函數(shù)的后面,導致錯誤。(4)事先定義的芯片引腳與仿真圖中引腳不是同一個。(5)仿真的結(jié)果有時正確有時是亂碼,例如:6+15=21正確,但若是運算2148787845+26,結(jié)果就是亂碼。這是因為系統(tǒng)本身定義的是長整型,而此結(jié)果已經(jīng)溢出,不屬于長整型了,我們一眼就能看出是溢出,應該提示錯誤信息,但是計算機不能,所以在編寫程序時不能直接判斷運算結(jié)果是否大于長整型,而應該間接判斷,判斷方法在運算模塊的設計中已講解過。在Keil和Protues的聯(lián)合調(diào)試下,經(jīng)過了多次認真的分析與修改,程序終于能實現(xiàn)我預期的要求。Protues仿真如圖5-1所示。圖5-1 Protues 仿真圖5.2

35、硬件系統(tǒng)的組裝與調(diào)試在成功的進行軟件仿真后,下一步要做的就是焊接硬件實物了,焊在焊接前一定要認真閱讀焊接注意事項,并在萬能電路板上對各元件的放置進行合理布局,此時不僅要考慮正面整體的美觀,還要考慮背面布線的方便性,盡可能減少布線的復雜度。焊接好后要做的就是進行調(diào)試,這個過程中遇到的問題如下: (1)通過STC-ISP軟件把在Keil中生成的.hex文件加載到單片機中,開機,進行運算,發(fā)現(xiàn)液晶屏點亮但不顯示任何數(shù)據(jù),經(jīng)過對電路的檢查,發(fā)現(xiàn)本應接地液晶第3腳(VL)接到了電源端,改正后液晶可以顯示。 (2)液晶雖然可以顯示了,但在進行計算時并不能正確顯示,經(jīng)過多次檢查,發(fā)現(xiàn)硬件并無錯誤,斷定為軟件

36、的錯誤,最后發(fā)現(xiàn)軟件中液晶初始化不完整,可是在仿真時是正確的,這充分說明了仿真與實際硬件的區(qū)別。經(jīng)過多次的調(diào)試,我的計算器終于能達到同仿真時一樣的效果了。計算器實物如圖5-2所示。 圖5-2 計算器實物圖計算器進行各種運算的截圖如圖5-3所示。 (a)加 (b) 減 (c)乘 (d) 除 (e) 除數(shù)為0 (f)溢出錯誤 (g)時間顯示圖5-3 運算器各種運算截圖 從上圖可以看出,我做的計算器在運算部分和時鐘部分都能成功地運行了,它可以做到基本的四則運算,還可以正確的顯示時間,同時,在計算結(jié)果超出它本身的運算范圍的時候它會用英文提示錯誤。第六章 總結(jié)和展望我的題目是多功能計算器的設計,對于我們

37、這些實踐中的新手來說,這是一次考驗。如何才能把課堂上學到的東西和實際應用中的相結(jié)合?如何能讓自己的水平有更多的提高?如何讓自己的計劃變得更有序性,而不會忙無一用?這都是需要我考慮和努力的地方。通過這次課程設計使我學到很多很多東西,學會了如何讓去制定計劃,如何去實現(xiàn)這個計劃,而且掌握了在執(zhí)行過程中如何去克服心理上的不良情緒。不僅加深鞏固了以前學過的知識,而且學到了許多書本上沒有提到過的知識,學會了一種系統(tǒng)的研究方法,可以進行一些簡單的編程。同時通過這次設計,我體會到了大學四年學習中存在的不足,例如沒有深刻的理解以前老師教過的知識,沒有系統(tǒng)的掌握所學內(nèi)容,對C語言的運用能力也很差。本來我是想增加鍵

38、盤按鍵來實現(xiàn)除四則基本運算以外的運算功能的,但在實踐中我發(fā)現(xiàn)并不是我想的那么簡單,在編寫程序的時候我遇到了困難,使得我的想法只能被打斷,所以我又想到了在運算以外的其他部分添加功能,由于以前有電子時鐘方面的實驗經(jīng)歷,所以我決定把它作為附加功能。在實物焊接的后期我還是遇到了一些困擾,因為如何把時間顯示在液晶顯示器上而不影響計算器本省運算功能的操作出現(xiàn)了問題,但最終經(jīng)過我的深思熟慮還是巧妙的化解了這個難題。在這次設計中剛開始我遇到了很多問題,最終還是被我成功的解決了,基本實現(xiàn)了我最初的設想,也成功的實現(xiàn)了時鐘功能。通過這次畢業(yè)設計使我懂得了要把理論上學會的東西與實際中的結(jié)合起來,只有把二者合起來,通

39、過理論得出結(jié)論,才能提高自己的實際動手能力和獨立思考的能力,更好的為社會服務。雖然我完成了計算器的設計,但我覺得在設計過程中還是存在許多不足的,只能算是初步的完成了當初的想發(fā)。現(xiàn)在市場上的計算器功能都很多,我只能完成其中的一小部分,限于個人水平、時間及條件的限制,這次畢業(yè)設計我也只能做到那么多。如果以后還有時間對其進行的完善的話,我會添加一些平方,開方等實用的功能,但這些功能的實現(xiàn)我還要進行更加系統(tǒng)的學習。參考文獻1 何立民.MCS-51系列單片機應用系統(tǒng)設計M.北航版 ,1991 2 劉桂敏. 單片機系統(tǒng)中復合鍵和一鍵多功能的設計J.遼寧科技大學學報, 20113 胡漢才.單片機原理及其接口

40、設計M.清華大學出版社,1997 4 趙亮. 單片機從入門到精通系列講座矩陣鍵盤應用J,電子制作, 2008 5 胡花.單片機原理及應用技術M.江西高校出版社, 20086 劉杰,梁華國. 矩陣式靜態(tài)編碼鍵盤及其接口電路J. 阜陽師范學院學報(自然科學版), 20047 謝嘉奎.電子線路(非線性部分第四版)M.高等教育出版社,20088 徐瑋. 51單片機綜合學習系統(tǒng)1602字符型液晶顯示篇J . 電子制作, 2008 9 張紅, 于平. 基于單片機控制的LED點陣顯示屏系統(tǒng)J. 微計算機信息 , 200910 孫育才.MCS-51系列單片微型計算機及其應用M.東南大學出版社,200411 陳

41、洪財.單片機C語言和匯編語言使用開發(fā)技術M.哈爾濱工程大學出版社,2008 12 王效華、張詠梅.單片機原理及應用M.北京交通大學出版社,2007 13 彭偉.單片機C語言程序設計實訓100例M.電子工業(yè)出版社,200914 王東峰,王會良,董冠強.單片機C語言應用100例M.電子工業(yè)出版社,2009 15 程興國. 基于Proteus和Keil構(gòu)建的單片機虛擬實驗室J.福建電腦, 2009 16 KPeter.Background Compensation forIRthermometersJ.Sensor,1990,7(3):67 68.附錄一計算器的硬件電路原理圖 計算器硬件電路原理圖附

42、錄 二源程序:#include<reg51.h> /頭文件#define uint unsigned int #define uchar unsigned charsbit lcden=P26; /定義引腳sbit rs=P24;sbit rw=P25;sbit busy=P07;sbit key=P33;sbit setkey=P34; sbit surekey=P35;sbit pluskey=P36;sbit reducekey=P37;sbit ds1302_clk=P20; sbit ds1302_io=P21; sbit ds1302_rst=P22;bit w;uns

43、igned temp0,temp1,hour,min,sec,next;char i,j,num;long int a,b,c,d,e; /a第一個數(shù) b第二個數(shù) c得數(shù) int k,temp,kk;uchar flag,fuhao; /flag表示是否有符號鍵按下,fuhao表征按下的是哪個符號uchar err=0x72,0x6f,0x72,0x72,0x65,;uchar code table=0,1,2,3,4,5,6,7, 8,9,0,0,0,0,0,0;uchar code table1=0,1,2,3,4,5,6,7,8,9,0x2b-0x30,0x2d-0x30,0x2a-0x

44、30,0x2f-0x30,0x3d-0x30,0x01-0x30,;void delay(uchar z) /延遲函數(shù)1msuchar y;for(z;z>0;z-) for(y=0;y<110;y+);void delay1(uint t) /遲延函數(shù) 50us uchar j; for(;t>0;t-) for(j=19;j>0;j-);void delay2(uint t) /遲延函數(shù)50ms uchar j; for(;t>0;t-) for(j=6245;j>0;j-);void write_ds1302byte(unsigned char tem

45、p1) /ds1302寫字節(jié)函數(shù) unsigned char i; for (i=8;i>0;i-) ds1302_io=temp1&0x01;ds1302_clk=0; ds1302_clk=1;temp1>>=1; void write_ds1302( unsigned char address,unsigned char dat ) /ds1302寫數(shù)據(jù)函數(shù) ds1302_rst=0; ds1302_clk=0; ds1302_rst=1; delay(1); write_ds1302byte(address); write_ds1302byte(dat); d

46、s1302_rst=0; unsigned char read_byte() /ds1302讀字節(jié)函數(shù) unsigned char i; for(i=8;i>0;i-) if(ds1302_io)temp0=temp0|0x80;ds1302_clk=1; ds1302_clk=0;temp0=temp0>>1; return temp0; unsigned char read_ds1302(unsigned char address) /ds1302讀數(shù)據(jù)函數(shù) unsigned char temp1; ds1302_rst=0; ds1302_clk=0; ds1302_rst=1; write_ds1302byte(address); temp1=read_byte(); ds1302_rst

溫馨提示

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

評論

0/150

提交評論