亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

時(shí)(shí)延

  • 單片機(jī)音樂中音調(diào)和節(jié)拍的確定方法

    單片機(jī)音樂中音調(diào)和節(jié)拍的確定方法:調(diào)號(hào)-音樂上指用以確定樂曲主音高度的符號(hào)。很明顯一個(gè)八度就有12個(gè)半音。A、B、C、D、E、F、G。經(jīng)過聲學(xué)家的研究,全世界都用這些字母來表示固定的音高。比如,A這個(gè)音,標(biāo)準(zhǔn)的音高為每秒鐘振動(dòng)440周。 升C調(diào):1=#C,也就是降D調(diào):1=BD;277(頻率)升D調(diào):1=#D,也就是降E調(diào):1=BE;311升F調(diào):1=#F,也就是降G調(diào):1=BG;369升G調(diào):1=#G,也就是降A(chǔ)調(diào):1=BA;415升A調(diào):1=#A,也就是降B調(diào):1=BB。466,C 262   #C277   D 294   #D(bE)311  E 330   F 349   #F369   G 392  #G415A 440.    #A466    B 494 所謂1=A,就是說,這首歌曲的“導(dǎo)”要唱得同A一樣高,人們也把這首歌曲叫做A調(diào)歌曲,或叫“唱A調(diào)”。1=C,就是說,這首歌曲的“導(dǎo)”要唱得同C一樣高,或者說“這歌曲唱C調(diào)”。同樣是“導(dǎo)”,不同的調(diào)唱起來的高低是不一樣的。各調(diào)的對(duì)應(yīng)的標(biāo)準(zhǔn)頻率為: 單片機(jī)演奏音樂時(shí)音調(diào)和節(jié)拍的確定方法 經(jīng)常看到一些剛學(xué)單片機(jī)的朋友對(duì)單片機(jī)演奏音樂比較有興趣,本人也曾是這樣。在此,本人將就這方面的知識(shí)做一些簡(jiǎn)介,但愿能對(duì)單片機(jī)演奏音樂比較有興趣而又不知其解的朋友能有所啟迪。 一般說來,單片機(jī)演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。因此單片機(jī)奏樂只需弄清楚兩個(gè)概念即可,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個(gè)音符唱多高的頻率,節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。 在音樂中所謂“音調(diào)”,其實(shí)就是我們常說的“音高”。在音樂中常把中央C上方的A音定為標(biāo)準(zhǔn)音高,其頻率f=440Hz。當(dāng)兩個(gè)聲音信號(hào)的頻率相差一倍時(shí),也即f2=2f1時(shí),則稱f2比f1高一個(gè)倍頻程, 在音樂中1(do)與 ,2(來)與 ……正好相差一個(gè)倍頻程,在音樂學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度音內(nèi),有12個(gè)半音。以1—i八音區(qū)為例, 12個(gè)半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。這12個(gè)音階的分度基本上是以對(duì)數(shù)關(guān)系來劃分的。如果我們只要知道了這十二個(gè)音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。 知道了一個(gè)音符的頻率后,怎樣讓單片機(jī)發(fā)出相應(yīng)頻率的聲音呢?一般說來,常采用的方法就是通過單片機(jī)的定時(shí)器定時(shí)中斷,將單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機(jī)發(fā)出不同頻率的聲音,我們只需將定時(shí)器予置不同的定時(shí)值就可實(shí)現(xiàn)。那么怎樣確定一個(gè)頻率所對(duì)應(yīng)的定時(shí)器的定時(shí)值呢?以標(biāo)準(zhǔn)音高A為例:   A的頻率f = 440 Hz,其對(duì)應(yīng)的周期為:T = 1/ f = 1/440 =2272μs 由上圖可知,單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來回取反的時(shí)間應(yīng)為:t = T/2 = 2272/2 = 1136μs這個(gè)時(shí)間t也就是單片機(jī)上定時(shí)器應(yīng)有的中斷觸發(fā)時(shí)間。一般情況下,單片機(jī)奏樂時(shí),其定時(shí)器為工作方式1,它以振蕩器的十二分頻信號(hào)為計(jì)數(shù)脈沖。設(shè)振蕩器頻率為f0,則定時(shí)器的予置初值由下式來確定:    t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL為定時(shí)器待確定的計(jì)數(shù)初值。因此定時(shí)器的高低計(jì)數(shù)器的初值為:     TH = THL / 256 = ( TALL – t* f0/12) / 256    TL = THL % 256 = ( TALL – t* f0/12) %256  將t=1136μs代入上面兩式(注意:計(jì)算時(shí)應(yīng)將時(shí)間和頻率的單位換算一致),即可求出標(biāo)準(zhǔn)音高A在單片機(jī)晶振頻率f0=12Mhz,定時(shí)器在工作方式1下的定時(shí)器高低計(jì)數(shù)器的予置初值為 :    TH440Hz = (65536 – 1136 * 12/12) /256 = FBH    TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根據(jù)上面的求解方法,我們就可求出其他音調(diào)相應(yīng)的計(jì)數(shù)器的予置初值。 音符的節(jié)拍我們可以舉例來說明。在一張樂譜中,我們經(jīng)常會(huì)看到這樣的表達(dá)式,如1=C  、1=G …… 等等,這里1=C,1=G表示樂譜的曲調(diào),和我們前面所談的音調(diào)有很大的關(guān)聯(lián), 、 就是用來表示節(jié)拍的。以 為例加以說明,它表示樂譜中以四分音符為節(jié)拍,每一小結(jié)有三拍。比如:      其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時(shí)長(zhǎng)為四分音符的一半,即為八分音符長(zhǎng),3、4的時(shí)長(zhǎng)為八分音符的一半,即為十六分音符長(zhǎng),5的時(shí)長(zhǎng)為四分音符的一半,即為八分音符長(zhǎng),6的時(shí)長(zhǎng)為四分音符長(zhǎng)。那么一拍到底該唱多長(zhǎng)呢?一般說來,如果樂曲沒有特殊說明,一拍的時(shí)長(zhǎng)大約為400—500ms 。我們以一拍的時(shí)長(zhǎng)為400ms為例,則當(dāng)以四分音符為節(jié)拍時(shí),四分音符的時(shí)長(zhǎng)就為400ms,八分音符的時(shí)長(zhǎng)就為200ms,十六分音符的時(shí)長(zhǎng)就為100ms。可見,在單片機(jī)上控制一個(gè)音符唱多長(zhǎng)可采用循環(huán)延時(shí)的方法來實(shí)現(xiàn)。首先,我們確定一個(gè)基本時(shí)長(zhǎng)的延時(shí)程序,比如說以十六分音符的時(shí)長(zhǎng)為基本延時(shí)時(shí)間,那么,對(duì)于一個(gè)音符,如果它為十六分音符,則只需調(diào)用一次延時(shí)程序,如果它為八分音符,則只需調(diào)用二次延時(shí)程序,如果它為四分音符,則只需調(diào)用四次延時(shí)程序,依次類推。通過上面關(guān)于一個(gè)音符音調(diào)和節(jié)拍的確定方法,我們就可以在單片機(jī)上實(shí)現(xiàn)演奏音樂了。具體的實(shí)現(xiàn)方法為:將樂譜中的每個(gè)音符的音調(diào)及節(jié)拍變換成相應(yīng)的音調(diào)參數(shù)和節(jié)拍參數(shù),將他們做成數(shù)據(jù)表格,存放在存儲(chǔ)器中,通過程序取出一個(gè)音符的相關(guān)參數(shù),播放該音符,該音符唱完后,接著取出下一個(gè)音符的相關(guān)參數(shù)……,如此直到播放完畢最后一個(gè)音符,根據(jù)需要也可循環(huán)不停地播放整個(gè)樂曲。另外,對(duì)于樂曲中的休止符,一般將其音調(diào)參數(shù)設(shè)為FFH,F(xiàn)FH,其節(jié)拍參數(shù)與其他音符的節(jié)拍參數(shù)確定方法一致,樂曲結(jié)束用節(jié)拍參數(shù)為00H來表示。下面給出部分音符(三個(gè)八度音)的頻率以及以單片機(jī)晶振頻率f0=12Mhz,定時(shí)器在工作方式1下的定時(shí)器高低計(jì)數(shù)器的予置初值 : C調(diào)音符  頻率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC調(diào)音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7頻率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C調(diào)音符  頻率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02

    標(biāo)簽: 單片機(jī) 音調(diào)

    上傳時(shí)間: 2013-10-20

    上傳用戶:哈哈haha

  • 電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)

    電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?nbsp;1.進(jìn)一步掌握鍵盤掃描和LED顯示的程序設(shè)計(jì)。 2.了解按鍵消抖的方法。 3.綜合運(yùn)用微機(jī)原理的軟硬件知識(shí)。 二、實(shí)驗(yàn)內(nèi)容與要求 1.基本要求 (1)具有密碼輸入功能,密碼最多為6位;(2)設(shè)置退格鍵,以便刪除輸入錯(cuò)誤的密碼;(3)在輸入的密碼時(shí)數(shù)碼管上只顯示8,并根據(jù)輸入位數(shù)依次橫移;(4)設(shè)置確認(rèn)鍵,當(dāng)確認(rèn)鍵按下后,判斷輸入密碼是否正確;(5)當(dāng)輸入密碼正確時(shí),點(diǎn)亮發(fā)光二極管;當(dāng)輸入密碼不正確時(shí),發(fā)光二極管不亮并且蜂鳴器報(bào)警,重新輸入,當(dāng)三次密碼輸入不正確時(shí),系統(tǒng)應(yīng)鎖定鍵盤10s。2.提高要求 將用戶分為管理者和使用者,管理者擁有超級(jí)密碼,可以修改其他人的密碼。使用者不能修改密碼。 三、實(shí)驗(yàn)報(bào)告要求 1.設(shè)計(jì)目的和內(nèi)容 2.總體設(shè)計(jì) 3.硬件設(shè)計(jì):原理圖(接線圖)及簡(jiǎn)要說明 4.軟件設(shè)計(jì)框圖及程序清單5.設(shè)計(jì)結(jié)果和體會(huì)(包括遇到的問題及解決的方法) 四、總體設(shè)計(jì) 電子密碼鎖的原理是:從鍵盤輸入一組密碼,CPU把該密碼和設(shè)置密碼比較,對(duì)則將鎖打開(不同鎖的控制方式不一樣,比如加電控制電磁鐵抽回,從而打開),錯(cuò)則要求重新輸入,并記錄錯(cuò)誤次數(shù),如果三次錯(cuò)誤,則被強(qiáng)制鎖定并報(bào)警,除非超級(jí)密碼或者其他的手段打開,比如延時(shí)一段時(shí)間。 初步設(shè)計(jì)思路如下: 1.輸入密碼用矩形鍵盤,包括數(shù)字鍵和功能鍵,功能鍵包括退格鍵和確認(rèn)鍵。 2.LED數(shù)碼管顯示輸入密碼,但是只是輸出顯示符號(hào)8 。采用動(dòng)態(tài)掃描輸出。 3.用發(fā)光二極管模擬鎖的情況,鎖關(guān)時(shí)發(fā)光二極管滅,打開時(shí)發(fā)光二極管亮。 4.輸入密碼錯(cuò)誤時(shí)報(bào)警,3次輸入錯(cuò)誤時(shí)鍵盤鎖定10s,鍵盤無法接收數(shù)據(jù)。 軟件的設(shè)計(jì)主要包括矩形鍵盤鍵值的讀取、LED動(dòng)態(tài)掃描輸出程序、密碼判斷程序和報(bào)警程序。   五、硬件設(shè)計(jì) 根據(jù)設(shè)計(jì)思路,硬件電路可通過實(shí)驗(yàn)平臺(tái)上的一些功能模塊電路組成,由于實(shí)驗(yàn)平臺(tái)上的各個(gè)功能模塊已經(jīng)設(shè)計(jì)好,用戶在使用時(shí)只要設(shè)計(jì)模塊間電路的連接,因此,硬件電路的設(shè)計(jì)及實(shí)現(xiàn)相對(duì)簡(jiǎn)單。完整系統(tǒng)的硬件連接如圖1所示。硬件電路由LED數(shù)碼管顯示模塊、按鍵模塊、發(fā)光二極管電路和蜂鳴器模塊組成。各個(gè)模塊的詳細(xì)說明:1.LED數(shù)碼管模塊實(shí)驗(yàn)平臺(tái)上提供一組六個(gè)LED數(shù)碼管。插孔CS1用于數(shù)碼管段選的輸出選通,插孔CS2用于數(shù)碼管位選信號(hào)的輸出選通。本設(shè)計(jì)用6個(gè)數(shù)碼管來動(dòng)態(tài)顯示時(shí)分秒,動(dòng)態(tài)顯示的定時(shí)時(shí)間由8253定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)。8253主要是實(shí)現(xiàn)每位顯示時(shí)間1ms,由8253的計(jì)數(shù)器0來實(shí)現(xiàn)。Clk0接實(shí)驗(yàn)平臺(tái)分頻電路輸出Q6,f=46875hz。GATE0接8255的PA0,由8255的PA0輸出來控制計(jì)數(shù)器的起停。OUT0接8259的IRQ2,定時(shí)完成請(qǐng)求中斷,進(jìn)入中斷服務(wù)程序。軟件在中斷服務(wù)程序中LED數(shù)碼管顯示。

    標(biāo)簽: 電子密碼鎖

    上傳時(shí)間: 2013-10-16

    上傳用戶:15070202241

  • 多路電壓采集系統(tǒng)

    多路電壓采集系統(tǒng)一、實(shí)驗(yàn)?zāi)康模保煜た删幊绦酒珹DC0809,8253的工作過程,掌握它們的編程方法。2.加深對(duì)所學(xué)知識(shí)的理解并學(xué)會(huì)應(yīng)用所學(xué)的知識(shí),達(dá)到在應(yīng)用中掌握知識(shí)的目的。 二、實(shí)驗(yàn)內(nèi)容與要求1.基本要求通過一個(gè)A/D轉(zhuǎn)換器循環(huán)采樣4路模擬電壓,每隔一定時(shí)間去采樣一次,一次按順序采樣4路信號(hào)。A/D轉(zhuǎn)換器芯片AD0809將采樣到的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),轉(zhuǎn)換完成后,CPU讀取數(shù)據(jù)轉(zhuǎn)換結(jié)果,并將結(jié)果送入外設(shè)即CRT/LED顯示,顯示包括電壓路數(shù)和數(shù)據(jù)值。2. 提高要求 (1) 可以實(shí)現(xiàn)循環(huán)采集和選擇采集2種方式。(2)在CRT上繪制電壓變化曲線。 三、實(shí)驗(yàn)報(bào)告要求 1.設(shè)計(jì)目的和內(nèi)容 2.總體設(shè)計(jì) 3.硬件設(shè)計(jì):原理圖(接線圖)及簡(jiǎn)要說明 4.軟件設(shè)計(jì)框圖及程序清單5.設(shè)計(jì)結(jié)果和體會(huì)(包括遇到的問題及解決的方法) 四、總體設(shè)計(jì)設(shè)計(jì)思路如下:1) 4路模擬電壓信號(hào)通過4個(gè)電位器提供0-5V的電壓信號(hào)。2) 選擇ADC0809芯片作為A/D轉(zhuǎn)換器,4路輸入信號(hào)分別接到ADC0809的IN0—IN4通道,每隔一定的時(shí)間采樣一次,采完一路采集下一路,4路電壓循環(huán)采集。3) 利用3個(gè)LED數(shù)碼管顯示數(shù)據(jù),1個(gè)數(shù)碼管用來顯示輸入電壓路數(shù),3個(gè)數(shù)碼管用來顯示電壓采樣值。4) 延時(shí)由8253定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)。 五、硬件電路設(shè)計(jì)根據(jù)設(shè)計(jì)思路,硬件主要利用了微機(jī)實(shí)驗(yàn)平臺(tái)上的ADC0809模數(shù)轉(zhuǎn)換器、8253定時(shí)/計(jì)數(shù)器以及LED顯示輸出等模塊。電路原理圖如下:1.基本接口實(shí)驗(yàn)板部分1) 電位計(jì)模塊,4個(gè)電位計(jì)輸出4路1-5V的電壓信號(hào)。2) ADC0809模數(shù)轉(zhuǎn)換器,將4路電壓信號(hào)接到IN0-IN3,ADD_A、ADD_B、ADD_C分別接A0、A1、A2,CS_AD接CS0時(shí),4個(gè)采樣通道對(duì)應(yīng)的地址分別為280H—283H。3) 延時(shí)模塊,8253和8255組成延時(shí)電路。8255的PA0接到8253的OUT0,程序中查詢計(jì)數(shù)是否結(jié)束。硬件電路圖如圖1所示。 圖1 基本實(shí)驗(yàn)板上的電路圖實(shí)驗(yàn)板上的LED顯示部分實(shí)驗(yàn)板上主要用到了LED數(shù)碼管顯示電路,插孔CS1用于數(shù)碼管段碼的輸出選通,插孔CS2用于數(shù)碼管位選信號(hào)的輸出選通。電路圖如圖2所示。

    標(biāo)簽: 多路 電壓采集

    上傳時(shí)間: 2013-11-06

    上傳用戶:sunchao524

  • 基于PC機(jī)的電子琴設(shè)計(jì)

    基于PC機(jī)的電子琴設(shè)計(jì) 一、實(shí)驗(yàn)?zāi)康模保莆绽胮c機(jī)揚(yáng)聲器發(fā)出聲音的方法。2.學(xué)習(xí)利用系統(tǒng)功能調(diào)用從鍵盤上讀取字符的方法。 二、實(shí)驗(yàn)內(nèi)容與要求利用PC機(jī)和揚(yáng)聲器實(shí)現(xiàn)簡(jiǎn)易電子琴的功能。 1.基本要求(1)電子琴功能,編寫程序,程序運(yùn)行時(shí)使pc機(jī)成為一架可彈奏的“鋼琴”。當(dāng)按下PC機(jī)鍵盤數(shù)字鍵1-8時(shí),依次發(fā)出1,2,3,4,5,6,7,i八個(gè)音調(diào)。(2)音樂盒功能,內(nèi)部存儲(chǔ)至少2首以上的樂曲,根據(jù)菜單選擇播放。2.提高要求(1)使一組放光二極管隨音調(diào)變化而改變,實(shí)現(xiàn)音樂彩燈  (2)能夠?qū)崿F(xiàn)高、中、低音的選擇。  (3)能夠存儲(chǔ)彈奏的內(nèi)容,進(jìn)行回放。 三、實(shí)驗(yàn)報(bào)告要求 1.設(shè)計(jì)目的和內(nèi)容 2.總體設(shè)計(jì) 3.硬件設(shè)計(jì):原理圖(接線圖)及簡(jiǎn)要說明 4.軟件設(shè)計(jì)框圖及程序清單 5.設(shè)計(jì)結(jié)果和體會(huì)(包括遇到的問題及解決的方法) 四、設(shè)計(jì)原理要使揚(yáng)聲器發(fā)出不同的音調(diào),就得輸入不同頻率的波形。通過給8253定時(shí)/計(jì)數(shù)器裝入不同的計(jì)數(shù)值,可以使其輸出不同頻率的方波。經(jīng)過放大器的放大作用,便可驅(qū)動(dòng)揚(yáng)聲器發(fā)出不同的音調(diào),只要插入一段延時(shí)程序之后,再將揚(yáng)聲器切斷,音調(diào)的聲音就可以持續(xù)一端時(shí)間。通過計(jì)算機(jī)的不同按鍵輸出不同的音調(diào),需要使用系統(tǒng)調(diào)用功能以接收鍵入字符,并且要建立一張表,使鍵入字符與頻率構(gòu)成一個(gè)對(duì)應(yīng)關(guān)系。

    標(biāo)簽: PC機(jī) 電子琴

    上傳時(shí)間: 2013-10-16

    上傳用戶:xlcky

  • 給初學(xué)單片機(jī)的40個(gè)實(shí)驗(yàn)(含電路圖和源程序)

    給初學(xué)單片機(jī)的40個(gè)實(shí)驗(yàn)(含電路圖和源程序) 1. 閃爍燈 1.  實(shí)驗(yàn)任務(wù) 如圖4.1.1所示:在P1.0端口上接一個(gè)發(fā)光二極管L1,使L1在不停地一亮一滅,一亮一滅的時(shí)間間隔為0.2秒。 2.  電路原理圖 . 模擬開關(guān)燈 1. 實(shí)驗(yàn)任務(wù) 如圖4.2.1所示,監(jiān)視開關(guān)K1(接在P3.0端口上),用發(fā)光二極管L1(接在單片機(jī)P1.0端口上)顯示開關(guān)狀態(tài),如果開關(guān)合上,L1亮,開關(guān)打開,L1熄滅。 2. 電路原理圖 5. 廣告燈(利用取表方式) 1. 實(shí)驗(yàn)任務(wù) 利用取表的方法,使端口P1做單一燈的變化:左移2次,右移2次,閃爍2次(延時(shí)的時(shí)間0.2秒)。 2. 電路原理圖

    標(biāo)簽: 單片機(jī) 實(shí)驗(yàn) 電路圖 源程序

    上傳時(shí)間: 2013-11-29

    上傳用戶:frank1234

  • 基于單片機(jī)的紅外門進(jìn)控制系統(tǒng)設(shè)計(jì)與制作(含源程序和原理圖)

    基于單片機(jī)的紅外門進(jìn)控制系統(tǒng)設(shè)計(jì)與制作:我們所做的創(chuàng)新實(shí)驗(yàn)項(xiàng)目“基于單片機(jī)的紅外門控系統(tǒng)”已基本完成,現(xiàn)將其工作原理簡(jiǎn)要說明。該系統(tǒng)主要分為兩大部分:一是紅外傳感器部分。二是單片機(jī)計(jì)數(shù)顯示控制部分。基本電路圖如下:其中紅外傳感器部分我們采用紅外對(duì)管實(shí)現(xiàn),紅外對(duì)管平行放置,平常處于接收狀態(tài),經(jīng)比較器輸出低電平,當(dāng)有人經(jīng)過時(shí),紅外線被擋住,接收管接收不到紅外線,經(jīng)比較器輸出高電平。這樣,當(dāng)有人經(jīng)過時(shí)便會(huì)產(chǎn)生一個(gè)電平的跳變。單片機(jī)控制部分主要是通過外部?jī)蓚€(gè)中斷判斷是否有人經(jīng)過,如果有人經(jīng)過,由于電平跳變的產(chǎn)生,進(jìn)入中斷服務(wù)程序,這里我們采用了兩對(duì)紅外傳感器接到兩個(gè)外部中斷口,中斷0作為入口,實(shí)現(xiàn)加1操作,中斷1作為出口,實(shí)現(xiàn)減1操作。另外,我們通過P0口控制室內(nèi)燈的亮暗,當(dāng)寄存器計(jì)數(shù)值為0時(shí),熄燈,不為0時(shí),燈亮。顯示部分,采用兩位數(shù)碼管動(dòng)態(tài)顯示,如有必要,可以很方便的擴(kuò)展為四位計(jì)數(shù)。精益求精!在實(shí)驗(yàn)過程中,我們走了非常多的彎路,做出來的東西根本不是自己想要的,我們本想做成室內(nèi)只有一個(gè)門的進(jìn)出計(jì)數(shù),原理已清楚,即在門的兩邊放置兩對(duì)紅外對(duì)管,進(jìn)出時(shí),擋住兩對(duì)對(duì)管的順序不同,因此,可判斷是進(jìn)入還是出去,從而實(shí)現(xiàn)加減計(jì)數(shù),編程時(shí),可分別在兩個(gè)中斷服務(wù)程序的入口置標(biāo)志位,根據(jù)標(biāo)志位判斷進(jìn)出,詳細(xì)內(nèi)容在程序部分。理論如此,但在實(shí)際過程中,還是發(fā)現(xiàn)實(shí)現(xiàn)不了上述功能,我們初步判定認(rèn)為是程序掌握得不夠好,相信隨著自己對(duì)單片機(jī)了解的深入,應(yīng)該會(huì)做出更好的 (因?yàn)槲覀兪桥R時(shí)學(xué)的單片機(jī)),程序的具體內(nèi)容如下: $MOD52    ORG   0000H         LJMP  MAIN         ORG   0003H         LJMP  0100H         ORG   0013H         LJMP  0150H         ORG   0050HMAIN:    CLR   A         MOV   30H , A           ;初始化緩存區(qū)         MOV   31H , A         MOV   32H , A         MOV   33H , A         MOV   R6  , A         MOV   R7  , A  SETB  EA  SETB  EX0  SETB  EX1  SETB  IT0  SETB  IT1  SETB  PX1NEXT1:   ACALL HEXTOBCDD        ;調(diào)用數(shù)制轉(zhuǎn)換子程序         ACALL DISPLAY          ;調(diào)用顯示子程序         LJMP  NEXT1          ORG   0100H  ;中斷0服務(wù)程序 LCALL  DELY mov 70h,#2 djnz 70h,next JBC  F0,NEXT         SETB F0        CLR P0.0 LCALL  DELY0 SETB   P0.0                  MOV   A , R7   ADD   A , #1   MOV   R7, A   MOV   A , R6         ADDC  A , #0  MOV   R6 , A  CJNE  R6 , #07H , NEXT  CLR   A  MOV   R6 , A  MOV   R7 , ANEXT:  RETI  ORG   0150H    ;中斷1服務(wù)程序 LCALL  DELY mov 70h,#2 djnz 70h,next2 JBC  F0,NEXT2 SETB  F0 CLR P0.0 LCALL  DELY0 SETB   P0.0    CLR C                     MOV   A , R7   SUBB   A , #1  MOV   R7, A  MOV   A , R6   SUBB  A , #0  MOV   R6 , A  CJNE  R6 , #07H , NEXT2  CLR   A  MOV   R6 , A  MOV   R7 , ANEXT2:  RETI   ORG   0200HHEXTOBCDD:MOV  A , R6               ;由十六進(jìn)制轉(zhuǎn)化為十進(jìn)制         PUSH  ACC         MOV   A , R7         PUSH  ACC  MOV   A , R2         PUSH  ACC  CLR   A         MOV   R3 , A  MOV   R4 , A  MOV   R5 , A  MOV   R2 , #10HHB3:     MOV   A  , R7              ;將十六進(jìn)制中最高位移入進(jìn)位位中         RLC   A  MOV   R7 , A  MOV   A  , R6  RLC   A  MOV   R6 , A  MOV   A  , R5              ;每位數(shù)加上本身相當(dāng)于將這個(gè)數(shù)乘以2  ADDC  A  , R5  DA    A  MOV   R5 , A  MOV   A  , R4  ADDC  A  , R4  DA    A                   ;十進(jìn)制調(diào)整  MOV   R4 , A  MOV   A  , R3  ADDC  A  , R3  DJNZ  R2 , HB3  POP   ACC   MOV   R2 , A  POP   ACC   MOV   R7 , A  POP   ACC  MOV   R6 , A  RET  ORG   0250HDISPLAY:  MOV   R0 , #30H         MOV   A  , R5  ANL   A  , #0FH  MOV   @R0 , A  MOV   A  , R5  SWAP  A  ANL   A  , #0FH  INC   R0  MOV   @R0 , A  MOV   A  , R4  ANL   A , #0FH  INC   R0  MOV   @R0 , A  MOV   A   , R4  SWAP  A  ANL   A  , #0FH  INC   R0  MOV   @R0 , A  MOV   R0 , #30H  MOV   R2 , #11111110BAGAIN:   MOV   A  , R2         MOV   P2 , A         MOV   A  , @R0  MOV   DPTR , #TAB  MOVC  A  , @A+DPTR  MOV   P1 , A  ACALL DELAY  INC   R0  MOV   A  , R2  RL    A  MOV   R2 , A  JB    ACC.4  , AGAIN   RETTAB:     DB    03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH   ;七段碼表DELY:    MOV   R1,#80D1:        MOV    R2,#100             DJNZ   R2,$ DJNZ    R1,D1 RET DELAY:   MOV   TMOD , #01H           ;延時(shí)子程序         MOV   TL0  , #0FEH         MOV   TH0  , #0FEH  SETB  TR0WAIT:    JNB   TF0  , WAIT         CLR   TF0  CLR   TR0  RETDELY0:   MOV  R1,  #200D3:  MOV  R2,#250          DJNZ  R2,$  DJNZ  R1,D3    RET          END       該系統(tǒng)實(shí)際應(yīng)用廣泛。可用在生產(chǎn)線上產(chǎn)品數(shù)量統(tǒng)計(jì)、公交車智能計(jì)數(shù)問候(需添加語音芯片)、超市內(nèi)人數(shù)統(tǒng)計(jì)等公共場(chǎng)合。另外,添加串口通信部分便可實(shí)現(xiàn)與PC數(shù)據(jù)交換的功能。   由于,實(shí)驗(yàn)簡(jiǎn)化了,剩下不少零件和資金,所以我們又做了兩項(xiàng)其他的實(shí)驗(yàn)。

    標(biāo)簽: 單片機(jī) 紅外 控制系統(tǒng)設(shè)計(jì) 原理圖

    上傳時(shí)間: 2013-12-22

    上傳用戶:tangsiyun

  • 定時(shí)與計(jì)數(shù)技術(shù)

    第6章 定時(shí)與計(jì)數(shù)技術(shù)6.1  概  述1.定時(shí)  定義:提供的時(shí)間基準(zhǔn)。  分類:內(nèi)部定時(shí)、外部定時(shí)。2.計(jì)數(shù)  定時(shí)與計(jì)數(shù)本質(zhì)上是一致的。  計(jì)數(shù)的信號(hào)隨機(jī),定時(shí)的信號(hào)具有周期性。3.應(yīng)用分時(shí)系統(tǒng)切換任務(wù)的時(shí)間基準(zhǔn)、測(cè)速、計(jì)數(shù)6.1.2 定時(shí)方法1.軟件定時(shí)  通過軟件指令周期方法定時(shí),如執(zhí)行循環(huán)程序。  增加CPU負(fù)擔(dān),通用性差,一般用于短延時(shí)。2.不可編程硬件定時(shí)  采用中小規(guī)模IC構(gòu)成。  不增加CPU負(fù)擔(dān),成本低,定時(shí)值不可改變。3.可編程硬件定時(shí)  采用可編程計(jì)數(shù)器完成,軟件可改變計(jì)數(shù)值。  可編程定時(shí)/計(jì)數(shù)器:實(shí)質(zhì)上定時(shí)和計(jì)數(shù)本質(zhì)上都是脈沖計(jì)數(shù)器,定時(shí)計(jì)的是內(nèi)部基準(zhǔn)時(shí)鐘源產(chǎn)生的脈沖,計(jì)數(shù)是計(jì)外部脈沖。6.1.3  定時(shí)/計(jì)數(shù)器基本原理1.內(nèi)部邏輯CPU接口:  片選、低端地址線、讀寫控制線、數(shù)據(jù)線外設(shè)接口: 時(shí)鐘、控制、輸出內(nèi)部邏輯:  端口地址譯碼器、各種寄存器2.工作過程  設(shè)初值、控制(計(jì)數(shù))、輸出

    標(biāo)簽: 定時(shí) 計(jì)數(shù)技術(shù)

    上傳時(shí)間: 2013-11-07

    上傳用戶:yuzsu

  • 定時(shí)器/計(jì)數(shù)器基礎(chǔ)

    15-1.實(shí)現(xiàn)定時(shí)的方法15-2.定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)和工作原理 15-3.定時(shí)器/計(jì)數(shù)器的控制15-4.定時(shí)器/計(jì)數(shù)器的工作方式 15-5.定時(shí)器/計(jì)數(shù)器應(yīng)用 軟件定時(shí)軟件延時(shí)不占用硬件資源,但占用了CPU時(shí)間,降低了CPU的利用率。例如延時(shí)程序。采用時(shí)基電路定時(shí)例如采用555電路,外接必要的元器件(電阻和電容),即可構(gòu)成硬件定時(shí)電路。但在硬件連接好以后,定時(shí)值與定時(shí)范圍不能由軟件進(jìn)行控制和修改,即不可編程,且定時(shí)時(shí)間容易漂移。可編程定時(shí)器定時(shí)最方便的辦法是利用單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器。結(jié)合了軟件定時(shí)精確和硬件定時(shí)電路獨(dú)立的特點(diǎn)。定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)  定時(shí)器/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成。TMOD是定時(shí)器/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。

    標(biāo)簽: 定時(shí)器 計(jì)數(shù)器

    上傳時(shí)間: 2014-12-28

    上傳用戶:rnsfing

  • DS1820 C51 子程序 (一線數(shù)據(jù)傳輸)

    //芯片資料請(qǐng)到www.elecfans.com查找 //DS1820 C51 子程序//這里以11.0592M晶體為例,不同的晶體速度可能需要調(diào)整延時(shí)的時(shí)間//sbit DQ =P2^1;//根據(jù)實(shí)際情況定義端口 typedef unsigned char byte;typedef unsigned int  word; //延時(shí)void delay(word useconds){  for(;useconds>0;useconds--);} //復(fù)位byte ow_reset(void){  byte presence;  DQ = 0; //pull DQ line low  delay(29); // leave it low for 480us  DQ = 1; // allow line to return high  delay(3); // wait for presence  presence = DQ; // get presence signal  delay(25); // wait for end of timeslot  return(presence); // presence signal returned}     // 0=presence, 1 = no part //從 1-wire 總線上讀取一個(gè)字節(jié)byte read_byte(void){  byte i;  byte value = 0;  for (i=8;i>0;i--)  {    value>>=1;    DQ = 0; // pull DQ low to start timeslot    DQ = 1; // then return high    delay(1);  //for (i=0; i<3; i++);     if(DQ)value|=0x80;    delay(6); // wait for rest of timeslot  }  return(value);} //向 1-WIRE 總線上寫一個(gè)字節(jié)void write_byte(char val){  byte i;  for (i=8; i>0; i--) // writes byte, one bit at a time  {    DQ = 0; // pull DQ low to start timeslot    DQ = val&0x01;    delay(5); // hold value for remainder of timeslot    DQ = 1;    val=val/2;  }  delay(5);} //讀取溫度char Read_Temperature(void){  union{    byte c[2];    int x;  }temp;   ow_reset();  write_byte(0xCC); // Skip ROM  write_byte(0xBE); // Read Scratch Pad  temp.c[1]=read_byte();  temp.c[0]=read_byte();  ow_reset();  write_byte(0xCC); //Skip ROM  write_byte(0x44); // Start Conversion  return temp.x/2;}

    標(biāo)簽: 1820 C51 DS 程序

    上傳時(shí)間: 2013-11-03

    上傳用戶:hongmo

  • 采用18b20芯片的溫度測(cè)量C51源程序

    #include <reg51.h>#include<intrins.h> #define   BUSY1    (DQ1==0) sbit      DQ1    =  P0^4; unsigned char idata TMP; unsigned char idata TMP_d; unsigned char f; void wr_ds18_1(char dat);unsigned char rd_ds18_1(); /***************延時(shí)程序,單位us,大于10us*************/void time_delay(unsigned char time){   time=time-10;  time=time/6;  while(time!=0)time--;} /*****************************************************//*                reset ds18b20                      *//*****************************************************/void ds_reset_1(void){  unsigned char idata count=0;    DQ1=0;   time_delay(240); time_delay(240);  DQ1=1;  return;}

    標(biāo)簽: 18b20 C51 芯片 溫度測(cè)量

    上傳時(shí)間: 2013-10-29

    上傳用戶:sssnaxie

主站蜘蛛池模板: 炉霍县| 鄢陵县| 宣汉县| 景谷| 乌兰浩特市| 临沂市| 天门市| 巢湖市| 大化| 崇文区| 华宁县| 乐亭县| 沅陵县| 浮梁县| 格尔木市| 迁西县| 内江市| 尤溪县| 万源市| 隆回县| 益阳市| 祁门县| 高尔夫| 昌邑市| 潢川县| 冕宁县| 弥渡县| 界首市| 葵青区| 临西县| 龙南县| 和硕县| 怀仁县| 邹平县| 苍山县| 应城市| 关岭| 新竹县| 昌吉市| 博客| 黑山县|