基于51單片機(jī)的簡(jiǎn)易計(jì)算器論文設(shè)計(jì).doc_第1頁(yè)
基于51單片機(jī)的簡(jiǎn)易計(jì)算器論文設(shè)計(jì).doc_第2頁(yè)
基于51單片機(jī)的簡(jiǎn)易計(jì)算器論文設(shè)計(jì).doc_第3頁(yè)
基于51單片機(jī)的簡(jiǎn)易計(jì)算器論文設(shè)計(jì).doc_第4頁(yè)
基于51單片機(jī)的簡(jiǎn)易計(jì)算器論文設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

電子設(shè)計(jì)結(jié)課論文 題 目 系 別 專 業(yè) 學(xué)生姓名 學(xué) 號(hào) 題目類型 題目類型 理論研究 實(shí)驗(yàn)研究 工程設(shè)計(jì) 工程技術(shù)研究 軟件開發(fā) 年 月 日 基于基于 5151 單片機(jī)的簡(jiǎn)易計(jì)算器單片機(jī)的簡(jiǎn)易計(jì)算器 摘要 摘要 工程實(shí)踐教學(xué)環(huán)節(jié)是為了學(xué)生能夠更好地鞏固和實(shí)踐所學(xué)專業(yè)知識(shí)而設(shè)置 的 在本次工程實(shí)踐中 我以 智能化測(cè)量控制儀表原理與設(shè)計(jì) MCS 51 系列單片微 型計(jì)算機(jī)及其應(yīng)用 課程中所學(xué)知識(shí)為基礎(chǔ) 設(shè)計(jì)了簡(jiǎn)易計(jì)算器 本系統(tǒng)以 MCS 51 系列 中的 8051 單片機(jī)為核心 能夠?qū)崿F(xiàn)兩位數(shù)的四則運(yùn)算 該系統(tǒng)通過(guò)檢測(cè)矩陣鍵盤掃描 判斷是否按鍵 經(jīng)數(shù)據(jù)轉(zhuǎn)換把數(shù)值送入數(shù)碼管動(dòng)態(tài)顯示 本系統(tǒng)的設(shè)計(jì)說(shuō)明重點(diǎn)介紹了如下幾方面的內(nèi)容 1 基于單片機(jī)簡(jiǎn)易計(jì)算器的基本功能 同時(shí)對(duì)矩陣鍵盤及 1602 顯示原理進(jìn)行了簡(jiǎn) 單的闡述 2 介紹了系統(tǒng)的總體設(shè)計(jì) 給出了系統(tǒng)的整體流程框圖 并對(duì)其進(jìn)行了功能模塊劃 分及所采用的元器件進(jìn)行了詳細(xì)說(shuō)明 3 對(duì)系統(tǒng)各功能模塊的軟 硬件實(shí)現(xiàn)進(jìn)行了詳細(xì)的設(shè)計(jì)說(shuō)明 關(guān)鍵詞 關(guān)鍵詞 MCS 51 8051 單片機(jī) 計(jì)算器 加減乘除 目錄 目錄 第一章第一章 緒論緒論 1 1 2 設(shè)計(jì)目的 1 1 3 設(shè)計(jì)任務(wù) 1 1 4 章節(jié)安排說(shuō)明 1 第二章第二章 計(jì)算器系統(tǒng)簡(jiǎn)介計(jì)算器系統(tǒng)簡(jiǎn)介 2 2 1 單片機(jī)發(fā)展現(xiàn)狀 2 2 2 計(jì)算器系統(tǒng)現(xiàn)狀 2 2 3 簡(jiǎn)易計(jì)算器系統(tǒng)簡(jiǎn)介 3 第三章第三章 主要器件簡(jiǎn)介主要器件簡(jiǎn)介 4 3 1 MCS 51 系列單片機(jī)簡(jiǎn)介 4 3 2 其它器件簡(jiǎn)介 7 3 2 1 1602 顯示 7 3 2 2 矩陣按鍵 7 第四章第四章 計(jì)算器系統(tǒng)設(shè)計(jì)計(jì)算器系統(tǒng)設(shè)計(jì) 9 4 1 計(jì)算器硬件電路設(shè)計(jì) 9 4 2 2 主程序設(shè)計(jì) 9 結(jié)語(yǔ) 17 參考文獻(xiàn)參考文獻(xiàn) 18 第一章 緒論 1 第一章 緒論 1 1 課題簡(jiǎn)介課題簡(jiǎn)介 單片機(jī)由于其微小的體積和極低的成本 廣泛的應(yīng)用于家用電器 工業(yè)控制等領(lǐng)域 中 在工業(yè)生產(chǎn)中 單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支 也是頗具生命力 的機(jī)種 單片機(jī)微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī) 特別適用于控制領(lǐng)域 故又稱為微控制器 本系統(tǒng)就是充分利用了 8051 芯片的 I O 引腳 系統(tǒng)統(tǒng)采用 MSC 51 系列單片機(jī) Intel8051 為中心器件來(lái)設(shè)計(jì)計(jì)算器控制器 實(shí)現(xiàn)了能根據(jù)實(shí)際輸入值顯示并存儲(chǔ) 計(jì)算 程序則是參照教材 至于位數(shù)和功能 如果有需要可以設(shè)計(jì)擴(kuò)充原系統(tǒng)來(lái)實(shí)現(xiàn) 1 2 設(shè)計(jì)目的 通過(guò)本次工程實(shí)踐 運(yùn)用 智能化測(cè)量控制儀表原理與設(shè)計(jì) MCS 51 系列單片微 型計(jì)算機(jī)及其應(yīng)用 所學(xué)知識(shí)及查閱相關(guān)資料 完成簡(jiǎn)易計(jì)算器的設(shè)計(jì) 達(dá)到理論知識(shí) 與實(shí)踐更好結(jié)合 提高綜合運(yùn)用所學(xué)知識(shí)和設(shè)計(jì)能力的目的 通過(guò)本次設(shè)計(jì)訓(xùn)練 可以使我們?cè)诨舅悸泛突痉椒ㄉ蠈?duì)基于 MCS 51 單片機(jī)的嵌 入式系統(tǒng)設(shè)計(jì)有一個(gè)比較感性的認(rèn)識(shí) 并具備一定程度的設(shè)計(jì)能力 1 3 設(shè)計(jì)任務(wù) 在本次工程實(shí)踐中 主要完成如下方面的設(shè)計(jì)任務(wù) 1 簡(jiǎn)要綜述單片機(jī)技術(shù)發(fā)展的國(guó)內(nèi)外現(xiàn)狀及數(shù)碼管動(dòng)態(tài)顯示和矩陣鍵盤基本原理 2 掌握 MCS 51 系列某種產(chǎn)品 例如 8051 的最小電路及外圍擴(kuò)展電路的設(shè)計(jì)方法 3 了解單片機(jī)數(shù)據(jù)轉(zhuǎn)換功能及工作過(guò)程 4 完成主要功能模塊的硬件電路設(shè)計(jì)及必要的參數(shù)確定 5 用 protues 軟件完成原理電路的繪制 6 完成系統(tǒng)設(shè)計(jì)說(shuō)明書 1 4 章節(jié)安排說(shuō)明 整個(gè)設(shè)計(jì)總共分為四個(gè)章節(jié) 第一章是前言部分 主要介紹了設(shè)計(jì)基于單片機(jī)簡(jiǎn)易 計(jì)算器的意義 目的及主要內(nèi)容 第二章簡(jiǎn)要介紹了單片機(jī)發(fā)展的國(guó)內(nèi)外現(xiàn)狀及鍵盤掃 描 數(shù)據(jù)轉(zhuǎn)換 和動(dòng)態(tài)顯示原理進(jìn)行了簡(jiǎn)要的說(shuō)明 第三章是器件簡(jiǎn)介 這一部分主要 介紹了系統(tǒng)的所用主要器件的選擇 第四章是系統(tǒng)詳細(xì)設(shè)計(jì)階段 分為硬件設(shè)計(jì)和程序 設(shè)計(jì) 按照程序設(shè)計(jì)的各部分實(shí)現(xiàn)的功能不同 將整個(gè)軟件系統(tǒng)分成了三個(gè)塊 并對(duì)每 第二章 計(jì)算器系統(tǒng)簡(jiǎn)介 2 一個(gè)功能塊所采用的元器件進(jìn)行了詳細(xì)介紹 此外還編寫了主要功能模塊的基本程序 詳盡闡述了各模塊的工作過(guò)程 還有總流程圖 源代碼 硬器件鋪線圖 第二章 計(jì)算器系統(tǒng)簡(jiǎn)介 3 第二章 計(jì)算器系統(tǒng)簡(jiǎn)介 2 1 單片機(jī)發(fā)展現(xiàn)狀 單片機(jī)的發(fā)展趨勢(shì) 低功耗 CMOS 化 微型單片化 主流與多品種共存 單片機(jī)從 8 位 16 位到 32 位 數(shù)不勝數(shù) 應(yīng)有盡有 有與主流 C51 系列兼容的 也有不兼容的 但 它們各具特色 互成互補(bǔ) 為單片機(jī)的應(yīng)用提供廣闊的天地 縱觀單片機(jī)的發(fā)展過(guò)程 可以預(yù)示單片機(jī)的發(fā)展趨勢(shì) 大致有 1 低功耗 CMOS 化 MCS 51 系列的 8051 推出時(shí)的功耗達(dá) 630mW 而現(xiàn)在的單片機(jī)普遍都在 100mW 左右 隨著對(duì)單片機(jī)功耗要求越來(lái)越低 現(xiàn)在的各個(gè)單片機(jī)制造商基本都采用了 CMOS 互補(bǔ)金屬 氧化物半導(dǎo)體工藝 象 80C51 就采用了 HMOS 即高密度金屬氧化物半導(dǎo)體工藝 和 CHMOS 互補(bǔ)高密度金屬氧化物半導(dǎo)體工藝 CMOS 雖然功耗較低 但由于其物理特征決定 其工作速度不夠高 而 CHMOS 則具備了高速和低功耗的特點(diǎn) 這些特征 更適合于在要 求低功耗象電池供電的應(yīng)用場(chǎng)合 所以這種工藝將是今后一段時(shí)期單片機(jī)發(fā)展的主要途 徑 2 微型單片化 現(xiàn)在常規(guī)的單片機(jī)普遍都是將中央處理器 CPU 隨機(jī)存取數(shù)據(jù)存儲(chǔ) RAM 只讀程 序存儲(chǔ)器 ROM 并行和串行通信接口 中斷系統(tǒng) 定時(shí)電路 時(shí)鐘電路集成在一塊單一 的芯片上 增強(qiáng)型的單片機(jī)集成了如 A D 轉(zhuǎn)換器 PMW 脈寬調(diào)制電路 WDT 看門狗 有些單片機(jī)將 LCD 液晶 驅(qū)動(dòng)電路都集成在單一的芯片上 這樣單片機(jī)包含的單元電路就 更多 功能就越強(qiáng)大 甚至單片機(jī)廠商還可以根據(jù)用戶的要求量身定做 制造出具有自 己特色的單片機(jī)芯片 此外 現(xiàn)在的產(chǎn)品普遍要求體積小 重量輕 這就要求單片機(jī)除了功能強(qiáng)和功耗低 外 還要求其體積要小 現(xiàn)在的許多單片機(jī)都具有多種封裝形式 其中 SMD 表面封裝 越 來(lái)越受歡迎 使得由單片機(jī)構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展 3 主流與多品種共存 現(xiàn)在雖然單片機(jī)的品種繁多 各具特色 但仍以 80C51 為核心的單片機(jī)占主流 兼 容其結(jié)構(gòu)和指令系統(tǒng)的有 PHILIPS 公司的產(chǎn)品 ATMEL 公司的產(chǎn)品和中國(guó)臺(tái)灣的 Winbond 系列單片機(jī) 所以 C8051 為核心的單片機(jī)占據(jù)了半壁江山 而 Microchip 公司的 PIC 精 簡(jiǎn)指令集 RISC 也有著強(qiáng)勁的發(fā)展勢(shì)頭 中國(guó)臺(tái)灣的 HOLTEK 公司近年的單片機(jī)產(chǎn)量與日 俱增 與其低價(jià)質(zhì)優(yōu)的優(yōu)勢(shì) 占據(jù)一定的市場(chǎng)分額 此外還有 MOTOROLA 公司的產(chǎn)品 日 本幾大公司的專用單片機(jī) 在一定的時(shí)期內(nèi) 這種情形將得以延續(xù) 將不存在某個(gè)單片 機(jī)一統(tǒng)天下的壟斷局面 走的是依存互補(bǔ) 相輔相成 共同發(fā)展的道路 第二章 計(jì)算器系統(tǒng)簡(jiǎn)介 4 2 2 計(jì)算器系統(tǒng)現(xiàn)狀 計(jì)算器一般由運(yùn)算器 控制器 存儲(chǔ)器 鍵盤 顯示器 電源和一些可選外圍設(shè) 備及電子配件通過(guò)人工或機(jī)器設(shè)備組成 低檔計(jì)算器的運(yùn)算器 控制器由數(shù)字邏輯電 路實(shí)現(xiàn)簡(jiǎn)單的串行運(yùn)算 其隨機(jī)存儲(chǔ)器只有一 二個(gè)單元 供累加存儲(chǔ)用 高檔計(jì)算 器由微處理器和只讀存儲(chǔ)器實(shí)現(xiàn)各種復(fù)雜的運(yùn)算程序 有較多的隨機(jī)存儲(chǔ)單元以存放 輸入程序和數(shù)據(jù) 鍵盤是計(jì)算器的輸入部件 一般采用接觸式或傳感式 為減小計(jì)算 器的尺寸 一鍵常常有多種功能 顯示器是計(jì)算器的輸出部件 有發(fā)光二極管顯示器 或液晶顯示器等 除顯示計(jì)算結(jié)果外 還常有溢出指示 錯(cuò)誤指示等 計(jì)算器電源采 用交流轉(zhuǎn)換器或電池 電池可用交流轉(zhuǎn)換器或太陽(yáng)能轉(zhuǎn)換器再充電 為節(jié)省電能 計(jì) 算器都采用 CMOS 工藝制作的大規(guī)模集成電路 見互補(bǔ)金屬 氧化物 半導(dǎo)體集成電路 并在內(nèi)部裝有定時(shí)不操作自動(dòng)斷電電路 計(jì)算器可選用的外圍設(shè)備有微型打印機(jī) 盒式磁帶機(jī)和磁卡機(jī)等 2 3 簡(jiǎn)易計(jì)算器系統(tǒng)簡(jiǎn)介 本計(jì)算器是以 MCS 51 系列 8051 單片機(jī)為核心構(gòu)成的簡(jiǎn)易計(jì)算器系統(tǒng) 該系統(tǒng)通過(guò) 單片機(jī)控制 實(shí)現(xiàn)對(duì) 4 4 鍵盤掃描進(jìn)行實(shí)時(shí)的按鍵檢測(cè) 并把檢測(cè)數(shù)據(jù)存儲(chǔ)下來(lái) 整個(gè) 計(jì)算器系統(tǒng)的工作過(guò)程為 首先存儲(chǔ)單元初始化 顯示初始值和鍵盤掃描 判斷按鍵位 置 查表得出按鍵值 單片機(jī)則對(duì)數(shù)據(jù)進(jìn)行儲(chǔ)存與相應(yīng)處理轉(zhuǎn)換 之后送入數(shù)碼管動(dòng)態(tài) 顯示 整個(gè)系統(tǒng)可分為三個(gè)主要功能模塊 功能模塊一 實(shí)時(shí)鍵盤掃描 功能模塊二 數(shù)據(jù)轉(zhuǎn)換為了數(shù)碼管顯示 功能模塊三 數(shù)碼管動(dòng)態(tài)顯示 第三章 主要器件簡(jiǎn)介 5 第三章 主要器件簡(jiǎn)介 3 1 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)在我們分別加以說(shuō)明 中央處理器中央處理器 中央處理器 CPU 是整個(gè)單片機(jī)的核心部件 是 8 位數(shù)據(jù)寬度的處理器 能處理 8 位 二進(jìn)制數(shù)據(jù)或代碼 CPU 負(fù)責(zé)控制 指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作 完成運(yùn)算和控 制輸入輸出功能等操作 數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器 RAM RAM 8051 內(nèi)部有 128 個(gè) 8 位用戶數(shù)據(jù)存儲(chǔ)單元和 128 個(gè)專用寄存器單元 它們是統(tǒng)一編 址的 專用寄存器只能用于存放控制指令數(shù)據(jù) 用戶只能訪問(wèn) 而不能用于存放用戶數(shù) 據(jù) 所以 用戶能使用的 RAM 只有 128 個(gè) 可存放讀寫的數(shù)據(jù) 運(yùn)算的中間結(jié)果或用戶 定義的字型表 圖 3 1 8051 內(nèi)部結(jié)構(gòu)圖 程序存儲(chǔ)器程序存儲(chǔ)器 ROM ROM 8051 共有 4096 個(gè) 8 位掩膜 ROM 用于存放用戶程序 原始數(shù)據(jù)或表格 定時(shí)定時(shí) 計(jì)數(shù)器計(jì)數(shù)器 ROM ROM 8051 有兩個(gè) 16 位的可編程定時(shí) 計(jì)數(shù)器 以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序 轉(zhuǎn)向 并行輸入輸出并行輸入輸出 I O I O 口 口 8051 共有 4 組 8 位 I O 口 P0 P1 P2 或 P3 用于對(duì)外部數(shù)據(jù)的傳輸 全雙工串行口全雙工串行口 8051 內(nèi)置一個(gè)全雙工串行通信口 用于與其它設(shè)備間的串行數(shù)據(jù)傳送 該串行口既 可以用作異步通信收發(fā)器 也可以當(dāng)同步移位器使用 第三章 主要器件簡(jiǎn)介 6 中斷系統(tǒng) 中斷系統(tǒng) 8051 具備較完善的中斷功能 有兩個(gè)外中斷 兩個(gè)定時(shí) 計(jì)數(shù)器中斷和一個(gè)串行中 斷 可滿足不同的控制要求 并具有 2 級(jí)的優(yōu)先級(jí)別選擇 時(shí)鐘電路 時(shí)鐘電路 8051 內(nèi)置最高頻率達(dá) 12MHz 的時(shí)鐘電路 用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序 但 8051 單片機(jī)需外置振蕩電容 單片機(jī)的結(jié)構(gòu)有兩種類型 一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開的形式 即哈佛 Harvard 結(jié)構(gòu) 另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一 的結(jié)構(gòu) 即普林斯頓 Princeton 結(jié)構(gòu) INTEL 的 MCS 51 系列單片機(jī)采用的是哈佛結(jié)構(gòu)的 形式 而后續(xù)產(chǎn)品 16 位的 MCS 96 系列單片機(jī)則采用普林斯頓結(jié)構(gòu) 下圖是 MCS 51 系列單片機(jī)的內(nèi)部結(jié)構(gòu)示意圖 3 2 圖 3 2 MCS 51 結(jié)構(gòu)圖 MCS 51 的引腳說(shuō)明 MCS 51 系列單片機(jī)中的 8031 8051 及 8751 均采用 40Pin 封裝的雙列直接 DIP 結(jié)構(gòu) 右圖是它們的引腳配置 40 個(gè)引腳中 正電源和地線兩根 外置石英振蕩器的時(shí)鐘線兩 根 4 組 8 位共 32 個(gè) I O 口 中斷口線與 P3 口線復(fù)用 現(xiàn)在我們對(duì)這些引腳的功能加以 說(shuō)明 MCS 51 的引腳說(shuō)明 MCS 51 系列單片機(jī)中的 8031 8051 及 8751 均采用 40Pin 封裝的雙列直接 DIP 結(jié)構(gòu) 右圖是它們的引腳配置 40 個(gè)引腳中 正電源和地線兩根 外置石英振蕩器的時(shí)鐘線兩 根 4 組 8 位共 32 個(gè) I O 口 中斷口線與 P3 口線復(fù)用 現(xiàn)在我們對(duì)這些引腳的功能加以 說(shuō)明 如圖 3 3 第三章 主要器件簡(jiǎn)介 7 圖 3 3 雙列直插式封裝引腳圖 Pin9 RESET Vpd復(fù)位信號(hào)復(fù)用腳 當(dāng) 8051 通電 時(shí)鐘電路開始工作 在 RESET 引腳 上出現(xiàn) 24 個(gè)時(shí)鐘周期以上的高電平 系統(tǒng)即初始復(fù)位 初始化后 程序計(jì)數(shù)器 PC 指向 0000H P0 P3 輸出口全部為高電平 堆棧指針寫入 07H 其它專用寄存器被清 0 RESET 由高電平下降為低電平后 系統(tǒng)即從 0000H 地址開始執(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ù)不丟失 見下圖 3 4 為兩種復(fù)位方式和兩種時(shí)鐘方式 Pin30 ALE 當(dāng)訪問(wèn)外部程序器時(shí) ALE 地址鎖存 的輸出用于鎖存地址的低位字 節(jié) 而訪問(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)訪問(wèn)外 部程序存儲(chǔ)器 ALE 會(huì)跳過(guò)一個(gè)脈沖 如果單片機(jī)是 EPROM 在編程其間 將用于輸入編程脈沖 Pin29 當(dā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)外部選通線 8051 和 8751 單片機(jī) 內(nèi)置有 4kB 的程 序存儲(chǔ)器 當(dāng) EA 為高電平并且程序地址小于 4kB 時(shí) 讀取內(nèi)部程序存儲(chǔ)器指令數(shù)據(jù) 而 超過(guò) 4kB 地址則讀取外部指令數(shù)據(jù) 如 EA 為低電平 則不管地址大小 一律讀取外部程 序存儲(chǔ)器指令 顯然 對(duì)內(nèi)部無(wú)程序存儲(chǔ)器的 8031 EA 端必須接地 第三章 主要器件簡(jiǎn)介 8 在編程時(shí) EA Vpp腳還需加上 21V 的編程電壓 3 2 其它器件簡(jiǎn)介 3 2 1 1602 顯示 1602 液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器已經(jīng)存儲(chǔ)了 160 個(gè)不同的點(diǎn)陣字符圖形 這些 字符有 阿拉伯?dāng)?shù)字 英文字母的大小寫 常用的符號(hào) 和日文假名等 每一個(gè)字符都 有一個(gè)固定的代碼 比如大寫的英文字母 A 的代碼是 01000001B 41H 顯示時(shí)模塊 把地址 41H 中的點(diǎn)陣字符圖形顯示出來(lái) 我們就能看到字母 A 因?yàn)?1602 識(shí)別的是 ASCII 碼 試驗(yàn)可以用 ASCII 碼直接賦值 在單片機(jī)程序中還可 以用字符型常量或變量賦值 如 A 3 2 2 矩陣按鍵 鍵盤是單片機(jī)系統(tǒng)中最常用的人機(jī)對(duì)話輸入設(shè)備 用戶通過(guò)鍵盤向單片機(jī)輸入數(shù)據(jù)或 指令 鍵盤控制程序需完成的任務(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é)省 IO 口的方法 按鍵數(shù)目越多節(jié)省 IO 口就越可觀 思路 先判斷某一列 行 是否有按鍵按下 再判斷該行 列 是那一只鍵按下 但是 在程 序的寫法上 采用了最簡(jiǎn)單的方法 使得程序效率最高 本程序中 如果檢測(cè)到某鍵按 下了 就不再檢測(cè)其它的按鍵 這完全能滿足絕大多數(shù)需要 又能節(jié)省大量的 CPU 時(shí)間 本鍵盤掃描程序的優(yōu)點(diǎn)在于 不用專門的按鍵延時(shí)程序 提高了 CPU 效率 也不用中 斷來(lái)掃描鍵盤 節(jié)省了硬件資源 另外 本鍵盤掃描程序 每次掃描占用 CPU 時(shí)最短 不論有鍵按下或者無(wú)鍵按下都可以在很短的時(shí)間完成一次掃描 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 9 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 4 1 計(jì)算器硬件電路設(shè)計(jì) 8051 單片機(jī)一片 4 4 鍵盤一個(gè) 1602 lcd 一個(gè) 連線和電阻和開關(guān)若干 8051 單 片機(jī)的 P3 口作鍵盤口 P0 為 1602 接口 4 2 計(jì)算器程序設(shè)計(jì) include define uchar unsigned char define uint unsigned int uchar j 在鍵盤檢測(cè)函數(shù)中使用 判斷是否有按鍵按下 有則加 1 sbit d P2 6 點(diǎn)按鍵判斷 void delay uchar z 延時(shí)函數(shù) uchar x y for x z x 0 x for y 110 y 0 y uchar code A 0 1 2 3 4 5 6 7 8 9 lcd 調(diào)用顯示數(shù)組 uchar keyscan 鍵盤檢測(cè) uchar temp key j 0 if d 0 delay 100 if d 0 key 16 while d 0 j P3 0 xfe temp P3 if temp 0 xfe delay 100 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 10 temp P3 if temp 0 xfe j switch temp case 0 x7e key 3 break case 0 xbe key 2 break case 0 xde key 1 break case 0 xee key 0 break while P3 0 xfe P3 0 xfd temp P3 if temp 0 xfd delay 100 temp P3 if temp 0 xfd j switch temp case 0 x7d key 7 break case 0 xbd key 6 break case 0 xdd key 5 break case 0 xed key 4 break while P3 0 xfd P3 0 xfb temp P3 if temp 0 xfb 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 11 delay 100 temp P3 if temp 0 xfb j switch temp case 0 x7b key 11 break case 0 xbb key 10 break case 0 xdb key 9 break case 0 xeb key 8 break while P3 0 xfb P3 0 xf7 temp P3 if temp 0 xf7 delay 100 temp P3 if temp 0 xf7 j switch temp case 0 x77 key 15 break case 0 xb7 key 14 break case 0 xd7 key 13 break case 0 xe7 key 12 break while P3 0 xf7 return key sbit rs P1 0 定義 lcd 引腳 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 12 sbit rw P1 1 sbit en P2 5 void wc uchar a lcd 寫指令函數(shù) delay 5 rs 0 寫指令 rw 0 寫 P0 a en 0 delay 10 en 1 void wd uchar a lcd 寫數(shù)據(jù)函數(shù) delay 5 rs 1 寫數(shù)據(jù) rw 0 寫 P0 a en 0 delay 5 en 1 unsigned long sum1 sum2 sum1 為第一個(gè)數(shù) sum2 為第二個(gè)數(shù) uchar g1 s1 小數(shù)位 float sum 1 sum 2 xs1 xs2 把按下的小數(shù)記為 xs void main uchar i k ji dian xsw1 xsw2 ts i 統(tǒng)計(jì)數(shù)字按下次數(shù) k 為判斷是否按下運(yùn)算符并判斷是 什么運(yùn)算 ji 為按下總次數(shù) 顯示地址用 dain 為記是否按下點(diǎn) xsw 為輸入的小數(shù)位的多少的標(biāo)注 d 1 delay 15 wc 0 x38 delay 15 wc 0 x38 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 13 delay 15 wc 0 x38 wc 0 x0c wc 0 x06 wc 0 x01 wc 0 x80 0 x0f wd 0 x30 初始位為 0 wc 0 x80 0 x0f while 1 keyscan if j 0 當(dāng)有按鍵按下 keyscan 函數(shù)使 j 才寫入數(shù)據(jù) if keyscan 15 如果輸入為歸零 k 0 sum1 0 sum2 0 ji 0 sum 1 0 sum 2 0 xsw1 0 xsw2 0 xs1 0 xs2 0 ts 0 dian 0 wc 0 x06 wc 0 x01 wc 0 x80 0 x0f wd 0 x30 wc 0 x80 0 x0f 歸零 else if 9 keyscan switch keyscan case 10 wd A keyscan k 1 break case 11 wd A keyscan k 2 break case 12 wd A keyscan k 3 break case 13 wd A keyscan k 4 break else if 0 keyscan keyscan 16 如果按下為數(shù)字或小數(shù)點(diǎn) 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 14 ji lcd 顯示用到 標(biāo)記地址 if k 0 判斷是否按下運(yùn)算符 如果按下 把后面的數(shù)交給 sum2 if keyscan 16 如果按下為小數(shù)點(diǎn) wd A 16 顯示點(diǎn) dian 表示已經(jīng)按下點(diǎn) sum 0 else if dian 0 wd A keyscan xsw2 按下多少位小數(shù) xs2 xs2 10 keyscan else wd A keyscan sum2 a keyscan sum2 sum2 10 keyscan else if keyscan 16 如果按下為小數(shù)點(diǎn) wd A 16 顯示點(diǎn) dian 表示已經(jīng)按下點(diǎn) else if dian 0 wd A keyscan xsw1 按下多少位小數(shù) xs1 xs1 10 keyscan else 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 15 wd A keyscan sum1 a keyscan sum1 sum1 10 keyscan wc 0 x07 寫指令 寫一個(gè)屏幕右移 else if keyscan 14break case 2 sum 1 sum1 xs1 100 break case 3 sum 1 sum1 xs1 1000 break else sum 1 sum1 if xsw2 0 switch xsw2 case 1 sum 2 sum2 xs2 10 break case 2 sum 2 sum2 xs2 100 break case 3 sum 2 sum2 xs2 1000 break else sum

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論