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

下載本文檔

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

文檔簡介

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

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

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

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

5、<p>  關(guān)鍵詞:AVR單片機;計時器;按鍵;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è)計內(nèi)容1</p><p>

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

10、;p>  2.3.1 微控器軟件設(shè)計方案6</p><p>  第3章 系統(tǒng)硬件設(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、機最小系統(tǒng)電路設(shè)計11</p><p>  3.1.3.1 電源設(shè)計11</p><p>  3.1.3.2 復(fù)位電路設(shè)計12</p><p>  3.1.3.3 晶振電路設(shè)計13</p><p>  3.1.3.4 串口通信電路設(shè)計14</p><p>  3.2 LCD顯示屏的顯示電路設(shè)計15

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

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

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

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

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

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

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

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

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

21、硬件設(shè)計方案</p><p>  2.2.1 微控制器的選擇</p><p>  目前,再電子系統(tǒng)研究與設(shè)計中,常用的微控器有MC51單片機、PIC單片機、AVR單片機和ARM芯片。</p><p>  方案一:采用ARM作為微控器</p><p>  ARM 微處理器已遍及工業(yè)控制、消費類電子產(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系列處理器很少集成片上硬件資源,實際產(chǎn)品成本方面,ARM配置外設(shè)價格較高,PCB版也好設(shè)計,往往還需要考慮信號的完整性等,因此,對于初學(xué)者來說,使用起來不是很方便。</p><p>  方案二:采用PIC單片機作為微控器</p><p>  PIC單片

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

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

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

26、I/O口都可以以推換驅(qū)動的方式輸出高、低電平,驅(qū)動能力強、內(nèi)部資源豐富,一般都集成AD、DA模數(shù)轉(zhuǎn)換器;PWM;SPI、USART、TWI、I2C通信口;豐富的中斷源等。現(xiàn)在比較流行的型號是ATmega8/16。所以,本設(shè)計選用ATmega16單片機作為主控芯片。</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è)計

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

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

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

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

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

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

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

35、制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數(shù)組下標越界不作檢查等[6]。指針是C語言的一大特色,可以說C語言優(yōu)于其它高級語言的一個重要原因就是因為它有指針操作可以直接進行靠近硬件的操作,但是C的指針操作也給它帶來了很多不安全的因素。</p><p>  但是對于本次設(shè)計來還說,C語言具有以下優(yōu)點:</p><p> ?。?)簡潔緊湊、靈活方便</p><p

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

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

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

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

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

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

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

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

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

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

46、;<p>  ATmega16可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式:空閑方式停止CPU的工作,但允許RAM、定時/計數(shù)器、串行通信口及中斷系統(tǒng)繼續(xù)工作;掉電方式保存RAM中的內(nèi)容,但是振蕩器停止工作并禁止其他所有部件工作到下一個硬件復(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)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,端口被外部電路拉低時

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

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

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

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

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

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

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

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

57、壓低于掉電檢測復(fù)位門限VBOT時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ā)電平以上時(VBOT+,F(xiàn)igure19),延時計數(shù)器開始計數(shù),一旦超過溢出時間tTOUT,MCU即恢復(fù)工作。</p><p>  (5)JTAG AVR復(fù)位</p><

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

79、T/C0比較匹配清零中斷 </p><p>  * 功 能:時間控制 </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;} //定時時間為10ms,進100次中斷為1s</p><p>  

82、if(sec==60) {minu++;sec=0;} //秒數(shù)到60時,分鐘數(shù)增1,秒數(shù)清零</p><p>  if(minu==60) {hour++;minu=0;} //分鐘數(shù)到60時,小時數(shù)增1,分鐘數(shù)清零 </p><p>  display(); //在LCD上顯示計時時間</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,":"); //時間字符串中串上小時和':'</p><p>  itoa(minu,str1);strcat(timecunchu1,str1);strcatf(timecunchu1,":"); //時間字符串中串上分鐘和':&#

87、39;</p><p>  itoa(sec,str1);strcat(timecunchu1,str1);strcatf(timecunchu1,":"); //時間字符串中串上秒數(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,":"); //時間字符串中串上小時和':'

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

90、t;); //時間字符串中串上秒數(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,":"); //時間字符串中串上小時和':'</p><p>  itoa(minu,str1);strcat(timecunchu3,str1);strcatf(timecunchu3,":"

92、;); //時間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu3,str1);strcatf(timecunchu3,":"); //時間字符串中串上秒數(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、; //時間字符串中串上小時和':'</p><p>  itoa(minu,str1);strcat(timecunchu4,str1);strcatf(timecunchu4,":"); //時間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu4,str1);strca

95、tf(timecunchu4,":"); //時間字符串中串上秒數(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,":"); //時間字符串中串上小時和':'</p><p>  itoa(minu,str1);strcat(timecunchu5,str1);strcat

97、f(timecunchu5,":"); //時間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu5,str1);strcatf(timecunchu5,":"); //時間字符串中串上秒數(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,":"); //時間字符串中串上小時和':'</p><p>  itoa(minu,str1);strcat(timecunchu6,str1);strcatf(timecunchu6,":"); //時間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strc

100、at(timecunchu6,str1);strcatf(timecunchu6,":"); //時間字符串中串上秒數(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,":"); //時間字符串中串上小時和':'</p><p>  itoa(minu,str1);strca

102、t(timecunchu7,str1);strcatf(timecunchu7,":"); //時間字符串中串上分鐘和':'</p><p>  itoa(sec,str1);strcat(timecunchu7,str1);strcatf(timecunchu7,":"); //時間字符串中串上秒數(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,":"); //時間字符串中串上小時和':'</p><p>  itoa(minu,str1);strcat(timecunchu8,str1);strcatf(timecunchu8,":"); //時間字符串中串上分鐘和':'</p>&

105、lt;p>  itoa(sec,str1);strcat(timecunchu8,str1);strcatf(timecunchu8,":"); //時間字符串中串上秒數(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; //時間值清零<

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等.壓縮文件請下載最新的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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論