freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

單片機(jī)課程設(shè)計(jì)——紅外遙控音樂播放器-文庫吧

2025-01-03 14:09 本頁面


【正文】 路如圖25所示:圖25 顯示及播放電路圖:八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器。其真值表如表21所示:表21 74HC573真值表輸入輸出LEDQLHLLLHHHLLXQ0HXXZ由真值表可知:當(dāng)=0、LE=1時(shí),輸出端數(shù)據(jù)等于輸入端數(shù)據(jù);當(dāng)=0、LE=0時(shí),輸出端保持不變;當(dāng)=1時(shí),無論LE、D為何,輸出端為高阻態(tài)。74HC573與74HC138在電路中主要用于由數(shù)碼管組成的顯示電路。在數(shù)碼管顯示時(shí),如果要維持一個(gè)數(shù)據(jù)的顯示,往往要持續(xù)的快速的刷新。尤其是在四段八位數(shù)碼管等這些要選通的顯示設(shè)備上。在人類能夠接受的刷新頻率之內(nèi),大概每三十毫秒就要刷新一次。這就大大占用了處理器的處理時(shí)間,消耗了處理器的處理能力,還浪費(fèi)了處理器的功耗。鎖存器的使用可以大大的緩解處理器在這方面的壓力。當(dāng)處理器把數(shù)據(jù)傳輸?shù)芥i存器并將其鎖存后,鎖存器的輸出引腳便會(huì)一直保持?jǐn)?shù)據(jù)狀態(tài)直到下一次鎖存新的數(shù)據(jù)為止。這樣在數(shù)碼管的顯示內(nèi)容不變之前,處理器的處理時(shí)間和I/O引腳便可以釋放。可以看出,處理器處理的時(shí)間僅限于顯示內(nèi)容發(fā)生變化的時(shí)候,這在整個(gè)顯示時(shí)間上只是非常少的一個(gè)部分。而處理器在處理完后可以有更多的時(shí)間來執(zhí)行其他的任務(wù)。這就是鎖存器數(shù)碼管顯示方面的作用:節(jié)省了寶貴的MCU時(shí)間。鎖存器就是把當(dāng)前的狀態(tài)鎖存起來,使CPU送出的數(shù)據(jù)在接口電路的輸出端保持一段時(shí)間鎖存后狀態(tài)不再發(fā)生變化,直到解除鎖定。還有一些芯片具有鎖存器,比如芯片74LS244 (3態(tài)8位緩沖器)就具有鎖存器的功能,它可以通過把一個(gè)引腳置高電平后,輸出就會(huì)保持現(xiàn)有的狀態(tài),直到把該引腳清0后才能繼續(xù)變化。 緩沖寄存器又稱緩沖器,它分輸入緩沖器和輸出緩沖器兩種。前者的作用是將外設(shè)送來的數(shù)據(jù)暫時(shí)存放,以便處理器將它取走;后者的作用是用來暫時(shí)存放處理器送往外設(shè)的數(shù)據(jù)。有了數(shù)控緩沖器,就可以使高速工作的CPU與慢速工作的外設(shè)起協(xié)調(diào)和緩沖作用,實(shí)現(xiàn)數(shù)據(jù)傳送的同步。由于緩沖器接在數(shù)據(jù)總線上,故必須具有三態(tài)輸出功能。:三通道輸入、八通道輸出譯碼器。其真值表如表22所示:表22 74HC138真值表EnableAddressOutputE3E2E1A2A1A0Y0Y1Y2Y3Y4Y5Y6Y7XXHXXXHHHHHHHHLXXXXXHHHHHHHHXHXXXXHHHHHHHHHLLLLLLHHHHHHHHLLLLHHLHHHHHHHLLLHLHHLHHHHHHLLLHHHHHLHHHHHLLHLLHHHHLHHHHLLHLHHHHHHLHHHLLHHLHHHHHHLHHLLHHHHHHHHHHL74HC138譯碼器可接受3位二進(jìn)制加權(quán)地址輸入(A0, A1和A2),并當(dāng)使能時(shí),提供8個(gè)互斥的低有效輸出(Y0至Y7)。74HC138特有3個(gè)使能輸入端:兩個(gè)低電平有效(E1和E2)和一個(gè)高電平有效(E3)。除非E1和E2置低且E3置高,否則74HC138將保持所有輸出為高。利用這種復(fù)合使能特性,74HC138充當(dāng)一個(gè)8輸出多路分配器,本設(shè)計(jì)中用于進(jìn)行數(shù)碼管的位選。:高壓大電流達(dá)林頓晶體管陣列,由七個(gè)硅NPN復(fù)合晶體管組成。電路特點(diǎn): ,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動(dòng)的系統(tǒng)。本設(shè)計(jì)中用于無源蜂鳴器的驅(qū)動(dòng),同時(shí)可以為再次擴(kuò)展時(shí)提供驅(qū)動(dòng)電路。第3章 程序設(shè)計(jì)分析紅外遙控音樂播放的功能,包括選擇播放兩首歌曲、暫停、暫停后斷點(diǎn)播放、結(jié)束播放歌曲,播放下一曲,播放上一曲,并且使用數(shù)碼管顯示紅外信號解碼后的兩位16進(jìn)制的數(shù)據(jù)碼。根據(jù)以上功能,可心得出結(jié)論:該程序設(shè)計(jì)的主要工作,即核心問題是紅外信號的解碼。因?yàn)?,無論是播放音樂的哪一個(gè)操作,還是顯示紅外信號的數(shù)據(jù)碼,都是建立在對紅外信號的正確解碼下的。首先進(jìn)行正確的紅外解碼,然后根據(jù)解碼后的鍵值進(jìn)行播放歌曲與顯示按鍵值。按照以上得出的結(jié)論,畫出程序流程圖如圖31所示:開始主函數(shù)判斷有無紅外信號收到紅外信號未收到紅外信號處理紅外信號顯示解碼鍵值播放選擇歌曲暫停與結(jié)束曲播放上一曲播放下一曲圖31 程序流程圖結(jié)合程序流程圖,可以知道:將整個(gè)程序的設(shè)計(jì)分為兩個(gè)模塊,即:紅外解碼、播放及顯示。 紅外解碼程序在進(jìn)行程序設(shè)計(jì)之前,先分析一下紅外信號的波形。每當(dāng)次按鍵按下,紅外發(fā)射器會(huì)發(fā)出一串脈沖,紅外接收器會(huì)收到這一串脈沖寬度不等的脈沖波形流,其脈沖流包括:(1)前導(dǎo)碼:第1個(gè)脈沖波形;(2)用戶碼1:第2到第9個(gè)脈沖波形;(3)用戶碼2:第10到第17個(gè)脈沖波形;(4)數(shù)據(jù)碼:第18到第25個(gè)脈沖波形;(5)數(shù)據(jù)反碼:第26到第33個(gè)脈沖波形;(6) 連續(xù)按鍵脈沖:第34和第35個(gè)脈沖為結(jié)束脈沖,在每次按鍵結(jié)束后會(huì)有兩個(gè)結(jié)束脈沖,如果一直按鍵不放的話,會(huì)一直發(fā)送連續(xù)按鍵脈沖,并可以認(rèn)為在收到10個(gè)連續(xù)按鍵脈沖后是下一個(gè)按鍵(本次設(shè)計(jì)中不考慮連續(xù)按鍵脈沖)。其碼型結(jié)構(gòu)如圖32所示:圖32 紅外信號碼型圖由圖32可知:紅外信號碼型中本次設(shè)計(jì)中要使用的部分,即是圖32中的8位鍵數(shù)據(jù)碼。下面分析具體的怎樣進(jìn)行紅外信號的解碼。紅外信號為采用脈寬調(diào)制的串行碼,、“0”;、“1”,其波形如圖33所示。圖33 紅外信號脈沖寬度圖上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,即產(chǎn)生了如圖32所示的有效碼組序列。在圖33中同樣可以看到引導(dǎo)碼脈寬為9ms,。在紅外信號經(jīng)過解碼電路后,原碼型中的高低電平進(jìn)行反轉(zhuǎn)。在得到的新碼型中,去掉第一個(gè)下降沿(引導(dǎo)碼),第二個(gè)下降沿開始即為有效碼序列,應(yīng)該進(jìn)行解碼并記錄。在本設(shè)計(jì)中,將解碼后的信號引入外部中斷1,由于是下降沿有效,故IT1=1[2]。紅外解碼源碼如下:unsigned char irtime。 //脈沖寬度時(shí)間值unsigned char startflag。//接收開始標(biāo)志unsigned char bitnum。 //碼組位數(shù)unsigned char irreceok。 //接收完成標(biāo)志unsigned char irprocok。 //解碼完成標(biāo)志unsigned char irdata[33]。//脈沖寬度數(shù)組unsigned char ircode[4]。 //解碼值數(shù)組void timer0init(void) { TMOD=0x02。 //定時(shí)器0 定時(shí)方式2 8位自動(dòng)重裝 TH0=0x00。 //初值為0 實(shí)現(xiàn)定時(shí)256us TL0=0x00。 ET0=1。 //開定時(shí)器0中斷 EA=1。 //開總中斷 TR0=1。 //啟動(dòng)定時(shí)器0}void int1init(void){ IT1=1。 //外部中斷1負(fù)跳變沿有效 EX1=1。 //開外部中斷1中斷 EA=1。 //開總中斷}void irproc(void) //解碼函數(shù) { uchar k,value,m,j。 k=1。 for(j=0。j4。j++) //4組二進(jìn)制碼 { for(m=0。m8。m++) //每組8位 { value=value1。 //由于低位在前,所以右移到正常順序 if(irdata[k]6) //irtime大于6*256us 則解碼數(shù)據(jù)為1 { value=value | 0x80。 //解碼數(shù)據(jù)為1 則高位或1 則高位置1 } k++。 //所有二進(jìn)制碼的位 } ircode[j]=value。 //每組解碼后的值存入ircode } irprocok=1。 //解碼完成}void main(){ timer0init()。 //定時(shí)器初始化 int1init()。 //外部中斷初始化 while(1) { if(irreceok) //接收完成 { irproc()。 //解碼 irreceok=0。 } if(irprocok) //解碼完成 { irwork()。 //把解碼后的數(shù)據(jù)轉(zhuǎn)成16進(jìn)制的兩位數(shù) irprocok=0。 }}}void timer0() interrupt 1{ irtime++。}void int1() interrupt 2{ if(startflag==1) { if(irtime32) //檢測9ms引導(dǎo)碼 { bitnum=0。 } irdata[bitnum]=irtime。 irtime=0。 bitnum++。 if(bitnum==33) //接收結(jié)束 { bitnum=0。 irreceok=1。 //接收完成 } } else { startflag=1。 //接收開始標(biāo)志位 irtime=0。 }} 播放及顯示程序分析音樂播放的過程,其為不同頻率聲音的組合,當(dāng)一組恰當(dāng)頻率聲音組合按照一定的先后順序與節(jié)拍播放時(shí),即可產(chǎn)生音樂。故要產(chǎn)生音頻信號,只要算出某一音頻的周期,將此周期除以2即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)此半周期時(shí)間,計(jì)時(shí)到后取反輸出,重復(fù)此過程即得到此頻率的聲音信號。,用ULN2003驅(qū)動(dòng)蜂鳴器播放音樂。其中每個(gè)音符使用兩個(gè)字節(jié)表示:低位字節(jié)(偶地址)代表音級,表示的音級為c、﹟c、d、﹟d、e、f、……a﹟ab3;高位字節(jié)(奇地址)代表音符的時(shí)值(節(jié)拍),表示拍數(shù)為1/8拍()~8拍()。程序設(shè)計(jì)中用軟件延時(shí)程序來控制音級, 與紅外解碼共用定時(shí)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1