基于單片機的寵物喂食器電路設(shè)計畢業(yè)設(shè)計_第1頁
基于單片機的寵物喂食器電路設(shè)計畢業(yè)設(shè)計_第2頁
基于單片機的寵物喂食器電路設(shè)計畢業(yè)設(shè)計_第3頁
基于單片機的寵物喂食器電路設(shè)計畢業(yè)設(shè)計_第4頁
基于單片機的寵物喂食器電路設(shè)計畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于單片機的寵物喂食器電路設(shè)計i摘要摘要本設(shè)計所研究的是實現(xiàn)一個寵物自動喂食器,即先將寵物飼料放入其中,通過設(shè)定五個喂食時間點,當(dāng)?shù)竭_(dá)這一時間點后,系統(tǒng)發(fā)出喂食信號吸引寵物,自動進(jìn)行喂食。本設(shè)計主要研究如何設(shè)定五個時間點并發(fā)出喂食信號。寵物喂食器系統(tǒng)主要包括單片機控制、自動開關(guān)和蜂鳴器提示、倒計時間設(shè)定系統(tǒng)。喂食器的喂食過程,通過鍵盤設(shè)定五個倒計時間,當(dāng)依次到達(dá)這五個時間時,發(fā)光二極管發(fā)光,蜂鳴器發(fā)出響聲,吸引寵物過來進(jìn)食并自動投放食物。本設(shè)計解決了工作時或節(jié)假日時由于主人不在不能對寵物進(jìn)行喂食,避免了寵物由于飲食不正常所產(chǎn)生的問題。在整個系統(tǒng)中,利用單片機對各個系統(tǒng)進(jìn)行控制。 倒計時系統(tǒng)時間

2、通過六位七段數(shù)碼管顯示出來。利用鍵盤設(shè)定五個倒計時間,單片機不停的讀取時間,并判斷是否到達(dá)喂食時間。開關(guān)系統(tǒng)電阻和發(fā)光二極管表示 ,發(fā)光二級管收到低電平時導(dǎo)通表示開關(guān)打開投放喂食。同時接有蜂鳴器,當(dāng)?shù)竭_(dá)喂食時間后蜂鳴器發(fā)出響聲吸引寵物進(jìn)行喂食。關(guān)鍵詞:智能;定時喂養(yǎng);單片機 at89s52;基于單片機的寵物喂食器電路設(shè)計iiabstractthe study design is to achieve an automatic pet feeder, pet feed into which will set the five fed point, when you reach this poin

3、t in time, automatically feeding. the main point of how to set the time within the pet food put out. pet feeder system includes mcu control, automatic switch and music alert system, the remaining time setting system. feeder feeding process, the five remaining time set by the keyboard, when the order

4、 reaches the five time, while the timer chip to send a signal relay and music, music playback chip, a piece of music attracted the pet, the relay switch is closed so that a red light emitting diode, said switch delivery of food. this design solves the holidays when work or not is not the owner of th

5、e pet to feed, to avoid the pet food is not normal because the problems arising. throughout the system, the use of single chip control system of each. countdown to the system time by six out of seven segment digital display. using the keyboard to set the five remaining time, microcontroller reads th

6、e stop time and to determine whether the feeding time arrives. switching system by the relay and the light-emitting diode, said switch is closed when the relay received high light-emitting diode, said switch is running feeding. tip has a music system, when the arrival time after feeding a piece of m

7、usic tips music playback chip to feed pets.key words: intelligent; automatic feeding; mcu基于單片機的寵物喂食器電路設(shè)計目 錄中文摘要英文摘要1 緒論.111 設(shè)計意義.112 設(shè)計要求.12 設(shè)計方案.221 按鍵模塊.222 自動開關(guān)模塊.223 蜂鳴器模塊.224 顯示模塊.33 硬件電路的設(shè)計.331 單片機.3311 at89s52 單片機的簡介 .3312 at89s52 的時鐘介紹 .5313 單片機中斷的介紹 .732 電源電路.833 時鐘電路.83. 4 復(fù)位電路 .935 led 數(shù)碼

8、管顯示 .10351 數(shù)碼管顯示簡介.10352 數(shù)碼管編碼表 .1136 開關(guān)控制.1137 單片機的去抖動.124 電路的軟件部分.13參考文獻(xiàn).46附錄 1 .47附錄 2 .48附錄 3 .49致謝.50基于單片機的寵物喂食器電路設(shè)計11 緒論11 設(shè)計意義單片機自 20 世紀(jì) 70 年代問世以來,以其極高的性能價格比受到人們的重視和關(guān)注,應(yīng)用廣泛,發(fā)展快速。單片機具有體積小、速度快、抗干擾能力強,環(huán)境要求不高,性能可靠和價格低廉等優(yōu)點,通常在其外部配置外圍電路就可構(gòu)成一完整的控制系統(tǒng)。由于具有以上優(yōu)點,在我國,單片機已廣泛應(yīng)用與工業(yè)自動化控制、自動檢測、智能儀器儀表、家電電器、電力電

9、子、武器裝備、機電一體化設(shè)備等各個方面。單片機,亦稱單片微電腦或單片微型計算機。它是把中央處理器(cpu)、隨機存取存儲器(ram)、只讀存儲器(rom)、輸入/輸出端口(i/0)等主要計算機功能部件都集成在一塊集成電路芯片上的微型計算機。 現(xiàn)在越來越多的家庭都飼養(yǎng)有貓、狗等寵物,但是由于工作等原因,寵物的飲食規(guī)律得不到一定的保障,寵物喂食器可以解決這一問題,寵物自動喂食器可以定時定量的進(jìn)食,且設(shè)計簡單方便,有一定的實用價值。12 設(shè)計要求 利用單片機的定時功能設(shè)計一個寵物自動喂食盒的電路,要求:可以通過鍵盤輸入至少 3 個倒計時時間,每一個倒計時時間到后,發(fā)出寵物開始喂食信號;擴展功能: 按

10、照 年/月/日/時/分 的格式輸入寵物進(jìn)食時間;基于單片機的寵物喂食器電路設(shè)計22 設(shè)計方案分析本題,根據(jù)設(shè)計要求先確定了本系統(tǒng)的整體設(shè)計原理框圖如圖 1:按鍵模塊單片機自動開關(guān)模塊蜂鳴器顯示模塊圖 1 系統(tǒng)整體設(shè)計原理框圖21 按鍵模塊采用 7 個觸鍵開關(guān), 可實現(xiàn)五個倒計時間依次鍵入,同時還有兩個調(diào)時按鍵,再一個復(fù)位按鍵。22 自動開關(guān)模塊采用三極管和發(fā)光二極管近似表示。 本系統(tǒng)是基于 52 單片機的寵物自動喂食的設(shè)計,用電阻和發(fā)光二極管代替比較容易,當(dāng)發(fā)光二級管接收到一個低電平時開關(guān)閉合,發(fā)光二極管導(dǎo)通發(fā)出綠光表示自動投食。23 蜂鳴器模塊采用一個三極管和一個蜂鳴器,由蜂鳴器發(fā)出響聲吸引

11、寵物過來進(jìn)食。當(dāng)發(fā)光二極管亮燈時,蜂鳴器接收到一個低電平,蜂鳴器器發(fā)出響聲吸引寵物過來進(jìn)食。24 顯示模塊選用數(shù)碼管顯示,用普通的數(shù)碼管顯示簡單的數(shù)字、符號、字母。只需一次顯示5 個倒計時間,而且每個時間只需顯示 6 個數(shù)字,即年/月/日?;趩纹瑱C的寵物喂食器電路設(shè)計33 硬件電路的設(shè)計31 單片機311 at89s52 單片機的簡介at89s52 是一種低功耗、高性能 cmos8 位微控制器,具有 8k 在系統(tǒng)可編程flash 存儲器。使用 atmel 公司高密度非易失性存儲器技術(shù)制造,與工 80c51 產(chǎn)品指令和引腳完全兼容。片上 flash 允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器

12、。at89s52 具有以下標(biāo)準(zhǔn)功能: 8k 字節(jié) flash,256 字節(jié) ram,32 位 i/o 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個 16 位定時器/計數(shù)器,一個 6 向量 2 級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,at89s52 可降至 0hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許 ram、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,ram 內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。 3111 主要性能與 mcs-51 單片機產(chǎn)品兼容8k 字節(jié)在系統(tǒng)可編程 flash 存儲器1000

13、 次擦寫周期全靜態(tài)操作:0hz33hz三級加密程序存儲器32 個可編程 i/o 口線三個 16 位定時器/計數(shù)器八個中斷源全雙工 uart 串行通道低功耗空閑和掉電模式掉電后中斷可喚醒看門狗定時器雙數(shù)據(jù)指針掉電標(biāo)識符基于單片機的寵物喂食器電路設(shè)計43112at89s52 雙列直插式引腳圖vccp0.5/ad5p0.0/ad0p0.1/ad1p0.2/ad2p0.4/ad4p0.3/ad3p0.6/ad6p0.7/ad7p2.0/a8p2.2/a10p2.1/a9p2.7/a15p2.6/a14p2.5/a13p2.4/a12p2.3/a11psenale/progea/vppt2/p1.0t2

14、ex/p1.1p1.2p1.3p1.4mosi/p1.5miso/p1.6sck/p1.7rxd/p3.0txd/p3.1t0/p3.4t1/p3.5xtal2xtal1gndrst12345678910111213141515171819204039383736353433323130292827262524232221at89s52/p3.7rd/p3.6wr/p3.2int0/p3.3int1圖 2.1 at89s52 雙列直插式引腳圖3113 端口介紹p0 口:p0 口是一個 8 位漏極開路的雙向 i/o 口。作為輸出口,每位能驅(qū)動 8 個ttl 邏輯電平。對 p0 端口寫“1”時,引

15、腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,p0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,p0 具有內(nèi)部上拉電阻。在 flash 編程時,p0 口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。p1 口:p1 口是一個具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p1 輸出緩沖器能驅(qū)動4 個 ttl 邏輯電平。對 p1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil) 。此外,p1.0 和 p1.2 分別作定時器/計數(shù)器 2 的外部計數(shù)輸入(p1.0/t2)和時器/

16、計數(shù)器 2 的觸發(fā)輸入(p1.1/t2ex) 。在 flash 編程和校驗時,p1 口接收低 8 位地址字節(jié)?;趩纹瑱C的寵物喂食器電路設(shè)計5p2 口:p2 口是一個具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 輸出緩沖器能驅(qū)動4 個 ttl 邏輯電平。對 p2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil) 。在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 movx dptr)時,p2 口送出高八位地址。在這種應(yīng)用中,p2 口使用很強的內(nèi)部上拉發(fā)送1。在使用 8 位地址(如 mo

17、vx ri)訪問外部數(shù)據(jù)存儲器時,p2 口輸出 p2 鎖存器的內(nèi)容。在 flash 編程和校驗時,p2 口也接收高 8 位地址字節(jié)和一些控制信號。 p3 口:p3 口是一個具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 輸出緩沖器能驅(qū)動4 個 ttl 邏輯電平。對 p3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil) 。p3 口亦作為 at89s52 特殊功能(第二功能)使用。在 flash 編程和校驗時,p3 口也接收一些控制信號。312 at89s52 的時鐘介紹單片機的工作過程是:取一條指令、譯碼

18、、進(jìn)行操作,再取一條指令、譯碼、進(jìn)行微操作,這樣自動的一步一步的由微操作依序完成相應(yīng)指令規(guī)定的功能。各指令的微操作在時間上由嚴(yán)格的次序,各種微操作的時間次序稱作為時序。3121 at89s52 的時鐘信號產(chǎn)生方式at89s52 單片機的時鐘信號通常有兩種產(chǎn)生方式:一是內(nèi)部時鐘方式,二是外部時鐘方式。內(nèi)部時鐘方式如圖 2.2 所示。在 at89s52 單片機內(nèi)部有一振蕩電路,只要在單片機的 xtal1 和 xtal2 引腳外接石英晶體,就構(gòu)成了自激振蕩器并在單片機內(nèi)部產(chǎn)生時鐘信號。圖中電容器 c1、c2 的作用是穩(wěn)定頻率,快速起振,電容值在 530pf;晶振 cys 的振蕩器頻率為 1.212m

19、hz?;趩纹瑱C的寵物喂食器電路設(shè)計6圖 2.2 內(nèi)部時鐘方式外部時鐘方式是把已有時鐘信號引入到單片機內(nèi),如圖 2.3 所示。此方式多用于多片 at89s52 單片機同時工作。以便于各單片機同步。一般要求外部信號高電平的持續(xù)時間大于 20ns,且為頻率低于 12mhz 的方波。對于采用 chmos 工藝的單片機,外部時鐘主要由 xtal1 端引入,而 xtal2 端引腳應(yīng)懸空。圖 2.3 外部時鐘方式3122 at89s52 的時鐘信號晶振周期為最小的時序單元。晶振信號經(jīng)分頻器形成兩相錯開的時鐘信號 p1 和p2.時鐘信號的周期也稱為 s 狀態(tài),它是晶振周期的兩倍。即一個時鐘周期包含兩個晶振周

20、期。在每個時鐘周期的前半周期,相位 1 有效,在每個時鐘周期的后半周期,相位 2 有效。每個時鐘周期有兩個節(jié)拍 p1 和 p2,cpu 以兩相時鐘 p1 和 p2 為基本節(jié)拍指揮各個部件協(xié)調(diào)工作。晶振信號 12 分頻后形成機器周期。一個晶振周期包含 12 個晶振周期或 6 個時鐘周期。因此每個機器周期的 12 個晶振脈沖可以表示為 s1p1 s2p2s6p6。晶振周期和機器周期是單片機內(nèi)計算其他時間值的基本時序單位。如晶振頻率為 12hz,則機器周期為 1us,指令周期為 1-4us。313 單片機中斷的介紹在設(shè)計中用到了外部中斷int0/int1和定時器t0。它們的中斷請求標(biāo)志分別為ie0,

21、ie1和tf0。這些中斷請求標(biāo)志位分別由特殊功能寄存器tcon和tmod的相應(yīng)位鎖存。在這個設(shè)計中,中斷允許寄存器是首要介紹的。3131 中斷允許寄存器 ie 控制 cpu 對中斷源的開放或屏蔽。中斷的開放和屏蔽實現(xiàn)2級控制,一個總開關(guān)中斷控制所有的中斷。ie的格式如下:基于單片機的寵物喂食器電路設(shè)計7ieeaeset1ex1et0ex0位地址afhachabhaaha9ha8h 當(dāng) ea=0 時,所有的中斷請求被屏蔽,cpu 不接受任何請求。當(dāng)ea=1時,cpu開中斷,此時只要五個中斷源的中斷請求允許為1,則開中斷。3132 tmod-工作方式控制寄存器用于選擇定時器/計數(shù)器的工作模式,字節(jié)

22、地址為89h,8位分2組,高4位控制t1,低4位控制t0,其格式如下: d7d6d5d4d3d2d1d0tmodgatec/tm1m0gatec/tm1m0下面對工作方式選擇位做說明:m1 m0-工作方式選擇位,m1 m0共有4種編碼,分別對應(yīng)4種工作方式。如表1:表1 工作方式選擇m1 m0工作方式0 0方式0,為13位定時器/計數(shù)器0 1方式1,為16位定時器/計數(shù)器1 0方式2,8位的常數(shù)自動重新裝載的定時器/計數(shù)器1 1方式3,僅適應(yīng)于t0,t0分為兩個8位的計數(shù)器,停止計數(shù)中斷的觸發(fā)方式:電平觸發(fā)方式和下降沿觸發(fā)方式。32 電源電路基于單片機的寵物喂食器電路設(shè)計8單片機電源(220v

23、 轉(zhuǎn) 5v)設(shè)計電源電路采用 lm7805 集成穩(wěn)壓器作為穩(wěn)壓器件,用典型接法,220v 電源整流濾波后送入 lm7805 穩(wěn)壓,在輸出端接一個 470u 和 0.1u 電容進(jìn)一步濾除紋波,得到 5v 穩(wěn)壓電源。電路如圖 2.4 所示220v9v體 tf1體體體vin+5vgnd7805d14007d44007d34007d24007c3220uf/25vc21000uf/25vgnd+_vcc圖 2.4 電源電路圖33 時鐘電路單片機工作的時間基準(zhǔn),決定單片機工作速度。時鐘電路就是振蕩電路,向單片機提供一個正弦波信號作為基準(zhǔn),決定單片機的執(zhí)行速度。at89s51 單片機時鐘頻率范圍:0 33

24、mhz,本電路選擇 11.0592mhz。電路如圖 2.5 所示?;趩纹瑱C的寵物喂食器電路設(shè)計9x1體 體 體 體c5體 體c4體 體gnd圖 2.5 時鐘電路圖34 復(fù)位電路 單片機在啟動時都需要復(fù)位,以使cpu 及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。 89 系列單片機的復(fù)位信號是從 rst 引腳輸入到 芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時,且 振蕩器穩(wěn)定后,如果 rst 引腳上有一個高電平并維持 2 個機器周期 (24 個振蕩周期 )以上,則 cpu 就可以響應(yīng)并將系統(tǒng)復(fù)位。 單片機系統(tǒng)的復(fù)位方式有:手動按鈕復(fù)位 和上電復(fù)位,這里選用手動按鈕復(fù)位。手動按鈕復(fù)位需

25、要人為在復(fù)位輸入端rst 上加入高電平。一般采用的辦法是在 rst 端和正電源 vcc 之間接一個按鈕。當(dāng)人為按下按鈕時,則vcc 的+5v 電平就會直接加到 rst 端。由于人的動作再快也會使按鈕保持接通達(dá)數(shù)十毫秒,所以,完全能夠滿足復(fù)位的時間要求。復(fù)位電路工作原理如圖所示,vcc 上電時,c 充電,在 10k 電阻上出現(xiàn)電壓,使得單片機復(fù)位;幾個毫秒后,c 充滿,10k 電阻上電流降為 0,電壓也為 0,使得單片機進(jìn)入工作狀態(tài)。工作期間,按下 s,c 放電。s 松手,c 又充電,在 10k 電阻上出現(xiàn)電壓,使得單片機復(fù)位。幾個毫秒后,單片機進(jìn)入工作狀態(tài)?;趩纹瑱C的寵物喂食器電路設(shè)計10c

26、1體 體 體 體sw2體 體 體 體 體r1體 體r2體 體vccgndrst圖 2.6 復(fù)位電路圖35 led數(shù)碼管顯示351 數(shù)碼管顯示簡介數(shù)碼管 led 串口顯示模塊通常有兩種顯示方法:動態(tài)顯示和靜態(tài)顯示。動態(tài)顯示:連接方法是將每個二極管的同名端連在一起,而每個顯示器的 公共極 com 各自獨立的接受 i/o 線控制,cpu 向字段輸出端口輸出字型碼,所有顯示器接受到相同的字符,而要使用哪個顯示器要取決于他們的 com 的電平,而這段是由 i/o端控制的,由單片機輸出。動態(tài)掃描時連續(xù)的動態(tài)掃描,只是肉眼暫留現(xiàn)象,乃發(fā)光二極管的余輝效應(yīng),給人的感覺是一組穩(wěn)定的顯示數(shù)據(jù)。靜態(tài)顯示: 靜態(tài)顯示

27、顯示效果好,但是功耗大,但不占用端口,只需兩個串口線輸出,變成較為簡單。而且采用靜態(tài)顯示需要的驅(qū)動器件多,硬件成本相對更高。 比較以上兩種方案,方案一硬件簡單程序復(fù)雜,方案二硬件復(fù)雜程序簡單,考慮到實惠和對自己的編程鍛煉,選擇方案動態(tài)顯示。動態(tài)掃描方法是用其接口電路把所有顯示器的8個筆畫字段(ag 和 dp)同名端連在一起,而每個顯示器的公共極 com 各自獨立的接受 i/o 線控制。cpu 向字段輸出端口輸出字型碼時,所有顯示器接受到相同的字型碼,但究竟使用哪個顯示,則取決于公共極 com 端,而這一端是由/wr 和/rd 控制的,由單片機決定何時顯示哪一位。動態(tài)掃描用分時的方法去輪流控制各

28、個顯示的 com 端,時各個顯示器輪流亮。在輪流點亮掃描過程中,每為顯示器的點亮?xí)r間極為短暫,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的于輝效應(yīng),給人的印象就時一組穩(wěn)定的顯示數(shù)據(jù)。顯示部分電路圖:基于單片機的寵物喂食器電路設(shè)計11圖2.7 數(shù)碼管顯示原理352 數(shù)碼管編碼表7段數(shù)碼管可以包括小數(shù)點的09的數(shù)字和部分的英文字母,為了獲得不同的字符,數(shù)碼管各段所加的電平也不同,編碼也不一樣。共陰極數(shù)碼管的字型,字段和編碼的關(guān)系如下表2:表2 數(shù)碼管編碼表十六進(jìn)制數(shù)h gf edcba顯示代碼00 x3f10 x0620 x5b30 x4f40 x6650 x6d60 x7d70 x0780 x7f90

29、x6f. .0 x8036 開關(guān)控制 本電路要實現(xiàn)可設(shè)定 5 個倒計時設(shè)計要求,需要 1 個復(fù)位鍵,一個“+”和一個基于單片機的寵物喂食器電路設(shè)計12“-”按鍵,另外再加 5 個時間設(shè)定按鍵用于實現(xiàn)倒計時間設(shè)定,按鍵時可直接輸出相應(yīng)倒計時間。37 單片機的去抖動 單片機去抖動可以用軟件和硬件兩種方法。硬件方法就是加去抖動電路,例如在按鍵兩端并聯(lián) 10uf 的電容或通過 rs 觸發(fā)器連接按鍵,硬件去抖動從根本上避免抖動;軟件方法則采用時間延時以躲過抖動,待信號穩(wěn)定之后再進(jìn)行鍵掃描。對于系統(tǒng)軟件量不大的場合,采用軟件去除抖動既節(jié)約硬件開銷又很實用且有效。所以本設(shè)計采用軟件去抖動。基于單片機的寵物喂

30、食器電路設(shè)計134 電路的軟件部分單片的使用除了硬件,同樣也要軟件的使用,我們寫匯編程序編程 cpu 可執(zhí)行的機器碼有兩種方法,一種是手工匯編,一種是機器匯編。機器匯編通過匯編軟件變?yōu)闄C器碼,用于 msc-51 單片機的匯編軟件有早期的 a51,隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從使用普通匯編語言到高級語言的不斷發(fā)展,keil 是目前最流行開發(fā) mcs-51系列單片機的軟件。keil c51 匯編,plm 語言和 c 語言的程序設(shè)計,界面友好。keil是美國 keilsoftware 公司出品的 52 系列兼容單片機 c 語言開發(fā)系統(tǒng)。用過匯編語言后再使用 c 語言來開發(fā),體會更加深刻。程序框圖:

31、基于單片機的寵物喂食器電路設(shè)計14y開始系統(tǒng)初始化1 號鍵按下?1 號盒倒計時時間設(shè)定開始倒計時5 號鍵按下?2 號鍵按下?3 號鍵按下?4 號鍵按下?2 號盒倒計時時間設(shè)定3 號盒倒計時時間設(shè)定4 號盒倒計時時間設(shè)定5 號盒倒計時時間設(shè)定倒計時完?yyyyy結(jié)束圖 2.8 程序框圖源程序如下:#include#include#define uchar unsigned char#define uint unsigned intsbit b1=p10;sbit b2=p11;sbit b3=p12;sbit b4=p13;基于單片機的寵物喂食器電路設(shè)計15sbit b5=p14;sbit be

32、ll=p26;sbit s1=p30;sbit s2=p31;sbit s3=p32;sbit s4=p33;sbit s5=p34;sbit add=p36;sbit dec=p37;char second1=1,minute1=1,hour1=1,second2=2,minute2=2,hour2=2,second3=3,minute3=3,hour3=3;char second4=4,minute4=4,hour4=4,second5=5,minute5=5,hour5=5;uchar g;unsigned char code table=/共陰極 0f 數(shù)碼管編碼0 x3f,0 x06

33、,0 x5b,0 x4f, /030 x66,0 x6d,0 x7d,0 x07, /470 x7f,0 x6f,0 x77,0 x7c, /8b0 x39,0 x5e,0 x79,0 x71 /cf;void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void delay1(uint z)for(;z0;z-);基于單片機的寵物喂食器電路設(shè)計16void display(uchar a,uchar b,uchar c)uchar i,j;i=a/10;j=a%10;p2=0 xfb;p0=tablei;delay(2);p

34、2=0 xf7;p0=tablej;delay(2);i=b/10;j=b%10;p2=0 xef;p0=tablei;delay(2);p2=0 xdf;p0=tablej;delay(2);i=c/10;j=c%10;p2=0 xfe;p0=tablei;delay(2);p2=0 xfd;p0=tablej;delay(2);基于單片機的寵物喂食器電路設(shè)計17void delay2(uint z)uint x,y; for(x=z;x0;x-) for(y=110;y0;y-) display(0,0,0);void init() ea=1; /開總中斷 et0=1; /本例中使用的是定

35、時器 t0,如果用 t1。則為et1=0,tmod=0 x10。 tmod=0 x01; /定時器工作方式 1 th0=(65535-50000)/256; /因為晶振用的是 11.0592mhz。在取初值時,大概定義為一個中斷為 50ms tl0=(65535-50000)%256; tr0=1; p1=0 xff;void turn_val1(char newval,uchar flag,uchar slnum) if(flag) /判斷是加一還是減一 newval+; switch(slnum) case 1:if(newval23) newval=0; display(hour1,mi

36、nute1,second1); hour1=newval;基于單片機的寵物喂食器電路設(shè)計18 break; case 2:if(newval59) newval=0; display(hour1,minute1,second1); minute1=newval; break; case 3:if(newval59) newval=0; display(hour1,minute1,second1); second1=newval; break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; dis

37、play(hour1,minute1,second1); hour1=newval; break; case 2:if(newval0) newval=59; display(hour1,minute1,second1); minute1=newval; break; case 3:if(newval23) newval=0; display(hour2,minute2,second2); hour2=newval; break; case 2:if(newval59) newval=0; display(hour2,minute2,second2); minute2=newval; brea

38、k; case 3:if(newval59) newval=0; display(hour2,minute2,second2); second2=newval; break; default:break; else基于單片機的寵物喂食器電路設(shè)計23 newval-; switch(slnum) case 1:if(newval0) newval=23; display(hour2,minute2,second2); hour2=newval; break; case 2:if(newval0) newval=59; display(hour2,minute2,second2); minute2

39、=newval; break; case 3:if(newval23) newval=0; display(hour3,minute3,second3); hour3=newval; break; case 2:if(newval59) newval=0; display(hour3,minute3,second3); minute3=newval; break; case 3:if(newval59) newval=0; display(hour3,minute3,second3); second3=newval; break; default:break; else newval-; sw

40、itch(slnum) case 1:if(newval0) newval=23; display(hour3,minute3,second3); hour3=newval; break; case 2:if(newval0) newval=59; display(hour3,minute3,second3); minute3=newval; break; case 3:if(newval23) newval=0; display(hour4,minute4,second4); hour4=newval; break; case 2:if(newval59) newval=0; display

41、(hour4,minute4,second4); minute4=newval; break; case 3:if(newval59) newval=0; display(hour4,minute4,second4); second4=newval;基于單片機的寵物喂食器電路設(shè)計32 break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; display(hour4,minute4,second4); hour4=newval; break; case 2:if(newval0) newva

42、l=59; display(hour4,minute4,second4); minute4=newval; break; case 3:if(newval23) newval=0; display(hour5,minute5,second5); hour5=newval; break; case 2:if(newval59) newval=0; display(hour5,minute5,second5); minute5=newval; break; case 3:if(newval59) newval=0; display(hour5,minute5,second5); second5=n

43、ewval; break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; display(hour5,minute5,second5); hour5=newval; break;基于單片機的寵物喂食器電路設(shè)計37 case 2:if(newval0) newval=59; display(hour5,minute5,second5); minute5=newval; break; case 3:if(newval0) newval=59; display(hour5,minute5,second

44、5); second5=newval; break; default:break; void key_scan5(void) uchar slnum=0; if(s5=0) delay(5); if(s5=0) while(!s5); display(hour5,minute5,second5); slnum+;tr0=0; while(1) display(hour5,minute5,second5); if(s5=0) 基于單片機的寵物喂食器電路設(shè)計38 delay(5); if(s5=0) while(!s5); slnum+; if(slnum=1) if(add=0) delay(3

45、); if(add=0) while(!add); turn_val5(hour5,1,1); if(dec=0) delay(3); if(dec=0) while(!dec); turn_val5(hour5,0,1); if(slnum=2) if(add=0)基于單片機的寵物喂食器電路設(shè)計39 delay(3); if(add=0) while(!add); turn_val5(minute5,1,2); if(dec=0) delay(3); if(dec=0) while(!dec); turn_val5(minute5,0,2); if(slnum=3) if(add=0) de

46、lay(3); if(add=0) while(!add); turn_val5(second5,1,3); if(dec=0) 基于單片機的寵物喂食器電路設(shè)計40 delay(3); if(dec=0) while(!dec); turn_val5(second5,0,3); /寫入日寄存器 if(slnum=4) slnum=0; break; void xian1() if(g=20) g=0;second1-; if(second10) second1=59; minute1-; if(minute10) minute1=59;基于單片機的寵物喂食器電路設(shè)計41 hour1-; if(

47、hour10) hour1=0; display(hour1,minute1,second1); if(second1=0&minute1=0&hour1=0)display(0,0,0);tr0=0;b1=0;bell=0;delay2(5);b1=1;bell=1; void xian2() tr0=1; if(g=20) g=0;second2-; if(second20) second2=59; minute2-; if(minute20) minute2=59; hour2-; if(hour20) hour2=0; if(second2=0&minute2=

48、0&hour2=0)display(0,0,0);tr0=0;b2=0;bell=0;delay2(5);b2=1;bell=1; 基于單片機的寵物喂食器電路設(shè)計42 display(hour2,minute2,second2);void xian3() tr0=1; if(g=20) g=0;second3-; if(second30) second3=59; minute3-; if(minute30) minute3=59; hour3-; if(hour30) hour3=0; if(second3=0&minute3=0&hour3=0)display(0,0

49、,0);tr0=0;b3=0;bell=0;delay2(5);b3=1;bell=1; display(hour3,minute3,second3);void xian4() tr0=1; if(g=20)基于單片機的寵物喂食器電路設(shè)計43 g=0;second4-; if(second40) second4=59; minute4-; if(minute40) minute4=59; hour4-; if(hour40) hour4=0; if(second4=0&minute4=0&hour4=0)display(0,0,0);tr0=0;b4=0;bell=0;dela

50、y2(5);b4=1;bell=1; display(hour4,minute4,second4);void xian5() tr0=1; if(g=20) g=0;second5-; if(second50) second5=59; minute5-;基于單片機的寵物喂食器電路設(shè)計44 if(minute50) minute5=59; hour5-; if(hour50) hour5=0; if(second5=0&minute5=0&hour5=0)display(0,0,0);tr0=0;b5=0;bell=0;delay2(5);b5=1;bell=1;while(1)

51、display(0,0,0); display(hour5,minute5,second5);void main() init();while(1) key_scan1(); key_scan2(); key_scan3(); key_scan4(); key_scan5(); tr0=1; if(!(second1=0&minute1=0&hour1=0) xian1(); if(second1=0&minute1=0&hour1=0) if(!(second2=0&minute2=0&hour2=0)基于單片機的寵物喂食器電路設(shè)計45 xia

52、n2(); if(second2=0&minute2=0&hour2=0) if(!(second3=0&minute3=0&hour3=0) xian3();if(second3=0&minute3=0&hour3=0)if(!(second4=0&minute4=0&hour4=0)xian4();if(second4=0&minute4=0&hour4=0)xian5();void time()interrupt 1 /如果用 t1 的話,應(yīng)為 interrupt 3 th0=(65535-50000)/25

53、6; /因為晶振用的是 11.0592mhz。在取初值時,大概定義為一個中斷為 50ms tl0=(65535-50000)%256; g+; 基于單片機的寵物喂食器電路設(shè)計46參考文獻(xiàn)(1)童詩白主編模擬電子技術(shù)基礎(chǔ) ,修訂 2 版,北京:高等教育出版社 1988(2)閻石主編數(shù)字電子技術(shù)基礎(chǔ) ,修訂 3 版,北京:高等教育出版社 1988(3)胡漢才主編, 單片機原理及其接口技術(shù) , (第二版)北京:清華大學(xué)出版社 2004(4)張毅剛主編, 單片機原理及應(yīng)用 ,北京:高等教育出版社(5)馬忠梅等編著, 單片機 c 語言應(yīng)用程序設(shè)計 , (第四版) 北京航空航天大學(xué)出版社 2007.1(6)何立民, mcs-51 單片機應(yīng)用系統(tǒng)設(shè)計 ,北京航空航天大學(xué)出版社,1998.7(7)徐愛軍,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論