




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄第一部分【摘 要】2第二部分【緒 論】3第三部分【方案論證與設(shè)計(jì)】431 設(shè)計(jì)目標(biāo)和實(shí)現(xiàn)方法432方案論證與設(shè)計(jì)4第四部分 【硬件模塊介紹】64.1 運(yùn)算模塊64.2 單片機(jī)(AT89C51)74.2.1 單片機(jī)(AT89S51)的引腳功能74.2.2 引腳介紹84.3 輸入模塊124.3.1 鍵盤(pán)介紹134.4 顯示模塊144.4.1 數(shù)碼154.4.2 數(shù)碼管的分類(lèi)15第五部分【 軟件設(shè)計(jì)】175.1 LED顯示程序流程圖設(shè)計(jì)175.2 讀鍵輸入程序流程圖設(shè)計(jì)175.3 主程序流程圖設(shè)計(jì)18第六部分 【 仿真及調(diào)試】20第七部分【總結(jié)及附錄】21參考文獻(xiàn)23附錄1 【簡(jiǎn)易計(jì)算器源程序
2、】24附 錄2 【 仿真電路設(shè)計(jì)圖】35一 【摘 要】計(jì)算器在人們的日常中是比較的常見(jiàn)的電子產(chǎn)品之一。可是它還在發(fā)展之中,以后必將出現(xiàn)功能更加強(qiáng)大的計(jì)算器,基于這樣的理念,本次設(shè)計(jì)是用單片機(jī)來(lái)設(shè)計(jì)的八位計(jì)算器。該設(shè)計(jì)系統(tǒng)是以AT89C51為單片機(jī),用7SEG為顯示位控制, P1口作為輸入端,外接4X4的鍵盤(pán),通過(guò)鍵盤(pán)掃描來(lái)對(duì)輸入數(shù)的控制,并外接驅(qū)動(dòng)電路,系統(tǒng)采用LCD數(shù)碼管作為顯示器,軟件程序采用均采用C語(yǔ)言編寫(xiě),便于移植與升級(jí)。報(bào)告詳細(xì)介紹了整個(gè)系統(tǒng)的硬件組成結(jié)構(gòu)、工作原理和系統(tǒng)的軟件程序設(shè)計(jì)。計(jì)算器將完成的功能有整數(shù)的加,減,乘,除等功能。二 【緒 論】隨著社會(huì)的發(fā)展,科學(xué)的進(jìn)步,人們的生
3、活水平在逐步的提高,尤其是微電子技術(shù)的發(fā)展,猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了, 單片機(jī)的應(yīng)用已經(jīng)越來(lái)越貼近生活,用單片機(jī)來(lái)實(shí)現(xiàn)一些電子設(shè)計(jì)也變得容易起來(lái)。近年來(lái),單片機(jī)以其體積小、價(jià)格廉、面向控制等獨(dú)特優(yōu)點(diǎn),在各種工業(yè)控制、儀器儀表、設(shè)備、產(chǎn)品的自動(dòng)化、智能化方面獲得了廣泛的應(yīng)用。與此同時(shí),單片機(jī)應(yīng)用系統(tǒng)的可靠性成為人們?cè)絹?lái)越關(guān)注的重要課題。影響可靠性的因素是多方面的,如構(gòu)成系統(tǒng)的元器件本身的可靠性、系統(tǒng)本身各部分之間的相互耦合因素等。其中系統(tǒng)的抗干擾性能是系統(tǒng)可靠性的重要指標(biāo)。本設(shè)計(jì)采用80S51 芯片,實(shí)現(xiàn)了利用單片機(jī)進(jìn)行了一個(gè)簡(jiǎn)單計(jì)算器設(shè)計(jì)。允許對(duì)輸入數(shù)據(jù)進(jìn)行加減乘
4、除運(yùn)算及LED 顯示。如果設(shè)計(jì)對(duì)象是更為復(fù)雜的計(jì)算器系統(tǒng),其實(shí)際原理與方法與本設(shè)計(jì)基本相同。另外,實(shí)例所設(shè)計(jì)的計(jì)算器是用LED 數(shù)碼管顯示的,當(dāng)然也可以用其他的器件顯示,如LED 顯示屏,這樣就可以顯示出更多的字符,在此基礎(chǔ)上,還可以編寫(xiě)更加完善的程序來(lái)實(shí)現(xiàn)更多的計(jì)算功能。設(shè)計(jì)的關(guān)鍵所在,必須非常熟悉單片機(jī)的原理與結(jié)構(gòu),同時(shí)還要對(duì)整個(gè)設(shè)計(jì)流程有很好的把握,將單片機(jī)和其他模塊完整的銜接。 a.設(shè)計(jì)目的本設(shè)計(jì)旨在進(jìn)一步掌握單片機(jī)理論知識(shí),理解嵌入式單片機(jī)系統(tǒng)的硬軟件設(shè)計(jì),加強(qiáng)對(duì)實(shí)際應(yīng)用系統(tǒng)設(shè)計(jì)的能力。通過(guò)本設(shè)計(jì)的學(xué)習(xí),使我掌握單片機(jī)程序設(shè)計(jì)和微機(jī)接口應(yīng)用的基本方法,并能綜合運(yùn)用本科階段所學(xué)軟、硬件
5、知識(shí)分析實(shí)際問(wèn)題,提高解決畢業(yè)設(shè)計(jì)實(shí)際問(wèn)題的能力,為單片機(jī)應(yīng)用和開(kāi)發(fā)打下良好的基礎(chǔ)。1、對(duì)字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調(diào)用及外特性有較清楚的認(rèn)識(shí),并會(huì)使用LCD(液晶顯示模塊)實(shí)現(xiàn)計(jì)算結(jié)果的顯示;掌握液晶顯示模塊的驅(qū)動(dòng)和編程,設(shè)計(jì)LCD和單片機(jī)的接口電路,以及利用單片機(jī)對(duì)液晶模塊的驅(qū)動(dòng)和操作; 2、在充分分析內(nèi)部邏輯的概念,進(jìn)行軟件和調(diào)試,學(xué)會(huì)使用,并能夠以其為平臺(tái)設(shè)計(jì)出具有四則運(yùn)算能力簡(jiǎn)易計(jì)算器的硬件電路和軟件程序。通過(guò)本次課題設(shè)計(jì),應(yīng)用單片機(jī)應(yīng)用基礎(chǔ)、計(jì)算機(jī)應(yīng)用基礎(chǔ)等所學(xué)相關(guān)知識(shí)及查閱資料,完成簡(jiǎn)易計(jì)算器的設(shè)計(jì),以達(dá)到理論與實(shí)踐更好的結(jié)合、進(jìn)一步提高綜合運(yùn)用所學(xué)知識(shí)和
6、設(shè)計(jì)的能力的目的。通過(guò)本次設(shè)計(jì)的訓(xùn)練,可以使我在基本思路和基本方法上對(duì)基于MCS-51單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)有一個(gè)比較感性的認(rèn)識(shí),并具備一定程度的設(shè)計(jì)能力。b.設(shè)計(jì)任務(wù)在本次課程設(shè)計(jì)中,主要完成如下方面的設(shè)計(jì)任務(wù):1、簡(jiǎn)要闡述單片機(jī)技術(shù)發(fā)展的國(guó)內(nèi)外現(xiàn)狀及LED動(dòng)態(tài)顯示和矩陣鍵盤(pán)基本原理;2、掌握MCS-51系列某種產(chǎn)品(例如8051)的最小電路及外圍擴(kuò)展電路的設(shè)計(jì)方法;3、了解單片機(jī)數(shù)據(jù)轉(zhuǎn)換功能及工作過(guò)程;4、完成主要功能模塊的硬件電路設(shè)計(jì)及必要的參數(shù)確定;5、用protel軟件完成原理電路圖的繪制;三【方案論證與設(shè)計(jì)】31 設(shè)計(jì)目標(biāo)和實(shí)現(xiàn)方法為了滿(mǎn)足計(jì)算器的基本要求,可以基本的運(yùn)算(加減乘除
7、),數(shù)據(jù)歸零和出錯(cuò)警告提示,我們采用基于單片機(jī)設(shè)計(jì)計(jì)算器,并用LED 數(shù)碼管顯示數(shù)據(jù),4*4 的矩陣鍵盤(pán)實(shí)現(xiàn)數(shù)據(jù)輸入。設(shè)計(jì)仿真和調(diào)試要用到Protues 、Keil等軟件。32方案論證與設(shè)計(jì) 根據(jù)功能和指標(biāo)要求,本系統(tǒng)選用MCS 51 單片機(jī)為主控機(jī)。通過(guò)擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對(duì)計(jì)算器的設(shè)計(jì)。具體設(shè)計(jì)考慮如下:另外鍵盤(pán)包括數(shù)字鍵(09)、符號(hào)鍵(+、-、)、清除鍵和等號(hào)鍵,故只需要16 個(gè)按鍵即可。系統(tǒng)模塊圖:圖3-1 系統(tǒng)模塊圖 根據(jù)需要我們可以采用自上而下的程序設(shè)計(jì)方法,此方法先從主程序開(kāi)始設(shè)計(jì),然后再編制各從屬程序和子程序,層層細(xì)化逐步求精,最終完成一個(gè)復(fù)雜程序的設(shè)計(jì)。這種方法比較
8、符合人們的日常思維,缺點(diǎn)是一級(jí)的程序錯(cuò)誤會(huì)對(duì)整個(gè)程序產(chǎn)生影響。程序流程圖如圖2-2所示:圖3-2 程序流程圖四【 硬件模塊介紹】4.1 運(yùn)算模塊 MCS-51 單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多功能I/O等一臺(tái)計(jì)算機(jī)所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM/EPROM)、并行I/O 口、串行口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過(guò)不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,通過(guò)使用單片機(jī)編寫(xiě)的程序可以實(shí)現(xiàn)高智能,高
9、效率,以及高可靠性!因此我們采用單片機(jī)作為:圖4-1 單片機(jī)芯片4.2 單片機(jī)(AT89C51) MCS-51系列單片機(jī)簡(jiǎn)介8051是MCS-51系列單片機(jī)的典型產(chǎn)品,以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線(xiàn)、地址總線(xiàn)和控制總線(xiàn)等三大總線(xiàn),其內(nèi)部結(jié)構(gòu)如圖2.1所示,現(xiàn)在分別加以說(shuō)明: 圖4.2.1 8051內(nèi)部結(jié)構(gòu)圖中央處理器:中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的
10、工作,完成運(yùn)算和控制輸入輸出功能等操作。數(shù)據(jù)存儲(chǔ)器(RAM):8051內(nèi)部有128個(gè)8位用戶(hù)數(shù)據(jù)存儲(chǔ)單元和128個(gè)專(zhuān)用寄存器單元,它們是統(tǒng)一編址的,專(zhuān)用寄存器只能用于存放控制指令數(shù)據(jù),用戶(hù)只能訪(fǎng)問(wèn),而不能用于存放用戶(hù)數(shù)據(jù),所以,用戶(hù)能使用的RAM只有128個(gè),可存放讀寫(xiě)的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶(hù)定義的字型表。程序存儲(chǔ)器(ROM):8051共有4096個(gè)8位掩膜ROM,用于存放用戶(hù)程序,原始數(shù)據(jù)或表格。定時(shí)/計(jì)數(shù)器:8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷,用于控制程序轉(zhuǎn)向。并行輸入輸出(I/O)口:8051共有4組8位I/O口(P0、 P1、P2和P3),用于對(duì)外部
11、數(shù)據(jù)的傳輸。全雙工串行口:8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。中斷系統(tǒng):8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿(mǎn)足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。時(shí)鐘電路:8051內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單片機(jī)需外置振蕩電容。單片機(jī)的結(jié)構(gòu)有兩種類(lèi)型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi)的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一的結(jié)構(gòu),即普林斯頓(Princeto
12、n)結(jié)構(gòu)。INTEL的 MCS-51系列單片機(jī)采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機(jī)則采用普林斯頓結(jié)構(gòu)。MCS-51的引腳說(shuō)明:MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直插DIP結(jié)構(gòu),下圖是它們的引腳配置,40個(gè)引腳中,正電源和地線(xiàn)兩根,外置石英振蕩器的時(shí)鐘線(xiàn)兩根,4組8位共32個(gè)I/O口,中斷口線(xiàn)與P3口線(xiàn)復(fù)用?,F(xiàn)在對(duì)這些引腳的功能加以說(shuō)明:如圖2.3所示。圖4.2.3 雙列直插式封裝引腳圖Pin9:RESET/Vpc復(fù)位信號(hào)復(fù)用腳,當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始
13、復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫(xiě)入07H,其它專(zhuān)用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開(kāi)始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8051的初始態(tài)。8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。見(jiàn)下圖2.4為兩種復(fù)位方式和兩種時(shí)鐘方式:上電自動(dòng)復(fù)位 手動(dòng)復(fù)位電路 內(nèi)部時(shí)鐘方式 外部時(shí)鐘方式圖4.2.4 復(fù)位方式和時(shí)鐘方式圖2-4-4 復(fù)位方式圖與時(shí)鐘方式圖P
14、in30:ALE/當(dāng)訪(fǎng)問(wèn)外部程序器時(shí),ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪(fǎng)問(wèn)內(nèi)部程序存儲(chǔ)器時(shí),ALE端將有一個(gè)1/6時(shí)鐘頻率的正脈沖信號(hào),這個(gè)信號(hào)可以用于識(shí)別單片機(jī)是否工作,也可以當(dāng)作一個(gè)時(shí)鐘向外輸出。它還有一個(gè)特點(diǎn)是,當(dāng)訪(fǎng)問(wèn)外部程序存儲(chǔ)器時(shí),ALE會(huì)跳過(guò)一個(gè)脈沖。如果單片機(jī)是EPROM,在編程其間,將用于輸入編程脈沖。Pin29:當(dāng)訪(fǎng)問(wèn)外部程序存儲(chǔ)器時(shí),此引腳輸出負(fù)脈沖選通信號(hào),PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲(chǔ)器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。Pin31:EA/Vpp程序存儲(chǔ)器的內(nèi)外部選通線(xiàn),8051和8751單片機(jī),內(nèi)置有4kB的程序存
15、儲(chǔ)器,當(dāng)EA為高電平并且程序地址小于4kB時(shí),讀取內(nèi)部程序存儲(chǔ)器指令數(shù)據(jù),而超過(guò)4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲(chǔ)器指令。顯然,對(duì)內(nèi)部無(wú)程序存儲(chǔ)器的8031,EA端必須接地。在編程時(shí),EA/Vpp腳還需加上21V的編程電壓。單片機(jī)(AT89S51)的引腳功能:51系列單片機(jī)8031、8051及89c51/89s51均采用40Pin封裝的雙列直接DIP結(jié)構(gòu)。上圖是它們的引腳配置:40個(gè)引腳中,正電源和地線(xiàn)兩根,外置石英振蕩器的時(shí)鐘線(xiàn)兩根,4組8位共32個(gè)I/O口,中斷口線(xiàn)與P3口線(xiàn)復(fù)用,如圖4.2-3所示:圖4-3 引腳圖4.2: 電源引腳Vcc4
16、0腳正電源腳,工作電壓為5V,另有AT89LV51工作電壓則是2.7-6V, 引腳功能一樣。GND20腳接地端。4.2 外接晶體引腳: 外接晶體引腳如圖4-4所示:圖4-4 外接晶體管引腳Pin19:時(shí)鐘XTAL1腳, Pin18:時(shí)鐘XTAL2腳,XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。 型號(hào)同樣為AT89C51的芯片,在其后面還有頻率編號(hào),有12,16,
17、20,24MHz可選。大家在購(gòu)買(mǎi)和選用時(shí)要注意了。如AT89C51 24PC就是最高振蕩頻率為24MHz,40P6封裝的普通商用芯片。4.2復(fù)位:在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上的高電平出現(xiàn)在此引腳時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0P3口均置1引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的0000H處開(kāi)始運(yùn)行程序。常用的復(fù)位電路如下圖4-5所示。圖4-5 復(fù)位電路圖復(fù)位操作不會(huì)對(duì)內(nèi)部RAM有所影響。當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平
18、,系統(tǒng)即初始復(fù)位。什么叫復(fù)位?復(fù)位是單片機(jī)重新執(zhí)行程序代碼的意思。8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位,如圖3-6所示。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電期間,此腳可接上備用電源, 以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。圖4-6 復(fù)位方式4.2輸入輸出(I/O)引腳:P39-P32為P0.0-P0.7輸入輸出腳,稱(chēng)為P0口,是一個(gè)8位漏極開(kāi)路型雙向I/O口。內(nèi)部不帶上拉電阻,當(dāng)外接上拉電阻時(shí),P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載電路。通常在使用時(shí)外接上拉電阻,用來(lái)驅(qū)動(dòng)多個(gè)數(shù)碼管。 在訪(fǎng)問(wèn)外部程序和外部數(shù)據(jù)存儲(chǔ)器時(shí),P0口是分時(shí)轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線(xiàn),
19、不需要外接上拉電阻。P1-P8為P1.0-P1.7輸入輸出腳,稱(chēng)為P1口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/0口。P1口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。 通常在使用時(shí)外不需要外接上拉電阻,就可以直接驅(qū)動(dòng)發(fā)光二極管。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。P21-P28為P2.0-P2.7輸入輸出腳,稱(chēng)為P2口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P2口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接收高8位地址和控制信息。在訪(fǎng)問(wèn)外部程序和16位外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址。而在訪(fǎng)問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí)其
20、引腳上的內(nèi)容在此期間不會(huì)改變。 P10-P17為P3.0-P3.7輸入輸出腳,稱(chēng)為P3口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P2口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載,這8個(gè)引腳還用于專(zhuān)門(mén)的第二功能。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。P1P3端口在做輸入使用時(shí),因內(nèi)部有上接電阻,被外部拉低的引腳會(huì)輸出一定的電流。除此之外P3端口還用于一些專(zhuān)門(mén)功能,具體請(qǐng)看下表4-1: P3引腳兼用功能P3.0串行通訊輸入(RXD)P3.1串行通訊輸出(TXD)P3.2外部中斷0( INT0)P3.3外部中斷1(INT1)P3.4定時(shí)器0輸入(T0)P3.5定時(shí)器1輸入(T1)P3.6外部數(shù)據(jù)存儲(chǔ)器
21、寫(xiě)選通WRP3.7外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通RD表4-1 P3口功能表4. 其它的控制或復(fù)用引腳(1) ALE/PROG 30 訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節(jié)。即使不訪(fǎng)問(wèn)外部存儲(chǔ)器,ALE端仍以不變的頻率輸出脈沖信號(hào)(此頻率是振蕩器頻率的1/6)。在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),出現(xiàn)一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程時(shí),這個(gè)引腳用于輸入編程脈沖PROG(2) PSEN 29 該引是外部程序存儲(chǔ)器的選通信號(hào)輸出端。當(dāng)AT89C51由外部程序存儲(chǔ)器取指令或常數(shù)時(shí),每個(gè)機(jī)器周期輸出2個(gè)脈沖即兩次有效。但訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將不會(huì)有脈沖輸出。(3) EA/Vpp 31 外
22、部訪(fǎng)問(wèn)允許端。當(dāng)該引腳訪(fǎng)問(wèn)外部程序存儲(chǔ)器時(shí),應(yīng)輸入低電平。要使AT89S51只訪(fǎng)問(wèn)外部程序存儲(chǔ)器(地址為0000H-FFFFH),這時(shí)該引腳必須保持低電平。對(duì)Flash存儲(chǔ)器編程時(shí),用于施加Vpp編程電壓。4.2.1 矩陣按鍵鍵盤(pán)是單片機(jī)系統(tǒng)中最常用的人機(jī)對(duì)話(huà)輸入設(shè)備,用戶(hù)通過(guò)鍵盤(pán)向單片機(jī)輸入數(shù)據(jù)或指令。鍵盤(pán)控制程序需完成的任務(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口就越可觀,思路:先判斷某一
23、列(行)是否有按鍵按下,再判斷該行(列)是哪一只鍵按下。但是,在程序的寫(xiě)法上,采用了最簡(jiǎn)單的方法,使得程序效率最高。本程序中,如果檢測(cè)到某鍵按下了,就不再檢測(cè)其它的按鍵,這完全能滿(mǎn)足絕大多數(shù)需要,又能節(jié)省大量的CPU時(shí)間。4.2.2 計(jì)算器設(shè)計(jì)總體思想根據(jù)功能和指示要求,本系統(tǒng)選用以MCS-51單片機(jī)為主控機(jī)。通過(guò)擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對(duì)計(jì)算器的設(shè)計(jì)。具體設(shè)計(jì)如下:1、由于要設(shè)計(jì)的是簡(jiǎn)單的計(jì)算器,可以進(jìn)行四則運(yùn)算,為了得到教好的顯示效果,采用LCD顯示數(shù)據(jù)和結(jié)果。2、另外鍵盤(pán)包括數(shù)字鍵(0-9)、符號(hào)鍵(+、-、*、/)、清除鍵和等號(hào)鍵,故只需要16個(gè)按鍵即可,設(shè)計(jì)中采用集成的計(jì)算機(jī)鍵盤(pán)
24、。3、執(zhí)行程序:開(kāi)機(jī)顯示零,等待鍵入數(shù)值,當(dāng)鍵入數(shù)字,通過(guò)LCD顯示出來(lái),當(dāng)鍵入+、-、*、/運(yùn)算符,計(jì)算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲(chǔ),并等待再次鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號(hào)就會(huì)在LCD上輸出運(yùn)算結(jié)果。4、錯(cuò)誤提示:當(dāng)單片機(jī)執(zhí)行程序中有錯(cuò)誤時(shí),會(huì)在LCD上顯示相應(yīng)的提示,如:當(dāng)輸入的數(shù)值或計(jì)算器得到的結(jié)果大于計(jì)算器的顯示范圍時(shí),計(jì)算器會(huì)在LCD上提示溢出;當(dāng)除數(shù)為0時(shí),計(jì)算器會(huì)在LCD上提示錯(cuò)誤4.3 輸入模塊 計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O 口資源,因此在很多情況下都不采用這種方式。為此,我們引入了矩
25、陣鍵盤(pán)的應(yīng)用,采用四條I/O 線(xiàn)作為行線(xiàn),四條I/O 線(xiàn)作為列線(xiàn)組成鍵盤(pán)。在行線(xiàn)和列線(xiàn)的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤(pán)上按鍵的個(gè)數(shù)就為44個(gè)。這種行列式鍵盤(pán)結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O 口的利用率,如圖4-8所示:圖4-3.1 鍵盤(pán)按鍵4.3.1 鍵盤(pán)介紹每個(gè)按鍵都有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線(xiàn)和列線(xiàn)分別通過(guò)兩并行接口和CPU通信。鍵盤(pán)的一端(列線(xiàn))通過(guò)電阻接VCC,而接地是通過(guò)程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤(pán)處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐
26、行動(dòng)態(tài)接地;另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。當(dāng)無(wú)按鍵閉合時(shí),P10P13 與P14P17 之間開(kāi)路;當(dāng)有鍵閉合時(shí),與閉合鍵相連的兩條I/O 口線(xiàn)之間短路。判斷有無(wú)按鍵按下的方法是:第一步,置列線(xiàn)P14P17 為輸入狀態(tài),從行線(xiàn)P10P13 輸出低電平,讀入列線(xiàn)數(shù)據(jù),若某一列線(xiàn)為低電平,則該列線(xiàn)上有鍵閉合。第二步,行線(xiàn)輪流輸出低電平,從列線(xiàn)P14P17 讀入數(shù)據(jù),若有某一列為低電平,則對(duì)應(yīng)行線(xiàn)上有鍵按下。綜合一二兩步的結(jié)果,可確定按鍵編號(hào)。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因此須等到按鍵釋放后,再進(jìn)行鍵功能操作,否則按一次
27、鍵,有可能會(huì)連續(xù)多次進(jìn)行同樣的鍵操作。圖4-3.2 鍵盤(pán)內(nèi)部電路4.4顯示模塊當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時(shí),采用LCD液晶顯示屏進(jìn)行顯示是一種經(jīng)濟(jì)實(shí)用的方法。P0口作為液晶顯示的數(shù)據(jù)端口,P3.5-P3.7口作為其控制端口,控制LCD液晶顯示屏顯示輸出數(shù)據(jù)。最終電路如圖4.4.1所示:圖4.4.1 LED液晶顯示屏顯示五【軟件設(shè)計(jì)】5.1 鍵盤(pán)掃描的程序設(shè)計(jì)鍵盤(pán)掃描子程序,首先讀出P1的低四位,然后讀出P1口的高四位。然后鍵值并顯示緩存。然后將鍵如的值轉(zhuǎn)換為ASCII碼然后就可以軟件來(lái)設(shè)置硬件按鍵各個(gè)鍵代表的內(nèi)容。讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤(pán)矩陣的規(guī)模大小,均進(jìn)行兩次讀鍵。第一次所有行線(xiàn)均
28、輸出低電平,從所有讀入鍵盤(pán)信息(列信息);第二次所有列線(xiàn)均輸出低電平,從所有行線(xiàn)讀入鍵盤(pán)信息(行信息)。數(shù)字鍵按下則將相應(yīng)的數(shù)字送入緩存區(qū),功能鍵按下則執(zhí)行相應(yīng)的程序。 5.2 顯示模塊的程序設(shè)計(jì)顯示模塊程序首先要對(duì)顯示模塊進(jìn)行初始化;然后控制光標(biāo)的位置;定義液晶顯示的控制端口,用SBIT指令完成;然后設(shè)置清屏、關(guān)閉顯示、歸位、開(kāi)顯示、顯示位置的首地址等等。顯示模塊的流程圖如圖5.2所示:延時(shí)程序開(kāi)始檢測(cè)LED是否在忙掃描鍵盤(pán)Y N加減乘除運(yùn)算子程序液晶顯示結(jié)束圖5.2模塊的流程圖5.3 主程序的設(shè)計(jì) 主程序主要是用來(lái)對(duì)LCD液晶顯示屏進(jìn)行初始化的。5. 軟件的可靠性設(shè)計(jì) 提高本儀器其可靠性措
29、施主要有: 1、為防止程序跑飛,軟件中設(shè)置了軟件陷阱。 2、為防止程序死循環(huán),軟件中使用了看門(mén)狗技術(shù)。5.5讀鍵輸入程序流程圖設(shè)計(jì)為了實(shí)現(xiàn)鍵盤(pán)的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有其處理子程序,為此每個(gè)鍵都對(duì)應(yīng)一個(gè)碼鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識(shí)別按鍵。列掃描信號(hào)進(jìn)行讀入行的信號(hào)判斷該列是否有列的輸出是則進(jìn)行按照行列計(jì)算鍵盤(pán)的值,查表取得鍵碼并返回若否則進(jìn)行再次掃描。其程序框圖如下:圖5-5程序框圖5.6 主程序流程圖設(shè)計(jì)運(yùn)算主程序設(shè)計(jì) 首先初始化參數(shù),送LED低位顯示“0”,高位不顯示。然后掃描鍵盤(pán)看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是功能鍵(“+”“-
30、”“*”“/”“=” ),是數(shù)值鍵則送LED顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運(yùn)算鍵,若是“=”則計(jì)算最后結(jié)果并送LED顯示,若是運(yùn)算鍵則保存相對(duì)運(yùn)算程序的首地址。運(yùn)算主程序框圖如3-4所示:圖5-6運(yùn)算主程序框圖六 【仿真及調(diào)試】在程序設(shè)計(jì)方法上,模塊化程序設(shè)計(jì)是單片機(jī)應(yīng)用中最常用的程序設(shè)計(jì)方法。設(shè)計(jì)的中心思想是把一個(gè)復(fù)雜應(yīng)用程序按整體功能劃分成若干相對(duì)獨(dú)立的程序模塊,各模塊可以單獨(dú)設(shè)計(jì)、編程和調(diào)試,然后組合起來(lái)。這種方法便于設(shè)計(jì)和調(diào)試,容易實(shí)現(xiàn)多個(gè)程序共存,但各個(gè)模塊之間的連接有一定的難度。根據(jù)需要我們可以采用自上而下的程序設(shè)計(jì)方法,此方法先從主程序開(kāi)始設(shè)計(jì)
31、,然后再編制各從屬程序和子程序,層層細(xì)化逐步求精,最終完成一個(gè)復(fù)雜程序的設(shè)計(jì)。這種方法比較符合人們的日常思維,缺點(diǎn)是一級(jí)的程序錯(cuò)誤會(huì)對(duì)整個(gè)程序產(chǎn)生影響。功能和操作:加減乘除運(yùn)算和顯示。上電后,屏幕初始化。計(jì)算。按下數(shù)字鍵,屏幕顯示要運(yùn)算的第一個(gè)數(shù)字,再按下符號(hào)鍵,然后再按下數(shù)字鍵,屏幕顯示要運(yùn)算的第二個(gè)數(shù)字,最后按下“”號(hào)鍵,屏幕上顯示出計(jì)算結(jié)果。如果要再次計(jì)算,可以按下“ON/C”鍵清零,或者按下單片機(jī)的復(fù)位鍵,重新初始化。 七【總 結(jié)】經(jīng)過(guò)近兩個(gè)月的努力,終于順利完成了畢業(yè)設(shè)計(jì)。剛開(kāi)始,我們頭緒不是很清楚,不知道從哪里入手,但通過(guò)老師的耐心指導(dǎo)并和同學(xué)認(rèn)真研究設(shè)計(jì)課題,跑圖書(shū)館查資料、確定基本設(shè)計(jì)方案、對(duì)所用芯片功能進(jìn)行查找、調(diào)試、上機(jī)仿真等,經(jīng)歷了一次次的困難,卻積累了很多寶貴的經(jīng)驗(yàn)。在整個(gè)設(shè)計(jì)的過(guò)程中遇到的問(wèn)題主要有以下三點(diǎn),第一:基礎(chǔ)知識(shí)掌握的不牢固,主要表現(xiàn)在一些常用的電路的形式和功能不清楚,對(duì)書(shū)本上的內(nèi)容理解不夠透徹。第二:對(duì)一些常用的應(yīng)用軟件缺少應(yīng)用
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 吸煙亭定制合同范例
- 養(yǎng)生美容采購(gòu)合同范例
- 賣(mài)車(chē)流程合同范例
- 2024-2025學(xué)年重慶市兩江新區(qū)高二上冊(cè)開(kāi)學(xué)考試數(shù)學(xué)學(xué)情檢測(cè)試題合集2套(含解析)
- 以案說(shuō)法合同范本
- 出口合同范例格式
- 關(guān)于框架合同范例
- 合作人合同范例
- 廠(chǎng)房投資公司合同范本
- 公共充電樁合同范例
- 2025年農(nóng)業(yè)發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 對(duì)話(huà)民族英雄戚繼光知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋煙臺(tái)科技學(xué)院
- 2025山東青島市屬事業(yè)單位公開(kāi)招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 臨床護(hù)理死亡病例討論
- 《奢香夫人》歌詞(男女聲歌詞標(biāo)注)
- 2025年廣東韶關(guān)城投集團(tuán)招聘筆試參考題庫(kù)含答案解析
- iso28000-2022供應(yīng)鏈安全管理手冊(cè)程序文件表單一整套
- 養(yǎng)老院敬老院福利醫(yī)養(yǎng)機(jī)構(gòu)消防知識(shí)培訓(xùn)科普講座教學(xué)課件
- 商業(yè)辦公樓網(wǎng)絡(luò)改造施工方案
- 子癇診斷及治療
- 2025屆海南省海口市名校高考英語(yǔ)二模試卷含解析
評(píng)論
0/150
提交評(píng)論