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

下載本文檔

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

文檔簡介

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

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

3、tically 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 reaches the five

4、 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 the pet to feed, to

5、 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 the stop time and t

6、o 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 music tips music p

7、layback chip to feed pets. key words: intelligent; automatic feeding; mcu 目 錄 中文摘要 英文摘要 1 緒論.1 11 設(shè)計(jì)意義.1 12 設(shè)計(jì)要求.1 2 設(shè)計(jì)方案.2 21 按鍵模塊.2 22 自動(dòng)開關(guān)模塊.2 23 蜂鳴器模塊.2 24 顯示模塊.3 3 硬件電路的設(shè)計(jì).3 31 單片機(jī).3 311 at89s52 單片機(jī)的簡介 .3 312 at89s52 的時(shí)鐘介紹 .5 313 單片機(jī)中斷的介紹 .7 32 電源電路.8 33 時(shí)鐘電路.8 3. 4 復(fù)位電路 .9 35 led 數(shù)碼管顯示 .10 351

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

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

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

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

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

13、 1000 次擦寫周期 全靜態(tài)操作:0hz33hz 三級(jí)加密程序存儲(chǔ)器 32 個(gè)可編程 i/o 口線 三個(gè) 16 位定時(shí)器/計(jì)數(shù)器 八個(gè)中斷源 全雙工 uart 串行通道 低功耗空閑和掉電模式 掉電后中斷可喚醒 看門狗定時(shí)器 雙數(shù)據(jù)指針 掉電標(biāo)識(shí)符 3112at89s52 雙列直插式引腳圖 vcc p0.5/ad5 p0.0/ad0 p0.1/ad1 p0.2/ad2 p0.4/ad4 p0.3/ad3 p0.6/ad6 p0.7/ad7 p2.0/a8 p2.2/a10 p2.1/a9 p2.7/a15 p2.6/a14 p2.5/a13 p2.4/a12 p2.3/a11 psen ale

14、/prog ea/vpp t2/p1.0 t2ex/p1.1 p1.2 p1.3 p1.4 mosi/p1.5 miso/p1.6 sck/p1.7 rxd/p3.0 txd/p3.1 t0/p3.4 t1/p3.5 xtal2 xtal1 gnd rst 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 15 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 at89s52 /p3.7rd /p3.6wr /p3.2int0 /p3.3int1 圖 2.1 at89s52 雙列

15、直插式引腳圖 3113 端口介紹 p0 口:p0 口是一個(gè) 8 位漏極開路的雙向 i/o 口。作為輸出口,每位能驅(qū)動(dòng) 8 個(gè) ttl 邏輯電平。對 p0 端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù) 存儲(chǔ)器時(shí),p0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,p0 具有內(nèi)部上拉電 阻。在 flash 編程時(shí),p0 口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。 程序校驗(yàn)時(shí),需要外部上拉電阻。 p1 口:p1 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p1 輸出緩沖器能驅(qū)動(dòng) 4 個(gè) ttl 邏輯電平。對 p1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為

16、輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流 (iil) 。此外,p1.0 和 p1.2 分別作定時(shí)器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入(p1.0/t2)和 時(shí)器/計(jì)數(shù)器 2 的觸發(fā)輸入(p1.1/t2ex) 。在 flash 編程和校驗(yàn)時(shí),p1 口接收低 8 位 地址字節(jié)。 p2 口:p2 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 輸出緩沖器能驅(qū)動(dòng) 4 個(gè) ttl 邏輯電平。對 p2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為 輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流 (iil) 。在訪問外部程序存儲(chǔ)器或用

17、16 位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行 movx dptr)時(shí),p2 口送出高八位地址。在這種應(yīng)用中,p2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送 1。在使用 8 位地址(如 movx ri)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),p2 口輸出 p2 鎖存器的 內(nèi)容。在 flash 編程和校驗(yàn)時(shí),p2 口也接收高 8 位地址字節(jié)和一些控制信號(hào)。 p3 口:p3 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 輸出緩沖器能驅(qū)動(dòng) 4 個(gè) ttl 邏輯電平。對 p3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為 輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流 (iil) 。p3 口亦

18、作為 at89s52 特殊功能(第二功能)使用。在 flash 編程和校驗(yàn)時(shí), p3 口也接收一些控制信號(hào)。 312 at89s52 的時(shí)鐘介紹 單片機(jī)的工作過程是:取一條指令、譯碼、進(jìn)行操作,再取一條指令、譯碼、進(jìn) 行微操作,這樣自動(dòng)的一步一步的由微操作依序完成相應(yīng)指令規(guī)定的功能。各指令的 微操作在時(shí)間上由嚴(yán)格的次序,各種微操作的時(shí)間次序稱作為時(shí)序。 3121 at89s52 的時(shí)鐘信號(hào)產(chǎn)生方式 at89s52 單片機(jī)的時(shí)鐘信號(hào)通常有兩種產(chǎn)生方式:一是內(nèi)部時(shí)鐘方式,二是外部 時(shí)鐘方式。 內(nèi)部時(shí)鐘方式如圖 2.2 所示。在 at89s52 單片機(jī)內(nèi)部有一振蕩電路,只要在單片 機(jī)的 xtal1

19、和 xtal2 引腳外接石英晶體,就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí) 鐘信號(hào)。圖中電容器 c1、c2 的作用是穩(wěn)定頻率,快速起振,電容值在 530pf;晶 振 cys 的振蕩器頻率為 1.212mhz。 圖 2.2 內(nèi)部時(shí)鐘方式 外部時(shí)鐘方式是把已有時(shí)鐘信號(hào)引入到單片機(jī)內(nèi),如圖 2.3 所示。此方式多用于 多片 at89s52 單片機(jī)同時(shí)工作。以便于各單片機(jī)同步。一般要求外部信號(hào)高電平的持 續(xù)時(shí)間大于 20ns,且為頻率低于 12mhz 的方波。對于采用 chmos 工藝的單片機(jī),外 部時(shí)鐘主要由 xtal1 端引入,而 xtal2 端引腳應(yīng)懸空。 圖 2.3 外部時(shí)鐘方式 3122 at

20、89s52 的時(shí)鐘信號(hào) 晶振周期為最小的時(shí)序單元。晶振信號(hào)經(jīng)分頻器形成兩相錯(cuò)開的時(shí)鐘信號(hào) p1 和 p2.時(shí)鐘信號(hào)的周期也稱為 s 狀態(tài),它是晶振周期的兩倍。即一個(gè)時(shí)鐘周期包含兩個(gè) 晶振周期。在每個(gè)時(shí)鐘周期的前半周期,相位 1 有效,在每個(gè)時(shí)鐘周期的后半周期, 相位 2 有效。每個(gè)時(shí)鐘周期有兩個(gè)節(jié)拍 p1 和 p2,cpu 以兩相時(shí)鐘 p1 和 p2 為基本節(jié) 拍指揮各個(gè)部件協(xié)調(diào)工作。 晶振信號(hào) 12 分頻后形成機(jī)器周期。一個(gè)晶振周期包含 12 個(gè)晶振周期或 6 個(gè)時(shí) 鐘周期。因此每個(gè)機(jī)器周期的 12 個(gè)晶振脈沖可以表示為 s1p1 s2p2s6p6。晶振 周期和機(jī)器周期是單片機(jī)內(nèi)計(jì)算其他時(shí)間

21、值的基本時(shí)序單位。如晶振頻率為 12hz, 則機(jī)器周期為 1us,指令周期為 1-4us。 313 單片機(jī)中斷的介紹 在設(shè)計(jì)中用到了外部中斷int0/int1和定時(shí)器t0。它們的中斷請求標(biāo)志分別為 ie0,ie1和tf0。這些中斷請求標(biāo)志位分別由特殊功能寄存器tcon和tmod的相應(yīng)位鎖存。 在這個(gè)設(shè)計(jì)中,中斷允許寄存器是首要介紹的。 3131 中斷允許寄存器 ie 控制 cpu 對中斷源的開放或屏蔽。 中斷的開放和屏蔽實(shí)現(xiàn)2級(jí)控制,一個(gè)總開關(guān)中斷控制所有的中斷。 ie的格式如下: ieeaeset1ex1et0ex0 位地址 afhachabhaaha9ha8h 當(dāng) ea=0 時(shí),所有的中斷

22、請求被屏蔽,cpu 不接受任何請求。 當(dāng)ea=1時(shí),cpu開中斷,此時(shí)只要五個(gè)中斷源的中斷請求允許為1,則開中斷。 3132 tmod-工作方式控制寄存器 用于選擇定時(shí)器/計(jì)數(shù)器的工作模式,字節(jié)地址為89h,8位分2組,高4位控制t1, 低4位控制t0,其格式如下: d7d6d5d4d3d2d1d0 tmodgatec/tm1m0gatec/tm1m0 下面對工作方式選擇位做說明: m1 m0-工作方式選擇位,m1 m0共有4種編碼,分別對應(yīng)4種工作方式。如表1: 表1 工作方式選擇 m1 m0 工作方式 0 0方式0,為13位定時(shí)器/計(jì)數(shù)器 0 1方式1,為16位定時(shí)器/計(jì)數(shù)器 1 0方式2

23、,8位的常數(shù)自動(dòng)重新裝載的定時(shí)器/計(jì)數(shù)器 1 1方式3,僅適應(yīng)于t0,t0分為兩個(gè)8位的計(jì)數(shù)器,停止計(jì)數(shù) 中斷的觸發(fā)方式:電平觸發(fā)方式和下降沿觸發(fā)方式。 32 電源電路 單片機(jī)電源(220v 轉(zhuǎn) 5v)設(shè)計(jì)電源電路采用 lm7805 集成穩(wěn)壓器作為穩(wěn)壓器件,用 典型接法,220v 電源整流濾波后送入 lm7805 穩(wěn)壓,在輸出端接一個(gè) 470u 和 0.1u 電 容進(jìn)一步濾除紋波,得到 5v 穩(wěn)壓電源。電路如圖 2.4 所示 220v9v 體 tf1 體體體 vin +5v gnd 7805d1 4007 d4 4007 d3 4007 d2 4007c3 220uf/25v c2 1000u

24、f/25v gnd + _ vcc 圖 2.4 電源電路圖 33 時(shí)鐘電路 單片機(jī)工作的時(shí)間基準(zhǔn),決定單片機(jī)工作速度。時(shí)鐘電路就是振蕩電路,向單片 機(jī)提供一個(gè)正弦波信號(hào)作為基準(zhǔn),決定單片機(jī)的執(zhí)行速度。at89s51 單片機(jī)時(shí)鐘頻率 范圍:0 33mhz,本電路選擇 11.0592mhz。電路如圖 2.5 所示。 x1 體 體 體 體c5 體 體 c4 體 體 gnd 圖 2.5 時(shí)鐘電路圖 34 復(fù)位電路 單片機(jī)在啟動(dòng)時(shí)都需要復(fù)位,以使cpu 及系統(tǒng)各部件處于確定的初始狀態(tài), 并從初態(tài)開始工作。 89 系列單片機(jī)的復(fù)位信號(hào)是從 rst 引腳輸入到 芯片內(nèi)的施 密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作

25、狀態(tài)時(shí),且 振蕩器穩(wěn)定后,如果 rst 引 腳上有一個(gè)高電平并維持 2 個(gè)機(jī)器周期 (24 個(gè)振蕩周期 )以上,則 cpu 就可以響 應(yīng)并將系統(tǒng)復(fù)位。 單片機(jī)系統(tǒng)的復(fù)位方式有:手動(dòng)按鈕復(fù)位 和上電復(fù)位,這里選用手動(dòng)按鈕復(fù) 位。手動(dòng)按鈕復(fù)位需要人為在復(fù)位輸入端rst 上加入高電平。一般采用的辦法是 在 rst 端和正電源 vcc 之間接一個(gè)按鈕。當(dāng)人為按下按鈕時(shí),則vcc 的+5v 電平 就會(huì)直接加到 rst 端。由于人的動(dòng)作再快也會(huì)使按鈕保持接通達(dá)數(shù)十毫秒,所以, 完全能夠滿足復(fù)位的時(shí)間要求。 復(fù)位電路工作原理如圖所示,vcc 上電時(shí),c 充電,在 10k 電阻上出現(xiàn)電壓,使 得單片機(jī)復(fù)位;幾

26、個(gè)毫秒后,c 充滿,10k 電阻上電流降為 0,電壓也為 0,使得單片 機(jī)進(jìn)入工作狀態(tài)。工作期間,按下 s,c 放電。s 松手,c 又充電,在 10k 電阻上出現(xiàn) 電壓,使得單片機(jī)復(fù)位。幾個(gè)毫秒后,單片機(jī)進(jìn)入工作狀態(tài)。 c1 體 體 體 體 sw2 體 體 體 體 體 r1 體 體 r2 體 體 vcc gnd rst 圖 2.6 復(fù)位電路圖 35 led數(shù)碼管顯示 351 數(shù)碼管顯示簡介 數(shù)碼管 led 串口顯示模塊通常有兩種顯示方法:動(dòng)態(tài)顯示和靜態(tài)顯示。 動(dòng)態(tài)顯示:連接方法是將每個(gè)二極管的同名端連在一起,而每個(gè)顯示器的 公共 極 com 各自獨(dú)立的接受 i/o 線控制,cpu 向字段輸出端

27、口輸出字型碼,所有顯示器接 受到相同的字符,而要使用哪個(gè)顯示器要取決于他們的 com 的電平,而這段是由 i/o 端控制的,由單片機(jī)輸出。動(dòng)態(tài)掃描時(shí)連續(xù)的動(dòng)態(tài)掃描,只是肉眼暫留現(xiàn)象,乃發(fā)光 二極管的余輝效應(yīng),給人的感覺是一組穩(wěn)定的顯示數(shù)據(jù)。 靜態(tài)顯示: 靜態(tài)顯示顯示效果好,但是功耗大,但不占用端口,只需兩個(gè)串口 線輸出,變成較為簡單。而且采用靜態(tài)顯示需要的驅(qū)動(dòng)器件多,硬件成本相對更高。 比較以上兩種方案,方案一硬件簡單程序復(fù)雜,方案二硬件復(fù)雜程序簡單,考慮 到實(shí)惠和對自己的編程鍛煉,選擇方案動(dòng)態(tài)顯示。 動(dòng)態(tài)掃描方法是用其接口電路把所有顯示器的8個(gè)筆畫字段(ag 和 dp)同名端 連在一起,而每

28、個(gè)顯示器的公共極 com 各自獨(dú)立的接受 i/o 線控制。cpu 向字段輸出 端口輸出字型碼時(shí),所有顯示器接受到相同的字型碼,但究竟使用哪個(gè)顯示,則取決 于公共極 com 端,而這一端是由/wr 和/rd 控制的,由單片機(jī)決定何時(shí)顯示哪一位。 動(dòng)態(tài)掃描用分時(shí)的方法去輪流控制各個(gè)顯示的 com 端,時(shí)各個(gè)顯示器輪流亮。在輪流 點(diǎn)亮掃描過程中,每為顯示器的點(diǎn)亮?xí)r間極為短暫,但由于人的視覺暫留現(xiàn)象及發(fā)光 二極管的于輝效應(yīng),給人的印象就時(shí)一組穩(wěn)定的顯示數(shù)據(jù)。 顯示部分電路圖: 圖2.7 數(shù)碼管顯示原理 352 數(shù)碼管編碼表 7段數(shù)碼管可以包括小數(shù)點(diǎn)的09的數(shù)字和部分的英文字母,為了獲得不同的字 符,數(shù)

29、碼管各段所加的電平也不同,編碼也不一樣。共陰極數(shù)碼管的字型,字段和編 碼的關(guān)系如下表2: 表2 數(shù)碼管編碼表 十六進(jìn)制數(shù)h gf edcba顯示代碼 00 x3f 10 x06 20 x5b 30 x4f 40 x66 50 x6d 60 x7d 70 x07 80 x7f 90 x6f . .0 x80 36 開關(guān)控制 本電路要實(shí)現(xiàn)可設(shè)定 5 個(gè)倒計(jì)時(shí)設(shè)計(jì)要求,需要 1 個(gè)復(fù)位鍵,一個(gè)“+”和一個(gè) “-”按鍵,另外再加 5 個(gè)時(shí)間設(shè)定按鍵用于實(shí)現(xiàn)倒計(jì)時(shí)間設(shè)定,按鍵時(shí)可直接輸出 相應(yīng)倒計(jì)時(shí)間。 37 單片機(jī)的去抖動(dòng) 單片機(jī)去抖動(dòng)可以用軟件和硬件兩種方法。硬件方法就是加去抖動(dòng)電路,例如在 按鍵兩

30、端并聯(lián) 10uf 的電容或通過 rs 觸發(fā)器連接按鍵,硬件去抖動(dòng)從根本上避免抖動(dòng); 軟件方法則采用時(shí)間延時(shí)以躲過抖動(dòng),待信號(hào)穩(wěn)定之后再進(jìn)行鍵掃描。對于系統(tǒng)軟件 量不大的場合,采用軟件去除抖動(dòng)既節(jié)約硬件開銷又很實(shí)用且有效。所以本設(shè)計(jì)采用 軟件去抖動(dòng)。 4 電路的軟件部分 單片的使用除了硬件,同樣也要軟件的使用,我們寫匯編程序編程 cpu 可執(zhí)行的 機(jī)器碼有兩種方法,一種是手工匯編,一種是機(jī)器匯編。機(jī)器匯編通過匯編軟件變?yōu)?機(jī)器碼,用于 msc-51 單片機(jī)的匯編軟件有早期的 a51,隨著單片機(jī)開發(fā)技術(shù)的不斷 發(fā)展,從使用普通匯編語言到高級(jí)語言的不斷發(fā)展,keil 是目前最流行開發(fā) mcs-51

31、系列單片機(jī)的軟件。keil c51 匯編,plm 語言和 c 語言的程序設(shè)計(jì),界面友好。keil 是美國 keilsoftware 公司出品的 52 系列兼容單片機(jī) c 語言開發(fā)系統(tǒng)。用過匯編語言 后再使用 c 語言來開發(fā),體會(huì)更加深刻。 程序框圖: y 開始 系統(tǒng)初始化 1 號(hào)鍵按下? 1 號(hào)盒倒計(jì) 時(shí)時(shí)間設(shè)定 開始倒計(jì)時(shí) 5 號(hào)鍵按下? 2 號(hào)鍵按下? 3 號(hào)鍵按下? 4 號(hào)鍵按下? 2 號(hào)盒倒計(jì) 時(shí)時(shí)間設(shè)定 3 號(hào)盒倒計(jì) 時(shí)時(shí)間設(shè)定 4 號(hào)盒倒計(jì) 時(shí)時(shí)間設(shè)定 5 號(hào)盒倒計(jì) 時(shí)時(shí)間設(shè)定 倒計(jì)時(shí)完? y y y y y 結(jié)束 圖 2.8 程序框圖 源程序如下: #include #inclu

32、de #define uchar unsigned char #define uint unsigned int sbit b1=p10; sbit b2=p11; sbit b3=p12; sbit b4=p13; sbit b5=p14; sbit bell=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

33、,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,0 x5b,0 x4f, /03 0 x66,0 x6d,0 x7d,0 x07, /47 0 x7f,0 x6f,0 x77,0 x7c, /8b 0 x39,0 x5e,0 x79,0 x71 /cf ; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=11

34、0;y0;y-); void delay1(uint z) for(;z0;z-); void display(uchar a,uchar b,uchar c) uchar i,j; i=a/10; j=a%10; p2=0 xfb; p0=tablei; delay(2); p2=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

35、xfd; p0=tablej; delay(2); void 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; /本例中使用的是定時(shí)器 t0,如果用 t1。則為 et1=0,tmod=0 x10。 tmod=0 x01; /定時(shí)器工作方式 1 th0=(65535-50000)/256; /因?yàn)榫д裼玫氖?11.0592mhz。在取初值時(shí),大概 定義為一個(gè)中斷為 50ms tl0=(65535-50000)%256; tr0=1; p1=

36、0 xff; void turn_val1(char newval,uchar flag,uchar slnum) if(flag) /判斷是加一還是減一 newval+; switch(slnum) case 1:if(newval23) newval=0; display(hour1,minute1,second1); hour1=newval; break; case 2:if(newval59) newval=0; display(hour1,minute1,second1); minute1=newval; break; case 3:if(newval59) newval=0; d

37、isplay(hour1,minute1,second1); second1=newval; break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; display(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; displ

38、ay(hour2,minute2,second2); hour2=newval; break; case 2:if(newval59) newval=0; display(hour2,minute2,second2); minute2=newval; break; case 3:if(newval59) newval=0; display(hour2,minute2,second2); second2=newval; break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; display(h

39、our2,minute2,second2); hour2=newval; break; case 2:if(newval0) newval=59; display(hour2,minute2,second2); minute2=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; cas

40、e 3:if(newval59) newval=0; display(hour3,minute3,second3); second3=newval; break; default:break; else newval-; switch(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:

41、if(newval23) newval=0; display(hour4,minute4,second4); hour4=newval; break; case 2:if(newval59) newval=0; display(hour4,minute4,second4); minute4=newval; break; case 3:if(newval59) newval=0; display(hour4,minute4,second4); second4=newval; break; default:break; else newval-; switch(slnum) case 1:if(n

42、ewval0) newval=23; display(hour4,minute4,second4); hour4=newval; break; case 2:if(newval0) newval=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)

43、; minute5=newval; break; case 3:if(newval59) newval=0; display(hour5,minute5,second5); second5=newval; break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; display(hour5,minute5,second5); hour5=newval; break; case 2:if(newval0) newval=59; display(hour5,minute5,second5); mi

44、nute5=newval; break; case 3:if(newval0) newval=59; display(hour5,minute5,second5); 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) delay(

45、5); if(s5=0) while(!s5); slnum+; if(slnum=1) if(add=0) delay(3); 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) delay(3); if(add=0) while(!add); turn_val5(minute5,1,2); if(dec=0) delay(3); if(dec=0) while(!dec); tur

46、n_val5(minute5,0,2); if(slnum=3) if(add=0) delay(3); if(add=0) while(!add); turn_val5(second5,1,3); if(dec=0) 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;

47、hour1-; if(hour10) hour1=0; display(hour1,minute1,second1); if(second1=0tr0=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=0tr0=0;b2=0;bell=0;delay2(5);b2=1;bell=1; di

48、splay(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=0tr0=0;b3=0;bell=0;delay2(5);b3=1;bell=1; display(hour3,minute3,second3); void xian4() tr0=1; if(g=20) g=0; second4-; if(second

49、40) second4=59; minute4-; if(minute40) minute4=59; hour4-; if(hour40) hour4=0; if(second4=0tr0=0;b4=0;bell=0;delay2(5);b4=1;bell=1; display(hour4,minute4,second4); void xian5() tr0=1; if(g=20) g=0; second5-; if(second50) second5=59; minute5-; if(minute50) minute5=59; hour5-; if(hour50) hour5=0; if(s

50、econd5=0tr0=0;b5=0;bell=0;delay2(5);b5=1;bell=1;while(1)d isplay(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 if(second1=0 if(second2=0 if(second3=0 if(second4=0 void time()interrupt 1 /如果用

51、 t1 的話,應(yīng)為 interrupt 3 th0=(65535-50000)/256; /因?yàn)榫д裼玫氖?11.0592mhz。在取初值時(shí), 大概定義為一個(gè)中斷為 50ms tl0=(65535-50000)%256; g+; 參考文獻(xiàn) (1)童詩白主編模擬電子技術(shù)基礎(chǔ) ,修訂 2 版,北京:高等教育出版社 1988 (2)閻石主編數(shù)字電子技術(shù)基礎(chǔ) ,修訂 3 版,北京:高等教育出版社 1988 (3)胡漢才主編, 單片機(jī)原理及其接口技術(shù) , (第二版)北京:清華大學(xué)出版社 2004 (4)張毅剛主編, 單片機(jī)原理及應(yīng)用 ,北京:高等教育出版社 (5)馬忠梅等編著, 單片機(jī) c 語言應(yīng)用程序

52、設(shè)計(jì) , (第四版) 北京航空航天大學(xué)出版社 2007.1 (6)何立民, mcs-51 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì) ,北京航空航天大學(xué)出版社,1998.7 (7)徐愛軍, 單片機(jī)高級(jí)語言 c51 應(yīng)用程序設(shè)計(jì) ,電子工業(yè)出版社,1997.7 (8)張志良;單片機(jī)原理與控制技術(shù);北京,機(jī)械工業(yè)出版社,2008 (9)于海生,微型計(jì)算機(jī)控制技術(shù);北京,清華大學(xué)出版社,1999.3. (10)康華光電子技術(shù)基礎(chǔ)m 模擬部分高等教育出版社,1998 (11)于敬芬基于 at89s52 和 tlc0834 的數(shù)據(jù)采集系統(tǒng)j 中國水運(yùn)(學(xué)術(shù)版) ,2006 (12)王幸之a(chǎn)t89 系列單片機(jī)原理及接口技術(shù)m 北京航天航空出版社,2006 (13)康華光電子技術(shù)基礎(chǔ)m 數(shù)字部分高等教育出版社,1998 (14)胡漢才單片機(jī)原理及系統(tǒng)設(shè)計(jì)m 清華

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論