電動自行車充電器畢業(yè)論文_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  1.1背景、意義1</p><p>  1.2常見充電電池特性及其充電方式2</p><p>  1.3 主要芯片的選擇4</p><p>  1.4液晶顯示模塊的選擇6</p><p>  2.1 液晶顯示模塊兩種訪問方式

2、接口電路的選擇7</p><p>  2.2 硬件電路主要芯片8</p><p>  2.2.1 ATmega16L主要引腳說明8</p><p>  2.2.2 Atmega16L的存儲器9</p><p>  2.2.3 Atmega16L的時鐘電路10</p><p>  2.3 LCD液晶顯示10&

3、lt;/p><p>  2.3.1 LCD的顯示原理10</p><p>  2.3.2 液晶顯示控制驅(qū)動器12</p><p>  2.3.3 液晶顯示模塊的特點13</p><p>  2.4 硬件電路設計14</p><p>  2.5 PROTEL99的應用簡介15</p><p&

4、gt;  3.1 用C語言開發(fā)單片機的優(yōu)勢17</p><p>  3.2 液晶顯示漢字或字符的原理18</p><p>  3.3系統(tǒng)程序流程圖19</p><p>  4.1 系統(tǒng)調(diào)試軟件介紹21</p><p>  4.1.1 ICCAVR編譯器簡介21</p><p>  4.1.2 ICC AVR的

5、主要設置23</p><p>  4.2 調(diào)試過程23</p><p><b>  參考文獻29</b></p><p><b>  第一章 緒論</b></p><p><b>  1.1背景、意義 </b></p><p>  如今,隨著油價的

6、不斷上漲和人們環(huán)保意識的增強,電動自行車以其價格低、綠</p><p>  色環(huán)保,輕便美觀,使用安全方便等優(yōu)點越來越受到消費者的喜愛。評價電動自行車質(zhì)量好壞的重要參數(shù)之一是其蓄電池的使用壽命。而蓄電池的充電過程對其壽命影響最大。研究表明:過充電,可使蓄電池發(fā)熱,電解液失水;而充電不足,則可使蓄電池內(nèi)化學反應不充分,長期充電不足會導致蓄電池容量下降。由此可見,充電器性能的好壞直接影響著蓄電池的使用效果和使用壽命。

7、</p><p>  電動車電池技術的持續(xù)進步也要求更復雜的充電算法以實現(xiàn)快速、安全的充電。因此需要對充電過程進行更精確的監(jiān)控,以縮短充電時間、達到最大的電池容量,并防止電池損壞。與此同時,對充電電池的性能和工作壽命的要求也不斷地提高。從20世紀60年代的商用鎳鎘和密封鉛酸電池到近幾年的鎳氫和鋰離子技術,可充電電池容量和性能得到了飛速的發(fā)展。目前各種電器使用的充電電池主要有鎳鎘電池(NiCd)、鎳氫電池(NiMH

8、)、鋰電池(Li-Ion)和密封鉛酸電池(SLA)四種類型。</p><p>  電池充電是通過逆向化學反應將能量存儲到化學系統(tǒng)里實現(xiàn)的。由于使用的化學物質(zhì)的不同,電池有自己的特性。設計充電器時要仔細了解這些特性以防止過度充電而損壞電。</p><p>  目前市場上的,電動自行車充電器存在的主要不足,第一不是從副邊繞組直接獲得取樣信號,因而穩(wěn)壓效果不理想;第二是輸出電流和電壓調(diào)節(jié)范圍窄,

9、因而只適用于固定負載。但是嚴格從充電電路上分析,只有很少部分充電器才能真正意義上被稱為智能充電器,隨著越來越多的手持式電器的出現(xiàn),對高性能、小尺寸、輕重量的電池充電器的需求也越來越大。電池技術的持續(xù)進步也要求更復雜的充電算法以實現(xiàn)快速、安全地充電,因此,需要對充電過程進行更精確地監(jiān)控(例如對充、放電電流、充電電壓、溫度等的監(jiān)控),以縮短充電時間,達到最大的電池容量,并防止電池損壞。因此,智能型充電電路通常包括了恒流/恒壓控制環(huán)路、電池電

10、壓監(jiān)測電路、電池溫度檢測電路、外部顯示電路(LED或LCD顯示)等基本單元。其框圖如下:</p><p>  圖1-1 智能充電器基本框圖</p><p>  Atmel AVR 微處理器是當前市場上能夠以單片方式提供Flash、EEPROM 和10 位ADC的最高效的8 位RISC 微處理器。由于程序存儲器為Flash,因此可以不用象MASK ROM一樣,有幾個軟件版本就庫存幾種型號。F

11、lash 可以在發(fā)貨之前再進行編程,或是在PCB貼裝之后再通過ISP 進行編程,從而允許在最后一分鐘進行軟件更新。EEPROM 可用于保存標定系數(shù)和電池特性參數(shù),如保存充電記錄以提高實際使用的電池容量。10位A/D 轉換器可以提供足夠的測量精度,使得充好后的容量更接近其最大容量。而其他方案為了達到此目的,可能需要外部的ADC,不但占用PCB 空間,也提高了系統(tǒng)成本。AVR 是目前唯一的針對象 “C”這樣的高級語言而設計的8 位微處理器。

12、</p><p>  1.2常見充電電池特性及其充電方式</p><p>  電池充電是通過逆向化學反應將能量存儲到化學系統(tǒng)里實現(xiàn)的,由于使用的化學物質(zhì)的不同,電池的特性也不同,其充電的方式也不大一樣。</p><p>  電池的安全充電 現(xiàn)代的快速充電器( 即電池可以在小于3 個小時的時間里充滿電,通常是一個小時) 需要能夠?qū)卧妷?、充電電流和電池溫度進行精確

13、地測量,在充滿電的同時避免由于過充電造成的損壞。</p><p>  充電方法 SLA 電池和鋰電池的充電方法為恒定電壓法要限流; NiCd 電池和NiMH 電池的充電方法為恒定電流法,且具有幾個不同的停止充電的判斷方法。</p><p>  最大充電電流 最大充電電流與電池容量(C) 有關。最大充電電流往往以電池容量的數(shù)值來表示。例如,電池的容量為750 mAh,充電電流為750 m

14、A,則充電電流為1C (1 倍的電池容量)。若涓流充電時電流為C/40,則充電電流即為電池容量除以40。</p><p>  過熱 電池充電是將電能傳輸?shù)诫姵氐倪^程。能量以化學反應的方式保存了下來。但不是所有的電能都轉化為了電池中的化學能。一些電能轉化成了熱能,對電池起了加熱的作用。當電池充滿后,若繼續(xù)充電,則所有的電能都將轉化為電池的熱能。在快速充電時這將使電池快速升溫,若不及時停止充電就會造成電池的損壞。因

15、此,在設計電池充電器時,對溫度進行監(jiān)控并及時停止充電是非常重要的。</p><p>  現(xiàn)代消費類電器主要使用如下四種電池:</p><p>  ? 密封鉛酸電池 (SLA)</p><p>  ? 鎳鎘電池 (NiCd)</p><p>  ? 鎳氫電池(NiMH)</p><p>  ? 鋰電池(Li-Ion)&l

16、t;/p><p>  在正確選擇電池和充電算法時需要了解這些電池的背景知識。</p><p>  密封鉛酸電池(SLA) 密封鉛酸電池主要用于成本比空間和重量更重要的場合,如UPS和報警系統(tǒng)的備份電池。SLA 電池以恒定電壓進行充電,輔以電流限制以避免在充電過程的初期電池過熱。只要電池單元電壓不超過生產(chǎn)商的規(guī)定( 典型值為2.2V), SLA 電池可以無限制地充電。</p>&l

17、t;p>  鎳鎘電池(NiCd) NiCd 電池目前使用得很普遍。它的優(yōu)點是相對便宜,易于使用;缺點是自放電率比較高。典型的NiCd 電池可以充電1000 次。失效機理主要是極性反轉。在電池包里第一個被完全放電的單元會發(fā)生反轉。為了防止損壞電池包,需要不間斷地監(jiān)控電壓。一旦單元電壓下降到1.0V 就必須停機。NiCd 電池以恒定電流的方式進行充電。</p><p>  鎳氫電池(NiMH) 在輕重量的手持設

18、備中如手機、手持攝象機,等等鎳氫電池是使用最廣的。這種電池的容量比NiCd 的大。由于過充電會造成NiMH 電池的失效,在充電過程中進行精確地測量以在合適的時間停止是非常重要的。和NiCd 電池一樣,極性反轉時電池也會損壞。NiMH 電池的自放電率大概為20%/ 月。和NiCd 電池一樣,NiMH 電池也為恒定電流充電。</p><p>  鋰電池 (Li-Ion) 和本文中所述的其他電池相比,鋰電池具有最高的能

19、量/ 重量比和能量/ 體積比。鋰電池以恒定電壓進行充電,同時要有電流限制以避免在充電過程的初期電池過熱。當充電電流下降到生產(chǎn)商設定的最小電流時就要停止充電。過充電將造成電池損壞,甚至爆炸。</p><p>  1.3 主要芯片的選擇</p><p>  ATMEL公司是世界上有名的生產(chǎn)高性能、低功耗、非易失性存儲器和各種數(shù)字模擬IC芯片的半導體制造公司。在單片機微控制器方面,ATMEL公司

20、有AT89, AT90和ARM三個系列單片機的產(chǎn)品。由于8051本身結構的先天性不足和近年來各種采用新型結構和新技術的單片機的不斷涌現(xiàn),現(xiàn)在的單片機市場是百花齊放。ATMEL在這種強大市場壓力下,發(fā)揮Flash存儲器的技術特長,于1997年研發(fā)并推出了個新配置的、采用精簡指令集RISC(Reduced Instruction Set CPU)結構的新型單片機,簡稱AVR單片機。</p><p>  精簡指令集RI

21、SC結構是20世紀90年代開發(fā)出來的,綜合了半導體案成技術和軟例-性能的新結構。AVR單片機采用RISC結構,具有1MIPS/ MHz的高速運行處理能力。為了縮短產(chǎn)品進入市場的時間,簡化系統(tǒng)的維護和支持,對于由單片機組成的嵌入式系統(tǒng)來說,用高級語言編程已成為一種標準編程方法。AVR結構單片機的開發(fā)日的就在于能夠更好地采用高級語言(例如C語言、BASIC語言)來編寫嵌入式系統(tǒng)的系統(tǒng)程序,從而能高效地開發(fā)出目標代碼。為了對目標代碼大小、性能

22、及功耗進行優(yōu)化,AYR單片機的結構中采用了大型快速存取寄存器組和快速的單周期指令系統(tǒng)。</p><p>  AVR單片機運用Harvard結構,在前一條指令執(zhí)行的時候就取出現(xiàn)行的指令,然后以一個周期執(zhí)行指令。在其他的CISC以及類似的RISC結構的單片機中,外部振蕩器的時鐘被分頻降低到傳統(tǒng)的內(nèi)部指令執(zhí)行周期,這種分頻最大達12倍(8051)。AVR單片機是用一個時鐘周期執(zhí)行一條指令的,它是在8位單片機中第一個真正

23、的RISC結構的單片機。</p><p>  由于AVR單片機采用了Harvard結構,所以它的程序存儲器和數(shù)據(jù)存儲器是分開組織和尋址的。尋址空間分別為可直接訪問8M字節(jié)的程序存儲器和8M字節(jié)的數(shù)據(jù)存儲器。同時,由32個通用工作寄存器所構成的寄存器組被雙向映射,因此,可以采用讀寫寄存器和讀寫片內(nèi)快速SRAM存儲器兩種方式來訪問32個通用工作寄存器。</p><p>  AVR主要有單片機有

24、ATtiny、AT90和ATmega三種系列,其結構和基本原理都相類似。本次設計所用到的Atmega16L芯片便是ATmega系列中的一種,在這里作為充電器的核心部件。它是一種具有40引腳的高性能、低功耗的8位微處理器。其功能特性如下: </p><p>  (1) 8位CPU。</p><p>  (2) 先進的RISC 結構:</p><p>  131 條指令

25、– 大多數(shù)指令執(zhí)行時間為單個時鐘周期</p><p>  32個8 位通用工作寄存器</p><p><b>  全靜態(tài)工作</b></p><p>  (3) 非易失性數(shù)據(jù)和程序存儲器:</p><p>  16K 字節(jié)的系統(tǒng)內(nèi)可編程Flash,擦寫壽命可達到10,000 次以上。具有獨立鎖定位的可選Boot代碼區(qū),通

26、過片上Boot程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程。</p><p>  512 字節(jié)的EEPROM,可連續(xù)擦寫100,000 次。1K字節(jié)的片內(nèi)SRAM,可以對鎖定位進行編程以實現(xiàn)用戶程序的加密。</p><p>  (4) 可通過JTAG接口實現(xiàn)對FLASH、EEPROM的編程。</p><p>  (5) 32個可編程的I/O引線,40引腳PDIP封裝。</p>

27、<p>  (6) 兩個具有獨立預分頻器和比較器功能的8位定時器/ 計數(shù)器,一個具有預分頻器、比較功能和捕捉功能的16位定時器/ 計數(shù)器。</p><p>  (7) 片內(nèi)/ 片外中斷源。</p><p>  (8) 具有一個10位的AD轉換器,能對來自端口A的8位單端輸入電壓進行采樣。</p><p>  (9) 工作電壓:2.7-5.5V。</p

28、><p>  速度等級:0-8MHz。</p><p>  AVR單片機的主要特點如下:</p><p>  1.片內(nèi)集成可擦寫10000次以上的Flash程序存儲器。由于AVR采用16位的指令,所以一個程序存儲器的存儲單元為16位,即XXXX*1116(也可理解為8位,即2*XXXX*8)。AVR的數(shù)據(jù)存儲器還是以8個Bit(位)為一個單元,因此AVR還是屬于8位單片

29、機。</p><p>  2.采用CMOS工藝技術,高速度(50ns)、低功耗、具有SLEEP(休眠)功能。AVR的指令執(zhí)行速度可達50ns (20MHz)。AVR運用Harvard結構概念,具有預取指令的特性,即對程序存儲和數(shù)據(jù)存取使用不同的存儲器和總線。當執(zhí)行某一指令時,下一指令被預先從程序存儲器中取出,這使得指令可以在每一個時鐘周期內(nèi)執(zhí)行。</p><p>  3.高度保密(LOCK

30、)??啥啻尾翆懙腇LASH具有多重密碼保護鎖死(LOCK)功能,因此可低成本高速度地完成產(chǎn)品商品化,并且可多次更改程序(產(chǎn)品升級)而不必浪費1C或電路板,大大提高了產(chǎn)品的質(zhì)量及競爭力。</p><p>  4.超功能精簡指令。具有32個通用作寄存器(相當于8051中的32個累加器),克服了單一累加器數(shù)據(jù)處理造成的瓶須現(xiàn)象,128~4K字節(jié)SRAM可靈活使用指令計算,并可用功能很強的C語言編程,易學、易寫、易移植。

31、</p><p>  5.程序?qū)懭肫骷梢圆⑿袑懭?用編程器寫入),也可使用串行在線編程(ISP)方法下載寫入,也就是說不必將單片機芯片從系統(tǒng)上拆下,拿到萬用編程器上燒寫,而可直接在電路板上進行程序的修改、燒寫等操作,方便產(chǎn)品升級,尤其是采用SMD封裝,更利于產(chǎn)品微型化。</p><p>  6.工作電壓范圍為2.7V~6.0V,電源抗干擾性能強。</p><p>

32、  7.AVR單片機還在片內(nèi)集成了可擦寫100000次的PROM數(shù)據(jù)存儲器,等于又增加了一個芯片,可用于保存系統(tǒng)的設定參數(shù)、固定表格和掉電后的數(shù)據(jù),既方便了使用,減小了系統(tǒng)的空間,又大大提高了系統(tǒng)的保密性。</p><p>  8.有8位和16位的計數(shù)器定時器(C/T),可作比較器、計數(shù)器、外部中斷和PWM(也可作D/A )用于控制輸出。</p><p>  1.4液晶顯示模塊的選擇<

33、;/p><p>  LCD顯示模塊是一種被動顯示器,具有功耗低,顯示信息大,壽命長和抗干擾能力強等優(yōu)點,在低功耗的單片機系統(tǒng)中得到大量使用。液晶顯示模塊和鍵盤輸入模塊作為便攜式儀表的通用器件,在單片機系統(tǒng)的開發(fā)過程中也可以作為常用的程序和電路模塊進行整體設計。液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進行控制,有電就顯示黑色,這樣即可顯示出圖形。</p><p>  在單片機系統(tǒng)

34、中使用液晶顯示模塊作為輸出器件有以下優(yōu)點:</p><p><b>  顯示質(zhì)量高</b></p><p>  液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,因此液晶顯示器畫質(zhì)高而且不會閃爍。</p><p><b>  數(shù)字式接口</b></p><p>  液晶顯示器都是數(shù)字

35、式的,和單片機系統(tǒng)的接口更加簡單。</p><p><b>  體積小,重量輕</b></p><p><b>  功率消耗小</b></p><p>  液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因此耗電量比其它顯示器要小得多。</p><p>  第二章 硬件電路設計</p&g

36、t;<p>  經(jīng)過前面對充電器原理、液晶模塊、ATmega16L等的總體了解和掌握以及對各種元器件和電路圖的分析和比較后,現(xiàn)在就可以開始進入硬件電路的設計了。在本章里,首先將介紹一下液晶模塊訪問方式的兩種接口電路,然后對LCD顯示電路原理圖作一個詳細的介紹,接著介紹充電電路中所用到的各種芯片和元器件的原理和一些功能,最后對PROTEL99的使用和PCB板的繪制以及焊接做一簡單介紹,然后再將自己的設計思想和同組人所設計的兩

37、部分結合,達成統(tǒng)一。 </p><p>  2.1 液晶顯示模塊兩種訪問方式接口電路的選擇</p><p>  單片機與液晶顯示模塊之間的連接方式分為直接訪問方式和為間接控制方式兩種。</p><p>  (一) 直接訪問方式</p><p>  直接訪問方式就是將液晶顯示模塊的接口作為存儲器或I/O設備直接掛在

38、單片機總線上,單片機以訪問存儲器或I/O設備的方式操作液晶顯示模塊的工作。單片機通過高位地址A11控制CSA,A10控制CSB,以選通液晶顯示屏上各區(qū)的控制器;同時用地址A9作為R/W信號控制數(shù)據(jù)總線的數(shù)據(jù)流向;用地址A8作為D/I信號控制寄存器的選擇,E(使能)信號由RD和WE共同產(chǎn)生,這樣就實現(xiàn)了單片機對液晶顯示模塊的電路邊接。電位器用于顯示對比度的調(diào)節(jié)。</p><p><b>  (二)間接控制

39、方式</b></p><p>  間接控制方式是單片機通過自身的或系統(tǒng)中的并行接口與液晶顯示模塊連接。單片機通過對這些接口的操作,以達到對液晶顯示模塊的控制。這種方式的特點就是電路簡單,控制時序由軟件實現(xiàn),可以實現(xiàn)高速單片機與液晶顯示模塊的接口。</p><p>  通過比較再結合本次設計的實際條件,由于Atmega16L芯片沒有WR、RD管腳,而且為了使電路簡單且方便軟件實現(xiàn)

40、,所以最終決定采用間接控制的方式來設計LCD顯示電路。</p><p>  2.2 硬件電路主要芯片</p><p>  2.2.1 ATmega16L主要引腳說明</p><p>  以下是ATmega16L的引腳配置:</p><p>  圖2-1 ATmega16L芯片引腳</p><p><b>  

41、引腳說明:</b></p><p>  VCC        數(shù)字電路的電源</p><p>  GND        地</p><p>  端口A(PA7~PA0)  端口A 作為A/D 轉換器的模擬輸入端。</p><p>  端口A 為8 位雙向I/O 口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出

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

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

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

45、lt;/p><p>  XTAL1       反向振蕩放大器與片內(nèi)時鐘操作電路的輸入端。</p><p>  XTAL2       反向振蕩放大器的輸出端。</p><p>  AVCC       AVCC是端口A與A/D轉換器的電源。不使用ADC時,該引腳應直接與VCC連接。使用ADC時應通過一個低通濾波器與VCC相連。</p><p>

46、  AREF       A/D 的模擬基準輸入引腳。</p><p>  2.2.2 Atmega16L的存儲器</p><p>  AVR結構有兩個主要的存儲空間:數(shù)據(jù)存儲器空間和程序存儲器空間,此外,Atmega16L還有一個EEPROM存儲器以保存數(shù)據(jù)。這三個存儲器都為線性的平面結構。</p><p>  (1) Atmega16L具有16K字節(jié)的在線編程F

47、lash,用于存儲程序指令代碼。因為AVR指令為16位或32位,故Flash組織成8K16的形式。用戶程序的安全性要根據(jù)Flash程序存儲器的兩個區(qū):引導(Boot) 程序區(qū)和應用程序區(qū),分開來考慮。</p><p>  Flash存儲器至少可以擦寫10,000次。Atmega16L的程序存儲器為13位,因此可以尋址8K的存儲器空間。關于用SPI 或JTAG 接口實現(xiàn)對Flash 的串行下載,將在軟件部分作詳細的

48、介紹。</p><p>  (2) 數(shù)據(jù)存儲器的尋址方式分為5種:直接尋址、帶偏移量的間接尋址、間接尋址、帶預減量的間接尋址和帶后增量的間接尋址。</p><p>  ATmega16L的全部32個通用寄存器、64個I/O寄存器及1024個字節(jié)的內(nèi)部數(shù)據(jù)SRAM可以通過所有上述的尋址模式進行訪問。</p><p>  (3) ATmega16L 包含512 字節(jié)的E

49、EPROM 數(shù)據(jù)存儲器。它是作為一個獨立的數(shù)據(jù)空間而存在的,可以按字節(jié)讀寫。EEPROM 的壽命至少為100,000 次擦除周期。EEPROM 的訪問由地址寄存器、數(shù)據(jù)寄存器和控制寄存器決定。</p><p>  2.2.3 Atmega16L的時鐘電路</p><p>  單片機的時鐘用于產(chǎn)生工作所需要的時序,其連接電路如下圖:</p><p>  圖2-2晶體振

50、蕩器連接圖</p><p>  XTAL1 與XTAL2 分別為用作片內(nèi)振蕩器的反向放大器的輸入和輸出,考慮到其最大頻率不超過8MHz,這里選用的晶振為7.3728MHz。</p><p>  2.3 LCD液晶顯示 </p><p>  2.3.1 LCD的顯示原理</p><p>  液晶顯示器是一種功耗極低的顯示器。隨著液晶顯示技

51、術的發(fā)展,LCD顯示器的規(guī)格眾多,其專用驅(qū)動芯片也相互配套,使LCD在控制和儀表系統(tǒng)中廣泛應用提供了極大的方便。根據(jù)LCD顯示原理的不同,常見和常用的LCD可以分為字符型LCD和點陣型LCD兩種。不同的顯示原理使得這兩種LCD的指令系統(tǒng)、接口和功能等是不相同的,各有優(yōu)缺點,但結合到本次設計的實際要求,經(jīng)過比較還是選用點陣型LCD。現(xiàn)就點陣型LCD的顯示原理、模塊特點等做一簡要介紹。</p><p>  要想在液晶

52、模塊上顯示一個漢字或字符,需要3個最基本的控制操作:分別向3個控制器寫指令代碼、寫顯示數(shù)據(jù)和讀顯示數(shù)據(jù)。這里要特別引起注意的是完成這3項操作的前提條件是KS0108B控制器處于準備好的狀態(tài),即BUSY=0,由模塊的軟件特性知道,當BUSY=1時,系統(tǒng)的接口電路處于被封鎖的狀態(tài),是不能接受除讀狀態(tài)指令外的任何操作的。因此在訪問控制器之前,一定要判斷控制器的當前狀態(tài)。具體到軟件設計時,則需設計一判忙程序,在判斷BUSY=0后,再往下進行操作

53、。</p><p>  在本模塊中,每個漢字的大小是16×16點陣,而每個字符的大小是8×16點陣,即字符的寬度為漢字的1/2。它們都是以二維數(shù)組的格式存放在ROM中。向液晶模塊顯示一個漢字的過程就是:由液晶屏顯示區(qū)的指定字符行的指定列開始,連續(xù)輸出該字符對應的字符庫中的16個列數(shù)據(jù),如果是顯示字符,則輸出</p><p><b>  8個列數(shù)據(jù)即可。<

54、/b></p><p>  上面已經(jīng)介紹到,MGLS-19264液晶模塊中液晶屏顯示區(qū)為192×64點陣,其中,它們的每8個像素行組成一頁,整個顯示區(qū)共分為8頁,每64列為一個區(qū),這樣,它就有左、中、右3個區(qū),它的顯示區(qū)示意圖如下:</p><p>  左區(qū) 中區(qū) 右區(qū)</p><p>  

55、圖2-3液晶屏顯示區(qū)示意圖</p><p>  液晶模塊顯示字符是從上到下,從左到右進行顯示的。假設定義從最左上角開始顯示,則先從上到下顯示第0頁的第一列,依次從左向右開始顯示。</p><p>  MGLS-19264LCM的顯示部分為左、中、右3個區(qū),可以由CS片選的取值分別進行控制,其接口的片選定義如下:</p><p>  表2-1 MGLS的片選定義表&l

56、t;/p><p>  有了上面的知識,就可以編寫顯示界面這一塊程序。由于每個漢字或字符在圖中位置是固定的,只要定義了相應的選區(qū)及X、Y地址,就可以顯示出具體的位置。用lr來表示漢字的區(qū)域,當lr=0,表示左區(qū);lr=1,表示中區(qū);lr=2,表示右區(qū)。X表示頁面,Y表示列地址。則(lr.X.Y)就可以定義出這個字在屏上的實際位置。以第一行的“智”字為例,這個字位于模塊的左區(qū),則lr=0;它位于第一頁和第二頁,則X=0;

57、它位于列地址的48-63字節(jié),Y=48,那么“智”就可以通過(0.0.48)精確地表示出它的位置。這里要注意的是每個漢字占用的行地址是兩頁,如“智”字占的就是X0和X1,即第二行的漢字其X=2而不是1。因此,第二行的“電”就應該表示為(0.2.0),其它字符依此設計即可。</p><p>  2.3.2 液晶顯示控制驅(qū)動器</p><p>  HD61202及其兼容液晶顯示控制器是一種帶有

58、驅(qū)動輸出的圖形液晶顯示控制器,而在小規(guī)模點陣液晶顯示模塊上使用液晶顯示驅(qū)動器組成液晶顯示驅(qū)動控制系統(tǒng)是非常有益的,這將使液晶顯示模塊的硬件電路簡單化,從而降低模塊的成本,同時也提高了對軟件功能的要求。許多顯示功能如光標、字符庫、閃爍都需要由軟件編制而成。HD61203和HD61202就是這類液晶顯示驅(qū)動控制器套件。之所以稱它們?yōu)樘准且驗镠D61203和HD61202必須配套使用,通常有12864和19264兩種規(guī)格。其特點如下:<

59、;/p><p>  1.內(nèi)藏64*64=4096位顯示RAM,RAM中每位數(shù)據(jù)對應LCD屏上的一個點的亮、暗狀態(tài)。</p><p>  2.HD61202及其兼容控制器是列驅(qū)動器,具有64路列驅(qū)動輸出。</p><p>  3.HD61202及其兼容控制驅(qū)動器讀、寫時序與68系列微處理妻相符,因此它可直接與68系列微處理器借口相聯(lián)。</p><p&g

60、t;  4.HD61202及其兼容控制器的占空比為1/32~1/64。</p><p>  2.3.3 液晶顯示模塊的特點</p><p>  MGLS-12864圖形液晶顯示模塊的驅(qū)動和控制系統(tǒng)是由一片KS0107B或兼容驅(qū)動器( HD61203 )作為行驅(qū)動器和兩片KS0108B或兼容驅(qū)動器(HD61203) 作為列驅(qū)動器組成的。</p><p>  它的主要技

61、術參數(shù)及其供電特點如下:</p><p>  電源:DC+5V,模塊內(nèi)自帶用于LCD驅(qū)動的負壓電路。</p><p>  顯示內(nèi)容:12864全屏幕點陣。</p><p>  指令形式:七種指令。</p><p>  接口形式:與控制器采用8位數(shù)據(jù)總線和8位控制線相連。</p><p>  工作環(huán)境:-10~+50℃。

62、</p><p>  模塊應用有三種電源:邏輯電源、液晶驅(qū)動電壓、背光電壓。</p><p>  本次選用的模塊是雙電源供電(VDD/V0),需要提供一個液晶驅(qū)動電壓,用以調(diào)節(jié)對比度,接在液晶模塊的V0引腳上,由于液晶的對比度會隨著溫度的變化而相應變化,所以其液晶顯示驅(qū)動電壓值應隨著溫度作相應的調(diào)整,這里采用了一個電位器,調(diào)整電壓值。</p><p>  背光供電為

63、3.8-4.1V的支流電源,選用電源太大不僅增加功耗,更有可能損壞背光燈和縮短模塊的使用壽命。</p><p>  MGLS-12864液晶顯示模塊一共有20個引腳,它的接口定義如下:</p><p>  表2-2 MGLS-12864的接口電路</p><p>  2.4 硬件電路設計</p><p>  經(jīng)過對以上對ATmega16L

64、芯片的端口、存儲器、時鐘電路、以及復位電路和LCD液晶顯示等原理的介紹后,現(xiàn)在就可以完成對這部分硬件電路的設計了。再結合前面的分析采用間接訪問的方式實現(xiàn)單片機與液晶顯示模塊之間的連接。LCD模塊的8位數(shù)據(jù)線接在了Atmega16L芯片B口的8位數(shù)據(jù)線上,這里用了一個74LS24作為鎖存器使它們間接連接在一起。LCD的EN、D/I、CS1、CS2、R/W分別連接到PA3~PA7上,其詳細的接法見下圖</p><p>

65、;  圖2-4 硬件接線圖</p><p>  2.5 PROTEL99的應用簡介</p><p>  經(jīng)過前面的努力,智能充電器硬件電路的設計在本人及同組人的共同努力下已經(jīng)完成,接下來便是根據(jù)前面的設計用軟件畫出其原理圖并生成PCB板。PROTEL99SE是一個全32位的電路板設計軟件,使用該軟件可以容易地設計電路原理圖、畫元件圖、設計電路板圖、畫元件封裝圖和電路仿真。</p&g

66、t;<p>  在這里主要用它來繪制電路原理圖和生成印制電路板。原理圖的設計步驟如下:</p><p>  設置原理圖設計環(huán)境。其中,工作環(huán)境設置是使用Design/Options和Tool和Preferences菜單進行的,畫原理圖環(huán)境的設置主要包括圖紙大小、捕捉柵格、電氣柵格、模板設置等。</p><p>  放置元件,將電氣和電子元件放置在圖紙上。</p>

67、<p>  原理圖布線。元件一旦放置在原理圖上,不需要用導線將元件連接起來,連接時一定要符合電氣規(guī)則。</p><p>  編輯和調(diào)整。編輯元件的屬性。包括元件名、參數(shù)、封裝圖等。調(diào)整元件和導線的位置等操作。</p><p>  本次設計所用的主要元件屬性如下:</p><p>  表2-3 主要元件表</p><p>  檢查原

68、理圖。使用電氣規(guī)則功能(ERC)檢查原理圖的連接是否合理和正確。給出檢查報告,若有錯誤則要根據(jù)錯誤進行改正。</p><p>  生成網(wǎng)絡表。所謂網(wǎng)絡表就是元件名、封裝、參數(shù)及元件之間的連接表,通過該表可以確認各個元件和它們之間的關系。</p><p><b>  打印原理圖。</b></p><p>  對電路板的設計主要分為以下幾個步驟;&

69、lt;/p><p>  使用原理圖編輯器設計原理圖,進行電氣檢查(ERC)并生成原理圖的網(wǎng)絡表。</p><p>  進入電路板(PCB)環(huán)境,使用電路向?qū)Т_定電路板的層數(shù)、尺寸等電路板參數(shù)。</p><p>  使用Design/Netlist菜單,調(diào)入網(wǎng)絡表。</p><p>  由于在前面的元件封裝不規(guī)范,這里面出現(xiàn)了許多錯誤,通過請教老師

70、及自己的不懈努力,花了數(shù)天的時間才全部改了出來。</p><p>  布置元件,就是將元件合理地分布在電路板上。自動布置元件或人工布置元件,多次布置直到自己滿意為止。</p><p>  人工布線是畫電路板的基礎,但比較耗時和費力,另外由于自身經(jīng)驗的不足,只得先采用自動布線,在此基礎上作了適當?shù)男薷摹?lt;/p><p>  完成修飾等工作,完成整個電路板的設計。<

71、;/p><p>  接下來是焊接的工作,這部分相對來說并不陌生,在大二時曾進行過電子課程的實習,主要就是完成收音機的焊接。雖然以后接觸得比較少,但通過幾天的練習,還是基本圓滿地完成了任務。焊接通常要求:①焊點接觸良好,尤其避免虛焊的產(chǎn)生;②焊點要有足夠的機械強度以保證被焊點不致滑落;③焊點表面應美觀,有光澤。這塊板子面積不算大(約90cm70cm),元器件引腳多,看起來很密集。從焊下來的結果來看,焊點還可以,也算比較

72、美觀,最關鍵的是沒有短路的情況發(fā)生。</p><p>  焊接完成后,整個硬件電路原理、繪制原理路、焊接等工作已全部完成,下面轉到軟件部分的設計。</p><p><b>  第三章 軟件設計</b></p><p>  由于本人主要負責設計軟件部分,而本人之前對C語言這門課的學習不是非常的精通,因此在著手本章之前本人對C語言以及AVR單片機與

73、C語言編程方面的書籍做了認真仔細的回顧、學習和再研究,這樣才對下面設計工作的開展打下了基礎。在本章里,本人將先介紹C語言開發(fā)的優(yōu)勢,然后介紹LCD的顯示原理、模塊的軟件特性等,接下來便是最主要的整個程序的設計。</p><p>  3.1 用C語言開發(fā)單片機的優(yōu)勢</p><p>  C語言是一種編譯型的結構化程序設計語言,具有簡單的語法結構和強大的處理功能,具有運行速度快、編譯效率高,移

74、植性好和可讀性強等多種優(yōu)點,可以實現(xiàn)對系統(tǒng)便件的直接操作。用C語言來編寫目標系統(tǒng)軟件,可以大大縮短開發(fā)周期,且明顯地增加軟件的可讀性,便于改進和擴充,從而開發(fā)出大規(guī)模、高性能的應用系統(tǒng)。其優(yōu)勢如下:</p><p>  可以大幅度加快開發(fā)進度,程序量越大,用C語言就越有優(yōu)勢。</p><p>  無需精通單片機指令集和具體的硬件,也能夠編出符合硬件實際專業(yè)水平的程序。</p>

75、<p>  可以實現(xiàn)軟件的結構化編程,使得軟件的邏輯結構變得清晰、有條理、便于開發(fā)小組計劃任務、分工合作。源程序的可讀性和可維護性都很好。</p><p>  省去了人工分配單片機資源的工作,在匯編語言中要為每一個子程序分配單片機的資源。在使用C語言后,只要在代碼中申明一下變量的類型,編譯器就會自動分配相關資源,根本不需要人工干預,從而有效地避免了人工分配單片機資源的差錯。</p>&l

76、t;p>  匯編語言的可移植性很差,而C語言只要將一些與硬件相關的代碼作適當?shù)男薷模涂梢苑奖愕匾浦驳狡渌N類的單片機上。</p><p>  C語言提供auto、static、flash等存儲類型,針對單片機的程序存儲空間、數(shù)據(jù)存儲空間及EEPROM空間自動為變量合理地分配空間,而且C語言提供復雜的數(shù)據(jù)類型,極大地增強了程序處理能力和靈活性。C編譯器能夠自動實現(xiàn)中斷服務程序的現(xiàn)場保護和恢復,并且提供常用的

77、標準函數(shù)庫,供用戶使用。并且C編譯器能自動生成一些硬件的初始化代碼。</p><p>  對于一些復雜系統(tǒng)的開發(fā),可以通過移植(或C編譯器提供)的實時操作系統(tǒng)來實現(xiàn)。</p><p>  正由于C語言在系統(tǒng)開發(fā)中的優(yōu)勢,這次設計的所有程序設計都將采用C語言編寫,且通過ICCAVR編譯器操作AVR的硬件資源。</p><p>  3.2 液晶顯示漢字或字符的原理<

78、;/p><p>  LCD本身不發(fā)光只是調(diào)節(jié)光的亮度,目前市面上的LCD顯示器都是利用液晶的扭曲一向列效應制成,這是一種電場效應,夾在兩片導電玻璃電極間的液晶經(jīng)過一定處理,它內(nèi)部的分子呈直角扭曲,當線性偏振光透過其偏振面便會旋轉一個直角。當在玻璃電極上加上電壓后,在電場作用下,液晶的扭曲結構消失,偏振光便可以直接通過。當去掉電場后液晶分子又恢復取扭曲結構。把這樣的液晶置于兩個偏振片之間,改變偏振片相對位置就可以得到白

79、底黑子或黑底白字的顯示形式。結合以上知識具體顯示原理如下:</p><p>  ( 1 ) 線段的顯示</p><p>  點陣圖形式液晶由M*N個顯示單元組成,假設LCD顯示屏有64行,每行有128列,每8列對應1字節(jié)的8位,即每行由16字節(jié),共16*8=128個點組成,屏上64*16個顯示單元與顯示RAM區(qū)1024字節(jié)相對應,每一字節(jié)的內(nèi)容和顯示屏上相應位置的亮暗對應。例如屏的第一行的

80、亮暗由RAM區(qū)的00H~00FH的16字節(jié)的內(nèi)容決定,當(000)=FFH時,如屏的左上角顯示一條短亮線,長度為8個點;當(3FFH)=FFH時,則顯示屏的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=FFH,(003H)=00H,…(00EH)=FFH,(00FH)=00H時,則在屏的頂部顯示一條由8段亮線和8段暗線組成的虛線。這就是LCD顯示的基本原理。</p><p> 

81、 ( 2 ) 字符的顯示</p><p>  用LCD顯示一個字符時比較復雜,因為一個字符由6*8或8*8點陣組成,既要找到和顯示屏上某幾個位置對應的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同的位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮,這樣一來就組成某個字符。但對于內(nèi)帶字符發(fā)生器的控制器 (如HD61202)來說,顯示字符就比較簡單了,可讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行

82、的列數(shù)找出顯示RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。</p><p>  ( 3 ) 漢字的顯示</p><p>  漢字的顯示一般采用圖形方式,事先從微機中提取要顯示的漢字的點陣碼,每個漢字占32B,分左右兩半部,各占16B,左邊為1、3、5…右邊為2、4、6…根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)可找到顯示RAM對應的地址,設立光標,送上要顯示的漢字的一字節(jié),光

83、標位置加1,送第二字節(jié),按行按列對齊,送第三字節(jié)……直到32B顯示完就可在LCD上得到一個完整的漢字。</p><p>  3.3系統(tǒng)程序流程圖</p><p>  為了方便程序的設計,使自己在設計過程中做到思路清晰,設計起來游刃有余。這里首先畫出了程序流程圖,后面根據(jù)次流程圖具體設計程序,現(xiàn)具體分析如下:</p><p><b>  (一)主程序流程圖&

84、lt;/b></p><p>  這次設計課題的主要內(nèi)容是在充電器的充電過程中,采集參數(shù),進行電壓、電流、溫度的實時顯示。其主流程圖設計如下:</p><p><b> ?。?)</b></p><p>  圖3-1 主程序流程圖</p><p>  (二)控制程序流程圖</p><p> 

85、 要想在液晶模塊上顯示一個字符或漢字,首先必須得對控制字進行寫指令代碼、寫顯示數(shù)據(jù)和讀顯示數(shù)據(jù)3項操作。完成這3項工作都必須保證控制器處于不忙的情況下,這就必須有一個判忙子程序,其流程圖如下:</p><p>  圖3-2 判忙程序流程圖</p><p><b>  第四章 系統(tǒng)調(diào)試</b></p><p>  4.1 系統(tǒng)調(diào)試軟件介紹<

86、/p><p>  完成對系統(tǒng)的硬、軟件設計后,就可以對系統(tǒng)進行調(diào)試了。本次設計本人采用了ICCAVR編譯器作為系統(tǒng)的開發(fā)工具,進行程序的燒錄和仿真。</p><p>  4.1.1 ICCAVR編譯器簡介</p><p>  (一) ICC AVR是ImageCraft公司針對AVR單片機而開發(fā)的一個C語言編譯,它具有以下幾個特點:</p><p&g

87、t;  1.支持不帶SRAM的單片機器件。</p><p>  2.帶嵌入式的應用程序編譯器。</p><p><b>  3.帶全局優(yōu)化器。</b></p><p>  4.支持在線編程(STK200/300)。</p><p>  5.ICC AVR是一個運行于Windows 9X/NT的集成開發(fā)環(huán)境(ODE),它包

88、括單片機軟件開發(fā)所需要的編輯器、工程管理器和C編譯器。</p><p>  6.ICC AVR采用了工程的組織形式。程序的所有源文件全部以工程的一個要素保存在工程中,并且程序的編輯和編譯也都在這個環(huán)境中進行。工程管理器最后還能生成HEX格式的燒錄文件和COFF格式的仿真文件。</p><p>  (二)ICC AVR支持的數(shù)據(jù)類型</p><p>  數(shù)據(jù)類型就是數(shù)

89、據(jù)的不同表示形式,它們按照被描敘數(shù)據(jù)的性質(zhì)及其所占存儲空間的大小來劃分。ICC AVR的C編譯器可以支持4種數(shù)據(jù)類型,它們分別是:基本數(shù)據(jù)類型、構造類型、指針類型和空類型。</p><p><b>  1.基本數(shù)據(jù)類型</b></p><p>  基本數(shù)據(jù)類型包括字符型(Unsign Char和Signed Char)、整型(Unsigned Int和SignedIn

90、t)、長整型(Unsigned Long和Signed long)、浮點型(Float)和雙精度型(Double〕。基本數(shù)據(jù)類型不只有再分性,它不可以再分解為其他的數(shù)據(jù)類型。</p><p><b>  2.構造數(shù)據(jù)類型</b></p><p>  構造數(shù)據(jù)類塑包括數(shù)組型(Array)、結構體類型(Smuct)、公用體類型(Union)和枚舉類刑(Enum)。構造數(shù)據(jù)

91、類型由若干個基本數(shù)據(jù)類型采用構造的方法成,因此,每個構造數(shù)據(jù)類烈都可以分解成若干個基本數(shù)招類型。</p><p><b>  3.指針類型</b></p><p>  指針是一種用來專門存放所指對象地址的變量,它指向計算機內(nèi)的一個內(nèi)存單元。指針的處理具有較高的靈活性,使用它可以有效地表示復雜的數(shù)據(jù)結構,有效地使用內(nèi)存空間,方便地處理數(shù)組,因此,它是C語言中一種非常重要

92、的數(shù)據(jù)類型。 </p><p><b>  4.空類型</b></p><p>  空類型也就是Void類型。在調(diào)用函數(shù)時,函數(shù)通常都會返同一個函數(shù)值。這個返回的函數(shù)值的數(shù)據(jù)類型可以在函數(shù)定義和函數(shù)說明中由用戶指定。但有一些函數(shù),它只進行一定的處理,在調(diào)用后并不需要返回某個函數(shù)值,那么這種函數(shù)可以定義為“空類型”。</p><p>  當

93、一個計算的幾個運算分量的數(shù)據(jù)類型不相同時.要根據(jù)一些規(guī)則把它們轉換成某個共同的數(shù)據(jù)類型。這種轉換可自動進行,也可以人工強制轉換。通常來說,編譯器會把“窄”的數(shù)據(jù)類型自動轉換成“寬”數(shù)據(jù)類型,以保證計算信息不被丟失。</p><p>  4.1.2 ICC AVR的主要設置</p><p>  點擊菜單中“Tools”欄中的“Application Builder”命令,打開應用構筑向?qū)υ?/p>

94、框,其框圖如4-1所示??驁D主要有以下頁面:</p><p> ?、臗PU選項:可對芯片的種類、頻率、是否使用看門狗以及是否使用INT0和INT1等進行選擇。在這里選擇M16芯片,7.3728頻率,使用看門狗。</p><p> ?、芇ORTS選項:可以設計I/O的屬性,其關系如下:</p><p>  表4-1 Ports選項中符號與端口實際設定</p>

95、;<p>  Ports的設定在具體調(diào)試過程中設定。</p><p>  Memory選項:可以設定是否擴展SRAM,是否插入等待周期等內(nèi)存信息。這里選中“Enable external memory”和“Wait states”的復選框。</p><p>  Timer0選項:可以設定是否使用Timer0,是否打開Timer0溢出中斷以及設定Timer0的周期。在這里選中“

96、Use timer0”和“Overflow interrupt”的復選框。在“Desired Units”中設定100ms,“Rescale select”為1024。Timer1選項:同Timer0相同,還可設定比較寄存器以及輸入捕獲等功能。在這里暫不作任何設定。</p><p><b>  4.2 調(diào)試過程</b></p><p>  為了鞏固前面所學的知識,培養(yǎng)

97、對AVR單片機學習的興趣,同時也為了學會并熟練掌握ICCAVR編譯器的應用,為最后的聯(lián)機調(diào)試打下基礎。在這里設計了一些最簡單的單片機系統(tǒng)實例進行調(diào)試,其核心部件采用Atmega16L芯片。</p><p>  一個最簡單的單片機系統(tǒng)的開發(fā)也需要電路設計、單片機器件選擇和程序編寫3個步驟。對于單片機系統(tǒng),最簡單的功能無非是控制輸出電平的高低。單片機的最簡單系統(tǒng)是指單片機能正常工作所必須的外圍元件,主要由單片機、晶振

98、電路和復位電路組成。</p><p>  同傳統(tǒng)的單片機系統(tǒng)一樣,Atmega16L的晶振電路也分為外部時鐘模式和內(nèi)部時鐘模式兩種,其內(nèi)部時鐘電路如下圖:</p><p><b>  C2</b></p><p><b>  圖4-1晶振電路 </b></p><p>  鑒于Atmega16L的主

99、頻范圍為0-8MHz,這里選用的是晶振為7.3728MHz。</p><p>  復位電路采用了上電復位電路,其電路圖如下:</p><p><b>  MPU</b></p><p>  圖4-2 復位電路</p><p>  注意這一點和有51系列的單片機是不同的,Atmega16的RST是低電平復位,而8051系

100、列單片機是高電平才發(fā)生復位,換句話說,這兩種單片機復位電路的設計完全相反。</p><p>  了解了以上兩部分電路,再配合I/O接口中,就可以進行電路的設計了。</p><p>  本來這次是準備在面包板上完成實驗的,但后來覺得引腳插在面包板里面,松緊不一,且面包板是一個長條形,如果做到后面的實現(xiàn)隨著線的增多,空間跨度太大,影響視覺,某根線一旦出了問題也不易檢查,綜合各方面考慮,最后選用

101、了一次性萬用板來進行,這和印制電路板差不多,是通過焊接焊上去的,這既美觀,出了問題也方便查找并解決。</p><p>  編寫好的程序通過并行通信下裁AVR-ISP燒到板子里面,其下裁電纜的電源由目標板提供,其管腳如下:</p><p>  圖4-3 目標板管腳圖</p><p>  使用廣東雙龍電子提供的MCU下載程序軟件,用數(shù)據(jù)線將ISP下載插座同電腦相連。就可

102、以進行程序的調(diào)試了。其中下載軟件界面如圖5-4所示。將“通信參數(shù)設計及器件選擇”欄中的“AT89C52”改為“Atmega16”。</p><p>  當下載軟件的(1)區(qū)域出現(xiàn)“擦除完成,編程開始”字樣時,表示它已和AVR的ISP插座連接好,可以進行程序下載的操作了。否則,將顯示“程序編程連接失敗”的字樣。在第一次進行操作時,也出現(xiàn)了連接失敗的信號。軟件是最新下載的,通過萬用表檢查,軟件周圍的接線都沒有問題,顯

103、然不是自身的問題。再經(jīng)仔細檢查,原來是Atmega16L的芯片的5V電源掉線了。單片機不能運作,當然沒法進行程序的下載了。雖然這一過程花了不少時間,吃一塹,長一智,從這也看出了進行電子創(chuàng)作的嚴謹性,不通過細心的觀察,冷靜的分析,是不可能完成的。</p><p>  前面說到,測試單片機的最簡單系統(tǒng)最簡單的就是控制輸出電平的高低,這里采用發(fā)光二極管作為它的輸出器件,用二極管的亮或滅表示自己設計的單片機系統(tǒng)是否能夠正

104、常工作。具體進行了以下實際電路的設計。</p><p> ?。ㄒ唬┮粋€燈的閃爍。</p><p>  通過上面的介紹,Atmega16L有32個I/O輸出口,作為第一功能時,它們是沒有區(qū)別的。這次主要用它的B口進行實驗。在萬用板上插上Atmega16L芯片,按上面的方法接上晶振電路和復位電路。接通電源(5V),用萬用表測B0口壓降,測得電壓+5V,可知系統(tǒng)正常。在B0端接上一發(fā)光二極管。&

105、lt;/p><p>  發(fā)光二極管是由于其兩端的電壓差超出其導通壓降時開始工作,它的壓降通常為1.7V-1.9V。且工作電流也要滿足該二極管的發(fā)光要求。滿足了這兩點,發(fā)光二極管就可以開始發(fā)光了??刂艬0口電平的高低,就可以實現(xiàn)二極管的亮滅了。</p><p>  打開ICCAVR編譯器,按照上面的步驟進行構筑向?qū)Э虻牟僮?。在PORTS的選項中,把B口設置為輸出口,值為“1”。其它按上面的設置,

106、進入到IDE環(huán)境。編輯顯示程序,編輯窗口里面已經(jīng)有初始化程序、看門狗程序等基本程序。只要進行主函數(shù)的編寫就可以了。</p><p>  要讓輸出口電平發(fā)生轉換,采用了兩種方法。一種是用延時的辦法。初始設B0口為0,二極管不亮,經(jīng)過一定時間的延時后,B0口變?yōu)?,二極管發(fā)光。再過相同時間,B0口再為0…按上述步驟循環(huán),就可以實現(xiàn)二極管的亮滅了。</p><p>  編寫程序,由于這里采用的是

107、C語言編寫,程序相對來說比較簡單,延時程序如下:</p><p>  void delay_1ms(void)</p><p>  { unsigned int i;</p><p>  for(i=1;i<(unsigned int)(xtal*143-2;i++);}</p><p>  xtal是晶振頻率,這里采用的是7.3728

108、MHz,從理論上講,應出現(xiàn)1ms左右的延時。編譯器上通過以后,可以進行程序的下載。選中“Flash”存儲器,選擇保存的路徑。二極管出現(xiàn)了快速的亮滅交替顯示。將143設置為143000,將周期提高到近1s,實際運行時,小燈的閃動明顯變慢,基本達到了預期目標。</p><p>  第二種利用中斷。主程序?qū)0口置1,使小燈發(fā)亮。在timer0中設置計數(shù)操作,當?shù)竭_一定的數(shù)值時,B0口跳為0。程序跳到timer0中運行

109、,實現(xiàn)中斷。然后跳出中斷,每計數(shù)到一固定的數(shù)值時,程序就執(zhí)行中斷操作。</p><p>  第一次運行時,小燈發(fā)亮,但不閃爍。檢查電路,接線完好,程序是編譯通過的,語法上不可能有毛病。程序設計的思想也應該沒有錯誤。反復讀寫程序,結果發(fā)現(xiàn)沒有調(diào)用看門狗復位程序??撮T狗可以保證程序執(zhí)行過程中不會復位,而當程序陷入死循環(huán)后,能保證在允許的時間里復位。把看門狗程序放在timer0里面,重新下載,就發(fā)現(xiàn)小燈可以閃爍了。&l

110、t;/p><p><b> ?。ǘ舻难h(huán)顯示</b></p><p>  這一實驗主要實現(xiàn)在B口接8個小燈,讓小燈從B0到B7逐個發(fā)亮。通過上面的兩種方法的比較,當小燈個數(shù)較多時,對逐個實現(xiàn)延時比較麻煩。而采用中斷實現(xiàn)時,初設小燈全部發(fā)亮,當每計數(shù)到一固定時間時,點亮1個燈,8個燈全亮時作為總的循環(huán)時間,用for語句實現(xiàn),里面用switch…case語句分為8種情況。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論