基于atmega16的比賽專用秒表設(shè)計(jì)報(bào)告1_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  XXXXXXX學(xué)院</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  ( 2011 -- 2012年度第一學(xué)期)</p><p>  名 稱: 單片機(jī)與嵌入式系統(tǒng)設(shè)計(jì) </p><p>  題 目:基于ATmega16的比

2、賽專用秒表設(shè)計(jì)</p><p>  學(xué) 號(hào): </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p>  成 績:

3、 </p><p>  日期:2011年12月25日</p><p>  基于單片機(jī)ATmega16的比賽專用秒表設(shè)計(jì)</p><p>  摘要:近幾年來,人們?cè)絹碓街匾曮w育事業(yè)的發(fā)展,發(fā)展體育事業(yè)既可以促進(jìn)本國人民練就強(qiáng)健體魄,又可以作為各國之間的競爭手段,體現(xiàn)各國實(shí)力。為了創(chuàng)造公平公正的體育競爭環(huán)境,必須對(duì)各種比賽項(xiàng)目的結(jié)果進(jìn)行準(zhǔn)確的

4、記錄。本文論述了基于AVR單片機(jī)的體育比賽專用秒表的設(shè)計(jì)與實(shí)現(xiàn)。該系統(tǒng)以AVR單片機(jī)ATmega16為硬件核心,通過內(nèi)部計(jì)時(shí)器進(jìn)行準(zhǔn)確的計(jì)時(shí),采用LCD顯示屏作為輔助顯示模塊,顯示記錄的比賽成績,當(dāng)按下記錄按鍵,會(huì)記錄成績,按下停止按鍵會(huì)顯示記錄的成績。文中重點(diǎn)講述系統(tǒng)的軟硬件結(jié)構(gòu)和功能特點(diǎn),著重闡述了單片機(jī)及擴(kuò)展電路的設(shè)計(jì)思路和實(shí)現(xiàn)方法。在目前的使用中,該系統(tǒng)能夠可靠、穩(wěn)定、準(zhǔn)確的記錄比賽時(shí)間,具有推廣應(yīng)用價(jià)值。</p>

5、<p>  關(guān)鍵詞:AVR單片機(jī);計(jì)時(shí)器;按鍵;LCD顯示屏</p><p>  Design of the Competition Dedicated Stopwatch on ATmega16 AVR Microcontroller</p><p>  Abstract: In recent years, there is growing emphasis on sport

6、s development, sports development both for its own people trained to physical fitness, but also as a means of competition between countries, reflecting the national strength. In order to create a fair and just competitiv

7、e sports environment, must be the result of a variety of events accurate records. This article discusses the AVR-based microcontroller dedicated sports stopwatch design and implementation. The system for the AVR microco&

8、lt;/p><p><b>  目 錄</b></p><p><b>  摘要I</b></p><p>  第1章 緒 論1</p><p>  1.1 課題目的及意義1</p><p>  1.2 系統(tǒng)設(shè)計(jì)內(nèi)容1</p><p>

9、  第2章 系統(tǒng)概述3</p><p>  2.1 系統(tǒng)設(shè)計(jì)主要原理3</p><p>  2.2 系統(tǒng)硬件設(shè)計(jì)方案3</p><p>  2.2.1 微控制器的選擇3</p><p>  2.2.2 顯示方案的確定4</p><p>  2.3 系統(tǒng)軟件設(shè)計(jì)方案5</p><

10、;p>  2.3.1 微控器軟件設(shè)計(jì)方案6</p><p>  第3章 系統(tǒng)硬件設(shè)計(jì)實(shí)現(xiàn)9</p><p>  3.1 主控制器最小系統(tǒng)9</p><p>  3.1.1 ATmega16簡介[7]9</p><p>  3.1.2 引腳圖及引腳介紹10</p><p>  3.1.3 單片

11、機(jī)最小系統(tǒng)電路設(shè)計(jì)11</p><p>  3.1.3.1 電源設(shè)計(jì)11</p><p>  3.1.3.2 復(fù)位電路設(shè)計(jì)12</p><p>  3.1.3.3 晶振電路設(shè)計(jì)13</p><p>  3.1.3.4 串口通信電路設(shè)計(jì)14</p><p>  3.2 LCD顯示屏的顯示電路設(shè)計(jì)15

12、</p><p>  第4章 系統(tǒng)軟件設(shè)計(jì)實(shí)現(xiàn)17</p><p>  4.1 總體軟件設(shè)計(jì)17</p><p><b>  總 結(jié)19</b></p><p><b>  參考文獻(xiàn)20</b></p><p>  附錄1 ATmega16的引腳圖21<

13、;/p><p>  附錄2 系統(tǒng)設(shè)計(jì)部分程序22</p><p>  第1章 緒 論</p><p>  本章主要介紹本次設(shè)計(jì)的研究背景、目的與作用,以及在本次設(shè)計(jì)的主要內(nèi)容和設(shè)計(jì)技術(shù)指標(biāo)。</p><p>  1.1 課題目的及意義</p><p>  近年來隨著計(jì)算機(jī)在社會(huì)領(lǐng)域的滲透,單片機(jī)的應(yīng)用正在不斷地

14、走向深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測日新月益更新。在實(shí)時(shí)檢測和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個(gè)核心部件來使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對(duì)具體應(yīng)用對(duì)象特點(diǎn)的軟件結(jié)合,以作完善。目前AVR單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全

15、保障系統(tǒng),錄象機(jī)、攝象機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。AVR單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,AVR單片機(jī)的應(yīng)用如此廣泛而又潛力,因而也不用質(zhì)疑其生命力[1]。</p><p>  本課題需要完成一個(gè)完整系統(tǒng)的設(shè)計(jì),涉及到電子技術(shù)、計(jì)算機(jī)應(yīng)用等多學(xué)科知識(shí),是一個(gè)硬

16、軟件相結(jié)合的設(shè)計(jì)性題目。本課題融知識(shí)性與趣味性于一體,提供了一個(gè)有力的了解小家電設(shè)計(jì)技術(shù)的平臺(tái),能提高檢索文獻(xiàn)資料的能力、電子系統(tǒng)設(shè)計(jì)的能力、實(shí)際動(dòng)手的能力。而且可以通過這次設(shè)計(jì),很好的掌握系統(tǒng)設(shè)計(jì)的工作流程、開發(fā)步驟;熟悉單片機(jī)開發(fā)的通用編程語言。</p><p>  1.2 系統(tǒng)設(shè)計(jì)內(nèi)容</p><p>  本設(shè)計(jì)的題目是“基于單片機(jī)ATMega16的體育比賽專用秒表設(shè)計(jì)”。選擇AT

17、Mega16單片機(jī)為系統(tǒng)的主控芯片,采用內(nèi)部單片機(jī)計(jì)時(shí)器進(jìn)行計(jì)時(shí),通過按鍵進(jìn)行控制記錄數(shù)據(jù)和停止顯示數(shù)據(jù)。</p><p>  系統(tǒng)設(shè)計(jì)詳細(xì)任務(wù)如下:</p><p>  (1)整體方案的確定:包括單片機(jī)的選型,用AVR單片機(jī)作為主控器,分析ATmegal16單片機(jī)與計(jì)時(shí)器等部件實(shí)現(xiàn)軟、硬件接口的技術(shù)以及數(shù)據(jù)顯示方案:熟悉濕度傳感器工作原理,確定其與AVR單片機(jī)的接口設(shè)計(jì)方案。</p

18、><p> ?。?)數(shù)據(jù)顯示模塊設(shè)計(jì):系統(tǒng)使用LCD顯示,能夠顯示時(shí)間變化,并在按下停止先后顯示出8組記錄的數(shù)據(jù)。</p><p>  (3)AVR單片機(jī)最小系統(tǒng)的設(shè)計(jì)。</p><p>  實(shí)現(xiàn)所有的硬件、軟件設(shè)計(jì)、系統(tǒng)整體調(diào)試、形成可以正常運(yùn)行的產(chǎn)品為本次設(shè)計(jì)的最終目標(biāo)。</p><p>  論文將從系統(tǒng)的設(shè)計(jì)總體方案;硬件、軟件的設(shè)計(jì)實(shí)現(xiàn)等

19、方面進(jìn)行介紹。</p><p><b>  第2章 系統(tǒng)概述</b></p><p>  本章分為三個(gè)部分,主要介紹本次設(shè)計(jì)的系統(tǒng)的主要設(shè)計(jì)原理,給出硬件選擇以及軟件設(shè)計(jì)的最終方案。</p><p>  2.1 系統(tǒng)設(shè)計(jì)主要原理</p><p>  秒表是體育競技中很重要的部分,根據(jù)采用的計(jì)時(shí)元件和記錄方法的不同,其

20、精度也不同,因而對(duì)時(shí)間數(shù)據(jù)采集的精度也不同,這樣就給比賽的現(xiàn)場測試帶來了很大的不便,我們?cè)趯?duì)計(jì)時(shí)器的研究和設(shè)計(jì)過程中查閱了大量的資料和成果,提出了能夠?qū)崿F(xiàn)精確測量并記錄時(shí)間的系統(tǒng)設(shè)計(jì)方案。</p><p>  系統(tǒng)由單片機(jī)內(nèi)部計(jì)時(shí)器進(jìn)行計(jì)時(shí),通過按鍵控制開始、記錄數(shù)據(jù)和停止并顯示數(shù)據(jù),數(shù)據(jù)結(jié)果通過LCD顯示屏進(jìn)行顯示,結(jié)果記錄完之后可以選擇清零重新計(jì)時(shí)。</p><p>  2.2 系統(tǒng)

21、硬件設(shè)計(jì)方案</p><p>  2.2.1 微控制器的選擇</p><p>  目前,再電子系統(tǒng)研究與設(shè)計(jì)中,常用的微控器有MC51單片機(jī)、PIC單片機(jī)、AVR單片機(jī)和ARM芯片。</p><p>  方案一:采用ARM作為微控器</p><p>  ARM 微處理器已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市

22、場,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位RISC微處理器75%以上的市場份額。但是,ARM技術(shù)往往需要第三方工具、軟件的支持,且ARM系列處理器很少集成片上硬件資源,實(shí)際產(chǎn)品成本方面,ARM配置外設(shè)價(jià)格較高,PCB版也好設(shè)計(jì),往往還需要考慮信號(hào)的完整性等,因此,對(duì)于初學(xué)者來說,使用起來不是很方便。</p><p>  方案二:采用PIC單片機(jī)作為微控器</p><p>  PIC單片

23、機(jī)速度快,片內(nèi)資源豐富,抗干擾能力強(qiáng),價(jià)格便宜。但沒有地址總線,不適宜做大系統(tǒng),而且只能使用匯編指令,雖然筒單,但不適合寫大程序。CPU采用RISC結(jié)構(gòu),分別僅有33,35,58條指令,采用Harvard雙總線結(jié)構(gòu),運(yùn)行速度快,低工作電壓,低功耗,較大的輸入輸出直接驅(qū)動(dòng)能力,一次性編程,小體積,適用于用量大、檔次低、價(jià)格敏感的產(chǎn)品。</p><p>  方案三:采用AVR單片機(jī)作為微控器[3]</p>

24、<p>  AVR單片機(jī)采用的RISC優(yōu)先選取使用頻率最高的簡單指令,避免復(fù)雜指令:并固定指令寬度,減少指令格式和尋址方式的種類,從而縮短指令周期,提高運(yùn)行速度。AVR單片機(jī)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是分離的,并且可對(duì)具有相同地址的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器進(jìn)行獨(dú)立的尋址。在AVR單片機(jī)中,CPU執(zhí)行當(dāng)前指令時(shí)取出將要執(zhí)行的下一條指令放入寄存器中,從而可以避免傳統(tǒng) MCS51系列單片機(jī)中多指令周期的出現(xiàn)。傳統(tǒng)的MCS51系列單片

25、機(jī)所有的數(shù)據(jù)處理都是基于一個(gè)累加器的,因此累加器與程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器之間的數(shù)據(jù)轉(zhuǎn)換就成了單片機(jī)的瓶頸;在AVR單片機(jī)中,寄存器由32個(gè)通用工作寄存器組成,并且任何一個(gè)寄存器都可以充當(dāng)累加器,從而有效地避免了累加器的瓶頸效應(yīng),提高了系統(tǒng)的性能。</p><p>  綜上所述,AVR單片機(jī)與51單片機(jī)、PIC單片機(jī)相比運(yùn)行效率高很多、芯片內(nèi)部的Flsah、EEPROM、SRAM容量較大、全部支持在線編程擦寫、每個(gè)

26、I/O口都可以以推換驅(qū)動(dòng)的方式輸出高、低電平,驅(qū)動(dòng)能力強(qiáng)、內(nèi)部資源豐富,一般都集成AD、DA模數(shù)轉(zhuǎn)換器;PWM;SPI、USART、TWI、I2C通信口;豐富的中斷源等?,F(xiàn)在比較流行的型號(hào)是ATmega8/16。所以,本設(shè)計(jì)選用ATmega16單片機(jī)作為主控芯片。</p><p>  2.2.2 顯示方案的確定</p><p>  LED和LCD是目前普遍采用的兩種顯示技術(shù)。</p

27、><p>  方案一:采用LED顯示技術(shù)</p><p>  LED是發(fā)光二極管(Light Emitting Diode)的英文縮寫,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。LED應(yīng)用可分為兩大類:一是LED單管應(yīng)用,包括背光源LED,紅外線LED等;另外就是LED顯示屏。目前,中國在LED基礎(chǔ)材料制造方面與國際還存在著一定的差距,但就LED顯示屏而言,中國的設(shè)計(jì)

28、和生產(chǎn)技術(shù)水平基本與國際同步。LED顯示屏是由發(fā)光二極管排列組成的一顯示器件。它采用低電壓掃描驅(qū)動(dòng),具有耗電少、使用壽命長、成本低、亮度高、故障少、視角大、可視距離遠(yuǎn)等特點(diǎn)。</p><p>  方案二:采用LCD顯示技術(shù)</p><p>  LCD是液晶顯示屏的全稱,主要有TFT、UFB、TFD、STN等幾種類型的液晶顯示屏。其主要特點(diǎn)是:低壓應(yīng)用,低驅(qū)動(dòng)電壓,固體化使用安全性和可靠性提

29、高;平板化,又輕薄,節(jié)省了大量原材料和使用空間;低功耗,節(jié)省了大量的能源;品種多樣,使用方便靈活、維修、更新、升級(jí)容易等許多特點(diǎn)。顯示范圍覆蓋了從1英寸至40英寸范圍內(nèi)的所有顯示器的應(yīng)用范圍以及投影大平面,是全尺寸顯示終端;顯示質(zhì)量從最簡單的單色字符圖形到高分辨率,高彩色保真度,高亮度,高對(duì)比度,高響應(yīng)速度的各種規(guī)格型號(hào)的視頻顯示器;顯示方式有直視型,投影型,透視式,也有反射式。環(huán)保特性好,無輻射、無閃爍,對(duì)使用者的健康無損害。   

30、簡單地說,LCD與LED是兩種不同的顯示技術(shù),LCD是由液態(tài)晶體組成的顯示屏,而LED則是由發(fā)光二極管組成的顯示屏。LCD顯示器與LED顯示器相比,LCD在亮度、功耗、重量等多方面,都更具優(yōu)勢(shì)。所以,在本設(shè)計(jì)中,采用LCD顯示技術(shù)[5]。</p><p>  2.3 系統(tǒng)軟件設(shè)計(jì)方案</p><p>  系統(tǒng)軟件就是單片機(jī)應(yīng)用軟件。單片機(jī)應(yīng)用軟件主要實(shí)現(xiàn)時(shí)間的技術(shù)、按鍵的控制、LCD顯示

31、屏的顯示等功能。</p><p>  系統(tǒng)軟件部分的設(shè)計(jì)主要包括主程序和中斷服務(wù)程序。其中主程序的功能是完成系統(tǒng)的初始化、按鍵的查詢控制。中斷服務(wù)程序根據(jù)中斷源來編寫需要執(zhí)行的內(nèi)容。系統(tǒng)的主程序流程圖如下圖圖2-1所示:</p><p>  2.3.1 微控器軟件設(shè)計(jì)方案</p><p>  常用的單片機(jī)編程語言是匯編和C語言。</p><p&

32、gt;  方案一:使用匯編語言</p><p>  匯編語言(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語言。在匯編語言中,用助記符(Memoni)代替操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替地址碼。這樣用符號(hào)代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。匯編語言是面向具體機(jī)型的,它離不開具體計(jì)算機(jī)的指令系統(tǒng),因此,對(duì)于不同型號(hào)的計(jì)算機(jī),有著不同的結(jié)構(gòu)的匯編語言,而且,對(duì)于同

33、一問題所編制的匯編語言程序在不同種類的計(jì)算機(jī)間是互不相通的。匯編語言像機(jī)器指令一樣,是硬件操作的控制信息,因而仍然是面向機(jī)器的語言,使用起來還是比較繁瑣費(fèi)時(shí),通用性也差。</p><p>  匯編語言能夠直接訪問與硬件相關(guān)的存儲(chǔ)器或I/O端口; 能夠不受編譯器的限制,對(duì)生成的二進(jìn)制代碼進(jìn)行完全的控制;能夠根據(jù)特定的應(yīng)用對(duì)代碼做最佳的優(yōu)化,提高運(yùn)行速度; 能夠最大限度地發(fā)揮硬件的功能。但是還應(yīng)該認(rèn)識(shí)到,匯編語言是一

34、種層次非常低的語言,它僅僅高于直接手工編寫二進(jìn)制的機(jī)器指令碼,因此不可避免地存在一些缺點(diǎn):編寫的代碼非常難懂,不好維護(hù); 很容易產(chǎn)生Bug,難于調(diào)試;只能針對(duì)特定的體系結(jié)構(gòu)和處理器進(jìn)行優(yōu)化;開發(fā)效率很低,時(shí)間長且單調(diào);兼容性不好,與硬件關(guān)系非常緊密。因而不是很適合初學(xué)者的應(yīng)用。</p><p><b>  方案二:使用C語言</b></p><p>  C語言的語法限

35、制不太嚴(yán)格,對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等[6]。指針是C語言的一大特色,可以說C語言優(yōu)于其它高級(jí)語言的一個(gè)重要原因就是因?yàn)樗兄羔槻僮骺梢灾苯舆M(jìn)行靠近硬件的操作,但是C的指針操作也給它帶來了很多不安全的因素。</p><p>  但是對(duì)于本次設(shè)計(jì)來還說,C語言具有以下優(yōu)點(diǎn):</p><p> ?。?)簡潔緊湊、靈活方便</p><p

36、>  C語言一共只有32個(gè)關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來。C語言可以象匯編語言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。</p><p><b> ?。?)運(yùn)算符豐富</b></p><p>  C的運(yùn)算符包含的范圍很廣泛,共有34個(gè)運(yùn)算符。C語言把括號(hào)、賦值、

37、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富表達(dá)式類型多樣化。</p><p><b>  (3)數(shù)據(jù)結(jié)構(gòu)豐富</b></p><p>  C的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。</p><p> ?。?)C是結(jié)構(gòu)式語言</p><

38、p>  結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。</p><p> ?。?)C語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大</p><p>  雖然C語言也是強(qiáng)類型語言,但它的語

39、法比較靈活,允許程序編寫者有較大的自由度。</p><p> ?。?)C語言允許直接訪問物理地址,可以直接對(duì)硬件進(jìn)行操作</p><p>  因?yàn)榧染哂懈呒?jí)語言的功能,又具有低級(jí)語言的許多功能,能夠象匯編語言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,可以用來寫系統(tǒng)軟件。</p><p> ?。?)C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高</p><p>

40、  一般只比匯編程序生成的目標(biāo)代碼效率低10へ20%。</p><p>  綜合比較之后,本次設(shè)計(jì)采用方案二,即使用C語言作為微控制器的編程語言。</p><p>  第3章 系統(tǒng)硬件設(shè)計(jì)實(shí)現(xiàn)</p><p>  硬件是系統(tǒng)的載體與執(zhí)行結(jié)構(gòu),硬件設(shè)計(jì)是本次設(shè)計(jì)的重點(diǎn),主要設(shè)計(jì)傳感器信號(hào)放大、采集、處理,顯示處理,聲光報(bào)警,執(zhí)行電路設(shè)計(jì),系統(tǒng)供電等多個(gè)部分。本章分為

41、2節(jié)介紹系統(tǒng)的硬件設(shè)計(jì)實(shí)現(xiàn)。</p><p>  3.1 主控制器最小系統(tǒng)</p><p>  3.1.1 ATmega16簡介[7]</p><p>  ATmega16單片機(jī)是1997年由ATMEL公司研發(fā)出的增強(qiáng)型內(nèi)置Flash的RISC精簡指令集高速8位單片機(jī)。該單片機(jī)具有AVR高性能、低功耗RISC結(jié)構(gòu),工作在8MHz時(shí)具有8MIPS的性能,同時(shí)片內(nèi)1

42、6KB的在線可編程FLASH存儲(chǔ)器,可擦除1000次以上,并且集成了512B的SRAM 和512 B在線可編程EEPROM。另一個(gè)顯著的特點(diǎn)是自帶8通道10位高精度的逐次逼近式A/D轉(zhuǎn)換器,A/D引腳與PA口的引腳兩者復(fù)用,可以通過程序指定來加以區(qū)別應(yīng)用。另外,它還擁有很寬的工作電壓范圍,可以在2.7~6V之間正常運(yùn)行,具備很強(qiáng)的適應(yīng)性。</p><p>  AVR單片機(jī)具有良好的集成性能,采用低功率、非揮發(fā)的C

43、MOS工藝制造,除具有低功耗、高密度的特點(diǎn)外,還支持低電壓的聯(lián)機(jī)Flash,EEPROM寫入功能。AVR單片機(jī)還支持 Basic、C等高級(jí)語言編程。采用高級(jí)語言對(duì)單片機(jī)系統(tǒng)進(jìn)行開發(fā)是單片機(jī)應(yīng)用的發(fā)展趨勢(shì)。對(duì)單片機(jī)用高級(jí)語言編程可很容易地實(shí)現(xiàn)系統(tǒng)移植,并加快軟件的開發(fā)過程。</p><p>  ATmega16的主要性能參數(shù)及特性如下:</p><p>  ● 16K 字節(jié)可重擦寫Flash

44、閃存存儲(chǔ)器,擦寫壽命為10000次;</p><p>  ● 在16MHZ頻率下速度為16MIPS的8位RISC結(jié)構(gòu)單片機(jī),內(nèi)含硬件乘法器;</p><p>  ● 32個(gè)可編程的I/O口,40引腳PDIP封裝,32個(gè)通用寄存器;</p><p><b>  ● 全靜態(tài)工作;</b></p><p>  ● 8通道10位

45、AD轉(zhuǎn)換器,支持單端和雙端差分信號(hào)輸入,內(nèi)帶增益可編程運(yùn)算放大器;</p><p>  ● 2個(gè)8位定時(shí)/計(jì)數(shù)器,1個(gè)16位定時(shí)/計(jì)數(shù)器,帶捕捉、比較功能;</p><p>  ● 通過JTAG接口實(shí)現(xiàn)對(duì)Flash、EEPROM、熔絲位和鎖定位的編程;</p><p>  ● 兩個(gè)可編程的串行USART,可工作于主機(jī)/ 從機(jī)模式的SPI 串行接口。</p>

46、;<p>  ATmega16可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式:空閑方式停止CPU的工作,但允許RAM、定時(shí)/計(jì)數(shù)器、串行通信口及中斷系統(tǒng)繼續(xù)工作;掉電方式保存RAM中的內(nèi)容,但是振蕩器停止工作并禁止其他所有部件工作到下一個(gè)硬件復(fù)位。</p><p>  3.1.2 引腳圖及引腳介紹</p><p>  ATmega16的引腳圖見附錄1。<

47、/p><p>  VCC 電源正 </p><p><b>  GND 電源地</b></p><p>  端口A(PA7~PA0) 端口A作為A/D 轉(zhuǎn)換器的模擬輸入端。端口A為8位雙向I/O口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),若內(nèi)部上拉電阻使能,端口被外部電路拉低時(shí)

48、將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口A 處于高阻狀態(tài)。</p><p>  端口B(PB7~PB0) 端口B為8位雙向I/O口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),若內(nèi)部上拉電阻使能,端口被外部電路拉低時(shí)將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口B處于高阻狀態(tài)。</p><p>  端口C(PC7~PC

49、0) 端口C為8位雙向I/O口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),若內(nèi)部上拉電阻使能,端口被外部電路拉低時(shí)將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口C 處于高阻狀態(tài)。如果JTAG接口使能,即使復(fù)位出現(xiàn)引腳PC5(TDI)、PC3(TMS)與PC2(TCK)的上拉電阻被激活。</p><p>  端口D(PD7~PD0) 端口D為8位雙向I

50、/O 口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),若內(nèi)部上拉電阻使能,則端口被外部電路拉低時(shí)將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口D處于高阻狀態(tài)。</p><p>  RESET 復(fù)位輸入引腳。持續(xù)時(shí)間超過最小門限時(shí)間的低電平將引起系統(tǒng)復(fù)位。持續(xù)時(shí)間小于門限間的脈沖不能保證可靠復(fù)位。</p><p>  XTAL1

51、反向振蕩放大器與片內(nèi)時(shí)鐘操作電路的輸入端。</p><p>  XTAL2 反向振蕩放大器的輸出端。</p><p>  AVCC AVCC是端口A與A/D轉(zhuǎn)換器的電源。不使用ADC時(shí),該引腳應(yīng)直接與VCC連接。使用ADC時(shí)應(yīng)通過一個(gè)低通濾波器與VCC 連接。</p><p>  AREF A/D的模擬基準(zhǔn)輸入引腳。</p><p>

52、;  3.1.3 單片機(jī)最小系統(tǒng)電路設(shè)計(jì)</p><p>  在單片機(jī)硬件最小系統(tǒng)中,沒有任何信號(hào)線的連接,只有電源到主板的電源連接,在判斷的過程中通過電源指示燈及工作狀態(tài)指示燈來判斷這一核心組成部分是否可正常工作。ATmega16單片機(jī)的最小系統(tǒng)如下圖圖3-3所示。</p><p>  圖3-3 單片機(jī)最小系統(tǒng)</p><p>  3.1.3.1 電源設(shè)計(jì)&

53、lt;/p><p>  單片機(jī)是一個(gè)電子器件,一個(gè)電子器件能夠工作的第一個(gè)前提就是要有電源電源是一切電子器件工作的前提,對(duì)于單片機(jī)系統(tǒng)也不例外。AVR單片機(jī)最常用的電源電壓是5V。</p><p>  ATmega16的電源電路設(shè)計(jì)如上圖圖3-4所示。</p><p>  3.1.3.2 復(fù)位電路設(shè)計(jì)</p><p>  ATmega16有5個(gè)

54、復(fù)位源[8]:</p><p><b> ?。?)上電復(fù)位</b></p><p>  電源電壓低于上電復(fù)位門限VPOT時(shí),MCU復(fù)位。上電復(fù)位(POR)脈沖由片內(nèi)檢測電路產(chǎn)生,POR電路保證器件在上電時(shí)復(fù)位。VCC達(dá)到上電門限電壓后觸發(fā)延遲計(jì)數(shù)器。在計(jì)數(shù)器溢出之前器件一直保持為復(fù)位狀態(tài)。當(dāng)VCC下降時(shí),只要低于檢測門限,RESET信號(hào)立即生效。</p>

55、<p><b> ?。?)外部復(fù)位</b></p><p>  引腳RESET上的低電平持續(xù)時(shí)間大于最小脈沖寬度時(shí)MCU復(fù)位。外部復(fù)位由外加于RESET引腳的低電平產(chǎn)生。當(dāng)復(fù)位低電平持續(xù)時(shí)間大于最小脈沖寬度時(shí)即觸發(fā)復(fù)位過程,即使此時(shí)并沒有時(shí)鐘信號(hào)在運(yùn)行。當(dāng)外加信號(hào)達(dá)到復(fù)位門限電壓VRST(上升沿)時(shí),tTOUT延時(shí)周期開始。延時(shí)結(jié)束后MCU即啟動(dòng)。</p><

56、p><b> ?。?)看門狗復(fù)位</b></p><p>  看門狗使能并且看門狗定時(shí)器溢出時(shí)復(fù)位發(fā)生。看門狗定時(shí)器溢出時(shí)將產(chǎn)生持續(xù)時(shí)間為1個(gè)CK周期的復(fù)位脈沖。在脈沖的下降沿,延時(shí)定時(shí)器開始對(duì)tTOUT記數(shù)。</p><p><b> ?。?)掉電檢測復(fù)位</b></p><p>  掉電檢測復(fù)位功能使能,且電源電

57、壓低于掉電檢測復(fù)位門限VBOT時(shí)MCU即復(fù)位。BOD電路的開關(guān)由熔絲位BODEN控制。當(dāng)BOD使能后(BODEN被編程),一旦VCC下降到觸發(fā)電平以下(VBOT-,F(xiàn)igure 19),BOD復(fù)位立即被激發(fā)。當(dāng)VCC上升到觸發(fā)電平以上時(shí)(VBOT+,F(xiàn)igure19),延時(shí)計(jì)數(shù)器開始計(jì)數(shù),一旦超過溢出時(shí)間tTOUT,MCU即恢復(fù)工作。</p><p> ?。?)JTAG AVR復(fù)位</p><

58、p>  復(fù)位寄存器為1時(shí)MCU復(fù)位。JTAG通過復(fù)位寄存器mcur,復(fù)位寄存器為1時(shí)MCU復(fù)位。通過JTAG指令A(yù)VR_RESET可以使JTAG復(fù)位寄存器置位,并引發(fā)MCU復(fù)位,并使 JTRF 置位。上電復(fù)位將使其清零,也可以通過寫“0”來清除。</p><p>  本設(shè)計(jì)選用了最直接的復(fù)位形式,由于AVR單片機(jī)本身內(nèi)部帶有復(fù)位電路的優(yōu)勢(shì),只需要接一個(gè)10K上拉電阻就可以完成復(fù)位電路的設(shè)計(jì)。為了可靠,可以加

59、上一只0.1uF的電容以消除干擾和雜波,如下圖圖3-5所示:</p><p>  3.1.3.3 晶振電路設(shè)計(jì)</p><p>  單片機(jī)內(nèi)部的各種功能電路絕大多數(shù)是由數(shù)字電路構(gòu)成的。數(shù)字電路的工作過程,尤其是時(shí)序邏輯電路的工作過程,離不開時(shí)鐘脈沖信號(hào),即時(shí)間基準(zhǔn)信號(hào),每一步細(xì)微的動(dòng)作都是在一個(gè)共同的時(shí)間基準(zhǔn)信號(hào)驅(qū)動(dòng)之下完成的。作為時(shí)基發(fā)生器的時(shí)鐘振蕩電路,為整個(gè)單片機(jī)芯片內(nèi)部各個(gè)部分電

60、路的工作提供系統(tǒng)時(shí)鐘信號(hào),也在為單片機(jī)與其他外接芯片之間的通信以及與其他數(shù)字系統(tǒng)或者計(jì)算機(jī)系統(tǒng)之間通信,提供可靠的同步時(shí)鐘信號(hào)。</p><p>  AVR單片機(jī)設(shè)計(jì)了4種類型的時(shí)基振蕩方式可供選擇:標(biāo)準(zhǔn)的晶體振蕩器/陶瓷諧振器振蕩方式XT;高頻的晶體振蕩器/陶瓷諧振器振蕩方式HS(4MHz)以上;低頻的晶體振蕩器/陶瓷諧振器振蕩方式LP(32.768kHz);外接電容元件的阻容振蕩方式RC。在本設(shè)計(jì)中,由于需要

61、考慮到通信時(shí)的波特率的設(shè)置,所以選用能產(chǎn)生較精確時(shí)鐘的晶體振蕩器(7.3728MHz)。晶振電路與單片機(jī)內(nèi)部結(jié)構(gòu)關(guān)系圖如下圖圖3-6所示。</p><p>  為了由外部源驅(qū)動(dòng)器件,當(dāng)XTAL1被驅(qū)動(dòng)時(shí),XTAL2不能連接,如下圖圖3-7所示。</p><p>  圖3-6 晶振電路設(shè)計(jì) 圖3-7 外部時(shí)鐘驅(qū)動(dòng)設(shè)置</p><p&

62、gt;  3.1.3.4 串口通信電路設(shè)計(jì)</p><p>  使用串口的時(shí)候,需要連接跳線JP2,當(dāng)1和2連接,3和4連接的時(shí)候處于PC與單片機(jī)通訊狀態(tài),當(dāng)1和3連接,2和4不連接的時(shí)候,串口調(diào)試助手發(fā)什么數(shù)據(jù),就能返回什么數(shù)據(jù)。</p><p>  3.2 LCD顯示屏的顯示電路設(shè)計(jì)</p><p>  設(shè)計(jì)中加入了LCD顯示屏顯示模塊,用來實(shí)時(shí)顯示相關(guān)數(shù)據(jù)

63、的大小,以達(dá)到一個(gè)更加直觀的效果。本設(shè)計(jì)采用了單片機(jī)直接驅(qū)動(dòng)的方式來完成對(duì)測試數(shù)據(jù)的顯示處理。</p><p>  LCD顯示屏的顯示電路設(shè)計(jì)電路圖如下圖圖3-11所示:</p><p>  單片機(jī)I/O口輸出引腳是PB口,為復(fù)用端口,在很大程度上節(jié)約了I/ O資源,簡化了硬件的設(shè)計(jì),使系統(tǒng)具有較高的集成度。</p><p>  第4章 系統(tǒng)軟件設(shè)計(jì)實(shí)現(xiàn)</

64、p><p>  系統(tǒng)軟件包括單片機(jī)應(yīng)用軟件和PC機(jī)應(yīng)用軟件。單片機(jī)應(yīng)用軟件主要實(shí)現(xiàn)定時(shí)數(shù)據(jù)采集、數(shù)字信號(hào)處理、存儲(chǔ)、顯示、通信處理等功能;PC機(jī)應(yīng)用軟件主要是進(jìn)一步處理下位機(jī)傳輸過來的數(shù)據(jù),提供友好的監(jiān)測界面,并進(jìn)行數(shù)據(jù)的保存和歷史查詢等。</p><p>  4.1 總體軟件設(shè)計(jì)</p><p>  系統(tǒng)軟件設(shè)計(jì)總體流程框圖如下圖圖4-1所示。</p>

65、<p>  系統(tǒng)語言采用C語言編制,包括主程序和中斷服務(wù)子程序。主程序的功能是完成系統(tǒng)的初始化、信號(hào)采集及處理、顯示、濕度超限報(bào)警以及與上位機(jī)之間的通信。根據(jù)系統(tǒng)工作特點(diǎn),程序采用結(jié)構(gòu)化的軟件設(shè)計(jì)方法。</p><p><b>  總 結(jié)</b></p><p>  本文論述了基于AVR單片機(jī)的比賽專用秒表的設(shè)計(jì),實(shí)現(xiàn)了對(duì)時(shí)間的檢測及記錄存儲(chǔ)。該設(shè)計(jì)有效

66、地利用AVR單片機(jī)的內(nèi)部資源,很好地把計(jì)時(shí)器模塊、LCD顯示模塊組織起來,使得整個(gè)系統(tǒng)運(yùn)行可靠,操作方便,測量誤差在5%以內(nèi)。實(shí)現(xiàn)了低功耗,高可靠性,操作方便。在目前的試用中,對(duì)該設(shè)計(jì)反映很好,它能夠可靠、穩(wěn)定、安全的記錄時(shí)間,具有推廣應(yīng)用價(jià)值。</p><p>  從開始對(duì)整個(gè)題目的分析,到最后的設(shè)計(jì)完成整個(gè)系統(tǒng)的過程中,我對(duì)單片機(jī)技術(shù)和測控系統(tǒng)的原理及設(shè)計(jì)有了更深刻的認(rèn)識(shí)。以ATmega16單片機(jī)為核心,結(jié)合

67、接口電路理論和C語言知識(shí)設(shè)計(jì)出了本系統(tǒng)。</p><p>  在確定方案之后,對(duì)部分電路采取了試驗(yàn)版焊接測試,保證以后的電路可以實(shí)現(xiàn)聯(lián)調(diào)。在基本確定了電路圖之后,我們開始了對(duì)電路板的設(shè)計(jì),考慮到整個(gè)產(chǎn)品要具良好的的集成性,我們將整個(gè)系統(tǒng)安置在一塊板子上,并著重考慮了布局的設(shè)計(jì)、走線方式。</p><p>  在程序設(shè)計(jì)方面并沒有遇到很大的問題,采取的是C語言完成所有的程序。但是在聯(lián)機(jī)調(diào)試時(shí)

68、仍遇到較大的問題,因?yàn)闇y試時(shí)僅對(duì)部分電路進(jìn)行了測試,整機(jī)聯(lián)調(diào)時(shí)并沒有想象中的那么輕松。每個(gè)模塊都單獨(dú)編寫程序進(jìn)行調(diào)試,發(fā)現(xiàn)其中的硬件和軟件問題,之后才進(jìn)行修改、完善;當(dāng)所有模塊基本調(diào)試完成后,將所有的程序合成后進(jìn)行整機(jī)聯(lián)調(diào)。這樣的調(diào)試是很費(fèi)時(shí)間,加重了工作量,但是卻保證了調(diào)試的質(zhì)量。經(jīng)過幾個(gè)月的努力,雖然設(shè)計(jì)最終基本成功,但是整個(gè)系統(tǒng)也還有一些需要改進(jìn)的地方。</p><p>  在設(shè)計(jì)過程中,我感覺學(xué)到了許多東

69、西,并且把一些以前學(xué)的不好的知識(shí)又重新鞏固了一遍,而且還加深了理解與認(rèn)識(shí)。由于要查閱很多文獻(xiàn)資料,還使我開闊了眼界,拓展了思路。實(shí)踐中,更加熟練的掌握了Protel、Office等應(yīng)用軟件。通過完成設(shè)計(jì),我初步明白了怎樣把所學(xué)的知識(shí)運(yùn)用到實(shí)踐中來,終于能夠做到學(xué)以致用,而且也使我的動(dòng)手能力和實(shí)踐能力有了很大的提高。 </p><p><b>  參考文獻(xiàn)</b></p>&l

70、t;p>  [1] 李泓. AVR單片機(jī)入門與實(shí)踐[M]. 北京:北京航空航天大學(xué)出版社,2008:145-167.</p><p>  [2] 譚浩強(qiáng). C程序設(shè)計(jì)(第三版)[M]. 北京:清華大學(xué)出版社,2005:37-55.</p><p>  [3] 丁化成. AVR單片機(jī)應(yīng)用設(shè)計(jì)[M]. 北京:北京航空航天大學(xué)出版社,2002:24-31.</p><p

71、>  [4] 趙亮. 單片機(jī)從入門到精通系列講座(一)——單片機(jī)最小系統(tǒng)及I/O應(yīng)用[J]. 電子制作,2008(2):75-78.</p><p>  [5] 張軍. AVR單片機(jī)-C語言程序設(shè)計(jì)實(shí)例精粹[M]. 北京:電子工業(yè)出版社,2009:65-69.</p><p>  [6] 李廣軍. 微機(jī)系統(tǒng)原理與接口技術(shù)[M]. 成都:電子科技大學(xué)出版社,2005:87-101.&l

72、t;/p><p>  [7] 劉斌儒,戴勇. 基于AVR單片機(jī)Mega16的電子時(shí)鐘設(shè)計(jì)[J]. 國外電子元器件,2008(7):18-19.</p><p>  附錄1 ATmega16的引腳圖</p><p>  附錄2 系統(tǒng)設(shè)計(jì)部分程序</p><p>  /***************************************

73、******************* </p><p>  * 函數(shù)名稱:void display() </p><p>  * 功 能:將時(shí)、分、秒等的數(shù)字裝換為字符串并顯示在LCD中 </p><p>  * 入口參數(shù):無

74、 </p><p>  * 出口參數(shù):無 </p><p>  **********************************************************/ </p><p>  voi

75、d display() //將時(shí)、分、秒等的數(shù)字裝換為字符串并顯示在LCD中</p><p><b>  { </b></p><p>  itoa(hour,str); strcat(time,str);strcatf(time,":"); //時(shí)間字符串中串上小時(shí)和':' </p><

76、;p>  itoa(minu,str);strcat(time,str);strcatf(time,":"); //時(shí)間字符串中串上分鐘和':'</p><p>  itoa(sec,str);strcat(time,str);strcatf(time,":"); //時(shí)間字符串中串上秒數(shù)和':'</p><p

77、>  itoa(t,str);strcat(time,str); //時(shí)間字符串中串上中斷次數(shù)</p><p>  lcd_clear(); //清屏</p><p>  lcd_gotoxy(y1,x1);</p><p>  lcd_puts(time); //LCD上顯示時(shí)間</p>

78、<p>  strcpyf(time,""); // 清除本次時(shí)間,以備下次使用。 </p><p><b>  }</b></p><p>  /********************************************************** </p><p>  * 中斷名稱:計(jì)時(shí)器

79、T/C0比較匹配清零中斷 </p><p>  * 功 能:時(shí)間控制 </p><p>  **********************************************************/

80、 </p><p>  interrupt [TIM0_COMP] void timer0_comp_isr(void)</p><p><b>  {</b></p><p>  // Place your code here</p><p>  if(++time_counter==10)</p>&

81、lt;p><b>  {</b></p><p>  time_counter=0;</p><p>  key_stime_ok = 1; // 到10ms</p><p>  if(++t==100) {sec++;t=0;} //定時(shí)時(shí)間為10ms,進(jìn)100次中斷為1s</p><p>  

82、if(sec==60) {minu++;sec=0;} //秒數(shù)到60時(shí),分鐘數(shù)增1,秒數(shù)清零</p><p>  if(minu==60) {hour++;minu=0;} //分鐘數(shù)到60時(shí),小時(shí)數(shù)增1,分鐘數(shù)清零 </p><p>  display(); //在LCD上顯示計(jì)時(shí)時(shí)間</p><p><b>  }</b></p

83、><p><b>  }</b></p><p>  /********************************************************** </p><p>  * 中斷名稱:外部中斷INT0 </p><p>  * 功 能:

84、記錄數(shù)據(jù) </p><p>  **********************************************************/</p><p>  interrupt [EXT_INT0] void ext_int0_isr(void) /

85、/INT0 用于按鍵記錄8組數(shù)據(jù) S3</p><p><b>  {</b></p><p><b>  count++;</b></p><p>  if(count==1)</p><p><b>  {</b></p><p>  itoa(

86、hour,str1); strcat(timecunchu1,str1);strcatf(timecunchu1,":"); //時(shí)間字符串中串上小時(shí)和':'</p><p>  itoa(minu,str1);strcat(timecunchu1,str1);strcatf(timecunchu1,":"); //時(shí)間字符串中串上分鐘和':&#

87、39;</p><p>  itoa(sec,str1);strcat(timecunchu1,str1);strcatf(timecunchu1,":"); //時(shí)間字符串中串上秒數(shù)和':'</p><p>  itoa(t,str1);strcat(timecunchu1,str1);</p><p><b> 

88、 }</b></p><p>  else if(count==2)</p><p><b>  {</b></p><p>  itoa(hour,str1); strcat(timecunchu2,str1);strcatf(timecunchu2,":"); //時(shí)間字符串中串上小時(shí)和':'

89、;</p><p>  itoa(minu,str1);strcat(timecunchu2,str1);strcatf(timecunchu2,":"); //時(shí)間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu2,str1);strcatf(timecunchu2,":&quo

90、t;); //時(shí)間字符串中串上秒數(shù)和':'</p><p>  itoa(t,str1);strcat(timecunchu2,str1);</p><p><b>  }</b></p><p>  else if(count==3)</p><p><b>  {</b>&l

91、t;/p><p>  itoa(hour,str1); strcat(timecunchu3,str1);strcatf(timecunchu3,":"); //時(shí)間字符串中串上小時(shí)和':'</p><p>  itoa(minu,str1);strcat(timecunchu3,str1);strcatf(timecunchu3,":"

92、;); //時(shí)間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu3,str1);strcatf(timecunchu3,":"); //時(shí)間字符串中串上秒數(shù)和':'</p><p>  itoa(t,str1);strcat(timecunchu3,str1);</

93、p><p><b>  }</b></p><p>  else if(count==4)</p><p><b>  {</b></p><p>  itoa(hour,str1); strcat(timecunchu4,str1);strcatf(timecunchu4,":")

94、; //時(shí)間字符串中串上小時(shí)和':'</p><p>  itoa(minu,str1);strcat(timecunchu4,str1);strcatf(timecunchu4,":"); //時(shí)間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu4,str1);strca

95、tf(timecunchu4,":"); //時(shí)間字符串中串上秒數(shù)和':'</p><p>  itoa(t,str1);strcat(timecunchu4,str1);</p><p><b>  }</b></p><p>  else if(count==5)</p><p&g

96、t;<b>  {</b></p><p>  itoa(hour,str1); strcat(timecunchu5,str1);strcatf(timecunchu5,":"); //時(shí)間字符串中串上小時(shí)和':'</p><p>  itoa(minu,str1);strcat(timecunchu5,str1);strcat

97、f(timecunchu5,":"); //時(shí)間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu5,str1);strcatf(timecunchu5,":"); //時(shí)間字符串中串上秒數(shù)和':'</p><p>  itoa(t,str1);strc

98、at(timecunchu5,str1);</p><p><b>  }</b></p><p>  else if(count==6)</p><p><b>  {</b></p><p>  itoa(hour,str1); strcat(timecunchu6,str1);strcatf(

99、timecunchu6,":"); //時(shí)間字符串中串上小時(shí)和':'</p><p>  itoa(minu,str1);strcat(timecunchu6,str1);strcatf(timecunchu6,":"); //時(shí)間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strc

100、at(timecunchu6,str1);strcatf(timecunchu6,":"); //時(shí)間字符串中串上秒數(shù)和':'</p><p>  itoa(t,str1);strcat(timecunchu6,str1);</p><p><b>  }</b></p><p>  else if(co

101、unt==7)</p><p><b>  {</b></p><p>  itoa(hour,str1); strcat(timecunchu7,str1);strcatf(timecunchu7,":"); //時(shí)間字符串中串上小時(shí)和':'</p><p>  itoa(minu,str1);strca

102、t(timecunchu7,str1);strcatf(timecunchu7,":"); //時(shí)間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu7,str1);strcatf(timecunchu7,":"); //時(shí)間字符串中串上秒數(shù)和':'</p>&l

103、t;p>  itoa(t,str1);strcat(timecunchu7,str1);</p><p><b>  } </b></p><p>  else if(count==8)</p><p><b>  {</b></p><p>  itoa(hour,str1); strc

104、at(timecunchu8,str1);strcatf(timecunchu8,":"); //時(shí)間字符串中串上小時(shí)和':'</p><p>  itoa(minu,str1);strcat(timecunchu8,str1);strcatf(timecunchu8,":"); //時(shí)間字符串中串上分鐘和':'</p>&

105、lt;p>  itoa(sec,str1);strcat(timecunchu8,str1);strcatf(timecunchu8,":"); //時(shí)間字符串中串上秒數(shù)和':'</p><p>  itoa(t,str1);strcat(timecunchu8,str1);</p><p><b>  }</b><

106、/p><p><b>  }</b></p><p>  /********************************************************** </p><p>  * 中斷名稱:外部中斷INT1 </p><p>  * 功

107、能:數(shù)據(jù)清零 </p><p>  **********************************************************/</p><p>  interrupt [EXT_INT1] void ext_int1_isr(void)

108、//INT1 用于按鍵清零 S4</p><p><b>  {</b></p><p>  // Place your code here</p><p>  TCCR0=0x08; //關(guān)閉T/C0</p><p>  hour=0,minu=0,sec=0,t=0; //時(shí)間值清零<

109、/p><p>  lcd_clear();</p><p>  lcd_gotoxy(y1,x1);</p><p>  lcd_putsf("0:0:0:0");</p><p><b>  flag=0; </b></p><p><b>  }</b>&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論