2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、<p><b>  目 錄</b></p><p>  摘 要 …………………………………………………………I</p><p>  第一章、 概述 ………………………………………………01</p><p>  1.1 單片機簡介 ………………………………………………01</p><p>  1

2、.2  單片機發(fā)展概述 …………………………………………02</p><p>  第二章、 硬件設計 …………………………………………04</p><p>  2.1 AT89c51介紹 ……………………………………………04</p><p>  2.2 鍵盤電路的設計 ………………………………………07&l

3、t;/p><p>  2.3 顯示電路的設計 ………………………………………08</p><p>  2.4 其他電路設計 …………………………………………09</p><p>  第三章、 軟件設計 …………………………………………10</p><p>  3.1 主程序的設計 ………

4、…………………………………10</p><p>  3.2 顯示、讀鍵模塊的設計 ………………………………12</p><p>  3.3 其他內(nèi)容說明 …………………………………………14</p><p>  第四章、 調(diào)試與仿真 ………………………………………15</p><p>  4.1 Ke

5、il C51單片機軟件開發(fā)系統(tǒng) ………………………15</p><p>  4.2 proteus的操作 ………………………………………………16</p><p>  總 結(jié) …………………………………………………………Ⅱ</p><p>  參考文獻 ……………………………………………………Ⅲ</p><p&

6、gt;  附 錄 …………………………………………………………Ⅳ</p><p>  第一章、 概 述 </p><p><b>  1.1單片機簡介</b></p><p>  單片機是一種集成電路芯片。它采用超大規(guī)模技術(shù)將具有數(shù)據(jù)處理能力的微處理器(CPU)、存儲器(含程序存儲器ROM和數(shù)據(jù)存儲器RAM)、輸入、輸出接口電路(I/O接

7、口)集成在同一塊芯片上,構(gòu)成一個即小巧又很完善的計算機硬件系統(tǒng),在單片機程序的控制下能準確、迅速、高效地完成程序設計者事先規(guī)定的任務。所以說,一片單片機芯片就具有了組成計算機的全部功能。</p><p>  由此來看,單片機有著一般微處理器(CPU)芯片所不具備的功能,它可單獨地完成現(xiàn)代工業(yè)控制所要求的智能化控制功能,這是單片機最大的特征。</p><p>  然而單片機又不同于單板機(一

8、種將微處理器芯片、存儲器芯片、輸入輸出接口芯片安裝在同一塊印制電路板上的微型計算機),單片機芯片在沒有開發(fā)前,它只是具備功能極強的超大規(guī)模集成電路,如果對它進行應用開發(fā),它便是一個小型的微型計算機控制系統(tǒng),但它與單板機或個人電腦(PC機)有著本質(zhì)的區(qū)別。</p><p>  單片機的應用屬于芯片級應用,需要用戶(單片機學習者與使用者)了解單片機芯片的結(jié)構(gòu)和指令系統(tǒng)以及其它集成電路應用技術(shù)和系統(tǒng)設計所需要的理論和技

9、術(shù),用這樣特定的芯片設計應用程序,從而使該芯片具備特定的功能。</p><p>  不同的單片機有著不同的硬件特征和軟件特征,即它們的技術(shù)特征均不盡相同,硬件特征取決于單片機芯片的內(nèi)部結(jié)構(gòu),用戶要使用某種單片機,必須了解該型產(chǎn)品是否滿足需要的功能和應用系統(tǒng)所要求的特性指標。這里的技術(shù)特征包括功能特性、控制特性和電氣特性等等,這些信息需要從生產(chǎn)廠商的技術(shù)手冊中得到。軟件特征是指指令系統(tǒng)特性和開發(fā)支持環(huán)境,指令特性即

10、我們熟悉的單片機的尋址方式,數(shù)據(jù)處理和邏輯處理方式,輸入輸出特性及對電源的要求等等。開發(fā)支持的環(huán)境包括指令的兼容及可移植性,支持軟件(包含可支持開發(fā)應用程序的軟件資源)及硬件資源。要利用某型號單片機開發(fā)自己的應用系統(tǒng),掌握其結(jié)構(gòu)特征和技術(shù)特征是必須的。</p><p>  單片機控制系統(tǒng)能夠取代以前利用復雜電子線路或數(shù)字電路構(gòu)成的控制系統(tǒng),可以以軟件控制來實現(xiàn),并能夠?qū)崿F(xiàn)智能化,現(xiàn)在單片機控制范疇無所不在,例如通

11、信產(chǎn)品、家用電器、智能儀器儀表、過程控制和專用控制裝置等等,單片機的應用領域越來越廣泛。</p><p>  誠然,單片機的應用意義遠不限于它的應用范疇或由此帶來的經(jīng)濟效益,更重要的是它已從根本上改變了傳統(tǒng)的控制方法和設計思想。是控制技術(shù)的一次革命,是一座重要的里程碑。</p><p>  1.2 單片機發(fā)展概述</p><p>  1946年第一臺電子計

12、算機誕生至今,依靠微電子技術(shù)和半導體技術(shù)的進步,從電子管——晶體管——集成電路——大規(guī)模集成電路,使得計算機體積更小,功能更強。特別是近20年時間里,計算機技術(shù)獲得飛速的發(fā)展,計算機在工農(nóng)業(yè),科研,教育,國防和航空航天領域獲得了廣泛的應用,計算機技術(shù)已經(jīng)是一個國家現(xiàn)代科技水平的重要標志。</p><p>  單片機誕生于20世紀70年代,象Fairchild公司研制的F8單片微型計算機。所謂單片機是利用大規(guī)模集成

13、電路技術(shù)把中央處理單元(Center Processing Unit,也即常稱的CPU)和數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM)及其他I/O通信口集成在一塊芯片上,構(gòu)成一個最小的計算機系統(tǒng),而現(xiàn)代的單片機則加上了中斷單元,定時單元及A/D轉(zhuǎn)換等更復雜、更完善的電路,使得單片機的功能越來越強大,應用更廣泛。</p><p>  20世紀70年代,微電子技術(shù)正處于發(fā)展階段,集成電路屬于中規(guī)模發(fā)展時期,各種新材料新

14、工藝尚未成熟,單片機仍處在初級的發(fā)展階段,元件集成規(guī)模還比較小,功能比較簡單,一般均把CPU、RAM有的還包括了一些簡單的I/O口集成到芯片上,象Fairchild公司就屬于這一類型,它還需配上外圍的其他處理電路方才構(gòu)成完整的計算系統(tǒng)。類似的單片機還有Zilog公司的Z80微處理器。</p><p>  1976年INTEL公司推出了MCS-48單片機,這個時期的單片機才是真正的8位單片微型計算機,并推向市場。它

15、以體積小,功能全,價格低贏得了廣泛的應用,為單片機的發(fā)展奠定了基礎,成為單片機發(fā)展史上重要的里程碑。</p><p>  在MCS-48的帶領下,其后,各大半導體公司相繼研制和發(fā)展了自己的單片機,象Zilog公司的Z8系列。到了80年代初,單片機已發(fā)展到了高性能階段,象INTEL公司的MCS-51系列,Motorola公司的6801和6802系列,Rokwell公司的6501及6502系列等等,此外,日本的著名電

16、氣公司NEC和HITACHI都相繼開發(fā)了具有自己特色的專用單片機。</p><p>  80年代,世界各大公司均競相研制出品種多功能強的單片機,約有幾十個系列,300多個品種,此時的單片機均屬于真正的單片化,大多集成了CPU、RAM、ROM、數(shù)目繁多的I/O接口、多種中斷系統(tǒng),甚至還有一些帶A/D轉(zhuǎn)換器的單片機,功能越來越強大,RAM和ROM的容量也越來越大,尋址空間甚至可達64kB,可以說,單片機發(fā)展到了一個全

17、新階段,應用領域更廣泛,許多家用電器均走向利用單片機控制的智能化發(fā)展道路。</p><p>  1982年以后,16位單片機問世,代表產(chǎn)品是INTEL公司的MCS-96系列,16位單片機比起8位機,數(shù)據(jù)寬度增加了一倍,實時處理能力更強,主頻更高,集成度達到了12萬只晶體管,RAM增加到了232字節(jié),ROM則達到了8kB,并且有8個中斷源,同時配置了多路的A/D轉(zhuǎn)換通道,高速的I/O處理單元,適用于更復雜的控制系統(tǒng)

18、。</p><p>  九十年代以后,單片機獲得了飛速的發(fā)展,世界各大半導體公司相繼開發(fā)了功能更為強大的單片機。美國Microchip公司發(fā)布了一種完全不兼容MCS-51的新一代PIC系列單片機,引起了業(yè)界的廣泛關(guān)注,特別它的產(chǎn)品只有33條精簡指令集吸引了不少用戶,使人們從INTEL的111條復雜指令集中走出來。PIC單片機獲得了快速的發(fā)展,在業(yè)界中占有一席之地。</p><p>  隨后

19、更多的單片機種蜂擁而至,MOTOROLA公司相繼發(fā)布了MC68HC系列單片機,日本的幾個著名公司都研制出了性能更強的產(chǎn)品,但日本的單片機一般均用于專用系統(tǒng)控制,而不象INTEL等公司投放到市場形成通用單片機。例如NEC公司生產(chǎn)的uCOM87系列單片機,其代表作uPC7811是一種性能相當優(yōu)異的單片機。MOTOROLA公司的MC68HC05系列其高速低價等特點贏得了不少用戶。</p><p>  Zilog公司的Z

20、8系列產(chǎn)品代表作是Z8671,內(nèi)含BASIC Debug解釋程序極大地方便用戶。而美國國家半導體的COP800系列單片機則采用先進的哈佛結(jié)構(gòu)。ATMEL公司則把單片機技術(shù)與先進的Flash存儲技術(shù)完美地結(jié)合起來,發(fā)布了性能相當優(yōu)秀的AT89系列單片機。包括中國的臺灣HOLTEK和WINBOND等公司也紛紛加入了單片機發(fā)展行列,憑著他們廉價的優(yōu)勢,分享一杯美羹。</p><p>  1990年美國INTEL公司推出

21、了80960超級32位單片機引起了計算機界的轟動,產(chǎn)品相繼投放市場,成為單片機發(fā)展史上又一個重要的里程碑。</p><p>  此期間,單片機園地里,單片機品種異彩紛呈,爭奇斗艷。有8位、16位甚至32位機,但8位單片機仍以它的價格低廉、品種齊全、應用軟件豐富、支持環(huán)境充分、開發(fā)方便等特點而占著主導地位。而INTEL公司憑著他們雄厚的技術(shù),性能優(yōu)秀的機型和良好的基礎,目前仍是單片機的主流產(chǎn)品。只不過是九十年代中期

22、,INTEL公司忙著開發(fā)他們個人電腦微處理器,已沒有足夠的精力繼續(xù)發(fā)展自己創(chuàng)導的單片機技術(shù),而由PHILIPS等公司繼續(xù)發(fā)展C51系列單片機。</p><p><b>  第二章、 硬件設計</b></p><p>  簡易數(shù)字計算器系統(tǒng)硬件設計主要包括:AT89c51芯片,鍵盤電路,顯示電路以及其他輔助電路。下面分別進行設計。</p><p>

23、;  2.1 AT89c51介紹</p><p>  在該課程設計中,主要用到一個AT89c51芯片,作為該設計的主要部分。下面將對這兩個芯片原理及功能做已詳細介紹和說明。AT89C51芯片外形結(jié)構(gòu)和引腳分布如圖2-1所示:</p><p>  圖2-1:AT89C51芯片外形結(jié)構(gòu)和引腳分布圖</p><p>  芯片AT89c51的外形結(jié)構(gòu)和引腳圖如2—1所示。

24、AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提

25、供了一種靈活性高且價廉的方案。</p><p><b>  主要特性:</b></p><p>  8051 CPU與MCS-51 兼容</p><p>  4K字節(jié)可編程FLASH存儲器(壽命:1000寫/擦循環(huán)) 全靜態(tài)工作:0Hz-24KHz 三級程序存儲器保密鎖定 128*8位內(nèi)部RAM 32條可編程I/O線 兩個16位定

26、時器/計數(shù)器 5個中斷源 可編程串行通道 低功耗的閑置和掉電模式</p><p>  片內(nèi)振蕩器和時鐘電路</p><p><b>  2.管腳說明</b></p><p>  VCC:供電電壓(圖中未畫出)</p><p><b>  GND:接地。 </b></p><

27、;p>  P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉

28、為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,

29、P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。</p><p>  2.2 鍵盤電路的設計 </p><p>  鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個以上)和專用驅(qū)動芯片的組合,當按下某個按鍵時,它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預。通用計算

30、機使用的標準鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口芯片HD7279均可以組成編碼鍵盤,同時還可以兼顧數(shù)碼管的顯示驅(qū)動,其相關(guān)的接口電路和接口軟件均可在芯片資料中得到。當系統(tǒng)功能比較復雜,按鍵數(shù)量很多時,采用編碼鍵盤可以簡化軟件設計。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不太多(20個以內(nèi)),為了降低成本和簡化電路通常采用非編碼鍵盤。非編碼鍵盤的接口電路有設計者根據(jù)需要自行決定,按鍵信息通過接口軟件來獲取。 &

31、lt;/p><p>  本課題需要的是16個按鍵,故選擇用非編碼鍵盤,為了減少所占用的端口,由P1口采用4*4矩陣式鍵盤。具體電路連接如圖2-2所示: </p><p>  圖2-2 數(shù)字輸入鍵盤</p><p>  2.3 顯示電路的設計 </p><p>  當系統(tǒng)需要顯示少量數(shù)據(jù)時,采用LED數(shù)碼管進行顯示是一種經(jīng)濟實用的方法。數(shù)碼管顯示

32、有靜態(tài)顯示和動態(tài)顯示兩種方法。為了減少端口的使用,故選擇靜態(tài)顯示。 電路如圖2-3所示:</p><p>  圖2-3八位數(shù)碼管顯示</p><p>  LED數(shù)碼管顯示塊是由發(fā)光二極管顯示字段的顯示器件。在單片機應用中通常使用七段LED。這種顯示塊有共陰極和共陽極兩種,如圖是它的管腳配置 ,本設計采用的是共陰極接法 。 </p><p>  2.4

33、其他電路設計</p><p>  1. 復位、時鐘電路設計</p><p>  MCS-51單片機芯片內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。</p><p>  當使用內(nèi)部振蕩電路時,XTAL1.XTAL2引腳外接石英晶體和微調(diào)電容,如圖3—3所示,圖中C2.C3大小一般為30PF。還加了復位/備用電源

34、引腳的接線方法,任何單片機在工作之前都要進行復位,以便CPU以及其他功能部件都處于一個確定的初始化狀態(tài),并從這個狀態(tài)開始工作,也就是程序開始執(zhí)行之前,單片機做好準備工作。如何進行復位呢?只用在單片機的RST引腳上保持兩個機器周期(24個時鐘周期)的高電平即可對單片機實現(xiàn)復位操作。</p><p>  當主電源Vcc發(fā)生掉電或者是電壓降低到電平規(guī)定值時,VPD上外接的備用電源自動啟用,為單片機內(nèi)部RAM提供電源,以

35、保護片內(nèi)RAM中的信息不丟失,使系統(tǒng)在恢復上電后能正常運行。</p><p>  圖2-4復位電路和時鐘電路</p><p>  2.多位數(shù)碼管電路顯示的驅(qū)動電路</p><p>  單片機應用中只有一位的的數(shù)字顯示是不常見的,即要同時驅(qū)動多個數(shù)碼管顯示,就必須要同時讓多個數(shù)碼管加上各自不同的選片段,這個屬于靜態(tài)顯示。</p><p>  所

36、謂靜態(tài)顯示,就是每一個顯示器,都要占用單獨的具有封鎖功能的I/O接口用于筆畫字段形代碼,單片機只要把顯示的字形代碼發(fā)送到接口電路,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼,因此,使用這種方法單片機中CPU的開銷小,可以提高單獨鎖存的I/O接口電路很多,這里以常用的串并轉(zhuǎn)化電路74LS164為例介紹一種常用靜態(tài)顯示電路。</p><p>  圖2-5五位數(shù)碼管靜態(tài)顯示接法</p><p>  

37、如圖2-5所示,5片74LS164首尾相串,而時鐘端接在一起,這樣,當輸入8個脈沖時,從單片機RXD端輸出的數(shù)據(jù)就進入到第一個74LS164中了,當?shù)诙€8個脈沖到來時,這個數(shù)據(jù)就進入了第二個片74LS164,新的數(shù)據(jù)則進入了第一個74LS164。這樣,當?shù)谖鍌€脈沖完成后,首次送出的數(shù)據(jù)被送入到最左面的74LS164中,其他數(shù)據(jù)依次出現(xiàn)在第一、第二、第三、第四片74LS164中。入口:把要顯示的數(shù)分別放在顯示緩沖區(qū)60H-64H共五個單

38、元中,并且分別對應五個數(shù)碼管LED1-LED4。出口:蔣預置在顯示緩沖區(qū)中的五個數(shù)組成相應的現(xiàn)實字形碼,然后輸出到顯示器中顯示。</p><p><b>  第三章、 軟件設計</b></p><p>  在數(shù)字計算器的軟件規(guī)劃要求下,簡易計算器的程序主要包括以下功能模塊:(1)    主模塊,為系統(tǒng)的初始化。(2)  

39、; 顯示與讀鍵模塊,分為顯示子程序,判鍵程序段、運算操作子程序等部分; </p><p><b>  主程序的設計</b></p><p>  圖3-1 主程序流程圖</p><p>  主程序主要是用來進行初始化的,調(diào)用其他子程序,清空各個標志位,清空緩存區(qū),讀取鍵碼,判斷功能,在LED上作出回應,主程序流程圖如圖4—1所示。<

40、;/p><p> ?。?)數(shù)字送顯示緩沖程序設計</p><p>  簡易計算器所顯示的數(shù)值最大位三位。要顯示數(shù)值,先判斷數(shù)值大小和位數(shù),如果是超過三位或大于255,將不顯示數(shù)字??芍匦螺斎霐?shù)字,再次計算。</p><p>  (2)運算程序的設計</p><p>  首先初始化參數(shù),送LED低位顯示“0”,高位不顯示。然后掃描鍵盤看是否有鍵輸入

41、,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是功能鍵,是數(shù)值鍵則送LED顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運算鍵,若是“=”則計算最后結(jié)果并送LED顯示,若是運算鍵則保存相對運算程序的首地址。</p><p>  3.2 顯示、讀鍵模塊的設計</p><p>  1. LED顯示程序設計</p><p>  LED顯示器由七段發(fā)光二

42、極管組成,排列成8字形狀,因此也稱為七段LED顯示器。為了顯示數(shù)字或符號,要為LED顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個小數(shù)點位,共計8段,因此提供的字形代碼的長度正好是一個字節(jié)。簡易計算器用到的數(shù)字0~9的共陰極字形代碼如下表3-2:</p><p>  表3-2共陰極字形代碼如下表</p><p><b>  2.讀鍵子程序設計</b></

43、p><p>  為了實現(xiàn)鍵盤的數(shù)據(jù)輸入功能和命令處理功能,每個鍵都有其處理子程序,為此每個鍵都對應一個碼——鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識別按鍵。其程序框圖如下圖所示:</p><p>  圖3-2計算鍵值子程序流程圖</p><p>  3.3 其他內(nèi)容說明</p><p>  1. 定時查鍵的程序設計</p>&

44、lt;p>  進入定時器0的中斷程序后,首先重新付初值,然后調(diào)用讀鍵程序,如果有鍵按下,則判斷按鍵是否與上次按鍵相同,如果相同則判斷按鍵相應位是否為一,如果不為一,說明這不是持續(xù)按鍵導致的按鍵相應,并且進行相應的程序。如果不是則退出中斷程序。 </p><p>  讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤矩陣的規(guī)模大小,均進行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤信息(列信息);第二次所有列線均輸

45、出低電平,從所有行線讀入鍵盤信息(行信息)。將兩次讀鍵信息進行組合就可以得到按鍵的特征編碼,然后通過查表得到按鍵的順序編碼。將各特征編碼按希望的順序排成一張表,然后用當前讀得的特征碼來查表。當表中有該特征碼時,它的位置就是對應的順序編碼;當表中沒有該特征碼時,說明這是一個沒有定義的鍵碼,與沒有按鍵(0FFH)同等看待。 </p><p>  數(shù)字鍵按下則將相應的數(shù)字送入緩存區(qū),功能鍵按下則執(zhí)行相應的程序。 <

46、;/p><p>  首先對數(shù)字鍵的程序段進行相應的設計,如果運算鍵(+、-,*,/)響應標志不為一,則將輸入的數(shù)字送入第一個操作數(shù)緩存區(qū),并且清空所有響應位。否則送入第二個操作數(shù)緩存區(qū)。 其次對功能鍵的程序段進行相應的設計。 如果功能鍵(+、-,*,/)第一次被按下,則置相應的標志位為一,并且將運算鍵響應標志位置一,清空第二個操作數(shù)的緩存區(qū),為輸入操作數(shù)做準備,如果是第二次按下則先調(diào)用運算操作子程序,執(zhí)行上次

47、按下的運算鍵的運算,置相應的標志位為一,并且將運算鍵響應標志位置一,清空第二個操作數(shù)的緩存區(qū),為輸入操作數(shù)做準備。 </p><p>  如果是’C’鍵按下,則先判斷運算鍵響應位是否為一,如果不為一,則清空第一個操作數(shù),否則清空第二個操作數(shù)。 </p><p>  如果是’=’鍵按下,則調(diào)用運算操作子程序。 </p><p>  2.軟件的可靠性設計 </p&

48、gt;<p>  提高本儀器的可靠性措施主要有: </p><p> ?。?)  為防止程序跑飛,軟件中設置了軟件陷阱 </p><p> ?。?) 為防止鍵盤抖動造成按鍵錯誤,采取了軟件防</p><p> ?。?) 為了保證結(jié)果的正確性,結(jié)果溢出時顯示錯誤代碼0 </p><p>  

49、第四章、 調(diào)試與仿真</p><p>  下面用KEIL uVision與 porteus仿真軟件介紹數(shù)字計算器的仿真與調(diào)試。</p><p>  4.1Keil C51單片機軟件開發(fā)系統(tǒng)</p><p>  1. 系統(tǒng)的整體結(jié)構(gòu)</p><p>  C51工具包的整體結(jié)構(gòu)中,其中uVision與Ishell分別是C51 for Windo

50、ws和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標準的Hex文件,以供調(diào)試器dScope51或tScope51使用進行源代碼級調(diào)試,也可由仿真器使用

51、直接對目標板進行調(diào)試,也可以直接寫入程序存貯器如EPROM中。</p><p>  2. 采用KEIL 開發(fā)的89c51單片機應用程序步驟:</p><p> ?。?) 在uVision 集成開發(fā)環(huán)境中創(chuàng)建新項目(Project),擴展文件名為.UV2,并為該項目選定合適的單片機CPU器件(本設計采用ATMEL 公司下的AT89C51)</p><p>  (2)用

52、uVision 的文本編輯器編寫源文件,使用C語言文件(擴展名.C),并將該文件添加到項目中去。一個項目文件可以包含多個文件,除了源程序文件外,還可以是庫文件、頭文件或文本說明文件。</p><p> ?。?)通過uVision 2 的相關(guān)選擇項,配置編譯環(huán)境、連接定位器以及Debug調(diào)試器的功能。</p><p> ?。?)對項目中的源文件進行編譯連接,生成絕對目標代碼和可選的HEX文件

53、,如果出現(xiàn)編譯連接錯誤則返回到第2步,修改源文件中的錯誤后重構(gòu)整個項目。</p><p>  (5)對沒有語法錯誤的程序進行仿真調(diào)試,調(diào)試成功后將HEX文件寫入到單片機應用系統(tǒng)的ROM中。</p><p>  4.2 proteus的操作</p><p>  1.硬件電路圖的接法操作 </p><p>  (1).放置選擇(刪除)元器件&l

54、t;/p><p><b>  (2).移動元器件</b></p><p><b>  (3).縮放視圖</b></p><p><b>  (4).連接導線</b></p><p><b>  (5).仿真,調(diào)試</b></p><p>

55、;  2. 單片機系統(tǒng)PROTEUS設計與仿真過程</p><p>  Proteus強大的單片機系統(tǒng)設計與仿真功能,使它可成為單片機系統(tǒng)應用開發(fā)和改進手段之一。全部過程都是在計算機上通過Proteus來完成的。其過程一般也可分為三步:</p><p>  (1)在ISIS平臺上進行單片機系統(tǒng)電路設計、選擇元器件、接插件、連接電路和電氣檢測等。簡稱Proteus電路設計。</p>

56、;<p>  (2)在Keil平臺上進行單片機系統(tǒng)程序設計、編輯、匯編編譯、代碼級調(diào)試,最后生成目標代碼文件(*.hex)。簡稱Proteus源程序設計和生成目標代碼文件。</p><p>  (3)在ISIS平臺上將目標代碼文件加載到單片機系統(tǒng)中,并實現(xiàn)單片機系統(tǒng)的實時交互、協(xié)同仿真。它在相當程度上反映了實際單片機系統(tǒng)的運行情況。簡稱Proteus仿真。</p><p>&

57、lt;b>  總 結(jié)</b></p><p>  這個設計過程中,我們通過在原有的計數(shù)器系統(tǒng)進行了改進,使之增添了計數(shù)、清零等的三個控制功能,使之成為一個更加適用,功能更加完備的屬于自己的一個系統(tǒng)。設計結(jié)果能夠符合題意,成功完成了此次實習要求,我們不只在乎這一結(jié)果,更加在乎的,是這個過程。這個過程中,我們花費了大量的時間和精力,更重要的是,我們在學會創(chuàng)新的基礎上,同時還懂得合作精神的重要性,

58、學會了與他人合作。作為一名機電大三學生,我覺得做單片機實習是十分必要的。在已度過的大學時間里,我們大多數(shù)接觸的是專業(yè)課。我們在課堂上掌握的僅僅是專業(yè)課的理論知識,如何去鍛煉我們的實踐能力?如何把我們所學的專業(yè)基礎課理論知識運用到實踐中去呢?我想做類似實習就為我們提供了良好的實踐平臺。 進行了兩周時間的摸索與設計,使我不僅僅對于單片機軟件與硬件的常用設計與功能有所認識,還使我對于一項設計研究的制作過程所需要的詳細步驟和具體實

59、現(xiàn)方法有了進一步的掌握。在做本次課程設計的過程中,我感觸最深的當屬查閱大量的設計資料了。為了讓自己的設計更加完善,查閱這方面的設計資料是十分必要的,同時也是必不可少的。其次,在這次課程設計中,我們運用到了以前所學的專</p><p>  通過這次單片機實習,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。</p>&

60、lt;p>  最后,對我們的指導老師xx,表示感謝!謝謝他兩周來對我們的幫助。同時,對幫助我的所有同學表示衷心的感謝!</p><p><b>  參考文獻</b></p><p>  《單片機應用技術(shù)(C語言版)》 王靜霞,楊宏麗,劉俐編著.電子工業(yè)出版社.2009</p><p>  《單片機應用技術(shù)》 姜志海 電子工業(yè)出版社.2

61、003</p><p>  《電子技術(shù)基礎試驗》 陳大欽 高等教育出版社.2005</p><p>  《C程序設計》 潭浩強 北京航空航天出版社.2002</p><p>  《電路基礎》 許熙文 高等教育出版社.2008</p><p>  《51系列單片機高級實例開發(fā)指南》 李軍 北京航空航天大學出版社.200

62、7</p><p><b>  附 錄</b></p><p><b>  1.電路圖</b></p><p><b>  2.程 序</b></p><p>  #include <reg51.h></p><p>  #include

63、 <intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit P0_7=P0^7;</p><p>  void DelayMS(uint x) ;// 延時子程序 </p>

64、<p>  void Display(long int y); // 顯示子程序</p><p>  void chongsheanjian(void);</p><p>  void xianshu1(void);</p><p>  uchar keys();// 求列數(shù)子程序</p><p>  uchar keyno();

65、//判斷是否有鍵按下</p><p>  //各數(shù)字和黒屏的數(shù)碼管段碼</p><p>  uchar code DSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};</p><p>  uchar key_value=0,sum=0,w,guo=0,shi=0,fuhao=0,j

66、isuanfhao=0,find=0,chishu=0,value=0,dian=0;</p><p>  long int in1=0,in2=0,out=0;</p><p>  //----------------------------------------------------------------- </p><p><b>  // 主

67、程序 </b></p><p>  //-----------------------------------------------------------------</p><p>  void main()</p><p><b>  {</b></p><p><b>  while(1

68、)</b></p><p><b>  {</b></p><p><b>  P1=0x0f; </b></p><p>  chongsheanjian();</p><p>  if(key_value==14)</p><p>  switch(jisua

69、nfhao)</p><p>  {case 10:out=1000*in2/in1;dian=1;if(in2<in1){dian=2;}break;</p><p>  case 11:out=in2*in1;break;</p><p>  case 12:out=in2-in1;break;</p><p>  case 13:

70、out=in2+in1;break;</p><p><b>  }</b></p><p>  //P1=DSY_CODE[out];</p><p>  xianshu1(); </p><p><b>  }</b></p><p><b>  }</

71、b></p><p>  void chongsheanjian(void)</p><p><b>  {</b></p><p>  if(keyno()!=0)// keyno()是判斷是否有鍵按下</p><p>  switch(keys())</p><p><b> 

72、 {</b></p><p>  case 1:key_value=7;sum++;fuhao=0;break;</p><p>  case 2:key_value=8;sum++;fuhao=0;break;</p><p>  case 3:key_value=9;sum++;fuhao=0;break;</p><p> 

73、 case 4:value=10;fuhao=1;in2=in1;break;</p><p>  case 5:key_value=4;sum++;fuhao=0;break;</p><p>  case 6:key_value=5;sum++;fuhao=0;break;</p><p>  case 7:key_value=6;sum++;fuhao=0;b

74、reak;</p><p>  case 8:value=11;fuhao=1;in2=in1;break;</p><p>  case 9:key_value=1;sum++;fuhao=0;break;</p><p>  case 10:key_value=2;sum++;fuhao=0;break;</p><p>  case 1

75、1:key_value=3;sum++;fuhao=0;break;</p><p>  case 12:value=12;fuhao=1;in2=in1;break;</p><p>  case 13:key_value=15;fuhao=3;break;</p><p>  case 14:key_value=0;sum++;fuhao=0;break;<

76、;/p><p>  case 15:key_value=14;fuhao=2;break;</p><p>  case 16:value=13;fuhao=1;in2=in1;break;</p><p><b>  }</b></p><p><b>  }</b></p><p

77、>  void xianshu1(void)</p><p>  {uchar w=0;</p><p>  long int q=0;</p><p>  if(fuhao==0)</p><p><b>  {</b></p><p>  if(chishu==1){chishu=0;s

78、um=1;}</p><p>  in1=in1*shi+key_value;</p><p>  key_value=0;</p><p><b>  shi=1;</b></p><p>  Display(in1);</p><p><b>  } </b></

79、p><p>  if(fuhao==1)</p><p><b>  {</b></p><p><b>  in1=0;</b></p><p>  jisuanfhao=value;</p><p>  key_value=0;</p><p>  D

80、isplay(in2);</p><p><b>  chishu=1;</b></p><p><b>  }</b></p><p>  if(fuhao==2)</p><p><b>  {q=out;</b></p><p><b>

81、  while(1)</b></p><p>  {out=out/10;</p><p>  if(out==0) break;</p><p><b>  else w++;</b></p><p><b>  }</b></p><p><b> 

82、 w++;</b></p><p><b>  sum=w;</b></p><p>  Display(q);</p><p><b>  }</b></p><p>  if(fuhao==3){</p><p><b>  out=0;</b

83、></p><p><b>  in1=0;</b></p><p><b>  in2=0;</b></p><p><b>  sum=1;</b></p><p><b>  dian=0;</b></p><p>  

84、Display(out);</p><p><b>  sum=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //------------------------------------------------

85、----------------- </p><p>  // 延時子程序 </p><p>  //-----------------------------------------------------------------</p><p>  void DelayMS(uint x) </p><p><b>  {&l

86、t;/b></p><p><b>  uchar i;</b></p><p>  while(x--) for(i = 0; i < 120; i++);</p><p><b>  }</b></p><p>  //--------------------------------

87、--------------------------------- </p><p>  // 顯示子程序 </p><p>  //-----------------------------------------------------------------</p><p>  void Display(long int y)</p><

88、p>  {uchar i,j;</p><p>  if(dian==2)sum=4;</p><p><b>  w=0x80;</b></p><p>  for(i=0;i<sum;i++)</p><p><b>  {j=y%10;</b></p><p&g

89、t;<b>  y=y/10;</b></p><p><b>  P2=w;</b></p><p>  P0=DSY_CODE[j];</p><p>  if(dian==1&&w==0x10)P0_7=0;</p><p>  if(dian==2&&w==0

90、x10)P0=0x40;</p><p><b>  w>>=1;</b></p><p>  DelayMS(2); </p><p><b>  }</b></p><p><b>  }</b></p><p>  //-------

91、---------------------------------------------------------- </p><p>  // 判斷是否有鍵按下子程序,沒有返回0,有返回1 </p><p>  //-----------------------------------------------------------------</p><p>

92、  uchar keyno()</p><p><b>  {</b></p><p>  if((P1&0x0f)!=0x0f)</p><p><b>  {</b></p><p>  DelayMS(10);</p><p>  if((P1&0x0f

93、)!=0x0f)</p><p><b>  return 1;</b></p><p><b>  else</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>

94、<b>  else</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  //----------------------------------------------------------------- </p>

95、<p>  // uchar keys();// 求鍵值子程序,返回鍵值 </p><p>  //-----------------------------------------------------------------</p><p>  uchar keys()</p><p><b>  {</b></p&g

96、t;<p>  uchar i,m,row,line; </p><p><b>  P1=0x0f;</b></p><p>  switch(P1&0x0f)</p><p><b>  {</b></p><p>  case 0x0e:row=0;break;</

97、p><p>  case 0x0d:row=1;break;</p><p>  case 0x0b:row=2;break;</p><p>  case 0x07:row=3;break;</p><p><b>  }</b></p><p><b>  m=0xef;</b&g

98、t;</p><p>  for(i=0;i<4;i++)</p><p><b>  {</b></p><p><b>  P1=m;</b></p><p>  if((P1&0x0f)!=0x0f)</p><p>  { line=i;break;}&

99、lt;/p><p>  m=_crol_(m,1);</p><p><b>  }</b></p><p>  while((P1&0x0f)!=0x0f);</p><p><b>  shi=10;</b></p><p>  return (row*4+line+

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論