通信畢業(yè)設(shè)計--基于單片機的數(shù)字萬年歷設(shè)計_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)論文設(shè)計</b></p><p>  題 目: 基于單片機的數(shù)字萬年歷設(shè)計 </p><p>  學生姓名: </p><p>  學生學號: </p><p>  系 別:

2、 電氣信息工程學院 </p><p>  專 業(yè): 通信工程 </p><p>  屆 別: </p><p>  指導教師: </p><p>  基于單片機的數(shù)字萬年歷設(shè)計</

3、p><p>  摘 要:本文借助電路仿真軟件Protues對基于AT89S51單片機的電子萬年歷的設(shè)計方法及仿真進行了全面的闡述。該電子萬年歷在硬件方面主要采用AT89C51單片機作為主控核心,由DS1302時鐘芯片提供時鐘、1602LCM點陣液晶顯示屏顯示。AT89C51單片機是由Atmel公司推出的,功耗小,電壓可選用4~6V電壓供電;DS1302時鐘芯片是美國DALLAS公司推出的具有涓細電流充電功能的低功耗實

4、時時鐘芯片,它可以對年、月、日、星期、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差??;數(shù)字顯示是采用的LED液晶顯示屏來顯示,可以同時顯示年、月、日、星期、時、分、秒等信息。此外,該電子萬年歷還具有時間校準等功能。在軟件方面,主要包括日歷程序、時間調(diào)整程序,顯示程序等。所有程序編寫完成后,在Keil軟件中進行調(diào)試,確定沒有問題后,在Proteus軟件中嵌入單片機內(nèi)進行仿真。 論文主要研究了液晶顯示器L

5、CM及時鐘芯片DS1302,溫度傳感器DS18B20與單片機之間的硬件互聯(lián)及通信,對數(shù)種硬件連接方案進行了詳盡的比較,在軟件方面對日歷算法也進行了論述。 研</p><p>  關(guān)鍵詞:單片機;DS1302;DS18B20;LCM1602 </p><p>  Design of the digital Perpetual Calendar based on Single chip mi

6、crocomputer</p><p>  ABSTRACT:This paper mainly discuss the design and simulation of electronic calender based on AT89S51 with the help of Protues.On the hardware side, the electronic calendar using AT89C51

7、microcontroller as the main control center, clock provided by the DS1302 clock chip , 1602LED dot matrix LCD display.Atmel Corporation AT89C51 microcontroller is producted by Atmel Corporation, low power consumption, vol

8、tage can be selected 4V~ 6V voltage power supply; DS1302 clock chip, launched in the United St</p><p>  Keyword: Microcontroller,DS1302;DS18B20;LCD1602</p><p>  目 錄</p><p&

9、gt;<b>  前言3</b></p><p><b>  1 方案設(shè)計4</b></p><p><b>  1.1 概述4</b></p><p>  1.1.1 實時時鐘研究的背景及意義4</p><p>  1.1.2 系統(tǒng)的總體設(shè)計5</p>

10、<p>  1.2 系統(tǒng)基本方案選擇和論證6</p><p>  1.2.1 單片機芯片的選擇6</p><p>  1.2.2 顯示模塊選擇方案和論證6</p><p>  1.2.3 時鐘芯片的選擇方案和論證6</p><p>  1.2.4 電路設(shè)計最終方案決定7</p><p>  2 硬

11、件電路設(shè)計7</p><p>  2.1 系統(tǒng)硬件概述7</p><p>  2.2 單片機最小系統(tǒng)8</p><p>  2.3 單片機的復位電路9</p><p>  2.4 時鐘芯片電路11</p><p>  2.4.1 時鐘芯片引腳介紹11</p><p>  2.4.2

12、時鐘芯片DS1302介紹12</p><p>  2.5 1602LCD液晶顯示屏13</p><p>  2.5.1 1602字符型LCD簡介13</p><p>  2.5.2 1602引腳功能說明13</p><p>  2.6 蜂鳴器鬧鈴電路14</p><p>  2.7 按鍵調(diào)整電路14<

13、;/p><p>  2.8 顯示模塊15</p><p>  3 軟件部分設(shè)計16</p><p>  3.1 程序流程框圖16</p><p>  3.2 時間設(shè)置子程序流程16</p><p>  3.3 程序設(shè)計問題17</p><p>  3.3.1 按鍵抖動問題17</p

14、><p>  3.3.2 蜂鳴器設(shè)置18</p><p>  3.3.3 液晶顯示的設(shè)置18</p><p>  3.3.4 中斷設(shè)置18</p><p>  3.3.5 時鐘芯片設(shè)置19</p><p>  4 開發(fā)工具Proteus與Keil21</p><p>  4.1 Prote

15、us軟件21</p><p>  4.1.1 Proteus簡介21</p><p>  4.1.2 4大功能模塊22</p><p>  4.1.3 ISIS智能原理圖輸入系統(tǒng)23</p><p>  4.1.4 Proteus簡單應(yīng)用23</p><p>  4.2 Keil軟件24</p>

16、<p>  4.2.1 Keil軟件簡介24</p><p>  4.2.2 Keil軟件調(diào)試功能24</p><p>  4.3 本章小結(jié)25</p><p><b>  5 系統(tǒng)測試26</b></p><p>  5.1 硬件測試26</p><p>  5.2 軟件

17、測試26</p><p><b>  結(jié)束語26</b></p><p><b>  致謝27</b></p><p><b>  參考文獻28</b></p><p><b>  附錄29</b></p><p><

18、;b>  前言</b></p><p>  隨著社會、科技的發(fā)展,人類得知時間,從觀太陽、擺鐘到現(xiàn)在電子鐘,不斷研究、創(chuàng)新。為了在觀測時間的同時,能夠了解其它與人類密切相關(guān)的信息,比如溫度、星期、日期等,電子萬年歷誕生了,它集時間、日期、星期和溫度功能于一身,具有讀取方便、顯示直觀、功能多樣、電路簡潔等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢。伴隨著電子技術(shù)的迅速發(fā)展,特別是隨大規(guī)模集成電路出現(xiàn),給

19、人類生活帶來了根本性的改變。由其是單片機技術(shù)的應(yīng)用產(chǎn)品已經(jīng)走進了千家萬戶。電子萬年歷的出現(xiàn)給人們的生活帶來的諸多方便,作為一種附加功能,現(xiàn)在越來越廣泛的被應(yīng)用于各種電子產(chǎn)品中,具有廣闊的市場前景。 </p><p>  通過以往對工業(yè)自動化的相關(guān)課程學習和理解獨立完成制作電子萬年歷的設(shè)計。電子萬年歷作為電子類小產(chǎn)品不僅是市場上的寵兒,也是是單片機設(shè)計培訓中一個很實用的題目。因為這個課題有很好的開放性和可發(fā)揮性,對

20、制作者的要求比較高,不僅考察了對單片機的掌握能力更加強調(diào)了對單片機擴展的應(yīng)用。而且要求設(shè)計的電子萬年歷在操作上力求簡潔,功能上盡量齊全,顯示界面也要出色。所以,電子萬年歷制作無論從實用目的,還是從培養(yǎng)能力的角度來看都是很有價值的畢業(yè)設(shè)計課題。本電子萬年歷的設(shè)計在硬件方面主要采用AT89S51單片機作為主控核心,由DS1302時鐘芯片提供時鐘、1602LCM點陣液晶顯示屏顯示。AT89S51單片機是由Atmel公司推出的,功耗小,電壓可選

21、用4~6V電壓供電[1];DS1302時鐘芯片是美國DALLAS公司推出的具有涓細電流充電功能的低功耗實時時鐘芯片,它可以對年、月、日、星期、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差??;數(shù)字顯示是采用的LED液晶顯示屏來顯示,可以同時顯示年、月、日、星期、時、分、秒等信息。此外,該電子萬年歷還具有時間校準等功能。在軟件方面</p><p><b>  1 方案設(shè)計

22、</b></p><p><b>  1.1 概述</b></p><p>  1.1.1 實時時鐘研究的背景及意義</p><p>  在現(xiàn)實我們生活中每個人都可能有自己的時鐘,光陰在永不停息的流逝,有了時鐘人們就能隨著時間有計劃的過著每一天。然而現(xiàn)在絕大部分的時鐘有的需要不斷地跟換電池,有些時鐘需要外接電源,如果一旦電池沒電或者

23、外接電源無法供電,時鐘就會停止計時了。而美國DALLAS 公司的新型時鐘日歷芯片DS1302就能解決這一問題。該器件能提供實時時鐘(RTC)/日歷、定時鬧鐘。少于31天的月份,月末日期可自動調(diào)整,其中包括閏年補償。該器件還可以工作于24小時貨代/PM指示的12小時格式。一個精密的溫度補償電路用來監(jiān)視Vcc的狀態(tài)。 本時鐘還具有環(huán)保、走時無噪音、低功耗等非實時時鐘不具有的功能。該實時時鐘不但可以作為家用,而且更可以在公共場合使用,

24、如車站、碼頭、商場等場所。</p><p>  1.1.2 系統(tǒng)的總體設(shè)計</p><p>  采用AT89C52作為主控單片機,時鐘模塊選用DS1302作為時鐘芯片,溫度模塊選用DS18B20作為溫度傳感器,顯示模塊選用LCD1602,設(shè)置部分選用按鍵電路。</p><p>  AT89C52與MCS-51單片機產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲器、

25、1000次擦寫周期、 全靜態(tài)操作:0Hz~33Hz 、 三級加密程序存儲器 、 32個可編程I/O口線 、三個16位定時器/計數(shù)器 八個中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時器 、雙數(shù)據(jù)指針 、掉電標識符 。</p><p>  DS1302 實時時鐘芯片功能豐富,可以用來直接代替IBM PC 上的時鐘日歷芯片DS12887,同時,它的管腳也和MC146818B

26、、DS12887 相兼容。由于DS1302 能夠自動產(chǎn)生世紀、年、月、日、時、分、秒等時間信息,其內(nèi)部又增加了世紀寄存器,從而利用硬件電路解決子“千年”問題;DS1302 中自帶有鋰電池,外部掉電時,其內(nèi)部時間信息還能夠保持10 年之久;對于一天內(nèi)的時間記錄,有12 小時制和24 小時制兩種模式。用戶還可對DS1302 進行編程以實現(xiàn)多種方波輸出,并可對其內(nèi)部的三路中斷通過軟件進行屏蔽。</p><p>  該系

27、統(tǒng)的系統(tǒng)框圖如圖1.1示:</p><p><b>  如圖1.1系統(tǒng)框圖</b></p><p>  1.2 系統(tǒng)基本方案選擇和論證</p><p>  1.2.1 單片機芯片的選擇</p><p>  本設(shè)計采用AT89S51芯片作為硬件核心,該芯片采用Flash ROM,內(nèi)部具有4KB ROM存儲空間,相對于本設(shè)計

28、而言程序空間完全夠用。能于3V的超低壓工作,而且與MCS-51系列單片機完全兼容,而且運用于電路設(shè)計中時具備ISP在線編程技術(shù),當在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,避免芯片的多次拔插對芯片造成的損壞。</p><p>  1.2.2 顯示模塊選擇方案和論證</p><p><b>  方案一: </b></p>&l

29、t;p>  采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示。 </p><p><b>  方案二: </b></p><p>  采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格雖適中,對于顯示數(shù)字也最合適,而且采用動態(tài)掃描法與單片機連接時,占用的單片機口線少

30、。但是由于數(shù)碼管動態(tài)掃描需要借助74LS164移位寄存器進行移位,該芯片在電路調(diào)試時往往會有很多障礙,所以不采用LED數(shù)碼管作為顯示。 </p><p><b>  方案三: </b></p><p>  采用LCD液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,對于電子萬年歷而言,一個1602的液晶屏即可,價格也還能接受,需要的接口線

31、較多,但會給調(diào)試帶來諸多方便,所以此設(shè)計中采用LCD1602液晶顯示屏作為顯示模塊。</p><p>  1.2.3 時鐘芯片的選擇方案和論證</p><p><b>  方案一: </b></p><p>  直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、 3秒計數(shù)。采用此種方案雖然可以減少時鐘芯片的使用,節(jié)約成本

32、,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。 </p><p><b>  方案二: </b></p><p>  采用DS1302時鐘芯片實現(xiàn)時鐘,DS130是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用

33、突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振[4]。因此,本設(shè)計中采用DS1302提供時鐘。</p

34、><p>  1.2.4 電路設(shè)計最終方案決定</p><p>  綜上各模塊的選擇方案與論證,確定最后的主要硬件資源如下:采用AT89S51作為主控制系統(tǒng);DS1302提供時鐘;DS18B20作為數(shù)字式溫度傳感器;LCD1602液晶屏作為顯示。</p><p><b>  2 硬件電路設(shè)計</b></p><p>  2.

35、1 系統(tǒng)硬件概述</p><p>  本電路是由AT89S52單片機作為控制核心,能在3V超低壓工作,AT89S52是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含4kBytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理

36、器和ISP Flash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案;時鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31*8的用于臨時性存放數(shù)據(jù)的RAM寄存器

37、。可產(chǎn)生年、月、日、周、時、分、秒,具有使用壽命長,精度高和低功耗等特點,同時具有掉電自動保存功能;顯示部份由LCD1602液晶顯示器完成,該顯示器為工業(yè)字符型液晶,能夠同時顯示16</p><p>  2.2 單片機最小系統(tǒng)</p><p>  AT89C52單片機最小系統(tǒng)電路設(shè)計如圖2.1所示。</p><p>  圖2.1 AT89C52單片機結(jié)構(gòu)圖</

38、p><p>  本系統(tǒng)以AT89C52單片機為核心,本系統(tǒng)選用11.0592MHZ的晶振,,使得單片機有合理的運行速度。起振電容30pF對振蕩器的頻率高低、振蕩器的穩(wěn)定性和起振的快速性影響較合適,復位電路為按鍵高電平復位。AT89S52單片機為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3,MCS-51單片機共有4個8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨立地作輸出或輸入。</

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

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

41、。這是由于內(nèi)部上拉的緣故。P2口當用 6于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p>  P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,

42、它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 </p><p>  I/O口作為輸入口時有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時實際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線,經(jīng)過某種運算或變換后再寫回到端口鎖存器。只有讀端口時才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線。輸入緩沖器CPU將根據(jù)不同的指令分別發(fā)出讀端口或讀引腳信號

43、以完成不同的操作。這是由硬件自動完成的,不需要我們操心,1然后再實行讀引腳操作,否則就可能讀入出錯,如果不對端口置1,端口鎖存器原來的狀態(tài)有可能為0Q端為0Q^為1加到場效應(yīng)管柵極的信號為1,該場效應(yīng)管就導通對地呈現(xiàn)低阻抗,此時即使引腳上輸入的信號為1,也會因端口的低阻抗而使信號變低使得外加的1信號讀入后不一定是1。若先執(zhí)行置1操作,則可以使場效應(yīng)管截止引腳信號直接加到三態(tài)緩沖器中實現(xiàn)正確的讀入,由于在輸入操作時還必須附加一個準備動作,

44、所以這類I/O口被稱為準雙向口。89C51的P0/P1/P2/P3口作為輸入時都是準雙向口。</p><p>  2.3 單片機的復位電路</p><p>  復位電路的連接圖如下:</p><p>  圖2.2 復位電路連接圖</p><p>  為確保微機系統(tǒng)中電路穩(wěn)定可靠工作,復位電路是必不可少的一部分,復位電路的第一功能是上電復位。一

45、般微機電路正常工作需要供電電源為5V±5%,即4.75~5.25V。由于微機電路是時序數(shù)字電路,它需要穩(wěn)定的時鐘信號,因此在電源上電時,只有當VCC超過4.75V低于5.25V以及晶體振蕩器穩(wěn)定工作時,復位信號才被撤除,微機電路開始正常工作。</p><p>  單片機在啟動時都需要復位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。89系列單片機的復位信號是從RST引腳輸入到芯片內(nèi)的施密

46、特觸發(fā)器中的。當系統(tǒng)處于正常工作狀態(tài)時,且振蕩器穩(wěn)定后,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復位。單片機系統(tǒng)的復位方式有:手動按鈕復位和上電復位。</p><p>  51單片機在系統(tǒng)復位時,將其內(nèi)部的一些重要寄存器設(shè)置為特定的值,(在特殊寄存器介紹時再做詳細說明)至于內(nèi)部RAM內(nèi)部的數(shù)據(jù)則不變。</p><p>  系統(tǒng)復位是任

47、何微機系統(tǒng)執(zhí)行的第一步,使整個控制芯片回到默認的硬件狀態(tài)下。51單片機的復位是由RESET引腳來控制的,此引腳與高電平相接超過24個振蕩周期后,51單片機即進入芯片內(nèi)部復位狀態(tài),而且一直在此狀態(tài)下等待,直到RESET引腳轉(zhuǎn)為低電平后,才檢查EA引腳是高電平或低電平,若為高電平則執(zhí)行芯片內(nèi)部的程序代碼,若為低電平便會執(zhí)行外部程序。</p><p>  單片機的工作完全在其pc指針控制下,即pc指向哪,單片機就執(zhí)行那

48、里的指令。復位后pc執(zhí)行0000h地址,即你的程序的第一條指令。</p><p>  2.4 時鐘芯片電路</p><p>  2.4.1 時鐘芯片引腳介紹</p><p>  時鐘芯片DS1302,其引腳分布圖如下所示:</p><p>  圖2.3 DS1302引腳分布圖</p><p>  DS1302的引腳排列

49、,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。</p><p>  X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩

50、種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。</p><p>  I/O為串行數(shù)據(jù)輸

51、入輸出端(雙向),后面有詳細說明。</p><p>  CLK為時鐘輸入端。</p><p>  2.4.2 時鐘芯片DS1302介紹</p><p>  美國DALLAS公司推出的具有涓細電流充電能力的低功耗實時時鐘電路DS1302的結(jié)構(gòu)、工作原理及其在實時顯示時間中的應(yīng)用。它可以對年、月、日、周日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。</p>

52、;<p>  DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式</p><p>  此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制

53、字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。 </p><p>  為了實現(xiàn)系統(tǒng)報警計時等功能,此設(shè)計采用了DS302實時時鐘芯片。DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電

54、壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。 2.1 引腳功能及結(jié)構(gòu) DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下

55、,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST</p><p>  控制字節(jié)的最高有效位(位7)必須是邏輯1,如

56、果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。</p><p>  在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1

57、302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。</p><p>  2.5 1602LCD液晶顯示屏</p><p>  2.5.1 1602字符型LCD簡介</p><p>  字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,本設(shè)計采用16列*2行的字符型LCD1602帶背光的液晶顯示屏。</p><p>  2.5.2

58、 1602引腳功能說明</p><p>  各引腳接口說明如表所示:</p><p><b>  表1</b></p><p>  表1:引腳接口說明:</p><p>  第1腳:VSS為地電源。</p><p>  第2腳:VDD接5V正電源。</p><p>  第3

59、腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。</p><p>  第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。</p><p>  第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS

60、為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。</p><p>  第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p>  第15腳:背光源正極。</p><p>  第16腳:背光源負極。</p>

61、;<p>  2.6 蜂鳴器鬧鈴電路</p><p>  當單片機給蜂鳴器一個低電平時,三極管導通驅(qū)動蜂鳴器發(fā)出聲音作為定時鬧鈴,其電路圖如圖2.3所示:</p><p>  2.7 按鍵調(diào)整電路</p><p>  系統(tǒng)四個獨立鍵盤均采用查詢方式,S2用于設(shè)置年、月、日、時、分、秒、星期的數(shù)值加,以及鬧鐘開,S3用于設(shè)置年、月、日、時、分、秒、星期的

62、數(shù)值減以及鬧鐘關(guān),s1用于具體設(shè)置時鐘位的切換,s4鍵用于設(shè)置鬧鐘。其電路圖如2.4所示:</p><p><b>  2.8 顯示模塊</b></p><p>  如下圖所示,采用LCM1602液晶顯示器,單片機P1口作為數(shù)據(jù)輸出口,RS,R\W,E分別通過10K的上拉電阻連接到單片機的P0.0,P0.1,P0.2。VDD接5V電源,VSS接地。VEE為液晶顯示器對

63、比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。R/W為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。E(或EN)端為使能(enable)端,下降沿使能。DB0-DB7為雙向數(shù)據(jù)總線,同時最高位DB7也是忙信號檢測位。BLA、BLK分別為顯示器背光燈的正、負極。<

64、/p><p>  1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符,圖形寄存器選擇控制表如表所示:</p><p>  表2 1602寄存器選擇控制表</p><p>  1602通過D0~D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。顯示模式設(shè)置(初始化)00

65、111000[0x38]設(shè)置16×2顯示,5×7點陣,8位數(shù)據(jù)接口;顯示開關(guān)及光標設(shè)置:(初始化) 00001DCBD顯示(1有效)、C光標顯示(1有效)、B光標閃爍(1有效)。000001NS N=1(讀或?qū)懸粋€字符后地址指針加1并且光標加1),N=0(讀或?qū)懸粋€字符后地址指針減1并且光標減1),S=1且N=1(當寫一個字符后,整屏顯示左移),S=0當寫一個字符后,整屏顯示不移動。數(shù)據(jù)指針設(shè)置:數(shù)據(jù)首地址為80H,

66、所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-67H)。其他設(shè)置:01H(顯示清屏,數(shù)據(jù)指針=0,所有顯示=0);02H(顯示回車,數(shù)據(jù)指針=0)。</p><p><b>  3 軟件部分設(shè)計</b></p><p>  3.1 程序流程框圖</p><p>  主程序開始初始化,并打開中斷,然后執(zhí)行掃描鬧鐘、鍵盤及讀取18B20值。當有S

67、1鍵按下時,執(zhí)行時鐘設(shè)置,當有S4鍵按下時,則進入鬧鐘設(shè)置,無論是時鐘還是鬧鐘,設(shè)置完后退出,溫度、時鐘恢復實時顯示。主程序流程圖如圖3.1所示:</p><p>  圖3.1程序流程框圖</p><p>  3.2 時間設(shè)置子程序流程</p><p>  通過單片機判斷S1按下的次數(shù)來設(shè)置,由s1num標志位來記錄次數(shù),用if語句判斷執(zhí)行命令。系統(tǒng)程序不斷掃面鍵盤

68、,當s1鍵按下后產(chǎn)生一個低電平,即s1num加一。在調(diào)節(jié)時間之前首先進行各個變量初始化,及設(shè)置起始時間,同時為讀取數(shù)據(jù)作準備。當s1=1時進入秒的設(shè)置,地址指針指向miao顯示位置處,通過兩個if語句分別循環(huán)控制顯示秒數(shù)的加和減。當s1=2時,地址指針指向fen顯示位置處,變量最大值為59。當s1=3時,地址指針指向shi顯示位置處,變量最大值設(shè)為23。當s1=4時,地址指針指向week顯示位置處,最大值設(shè)為7,1至7分別用MON、TU

69、E、WED、THU 、FRI、SAT、SUN字符串顯示。隨著s2、s3值的的變化顯示不同的字符串。當s1=5時,地址指針指向day顯示位置,變量最大值為31。當s1=6時,地址指針指向month顯示位置,變量最大值為12。當s1=7時,地址指針指向year顯示位置,最大值為99。</p><p>  3.3 程序設(shè)計問題</p><p>  3.3.1 按鍵抖動問題</p>

70、<p>  按鍵在按下時因為機械原因會產(chǎn)生抖動,抖動的后果就是當按下一次按鍵時因為抖動的原因讓系統(tǒng)讀取到多次的按鍵按下的次數(shù),由此導致設(shè)置時出現(xiàn)錯誤。解決的方法如下:當按鍵按下時讀取按鍵鍵值,若5ms后鍵值和按下是相等,則確認為有效按鍵,以此消除按鍵抖動帶來的問題。</p><p>  3.3.2 蜂鳴器設(shè)置</p><p>  蜂鳴器報警時,設(shè)置響100毫秒,停100毫秒,循環(huán)

71、響應(yīng),產(chǎn)生滴滴的聲音。</p><p>  3.3.3 液晶顯示的設(shè)置</p><p><b>  初始化設(shè)置</b></p><p><b>  顯示模式設(shè)置</b></p><p>  寫入指令碼write_com(0x38),設(shè)置功能16*2顯示,5*7點陣,8位數(shù)據(jù)接口</p>

72、<p>  顯示/開關(guān)及光標設(shè)置</p><p>  寫入指令碼write_com(0x0c),設(shè)置開顯示,不顯示光標,光標不閃爍。</p><p>  寫入指令碼write_com(0x06),設(shè)置當讀或?qū)懸粋€字符后地址指針加一,且光標加一。當寫一個字符,整屏顯示不移動。</p><p>  顯示清屏,寫入指令碼write_com(0x01)。<

73、/p><p>  寫入指令碼函數(shù)write_com()寫指令過程 :輸入:rs=0,D0-D7=指令碼,E=高脈沖</p><p>  寫入數(shù)據(jù)函數(shù) write_date() 寫指令過程: 輸入:rs=1,D0-D7=數(shù)據(jù),E=高脈沖</p><p>  寫入指令和數(shù)據(jù)時rw端已經(jīng)接地。</p><p><b>  數(shù)據(jù)指針設(shè)置 &l

74、t;/b></p><p>  指令碼80H+地址碼(0-27H)顯示第一行的字符</p><p>  指令碼80H+地址碼(40H-67H)顯示的第二行字符</p><p>  3.3.4 中斷設(shè)置</p><p>  EA=1;//打開總中斷</p><p>  EX1=1;//打開外部中斷</p>

75、;<p>  IT1=1;//設(shè)置負跳變沿觸發(fā)中斷</p><p>  當鬧鐘到點時響應(yīng)外部中1 時間到時IRQ端從高阻態(tài)轉(zhuǎn)為低電平,此時讀一次c寄存器清除IRQ端的輸出,等待下一次定時。</p><p>  void exter() interrupt 2 //外部中斷1服務(wù)程序</p><p><b>  {</b>&l

76、t;/p><p>  uchar c;//進入中斷表示鬧鐘時間到</p><p>  flag_ri=1; //設(shè)置標志位,用以大程序中報警</p><p>  c=read_ds(0x0c);//讀取12c887c寄存器表示響應(yīng)了中端</p><p><b>  }</b></p><p>  3.

77、3.5 時鐘芯片設(shè)置</p><p>  首次上電初始化時間函數(shù):</p><p>  void set_time()</p><p>  {//首次上電初始化時間函數(shù)</p><p>  write_ds(0,0);//初始化秒</p><p>  write_ds(1,0);//初始化秒鬧鐘</p>

78、<p>  write_ds(2,0);// 初始化分</p><p>  write_ds(3,0);//初始化分鬧鐘</p><p>  write_ds(4,0);//初始化時</p><p>  write_ds(5,0);// 初始化時鬧鐘</p><p>  write_ds(6,0);//初始化星期</p>

79、<p>  write_ds(7,0);// 初始化日</p><p>  write_ds(8,0);//初始化月</p><p>  write_ds(9,0);// 初始化年</p><p><b>  }</b></p><p>  寫12C887函數(shù):</p><p>  

80、void write_ds(uchar add,uchar date)</p><p>  { //寫12C887函數(shù)</p><p>  dscs=0; 打開片選信號</p><p><b>  dsas=1;</b></p><p><b>  dsds=1;</b></p>

81、<p><b>  dsrw=1;</b></p><p><b>  P0=add;</b></p><p>  dsas=0; //下降沿鎖存地址</p><p><b>  dsrw=0;</b></p><p><b>  P0=date;<

82、/b></p><p>  dsrw=1;//上升沿鎖存數(shù)據(jù)</p><p>  dsas=1;//上升沿清除地址</p><p>  dscs=1;//關(guān)掉片選信號</p><p><b>  }</b></p><p>  讀12C887函數(shù):</p><p&

83、gt;  uchar read_ds(uchar add)</p><p><b>  {</b></p><p>  uchar ds_date;</p><p><b>  dsas=1;</b></p><p><b>  dsds=1;</b></p>&

84、lt;p><b>  dsrw=1;</b></p><p>  dscs=0;打開片選信號</p><p><b>  P0=add;</b></p><p>  dsas=0; //下降沿鎖存地址</p><p><b>  dsds=0;</b></p>

85、<p><b>  P0=0xff;</b></p><p>  ds_date=P0;</p><p>  dsds=1; //下降沿鎖存地址</p><p>  dsas=1;//上升沿清除地址</p><p>  dscs=1;//關(guān)掉片選信號</p><p>  return

86、 ds_date;</p><p><b>  }</b></p><p>  4 開發(fā)工具Proteus與Keil</p><p>  4.1 Proteus軟件</p><p>  4.1.1 Proteus簡介</p><p>  Proteus軟件是英國Labcenter electron

87、ics公司出版的EDA工具軟件(該軟件中國總代理為廣州風標電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品

88、的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。</p><p><b>  該軟

89、件的特點是:</b></p><p>  1.實現(xiàn)了單片機仿真和SPICE電路仿真相結(jié)合,具有模擬電路仿真、數(shù)字電路仿真、各種單片機(51系列、AVR、PIG等常用的MCU)及其外圍電路(如lED、RAM、ROM、鍵盤、LED、A/D、D/A……)組成的系統(tǒng)仿真。</p><p>  2.提供了多種虛擬儀器。如示波器、邏輯分析儀、信號發(fā)生器等,調(diào)試非常方便。</p>

90、<p>  3.提供軟件調(diào)試功能,同時支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil等軟件。</p><p>  4.具有強大的原理圖繪制功能。Proteus與其它單片機仿真軟件不同的是,它不僅能仿真單片機CPU的工作情況,也能仿真單片機外圍電路或沒有單片機參與的其它電路的工作情況。因此在仿真和程序調(diào)試時,關(guān)心的不再是某些語句執(zhí)行時單片機寄存器和存儲器內(nèi)容的改變,而是從工程的角度直接看程序運行和電路工作

91、的過程和結(jié)果。對于這樣的仿真實驗.從某種意義上講,是彌補了.實驗和工程應(yīng)用閹脫節(jié)的矛盾和現(xiàn)象。同時,當硬件調(diào)試成功后,利用Proteus ARES軟件,很容易獲得其PCB圖,為今后的制造提供了方便。</p><p>  4.1.2 4大功能模塊</p><p>  1. 智能原理圖設(shè)計(ISIS)</p><p>  豐富的器件庫:超過27000種元器件,可方便地創(chuàng)

92、建新元件。   </p><p>  智能的器件搜索:通過模糊搜索可以快速定位所需要的器件。   </p><p>  智能化的連線功能:自動連線功能使連接導線簡單快捷,大大縮短繪圖時間。   </p><p>  支持總線結(jié)構(gòu):使用總線器件和總線布線使電路設(shè)計簡明清晰。   </p><p>  可輸出高質(zhì)量圖紙:通過個性化設(shè)置,可以生成印

93、刷質(zhì)量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用。 </p><p>  2. 完善的電路仿真功能(Prospice)</p><p>  ProSPICE混合仿真:基于工業(yè)標準SPICE3F5,實現(xiàn)數(shù)字/模擬電路的混合仿真。 超過27000個仿真器件:可以通過內(nèi)部原型或使用廠家的SPICE文件自行設(shè)計仿真器件,Labcenter也在不斷地發(fā)布新的仿真器件,還可

94、導入第三方發(fā)布的仿真器件。</p><p>  多樣的激勵源:包括直流、正弦、脈沖、分段線性脈沖、音頻(使用wav文件)、指數(shù)信號、單頻FM、數(shù)字時鐘和碼流,還支持文件形式的信號輸入。</p><p>  豐富的虛擬儀器:13種虛擬儀器,面板操作逼真,如示波器、邏輯分析儀、信號發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖案發(fā)生器、頻率計/計數(shù)器、邏輯探頭、虛擬終端、SPI調(diào)試器、I2

95、C調(diào)試器等。</p><p>  生動的仿真顯示:用色點顯示引腳的數(shù)字電平,導線以不同顏色表示其對地電壓大小,結(jié)合動態(tài)器件(如電機、顯示器件、按鈕)的使用可以使仿真更加直觀、生動高級圖形仿真功能(ASF):基于圖標的分析可以精確分析電路的多項指標,包括工作點、瞬態(tài)特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等。</p><p>  3. 獨特的單片機協(xié)同仿真功能(VSM)</

96、p><p>  支持主流的CPU類型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU類型隨著版本升級還在繼續(xù)增加,如即將支持CORTEX、DSP處理器。</p><p>  支持通用外設(shè)模型:如字符lED模塊、圖形lED模塊、LED點陣、LED七段顯示模塊、鍵盤/按鍵、直

97、流/步進/伺服電機、RS232虛擬終端、電子溫度計等等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過PC機串口和外部電路實現(xiàn)雙向異步串行通信。</p><p>  實時仿真:支持UART/USART/EUSARTs仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。</p><p>  編譯及調(diào)試:支持單片機匯編語言的編

98、輯/編譯/源碼級仿真,內(nèi)帶8051、AVR、PIC的匯編編譯器,也可以與第三方集成編譯環(huán)境(如IAR、Keil和Hitech)結(jié)合,進行高級語言的源碼級仿真和調(diào)試。</p><p>  4. 實用的PCB設(shè)計平臺</p><p>  原理圖到PCB的快速通道: 原理圖設(shè)計完成后,一鍵便可進入ARES的PCB設(shè)計環(huán)境,實現(xiàn)從概念到產(chǎn)品的完整設(shè)計。</p><p>  

99、先進的自動布局/布線功能:支持器件的自動/人工布局;支持無網(wǎng)格自動布線或人工布線;支持引腳交換/門交換功能使PCB設(shè)計更為合理。</p><p>  完整的PCB設(shè)計功能:最多可設(shè)計16個銅箔層,2個絲印層,4個機械層(含板邊),靈活的布線策略供用戶設(shè)置,自動設(shè)計規(guī)則檢查,3D 可視化預(yù)覽。</p><p>  多種輸出格式的支持:可以輸出多種格式文件,包括Gerber文件的導入或?qū)С?,?/p>

100、利與其它PCB設(shè)計工具的互轉(zhuǎn)(如protel)和PCB板的設(shè)計和加工。</p><p>  4.1.3 ISIS智能原理圖輸入系統(tǒng)</p><p>  ISIS是PROTEUS系統(tǒng)的中心,它遠不僅是一個圖表庫。它是具有控制原理圖畫圖的外觀的超強的設(shè)計環(huán)境。無論用戶的要求是快速實現(xiàn)復雜設(shè)計的仿真以及PCB設(shè)計,還是設(shè)計精美的原理圖以供出版,ISIS都可以很好的完成。</p>&

101、lt;p>  ISIS提供給用戶圖形外觀包括線寬、填充類型、字符等的全部控制,使用戶能夠生成如雜志上看到一樣精美的原理圖,遠勝過CAD軟件繪制出的稀薄的線條。畫完圖可以以圖形文件輸出,或者拷貝到剪切板以便其他文件使用。這就使得ISIS成為制作技術(shù)文件,學術(shù)論文,項目報告的理想工具,也是PCB設(shè)計的一個出色的前端。畫圖的外形由風格模板定義。此外,此方案允許用戶定制元件庫提供的庫部件的外觀。</p><p> 

102、 4.1.4 Proteus簡單應(yīng)用</p><p>  1.繪制原理圖:繪制原理圖要在原理圖編輯窗口中的藍色方框內(nèi)完成。原理圖編輯窗口的操作是不同于常用的WINDOWS應(yīng)用程序的,正確的操作是:用左鍵放置元件;右鍵選擇元件;雙擊右鍵刪除元件;右鍵拖選多個元件;先右鍵后左鍵編輯元件屬性;先右鍵后左鍵拖動元件;連線用左鍵,刪除用右鍵;改連接線:先右擊連線,再左鍵拖動;中鍵放縮原理圖。</p><

103、p>  2.定制自己的元件:有三個個實現(xiàn)途徑,一是用PROTEUS VSM SDK開發(fā)仿真模型,并制作元件;另一個是在已有的元件基礎(chǔ)上進行改造,比如把元件改為bus接口的;還有一個是利用已制作好(別人的)的元件,我們可以到網(wǎng)上下載一些新元件并把它們添加到自己的元件庫里面。</p><p>  3.Sub-Circuits應(yīng)用:用一個子電路可以把部分電路封裝起來,這樣可以節(jié)省原理圖窗口的空間。</p&g

104、t;<p>  4.2 Keil軟件</p><p>  4.2.1 Keil軟件簡介</p><p>  Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。Keil C51軟件提供豐富的庫函數(shù)和功能強大的

105、集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。Keil C51軟件是一個基于32位Windows環(huán)境的應(yīng)用程序,支持C語言和匯編語言編程,其6.0以上的版本將編譯和仿真軟件統(tǒng)一為μVision(通常稱為μV2)。Keil提供包括C編譯器、宏匯編、連接器、庫管理和一

106、個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,由以下幾部分組成:μVision IDE集成開發(fā)環(huán)境C51編譯器、A51匯編器、LIB51庫管理器、BL51連接/定位器、OH51目標文件生成器以及 Monitor-51、RTX51實時操作系統(tǒng)。</p><p>  4.2.2 Keil軟件調(diào)試功能</p><p>  應(yīng)用Keil進行軟件仿真開發(fā)的主要步驟為:編寫源程序并保存—建立工程并添加源

107、文件—設(shè)置工程—編譯/匯編、連接,產(chǎn)生目標文件—程序調(diào)試。Keil使用“工程”(Project)的概念,對工程(而不能對單一的源程序)進行編譯/匯編、連接等操作。工程的建立、設(shè)置、編譯/匯編及連接產(chǎn)生目標文件的方法非常易于掌握。首先選擇菜單File-New…,在源程序編輯器中輸入?yún)R編語言或C語言源程序(或選擇File-Open…,直接打開已用其它編輯器編輯好的源程序文檔)并保存,注意保存時必須在文件名后加上擴展名.asm(.a51)或.

108、c;然后選擇菜單Project-New Project…,建立新工程并保存(保存時無需加擴展名,也可加上擴展名.uv2);工程保存后會立即彈出一個設(shè)備選擇對話框,選擇CPU后點確定返回主界面。這時工程管理窗口的文件頁(Files)會出現(xiàn)“Target1”,將其前面+號展開,接著選擇Source Group1,右擊鼠標彈出快捷菜單,選擇“Add File to Group ‘Source Group1’”,出現(xiàn)一個對話框,要求尋找并加入源

109、文件(在加入一個源文件后,該對話框不會消失,</p><p>  成功編譯/匯編、連接后,選擇菜單Debug-Start/Stop Debug Session(或按Ctrl+F5鍵)進入程序調(diào)試狀態(tài),Keil提供對程序的模擬調(diào)試功能,內(nèi)建一個功能強大的仿真CPU以模擬執(zhí)行程序。Keil能以單步執(zhí)行(按F11或選擇Debug-Step)、過程單步執(zhí)行(按F10或選擇Debug-Step Over)、全速執(zhí)行等多種運

110、行方式進行程序調(diào)試。如果發(fā)現(xiàn)程序有錯,可采用在線匯編功能對程序進行在線修改(Debug-Inline Assambly…),不必執(zhí)行先退出調(diào)試環(huán)境、修改源程序、對工程重新進行編譯/匯編和連接、然后再次進入調(diào)試狀態(tài)的步驟。對于一些必須滿足一定條件(如按鍵被按下等)才能被執(zhí)行的、難以用單步執(zhí)行方式進行調(diào)試的程序行,可采用斷點設(shè)置的方法處理(Debug-Insert/Remove Breakpoint或Debug-Breakpoints…等)

111、。在模擬調(diào)試程序后,還須通過編程器將.hex目標文件燒寫入單片機中才能觀察目標樣機真實的運行狀況。</p><p><b>  4.3 本章小結(jié)</b></p><p>  本章主要簡單介紹了研究本課題需要用到的仿真軟件Proteus和編譯軟件Keil,了解了這兩種軟件發(fā)展,功能和初步用法,了解了proteus的四大功能模塊,以及keil的調(diào)試功能等,為以后設(shè)計打好基

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論