版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目錄 引言.1 第一章 設(shè)計(jì)原理及要求.2 1.1 設(shè)計(jì)方案的確定.2 1.2 系統(tǒng)的設(shè)計(jì)方案.2 1.3 系統(tǒng)的設(shè)計(jì)要求.2 第二章 硬件模塊設(shè)計(jì).4 2.1 單片機(jī) AT89C51 .4 2.1.1 AT89C51 芯片的特點(diǎn) .5 2.1.2 管腳說明.5 2.1.3 振蕩器特性.7 2.1.4 芯片擦除.7 2.2 鍵盤控制模塊.7 2.2.1 矩陣鍵盤的工作原理.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 運(yùn)算模塊(單片機(jī)控制).12
2、第三章 軟件設(shè)計(jì).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é)束語.23 參考文獻(xiàn).24 附錄.25 致謝.36 引言 計(jì)算工具最早誕生于中國,中國古代最早采用的一種計(jì)算工具叫籌策,也被叫 做算籌。這種算籌多用竹子制成,也有用木頭,獸骨充當(dāng)材料的,約二百七十枚一 束,放在布袋里可隨身攜帶。另
3、外直到今天仍在使用的珠算盤,是中國古代計(jì)算工 具領(lǐng)域中的另一項(xiàng)發(fā)明,明代時(shí)的珠算盤已經(jīng)與現(xiàn)代的珠算盤幾乎相同。 17 世紀(jì)初,西方國家的計(jì)算工具有了較大的發(fā)展,英國數(shù)學(xué)家納皮爾發(fā)明的 “納皮爾算籌” ,英國牧師奧卻德發(fā)明了圓柱型對(duì)數(shù)計(jì)算尺,這種計(jì)算尺不僅能做加、 減、乘、除、乘方和開方運(yùn)算,甚至可以計(jì)算三角函數(shù)、指數(shù)函數(shù)和對(duì)數(shù)函數(shù)。這 些計(jì)算工具不僅帶動(dòng)了計(jì)算器的發(fā)展,也為現(xiàn)代計(jì)算器發(fā)展奠定了良好的基礎(chǔ),成 為現(xiàn)代社會(huì)應(yīng)用廣泛的計(jì)算工具。1642 年,年僅 19 歲的法國偉大科學(xué)家帕斯卡引 用算盤的原理,發(fā)明了第一部機(jī)械式計(jì)算器,在他的計(jì)算器中有一些互相聯(lián)鎖的齒 輪,一個(gè)轉(zhuǎn)過十位的齒輪會(huì)使另一
4、個(gè)齒輪轉(zhuǎn)過一位,人們可以像撥電話號(hào)碼盤那樣, 把數(shù)字撥進(jìn)去,計(jì)算結(jié)果就會(huì)出現(xiàn)在另一個(gè)窗口中,但是它只能做加減運(yùn)算。1694 年,萊布尼茲在德國將其改進(jìn)成可以進(jìn)行乘除的計(jì)算。此后,一直到 20 世紀(jì) 50 年 代末才有電子計(jì)算器的出現(xiàn)。 第一章 設(shè)計(jì)原理及要求 1.1 設(shè)計(jì)方案的確定 本設(shè)計(jì)是以單片機(jī) AT89C51 為核心的簡易計(jì)算器設(shè)計(jì),要通過芯片 AT89C51 實(shí) 現(xiàn)計(jì)算器程序運(yùn)行來完成加、減、乘和除的簡單計(jì)算功能。 本設(shè)計(jì)運(yùn)算模塊由 AT89C51 實(shí)現(xiàn),數(shù)據(jù)輸入模塊由 4*4 矩陣鍵盤電路實(shí)現(xiàn),輸 出數(shù)據(jù)模塊由 LCD 顯示電路實(shí)現(xiàn),再外加一個(gè)時(shí)鐘電路和一個(gè)復(fù)位電路完成整個(gè)簡 易計(jì)算
5、器的設(shè)計(jì)。 1.2 系統(tǒng)的設(shè)計(jì)方案 本設(shè)計(jì)由以下幾部分組成:AT89C51 單片機(jī)系統(tǒng)(運(yùn)算模塊) 、鍵盤電路、顯示 電路、時(shí)鐘電路和復(fù)位電路構(gòu)成,計(jì)算器系統(tǒng)框圖如圖 1-1 所示。 圖 1-1 計(jì)算器系統(tǒng)框圖 1.3 系統(tǒng)的設(shè)計(jì)要求 為了更好地實(shí)現(xiàn)系統(tǒng)的功能,硬件電路的設(shè)計(jì)應(yīng)該遵循以下原則: 1、優(yōu)化硬件電路 采用軟件設(shè)計(jì)與硬件設(shè)計(jì)相結(jié)合的方法。盡管采用軟件來實(shí)現(xiàn)硬件系統(tǒng)的功能 時(shí),也許響應(yīng)的時(shí)間會(huì)比單純使用硬件時(shí)長,而且還要占用微處理器(MCU)的時(shí)間; 但是,用軟件實(shí)現(xiàn)硬件的功能可以簡化硬件結(jié)構(gòu),提高電路的可靠性。所以,在設(shè) 計(jì)本系統(tǒng)的時(shí)候,在滿足可靠性和實(shí)時(shí)性的前提下,盡可能地通過軟件
6、來實(shí)現(xiàn)硬件 功能。 2、可靠性及抗干擾設(shè)計(jì) 根據(jù)可靠性設(shè)計(jì)理論,系統(tǒng)所用芯片數(shù)量越少,系統(tǒng)的平均無故障時(shí)間越長。 而且,所用芯片數(shù)量越少,地址和數(shù)據(jù)總線在電路板上受干擾的可能性也就越小。 因此,系統(tǒng)的設(shè)計(jì)思想是在滿足功能的情況下爭取較少數(shù)量的芯片。 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ǔ)上,通過修改軟件程序和少量硬件完成。對(duì)于本系統(tǒng)而言, 就是要求在系統(tǒng)硬件不變的情況下,能夠通過修改軟件程序,完成功能的升級(jí)和擴(kuò) 展。 根據(jù)提出的系統(tǒng)設(shè)計(jì)方案,結(jié)合以
7、上三條原則,確定了系統(tǒng)硬件的設(shè)計(jì)。計(jì)算 器主要由以下一些功能模塊組成:非編碼鍵盤模塊、運(yùn)算模塊(單片機(jī)內(nèi)部)和 LCD 液晶顯示模塊等。 該系統(tǒng)的硬件設(shè)計(jì)采用了模塊化的設(shè)計(jì)方法。AT89C51 單片機(jī)、LCD 液晶顯示屏 顯示電路和鍵盤電路是整個(gè)電路的核心,它們能實(shí)現(xiàn)系統(tǒng)的功能要求。 簡易計(jì)算器主要包括:鍵盤電路、運(yùn)算電路和輸出顯示電路。 第二章 硬件模塊設(shè)計(jì) 在本設(shè)計(jì)中主要用到的硬件:單片機(jī) AT89C51、液晶顯示屏 LCD1602 、4*4 矩 陣鍵盤。 單片機(jī) AT89C51 的硬件資源分配: (1)P3 口:作為輸入口,與鍵盤連接,實(shí)現(xiàn)數(shù)據(jù)的輸入; (2)P0、P2 口:作為輸出口(
8、P2 口為高位,P0 口為低位) ,控制 LCD 液晶顯示 屏顯示數(shù)據(jù)的結(jié)果; (3)P1 口和部分 P3 口:作為液晶顯示屏 LCD1602 顯示輸出。 2.1 單片機(jī) AT89C51 本設(shè)計(jì)所用單片機(jī)采用 AT89C51 單片機(jī),它兼容于 MCS51 系列單片機(jī),而且 具有 1000 次可擦寫的 FLASHMEMORY,方便于系統(tǒng)的開發(fā)以及參數(shù)的修改。盡管它是 8 位機(jī),但它的處理精度完全滿足系統(tǒng)的設(shè)計(jì)要求。該種單片機(jī)的最高頻率可達(dá)到 24MHz。在 12MHz 時(shí),其處理速度完全達(dá)到設(shè)計(jì)要求,AT89C51 的實(shí)物圖及引腳圖如 圖 2-1 所示。 圖 2-1 單片機(jī) AT89C51 實(shí)物
9、圖及引腳圖 2.1.1 AT89C51 芯片的特點(diǎn) AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能 CMOS8 位微處 理器,俗稱單片機(jī),他的特點(diǎn)如下: 1、與 MCS-51 兼容 2、1000 寫/擦循環(huán) 3、4K 字節(jié)可編程閃爍存儲(chǔ)器 4、數(shù)據(jù)保留時(shí)間:10 年 5、全靜態(tài)工作:0Hz-24Hz 6、三級(jí)程序存儲(chǔ)器鎖定 7、128*8 位內(nèi)部 RAM 8、32 可編程 I/O 線 9、兩個(gè) 16 位定時(shí)器/計(jì)數(shù)器 10、5 個(gè)中斷源 11、可編程串
10、行通道 12、低功耗的閑置和掉電模式 13、片內(nèi)振蕩器和時(shí)鐘電路 2.1.2 管腳說明 VCC:供電電壓。 GND:接地。 P0 口:P0 口為一個(gè) 8 位漏級(jí)開路雙向 I/O 口,每腳可吸收 8TTL 門電流。當(dāng) P0 口的管腳第一次寫“1”時(shí),被定義為高阻輸入。P0 口能夠用于外部程序數(shù)據(jù)存儲(chǔ) 器,它可以被定義為數(shù)據(jù)/地址的第八位。在 FLASH 編程時(shí),P0 口作為原碼輸入口, 當(dāng) FLASH 進(jìn)行校驗(yàn)時(shí),P0 口輸出原碼,此時(shí) P0 口外部必須被拉高。 P1 口:P1 口是一個(gè)內(nèi)部提供上拉電阻的 8 位雙向 I/O 口,P1 口緩沖器能接收 輸出 4TTL 門電流。P1 口管腳寫入“1
11、”后,被內(nèi)部上拉為高,可用作輸入,P1 口被 外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在 FLASH 編程和校 驗(yàn)時(shí),P1 口作為第八位地址接收。 P2 口:P2 口是一個(gè)內(nèi)部提供上拉電阻的 8 位雙向 I/O 口,P2 口緩沖器可接收 和輸出 4 個(gè) TTL 門電流,當(dāng) P2 口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作 為輸入。當(dāng)作為輸出時(shí),P2 口的管腳被外部拉低,將輸出電流,這是由于內(nèi)部上拉 的緣故。當(dāng) P2 口用于外部程序存儲(chǔ)器或 16 位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對(duì)外部八位地 址數(shù)據(jù)存儲(chǔ)器進(jìn)行
12、讀寫時(shí),P2 口輸出其特殊功能寄存器的內(nèi)容。P2 口在 FLASH 編程 和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3 口:P3 口管腳是 8 個(gè)帶內(nèi)部上拉電阻的雙向 I/O 口,可接收和輸出 4 個(gè) TTL 門電流。當(dāng) P3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入, 由于外部下拉為低電平,P3 口將輸出電流(ILL) ,這是由于上拉的緣故。 P3 口也可作為 AT89C51 的一些特殊功能口。 P3 口管腳備選功能如下: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷 0) P3.3 /INT1(外部中斷 1) P3.4
13、T0(記時(shí)器 0 外部輸入) P3.5 T1(記時(shí)器 1 外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) P3 口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持 RST 腳兩個(gè)機(jī)器周期的高電平時(shí) 間。 ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低 位字節(jié)。在 FLASH 編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的 頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的 1/6。因此它可用作對(duì)外部輸出 的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將
14、跳過一 個(gè) ALE 脈沖。如想禁止 ALE 的輸出可在 SFR8EH 地址上置 0。此時(shí),ALE 只有在執(zhí)行 MOVX 時(shí) ALE 才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài) ALE 禁止,置位無效。 /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取值期間,每個(gè)機(jī)器 周期兩次/PSEN 有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN 信號(hào)將不出 現(xiàn)。 /EA/VPP:當(dāng)/EA 保持低電平時(shí),則在此期間只管外部程序存儲(chǔ)器(0000H- FFFFH) ,不管是否有內(nèi)部程序存儲(chǔ)器,注意加密方式 1 時(shí),/EA 將內(nèi)部鎖定為 RESET;當(dāng)/EA 端保持高電平時(shí),此
15、時(shí)只管內(nèi)部程序存儲(chǔ)器。在 FLASH 編程期間,此 引腳也用于施加 12V 編程電源(VPP) 。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 2.1.3 振蕩器特性 XTAL1 和 XTAL2 分別為反向放大器的輸入和輸出。該反向放大器可以配置為片 內(nèi)振蕩器。晶體振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2 應(yīng) 不接。輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬 無任何要求,但必須保證脈沖的高低電平要求的寬度。 2.1.4 芯片擦除 整個(gè) PEROM 陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并
16、保持 ALE 管腳處于低電平 10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任 何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。 此外,AT89C51 設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下表示靜態(tài)邏輯,支 持兩種軟件可選的掉電模式。在閑置模式下,CPU 停止工作。但 RAM、定時(shí)器、計(jì)數(shù) 器、串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存 RAM 的內(nèi)容并且凍結(jié)振蕩器, 禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。 2.2 鍵盤控制模塊 計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式, 在這種情況下,編程會(huì)很簡單,但是會(huì)占用大量的 I/O 口資源,因此在很多情況
17、下 都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條 I/O 線作為行線, 四條 I/O 線作為列線組成鍵盤,在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣 鍵盤上按鍵的個(gè)數(shù)就為 44 個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中 I/O 口的利用率。 2.2.1 矩陣鍵盤的工作原理 鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20 個(gè)以上) 和專用驅(qū)動(dòng)芯片的組合;當(dāng)按下某個(gè)按鍵時(shí),它能夠處理按鍵抖動(dòng)、連擊等問題, 直接輸出按鍵的編碼,無需系統(tǒng)軟件干預(yù)。 通用計(jì)算機(jī)使用的鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片 8279 或串行接口 HD7279 均可以組成編碼
18、鍵盤,同時(shí)還可以兼顧數(shù)碼管的顯示驅(qū)動(dòng),其相 關(guān)的接口電路和接口軟件均可在芯片資料中得到。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量 很多時(shí),采用編碼鍵盤可以簡化軟件設(shè)計(jì)。 而非編碼鍵盤成本低廉。從簡易和成本角度出發(fā),本設(shè)計(jì)選用的是非編碼鍵盤。 如圖 2-2 所示。一般由 16 個(gè)鍵組成,在單片機(jī)中正好可以用一個(gè) P 口實(shí)現(xiàn) 16 個(gè)按 鍵功能,這種形式在單片機(jī)系統(tǒng)中也最常用。其矩陣圖所對(duì)應(yīng)的仿真圖如圖 2-3 所 示。 圖 2-2 矩陣鍵盤內(nèi)部電路圖 圖 2-3 矩陣鍵盤布局圖 2.2.2 鍵盤電路主要器件介紹 為了進(jìn)一步節(jié)省單片機(jī) I/O 口資源,我們?cè)谠O(shè)計(jì)中使用了 MM74C922 芯片。 MM74C9
19、22 是一款 4*4 鍵盤掃描 IC,它可檢測到與之相連的 4*4 鍵盤的按鍵輸入,并 通過數(shù)據(jù)輸出口將按鍵相應(yīng)的編碼輸出。其引腳圖如圖 2-4 所示。 圖 2-4 MM74C922 芯片引腳圖 MM74C922 引腳說明: (1) Y1-Y4(腳 1-腳 4):4*4 鍵盤第一列至第四列。 (2) X1-X4(腳 11、10、8、7):4*4 鍵盤第一行至第四行。 (3) DOA- DOD(Dataout A-D,腳 14-17):按鍵之 BCD 碼輸出,其中 DOA 為 LSB,DOD 為 MSB。 (4) VCC(腳 18):電源腳,+3V 至+15V (5) GND(腳 9):接地管腳
20、 (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ù)有效輸出腳。任一按鍵按下時(shí),此腳 位會(huì)輸出高電位,按鍵釋放后此腳又會(huì)恢復(fù)為低電位。 如圖 2-5 所示,在本設(shè)計(jì)中,計(jì)算器輸入鍵盤的 4 條行線、4 條列線分別連接 到 MM74C922 的 X1-X4、Y1-Y4 引腳,MM74C922 的數(shù)據(jù)輸出口與單片機(jī)的 P
21、2 口相連, MM74C922 的 DA 引腳經(jīng)過一個(gè)非門連接到單片機(jī)的/INT0 腳,當(dāng) MM74C922 檢測到鍵 盤輸入時(shí),DA 產(chǎn)生高電平,與之相連的/INT0 檢測到低電平,給單片機(jī)一個(gè)中斷, 單片機(jī)從 P2 口的低四位讀入鍵盤上按下的按鍵值。 圖 2-5 鍵盤接口電路圖 2.3 LCD 顯示模塊 本設(shè)計(jì)采用 LCD 液晶顯示器來顯示輸入輸出數(shù)據(jù)。通過 D0-D7 引腳向 LCD 寫指 令字或?qū)憯?shù)據(jù)以使 LCD 實(shí)現(xiàn)不同的功能或顯示相應(yīng)數(shù)據(jù)。LCD 引腳圖如圖 2-6 所示。 圖 2-6 LCD1602 引腳圖 LCD 分為帶背光和不帶背光兩種,基控制器大部分為 HD44780,帶背
22、光的比不帶 背光的厚,在實(shí)際使用中是否帶背光并無多大差別,兩者尺寸差別如圖 2-7 所示。 圖 2-7 LCD 背光和不帶背光的尺寸對(duì)比圖 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ù)。 顯示電路圖如圖 2-8 所示。 圖 2-8 LCD 液晶顯示電路 2.3.2 LCD1602 主要技術(shù)參數(shù) 顯示容量:162 個(gè)字符 芯片工作電壓:4.55.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V 字符尺寸:2.95
23、4.35(WH)mm 2.3.3 引腳功能說明 LCD 采用標(biāo)準(zhǔn)的 14 腳(無背光)或 16 腳(帶背光)接口,各引腳接口說明如 表 2-1 所示。 表 2-1 引腳接口說明表 編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明 1VSS 電源地 9D2 數(shù)據(jù) 2VDD 電源正極 10D3 數(shù)據(jù) 3VL 液晶顯示偏壓 11D4 數(shù)據(jù) 4RS 數(shù)據(jù)/命令選擇 12D5 數(shù)據(jù) 5R/W 讀/寫選擇 13D6 數(shù)據(jù) 6E 使能信號(hào) 14D7 數(shù)據(jù) 7D0 數(shù)據(jù) 15BLA 背光源正極 8D1 數(shù)據(jù) 16BLK 背光源負(fù)極 第 1 腳:VSS 為地電源。 第 2 腳:VDD 接 5V 正電源。 第 3 腳:VL 為液
24、晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比 度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè) 10K 的電位器調(diào)整對(duì) 比度。 第 4 腳:RS 為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存 器。 第 5 腳:R/W 為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng) RS 和 R/W 共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng) RS 為低電平 R/W 為高電 平時(shí)可以讀忙信號(hào),當(dāng) RS 為高電平 R/W 為低電平時(shí)可以寫入數(shù)據(jù)。 第 6 腳:E 端為使能端,當(dāng) E 端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 第 714 腳:D0D7 為 8 位雙向數(shù)據(jù)線
25、。 第 15 腳:背光源正極。 第 16 腳:背光源負(fù)極。 2.4 運(yùn)算模塊(單片機(jī)控制) AT89C51 單片機(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)行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是一些特殊 的功能,通過使用單片機(jī)編寫的程序可以實(shí)現(xiàn)高智能、高效率以及高可靠性!因此 我們采用單片機(jī)作為
26、計(jì)算器的主要功能部件,可以很快地實(shí)現(xiàn)運(yùn)算功能。 另外系統(tǒng)還包括時(shí)鐘電路和復(fù)位電路。 第三章 軟件設(shè)計(jì) 3.1 功能介紹 實(shí)際運(yùn)用中人們熟悉的計(jì)算器,其功能主要如下: 1、鍵盤輸入; 2、顯示數(shù)值; 3、加、減、乘、除四則運(yùn)算; 4、對(duì)錯(cuò)誤輸入和輸出的控制及提示。 3.2 系統(tǒng)流程圖 在軟件設(shè)計(jì)中程序分別要完成鍵盤輸入檢測、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 所示。 開始 初始化參數(shù) 初始化 LCD 顯示 有鍵輸
27、入? 讀取鍵碼 LCD 顯示 數(shù)字鍵清零鍵功能鍵 狀態(tài)清零 輸入數(shù)值 數(shù)值送顯示緩沖 Y N 根據(jù)上次功能鍵和輸 入的數(shù)據(jù)計(jì)算結(jié)果 結(jié)果送顯示緩沖 本次功能鍵 圖 3-1 系統(tǒng)流程圖 3.3 程序 本設(shè)計(jì)程序采用 C 語言編程,程序分為多個(gè)模塊,由主程序、鍵值轉(zhuǎn)換和 LCD 系列程序等模塊組成。具體程序見附錄。 第四章 系統(tǒng)調(diào)試 4.1 軟件介紹 4.1.1 Keil uVision2 仿真軟件簡介 Keil uVision2 是德國 Keil 公司開發(fā)的基于 Windows 平臺(tái)的單片機(jī)集成開發(fā)環(huán) 境,它包含一個(gè)高效的編譯器、一個(gè)項(xiàng)目管理器和一個(gè) MAKE 工具。其中 Keil C51 是一
28、種專門為單片機(jī)設(shè)計(jì)的高效率 C 語言編譯器,符合 ANSI 標(biāo)準(zhǔn),生成的程序代碼 運(yùn)行速度極高,所需要的存儲(chǔ)器空間極小,完全可以與匯編語言媲美。Keil uVision2 的界面如圖 4-1 所示,Keil uVision2 允許同時(shí)打開、瀏覽多個(gè)源文件。 圖 4-1 Keil uVision2 的界面 4.1.2 protues 簡介 protues 軟件是英國 Labcenter electronics 公司出版的 EDA 工具軟件。它不 僅具有其它 EDA 工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好 的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好
29、 者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus 是世界上著名的 EDA 工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電 路協(xié)同仿真,一鍵切換到 PCB 設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。它是目 前世界上唯一將電路仿真軟件、PCB 設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平 臺(tái),其處理器模型支持 8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086 和 MSP430 等, 2010 年已經(jīng)增加了 Cortex 和 DSP 系列處理器,并持續(xù)增加其他系列處理器模型。 在編譯方面,它也支持 IAR、K
30、eil 和 MPLAB 等多種編譯器,界面圖如圖 4-2 所示。 圖 4-2 protues 界面圖 4.2 軟件調(diào)試 4.2.1 軟件分析及常見故障 在此次設(shè)計(jì)中使用 Keil uVision2 和 Proteus 軟件仿真,其中使用 Keil uVision2 軟件匯編源程序,使用 Proteus 軟件對(duì)硬件電路進(jìn)行模擬。正確連接電路 圖,使其能按照題目要求及設(shè)計(jì)初衷正常工作。 從庫里正確拾取元器件,認(rèn)真合理地連線,做到不缺件,不缺線,選取合適的 元件參考值,使其能正常工作。通過編譯,連接程序。使其生成.hex 文件,并連入 連好的 Proteus 圖中。測試該計(jì)算器是否能正常工作。若不能
31、,首先要檢查有沒有 漏掉元器件,元器件是否都連接好。其次,要看元件各引腳是否都連接正確,有無 接反的。最后要看元件的參考值是否選擇合理,電源電壓是否能帶動(dòng)元器件正常工 作。 常見故障: 1、邏輯錯(cuò)誤:它是由設(shè)計(jì)錯(cuò)誤或加工過程中的工藝性錯(cuò)誤所造成的。這類錯(cuò)誤 包括錯(cuò)線、開路、短路等。 2、元器件失效:有兩方面的原因:一是器件本身已損壞或性能不符合要求;二 是組裝錯(cuò)誤造成元件失效,如電解電容、集成電路安裝方向錯(cuò)誤等。 3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會(huì)造成 系統(tǒng)時(shí)好時(shí)壞,經(jīng)不起振動(dòng);走線和布局不合理也會(huì)引起系統(tǒng)可靠性差。 4、電源故障:若樣機(jī)有電源故障,則加電后很容
32、易造成器件損壞。電源故障包 括電壓值不符合設(shè)計(jì)要求,電源引線和插座不對(duì),功率不足,負(fù)載能力差等。 調(diào)試方法:包括多級(jí)調(diào)試和聯(lián)機(jī)調(diào)試。在調(diào)試過程中要針對(duì)可能出現(xiàn)的故障認(rèn) 真分析,直至檢查出原因并排除。 本次硬件調(diào)試過程中,對(duì)所出現(xiàn)的問題進(jìn)行了認(rèn)真的分析和改正,最后能夠很 好的達(dá)到設(shè)計(jì)要求的效果。 系統(tǒng)仿真圖如圖 4-3 所示。 圖 4-3 系統(tǒng)仿真圖 4.2.2 仿真結(jié)果演示 下面以加、減、乘和除分別做仿真演示: (1)加法:以 258 和 825 作為加數(shù)和被加數(shù)運(yùn)算,結(jié)果為 1083。加法仿真結(jié)果圖 如圖 4-4 所示。 圖 4-4 加法仿真結(jié)果圖 (2)減法:以和作為被減數(shù)和減數(shù)運(yùn)算,結(jié)果
33、為。減法仿真結(jié)果圖如圖 4-5 所示。 圖 4-5 減法仿真結(jié)果圖 (3)乘法:以 694 和 123 作為乘數(shù)和被乘數(shù)運(yùn)算,結(jié)果為 85362。乘法結(jié)果仿真圖 如圖 4-6 所示。 圖 4-6 乘法結(jié)果仿真圖 (4)除法:以 1250 和 5 作為被除數(shù)和除數(shù)運(yùn)算,結(jié)果為 250。除法結(jié)果仿真圖如 圖 4-7 所示。 圖 4-7 除法結(jié)果仿真圖 由以上四種運(yùn)算結(jié)果可知軟件仿真均正確,沒有顯示錯(cuò)誤。 4.3 硬件調(diào)試 在 protues 里面把硬件圖畫好,把所有元器件的參數(shù)都設(shè)置好,程序在 keil 里 面生成.hex 文件,然后在 protues 里單片機(jī)芯片中導(dǎo)入此文件,運(yùn)行一切正常后開
34、始準(zhǔn)備焊接硬件。在焊接硬件過程中首先得準(zhǔn)備好所有必備的東西,比如所需元器 件和焊接所用工具等。在焊接前應(yīng)先在面包板上把硬件插好調(diào)試,接通電源看能否 顯示出結(jié)果,如果元器件都是好的并且結(jié)果可以顯示出,就可以焊接了。如果顯示 不出來再檢查各個(gè)器件是否有損壞,并用萬用表挨個(gè)檢查,直至一切顯示正常再焊 接。 在焊接時(shí)要注意相鄰焊點(diǎn)不能粘在一起,連接線不能太長,并且注意焊點(diǎn)的虛 焊、假焊。在使用電烙鐵時(shí)溫度不能太高也不能太低,一般在 350 度左右,溫度太 低容易形成冷焊點(diǎn),太高則會(huì)燒壞電路板。 電路板焊接好以后首先測試一下各個(gè)元器件是否正常,焊點(diǎn)有無虛焊、連焊、 假焊等現(xiàn)象,檢查沒有問題以后接通電源查
35、看 LCD 顯示是否正常,如果一切顯示沒 有問題把硬件妥善保管,防止不小心損壞。硬件電路實(shí)物圖如圖 4-8 所示。 圖 4-8 硬件電路實(shí)物圖 結(jié)束語 通過這次簡易計(jì)算器的設(shè)計(jì),很大程度的提高了我的理解力和動(dòng)手能力,也拓 寬了知識(shí)面。在圖書館和網(wǎng)上查閱資料使我了解了更多的資料,也方便了我們以后 的使用。在查詢的資料中讓我對(duì)單片機(jī)有了更深入的了解,能把學(xué)到的知識(shí)用活, 而不只局限于理論方面。 在硬件制作過程中,當(dāng)我把硬件都焊好以后接通電源 LCD 怎么都不顯示數(shù)字并 且在很短的時(shí)間內(nèi)就會(huì)發(fā)熱,我查了焊接點(diǎn)和仿真圖都沒有問題,接著仔細(xì)查找了 LCD 顯示器各個(gè)管腳,發(fā)現(xiàn)兩個(gè)電壓管腳接反了,但在仿真
36、時(shí)沒出現(xiàn)問題,而在實(shí) 物中出現(xiàn)了問題,是由于仿真元件都是理想化的,各個(gè)問題在實(shí)物中根據(jù)實(shí)際情況 就會(huì)出現(xiàn)。 編程時(shí),充分使用了結(jié)構(gòu)化的思想。這樣一來,因?yàn)檎Z句較少,程序調(diào)試也比 較方便,功能模塊可以逐一地調(diào)試,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢。當(dāng)每個(gè)模塊都 完成時(shí),將其功能互相整合就完成了整體的設(shè)計(jì)。經(jīng)歷了從最初的不了解設(shè)計(jì)內(nèi)容 到最后做出仿真結(jié)果的過程使我從根本上提高了對(duì)專業(yè)的認(rèn)識(shí)及興趣,對(duì)于我們工 科學(xué)生來說,學(xué)習(xí)了這些對(duì)我們以后工作有重大的影響。很感謝學(xué)校和老師給我們 提供了這樣的平臺(tái),能使我們的動(dòng)手能力增強(qiáng)。感謝老師對(duì)我們提供的幫助。 參考文獻(xiàn) 1 裴巖、劉利民單片機(jī)系統(tǒng)綜合設(shè)計(jì)與實(shí)踐J.內(nèi)
37、蒙古大學(xué)出版.2003.1 2 楊國林.C 語言程序設(shè)計(jì)J.內(nèi)蒙古大學(xué)出版社.2001.9 3 郭天祥.新概念 51 單片機(jī) C 語言程序J.電子工業(yè)出版社.2009.1 4 LED 與 LCD 顯示器的區(qū)別. 5基于單片機(jī)簡易計(jì)算器的設(shè)計(jì). 6 基于單片機(jī)的簡易計(jì)算器設(shè)計(jì). 7 計(jì)算器模擬系統(tǒng)設(shè)計(jì). 8 計(jì)算器設(shè)計(jì)報(bào)告. 9 基于單片機(jī)的計(jì)算器. 10 AT89C51 單片機(jī)簡介 11 Keil uVision2 仿真軟件的使用說明 Vision2 集成開發(fā)環(huán)境 12 44 矩陣鍵盤計(jì)算器設(shè)計(jì) 13 Henderson D. Calibration of fast sampling o sc
38、illoscopes. 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 Computing Software,May.2001 附錄 #include #include #define uchar unsigned char #define uint unsigned int char translate(i
39、nt 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 dataoverflow(); long x=0,y=0,num=0; int operators,input,iny=0; char key; char error5=error; char overflow8=overfl
40、ow; 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(keycode) case 0: return 7; break; case 1: return 4; break; case 2: return 1; break; case 3: return c; break; case
41、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 =; break; case 12: return /; break; case 13: return *; break; case 14: return -; break; case 15: return +; break;
42、 /*外部中斷 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-) /當(dāng)前數(shù)值是否超出限定范圍 display(num); else dataoverflow(); else switch(key) case c: x=0; y=0; num=0; iny=0; operators=0; display(num); break; cas
43、e =: 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ù)運(yùn)算函數(shù)*/ void arithmetic() if (iny) switch(operators) case 1: x=x+y; num=x; if(num-) display(num); else dataoverflow(); break; case 2: x=x-y; num=x; if(num-) display(num); else dataoverflow(); break; ca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度企業(yè)員工績效評(píng)估與薪酬調(diào)整合作合同3篇
- 2024年企事業(yè)單位綠植擺放與養(yǎng)護(hù)管理服務(wù)合同3篇
- 2024年某餐飲企業(yè)與食材供應(yīng)商之間的食材采購合同
- 2024年幕墻腳手架施工分包質(zhì)量檢測及整改合同3篇
- 2024年度淘寶電商團(tuán)隊(duì)管理與領(lǐng)導(dǎo)力培訓(xùn)服務(wù)協(xié)議3篇
- 2024年商鋪?zhàn)赓U合同模板:市中心黃金地段商鋪?zhàn)赓U管理規(guī)范2篇
- 建筑物拆除爆破工程合約
- 食品加工攪拌機(jī)租賃合同
- 企業(yè)員工績效承諾書樣版
- 企業(yè)用工信息化管理策略
- 大學(xué)生職業(yè)規(guī)劃課件
- 2024年食品生產(chǎn)企業(yè)食品安全管理人員監(jiān)督抽查考試題庫(含答案)
- 中醫(yī)與診斷-學(xué)做自己的醫(yī)生智慧樹知到期末考試答案2024年
- 軍事理論智慧樹知到期末考試答案2024年
- 2024年貴州貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 2024年貴州燃?xì)饧瘓F(tuán)貴安新區(qū)燃?xì)庥邢薰菊衅腹P試參考題庫附帶答案詳解
- 中醫(yī)診療設(shè)備種類目錄
- 人教版小學(xué)數(shù)學(xué)三上《數(shù)學(xué)廣角-集合》單元集體備課及全部課時(shí)教學(xué)設(shè)計(jì)
- 《高考工藝流程題》教案及反思陳慧
- 中藥材生產(chǎn)管理質(zhì)量管理文件目錄
- 貴州碳酸鈣項(xiàng)目建議書(模板)
評(píng)論
0/150
提交評(píng)論