<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于AVR的智能信息記錄儀設(shè)計

          基于AVR的智能信息記錄儀設(shè)計

          作者: 時間:2014-03-25 來源:網(wǎng)絡(luò) 收藏

          摘要:給出了基于單片機來設(shè)計智能信息記錄系統(tǒng)的軟硬件設(shè)計方法,該方法通過外加液晶和USB接口,并通過U盤直接存儲信息,然后在液晶上顯示,從而完成對儀器的開關(guān)機時間等信號的智能存儲。

          本文引用地址:http://www.ex-cimer.com/article/235294.htm

          0 引言

          隨著計算機技術(shù)的發(fā)展,對各種儀器的使用情況的監(jiān)控也越來越智能化。針對目前市場上時間記錄儀成本高、可擴展性差、存儲容量小、編程復雜等缺點,本文通過以單片機為核心控制器,以高亮度液晶為顯示器,以USB移動硬盤為存儲設(shè)備,設(shè)計了一種智能時間記錄儀。

          1 系統(tǒng)硬件設(shè)計

          1.1 系統(tǒng)總體組成

          智能信息記錄儀由單片機、電源、液晶顯示、鍵盤輸入和USB模塊幾部分組成,其系統(tǒng)組成結(jié)構(gòu)框圖如圖1所示。系統(tǒng)中的電源包括外部

          電源和鋰電池。開機后,系統(tǒng)主電源一邊給電路供電,一邊對鋰電池充電。關(guān)機后,則由鋰電池給USB供電完成數(shù)據(jù)的保存。液晶顯示部分的主要任務是完成開關(guān)機時間的查詢顯示,在空閑時顯示當前的系統(tǒng)時間。時鐘模塊使用的是DSl302芯片,它是DALLAS公司推出的涓流充電時鐘芯片,片內(nèi)含有一個實時時鐘/日歷和31字節(jié)靜態(tài)RAM。它可通過簡單的串行接口與單片機進行通信,實時時鐘/日歷電路可提供秒、分、時、日、星期、月、年的信息,每月的天數(shù)和閏年的天數(shù)可自動調(diào)整。USB模塊采用的U盤讀寫芯片PB375A是一個比較簡單的U盤讀寫解決方案。使用它無需了解繁瑣的USB HOST底層協(xié)議和FAT文件系統(tǒng)(支持FATl2和FATl6及FAT32文件系統(tǒng)),而只需要將MCU與模塊通過SPI接口或者UART通信,通過執(zhí)行幾個簡單命令,便可完成文件的新建、讀寫、刪除等功能,使用十分簡單方便。另外,對于單片機來說,基本不占用單片機系統(tǒng)的存儲空間,只需要幾個字節(jié)的RAM和幾百字節(jié)的代碼就可完成。它的串口支持9600、4800和2400bit/s三種波特率的選擇,由于其內(nèi)置5 V轉(zhuǎn)3.3 V電路,故可大大簡化外圍電路的設(shè)計。

          ?

          ?

          1.2 硬件電路設(shè)計

          該信息記錄儀器采用一款高性能低功耗的處理器ATmega64作為中央控制器,它的工作電壓為3.3 V,具有豐富的內(nèi)部資源:包括53個可編程的I/O口、7個外部中斷、2個16位定時器、2個8位定時器、4 KB的片內(nèi)SRAM和64 KB系統(tǒng)內(nèi)可編程Flash存儲器,而且擦寫壽命長,可滿足系統(tǒng)要求。ATmega64及其外圍接口電路如圖2所示。

          ?

          ?

          該儀器的中斷接口電路包括開機時的上電中斷和關(guān)機時的掉電中斷,它們都由光電耦合芯片6N137和非門74LVT04組成,圖3所示是其中斷電路。電源VC經(jīng)過7805后接到光耦的輸入端,輸出接單片機的INT0和非門的l腳,非門的2腳接INTl。因此,在開機時,光耦輸入端Vin+為高電平,輸出端Vo為低電平,故產(chǎn)生上電中斷(INT0);而關(guān)機時,光耦的輸入是低電平,而輸出為高電平。故在經(jīng)過非門2腳后,輸出低電平以產(chǎn)生掉電中斷(INTl)。

          ?

          ?

          電源切換電路主要的功能是在系統(tǒng)關(guān)機時,轉(zhuǎn)由鋰電池給USB供電并完成數(shù)據(jù)的保存,其電源切換如圖4所示。圖中,當外部開機后,V為高電平使三極管Q2導通,同時把Q1的基極拉至低電平,使其導通。外部電源V經(jīng)過二極管D1后(VC)給單片機電路和USB供電。由于程序在初始時把POWER置高,所以,此時Q2也是導通的。當系統(tǒng)關(guān)機后,V變成低電平,三極管Q2截止。但是,由于此時Q3是導通的,所以Q1仍導通,只是此時是由鋰電池供電來完成數(shù)據(jù)的保存,這時,單片機的定時器l開始工作,并在延時10 s后,使POWER的輸出為低電平,從而使Q3關(guān)斷,并最終使Q1的基極變高,整個記錄儀關(guān)閉。

          ?

          ?

          2 系統(tǒng)軟件設(shè)計

          系統(tǒng)軟件的主要任務是USB的讀寫、液晶的顯示、時鐘和鍵盤的編程。PB375A和單片機之間使用串行通信。其中,單片機首先將命令碼和

          參數(shù)信息發(fā)送給PB375A,由PB375A根據(jù)命令信息執(zhí)行完相應操作,再以中斷方式返回操作狀態(tài)碼給單片機。通信格式包括起始碼(0x3A)、操作碼、數(shù)據(jù)長度和數(shù)據(jù)包。其主要的操作碼如下:

          Ox71:檢測U盤是否連接,連接時返回0;

          0x64:打開已有的文件,如果文件不存在,則返回Ox42:

          0x65:新建文件;

          Ox7A:確定讀寫字節(jié)的地址;

          0x7B:以字節(jié)為單位返回讀取的數(shù)據(jù)。

          圖5所示是本系統(tǒng)的程序流程框圖。

          ?

          ?

          2.1 文件新建與數(shù)據(jù)寫入

          利用命令CMD_FileCreat可新建文件,文件名應為8+3格式,且必須為大寫字母或者數(shù)字。

          寫入數(shù)據(jù)可通過命令CMD_ByteWrite來實現(xiàn)。

          通過CMD_FileClose命令可關(guān)閉文件。關(guān)閉文件將自動更新文件長度。另外應特別注意只有關(guān)閉了文件;才默認生成文件,否則沒有文件生成,也就無法進行下面的操作(例如新建文件后沒有關(guān)閉文件就開始讀數(shù)據(jù),則該操作無效)。

          2.2 向已有文件追加數(shù)據(jù)

          向已有文件追加數(shù)據(jù)時的一般命令如下:

          CMD_FileOpen:打開文件;

          CMD_ByteLocate:移動文件指針到末尾(0xFFFFFFFF);

          CMD_ByteWrite:寫入數(shù)據(jù);

          CMD_FileClose:關(guān)閉文件。

          2.3 寫數(shù)據(jù)操作

          寫數(shù)據(jù)時,首先讀取實時時鐘DSl302的值,以判斷當前時間是不是每月的1號,如果是,就新建一個vv-mm.TXT文件,用來保存一個月中每天的開機次數(shù),然后再新建yy—mm—dd.TXT文件來保存每次具體的開關(guān)機時間。假如現(xiàn)在是09年11月1日,則先新建09-11.TXT并寫入31個0,然后把它第一個數(shù)讀取出來,是0則新建09-11-01.TXT,寫入開機時間后,再把開機次數(shù)的標志位加1,然后再寫入文件09-11.TXT。第二次開機時,時間就直接追加到該文件里。


          上一頁 1 2 下一頁

          關(guān)鍵詞: AVR ATMEGA64

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();