




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、河南河南#學校學校 畢畢業業設設計計(論論文文)基于基于 5151 單片機的簡易計算器單片機的簡易計算器系系 部部: : 自動控制系自動控制系 專專 業業: : 電氣自動化電氣自動化 班班 級級: : 自自 083083 姓姓 名名: : 崔崔 # # # # 學學 號號: : 091415302091415302 指導老師指導老師: : 許許 # # 二零一二年五月八日二零一二年五月八日基于 51 單片機的簡易計算器I摘要摘要工程實踐教學環節是為了學生能夠更好地鞏固和實踐所學專業知識而設置的,在本次工程實踐中,我以智能化測量控制儀表原理與設計 、 MCS-51 系列單片微型計算機及其應用課程
2、中所學知識為基礎,設計了簡易計算器。本系統以MCS-51 系列中的 8051 單片機為核心,能夠實現多位數的四則運算。該系統通過檢測矩陣鍵盤掃描,判斷是否按鍵,經數據轉換把數值送入數碼管動態顯示。本系統的設計說明重點介紹了如下幾方面的內容:基于單片機簡易計算器的基本功能,同時對矩陣鍵盤及數碼管動態顯示原理進行了簡單的闡述;介紹了系統的總體設計、給出了系統的整體流程框圖,并對其進行了功能模塊劃分及所采用的元器件進行了詳細說明;對系統各功能模塊的軟、硬件實現進行了詳細的設計說明。關鍵詞關鍵詞:MCS-51; 8051 單片機;計算器;加減乘除Based on the simple calculat
3、or 51 SCMIIAbstractThe engineering practice teaching is to students better to consolidate and practice have set up by the professional knowledge, in this engineering practice, I to the intelligent measurement control instrument principle and design , the MCS-51 series single chip computer and its ap
4、plication course knowledge as the foundation, the design the simple calculator. This system to MCS-51 of the 8051 series single chip microcomputer as the core, can realize the connection arithmetic. The system through the test matrix keyboard scan, judge whether key, the data transfer the numerical
5、into digital tube dynamic display. This system mainly introduced the design that the following aspects of content: based on single chip microcomputer simple calculator basic functions, and the matrix keyboard and a digital tube dynamic display of the principle of a simple expatiated; introduced the
6、design of the whole system, the whole process of the system are discussed, and its function module partition and the components for a detailed explanation; the functional modules of the system hardware and software of the implementation of the detailed design instructions.Key words: MCS-51; 8051 sin
7、gle chip microcomputer; Calculator; Add, subtract, multiply and divide:目錄III目錄目錄第 1 章 緒論1 1.1 課題簡介11.2 設計目的11.3 設計任務11.4 章節安排說明1第 2 章 計算器系統簡介22.1 單片機發展現狀22.2 計算機系統現狀22.3 簡易計算器系統簡介3第 3 章 計算機硬件系統簡介43.1 計算機硬件需IV求43.2 MCS-51 系列單片機簡介43.3 外圍電路設計 83.3.1 振蕩電路設計83.3.2 復位電路設計93.3.3 鍵盤電路設計93.3.4 數碼管顯示電路設計10 3.
8、4 硬件原理圖11第 4 章 計算器軟件系統設計124.1 系統模塊圖124.2 系統流程圖124.3 計算器主程序設計目錄V124.3.1 計算器主程序設計124.3.2 存儲單元分配134.4 計算器子程序設計144.4.1 輸入程序設計144.4.2 運算程序設計154.4.3 顯示程序設計16第 5 章 結論與展望185.1 結論185.2 不足與展望18參考文獻19附錄 程序源代VI碼20基于 51 單片機的簡易計算器1第第 1 1 章章 緒論緒論1.1 課題簡介課題簡介單片機由于其微小的體積和極低的成本,廣泛的應用于家用電器、工業控制等領域中。在工業生產中。單片機微型計算機是微型計
9、算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領域,故又稱為微控制器。本系統就是充分利用了 8051 芯片的 I/O 引腳。系統統采用 MSC-51 系列單片機 Intel8051 為中心器件來設計計算器控制器,實現了能根據實際輸入值顯示并存儲,計算程序則是參照教材。至于位數和功能,如果有需要可以設計擴充原系統來實現 。1.2 設計目的設計目的通過本次工程實踐,運用智能化測量控制儀表原理與設計 、 MCS-51 系列單片微型計算機及其應用所學知識及查閱相關資料,完成簡易計算器的設計,達到理論知識與實踐更好結合、提高綜合運用所學知識和設計能力的目的。通過本次
10、設計訓練,可以使我們在基本思路和基本方法上對基于 MCS-51 單片機的嵌入式系統設計有一個比較感性的認識,并具備一定程度的設計能力。1.3 設計設計任務任務在本次工程實踐中,主要完成如下方面的設計任務:(1) 簡要綜述單片機技術發展的國內外現狀及數碼管動態顯示和矩陣鍵盤基本原理;(2) 掌握 MCS-51 系列某種產品(例如 8051)的最小電路及外圍擴展電路的設計方法;(3) 了解單片機數據轉換功能及工作過程;(4) 完成主要功能模塊的硬件電路設計及必要的參數確定;(5)用 protues 軟件完成原理電路的繪制;(6) 完成系統設計說明書。1.4 章節安排說明章節安排說明整個設計總共分為
11、四個章節,第一章是前言部分,主要介紹了設計基于單片機簡易計算器的意義、目的及主要內容;第二章簡要介紹了單片機發展的國內外現狀及鍵盤掃描,數據轉換,和動態顯示原理進行了簡要的說明。第三章是器件簡介,這一部分主要介紹了系統的所用主要器件的選擇。第四章是系統詳細設計河南機電高等專科學校畢業論文2階段,分為硬件設計和程序設計。按照程序設計的各部分實現的功能不同,將整個軟件系統分成了三個塊,并對每一個功能塊所采用的元器件進行了詳細介紹。此外還編寫了主要功能模塊的基本程序,詳盡闡述了各模塊的工作過程。還有總流程圖,源代碼,硬器件鋪線圖。基于 51 單片機的簡易計算器3第第 2 2 章章 計算器系統簡介計算
12、器系統簡介2.1 單片機發展現狀單片機發展現狀單片機的發展趨勢:低功耗 CMOS 化;微型單片化;主流與多品種共存;單片機從 8 位、16 位到 32 位,數不勝數,應有盡有,有與主流 C51 系列兼容的,也有不兼容的,但它們各具特色,互成互補,為單片機的應用提供廣闊的天地。 縱觀單片機的發展過程,可以預示單片機的發展趨勢,大致有:( (1) ) 低功耗低功耗 CMOSCMOS 化化 MCS-51 系列的 8051 推出時的功耗達 630mW,而現在的單片機普遍都在 100mW左右,隨著對單片機功耗要求越來越低,現在的各個單片機制造商基本都采用了CMOS(互補金屬氧化物半導體工藝)。象 80C
13、51 就采用了 HMOS(即高密度金屬氧化物半導體工藝)和 CHMOS(互補高密度金屬氧化物半導體工藝)。CMOS 雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而 CHMOS 則具備了高速和低功耗的特點,這些特征,更適合于在要求低功耗象電池供電的應用場合。所以這種工藝將是今后一段時期單片機發展的主要途徑。 ( (2)微型單片化)微型單片化現在常規的單片機普遍都是將中央處理器(CPU)、隨機存取數據存儲(RAM)、只讀程序存儲器(ROM)、并行和串行通信接口,中斷系統、定時電路、時鐘電路集成在一塊單一的芯片上,增強型的單片機集成了如 A/D 轉換器、PMW(脈寬調制電路)、WDT(看門狗
14、)、有些單片機將 LCD(液晶)驅動電路都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就越強大。甚至單片機廠商還可以根據用戶的要求量身定做,制造出具有自己特色的單片機芯片。 此外,現在的產品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小。現在的許多單片機都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機構成的系統正朝微型化方向發展。( (3) ) 主流與多品種共存主流與多品種共存 現在雖然單片機的品種繁多,各具特色,但仍以 80C51 為核心的單片機占主流,兼容其結構和指令系統的有 PHILIPS 公司的產品,ATMEL 公司的產品和
15、中國臺灣的 Winbond 系列單片機。所以 C8051 為核心的單片機占據了半壁江山。而Microchip 公司的 PIC 精簡指令集(RISC)也有著強勁的發展勢頭,中國臺灣的HOLTEK 公司近年的單片機產量與日俱增,與其低價質優的優勢,占據一定的市場分額。此外還有 MOTOROLA 公司的產品,日本幾大公司的專用單片機。在一定的河南機電高等專科學校畢業論文4時 期內,這種情形將得以延續,將不存在某個單片機一統天下的壟斷局面,走的是依存互補,相輔相成、共同發展的道路。2.2 計算器系統現狀計算器系統現狀計算器一般由運算器、控制器、存儲器、鍵盤、顯示器、電源和一些可選外圍設備及電子配件通過
16、人工或機器設備組成。低檔計算器的運算器、控制器由數字邏輯電路實現簡單的串行運算,其隨機存儲器只有一、二個單元,供累加存儲用。高檔計算器由微處理器和只讀存儲器實現各種復雜的運算程序,有較多的隨機存儲單元以存放輸入程序和數據。鍵盤是計算器的輸入部件,一般采用接觸式或傳感式。為減小計算器的尺寸,一鍵常常有多種功能。顯示器是計算器的輸出部件,有發光二極管顯示器或液晶顯示器等。除顯示計算結果外,還常有溢出指示、錯誤指示等。計算器電源采用交流轉換器或電池,電池可用交流轉換器或太陽能轉換器再充電。為節省電能,計算器都采用CMOS 工藝制作的大規模集成電路(見互補金屬 -氧化物-半導體集成電路),并在內部裝有
17、定時不操作自動斷電電路。計算器可選用的外圍設備有微型打印機、盒式磁帶機和磁卡機等。2.3 簡易計算器系統簡介簡易計算器系統簡介本計算器是以 MCS-51 系列 8051 單片機為核心構成的簡易計算器系統。該系統通過單片機控制,實現對 4*4 鍵盤掃描進行實時的按鍵檢測,并把檢測數據存儲下來。整個計算器系統的工作過程為:首先存儲單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位置,查表得出按鍵值,單片機則對數據進行儲存與相應處理轉換,之后送入數碼管動態顯示。整個系統可分為三個主要功能模塊:功能模塊一,實時鍵盤掃描;功能模塊二,數據轉換為了數碼管顯示;功能模塊三,數碼管動態顯示。基于 51 單片機的簡易
18、計算器5第第 3 三章三章 計算機主要硬件簡介計算機主要硬件簡介3.1 計算器硬件計算器硬件需求需求89C51 單片機一片,按鈕 17 個, 1K 電阻 17 個,22pF 電容兩個,22uF 一個,微型振蕩器一個,3 個 74HC595,4 位共陽極的七段數碼管 3 個,組成 12 位顯示屏,4 個 9012 三極管控制 3 個數碼管模塊的第 1、2、3、4 位的顯示,另外有連線和電阻若干,220V5V 電源適配器一個。89C51 單片機的 P1 口和 P3 口作鍵盤口,16 個端口分別接 16 個按鈕,順序是數字 0-9,小數點,等號, “+-x/”四個運算符號, 1 個復位鍵接在單片機復
19、位端,按下時給單片機復位信號,中斷全部運算清楚全部內存和寄存器,回到單片機啟動初始狀態。12 位數碼管用于顯示當前數值的 10 億位到個位,運算中的最大值不能超過 2 的 32 次方,這是因為程序中的運算中間值采用 long 類型保存的緣故,3.2 MCS-51 系列單片機簡介系列單片機簡介 8051 是 MCS-51 系列單片機的典型產品,以這一代表性的機型進行系統的講解。8051 單片機包含中央處理器、程序存儲器(ROM)、數據存儲器(RAM)、定時/計數器、并行接口、串行接口和中斷系統等幾大單元及數據總線、地址總線和控制總線等三大總線,現在我們分別加以說明: 1.中央處理器中央處理器中央
20、處理器(CPU)是整個單片機的核心部件,是 8 位數據寬度的處理器,能處理 8 位二進制數據或代碼,CPU 負責控制、指揮和調度整個單元系統協調的工作,完成運算和控制輸入輸出功能等操作。 2. 數據存儲器數據存儲器( (RAM) )8051 內部有 128 個 8 位用戶數據存儲單元和 128 個專用寄存器單元,它們是統一編址的,專用寄存器只能用于存放控制指令數據,用戶只能訪問,而不能用于存放用戶數據,所以,用戶能使用的 RAM 只有 128 個,可存放讀寫的數據,運算的中間結果或用戶定義的字型表。 3.程序存儲器程序存儲器( (ROM)8051 共有 4096 個 8 位掩膜 ROM,用于存
21、放用戶程序,原始數據或表格。 4.定時定時/ /計數器計數器( (ROM) ):8051 有兩個 16 位的可編程定時/計數器,以實現定時或計數產生中斷用于控制程序轉向。河南機電高等專科學校畢業論文6 8051 內部結構圖 3-1 5. 并行輸入輸出并行輸入輸出(I/O)(I/O)口口8051 共有 4 組 8 位 I/O 口(P0、 P1、P2 或 P3),用于對外部數據的傳輸。 6. 全雙工串行口全雙工串行口8051 內置一個全雙工串行通信口,用于與其它設備間的串行數據傳送,該行口既可以用作異步通信收發器,也可以當同步移位器使用。 7. 中斷系統中斷系統8051 具備較完善的中斷功能,有兩
22、個外中斷、兩個定時/計數器中斷和一個串行中斷,可滿足不同的控制要求,并具有 2 級的優先級別選擇。 8. 時鐘電路時鐘電路8051 內置最高頻率達 12MHz 的時鐘電路,用于產生整個單片機運行的脈沖時序,但 8051 單片機需外置振蕩電容。單片機的結構有兩種類型,一種是程序存儲器和數據存儲器分開的形式,即哈佛(Harvard)結構,另一種是采用通用計算機廣泛使用的程序存儲器與數據存儲器合二為一的結構,即普林斯頓(Princeton)結構(如下頁圖 3-2) 。INTEL 的MCS-51 系列單片機采用的是哈佛結構的形式,而后續產品 16 位的 MCS-96 系列單片機則采用普林斯頓結構。MC
23、S-51 的引腳說明(如下頁圖 3-3)MCS-51 系列單片機中的 8031、8051 及 8751 均采用 40Pin 封裝的雙列直接DIP 結構,右圖是它們的引腳配置,40 個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4 組 8 位共 32 個 I/O 口,中斷口線與 P3 口線復用。現在我們對這些引腳的功能加以說明。Pin9:RESET/Vpd復位信號復用腳,當 8051 通電,時鐘電路開始工作,在RESET 引腳上出現 24 個時鐘周期以上的高電平,系統即初始復位。初始化后,程序計數器 PC 指向 0000H,P0-P3 輸出口全部為高電平,堆棧指針寫入 07H,其它基于
24、 51 單片機的簡易計算器7專用寄下圖是 MCS-51 系列單片機的內部結構示意圖 3-2。 MCS-51 結構圖 3-2下圖是 8951 單片機引腳示意圖 3-3 雙列直插式封裝引腳圖 3-3存器被清“0” 。RESET 由高電平下降為低電平后,系統即從 0000H 地址開始執行程序。然而,初始復位不改變 RAM(包括工作寄存器 R0-R7)的狀態,8051的初始態。8051 的復位方式可以是自動復位,也可以是手動復位。此外,RESET/Vpd還是一復用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機內部 RAM 的數據不丟失。見下圖 3-4 為兩種復位方式和兩種時鐘方式: 河南機電高等
25、專科學校畢業論文8Pin30:ALE/當訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節。而訪問內部程序存儲器時,ALE 端將有一個 1/6 時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當作一個時鐘向外輸出。更有一個特點,當訪問外部程序存儲器,ALE 會跳過一個脈沖。如果單片機是 EPROM,在編程其間,將用于輸入編程脈沖。 圖 3-4Pin29:當訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC 的 16位地址數據將出現在 P0 和 P2 口上,外部程序存儲器則把指令數據放到 P0 口上,由 CPU 讀入并執行。Pin31:EA/Vpp程序存儲器的內外部
26、選通線,8051 和 8751 單片機,內置有4kB 的程序存儲器,當 EA 為高電平并且程序地址小于 4kB 時,讀取內部程序存儲器指令數據,而超過 4kB 地址則讀取外部指令數據。如 EA 為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內部無程序存儲器的 8031,EA端必須接地。在編程時,EA/Vpp腳還需加上 21V 的編程電壓。3.3 外圍電路設計外圍電路設計本設計外圍電路大致可分為四部分:1振蕩電路。2復位電路。3鍵盤電路。4顯示電路。3.3.1 振蕩電路設計振蕩電路設計振蕩電路如圖 3-5 所示.圖中 X1、X2 分別接單片機的 19 和 18 號腳。時鐘有內部電
27、路產生,定時器件為石英晶體和電容組成的并聯諧振回路,電容 C1、C2 的取之為 30p,Y1 的取值為 12MHz。基于 51 單片機的簡易計算器9振蕩電路圖 3-53.3.2 復位電路設計復位電路設計復位電路如圖 3-6 所示.復位電路圖 3-6圖中的 RST 接單片機的 9 號腳,當按鍵 ac 按下時單片機復位。其中電阻 R2為 1K,電容 C3 為電解性電容取值為 16V/22UF。Vcc 接 5V 電壓。3.3.3 鍵盤電路設計鍵盤電路設計鍵盤電路如圖 3-7 所示.矩陣鍵盤工作原理是。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如
28、P1 口)就可以構成4*4=16 個按鍵。確定矩陣式鍵盤上何鍵被按下,用“行掃描法” 。 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法.判斷鍵盤中有無鍵按下: 將全部行線置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與 4 根行線相交*的 4 個按河南機電高等專科學校畢業論文10鍵之中。若鍵盤電路圖 3-7所有列線均為高電平,則鍵盤中無鍵按下。判斷閉合鍵所在的位置: 在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐
29、行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交*處的按鍵就是閉合的按鍵。把每個鍵都分成水平和垂直的兩端接入,比如說掃描碼是從垂直的入,那就代表那一行所接收到的掃描碼是同一個位,而讀入掃描碼的則是水平,掃描的動作是先輸入掃描碼,再去讀取輸入的值,經過比對之后就可知道是哪個鍵被按下。 3.3.4 數碼管顯示電路設計數碼管顯示電路設計如圖 3-8 三個四位數碼管所示.三個四位數碼管圖 3-8數碼顯示驅動電路 該設計采用 74HC595 芯片作為驅動,以保證數碼管顯示的亮度。在本任務中用 4 位數碼管顯示當前數值的千,百,十,個,由于數碼管個數多,如采用靜態顯示方式,則占用單片機的
30、I/O 口線太多,如果用定時器/計數器的串行移位寄存器工作方式及外接串入并出移位寄存器 74LS164 的方式,則電路復雜。所以,在數碼管個數較多時,常采用動態顯示方式。 如圖所示為基于 51 單片機的簡易計算器11單片機應用系統中的一種數碼管動態顯示電路圖,4 位數碼管的相同段并聯在一起,由一個 8 位 I/O(P1 口)輸出字形碼控制顯示某一字形,每個數碼管的公共端由另外一個 I/O 口(P0 口)輸出的字位碼控制,即數碼管顯示的字形是由單片機 I/O 口輸出的字形碼確定,而哪個數碼管點亮是由單片機 I/O 口輸出的字位碼確定的 8 個數碼管分時輪流循環點亮,在同一時刻只有 1 個數碼管點
31、亮,但由于數碼管具有余輝特性及人眼具有視覺暫留特性,所以適當地選取循環掃描頻率,看上去所有數碼管是同時點亮的,察覺不出閃爍現象。動態顯示方式所接數碼管不能太多,否則會因每個數碼管所分配的實際導通時間太少,使得數碼管的亮度不足。在本任務中,為了簡便,字形碼和字位元碼都沒由加驅動電路,在實際應用中應加驅動電路。數碼管有共陰極和共陽極兩種,對于共陽數碼管,字形驅動輸出 0 有效,字位驅動輸出 1 有效;而對于共陰數碼管則相反,即:字形驅動輸出 1 有效,字位驅動輸出 0 有效。3.4 硬件原理圖硬件原理圖硬件原理圖如圖 3-9 所示.單片機的 p0.0 口接 74HC595 芯片的串行輸入端 DS
32、端,74HC595 的并行輸出端接數碼管的公共端。P2.0-p2.3 接三極管控制數碼管段選。P1 接矩陣鍵盤。硬件原理圖 3-9河南機電高等專科學校畢業論文12第第 4 4 章章 計算器軟件系統設計計算器軟件系統設計 4.1 系統模塊圖系統模塊圖本系統有四個模塊構成:顯示模塊、輸入模塊、電源模塊、運算模塊。如下圖 4-1 所示.系統模塊圖 4-14.2 系統流程圖系統流程圖本任務由 P1 口輸出字形碼,P0 口輸出字位碼。先將存放于 30H 單元的數值個位七段碼由 P1 口輸出,同時 P0 口輸出使數值個位顯示數碼管點亮的字位碼。由于采用的是共陽數碼管,所以只有該位數碼管對應的 P0.0 為
33、 1,其他位 P0.1-P0.3 位 0,點亮延時 10MS。如下頁系統流程圖 4-2 所示。4.3 計算器主程序設計計算器主程序設計4.3.1 計算器主程序設計計算器主程序設計主程序調用按鍵子程序,檢查哪個鍵按下,用 switch 結構分數步來組成一個運算式,比如頭一個按下數字,存入 f1 變量,如果按負號就存入 fh1,否則 fh1 是正一,下面如果繼續按數字,就按照 F1=fh1xf1x10+數字,更新 f1 變量,然后如果按加減乘除符號,就存入 yunsuan 變量,可以繼續按運算符號,就存入 yunsuan1變量,之所以這樣是因為按減號既可能確實是在按減號也可能是想按后面數字的負號,
34、直到按下數字,才肯定是想輸入第二個數字,其符號存入 fh2,這個數字存入 f2,繼續按數字,就按照 f2=f2x10+數字來更新 f2。等到按等號或者運算符號時,就按 y=fh1*f1(+-x/)fh2*f2 來計算最后的值。無論輸入什么數字都要存進一個緩沖區,主程序最后有一些專門代碼把這個緩沖區的內容翻譯成將要輸往 74HC595 的數據放在顯示緩沖區中,最后的運算值也有一個子程序翻譯成將要輸往 74HC595 的數據放在顯示緩沖區中。在程序開始時,初始化程序設定了 T1 中斷開始執行,每 0.5 毫秒中斷程序執基于 51 單片機的簡易計算器13行一次,中斷程序的內容就是把顯示緩沖區的內容送
35、到第一個 74HC595 的 SER端子,同時發送脈沖到每一個 74HC595 的 SCK 端子,用上面提到的串入并出的方法 把內容顯示出來。 系統流程圖 4-24.3.2 存儲單元分配存儲單元分配 數碼管采用動態顯示方式,P2 口的 0,1,2.3 端口接 4 個三級管按從高到低的順河南機電高等專科學校畢業論文14序分別讓數碼管單元的 4 位分別導通,比如第一次三個數碼管模塊的第 4 位導通,第二次關第 4 位讓第 3 位導通,第三次關第 3 位,讓第 2 位導通,最后一次關第2 位讓第 1 位導通,然后循環往復,掃描周期 1 毫秒。那么每次就有三個字亮,比如三個數碼管模塊的第四位亮,這三個
36、數碼管各有內容顯示,怎么決定這個顯示值呢,是這樣:每個數碼管的內容由一個字節決定,三個數碼管由三個字節決定,數碼管單元是接在 74HC595 移位寄存器上的,三個數碼管單元接三個 74HC595,第一個 74HC595 的 SER 端子接 P0 第一個端口,然后第一個 74HC595 的 H端子接第 2 個 74HC595 的 SER 端子,第 2 個74HC595 的 H端子接第 3 個 74HC595 的 SER 端子,每個 74HC595 的脈沖端口SCK 都接在 P0 的第 2 個端口,這個端口不停的發出移位脈沖,第一批 8 個脈沖會把第一個 74HC595 的 SER 的數據移動到第
37、一個 74HC595 的緩沖區,第 2 批 8個脈沖把第二批新數據移動到第一個 74HC595 的緩沖區,同時把第一個74HC595 的緩沖區數據移動到第二個 74HC595 的緩沖區,第三批 8 個脈沖把SER 新數據移動到第一個 74HC595 的緩沖區,同時把第一個 74HC595 緩沖區的數據移動到第二個 74HC595 的緩沖區,而第二個 74HC595 緩沖區的數據被移動到了第三個 74HC595 緩沖區。這樣不停循環,需要顯示的數據由單片機送往第一個 74HC595 的 SER 端子,每 24 個脈沖后這個要顯示的數據出現在 74HC595 的緩沖區,然后 24 個數據從三個 7
38、4HC595 同時輸出到數碼管,這樣串行輸入并行輸出來完成數字顯示。4.4 計算器子程序設計計算器子程序設計4.4.1 輸入程序設計輸入程序設計該模塊利用 17 的小按鍵,提供 0-9, +、-、*、/、 =、小數點、清零鍵。再利用數碼管,對于即時按下的鍵和結果進行顯示。向列掃描碼逐列輸出低電平,然后從行碼地址讀回。如果有鍵按下,則相應的行值應為低,如果無鍵按下,由于上拉電阻的作用,行碼為高。這樣可以通過輸出的列碼和讀取的行碼判斷按下的是什么鍵,在判斷有鍵按下后,要有一定的延時,防止鍵盤抖動矩陣按鍵掃描程序是一種節省 IO 口的方法,按鍵數目越多節省 IO 口就越可觀,思路:先判斷某一列(行)
39、是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程序的寫法上,采用了最簡單的方法,使得程序效率最高。本程序中,如果檢測到某鍵按下了,就不再檢測其它的按鍵,這完全能滿足絕大多數需要,又能節省大量的 CPU 時間。本鍵盤掃描程序的優點在于:不用專門的按鍵延時程序,提高了 CPU 效率,基于 51 單片機的簡易計算器15也不用中斷來掃描鍵盤,節省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用 CPU 時最短,不論有鍵按下或者無鍵按下都可以在很短的時間完成一次掃描。本鍵盤掃描子程序名叫 key,每次要掃描時用 lcall key 調用即可。流程圖如圖 4-3 所示.鍵盤識別程序流程圖 4-3
40、4.4.2 運算程序設計運算程序設計AT89c 單片機是一塊芯片中集成了 CPU、RAM、ROM、定時器、計數器、和多功能 I/O 等一臺計算器所需要的基本功能部分。如果按功能劃分,它由如下功能部分組成,即微處理器(CPU) 、數據處理器(RAM) 、程序處理器(ROM/CPROM) 、并行 I/O 口、串行口、定時器、計數器、中斷系統及特殊功能寄存器(SFR) 。單片機是靠程序運行的,并且可以修改。通過不同的程序實現不同的功能,尤其是特殊一些功能,通過使用單片機編寫的程序可以凸顯高智能、河南機電高等專科學校畢業論文16高效率以及高可靠性!因此我們采用單片機作為計算器的主要功能部件,可以很快實
41、現運算功能。計算器輸入數字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會很簡單,但是會占用到很多的 I/O 資源,因此在很多情況下都不采用這種方式(如圖 4-4) 。但因為實體資源有限不得已而為之,但不會影響其功能。運算程序圖 4-44.4.3 顯示程序設計顯示程序設計利用數碼管動態顯示的方法,設置顯示循環次數,讓 3 個四位數碼管從左到右依次顯示,之間要調用延時子程序,但延時時間小于人的視覺暫留。顯示程序流程圖如下頁圖 4-5 如示 .1. 數碼管顯示數據轉換子程序數碼管顯示數據轉換子程序 由于數值單元存放的是二進制數,而用戶熟悉的是十進制數,所以應將數值單元中的
42、二進制轉換為十進制數,即 BCD 碼。要通過數碼管顯示出當前數值,還必須將 BCD 碼進一步轉換為七段碼,轉換的最終結果數據存放于顯示緩沖區30H-33H 單元中,其中 30H 單元存放數值的個位七段碼,31H 單元存放數值的十位七基于 51 單片機的簡易計算器17段碼,32H 單元存放數值的百位七段碼,33H 單元存放數值的千位七段碼。2. 數碼管動態顯示子程序數碼管動態顯示子程序本任務由 P1 口輸出字形碼,P0 口輸出字位碼。先將存放于 30H 單元的數值個位七段碼由 P1 口輸出,同時 P0 口輸出使數值個位顯示數碼管點亮的字位碼。由于采用的是共陽數碼管,所以只有該位數碼管對應的 P0
43、.0 為 1,其他位 P0.1-P0.3 位 0,點亮延時 10MS。顯示程序流程圖 4-5河南機電高等專科學校畢業論文18基于 51 單片機的簡易計算器19第第 5 5 章章 結論與展望結論與展望5.1 結語結語課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新日異,單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發技術是十分重要的。回顧起此次單片機課程設計,我仍感慨頗多,的確,從選題到定稿,從理論到實踐,可以說得是苦
44、多于甜,但是可以學到很多很多的的東西。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。通過這次課程設計使我得到了一次用專業知識、專業技能分析和解決問題全面系統的鍛煉。使我們在單片機的基本原理、單片機應用系統開發過程,以及在常用編程設計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格的應用型人才打下良好的基礎。5.2 不足與展望不足與展望 通過此次畢業設計我想學到了很多在課堂中無法學到的應用類知識,使我深刻的認識到自己知識范
45、圍的狹窄和匱乏也真正讓我認識到實際操作的重要性。本次畢業設計在完成過程中我請教了輔導老師和很多在單片機方面優秀的同學,我領會了我們之間存在的差距以及我在單片機方面的欠缺。同時,在翻閱輔導資料的過程中我驚嘆于作者思維的嚴密性和知識的廣泛性,令我在感慨過程中也讓我堅定了學好這門學科的決心,校正了正確的方向。在以后的工作學習中定要向前輩和同事多學習、多發問,我相信經過長期的努力和學習我也定能成為電氣方面的佼佼者。河南機電高等專科學校畢業論文20參考文獻參考文獻1 徐愛鈞 智能化測量控制儀表原理與設計(第二版) 北京航天航空大學出版社,2004.9 2 孫育才等MCS-51 系列單片微型計算機及其應用
46、(第 4 版) 東南大學出版社,2004,33 李萍 等智能儀器實驗指導書大連交通大學,2007.9基于 51 單片機的簡易計算器21 附錄附錄程序源代碼程序源代碼#include #include #include #include float ptwei=10.0;/小數位計算:1/10,1/100,1/1000uint8 pt=0;/有沒有輸入小數int8 fh1=1;/第一個數的符號int8 fh2=1;/第二個數的符號float f1=0,f2=0,y1=0;uint8 yunsuan=0,yunsuan1=0;/運算:0-null,1-+,2-,3-*,4-/uint8 key=N
47、;/按鍵輸入,N表示沒有輸入,其他可能是+-*/0-9.=uint8 i=0,j=0,k=0;uint8 zongweishu=0;/輸入的數字的位數uint8 step=1;uint8 tmpSmg13=12,12,11,10,12,12,12,12,12,12,12,12;/這是顯示緩沖,要顯示的內容,0-9表示0-9,10表示小數點/11表示負號,12表示不要顯示,k是index,13-Euint8 daozhuan13=12,12,12,12,12,12,12,12,12,12,12,12;/uint8 tmpSmg13=0,1,2,3,4,5,6,7,8,9,10,11,12;uin
48、t8 Smg43;/顯示區,顯示內容編碼在此,直接送往74hc595.i,j是indexuint8 error=0;/0,1,2,3,4,5,6,7,8,9,buyao xiaoshudian=10,-=11,no display=12,E=13code uint8 shumazi14=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0,0 xBF,0 xFF,0 x86;/共陽極數碼管/在這個計算器,有以下數碼管12個,四個一組,共三組,我用四個三極管控制每個數碼管的1234位/每個數字的內碼是一個字節,每個位對應一個發
49、光二極管,7-0位分別是h-a,移位時從高位開始移動,就是從h開始河南機電高等專科學校畢業論文22/一個脈沖移動移位,8個脈沖把h-a移動到595的底層8個D觸發器,然后等待一個中斷等電壓穩定,再打開595/上層D觸發器,數據并行輸出/*/void intT0(void) interrupt 1static unsigned int t1=0;static unsigned char hang=0,lie=0,tmp=0;static unsigned char maichongshu=0;static unsigned char xianshiwei=0;/static unsigned c
50、har waitabit=10;ET1=0;t1+;if(t1=1)/0.5mst1=0;if(SCK & (maichongshu=0 & lie=0) | (maichongshu=8 & lie=1)| (maichongshu=16 & lie=2)tmp=Smghanglie;lie+;if(maichongshu=23)SCK=SCK;/脈沖在所有數字移到595芯片第一排D觸發器輸出腳時,要停止一下,以便/正確輸出到第二排D觸發器,就是說maichongshu大于7時基于 51 單片機的簡易計算器23暫停一下if(!SCK & maichon
51、gshu2 & maichongshu=25)maichongshu=0;lie=0;hang+;if(xianshiwei=0)P2_0=1;P2_1=1;P2_2=1;P2_3=0;if(xianshiwei=1)P2_0=1;P2_1=1;P2_2=0;P2_3=1;if(xianshiwei=2)P2_0=1;P2_1=0;P2_2=1;P2_3=1;if(xianshiwei=3)P2_0=0;P2_1=1;P2_2=1;P2_3=1;河南機電高等專科學校畢業論文24xianshiwei+;if(xianshiwei=4)xianshiwei=0;if(hang=4)hang
52、=0;RCK=1;ET1=1;main()uint8 displayt=0,displayp=0,displayq=0,displaypot=0,daozhuanI=0;/最后面要顯示的字符內碼送緩沖區用InitShuma();while(1)if(error=0)key=funckey();switch(step)case 1:if(key=-)fh1=-1;zongweishu+;if(zongweishu=13)cuowuxianshi();error=1;tmpSmgk=11;k+;step=2;if(key=+)fh1=1;if(key=1 | key=2 | key=3 | key
53、=4 | key=5 | key=6 | key=7 | key=8 | key=9)f1=key-48;基于 51 單片機的簡易計算器25zongweishu+;tmpSmgk=key-48;k+;if(zongweishu=13 | k12)cuowuxianshi();error=1;step=2;if(key=.)pt=1;tmpSmg0=10;tmpSmg1=0;k=2;step=2;break;case 2:if(pt=0)if(key=1 | key=2 | key=3 | key=4 | key=5 | key=6 | key=7 | key=8 | key=9 | key=0
54、)f1=f1*10+key-48;zongweishu+;k+; if(key=.) pt=1;k+;if(zongweishu=13 | k12)cuowuxianshi();error=1;break;if(key=48 & key=48 & key=57)tmpSmg0=key-48;if(key=.)tmpSmg0=10;elseif(ptwei=48 & key=13 | k12)cuowuxianshi();error=1;break;shuziqianyi(k);tmpSmg0=key-48;if(key=+ | key=- | key=* | key=/
55、)pt=0;k=0;zongweishu=0;ptwei=10.0;if(key=+)yunsuan=1;if(key=-)yunsuan=2;if(key=*)yunsuan=3;if(key=/)yunsuan=4;f1=fh1*f1;step=4;break;case 3:if(key=1 | key=2 | key=3 | key=4 | key=5 | key=6 | key=7 | key=8 | key=9)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpSmg4=tmpSmg5=tmpSmg6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg1
56、0=tmpSmg11=tmpSmg12=12;f1=key-48;zongweishu+;基于 51 單片機的簡易計算器27tmpSmgk=key-48;k+;if(zongweishu=13 | k12)cuowuxianshi();error=1;break;step=2;if(key=.)pt=1;tmpSmg0=10;tmpSmg1=0;k=2;step=2;if(key=+ | key=- | key=* | key=/)pt=0;k=0;zongweishu=0;ptwei=10.0;if(key=+)yunsuan=1;if(key=-)yunsuan=2;if(key=*)yu
57、nsuan=3;if(key=/)yunsuan=4;step=4;break;case 4:if(key=1 | key=2 | key=3 | key=4 | key=5 | key=6 | key=7 | key=8 | key=9)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpSmg4=tmpSmg5=tmpSmg6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg10=tmpSmg11=tmpSmg12=12;f2=key-48;zongweishu+;tmpSmgk=key-48;k+;if(zongweishu=13 | k12)cuowuxi
58、anshi();error=1;step=6;if(key=.)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpSmg4=tmpSmg5=tmpSm河南機電高等專科學校畢業論文28g6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg10=tmpSmg11=tmpSmg12=12;pt=1;tmpSmg0=10;tmpSmg1=0;k=2;step=6;if(key=+ | key=- | key=* | key=/)pt=0;k=0;zongweishu=0;ptwei=10.0;if(key=+)yunsuan1=1;if(key=-)yunsuan1=2
59、;if(key=*)yunsuan1=3;if(key=/)yunsuan1=4;step=5;break;case 5:if(key=+ | key=- | key=* | key=/)yunsuan=yunsuan1;if(key=+)yunsuan1=1;if(key=-)yunsuan1=2;if(key=*)yunsuan1=3;if(key=/)yunsuan1=4;if(key=1 | key=2 | key=3 | key=4 | key=5 | key=6 | key=7 | key=8 | key=9)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpS
60、mg4=tmpSmg5=tmpSmg6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg10=tmpSmg11=tmpSmg12=12;f2=key-48;zongweishu+;tmpSmgk=key-48;k+;if(zongweishu=13 | k12)cuowuxianshi();error=1;step=6;基于 51 單片機的簡易計算器29if(key=.)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpSmg4=tmpSmg5=tmpSmg6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg10=tmpSmg11=tmpSmg12=12;pt=1;tmpSmg0=10;tmpSmg1=0;k=2;step=6;break;case 6:if(pt=0)if(key=1 | key=2 | key=3 | key=4 | key=5 | key=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- lng罐車安全管理制度
- sap生產訂單管理制度
- 公司樓道垃圾桶管理制度
- 江蘇債權債務管理制度
- 《漢書五行志》測試題帶答案
- 治療尿毒癥的講解講課件
- 2025年農業與食品行業農產品加工產業政策影響報告
- 2025年農業新型經營主體培育與市場拓展策略研究
- 2025年農業物聯網在精準種植中的農業物聯網設備安全性評估與認證報告001
- 骨折健康宣教講課件
- 《腦室內出血》課件
- 國開2023秋《現-代-管-理-專-題》北京-第四次作業參考答案
- 長城招聘的心理測評答案
- 中小學食堂工作從業人員安全培訓會議記錄(40學時全)
- 酒店保潔服務投標方案(完整技術標)
- 中山市公安局三鄉分局輔警招聘考試題庫2023
- 穴位埋線療法療法
- 裝飾裝修工程售后服務具體措施
- 16J607-建筑節能門窗
- 小學二年級數學下冊無紙化測試題
- 原材料安全庫存管理制度
評論
0/150
提交評論