




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、摘要 近些年以單片機為核心的技術(shù)發(fā)展很快,現(xiàn)在它被廣泛的應用于與我們生活相 關(guān)的各個領(lǐng)域中,如電子、通信、科技、工業(yè)等,其中電子產(chǎn)品的更新速度更為迅 猛。計算器是日常生活中比較常見的電子產(chǎn)品之一,怎樣才能使計算器技術(shù)更加的 成熟、簡單,充分利用已有的硬件和軟件條件,設計出更簡易的計算器。 本設計是以 AT89C51 單片機為核心的簡易計算器設計,輸入采用 4*4 矩陣鍵盤, 可以進行加、減、乘、除帶符號數(shù)字運算(八位整數(shù)) ,并在液晶顯示屏 LCD1602 上 靜態(tài)顯示操作的過程及結(jié)果。軟件用 C 語言編程、Keil uVision2 和 pretues 仿真。 關(guān)鍵詞:關(guān)鍵詞:單片機;計算器
2、;液晶顯示屏;矩陣鍵盤 Abstract In recent years, the microcontroller as the core technology is developing very fast, now it is widely used in various fields related with our life, such as electronics, communications, science and technology, industry and so on, and the update speed of electronic product is more
3、 rapid. The calculator is the one of common electronic products in our daily life, how to make the computer technology more mature and simple and to make full use of the existing hardware and software conditions to design a simple calculator. The design is based on the AT89C51single-chip microcomput
4、er as the core of a simple calculator design, using 4*4matrix keyboard input, you can add, subtract, multiplication, except the symbol digit operation ( eight integers ), and static display operation process and result in the LCD1602 screen LCD. The Software programming use C language, Keil uVision2
5、 and pretues simulation. KeyKey words:words: single chip microcomputer; calculator; LCD screen; keyboard matrix 目錄 引言.1 第一章 設計原理及要求.2 1.1 設計方案的確定.2 1.2 系統(tǒng)的設計方案.2 1.3 系統(tǒng)的設計要求.2 第二章 硬件模塊設計.4 2.1 單片機 AT89C51 .4 2.1.1 AT89C51 芯片的特點 .5 2.1.2 管腳說明.5 2.1.3 振蕩器特性.7 2.1.4 芯片擦除.7 2.2 鍵盤控制模塊.7 2.2.1 矩陣鍵盤的工作原理.
6、8 2.2.2 鍵盤電路主要器件介紹.8 2.3 LCD 顯示模塊 .10 2.3.1 顯示電路.11 2.3.2 LCD1602 主要技術(shù)參數(shù) .11 2.3.3 引腳功能說明.11 2.4 運算模塊(單片機控制).12 第三章 軟件設計.14 3.1 功能介紹.14 3.2 系統(tǒng)流程圖 .14 3.3 程序.16 第四章 系統(tǒng)調(diào)試.17 4.1 軟件介紹 .17 4.1.1 Keil uVision2 仿真軟件簡介 .17 4.1.2 protues 簡介 .17 4.2 軟件調(diào)試.18 4.2.1 軟件分析及常見故障.19 4.2.2 仿真結(jié)果演示.20 4.3 硬件調(diào)試.21 結(jié)束語.
7、23 參考文獻.24 附錄.25 致謝.36 引言 計算工具最早誕生于中國,中國古代最早采用的一種計算工具叫籌策,也被叫 做算籌。這種算籌多用竹子制成,也有用木頭,獸骨充當材料的,約二百七十枚一 束,放在布袋里可隨身攜帶。另外直到今天仍在使用的珠算盤,是中國古代計算工 具領(lǐng)域中的另一項發(fā)明,明代時的珠算盤已經(jīng)與現(xiàn)代的珠算盤幾乎相同。 17 世紀初,西方國家的計算工具有了較大的發(fā)展,英國數(shù)學家納皮爾發(fā)明的 “納皮爾算籌” ,英國牧師奧卻德發(fā)明了圓柱型對數(shù)計算尺,這種計算尺不僅能做加、 減、乘、除、乘方和開方運算,甚至可以計算三角函數(shù)、指數(shù)函數(shù)和對數(shù)函數(shù)。這 些計算工具不僅帶動了計算器的發(fā)展,也為
8、現(xiàn)代計算器發(fā)展奠定了良好的基礎,成 為現(xiàn)代社會應用廣泛的計算工具。1642 年,年僅 19 歲的法國偉大科學家帕斯卡引 用算盤的原理,發(fā)明了第一部機械式計算器,在他的計算器中有一些互相聯(lián)鎖的齒 輪,一個轉(zhuǎn)過十位的齒輪會使另一個齒輪轉(zhuǎn)過一位,人們可以像撥電話號碼盤那樣, 把數(shù)字撥進去,計算結(jié)果就會出現(xiàn)在另一個窗口中,但是它只能做加減運算。1694 年,萊布尼茲在德國將其改進成可以進行乘除的計算。此后,一直到 20 世紀 50 年 代末才有電子計算器的出現(xiàn)。 第一章 設計原理及要求 1.1 設計方案的確定 本設計是以單片機 AT89C51 為核心的簡易計算器設計,要通過芯片 AT89C51 實 現(xiàn)
9、計算器程序運行來完成加、減、乘和除的簡單計算功能。 本設計運算模塊由 AT89C51 實現(xiàn),數(shù)據(jù)輸入模塊由 4*4 矩陣鍵盤電路實現(xiàn),輸 出數(shù)據(jù)模塊由 LCD 顯示電路實現(xiàn),再外加一個時鐘電路和一個復位電路完成整個簡 易計算器的設計。 1.2 系統(tǒng)的設計方案 本設計由以下幾部分組成:AT89C51 單片機系統(tǒng)(運算模塊) 、鍵盤電路、顯示 電路、時鐘電路和復位電路構(gòu)成,計算器系統(tǒng)框圖如圖 1-1 所示。 圖 1-1 計算器系統(tǒng)框圖 1.3 系統(tǒng)的設計要求 為了更好地實現(xiàn)系統(tǒng)的功能,硬件電路的設計應該遵循以下原則: 1、優(yōu)化硬件電路 采用軟件設計與硬件設計相結(jié)合的方法。盡管采用軟件來實現(xiàn)硬件系統(tǒng)
10、的功能 時,也許響應的時間會比單純使用硬件時長,而且還要占用微處理器(MCU)的時間; 但是,用軟件實現(xiàn)硬件的功能可以簡化硬件結(jié)構(gòu),提高電路的可靠性。所以,在設 計本系統(tǒng)的時候,在滿足可靠性和實時性的前提下,盡可能地通過軟件來實現(xiàn)硬件 功能。 2、可靠性及抗干擾設計 根據(jù)可靠性設計理論,系統(tǒng)所用芯片數(shù)量越少,系統(tǒng)的平均無故障時間越長。 而且,所用芯片數(shù)量越少,地址和數(shù)據(jù)總線在電路板上受干擾的可能性也就越小。 因此,系統(tǒng)的設計思想是在滿足功能的情況下爭取較少數(shù)量的芯片。 3、靈活的功能擴展 功能擴展是否靈活是衡量一個系統(tǒng)優(yōu)劣的重要指標之一。一次設計往往不能完 全考慮到系統(tǒng)的各個方面,系統(tǒng)需要不斷
11、完善以及進行功能升級。進行功能擴展時, 應該在原有設計的基礎上,通過修改軟件程序和少量硬件完成。對于本系統(tǒng)而言, 就是要求在系統(tǒng)硬件不變的情況下,能夠通過修改軟件程序,完成功能的升級和擴 展。 根據(jù)提出的系統(tǒng)設計方案,結(jié)合以上三條原則,確定了系統(tǒng)硬件的設計。計算 器主要由以下一些功能模塊組成:非編碼鍵盤模塊、運算模塊(單片機內(nèi)部)和 LCD 液晶顯示模塊等。 該系統(tǒng)的硬件設計采用了模塊化的設計方法。AT89C51 單片機、LCD 液晶顯示屏 顯示電路和鍵盤電路是整個電路的核心,它們能實現(xiàn)系統(tǒng)的功能要求。 簡易計算器主要包括:鍵盤電路、運算電路和輸出顯示電路。 第二章 硬件模塊設計 在本設計中主
12、要用到的硬件:單片機 AT89C51、液晶顯示屏 LCD1602 、4*4 矩 陣鍵盤。 單片機 AT89C51 的硬件資源分配: (1)P3 口:作為輸入口,與鍵盤連接,實現(xiàn)數(shù)據(jù)的輸入; (2)P0、P2 口:作為輸出口(P2 口為高位,P0 口為低位) ,控制 LCD 液晶顯示 屏顯示數(shù)據(jù)的結(jié)果; (3)P1 口和部分 P3 口:作為液晶顯示屏 LCD1602 顯示輸出。 2.1 單片機 AT89C51 本設計所用單片機采用 AT89C51 單片機,它兼容于 MCS51 系列單片機,而且 具有 1000 次可擦寫的 FLASHMEMORY,方便于系統(tǒng)的開發(fā)以及參數(shù)的修改。盡管它是 8 位機
13、,但它的處理精度完全滿足系統(tǒng)的設計要求。該種單片機的最高頻率可達到 24MHz。在 12MHz 時,其處理速度完全達到設計要求,AT89C51 的實物圖及引腳圖如 圖 2-1 所示。 圖 2-1 單片機 AT89C51 實物圖及引腳圖 2.1.1 AT89C51 芯片的特點 AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能 CMOS8 位微處 理器,俗稱單片機,他的特點如下: 1、與 MCS-51 兼容 2、1000 寫/擦循環(huán) 3、4K 字節(jié)可編程閃爍
14、存儲器 4、數(shù)據(jù)保留時間:10 年 5、全靜態(tài)工作:0Hz-24Hz 6、三級程序存儲器鎖定 7、128*8 位內(nèi)部 RAM 8、32 可編程 I/O 線 9、兩個 16 位定時器/計數(shù)器 10、5 個中斷源 11、可編程串行通道 12、低功耗的閑置和掉電模式 13、片內(nèi)振蕩器和時鐘電路 2.1.2 管腳說明 VCC:供電電壓。 GND:接地。 P0 口:P0 口為一個 8 位漏級開路雙向 I/O 口,每腳可吸收 8TTL 門電流。當 P0 口的管腳第一次寫“1”時,被定義為高阻輸入。P0 口能夠用于外部程序數(shù)據(jù)存儲 器,它可以被定義為數(shù)據(jù)/地址的第八位。在 FLASH 編程時,P0 口作為原
15、碼輸入口, 當 FLASH 進行校驗時,P0 口輸出原碼,此時 P0 口外部必須被拉高。 P1 口:P1 口是一個內(nèi)部提供上拉電阻的 8 位雙向 I/O 口,P1 口緩沖器能接收 輸出 4TTL 門電流。P1 口管腳寫入“1”后,被內(nèi)部上拉為高,可用作輸入,P1 口被 外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在 FLASH 編程和校 驗時,P1 口作為第八位地址接收。 P2 口:P2 口是一個內(nèi)部提供上拉電阻的 8 位雙向 I/O 口,P2 口緩沖器可接收 和輸出 4 個 TTL 門電流,當 P2 口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作 為輸入。當作為輸出時,P2 口的
16、管腳被外部拉低,將輸出電流,這是由于內(nèi)部上拉 的緣故。當 P2 口用于外部程序存儲器或 16 位地址外部數(shù)據(jù)存儲器進行存取時,P2 口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地 址數(shù)據(jù)存儲器進行讀寫時,P2 口輸出其特殊功能寄存器的內(nèi)容。P2 口在 FLASH 編程 和校驗時接收高八位地址信號和控制信號。 P3 口:P3 口管腳是 8 個帶內(nèi)部上拉電阻的雙向 I/O 口,可接收和輸出 4 個 TTL 門電流。當 P3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入, 由于外部下拉為低電平,P3 口將輸出電流(ILL) ,這是由于上拉的緣故。 P3 口
17、也可作為 AT89C51 的一些特殊功能口。 P3 口管腳備選功能如下: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷 0) P3.3 /INT1(外部中斷 1) P3.4 T0(記時器 0 外部輸入) P3.5 T1(記時器 1 外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲器讀選通) P3 口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復位輸入。當振蕩器復位器件時,要保持 RST 腳兩個機器周期的高電平時 間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低 位字節(jié)
18、。在 FLASH 編程期間,此引腳用于輸入編程脈沖。在平時,ALE 端以不變的 頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的 1/6。因此它可用作對外部輸出 的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一 個 ALE 脈沖。如想禁止 ALE 的輸出可在 SFR8EH 地址上置 0。此時,ALE 只有在執(zhí)行 MOVX 時 ALE 才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài) ALE 禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取值期間,每個機器 周期兩次/PSEN 有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN 信號
19、將不出 現(xiàn)。 /EA/VPP:當/EA 保持低電平時,則在此期間只管外部程序存儲器(0000H- FFFFH) ,不管是否有內(nèi)部程序存儲器,注意加密方式 1 時,/EA 將內(nèi)部鎖定為 RESET;當/EA 端保持高電平時,此時只管內(nèi)部程序存儲器。在 FLASH 編程期間,此 引腳也用于施加 12V 編程電源(VPP) 。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 2.1.3 振蕩器特性 XTAL1 和 XTAL2 分別為反向放大器的輸入和輸出。該反向放大器可以配置為片 內(nèi)振蕩器。晶體振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL
20、2 應 不接。輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬 無任何要求,但必須保證脈沖的高低電平要求的寬度。 2.1.4 芯片擦除 整個 PEROM 陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持 ALE 管腳處于低電平 10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任 何非空存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。 此外,AT89C51 設有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下表示靜態(tài)邏輯,支 持兩種軟件可選的掉電模式。在閑置模式下,CPU 停止工作。但 RAM、定時器、計數(shù) 器、串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存 RAM 的內(nèi)容并且凍結(jié)振
21、蕩器, 禁止所用其他芯片功能,直到下一個硬件復位為止。 2.2 鍵盤控制模塊 計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式, 在這種情況下,編程會很簡單,但是會占用大量的 I/O 口資源,因此在很多情況下 都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條 I/O 線作為行線, 四條 I/O 線作為列線組成鍵盤,在行線和列線的每個交叉點上設置一個按鍵。這樣 鍵盤上按鍵的個數(shù)就為 44 個。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機系統(tǒng)中 I/O 口的利用率。 2.2.1 矩陣鍵盤的工作原理 鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20 個以上) 和專用
22、驅(qū)動芯片的組合;當按下某個按鍵時,它能夠處理按鍵抖動、連擊等問題, 直接輸出按鍵的編碼,無需系統(tǒng)軟件干預。 通用計算機使用的鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片 8279 或串行接口 HD7279 均可以組成編碼鍵盤,同時還可以兼顧數(shù)碼管的顯示驅(qū)動,其相 關(guān)的接口電路和接口軟件均可在芯片資料中得到。當系統(tǒng)功能比較復雜,按鍵數(shù)量 很多時,采用編碼鍵盤可以簡化軟件設計。 而非編碼鍵盤成本低廉。從簡易和成本角度出發(fā),本設計選用的是非編碼鍵盤。 如圖 2-2 所示。一般由 16 個鍵組成,在單片機中正好可以用一個 P 口實現(xiàn) 16 個按 鍵功能,這種形式在單片機系統(tǒng)中也最常用。其矩陣圖所對
23、應的仿真圖如圖 2-3 所 示。 圖 2-2 矩陣鍵盤內(nèi)部電路圖 圖 2-3 矩陣鍵盤布局圖 2.2.2 鍵盤電路主要器件介紹 為了進一步節(jié)省單片機 I/O 口資源,我們在設計中使用了 MM74C922 芯片。 MM74C922 是一款 4*4 鍵盤掃描 IC,它可檢測到與之相連的 4*4 鍵盤的按鍵輸入,并 通過數(shù)據(jù)輸出口將按鍵相應的編碼輸出。其引腳圖如圖 2-4 所示。 圖 2-4 MM74C922 芯片引腳圖 MM74C922 引腳說明: (1) Y1-Y4(腳 1-腳 4):4*4 鍵盤第一列至第四列。 (2) X1-X4(腳 11、10、8、7):4*4 鍵盤第一行至第四行。 (3)
24、 DOA- DOD(Dataout A-D,腳 14-17):按鍵之 BCD 碼輸出,其中 DOA 為 LSB,DOD 為 MSB。 (4) VCC(腳 18):電源腳,+3V 至+15V (5) GND(腳 9):接地管腳 (6) OSC(Oscillator,腳 5):鍵盤掃描電路之頻率所需外加電容的引腳。 (7) KBM(Keyboard Mask,腳 6):內(nèi)部消除開關(guān)彈跳電路所外加電容的引腳。 (8) OE(Output Enable,腳 13):芯片使能腳,接低電位可使芯片使能。 (9) DA(Data Available,腳 12):數(shù)據(jù)有效輸出腳。任一按鍵按下時,此腳 位會輸出
25、高電位,按鍵釋放后此腳又會恢復為低電位。 如圖 2-5 所示,在本設計中,計算器輸入鍵盤的 4 條行線、4 條列線分別連接 到 MM74C922 的 X1-X4、Y1-Y4 引腳,MM74C922 的數(shù)據(jù)輸出口與單片機的 P2 口相連, MM74C922 的 DA 引腳經(jīng)過一個非門連接到單片機的/INT0 腳,當 MM74C922 檢測到鍵 盤輸入時,DA 產(chǎn)生高電平,與之相連的/INT0 檢測到低電平,給單片機一個中斷, 單片機從 P2 口的低四位讀入鍵盤上按下的按鍵值。 圖 2-5 鍵盤接口電路圖 2.3 LCD 顯示模塊 本設計采用 LCD 液晶顯示器來顯示輸入輸出數(shù)據(jù)。通過 D0-D7
26、 引腳向 LCD 寫指 令字或?qū)憯?shù)據(jù)以使 LCD 實現(xiàn)不同的功能或顯示相應數(shù)據(jù)。LCD 引腳圖如圖 2-6 所示。 圖 2-6 LCD1602 引腳圖 LCD 分為帶背光和不帶背光兩種,基控制器大部分為 HD44780,帶背光的比不帶 背光的厚,在實際使用中是否帶背光并無多大差別,兩者尺寸差別如圖 2-7 所示。 圖 2-7 LCD 背光和不帶背光的尺寸對比圖 2.3.1 顯示電路 當系統(tǒng)需要顯示少量數(shù)據(jù)時,采用 LCD 液晶顯示屏進行顯示是一種經(jīng)濟實用的 方法。P1 口作為液晶顯示的數(shù)據(jù)端口,P3.4-P3.6 口作為其控制端口,控制 LCD 液 晶顯示屏顯示輸出數(shù)據(jù)。 顯示電路圖如圖 2-
27、8 所示。 圖 2-8 LCD 液晶顯示電路 2.3.2 LCD1602 主要技術(shù)參數(shù) 顯示容量:162 個字符 芯片工作電壓:4.55.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V 字符尺寸:2.954.35(WH)mm 2.3.3 引腳功能說明 LCD 采用標準的 14 腳(無背光)或 16 腳(帶背光)接口,各引腳接口說明如 表 2-1 所示。 表 2-1 引腳接口說明表 編號符號引腳說明編號符號引腳說明 1VSS 電源地 9D2 數(shù)據(jù) 2VDD 電源正極 10D3 數(shù)據(jù) 3VL 液晶顯示偏壓 11D4 數(shù)據(jù) 4RS 數(shù)據(jù)/命令選擇 12D5 數(shù)據(jù) 5R/W 讀/寫
28、選擇 13D6 數(shù)據(jù) 6E 使能信號 14D7 數(shù)據(jù) 7D0 數(shù)據(jù) 15BLA 背光源正極 8D1 數(shù)據(jù) 16BLK 背光源負極 第 1 腳:VSS 為地電源。 第 2 腳:VDD 接 5V 正電源。 第 3 腳:VL 為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比 度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個 10K 的電位器調(diào)整對 比度。 第 4 腳:RS 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存 器。 第 5 腳:R/W 為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當 RS 和 R/W 共同為低電平時可以寫入指令或者顯示地址,當 RS 為
29、低電平 R/W 為高電 平時可以讀忙信號,當 RS 為高電平 R/W 為低電平時可以寫入數(shù)據(jù)。 第 6 腳:E 端為使能端,當 E 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第 714 腳:D0D7 為 8 位雙向數(shù)據(jù)線。 第 15 腳:背光源正極。 第 16 腳:背光源負極。 2.4 運算模塊(單片機控制) AT89C51 單片機是在一塊芯片中集成了 CPU、RAM、ROM、定時器/計數(shù)器和多功 能 I/O 等一臺計算機所需要的基本功能部件。如果按功能劃分,它由如下功能部件 組成,即微處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM/EPROM)、并行 I/O 口、串行口、定時
30、器/計數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機是 靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是一些特殊 的功能,通過使用單片機編寫的程序可以實現(xiàn)高智能、高效率以及高可靠性!因此 我們采用單片機作為計算器的主要功能部件,可以很快地實現(xiàn)運算功能。 另外系統(tǒng)還包括時鐘電路和復位電路。 第三章 軟件設計 3.1 功能介紹 實際運用中人們熟悉的計算器,其功能主要如下: 1、鍵盤輸入; 2、顯示數(shù)值; 3、加、減、乘、除四則運算; 4、對錯誤輸入和輸出的控制及提示。 3.2 系統(tǒng)流程圖 在軟件設計中程序分別要完成鍵盤輸入檢測、LCD 初始化及顯示、算術(shù)運算和 錯誤處理及輸出等功
31、能。對主程序進行初始化,其他的程序選擇模塊式的方式。首 先對每個模塊進行調(diào)試,當模塊調(diào)試成功后,逐一地加入主程序中,最后完成整個 軟件部分的設計。系統(tǒng)流程圖如圖 3-1 所示。 開始 初始化參數(shù) 初始化 LCD 顯示 有鍵輸入? 讀取鍵碼 LCD 顯示 數(shù)字鍵清零鍵功能鍵 狀態(tài)清零 輸入數(shù)值 數(shù)值送顯示緩沖 Y N 根據(jù)上次功能鍵和輸 入的數(shù)據(jù)計算結(jié)果 結(jié)果送顯示緩沖 本次功能鍵 圖 3-1 系統(tǒng)流程圖 3.3 程序 本設計程序采用 C 語言編程,程序分為多個模塊,由主程序、鍵值轉(zhuǎn)換和 LCD 系列程序等模塊組成。具體程序見附錄。 第四章 系統(tǒng)調(diào)試 4.1 軟件介紹 4.1.1 Keil uV
32、ision2 仿真軟件簡介 Keil uVision2 是德國 Keil 公司開發(fā)的基于 Windows 平臺的單片機集成開發(fā)環(huán) 境,它包含一個高效的編譯器、一個項目管理器和一個 MAKE 工具。其中 Keil C51 是一種專門為單片機設計的高效率 C 語言編譯器,符合 ANSI 標準,生成的程序代碼 運行速度極高,所需要的存儲器空間極小,完全可以與匯編語言媲美。Keil uVision2 的界面如圖 4-1 所示,Keil uVision2 允許同時打開、瀏覽多個源文件。 圖 4-1 Keil uVision2 的界面 4.1.2 protues 簡介 protues 軟件是英國 Labc
33、enter electronics 公司出版的 EDA 工具軟件。它不 僅具有其它 EDA 工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好 的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好 者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。Proteus 是世界上著名的 EDA 工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電 路協(xié)同仿真,一鍵切換到 PCB 設計,真正實現(xiàn)了從概念到產(chǎn)品的完整設計。它是目 前世界上唯一將電路仿真軟件、PCB 設計軟件和虛擬模型仿真軟件三合一的設計平 臺,其處理器模型支持 8051、HC11、PIC10
34、/12/16/18/24/30/DsPIC33、AVR、ARM、8086 和 MSP430 等, 2010 年已經(jīng)增加了 Cortex 和 DSP 系列處理器,并持續(xù)增加其他系列處理器模型。 在編譯方面,它也支持 IAR、Keil 和 MPLAB 等多種編譯器,界面圖如圖 4-2 所示。 圖 4-2 protues 界面圖 4.2 軟件調(diào)試 4.2.1 軟件分析及常見故障 在此次設計中使用 Keil uVision2 和 Proteus 軟件仿真,其中使用 Keil uVision2 軟件匯編源程序,使用 Proteus 軟件對硬件電路進行模擬。正確連接電路 圖,使其能按照題目要求及設計初衷正
35、常工作。 從庫里正確拾取元器件,認真合理地連線,做到不缺件,不缺線,選取合適的 元件參考值,使其能正常工作。通過編譯,連接程序。使其生成.hex 文件,并連入 連好的 Proteus 圖中。測試該計算器是否能正常工作。若不能,首先要檢查有沒有 漏掉元器件,元器件是否都連接好。其次,要看元件各引腳是否都連接正確,有無 接反的。最后要看元件的參考值是否選擇合理,電源電壓是否能帶動元器件正常工 作。 常見故障: 1、邏輯錯誤:它是由設計錯誤或加工過程中的工藝性錯誤所造成的。這類錯誤 包括錯線、開路、短路等。 2、元器件失效:有兩方面的原因:一是器件本身已損壞或性能不符合要求;二 是組裝錯誤造成元件失
36、效,如電解電容、集成電路安裝方向錯誤等。 3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會造成 系統(tǒng)時好時壞,經(jīng)不起振動;走線和布局不合理也會引起系統(tǒng)可靠性差。 4、電源故障:若樣機有電源故障,則加電后很容易造成器件損壞。電源故障包 括電壓值不符合設計要求,電源引線和插座不對,功率不足,負載能力差等。 調(diào)試方法:包括多級調(diào)試和聯(lián)機調(diào)試。在調(diào)試過程中要針對可能出現(xiàn)的故障認 真分析,直至檢查出原因并排除。 本次硬件調(diào)試過程中,對所出現(xiàn)的問題進行了認真的分析和改正,最后能夠很 好的達到設計要求的效果。 系統(tǒng)仿真圖如圖 4-3 所示。 圖 4-3 系統(tǒng)仿真圖 4.2.2 仿真結(jié)果演示
37、 下面以加、減、乘和除分別做仿真演示: (1)加法:以 258 和 825 作為加數(shù)和被加數(shù)運算,結(jié)果為 1083。加法仿真結(jié)果圖 如圖 4-4 所示。 圖 4-4 加法仿真結(jié)果圖 (2)減法:以和作為被減數(shù)和減數(shù)運算,結(jié)果為。減法仿真結(jié)果圖如圖 4-5 所示。 圖 4-5 減法仿真結(jié)果圖 (3)乘法:以 694 和 123 作為乘數(shù)和被乘數(shù)運算,結(jié)果為 85362。乘法結(jié)果仿真圖 如圖 4-6 所示。 圖 4-6 乘法結(jié)果仿真圖 (4)除法:以 1250 和 5 作為被除數(shù)和除數(shù)運算,結(jié)果為 250。除法結(jié)果仿真圖如 圖 4-7 所示。 圖 4-7 除法結(jié)果仿真圖 由以上四種運算結(jié)果可知軟件
38、仿真均正確,沒有顯示錯誤。 4.3 硬件調(diào)試 在 protues 里面把硬件圖畫好,把所有元器件的參數(shù)都設置好,程序在 keil 里 面生成.hex 文件,然后在 protues 里單片機芯片中導入此文件,運行一切正常后開 始準備焊接硬件。在焊接硬件過程中首先得準備好所有必備的東西,比如所需元器 件和焊接所用工具等。在焊接前應先在面包板上把硬件插好調(diào)試,接通電源看能否 顯示出結(jié)果,如果元器件都是好的并且結(jié)果可以顯示出,就可以焊接了。如果顯示 不出來再檢查各個器件是否有損壞,并用萬用表挨個檢查,直至一切顯示正常再焊 接。 在焊接時要注意相鄰焊點不能粘在一起,連接線不能太長,并且注意焊點的虛 焊、
39、假焊。在使用電烙鐵時溫度不能太高也不能太低,一般在 350 度左右,溫度太 低容易形成冷焊點,太高則會燒壞電路板。 電路板焊接好以后首先測試一下各個元器件是否正常,焊點有無虛焊、連焊、 假焊等現(xiàn)象,檢查沒有問題以后接通電源查看 LCD 顯示是否正常,如果一切顯示沒 有問題把硬件妥善保管,防止不小心損壞。硬件電路實物圖如圖 4-8 所示。 圖 4-8 硬件電路實物圖 結(jié)束語 通過這次簡易計算器的設計,很大程度的提高了我的理解力和動手能力,也拓 寬了知識面。在圖書館和網(wǎng)上查閱資料使我了解了更多的資料,也方便了我們以后 的使用。在查詢的資料中讓我對單片機有了更深入的了解,能把學到的知識用活, 而不只
40、局限于理論方面。 在硬件制作過程中,當我把硬件都焊好以后接通電源 LCD 怎么都不顯示數(shù)字并 且在很短的時間內(nèi)就會發(fā)熱,我查了焊接點和仿真圖都沒有問題,接著仔細查找了 LCD 顯示器各個管腳,發(fā)現(xiàn)兩個電壓管腳接反了,但在仿真時沒出現(xiàn)問題,而在實 物中出現(xiàn)了問題,是由于仿真元件都是理想化的,各個問題在實物中根據(jù)實際情況 就會出現(xiàn)。 編程時,充分使用了結(jié)構(gòu)化的思想。這樣一來,因為語句較少,程序調(diào)試也比 較方便,功能模塊可以逐一地調(diào)試,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢。當每個模塊都 完成時,將其功能互相整合就完成了整體的設計。經(jīng)歷了從最初的不了解設計內(nèi)容 到最后做出仿真結(jié)果的過程使我從根本上提高了對專業(yè)的
41、認識及興趣,對于我們工 科學生來說,學習了這些對我們以后工作有重大的影響。很感謝學校和老師給我們 提供了這樣的平臺,能使我們的動手能力增強。感謝老師對我們提供的幫助。 參考文獻 1 裴巖、劉利民單片機系統(tǒng)綜合設計與實踐J.內(nèi)蒙古大學出版.2003.1 2 楊國林.C 語言程序設計J.內(nèi)蒙古大學出版社.2001.9 3 郭天祥.新概念 51 單片機 C 語言程序J.電子工業(yè)出版社.2009.1 4 LED 與 LCD 顯示器的區(qū)別. 5基于單片機簡易計算器的設計. 6 基于單片機的簡易計算器設計. 7 計算器模擬系統(tǒng)設計. 8 計算器設計報告. 9 基于單片機的計算器. 10 AT89C51 單
42、片機簡介 11 Keil uVision2 仿真軟件的使用說明 Vision2 集成開發(fā)環(huán)境 12 44 矩陣鍵盤計算器設計 13 Henderson D. Calibration of fast sampling o scilloscopes. Meas SciTechnol.1990.1 14 Barry Ross. Hands-On Guide to Oscilloscopes, McGraw-Hill.1994,6 15 13 V. A. Krukov, R. V. Udovichenko.Debugging DVM ProgramsJ. Programming and Computi
43、ng Software,May.2001 附錄 #include #include #define uchar unsigned char #define uint unsigned int char translate(int keycode); void arithmetic(); void init_LCM(); void write_data(char ddata); void write_com(char command); void check_BF(); void clearLCD(); void display(long a); void dealerror(); void d
44、ataoverflow(); long x=0,y=0,num=0; int operators,input,iny=0; char key; char error5=error; char overflow8=overflow; sbit EN=P34; sbit R_W=P35; sbit RS=P36; main() EA=1; EX0=1; IT0=1; P2=0 xff; display(0); init_LCM(); write_data(0 x30); while(1) /*鍵值轉(zhuǎn)化為鍵盤上按鍵值函數(shù)*/ char translate(int keycode) switch(ke
45、ycode) case 0: return 7; break; case 1: return 4; break; case 2: return 1; break; case 3: return c; break; case 4: return 8; break; case 5: return 5; break; case 6: return 2; break; case 7: return 0; break; case 8: return 9; break; case 9: return 6; break; case 10: return 3; break; case 11: return =
46、; break; case 12: return /; break; case 13: return *; break; case 14: return -; break; case 15: return +; break; /*外部中斷 0 處理函數(shù)*/ void INT_0(void) interrupt 0 using 0 key=translate(P2 if(key=0) /判斷按下的鍵是否為數(shù)值 num=num*10+(key-0); if (operators0) y=num; iny=1; else x=num; if(num-) /當前數(shù)值是否超出限定范圍 display(n
47、um); else dataoverflow(); else switch(key) case c: x=0; y=0; num=0; iny=0; operators=0; display(num); break; case =: arithmetic(); iny=0; operators=0; num=0; break; case +: if (operators) arithmetic(); operators=1; num=0; break; case -: if (operators) arithmetic(); operators=2; num=0; break; case *: if (operators) arithmetic(); operators=3; num=0; break; case /: if (operators) arithmetic(); operators=4; num=0; break; /*算術(shù)運算函數(shù)*/ void arithmetic() if (iny) switch(operators) case 1: x=x+y; n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 游客體驗優(yōu)化實踐分析
- 英語外研版二年級上冊知識點
- 企業(yè)培訓與課件應用
- 安全責任明確廠房租賃協(xié)議書
- 城市改造配套采石場產(chǎn)權(quán)移交合同
- 財務顧問公司財務托管與專業(yè)服務協(xié)議
- 互聯(lián)網(wǎng)教育平臺策劃與開發(fā)合同
- 企業(yè)全面預算管理財務制度合同范本
- 集團廣告投放方案模板
- 餐飲加盟店預付款項及掛賬合作合同范本
- 新安全生產(chǎn)法2025全文
- 河北省2025年中考數(shù)學真題試卷(含答案)
- 福建福州金山中學2024~2025學年高一下冊期末考試數(shù)學試題含解析
- 2025年中國共產(chǎn)黨支部工作條例(試行)暨黨支部建設標準化工作知識競賽考試試題(綜合題庫)(含答案)
- 2025年廣東省高考生物真題(解析版)
- 2024年哈爾濱市道里區(qū)執(zhí)法輔助人員招聘考試真題
- 學堂在線 研究生的壓力應對與健康心理 期末考試答案
- GB∕T 21437.2-2021 道路車輛 電氣電子部件對傳導和耦合引起的電騷擾試驗方法 第2部分:沿電源線的電瞬態(tài)傳導發(fā)射和抗擾性
- (新版)傳染病防治監(jiān)督試題庫(含答案)
- 浙江省中考英語考綱(共6頁)
- 委會、全委會和工作報告標題匯編
評論
0/150
提交評論