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