【正文】
廣東工業(yè)大學(xué)單片機(jī)課程設(shè)計(jì)基于51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)【摘 要】單片機(jī)的出現(xiàn)是計(jì)算機(jī)制造技術(shù)高速發(fā)展的產(chǎn)物,它是嵌入式控制系統(tǒng)的核心,如今,它已廣泛的應(yīng)用到我們生活的各個(gè)領(lǐng)域,電子、科技、通信、汽車、工業(yè)等。本設(shè)計(jì)是基于51系列單片機(jī)來進(jìn)行的數(shù)字計(jì)算器系統(tǒng)設(shè)計(jì),可以完成計(jì)算器的鍵盤輸入,進(jìn)行加、減、乘、除八位數(shù)范圍內(nèi)的基本四則運(yùn)算,并在LCD上顯示相應(yīng)的結(jié)果。設(shè)計(jì)電路采用AT89S51單片機(jī)為主要控制電路,利用4*4矩陣鍵盤作為計(jì)算器的數(shù)字以及運(yùn)算符的輸入。顯示采用字符LCD靜態(tài)顯示。軟件方面使用C語言編程,并用開發(fā)板制作并演示?!娟P(guān)鍵詞】計(jì)算器,單片機(jī),LCD,矩陣鍵盤 AbstractThe emergence of puter chip manufacturing technology, rapid development of the product, which is the core of embedded control systems, and now, it has been widely applied to all areas of our lives, electronics, technology, munications, automotive, industrial and so on.The design is based on the 51 puters for digital system design calculator, you can plete the calculator keyboard, to add, subtract, multiply, and divide within the scope of the basic sixdigit arithmetic, and the corresponding results on the LCD display.AT89C51 microcontroller circuit design as the main control circuit, use MM74C922 4 * 4 keypad as a calculator scan IC to read keyboard input.Character LCD display with a static display.Software using the C programming language, and use PROTUES simulation.Keywords: calculator,MCU,LCD, Matrix keyboard目錄摘 要 1一、系統(tǒng)總體設(shè)計(jì) 1 1 1: 2 2二、硬件系統(tǒng)設(shè)計(jì) 2 2 LCD1602液晶顯示屏 3 4 清零、音樂開關(guān)、開方和多次方運(yùn)算功能模塊 5 6三、軟件系統(tǒng)設(shè)計(jì) 6 6 8 8 矩陣鍵盤掃描程序設(shè)計(jì) 8 AC清零程序設(shè)計(jì) 9 聲音開關(guān)子程序設(shè)計(jì) 10四、系統(tǒng)功能測(cè)試 10 10 各項(xiàng)功能測(cè)試 11 多次測(cè)試 11五、總結(jié) 12六、結(jié)束語 12參考文獻(xiàn) 13附錄 14附1:計(jì)算器原理圖 14附2:主程序清單 14附3:鍵盤掃描子程序 21附4:LCD1602顯示程序 24附5:LCD1602顯示字符表 28附6: LCD接口信號(hào)說明 29附7: LCD寫操作時(shí)序圖 29一、系統(tǒng)總體設(shè)計(jì) 本設(shè)計(jì)使用AT89S52單片機(jī)作為主控芯片,通過計(jì)算機(jī)鍵盤進(jìn)行數(shù)據(jù)輸入,進(jìn)行相應(yīng)的加、減、乘、除的運(yùn)算,并在LCD上顯示相應(yīng)的結(jié)果,主要功能特點(diǎn)如下:(1)LCD的第一行顯示運(yùn)算式子,第二行顯示運(yùn)算結(jié)果,在任何時(shí)候按下AC清零按鍵時(shí)候,都必須退出當(dāng)前計(jì)算,返回初始狀態(tài),等下新的一次運(yùn)算。(2)當(dāng)運(yùn)算完第一次完整的計(jì)算以后,可以在不按任何按鍵的情況下,進(jìn)行新的一輪運(yùn)算,若運(yùn)算完一次運(yùn)算后繼續(xù)按運(yùn)算符按鍵,則利用之前一次的結(jié)果作為第一個(gè)算數(shù),直接等待第二運(yùn)算數(shù)的輸入并完成計(jì)算,即可進(jìn)行連續(xù)運(yùn)算。(3)可根據(jù)用戶需要開啟或關(guān)閉按鍵聲音提示,即通過重復(fù)按聲音開關(guān)按鈕可關(guān)聲音或開聲音。(4)可進(jìn)行開方運(yùn)算、可進(jìn)行任意次方的運(yùn)算,即能進(jìn)行x的y次方的運(yùn)算。 根據(jù)課程要求和設(shè)計(jì)指標(biāo),本系統(tǒng)采用MCS51系列單片機(jī)作為主控機(jī),通過拓展必要的外圍電路,實(shí)現(xiàn)對(duì)計(jì)算器的設(shè)計(jì),具體設(shè)計(jì)思路如下:(1) 由于要顯示運(yùn)算式和結(jié)果,為了達(dá)到良好的顯示效果,本系統(tǒng)采用LCD1602液晶顯示屏作為顯示模塊。(2) 計(jì)算器一般包含數(shù)字鍵(0~9),符號(hào)鍵(+、-、247。)、小數(shù)點(diǎn)按鍵,等號(hào)按鍵,故采用4*4矩陣鍵盤結(jié)合鍵盤掃描技術(shù)容易達(dá)到要求,并且電路和程序也比較簡(jiǎn)單。(3) 執(zhí)行過程:開機(jī)顯示‘0’,等待按鍵輸入,當(dāng)鍵入數(shù)字,在LCD上顯示出來,計(jì)算器內(nèi)部吧數(shù)據(jù)儲(chǔ)存起來,并等待下一按鍵輸入,當(dāng)鍵入+、-、247。運(yùn)算符,計(jì)算器在內(nèi)部進(jìn)行轉(zhuǎn)換,得到第一運(yùn)算數(shù),然后等待再次輸入數(shù)值,按等于號(hào)就在LCD上顯示結(jié)果,如果繼續(xù)按下+、-、247。運(yùn)算符,則直接利用第一次運(yùn)算的結(jié)果進(jìn)行下一次運(yùn)算。(4) AC清零功能:在運(yùn)算的任何時(shí)候鍵入AC鍵,則把數(shù)據(jù)清零,等待下一次運(yùn)算。為了實(shí)現(xiàn)此功能,本系統(tǒng)采用AC按鍵外部中斷輸入,運(yùn)用中斷技術(shù),隨時(shí)對(duì)計(jì)算器進(jìn)行清零。(5) 音樂開關(guān)功能:由于在輸入的任何時(shí)候都有可能需要開啟或關(guān)閉聲音提示,所以聲音開關(guān)按鍵也采用外部中斷輸入單片機(jī),運(yùn)用中斷技術(shù),隨時(shí)開或關(guān)聲音提示。(6) 開方和多次方運(yùn)算功能的實(shí)現(xiàn):采用獨(dú)立按鍵,再檢測(cè)運(yùn)算符的時(shí)候也檢測(cè)這兩個(gè)按鍵,一旦符合按下則進(jìn)行開方或者多次方運(yùn)算,程序可通過條用“”頭文件中的sqrt和pow函數(shù)實(shí)現(xiàn)。(7) 錯(cuò)誤提示:當(dāng)輸入超過范圍時(shí),則停止輸入,等待輸入運(yùn)算符;當(dāng)除數(shù)為0時(shí),計(jì)算器會(huì)在LCD上提示錯(cuò)誤;當(dāng)被開方數(shù)小于0時(shí),提示錯(cuò)誤。鑒于本設(shè)計(jì)的計(jì)算器的難度以及功能的要求,在本設(shè)計(jì)中決定使用語言功能豐富、表達(dá)能力強(qiáng)、使用方便靈活、可移植性好的C語言編寫軟件,這樣有利于減輕工作量和代碼量,提高設(shè)計(jì)效率。若使用匯編語言編寫程序,會(huì)出現(xiàn)匯編語言無法表達(dá)、移植困難等問題,而且對(duì)于開方和多次方的運(yùn)算,匯編語言難以表達(dá)和設(shè)計(jì),這是設(shè)計(jì)是很不利。: 系統(tǒng)總體框圖經(jīng)過反復(fù)推敲最終確定系統(tǒng)采用以下方案:(1)采用AT89S52作為主控芯片;(2)顯示模塊使用LCD1602液晶顯示屏;(3)輸入模塊使用4*4矩陣鍵盤;(4)AC清零按鍵使用獨(dú)立按鍵并接入單片機(jī)外部中斷引腳;(5)聲音提示開關(guān)按鍵使用獨(dú)立按鍵并接入單片機(jī)外部中斷引腳;(6)平方和開方按鍵由開發(fā)板上的獨(dú)立按鍵實(shí)現(xiàn);(7)電源采用LM7805穩(wěn)壓電路。二、硬件系統(tǒng)設(shè)計(jì)AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程 DIP封裝Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。 AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。 AT89S52的最大優(yōu)點(diǎn)是可以在線編程,在調(diào)試程序的時(shí)候,可直接帶電燒錄程序,燒錄完成即可自動(dòng)復(fù)位運(yùn)行,非常適合調(diào)試程序。而且AT89S52可編程一千多次以上,的確是一種價(jià)格低廉的開發(fā)芯片。單片機(jī)的最小系統(tǒng)設(shè)計(jì): 單片機(jī)最小系統(tǒng) LCD1602液晶顯示屏LCD1602,工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符(16列2行),故簡(jiǎn)稱1602。1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線VCC(15腳)和地線GND(16腳