本設(shè)計(jì)是以單片機(jī)AT89C51為核心的簡(jiǎn)易計(jì)算器設(shè)計(jì),要通過(guò)芯片AT89C51實(shí)現(xiàn)計(jì)算器程序運(yùn)行來(lái)完成加、減、乘和除的簡(jiǎn)單計(jì)算功能。 本設(shè)計(jì)運(yùn)算模塊由AT89C51實(shí)現(xiàn),數(shù)據(jù)輸入模塊由4*4矩陣鍵盤(pán)電路實(shí)現(xiàn),輸出數(shù)據(jù)模塊由LCD顯示電路實(shí)現(xiàn),再外加一個(gè)復(fù)位電路完成整個(gè)簡(jiǎn)易計(jì)算器的設(shè)計(jì)。
1.2 系統(tǒng)的設(shè)計(jì)方案
本設(shè)計(jì)由以下幾部分組成:AT89C51單片機(jī)系統(tǒng)(運(yùn)算模塊)、鍵盤(pán)電路、顯示電路、時(shí)鐘電路和復(fù)位電路構(gòu)成,計(jì)算器系統(tǒng)框圖如圖1-1所示。
51hei.png (13.46 KB, 下載次數(shù): 37)
下載附件
2023-6-10 00:17 上傳
圖1-1 計(jì)算器系統(tǒng)框圖 1.3 系統(tǒng)的設(shè)計(jì)要求為了更好地實(shí)現(xiàn)系統(tǒng)的功能,硬件電路的設(shè)計(jì)應(yīng)該遵循以下原則: 1.3.1優(yōu)化硬件電路采用軟件設(shè)計(jì)與硬件設(shè)計(jì)相結(jié)合的方法。盡管采用軟件來(lái)實(shí)現(xiàn)硬件系統(tǒng)的功能時(shí),也許響應(yīng)的時(shí)間會(huì)比單純使用硬件時(shí)長(zhǎng),而且還要占用微處理器(MCU)的時(shí)間;但是,用軟件實(shí)現(xiàn)硬件的功能可以簡(jiǎn)化硬件結(jié)構(gòu),提高電路的可靠性。所以,在設(shè)計(jì)本系統(tǒng)的時(shí)候,在滿(mǎn)足可靠性和實(shí)時(shí)性的前提下,盡可能地通過(guò)軟件來(lái)實(shí)現(xiàn)硬件功能。 1.3.2可靠性及抗干擾設(shè)計(jì)根據(jù)可靠性設(shè)計(jì)理論,系統(tǒng)所用芯片數(shù)量越少,系統(tǒng)的平均無(wú)故障時(shí)間越長(zhǎng)。而且,所用芯片數(shù)量越少,地址和數(shù)據(jù)總線在電路板上受干擾的可能性也就越小。因此,系統(tǒng)的設(shè)計(jì)思想是在滿(mǎn)足功能的情況下?tīng)?zhēng)取較少數(shù)量的芯片。 1.3.3靈活的功能擴(kuò)展功能擴(kuò)展是否靈活是衡量一個(gè)系統(tǒng)優(yōu)劣的重要指標(biāo)之一。一次設(shè)計(jì)往往不能完全考慮到系統(tǒng)的各個(gè)方面,系統(tǒng)需要不斷完善以及進(jìn)行功能升級(jí)。進(jìn)行功能擴(kuò)展時(shí),應(yīng)該在原有設(shè)計(jì)的基礎(chǔ)上,通過(guò)修改軟件程序和少量硬件完成。對(duì)于本系統(tǒng)而言,就是要求在系統(tǒng)硬件不變的情況下,能夠通過(guò)修改軟件程序,完成功能的升級(jí)和擴(kuò)展。 根據(jù)提出的系統(tǒng)設(shè)計(jì)方案,結(jié)合以上三條原則,確定了系統(tǒng)硬件的設(shè)計(jì)。計(jì)算器主要由以下一些功能模塊組成:非編碼鍵盤(pán)模塊、運(yùn)算模塊(單片機(jī)內(nèi)部)和LCD液晶顯示模塊等。 該系統(tǒng)的硬件設(shè)計(jì)采用了模塊化的設(shè)計(jì)方法。AT89C51單片機(jī)、LCD液晶顯示屏顯示電路和鍵盤(pán)電路是整個(gè)電路的核心,它們能實(shí)現(xiàn)系統(tǒng)的功能要求。 簡(jiǎn)易計(jì)算器主要包括:鍵盤(pán)電路、運(yùn)算電路和輸出顯示電路。
第二章 硬件模塊設(shè)計(jì)在本設(shè)計(jì)中主要用到的硬件:?jiǎn)纹瑱C(jī)AT89C51、液晶顯示屏LCD1602 、4*4矩陣鍵盤(pán)。 單片機(jī)AT89C51的硬件資源分配: (1)P3口:作為輸入口,與鍵盤(pán)連接,實(shí)現(xiàn)數(shù)據(jù)的輸入; (2)P0、P2口:作為輸出口(P2口為高位,P0口為低位),控制LCD液晶顯示屏顯示數(shù)據(jù)的結(jié)果; (3)P1口和部分P3口:作為液晶顯示屏LCD1602顯示輸出。
鍵盤(pán)控制模塊 計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤(pán)的方案。矩陣鍵盤(pán)采用四條I/O 線作為行線,四條I/O 線作為列線組成鍵盤(pán),在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤(pán)上按鍵的個(gè)數(shù)就為4×4個(gè)。這種行列式鍵盤(pán)結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O 口的利用率。 2.2.1 矩陣鍵盤(pán)的工作原理鍵盤(pán)可分為兩類(lèi):編碼鍵盤(pán)和非編碼鍵盤(pán)。編碼鍵盤(pán)是較多按鍵(20個(gè)以上)和專(zhuān)用驅(qū)動(dòng)芯片的組合;當(dāng)按下某個(gè)按鍵時(shí),它能夠處理按鍵抖動(dòng)、連擊等問(wèn)題,直接輸出按鍵的編碼,無(wú)需系統(tǒng)軟件干預(yù)。 通用計(jì)算機(jī)使用的鍵盤(pán)就是編碼鍵盤(pán)。在智能儀器中,使用并行接口芯片8279或串行接口HD7279均可以組成編碼鍵盤(pán),同時(shí)還可以兼顧數(shù)碼管的顯示驅(qū)動(dòng),其相關(guān)的接口電路和接口軟件均可在芯片資料中得到。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量很多時(shí),采用編碼鍵盤(pán)可以簡(jiǎn)化軟件設(shè)計(jì)。  而非編碼鍵盤(pán)成本低廉。從簡(jiǎn)易和成本角度出發(fā),本設(shè)計(jì)選用的是非編碼鍵盤(pán)。如圖2-1所示。一般由16個(gè)鍵組成,在單片機(jī)中正好可以用一個(gè)P口實(shí)現(xiàn)16個(gè)按鍵功能,這種形式在單片機(jī)系統(tǒng)中也最常用。其矩陣圖所對(duì)應(yīng)的仿真圖如圖2-2所示。圖2-1 矩陣鍵盤(pán)內(nèi)部電路圖 圖2-2矩陣鍵盤(pán)布局圖
在本設(shè)計(jì)中,計(jì)算器輸入鍵盤(pán)的4條行線、4條列線分別連接到MM74C922的X1-X4、Y1-Y4引腳,MM74C922的數(shù)據(jù)輸出口與單片機(jī)的P2口相連,MM74C922的DA引腳經(jīng)過(guò)一個(gè)非門(mén)連接到單片機(jī)的/INT0腳,當(dāng)MM74C922檢測(cè)到鍵盤(pán)輸入時(shí),DA產(chǎn)生高電平,與之相連的/INT0檢測(cè)到低電平,給單片機(jī)一個(gè)中斷,單片機(jī)從P2口的低四位讀入鍵盤(pán)上按下的按鍵值。2.3 LCD顯示模塊 本設(shè)計(jì)采用LCD液晶顯示器來(lái)顯示輸入輸出數(shù)據(jù)。通過(guò)D0-D7引腳向LCD寫(xiě)指令字或?qū)憯?shù)據(jù)以使LCD實(shí)現(xiàn)不同的功能或顯示相應(yīng)數(shù)據(jù)。LCD引腳圖如圖2-3所示。 圖2-3 LCD1602 引腳圖 LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,在實(shí)際使用中是否帶背光并無(wú)多大差別. 2.3.1 顯示電路當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時(shí),采用LCD液晶顯示屏進(jìn)行顯示是一種經(jīng)濟(jì)實(shí)用的方法。P1口作為液晶顯示的數(shù)據(jù)端口,P3.4-P3.6口作為其控制端口,控制LCD液晶顯示屏顯示輸出數(shù)據(jù)。
第三章 軟件設(shè)計(jì)
3.1 功能介紹
實(shí)際運(yùn)用中人們熟悉的計(jì)算器,其功能主要如下: 1、鍵盤(pán)輸入; 2、顯示數(shù)值; 3、加、減、乘、除四則運(yùn)算; 3.2系統(tǒng)流程圖
在軟件設(shè)計(jì)中程序分別要完成鍵盤(pán)輸入檢測(cè)、LCD初始化及顯示、算術(shù)運(yùn)算和錯(cuò)誤處理及輸出等功能。對(duì)主程序進(jìn)行初始化,其他的程序選擇模塊式的方式。首先對(duì)每個(gè)模塊進(jìn)行調(diào)試,當(dāng)模塊調(diào)試成功后,逐一地加入主程序中,最后完成整個(gè)軟件部分的設(shè)計(jì)。系統(tǒng)流程圖如圖3-1所示。
3.3 程序 本設(shè)計(jì)程序采用C語(yǔ)言編程,程序分為多個(gè)模塊,由主程序、鍵值轉(zhuǎn)換和LCD系列程序等模塊組成。具體可見(jiàn)附錄 第四章 系統(tǒng)調(diào)試4.1軟件介紹 4.1.1 Keil uVision2仿真軟件簡(jiǎn)介Keil uVision2是德國(guó)Keil公司開(kāi)發(fā)的基于Windows平臺(tái)的單片機(jī)集成開(kāi)發(fā)環(huán)境,它包含一個(gè)高效的編譯器、一個(gè)項(xiàng)目管理器和一個(gè)MAKE工具。生成的程序代碼運(yùn)行速度極高,所需要的存儲(chǔ)器空間極小,完全可以與匯編語(yǔ)言媲美。Keil uVision2的界面如圖4-1所示,Keil uVision2允許同時(shí)打開(kāi)、瀏覽多個(gè)源文件。 4.2 軟件調(diào)試 圖4-1 Keil uVision2的界面 4.2.1 軟件分析及常見(jiàn)故障在此次設(shè)計(jì)中使用Keil uVision2,其中使用Keil uVision2軟件匯編源程序,使用Proteus軟件對(duì)硬件電路進(jìn)行模擬。正確連接電路圖,使其能按照項(xiàng)目要求及設(shè)計(jì)初衷正常工作。 從庫(kù)里正確拾取元器件,認(rèn)真合理地連線,做到不缺件,不缺線,選取合適的元件參考值,使其能正常工作。通過(guò)編譯,連接程序。使其生成.hex文件。測(cè)試該計(jì)算器是否能正常工作。若不能,首先要檢查有沒(méi)有漏掉元器件,元器件是否都連接好。其次,要看元件各引腳是否都連接正確,有無(wú)接反的。最后要看元件的參考值是否選擇合理,電源電壓是否能帶動(dòng)元器件正常工作。 常見(jiàn)故障: 1、邏輯錯(cuò)誤:它是由設(shè)計(jì)錯(cuò)誤或加工過(guò)程中的工藝性錯(cuò)誤所造成的。這類(lèi)錯(cuò)誤包括錯(cuò)線、開(kāi)路、短路等。 2、元器件失效:有兩方面的原因:一是器件本身已損壞或性能不符合要求;二是組裝錯(cuò)誤造成元件失效,如電解電容、集成電路安裝方向錯(cuò)誤等。 3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會(huì)造成系統(tǒng)時(shí)好時(shí)壞,經(jīng)不起振動(dòng);走線和布局不合理也會(huì)引起系統(tǒng)可靠性差。 4、電源故障:若樣機(jī)有電源故障,則加電后很容易造成器件損壞。電源故障包括電壓值不符合設(shè)計(jì)要求,電源引線和插座不對(duì),功率不足,負(fù)載能力差等。 調(diào)試方法:包括多級(jí)調(diào)試和聯(lián)機(jī)調(diào)試。在調(diào)試過(guò)程中要針對(duì)可能出現(xiàn)的故障認(rèn)真分析,直至檢查出原因并排除。 本次硬件調(diào)試過(guò)程中,對(duì)所出現(xiàn)的問(wèn)題進(jìn)行了認(rèn)真的分析和改正,最后能夠很好的達(dá)到設(shè)計(jì)要求的效果。 系統(tǒng)仿真圖如圖4-2所示。 圖4-2 系統(tǒng)仿真圖 4.2.2 結(jié)果演示下面以加、減、分別做演示為例: (1)加法:以243和536作為加數(shù)和被加數(shù)運(yùn)算,結(jié)果為779。加法仿真結(jié)果圖如圖4-3所示。 圖4-3 加法仿真結(jié)果圖 (2)減法:以956和356作為被減數(shù)和減數(shù)運(yùn)算,結(jié)果為600。減法仿真結(jié)果圖如圖4-4所示。 圖4-4 減法仿真結(jié)果圖 4.3 硬件調(diào)試 把所有元器件的參數(shù)都設(shè)置好,程序在keil里面生成.hex文件,運(yùn)行一切正常后開(kāi)始準(zhǔn)備焊接硬件。在焊接硬件過(guò)程中首先得準(zhǔn)備好所有必備的東西,比如所需元器件和焊接所用工具等。在焊接前應(yīng)先在面包板上把硬件插好調(diào)試,接通電源看能否顯示出結(jié)果,如果元器件都是好的并且結(jié)果可以顯示出,就可以焊接了。如果顯示不出來(lái)再檢查各個(gè)器件是否有損壞,并用萬(wàn)用表挨個(gè)檢查,直至一切顯示正常再焊接。 在焊接時(shí)要注意相鄰焊點(diǎn)不能粘在一起,連接線不能太長(zhǎng),并且注意焊點(diǎn)的虛焊、假焊。在使用電烙鐵時(shí)溫度不能太高也不能太低,一般在350度左右,溫度太低容易形成冷焊點(diǎn),太高則會(huì)燒壞電路板。 電路板焊接好以后首先測(cè)試一下各個(gè)元器件是否正常,焊點(diǎn)有無(wú)虛焊、連焊、假焊等現(xiàn)象,檢查沒(méi)有問(wèn)題以后接通電源查看LCD顯示是否正常,如果一切顯示沒(méi)有問(wèn)題把硬件妥善保管,防止不小心損壞。硬件電路實(shí)物圖如圖4-6所示。 圖4-6 硬件電路實(shí)物圖
結(jié)束語(yǔ)
通過(guò)這次簡(jiǎn)易計(jì)算器的設(shè)計(jì),很大程度的提高了我的理解力和動(dòng)手能力,也拓寬了知識(shí)面。在圖書(shū)館和網(wǎng)上查閱資料使我了解了更多的資料,也方便了我們以后的使用。在查詢(xún)的資料中讓我對(duì)單片機(jī)有了更深入的了解,能把學(xué)到的知識(shí)用活,而不只局限于理論方面。
在硬件制作過(guò)程中,當(dāng)我把硬件都焊好以后接通電源LCD怎么都不顯示數(shù)字并且在很短的時(shí)間內(nèi)就會(huì)發(fā)熱,我查了焊接點(diǎn)和仿真圖都沒(méi)有問(wèn)題,接著仔細(xì)查找了LCD顯示器各個(gè)管腳,發(fā)現(xiàn)兩個(gè)電壓管腳接反了,但在仿真時(shí)沒(méi)出現(xiàn)問(wèn)題,而在實(shí)物中出現(xiàn)了問(wèn)題,是由于仿真元件都是理想化的,各個(gè)問(wèn)題在實(shí)物中根據(jù)實(shí)際情況就會(huì)出現(xiàn)。
編程時(shí),充分使用了結(jié)構(gòu)化的思想。這樣一來(lái),因?yàn)檎Z(yǔ)句較少,程序調(diào)試也比較方便,功能模塊可以逐一地調(diào)試,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢(shì)。當(dāng)每個(gè)模塊都完成時(shí),將其功能互相整合就完成了整體的設(shè)計(jì)。經(jīng)歷了從最初的不了解設(shè)計(jì)內(nèi)容到最后做出仿真結(jié)果的過(guò)程使我從根本上提高了對(duì)專(zhuān)業(yè)的認(rèn)識(shí)及興趣,對(duì)于我們工科學(xué)生來(lái)說(shuō),學(xué)習(xí)了這些對(duì)我們以后工作有重大的影響。很感謝師傅給我們提供了這樣的平臺(tái),能使我們的動(dòng)手能力增強(qiáng)。感謝老師對(duì)我們提供的幫助。
本人初學(xué),僅供參考,存在錯(cuò)誤和不足之處,請(qǐng)大家回帖多多指教,不勝感激.切勿照搬,文件下載:
Keil代碼與Proteus仿真下載:http://www.zg4o1577.cn/bbs/dpj-229515-1.html
|