




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
基于單片機的寵物喂食器結(jié)構(gòu)設(shè)計摘要本次論文是以STC89C52單片機為中心,設(shè)計了一種手動設(shè)定時間的寵物自動喂食裝置。結(jié)合國內(nèi)外的研究現(xiàn)狀,設(shè)計了基于單片機智能控制功能開發(fā)的寵物自動喂食系統(tǒng)。該系統(tǒng)可大致分為顯示和控制兩個部分,包括有電源驅(qū)動模塊、液晶顯示模塊、按鍵調(diào)節(jié)模塊、語音播報模塊等多個模塊。系統(tǒng)可以按下按鍵,手動設(shè)定多個供食時間,并顯示在液晶顯示模塊上。在特定的供給食物的時間內(nèi),該系統(tǒng)可以通過聲音廣播來發(fā)送供給食物的信號,最后通過步進電機轉(zhuǎn)動的正反方向來模擬喂食的情況。該課題研究的核心是利用單片機控制各模塊,實現(xiàn)定時的餐食投入。整個自動喂食系統(tǒng)引入了分模塊的設(shè)計理念,系統(tǒng)的各個模塊功能單一且相對獨立,預(yù)期提高喂食系統(tǒng)的智能程度,實現(xiàn)寵物的合理化喂食需求,避免了因為各種各樣的理由主人不能給寵物喂食的尷尬狀況。該設(shè)計具有功耗低、控制簡單、成本低、設(shè)計簡便、應(yīng)用價值高、市場廣闊等諸多優(yōu)點,可供眾多寵物飼養(yǎng)者使用。關(guān)鍵字:寵物喂食器;定時喂養(yǎng);STC89C52;電機驅(qū)動目錄TOC\o"1-3"\h\u1引言 -2-2概述2.1研究的背景和意義能夠客觀地評價我國寵物市場、寵物行業(yè)的發(fā)展現(xiàn)狀就是寵物用品設(shè)計研究的關(guān)鍵所在,并且對于預(yù)測寵物市場后續(xù)發(fā)展趨勢,幫助我國準(zhǔn)確把握行業(yè)國內(nèi)外競爭力有著重要意義。從產(chǎn)品的競爭力和創(chuàng)新能力等方面提出更為科學(xué)的對策和合理化建議是本研究重點。同時,通過引起政府和社會對于寵物產(chǎn)品行業(yè)的重視和關(guān)注,充分發(fā)揮寵物產(chǎn)品行業(yè)自身的優(yōu)勢和功能,減少寵物產(chǎn)品制造商和企業(yè)之間的惡性競爭,縮短中外寵物產(chǎn)品設(shè)計之間的時間差距,是另一個非常重大的意義[2]。目前,美國的寵物產(chǎn)業(yè)位居世界第一,并且美國就是世界上養(yǎng)寵物和消費最多的國家,北美和西歐也已發(fā)展成為全球?qū)櫸镄袠I(yè)最大的市場。從上述表述就可以清楚地認(rèn)識到寵物產(chǎn)業(yè)在各發(fā)達(dá)國家的發(fā)展之強勢、迅猛。根據(jù)各類相關(guān)資料,在西方國家,寵物產(chǎn)業(yè)已經(jīng)有超過一個世紀(jì)的歷史了。一個擁有豐富的產(chǎn)品和成熟的服務(wù)的產(chǎn)業(yè)體系已經(jīng)形成,包括有食品、養(yǎng)殖、醫(yī)療、培訓(xùn)、保險、美容等各個領(lǐng)域[3]。寵物因其陪伴、娛樂的作用在發(fā)達(dá)國家許多的家庭中占據(jù)了重要的地位,并且成為了國家經(jīng)濟的一個不可或缺的組成部分,飼養(yǎng)寵物為西方家庭的生活娛樂提供了新的模式。在2017年,有大約七成的美國家庭至少擁有一只寵物,寵物行業(yè)在五年時間里內(nèi)復(fù)合增長率為5.4%,消費規(guī)模有將近七百億美元。從2017年到2019年,美國寵物行業(yè)的市場規(guī)模增長了約三百億美元,現(xiàn)在已經(jīng)達(dá)到了將近一千億美元[4]。同時,一批在國內(nèi)外兼具非凡影響力的企業(yè)在美國誕生、扎根,美國也因此形成了世界上最完整的寵物行業(yè)細(xì)分市場。根據(jù)前文可知,我國寵物行業(yè)進入21世紀(jì)以來就開始迅速發(fā)展,近幾年的發(fā)展更是勢如破竹,雖然起步比國際市場要晚上許多,但絲毫不落于下風(fēng)。查詢各類資料可發(fā)現(xiàn),和西方發(fā)達(dá)國家十分不同,我國養(yǎng)寵物的人大多是工作條件較好、教育水平較高的年輕人,并且以“空巢青年”、御宅族為主要群體[5]。而年輕人,特別是90后是近幾年城市人口的一個極為重要的組成部分。年輕人在繁忙的工作限制下,普遍結(jié)婚較晚,獨居成為年輕人的一種生活方式,而晚婚和少子推動了寵物產(chǎn)業(yè)的發(fā)展。家中飼養(yǎng)的寵物在年輕人的家庭中逐漸充當(dāng)著孩子的角色。人均國內(nèi)生產(chǎn)總值(GDP)、人均可支配收入、城市人口比例、獨居且情感陪伴較為缺失的老齡人口和青年人口數(shù)量都呈現(xiàn)增多的趨勢,資本和其他多種因素也不斷促進催化,種種情況綜合之下,中國的寵物飼養(yǎng)比率以及寵物飼養(yǎng)花費的比率都隨之增加,寵物行業(yè)正在迎勢而上。另一方面,寵物行業(yè)“井噴時代”已然隨著寵物品牌意識、寵物產(chǎn)品升級而到來。2.2國內(nèi)外研究的現(xiàn)狀與發(fā)展趨勢把握寵物與產(chǎn)品之間的一種協(xié)調(diào)的關(guān)系是寵物產(chǎn)品的設(shè)計重點,而滿足寵物的真實需求是判斷寵物產(chǎn)品是否實用以及適用的標(biāo)準(zhǔn)。使寵物產(chǎn)品的功能、性能等等都更好的滿足寵物的實際需求,增強寵物在使用或感受寵物產(chǎn)品時的精神愉悅感是寵物產(chǎn)品設(shè)計的初衷[6]。當(dāng)是時,各種寵物產(chǎn)品層出不窮,為解放寵物主人而推出的各種智能寵物產(chǎn)品更加成為研究的重點。自動喂食無疑是一個寵物產(chǎn)品方面的研究熱點,國內(nèi)外都有與自動寵物喂養(yǎng)有關(guān)的研究。由于國外在這方面的發(fā)展時間長,對寵物產(chǎn)業(yè)中一些問題的探索深度和廣度相對較高[7],而我國在這方面相對落后。從1980年代到2000年代初期的近四十年中,許多已出版的設(shè)計書籍進一步顯示了西方國家寵物產(chǎn)品設(shè)計方面思想的發(fā)展,并且一些先進的觀點對于我國寵物產(chǎn)品的設(shè)計具有重要指導(dǎo)意義[8]。另一方面,寵物飼養(yǎng)智能化、自動化的研究已經(jīng)取得了不錯的進展,但仍存在著設(shè)備過大、結(jié)構(gòu)復(fù)雜、價格高、普通寵物養(yǎng)殖者負(fù)擔(dān)不起等等諸多亟待解決的問題。我國對寵物自動喂食器的研究由于寵物行業(yè)的發(fā)展滯后和相關(guān)科學(xué)技術(shù)發(fā)展的落后要遠(yuǎn)晚于歐美國家,但我國許多研究人員基于國外相關(guān)技術(shù)的啟發(fā)朝這個方向進行深入研究。早年,趙飛達(dá)等人研究了自動寵物喂食器[9],該自動寵物喂食器可以自動為食物供水,并且使用壽命、續(xù)航時間都較長。近年來,杜雨涵、蒲小年等人在此類產(chǎn)品的智能化方面也進行了相關(guān)研究和改進[10]?!翱萍紡妵?、“加快建設(shè)創(chuàng)新型國家”隨著國內(nèi)科學(xué)技術(shù)的進一步發(fā)展,成為國家多次提及的重點建設(shè)方向。一系列政策措施應(yīng)運而生,跨學(xué)科融合成為科學(xué)研究的趨勢。科技領(lǐng)域的創(chuàng)新作為國家的重點關(guān)注項目已經(jīng)取得了不俗的成績,基本從追趕中走了出來,正在向趕超發(fā)力,甚至在某些領(lǐng)域處于科學(xué)技術(shù)的最前沿。我國的研究人員一直在不懈努力、賡續(xù)奮斗,以推進改革和創(chuàng)新的自我實現(xiàn),并在自動寵物喂食器研究領(lǐng)域進行了深入的研究,所設(shè)計的產(chǎn)品性能得到進一步優(yōu)化,體驗更優(yōu)也更人性化,深受市場好評。各種饋線功能包羅萬象,包括語音廣播、紅外感應(yīng)、自動補水等。寵物用品研究人員致力于推動寵物喂食器向集成化、智能化、自動化方向發(fā)展。第二屆國際寵物交易會在中國北京舉辦,寵物自動喂食依然是會議的重點。展會上,包括德國、瑞士在內(nèi),在中國設(shè)有運營中心的各家國際貿(mào)易有限公司都參加了展覽,展示了各種各樣有關(guān)寵物自動喂食和寵物飼養(yǎng)的產(chǎn)品。顯然,這一點也暗示著,智能自動化已成為寵物市場的趨勢之一[11]。各類與人類日用相關(guān)的產(chǎn)品將向智能自動方向發(fā)展不僅是所有參展商的共識,也是寵物產(chǎn)品市場的發(fā)展趨勢。對于這一領(lǐng)域應(yīng)用的發(fā)展,“智能”是一個進步,可以使得控制更加靈活,更加精確,且符合電子化設(shè)備“綠色”的需求。2.3本設(shè)計方案思路本設(shè)計主要是實現(xiàn)的是寵物的定時喂食,以液晶顯示、按鍵控制為主要設(shè)計內(nèi)容,可具體分為主控模塊、時鐘模塊、按鍵模塊、液晶顯示模塊、語音播報模塊、步進電機模擬模塊等多個獨立模塊。在液晶顯示模塊選用LCD(LiquidCrystalDisplay)顯示屏來進行時間的顯示;時鐘模塊則使用DS1302時鐘芯片;語音播報模塊使用集成度較高且使用較為簡便的語音芯片;步進電機模擬則選用四相永磁式減速步進電機。3總體設(shè)計3.1總體結(jié)構(gòu)設(shè)計本次論文為基于單片機的寵物自動喂食裝置。該系統(tǒng)可大致分為顯示和控制兩個部分,包括有電源驅(qū)動模塊、液晶顯示模塊、按鍵調(diào)節(jié)模塊、語音播報模塊等多個模塊。系統(tǒng)可以按下按鍵,手動設(shè)定多個供食時間,并顯示在液晶顯示模塊上。在特定的供給食物的時間內(nèi),該系統(tǒng)可以通過聲音廣播來發(fā)送供給食物的信號,最后通過步進電機轉(zhuǎn)動的正反方向來模擬喂食的情況。本設(shè)計具有低功耗,控制較為簡便,小型化且成本較低,設(shè)計簡單方便,適用價值高等多方面的優(yōu)勢,研究的核心是利用單片機控制各模塊,實現(xiàn)定時的餐飲投入。整個自動喂食系統(tǒng)引入了分模塊的設(shè)計理念[12],并將這個理念貫徹在整個設(shè)計過程中,系統(tǒng)的各個模塊功能單一且相對獨立,預(yù)期在盡可能使裝置小型化、成本控制在最低的的同時提高喂食系統(tǒng)的智能程度[13],最終實現(xiàn)寵物的合理化喂食需求。本論文的系統(tǒng)結(jié)構(gòu)如圖所示。圖3-1總體系統(tǒng)結(jié)構(gòu)圖3.2按鍵設(shè)置本畢業(yè)主要是為了實現(xiàn)寵物定時喂食,因此需要對喂食時間進行設(shè)定。為了實現(xiàn)靈活控制就設(shè)置了功能不同的五個按鍵[14],便于操作,主要包括修改位選擇,加,減,手動開以及手動關(guān)這五個功能。采用多個按鍵開關(guān),可實現(xiàn)三個倒計時間依次鍵入以及系統(tǒng)時間顯示,并且通過時鐘芯片可以實現(xiàn)時鐘掉電行走功能。到達(dá)設(shè)定時間,系統(tǒng)自動開啟,實現(xiàn)定時喂食。3.3語音播報當(dāng)寵物喂食器到達(dá)設(shè)定的喂食時間時,需要發(fā)送喂食信號來吸引寵物。本設(shè)計采用WT588D語音芯片實現(xiàn)語音播報的功能。外接下載器(minu)下載相應(yīng)的語音文件,單片機控制各模塊聯(lián)合協(xié)同工作,當(dāng)?shù)竭_(dá)指定時間時,芯片接收到單片機輸出的高階信號,WT588D將播放先前保存和下載的語音信息。3.4步進電機驅(qū)動本系統(tǒng)采用的步進電機是四相永磁式減速步進電機,電壓的范圍為5V至12V。為更好的實現(xiàn)步進電機的各項性能,采用八拍工作模式。喂食器系統(tǒng)主要通過步進電機的正反轉(zhuǎn)來模擬喂食情況,控制喂食開關(guān)。向前轉(zhuǎn)動時,喂食開啟;換向時,喂食終止。為增大單片機的接口信號,在電機之間增加了ULN2003實現(xiàn)信號放大的功能。ULN2003因其耐壓較高、電流較大的特點,在各類高速、大功率系統(tǒng)中應(yīng)用廣泛,在本系統(tǒng)中則主要發(fā)揮其放大信號的功能。作為大電流達(dá)林頓驅(qū)動陣列,ULN2003擁有許多優(yōu)勢,如耐壓高、放大電流能力強、適用溫度寬、輸出電阻小等等。3.5研究技術(shù)關(guān)鍵(1)DS1302時鐘芯片實時采集時間,實現(xiàn)系統(tǒng)掉電行走。(2)LCD1602對時間進行顯示。(3)控制步進電機正反轉(zhuǎn)模擬喂食。(4)WT588D播報喂食信號。3.6主要技術(shù)指標(biāo)ULN2003可以驅(qū)動高達(dá)350mA的電流,而5VTTL的輸入電平可以提供500mA/50V的輸出。STC89C52微控制器的時鐘頻率范圍是0到33MHz,本電路選擇11.0592MH時鐘。DS1302工作電壓2.5V~5.5V。4硬件設(shè)計4.1單片機電路單片機是一種集成有半導(dǎo)體硅板,包括中央處理器(CPU),存儲器(RAM,RAM),GPIO,計時器,中斷系統(tǒng),系統(tǒng)時鐘電路和總線等等各個模塊的微型計算機[15],在超大規(guī)模集成電路(VLSI)技術(shù)的基礎(chǔ)上,將許多功能集成在一個快速、小巧的硅芯片上。它具有微型計算機的特性,因此簡稱為單片機。單片機各類相關(guān)技術(shù)在三十多年的發(fā)展過程中已經(jīng)相對較為成熟?,F(xiàn)如今,單片機不是完成某一功能的芯片,而是功能完善的相對較小的微型計算機。各類應(yīng)用對單片機的需求也隨著產(chǎn)品智能化要求的提升而不斷增大。單片機的核心是一個中央處理單元(CPU),且擁有功能較為強大的存儲單元,同時還配備了豐富的I/O端口,中斷系統(tǒng),計時器等。單片機的應(yīng)用通過加大計算機技術(shù)與自動控制技術(shù)的結(jié)合,與曾經(jīng)常用的較為傳統(tǒng)的系統(tǒng)控制思想和方法有了極大的差別,對系統(tǒng)設(shè)計有了很大的改進。目前主流的單片機有51系列單片機,PIC系列單片機,AVR系列單片機,這也是應(yīng)用最廣泛的三系列單片機。現(xiàn)在,用于智能系統(tǒng)開發(fā)的單片機種類繁多,如STM,STC等,他們的計算位數(shù),計算速度,內(nèi)部資源等各不同。需要根據(jù)不同的需要選擇和設(shè)計不同類型的單片機。為此本設(shè)計選擇的單片機是STC89C52單片機,這是一種功耗較低能、性能優(yōu)越的8位CMOS微控制器[16],具有一個用于編程閃存的8K系統(tǒng),并具有8K閃存字節(jié),256字節(jié)RAM,32位輸入和輸出端口線,一個全雙工串行端口,一個板載晶體振蕩器和一個時鐘電路等等標(biāo)準(zhǔn)功能,且兼具Atmel的高密度非易失性存儲技術(shù)。圖4-1STC89C52引腳圖4.2電源電路單片機的電源采用直流5V供電,本次單片機的傳感器和無線傳輸芯片的電壓都在5V內(nèi),所以5V的電壓足夠滿足。若有12V或者其他電壓的傳感器,則可以采取升壓模塊將5V提升到更高的電壓,進行供電。電源電路圖如下:圖4-2電源電路圖4.3時鐘電路4.3.1晶振電路速度與時間成反比,因此速度往往以時間為基準(zhǔn),單片機的工作速度同樣遵循以上公式,依賴單片機的工作時間。時鐘電路作為振蕩電路的一個重要部分,起到提供正弦波信號的作用,而單片機的工作速度以接收到的正弦波信號為基準(zhǔn)。本電路選擇11.0592MHZ晶振。晶振電路如下圖所示:圖4-3晶振電路圖4.3.2DS1302時鐘電路本設(shè)計需要精確的時間設(shè)置來安排喂食,所以需要系統(tǒng)時間來實現(xiàn)斷電行走。該時鐘模塊采用DS1302,具有功耗低、性能高、精度高、時間誤差小、對時間進行自動定時、性能精度高等優(yōu)點。DS1302是一款實時時鐘電路采集芯片,工作在2.5V至5.5V的電壓之間,并且擁有優(yōu)越的性能和較低的功耗,可以對年、月、日、時、分、秒進行計時,并且可以補充閏年中缺失的日子,是作為DS1202的升級版存在的。時鐘芯片DS1302管腳如下圖所示:圖4-4DS1302管腳圖DS1302時鐘電路圖如下所示:圖4-5DS1302電路圖4.4步進電機模擬電路4.4.1步進電機選擇及其驅(qū)動步進電機作為一個開環(huán)控制元件,在控制系統(tǒng)中具有廣泛的應(yīng)用。它通過將接收到的脈沖信號進行重新計算編碼,得到角位移或線性位移,最終控制電機轉(zhuǎn)動的角度。角位移需要較為精確的定位,步進電機通過對脈沖數(shù)進行控制來達(dá)到定位目的,而電機的速度和加速度則與頻率相關(guān),通過控制脈沖的頻率可以實現(xiàn)速度調(diào)節(jié)[17]。本系統(tǒng)采用的步進電機是四相永磁式減速步進電機,電壓的范圍為5V至12V。四相步進電機按照通電順序的不同,可分為單四拍、雙四拍、八拍三種工作方式,為更好的實現(xiàn)步進電機的各項性能,采用八拍工作模式。步進電機會因為接收到一連串的脈沖信號而連續(xù)轉(zhuǎn)動。每個脈沖信號對應(yīng)于步進電動機的一相或兩相的一個繞組的勵磁狀態(tài)的一個改變,即轉(zhuǎn)子以一定角度旋轉(zhuǎn)。當(dāng)通電狀態(tài)改變完成一個循環(huán)時,轉(zhuǎn)子旋轉(zhuǎn)一級[18]。步進電機旋轉(zhuǎn)模擬喂食,正旋轉(zhuǎn)表示喂食的開始,反旋轉(zhuǎn)表示喂食的結(jié)束。表4-1步進電機主要技術(shù)參數(shù)技術(shù)參數(shù)技術(shù)參數(shù)電機型號28BYJ-48起動轉(zhuǎn)矩100P.P.Sg.cm≥300電壓V5起動頻率P.P.S≥550相數(shù)4定位轉(zhuǎn)矩g.cm≥300相電阻Ω±10%300摩擦轉(zhuǎn)矩g.cm-步距角度5.625/64嘈聲dB≤35減速比1:64絕緣介電強度600VAC1S4.4.2步進電機驅(qū)動芯片選擇及其應(yīng)用電機由于單片機的接口信號較小而無法驅(qū)動,所以在電機之間加上了一個ULN2003芯片去放大接口信號,再傳送到電機,以實現(xiàn)電機驅(qū)動。ULN2003由七個NPN硅達(dá)林頓管組成,因其耐壓較高、電流較大的特點,在各類高速、大功率系統(tǒng)中應(yīng)用廣泛,為增大單片機的接口信號,在本系統(tǒng)中ULN2003主要發(fā)揮其放大信號的功能。作為大電流達(dá)林頓驅(qū)動陣列,ULN2003擁有許多優(yōu)勢,如耐壓高、放大電流能力強、適用溫度寬、輸出電阻小等等。以本設(shè)計中使用的四相八拍步進電機為例,采用直流電源,步進電機各相繞組按適當(dāng)?shù)臅r間順序通電,步進電機就可以一步一步旋轉(zhuǎn)。四相八拍的通電模式是A-AB-B-BC-C-CD-D-DA-A。下面是ULN2003驅(qū)動電機示意圖:圖4-6ULN2003驅(qū)動電機電路圖圖4-7驅(qū)動方式示意圖4.5LCD顯示電路本論文為了使喂食時間的設(shè)定及更改更加的可視,故采用液晶屏對當(dāng)前的時間以及設(shè)定的喂食時間進行顯示。在設(shè)計過程中,關(guān)于顯示屏的選擇主要有兩種,第一種為LCD(LiquidCrystalDisplay)顯示屏,第二種為OLED(OrganicLightEmittingDisplay)顯示屏。LCD的原理是在兩塊玻璃板之間放置一個液晶,兩塊玻璃板平行放置。信號和電壓被施加到下部玻璃,下玻璃板控制晶體分子的偏轉(zhuǎn),顯示器由來自這些像素的偏振光驅(qū)動。頂部玻璃板用于設(shè)置彩色濾光片。其中,LCD1602的引腳數(shù)為16個,在編程過程中僅使用了RS(數(shù)據(jù)命令選擇器),R/W(選擇器可讀寫)和E(激活信號)這3個引腳。隨后的編程都將圍繞這三個引腳進行初始化,包括寫入命令和寫入數(shù)據(jù)??紤]到整個設(shè)計對于顯示器要求不高,只要滿足時間顯示就可以,而且1602代碼編寫相對簡單方便,所以選擇LCD1602芯片來完成顯示模塊的功能實現(xiàn)。表4-2LCD1602引腳對照表圖4-8LCD1602實物圖圖4-9LCD1602電路圖4.6語音播報電路本設(shè)計預(yù)期實現(xiàn)通過聲音吸引寵物的功能,選用可以錄制聲音,界面與接口都相對簡單且操作簡便的WT588D芯片可以很好地完成這個設(shè)計目的。語音電路與WT588D語言芯片相連接,與WT588D語音芯片上位機軟件(VoiceChip)相匹配。WT588D芯片在接收到高電平信號時,會將先前保存的聲音發(fā)出,實現(xiàn)吸引寵物的功能。WT588D語音芯片是集單片機和語音電路于一體的可編輯語音芯片,功能較為強大,可重復(fù)擦除燒寫,支持2m~32mbit的SPI-Flash內(nèi)存,集成DSP高速音頻處理器[19],可加快處理速度;集成了一個13位/DA轉(zhuǎn)換器和一個12位/PWM輸出,可提供良好的音質(zhì);融合了語音組合技術(shù),大大減少了語音編輯時間。此外,WT588D具有很高的抗干擾性,因此可以應(yīng)用于工業(yè)領(lǐng)域。表4-3WT588D引腳對照表圖4-11WT588D語音模塊電路圖5軟件設(shè)計5.1總體設(shè)計本論文所涉及的軟件部分主要包括時鐘模塊、按鍵設(shè)置模塊、LCD顯示模塊、WT588D語音播報模塊、步進電機驅(qū)動模塊。單片機的使用包括硬件和軟件的使用。我們寫匯編程序編程CPU可執(zhí)行的機器碼有兩種方法:手動匯編和機器匯編[20],其中機器匯編器通過軟件匯編器轉(zhuǎn)換為機器碼。隨著MSC-51開發(fā)技術(shù)的不斷發(fā)展,用于編程的各種語言也在不斷更新迭代,從繁瑣的機器語言到普通匯編語言再到符合人類語言習(xí)慣的高級語言,從面向?qū)ο蟮矫嫦蜻^程,編程變得越來越簡便。本論文的軟件程序設(shè)計,采用C語言進行編寫,編譯器運用到的就是由美國Keil公司出品的KeiluVision5,Keil目前是用于開發(fā)MSC-51的最受歡迎的軟件。該編譯器適用性較強,操作簡單,且支持多種語言,調(diào)試功能也較為強大,能用來編寫驅(qū)動ARM微控制器的代碼,并且它還有標(biāo)準(zhǔn)的調(diào)試器、實時內(nèi)核、宏匯編器等組件。5.2流程框圖圖5-SEQ圖\*ARABIC\s31程序流程圖該設(shè)計的主程序基本內(nèi)容:首先進行初始化,對LCD、WT588D語音模塊、步進電機等各個外部設(shè)備進行初始化,并在LCD上完成時間的顯示。其次判斷是否按下按鍵,若按鍵1按下,則進行時間設(shè)定與修改,按鍵2、3分別表示數(shù)值加、數(shù)值減;若按鍵3按下,則開啟手動喂食,電機收到單片機指令,開啟正轉(zhuǎn),按鍵4按下,則電機反轉(zhuǎn),喂食停止。5.3系統(tǒng)程序設(shè)計該設(shè)計的程序編寫可分成以下幾個模塊:主程序,時鐘模塊程序設(shè)計,按鍵設(shè)置模塊程序設(shè)計,LCD顯示模塊程序設(shè)計、WT588D語音播報模塊程序設(shè)計、步進電機模擬喂食模塊程序設(shè)計等。主程序中就包含了各個外部設(shè)備的初始化以及按鍵模塊的程序設(shè)計。5.3.1主程序設(shè)計主程序包括對LCD1602、DS1302時鐘、WT588D語音模塊、步進電機等各個外部設(shè)備的初始化,時間讀取與顯示的程序設(shè)計,喂食時間設(shè)定與系統(tǒng)開關(guān)的程序設(shè)計,以及按鍵模塊的程序設(shè)計。在本論文中,最關(guān)鍵的部分在于喂食時間的修改以及設(shè)定,按鍵模塊是設(shè)計的核心。在本設(shè)計中總共運用到5個按鍵,控制喂食時間的修改以及手動喂食的開關(guān)。LCD1602初始化設(shè)置:lcd_init();//1602初始化 lcd_write_str(0,0,"00:00:00"); lcd_write_str(0,1,"FoodTime00:00:00");時鐘初始化:unsignedcharset_shi2=12,set_fen2=0,set_miao2=0;//喂食時間初始化unsignedcharset_shi3=18,set_fen3=0,set_miao3=0;//喂食時間初始化時間讀取與顯示。獲取DS1302中以秒、分、時、天、月、周、年為單位表示的時間,賦值并在LCD上進行顯示。獲取DS1302時間,bcdtodec函數(shù)進行BCD轉(zhuǎn)換。ucharbcdtodec(ucharbcd){ return(bcd/16)*10+(bcd%16);}以時分秒的讀取為例:v_W1302(0x8f,0);sec=bcdtodec(uc_R1302(0x81)); //秒v_W1302(0x8f,0);min=bcdtodec(uc_R1302(0x83)); //分v_W1302(0x8f,0);hour=bcdtodec(uc_R1302(0x85));//時將讀取到的時間賦值到一個數(shù)組:DS1302_Table[4]=hour;DS1302_Table[5]=min;DS1302_Table[6]=sec;在LCD的相應(yīng)位置進行時、分、秒的顯示if(setn==0){lcd_write_char(4,0,DS1302_Table[4]/10+0x30);lcd_write_char(5,0,DS1302_Table[4]%10+0x30);lcd_write_char(7,0,DS1302_Table[5]/10+0x30);lcd_write_char(8,0,DS1302_Table[5]%10+0x30);lcd_write_char(10,0,DS1302_Table[6]/10+0x30);lcd_write_char(11,0,DS1302_Table[6]%10+0x30);}喂食時間設(shè)定與系統(tǒng)開關(guān)。設(shè)定一個flag,在到達(dá)相應(yīng)的時間時開啟電機,并播報語音,在手動按鍵按下時也會開啟電機。當(dāng)小時、分鐘、秒鐘都到達(dá)設(shè)定的值時,運行到下一步,代碼如下:if((hour==set_shi&&min==set_fen&&sec==set_miao)||(hour==set_shi2&&min==set_fen2&&sec==set_miao2)||(hour==set_shi3&&min==set_fen3&&sec==set_miao3))//喂食時間到,3個喂食時間{ openFlag=1;//開啟電機標(biāo)志 Line_1A(0);//引用語音播報函數(shù)}喂食系統(tǒng)開啟有兩種模式:第一種,手動按鍵按下則按鍵置1,喂食被手動開啟;第二種,到達(dá)設(shè)定時間,喂食開啟。當(dāng)系統(tǒng)開始工作,openFlag置1,電機轉(zhuǎn)數(shù)開始增加。設(shè)定一個值,當(dāng)轉(zhuǎn)子旋轉(zhuǎn)超過這個值,則電機關(guān)閉。代碼如下:if(shoudong_kai==1){ count_ss++; if(count_ss<=200)MotorCW();//電機正轉(zhuǎn) else{ MotorStop();//轉(zhuǎn)到一定程度,關(guān)閉電機 count_ss=201;//用于關(guān)閉電機的延時 }}else{if(openFlag==1&&shoudong_guan==0)//喂食時間到,自動打開電機{ count_ss++; if(count_ss<=200)MotorCW();//正轉(zhuǎn)一段時間 if(count_ss>200&&count_ss<=300)MotorStop();//停止一段時間 if(count_ss>300&&count_ss<=500)//反轉(zhuǎn)一段時間 { MotorCCW();//反轉(zhuǎn) } if(count_ss>500)//關(guān)閉電機 { MotorStop(); count_ss=0; openFlag=0; }}}手動關(guān)按鍵按下,系統(tǒng)關(guān)閉,各相關(guān)標(biāo)志置0,代碼如下:if(shoudong_guan)//手動關(guān)閉喂食{ if(count_ss>0) { count_ss--; MotorCCW();//電機反轉(zhuǎn) } else { MotorStop();//關(guān)閉電機 //相關(guān)標(biāo)志清零 shoudong_guan=0; shoudong_kai=0; openFlag=0; }} 喂食時間顯示:voidDisplay_alarm_clock()//顯示喂食時間{ if(setn==7||setn==8||setn==9) { lcd_write_com(0x80+0x40+4); lcd_write_data(set_shi2/10+0x30); lcd_write_data(set_shi2%10+0x30); lcd_write_data(':'); lcd_write_data(set_fen2/10+0x30); lcd_write_data(set_fen2%10+0x30); lcd_write_data(':'); lcd_write_data(set_miao2/10+0x30); lcd_write_data(set_miao2%10+0x30); lcd_write_data(''); } elseif(setn==10||setn==11||setn==12) { lcd_write_com(0x80+0x40+4); lcd_write_data(set_shi3/10+0x30); lcd_write_data(set_shi3%10+0x30); lcd_write_data(':'); lcd_write_data(set_fen3/10+0x30); lcd_write_data(set_fen3%10+0x30); lcd_write_data(':'); lcd_write_data(set_miao3/10+0x30); lcd_write_data(set_miao3%10+0x30); lcd_write_data(''); }}按鍵設(shè)置。本次設(shè)計按鍵電路功能不多,分別是設(shè)置早中晚投食時間段和手動按鍵開關(guān)。按鍵的工作原理就是對低電平信號的檢測,在主程序中,循環(huán)執(zhí)行檢測,一旦檢測到按鍵低電平信號,單片機產(chǎn)生信號中斷,進入按鍵子程序中。5個按鍵分別表示選擇、加、減、手動開、手動關(guān),注意進行延時操作,防止誤差。圖5-2按鍵設(shè)置模塊程序流程圖顯示設(shè)置值:lcd_write_char(8,1,set_shi/10+0x30);lcd_write_char(9,1,set_shi%10+0x30);lcd_write_char(11,1,set_fen/10+0x30);lcd_write_char(12,1,set_fen%10+0x30);lcd_write_char(14,1,set_miao/10+0x30);lcd_write_char(15,1,set_miao%10+0x30);設(shè)置時相應(yīng)的位置光標(biāo)閃爍,采用如下形式:if(setn==1){lcd_write_com(0x80+5);lcd_write_com(0x0f);}K2加鍵按下與K3減鍵按下采用相同的代碼編寫方式,其中,小時的設(shè)置計數(shù)到24,分鐘和秒計數(shù)到60,采用相同方式對時間進行設(shè)定,并使用Write_DS1302Init函數(shù)將設(shè)定的時間寫入DS1302。下列代碼以K2對小時的設(shè)置為例:if(k2==0){delay1ms(20);//延時消抖if(k2==0) { while(k2==0);//等待按鍵松開 if(setn==1)//設(shè)置小時 { DS1302_Table[4]++; if(DS1302_Table[4]==24)//加到24,賦值為0再加 DS1302_Table[4]=0;//先將小時置0Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],DS1302_Table[6]);lcd_write_char(4,0,DS1302_Table[4]/10+0x30);//顯示十位lcd_write_char(5,0,DS1302_Table[4]%10+0x30);//顯示個位lcd_write_com(0x80+5);lcd_write_com(0x0f);//光標(biāo)閃爍}}}手動開關(guān)喂食系統(tǒng): if(k4==0)//手動開{ delay1ms(20); if(k4==0) { while(k4==0); if(shoudong_kai==0) { shoudong_kai=1; count_ss=0; Line_1A(0);//語音播報 } }}if(k5==0)//手動關(guān){ delay1ms(20); if(k5==0) { while(k5==0); if(shoudong_kai==1)//只有開了,才能手動關(guān) { shoudong_guan=1; shoudong_kai=0; } } }}5.3.2LCD1602顯示模塊程序設(shè)計本設(shè)計需要使用LCD1602顯示模塊對喂食時間、當(dāng)前時間進行顯示,實現(xiàn)時間修改的方便操作以及喂食情況的直觀顯示。圖5-3LCD顯示模塊程序流程圖voidlcd_clear(void)//清屏{lcd_write_com(0x01); delay_ms(5);}根據(jù)芯片手冊以及指導(dǎo)示例,對LCD進行寫指令和寫數(shù)據(jù)的操作差別僅在與RS引腳的使用。當(dāng)RS置0時,可向LCD寫入指令;當(dāng)RS置1時,可向LCD中寫入數(shù)據(jù)。下面以寫指令代碼為例:voidlcd_write_com(unsignedcharbyte)//寫指令{ RS=0;//命令 RW=0;//寫 E=1; DataPort=byte;//指令碼裝載 _nop_();//延時 _nop_(); delay_ms(1); E=0;}voidlcd_init()//初始化{ delay_ms(5); lcd_write_com(0x38); delay_ms(5); lcd_write_com(0x38); delay_ms(5); lcd_write_com(0x38); delay_ms(5); lcd_write_com(0x08);//關(guān)閉顯示 delay_ms(5); lcd_write_com(0x01);//清屏指令 delay_ms(5); lcd_write_com(0x06); delay_ms(5); lcd_write_com(0x0c); delay_ms(5);}voidlcd_write_char(unsignedcharx,unsignedchary,unsignedcharbyte){ if(0==y) { lcd_write_com(0x80+x);//第一行 } elseif(1==y) { lcd_write_com(0x80+0x40+x);//第二行 } lcd_write_data(byte);//顯示數(shù)據(jù)}voidlcd_write_str(unsignedcharx,unsignedchary,unsignedchar*s)//在某一位置顯示一字符串{ if(0==y) { lcd_write_com(0x80+x);//第一行 } else { lcd_write_com(0x80+0x40+x);//第二行 } while(*s)//判斷有沒有檢測到結(jié)尾符\0 { lcd_write_data(*s);//顯示字符 s++;//指針加1 }}5.3.3WT588D語音播報模塊程序設(shè)計本設(shè)計的語音播報模塊中運用到的WT588D語音芯片使用較為方便,在程序設(shè)計中關(guān)鍵點在于延時的設(shè)計。voidwt588d_delayms(uintxms) {uinti,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);} voiddelay100us(uintx00us){uchari;ucharj;for(i=x00us;i>0;i--)for(j=50;j>0;j--);}voidLine_1A(unsignedchardat)//播報地址內(nèi)容{ unsignedchari; P_DATA=0;wt588d_delayms(5); for(i=0;i<8;i++) { P_DATA=1; if(dat&0X01) { delay100us(6); P_DATA=0; delay100us(2); } else { delay100us(2); P_DATA=0; delay100us(6); } dat>>=1; } P_DATA=1; }6制作與調(diào)試本次設(shè)計涉及步進電機、LCD1602顯示屏、DS1302時鐘芯片、WT588D語音芯片等外部設(shè)備及芯片,電路中還包括電阻電容、晶振、按鍵等實現(xiàn)該設(shè)計功能所必需的硬件,所用元器件相對較多,焊接有一定的難度。6.1硬件電路的布線與焊接6.1.1總體特點該設(shè)計所涉及的各部分硬件電路,總體的特點是:(1)電路原理簡單,器件較為常用,但是器件較多,電路構(gòu)成有一定的復(fù)雜度,焊接時應(yīng)更加仔細(xì)謹(jǐn)慎,注意焊接順序。(2)本設(shè)計各個模塊相對獨立,但是需要通過一些接口將功能進行串聯(lián),需要注意每個功能模塊之間連接點的引腳。6.1.2焊接焊接前必須提前準(zhǔn)備好焊槍、焊錫絲、鑷子、剪刀等焊接用具,并核對好所用到的各個元器件。另一方面在進行正式焊接工作前,確保電路原理圖的熟悉度、了解電容電阻的大小、極性以及芯片的引腳、方向。在焊接過程中注意結(jié)合電路原理圖,耐心、仔細(xì)焊接。焊接應(yīng)當(dāng)遵循如下原則:首先,將每個芯片的電源線和地線焊接在一起確保電壓無誤;其次,對同一類芯片按順序焊接,防止錯漏。(3)再次,對其他硬件依照從低到高焊接,優(yōu)先焊接電阻、電容這類更加貼近板面的元器件。(4)最后,注意焊接工程中的檢查,完成一個模塊或者一類器件的焊接就進行一次檢查,以便對錯誤進行及時糾正。圖6-SEQ圖\*ARABIC\s31焊接實物圖6.2調(diào)試本設(shè)計原理較為簡單,綜合考慮喂食器的功能,調(diào)試的重點在于按鍵控制模塊、語音模塊和LCD顯示模塊。(1)按鍵控制功能調(diào)試。本論文的功能要求中,按鍵占了很大一部分,需要通過按鍵實現(xiàn)對芯片讀取的時間的調(diào)整和喂食時間的設(shè)定,每個按鍵使用獨立的函數(shù)來進行功能程序的編寫。在設(shè)計過程中,出現(xiàn)了時間無法正常加減調(diào)整的問題,各個功能按鍵在系統(tǒng)中的作用很模糊,后經(jīng)檢查調(diào)整發(fā)現(xiàn)是按鍵與單片機接口連接錯誤,負(fù)責(zé)加減的K2、K3程序編寫中的循環(huán)出現(xiàn)了錯漏。經(jīng)過查驗補充,最后每個按鍵都能夠較好的實現(xiàn)規(guī)定的功能要求。(2)語音模塊調(diào)試。語音模塊主要功能是通過發(fā)出提前錄制好的聲音信號來吸引寵物進食,也是本設(shè)計中一個不可或缺的亮點。由于是第一次使用WT588D語音芯片,對芯片的各項參數(shù)和使用不是很熟悉,在最后調(diào)試過程中出現(xiàn)了無法發(fā)聲的情況。排除芯片本身以及程序編寫上的問題后,我使用外用表對接點進行了測試,發(fā)現(xiàn)存在電路短路的問題。在重新焊接后,解決了這個問題。LCD顯示模塊調(diào)試。本設(shè)計中的LCD主要用于時間的顯示,在第一次調(diào)試是出現(xiàn)了時間顯示不全的問題,經(jīng)過檢查后發(fā)現(xiàn)是焊接過程中存在虛焊,導(dǎo)致LCD顯示出現(xiàn)問題,在調(diào)整每個接點后,時間就可以正常顯示了。第二個問題是當(dāng)前時間無法正常顯示,顯示器上的時分秒顯示很錯亂,返回程序檢查后發(fā)現(xiàn),是程序的編寫過程中賦值的代表字母存在錯誤,經(jīng)過修改后就可以正常顯示當(dāng)前時間了。7總結(jié)本設(shè)計基本達(dá)成了任務(wù)書的要求,實現(xiàn)了在三個設(shè)定時間定時給寵物喂食以及語音播報吸引寵物進食的功能。結(jié)合了LCD1602顯示屏、步進電機、WT588D語音模塊等功能外設(shè),能夠比較好的實現(xiàn)功能。本次設(shè)計實現(xiàn)功能如下:(1)上電后,顯示屏亮起,可顯示當(dāng)前的時間,并實現(xiàn)掉電行走。(2)按下K1按鍵可對時間的時分秒進行選擇,實現(xiàn)當(dāng)前時間的修改調(diào)整以及三個喂食時間的設(shè)定。三個喂食時間分別在三個頁面上顯示。(3)當(dāng)?shù)竭_(dá)設(shè)定的喂食時間或者K4按下時,系統(tǒng)開始工作,語音模塊發(fā)出提前錄制好的語音信息,電機開始正轉(zhuǎn)模擬喂食。(4)K5按下時,喂食終止,電機反轉(zhuǎn)模擬喂食停止,語音模塊也同時停止工作。在本次設(shè)計中,我對MSC-51單片機的內(nèi)部資源、庫函數(shù)的使用都有了更加深入的了解和認(rèn)識,彌補了我的一些知識漏洞和缺陷。在設(shè)計過程中大量C語言的運用極大地提高了我編程的能力,對于代碼語言規(guī)范也有了更深的理解,豐富完善了我在專業(yè)方面的學(xué)習(xí),對于如何實現(xiàn)單片機與外部設(shè)備之間的連接通訊也有了一些自己的理解,這也很大程度上為我之后的就業(yè)提供了助益。另一方面,論文不同于以往課程設(shè)計的小組合作,整個系統(tǒng)設(shè)計都由自己獨立完成,因此大大提升了自己的思考自學(xué)的能力以及資料查閱檢索的能力。但是由于在大學(xué)前三年競賽、工程設(shè)計方面的欠缺,又受限于時間、水平的匱乏,我在藍(lán)牙遠(yuǎn)程控制、各類傳感器的運用以及更復(fù)雜的程序設(shè)計方面仍有很大的缺陷和不足,有改進的空間。本次論文也由于種種不足,仍然是一個比較簡易的系統(tǒng),未能實現(xiàn)藍(lán)牙遠(yuǎn)程修改時間限定、根據(jù)實際情況調(diào)整喂食量等等更加高級的功能。在設(shè)計過程中,我發(fā)現(xiàn)課本、資料上的理論與實際相結(jié)合是很困難的一件事情,需要長時間的練習(xí)和嘗試。在具體的實踐操作中,也會遇到許多書本上沒有提到過的困難和問題,需要考慮很多的客觀因素、實際情況。在這過程中也暴露了我學(xué)習(xí)的扎實程度不夠、實踐動手能力欠缺等等問
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版供電設(shè)備檢修維護合同范本
- 2025版互聯(lián)網(wǎng)企業(yè)數(shù)據(jù)安全責(zé)任勞動合同
- 二零二五年電工電氣設(shè)備維護保養(yǎng)服務(wù)合同
- 2025版電子產(chǎn)品線下零售代理銷售合同范本
- 2025版金融機構(gòu)信貸資產(chǎn)證券化合同模板
- 二零二五年度火鍋店裝修與裝修材料質(zhì)量保證合同
- 二零二五版人工智能芯片研發(fā)股權(quán)投資合同
- 2025版網(wǎng)絡(luò)設(shè)備銷售與集成合同
- 2025版汽車抵押貸款中介服務(wù)合同模板
- 二零二五年度中小學(xué)教室使用租賃合同范本
- GB 5577-1985合成橡膠牌號規(guī)定
- FZ/T 01034-2008紡織品機織物拉伸彈性試驗方法
- 《百團大戰(zhàn)》歷史課件
- 高血壓的健康宣教課件
- 水溶肥分析課件
- 人保財險新人培訓(xùn)4商業(yè)非車險與財產(chǎn)保險簡介課件講義
- 馬克思主義基本原理課件- (全套完整課件)全版
- 骨科三基考試復(fù)習(xí)題常見考題及答案(骨科)
- 【優(yōu)秀】腦膜瘤護理查房課件
- GB∕T 3480.3-2021 直齒輪和斜齒輪承載能力計算 第3部分:輪齒彎曲強度計算
- 社區(qū)居民信息登記卡
評論
0/150
提交評論