




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
紅外光通信裝置-電賽報(bào)告紅外光通信裝置(F題)【本科組】2023年9月6日目錄摘要31.系統(tǒng)方案設(shè)計(jì)51.1設(shè)計(jì)任務(wù)51.2方案的設(shè)計(jì)與論證5紅外光通信裝置總體方案設(shè)計(jì)5單片機(jī)模塊的選擇6紅外發(fā)射接收裝置模塊的選擇7語(yǔ)音采集模塊方案的選擇72.單元硬件電路設(shè)計(jì)72.1發(fā)射部分電路的設(shè)計(jì)72.2中轉(zhuǎn)部分電路的設(shè)計(jì)82.3接收部分電路的設(shè)計(jì)83.程序設(shè)計(jì)93.1發(fā)射裝置程序流程圖93.2接收裝置程序流程圖104.系統(tǒng)測(cè)試105.理論分析與計(jì)算116.結(jié)論12參考文獻(xiàn)12附錄13摘要隨著紅外技術(shù)的發(fā)展,紅外光通信已經(jīng)成為越來(lái)越普及的無(wú)線通信方式。在本次設(shè)計(jì)作品中,紅外光通信裝置采用紅外光傳輸及無(wú)線工作機(jī)制,其組成結(jié)構(gòu)主要包括:紅外發(fā)射裝置、中繼轉(zhuǎn)發(fā)節(jié)點(diǎn)、紅外接收裝置三部分組成。紅外發(fā)射裝置主要是由聲音采集系統(tǒng)經(jīng)單片機(jī)存儲(chǔ)后發(fā)射,紅外接收裝置接收到的信息經(jīng)單片機(jī)存儲(chǔ)后再經(jīng)過(guò)D/A轉(zhuǎn)換播放。通過(guò)采用A/D,D/A轉(zhuǎn)換的方法達(dá)到了本次作品設(shè)計(jì)的目的。在電子消費(fèi)領(lǐng)域當(dāng)中,紅外產(chǎn)品的使用較為普遍,它多用于簡(jiǎn)單的近距離控制,如家電、玩具、各種抄表系統(tǒng)、工業(yè)控制、娛樂設(shè)施等領(lǐng)域。所以,其具有很強(qiáng)的現(xiàn)實(shí)意義。關(guān)鍵詞:紅外通信發(fā)射接收A/D轉(zhuǎn)換D/A轉(zhuǎn)換AbstractWiththedevelopmentofinfrared,andinfraredopticalcommunicationhasbecomemoreandmorepopularwayofwirelesscommunication.Thisdesignworks,infra-redcommunicationdevicesuseinfraredlighttransmissionandwirelessworkingmechanisms,itscompositioninclude:infraredemittingdevice,relaynode,aninfraredreceiverunitiscomposedofthreeparts.InfraredLaunchercorrespondswithsoundcollectionsystembysingle-chipcomputermemoryafterthelaunch,IRreceiverreceivestheinformationviaasingle-chipstorage,andthenafterd/aconversionplay.Throughtheuseofa/d,d/aconversionwaytoachievethepurposeoftheproductiondesign.Inthefieldofconsumerelectronics,usinginfraredproductsaremoreprevalent,itisusedforsimplecontrolatcloserange,suchashouseholdappliances,toys,meteringsystems,industrialcontrol,recreationalfacilities,andotherfields.So,ithasalotofpracticalsignificance.Keywords:InfraredCommunicationlaunchreceiveA/DconversionD/Aconversion系統(tǒng)方案設(shè)計(jì)設(shè)計(jì)任務(wù)根據(jù)命題要求,設(shè)計(jì)并制作一個(gè)紅外光通信裝置。紅外光通信裝置利用紅外發(fā)光管和紅外接收模塊作為收發(fā)器件用來(lái)定向傳輸語(yǔ)音信號(hào),傳輸距離為2m.傳輸?shù)恼Z(yǔ)音信號(hào)頻率范圍為300–3400HZ,接收的聲音應(yīng)無(wú)明顯失真。此外,增加一路數(shù)字信道,實(shí)時(shí)傳輸發(fā)射端環(huán)境溫度,并能在接收端顯示。數(shù)字信號(hào)傳輸時(shí)延不超過(guò)10s,溫度測(cè)量誤差不超過(guò)2℃,語(yǔ)音信號(hào)和數(shù)字信號(hào)能同時(shí)傳輸。同時(shí),設(shè)計(jì)并制作一個(gè)紅外光通信中繼轉(zhuǎn)發(fā)節(jié)點(diǎn),以改變通信方向=90\*Arabic90℃,延長(zhǎng)通信距離2m,中繼轉(zhuǎn)發(fā)節(jié)點(diǎn)采用5V直流單電源供電,盡量減小轉(zhuǎn)發(fā)節(jié)點(diǎn)供電電流。方案的設(shè)計(jì)與論證1.2.1紅外光通信裝置總體方案設(shè)計(jì)整套方案主要由紅外發(fā)射裝置、中繼轉(zhuǎn)發(fā)節(jié)點(diǎn)、紅外接收裝置三部分組成。先把傳輸進(jìn)紅外發(fā)射裝置的聲音經(jīng)過(guò)放大電路進(jìn)行放大,然后由STC12C5A08S2單片機(jī)自身帶有的A/D轉(zhuǎn)換功能把模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)對(duì)放大之后的語(yǔ)音進(jìn)行采集,同時(shí)把采集到的數(shù)字信號(hào)存儲(chǔ)到STC12C5A08S2單片機(jī)中。然后,經(jīng)555定時(shí)器電路產(chǎn)生38K載波,并利用三極管對(duì)單片機(jī)中存儲(chǔ)的數(shù)據(jù)和555定時(shí)器產(chǎn)生的38K載波進(jìn)行調(diào)制到達(dá)中繼轉(zhuǎn)發(fā)節(jié)點(diǎn),并由1838紅外接收頭進(jìn)行解調(diào),接著把解調(diào)后的信號(hào)編碼發(fā)送給中繼點(diǎn)上的單片機(jī)STC11F04E,并由此單片機(jī)對(duì)其數(shù)據(jù)進(jìn)行取反。再由555定時(shí)器電路產(chǎn)生38K載波,利用三極管對(duì)經(jīng)單片機(jī)取反后的數(shù)據(jù)和38K載波進(jìn)行調(diào)制,之后到達(dá)接收點(diǎn)。到達(dá)接收點(diǎn)的信號(hào)經(jīng)STC12C5A08S2進(jìn)行解碼,送給TLC5615CP芯片構(gòu)建的D/A轉(zhuǎn)換電路把數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),最后再將此模擬信號(hào)發(fā)送給耳機(jī),并由耳機(jī)播放。采用此方案的框圖如下:?jiǎn)纹瑱C(jī)發(fā)送單片機(jī)發(fā)送中繼轉(zhuǎn)發(fā)節(jié)點(diǎn)顯示溫度音頻信號(hào)A/D采集單片機(jī)存儲(chǔ)紅外接收裝置單片機(jī)存儲(chǔ)DAC播放溫度信號(hào)放大系統(tǒng)放大系統(tǒng)溫度、音頻1.2.2單片機(jī)模塊的選擇方案=1\*CHINESENUM3一:傳統(tǒng)51系列是的單片機(jī),受其結(jié)構(gòu)本身的限制很大,尤其模擬功能部件的增加更顯困難,而且運(yùn)行速度很慢,功耗比較高,抗干擾能力也不是很強(qiáng)。方案二:STM32系列具有一流的外設(shè)、低功耗、最大的集成度、簡(jiǎn)單的結(jié)構(gòu)和易用的工具,是ARM公司的高性能Cortex-M3內(nèi)核。但我們對(duì)此系列的單片機(jī)的編程操作不太熟練。方案三:宏晶芯片STC12C5A08S2是增強(qiáng)型的51系統(tǒng)單片機(jī),具有一個(gè)時(shí)鐘,高速、高可靠、寬電壓、增加第二復(fù)位功能腳和外部掉電檢測(cè)電路,采用低功耗設(shè)計(jì),最重要的是其內(nèi)部有AD外設(shè)和45K的EEPROM,我們可由此進(jìn)行模數(shù)轉(zhuǎn)換和信息存儲(chǔ)。STC11F04E單片機(jī)超強(qiáng)抗干擾,超強(qiáng)抗靜電,速度快,輸入/輸出口多,超低功耗,在系統(tǒng)可編程,無(wú)需編程器,無(wú)需仿真器,可遠(yuǎn)程升級(jí)。由于對(duì)于中繼點(diǎn)低功耗的要求,所以把此單片機(jī)用于中繼轉(zhuǎn)發(fā)節(jié)點(diǎn)?;谖覀儗?duì)各種系列單片機(jī)運(yùn)用的熟練程度和此次作品中所要實(shí)現(xiàn)的各項(xiàng)基本功能,我們決定在此方案設(shè)計(jì)中采用方案三。1.2.3紅外發(fā)射接收裝置模塊的選擇方案=1\*CHINESENUM3一:紅外模擬信號(hào)。這種方法速度快,能達(dá)到實(shí)時(shí)傳輸效果。但是,在傳輸過(guò)程中,噪音比較大,容易受干擾。而且,傳輸?shù)木嚯x也比較近。方案=2\*CHINESENUM3二:紅外數(shù)字信號(hào)。將要發(fā)射出去的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),將數(shù)字信號(hào)送給紅外發(fā)射電路,經(jīng)該電路的調(diào)制轉(zhuǎn)變成紅外光信號(hào)在空中傳輸,到達(dá)中繼轉(zhuǎn)發(fā)節(jié)點(diǎn)后,轉(zhuǎn)發(fā)到紅外接收電路,接收電路收到該紅外光信號(hào),經(jīng)過(guò)該電路的解調(diào),將此紅外光信號(hào)還原成可被單片機(jī)或其他處理系統(tǒng)處理的信號(hào),由單片機(jī)或其他處理系統(tǒng)內(nèi)部處理得到原來(lái)的數(shù)據(jù)編碼。比較方案=1\*CHINESENUM3一和方案二,又考慮到我們對(duì)模擬部分的知識(shí)和數(shù)字部分的知識(shí)的掌握程度,我們決定選擇方案二。1.2.4語(yǔ)音采集模塊方案的選擇方案=1\*CHINESENUM3一:采用語(yǔ)音編解碼芯片。這種方法失真度小,信噪比較低,數(shù)據(jù)量大。但在數(shù)字圖像處理中,由于數(shù)據(jù)量大,算法難度高,因此實(shí)時(shí)性成為技術(shù)難點(diǎn)之一。而且,在傳輸過(guò)程中所運(yùn)用的1838紅外接收頭傳輸信息速度慢,而語(yǔ)音編碼解碼芯片數(shù)據(jù)量過(guò)大,與后續(xù)裝置不協(xié)調(diào)。方案二:采用A/D,D/A轉(zhuǎn)換裝置。先把模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),再經(jīng)中繼轉(zhuǎn)換節(jié)點(diǎn)在通信協(xié)議的控制下把數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào)。比較兩種方案,并基于現(xiàn)實(shí)的情況,此模塊選擇方案二。單元硬件電路設(shè)計(jì)發(fā)射部分電路的設(shè)計(jì)發(fā)射部分主要由雙運(yùn)放NE5532組成的放大器、STC12C5A08S2單片機(jī)和NE555定時(shí)器構(gòu)建的電路組成。其電路圖如圖1:圖SEQ圖\*ARABIC1中轉(zhuǎn)部分電路的設(shè)計(jì)中轉(zhuǎn)部分主要由1838紅外接收頭、STC11F04E單片機(jī)NE555定時(shí)器、三極管等搭建的電路組成,其電路圖如圖2:圖SEQ圖\*ARABIC2接收部分電路的設(shè)計(jì)接收部分主要由1838紅外接收頭、STC12C5A08S2單片機(jī)、TLC5615數(shù)模轉(zhuǎn)換器、TL431可控精密穩(wěn)壓源等搭建的電路組成。其電路圖如圖3:圖SEQ圖\*ARABIC33程序設(shè)計(jì)系統(tǒng)程序主要由發(fā)射裝置程序和接收裝置程序兩部分組成。系統(tǒng)程序流程圖如下所示。開始3.1發(fā)射裝置程序流程圖開始Y讀存儲(chǔ)結(jié)束?結(jié)束初始化采集信號(hào)單片機(jī)存儲(chǔ)存儲(chǔ)結(jié)束?讀存儲(chǔ)發(fā)送YNN結(jié)束Y讀存儲(chǔ)結(jié)束?NNYNY讀存儲(chǔ)結(jié)束?結(jié)束初始化采集信號(hào)單片機(jī)存儲(chǔ)存儲(chǔ)結(jié)束?讀存儲(chǔ)發(fā)送YNN結(jié)束Y讀存儲(chǔ)結(jié)束?NNYN3.2接收裝置程序流程圖NYNY結(jié)束讀存儲(chǔ)D/A轉(zhuǎn)換結(jié)束?接收完成?單片機(jī)存儲(chǔ)接收初始化開始NYNYNYNY結(jié)束讀存儲(chǔ)D/A轉(zhuǎn)換結(jié)束?接收完成?單片機(jī)存儲(chǔ)接收初始化開始NYNY4系統(tǒng)測(cè)試傳輸距離測(cè)試:傳輸距離傳輸情況1m良好2m良好3m良好4m良好中繼點(diǎn)電流大?。?00MA左右溫度誤差:1°C無(wú)發(fā)射信號(hào)時(shí)無(wú)噪音800HZ信號(hào)輸出0.3V有信號(hào)時(shí)8個(gè)LED閃爍,無(wú)信號(hào)時(shí)LED不閃爍5 理論分析與計(jì)算本系統(tǒng)使用數(shù)字信號(hào)傳輸,編碼規(guī)則自定,具體如下:每串?dāng)?shù)據(jù)有1.5MS高電平,2MS低電平的引導(dǎo)碼高電平時(shí)間0.5低電平時(shí)間0.6MS代表二進(jìn)制數(shù)0高電平時(shí)間1.0MS代表二進(jìn)制數(shù)1傳輸波形如圖:波形SEQ波形\*ARABIC1波形SEQ波形\*ARABIC2波形SEQ波形\*ARABIC36結(jié)論本系統(tǒng)功能上和參數(shù)上都達(dá)到了題目的要求,基本上完成了題目的各項(xiàng)設(shè)計(jì)。并按照要求完成了其發(fā)揮部分,可以精確的顯示溫度,也可以利用中繼點(diǎn)進(jìn)行轉(zhuǎn)接,但是聲音信號(hào)傳輸延時(shí)較大。優(yōu)點(diǎn):本系統(tǒng)采用數(shù)字信號(hào)傳輸數(shù)據(jù),能夠最大限度的減少干擾且傳輸距離較長(zhǎng),適用于信息量較少、環(huán)境干擾較大的情況傳輸數(shù)據(jù)。本系統(tǒng)的不足:由于紅外數(shù)字信號(hào)傳輸使用38K載波頻率,很大程度上限制了數(shù)據(jù)傳輸?shù)乃俣?,所以本系統(tǒng)不適合音頻等數(shù)據(jù)量較大的數(shù)據(jù)傳輸。所以本系統(tǒng)還有較大的提升空間,如聲音信號(hào)使用模擬信號(hào)傳輸、溫度信號(hào)使用數(shù)字信號(hào)傳輸能達(dá)到聲音信號(hào)和溫度信號(hào)實(shí)時(shí)傳輸。參考文獻(xiàn)[1]閻石.數(shù)字電子技術(shù)基礎(chǔ)(第五版)[M].北京:高等教育出版社,2006.[2]童詩(shī)白,華成英.模擬電子技術(shù)基礎(chǔ)(第四版)[M].北京:高等教育出版社,2006.[3]黃智偉.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽技能訓(xùn)練(第2版)[M].北京:北京航空航天大學(xué),2023.[4]代萬(wàn)輝,陳松方.全國(guó)電子設(shè)計(jì)大賽培訓(xùn)寶典[M].北京:北京航空航天大學(xué),2023.[5]求是科技.8051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)[M].北京:人民郵電出版社,2006.[6]楊欣,王玉鳳,劉湘黔.電子設(shè)計(jì)從零開始[M].北京:清華大學(xué)出版社2005.附錄:源程序//*************************sendmessage**************************//#include"STC12C5A60S2.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedchartypedefunsignedcharBYTE;typedefunsignedintWORD;ucharcodestr1[]={0x28,0xA6,0x4A,0x0E,0x05,0x00,0x00,0x84};//ROM1ucharcodestr2[]={0x28,0xA5,0x86,0x40,0x04,0x00,0x00,0x80};//ROM2sbitD1=P3^7;sbitDQ=P3^3;/*DefineISP/IAP/EEPROMcommand*/#defineCMD_IDLE0//Stand-By#defineCMD_READ1//Byte-Read#defineCMD_PROGRAM2//Byte-Program#defineCMD_ERASE3//Sector-Erase/*DefineISP/IAP/EEPROMoperationconstforIAP_CONTR*/#defineENABLE_IAP0x80//ifSYSCLK<30MHzsfrADC_DATA=0XBD;sfrADC_LOW=0XBE;sbitCS=P2^0;sbitSCLK=P2^1;sbitDIN=P2^2;sbitleft=P1^0;doublej;ucharflag,t;voidDelay(BYTEn);voidIapIdle();BYTEIapReadByte(WORDaddr);voidIapProgramByte(WORDaddr,BYTEdat);voidIapEraseSector(WORDaddr);uchartvalue;//溫度值voidDelay999ms() //@30.000MHz{unsignedchari,j,k; _nop_(); _nop_();i=114; j=226; k=60;do {do {while(--k); }while(--j); }while(--i);}/******************************ds1820*********************/voidDelay1us() //@30.000MHz{unsignedchari;i=5;while(--i);}voidDelay10us() //@30.000MHz{unsignedchari; _nop_(); _nop_();i=72;while(--i);}voidDelay48us() //@30.000MHz{unsignedchari,j;i=2; j=99;do {while(--j); }while(--i);}voidDelay700us() //@30.000MHz{unsignedchari,j;i=21; j=106;do {while(--j); }while(--i);}voidDelay1ms() //@30.000MHz{unsignedchari,j;i=30; j=43;do {while(--j); }while(--i);}voidrst_Ds18b20(){ DQ=1;Delay1us(); DQ=0; Delay700us();//延遲700us DQ=1;Delay1ms();}voidwriteDs18b20(uchardate)//寫數(shù)據(jù){uchari; DQ=1;Delay1us();for(i=0;i<8;i++) { DQ=0;Delay10us(); DQ=date&0x01;Delay48us(); DQ=1;date>>=1;Delay1us(); }}ucharreadDs18b20()//讀數(shù)據(jù){uchari,date; DQ=1; _nop_();for(i=0;i<8;i++) { DQ=0;Delay10us(); DQ=1;Delay1us();Delay1us();date>>=1;if(DQ==1)date=date+0x80;Delay48us(); }returndate;}voidMatchromDs18b20(uchara) //匹配ROM{charj; writeDs18b20(0x55); //發(fā)送匹配ROM命令if(a==1) {for(j=0;j<8;j++) writeDs18b20(str1[j]); //發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié) }if(a==2) {for(j=0;j<8;j++) writeDs18b20(str2[j]); //發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié) }}uintread_temp(ucharz)/*讀取溫度值并轉(zhuǎn)換*/{uchara,b; rst_Ds18b20();if(z==1) MatchromDs18b20(1); //匹配ROM1if(z==2) MatchromDs18b20(2); //匹配ROM 2 writeDs18b20(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*///delay(1000); rst_Ds18b20();if(z==1) MatchromDs18b20(1); //匹配ROM1if(z==2) MatchromDs18b20(2); //匹配ROM2 writeDs18b20(0xbe);//*讀取溫度*/ a=readDs18b20(); b=readDs18b20();tvalue=((a>>4)|(b<<4));return(tvalue);}voidDAC(ucharw) //轉(zhuǎn)換,將數(shù)據(jù)寫入芯片{inta;CS=0;for(a=0;a<12;a++){SCLK=1; _nop_(); _nop_();if((w&0x80)!=0)//判斷寫入數(shù)據(jù)從第一位開始,看是否有數(shù)據(jù)輸入 DIN=1;//將信號(hào)1寫入芯片中else DIN=0;//將0寫入芯片中 _nop_(); _nop_(); SCLK=0;//開啟下一個(gè)寫入數(shù)據(jù) w<<=1;} CS=1;//關(guān)閉芯片}voidTimer1Init(void) //142微秒@24.000MHz{ AUXR&=0xBF; //定時(shí)器時(shí)鐘12T模式 TMOD&=0x0F; //設(shè)置定時(shí)器模式 TMOD|=0x10; //設(shè)置定時(shí)器模式 TL1=0x7A; //設(shè)置定時(shí)初值 TH1=0xFE; //設(shè)置定時(shí)初值 TF1=0; //清除TF1標(biāo)志 TR1=1; //定時(shí)器1開始計(jì)時(shí)}/*----------------------------initializationfunction----------------------------*/voidinit(){ EA=1;//開總中斷 ET1=1; //開定時(shí)器1中斷 PT1=1; //定時(shí)器1中斷設(shè)為高優(yōu)先級(jí) P1M0=0XFF; P1M1=0; P1ASF=0X01;//設(shè)置P1.0作為輸入Timer1Init();}/*----------------------------Softwaredelayfunction----------------------------*/voidDelay7us() //@30.000MHz{unsignedchari;i=50;while(--i);}/*----------------------------Softwaredelayfunction----------------------------*/voidDelay(BYTEn){WORDx;while(n--){x=0;while(++x);}}/*----------------------------DisableISP/IAP/EEPROMfunctionMakeMCUinasafestate----------------------------*/voidIapIdle(){IAP_CONTR=0;//CloseIAPfunctionIAP_CMD=0;//ClearcommandtostandbyIAP_TRIG=0;//CleartriggerregisterIAP_ADDRH=0x80;//Dataptrpointtonon-EEPROMareaIAP_ADDRL=0;//ClearIAPaddresstopreventmisuse}/*----------------------------ReadonebytefromISP/IAP/EEPROMareaInput:addr(ISP/IAP/EEPROMaddress)Output:Flashdata----------------------------*/BYTEIapReadByte(WORDaddr){BYTEdat;//DatabufferIAP_CONTR=ENABLE_IAP;//OpenIAPfunction,andsetwaittimeIAP_CMD=CMD_READ;//SetISP/IAP/EEPROMREADcommandIAP_ADDRL=addr;//SetISP/IAP/EEPROMaddresslowIAP_ADDRH=addr>>8;//SetISP/IAP/EEPROMaddresshighIAP_TRIG=0x5a;//Sendtriggercommand1(0x5a)IAP_TRIG=0xa5;//Sendtriggercommand2(0xa5)_nop_();//MCUwillholdhereuntilISP/IAP/EEPROMoperationcompletedat=IAP_DATA;//ReadISP/IAP/EEPROMdataIapIdle();//CloseISP/IAP/EEPROMfunctionreturndat;//ReturnFlashdata}/*----------------------------ProgramonebytetoISP/IAP/EEPROMareaInput:addr(ISP/IAP/EEPROMaddress)dat(ISP/IAP/EEPROMdata)Output:-----------------------------*/voidIapProgramByte(WORDaddr,BYTEdat){IAP_CONTR=ENABLE_IAP;//OpenIAPfunction,andsetwaittimeIAP_CMD=CMD_PROGRAM;//SetISP/IAP/EEPROMPROGRAMcommandIAP_ADDRL=addr;//SetISP/IAP/EEPROMaddresslowIAP_ADDRH=addr>>8;//SetISP/IAP/EEPROMaddresshighIAP_DATA=dat;//WriteISP/IAP/EEPROMdataIAP_TRIG=0x5a;//Sendtriggercommand1(0x5a)IAP_TRIG=0xa5;//Sendtriggercommand2(0xa5)_nop_();//MCUwillholdhereuntilISP/IAP/EEPROMoperationcompleteIapIdle();}/*----------------------------EraseonesectorareaInput:addr(ISP/IAP/EEPROMaddress)Output:-----------------------------*/voidIapEraseSector(WORDaddr){IAP_CONTR=ENABLE_IAP;//OpenIAPfunction,andsetwaittimeIAP_CMD=CMD_ERASE;//SetISP/IAP/EEPROMERASEcommandIAP_ADDRL=addr;//SetISP/IAP/EEPROMaddresslowIAP_ADDRH=addr>>8;//SetISP/IAP/EEPROMaddresshighIAP_TRIG=0x5a;//Sendtriggercommand1(0x5a)IAP_TRIG=0xa5;//Sendtriggercommand2(0xa5)_nop_();//MCUwillholdhereuntilISP/IAP/EEPROMoperationcompleteIapIdle();}voidDelay100us() //@30.000MHz{unsignedchari,j;i=3; j=232;do {while(--j); }while(--i);}/*----------------------------擦除eeprom----------------------------*/voidEraseeeprom(){uinti;doublea; a=0;for(i=0;i<90;i++) { a=512+a;IapEraseSector(a);//Erasecurrentsector }}/***********************************************sendmess**************************************//**********************************************************************************************//***************************************發(fā)送紅外數(shù)據(jù)**************************/voidsend(uchardate){uchari;/*************發(fā)送驗(yàn)證信息*************/ TR0=0;TH0=0xF1;TL0=0x5A; //裝入初值設(shè)置波延時(shí)為1.5ms D1=1; //發(fā)送1.5ms的高電平 TR0=1; //啟動(dòng)定時(shí)器0while(!TF0); //等待 TF0=0;TH0=0xEC;TL0=0x78; D1=0; //發(fā)送2ms的低電平while(!TF0); //等待 TF0=0;/**************發(fā)送數(shù)據(jù)****************/for(i=0;i<8;i++) { TL0=0x1E; //設(shè)置定時(shí)初值0.5MS TH0=0xFB; //設(shè)置定時(shí)初值 TR0=1; D1=1;while(!TF0); TF0=0;if(date&0x01) { TL0=0x3C; //設(shè)置定時(shí)初值1MS發(fā)1 TH0=0xF6; //設(shè)置定時(shí)初值 }else { TL0=0x24; //設(shè)置定時(shí)初值0.6MS發(fā)0 TH0=0xFA; //設(shè)置定時(shí)初值TH0=0xFD; //0為窄的低電平,持續(xù)時(shí)間0.6ms } D1=0;while(!TF0); //等待 TF0=0;date=date>>1; } TL0=0x1E; //設(shè)置定時(shí)初值0.5MS TH0=0xFB; //設(shè)置定時(shí)初值 TR0=1; D1=1;while(!TF0); TF0=0; D1=0;/************************************結(jié)尾**************************/ TH0=0x0EC;//延時(shí)2ms TL0=0x078; TR0=1;while(!TF0); TF0=0; TR0=0;}voidsendtem(uchardate){uchari;/*************發(fā)送驗(yàn)證信息*************/ TR0=0;TH0=0xF1;TL0=0x5A; //裝入初值設(shè)置波延時(shí)為1.5ms D1=1; //發(fā)送1.5ms的高電平 TR0=1; //啟動(dòng)定時(shí)器0while(!TF0); //等待 TF0=0;TH0=0xE2;TL0=0xB4; D1=0; //發(fā)送3ms的低電平while(!TF0); //等待 TF0=0;/**************發(fā)送數(shù)據(jù)****************/for(i=0;i<8;i++) { TL0=0x1E; //設(shè)置定時(shí)初值0.5MS TH0=0xFB; //設(shè)置定時(shí)初值 TR0=1; D1=1;while(!TF0); TF0=0;if(date&0x01) { TL0=0x3C; //設(shè)置定時(shí)初值1MS發(fā)1 TH0=0xF6; //設(shè)置定時(shí)初值 }else { TL0=0x24; //設(shè)置定時(shí)初值0.6MS發(fā)0 TH0=0xFA; //設(shè)置定時(shí)初值TH0=0xFD; //0為窄的低電平,持續(xù)時(shí)間0.6ms } D1=0;while(!TF0); //等待 TF0=0;date=date>>1; } TL0=0x1E; //設(shè)置定時(shí)初值0.5MS TH0=0xFB; //設(shè)置定時(shí)初值 TR0=1; D1=1;while(!TF0); TF0=0; D1=0;/************************************結(jié)尾**************************/ TH0=0x0EC;//延時(shí)2ms TL0=0x078; TR0=1;while(!TF0); TF0=0; TR0=0;}/*********************************************main******************************************************/voidmain(){read_temp(2);Delay999ms();/*******************sendinit**********************/ AUXR&=0x7F; //定時(shí)器時(shí)鐘12T模式 TMOD&=0xF0; //設(shè)置定時(shí)器模式 TMOD|=0x01; //設(shè)置定時(shí)器模式 TR0=0;/**************************************************/sendtem(read_temp(2));Eraseeeprom();//擦除EEPROMflag=0; j=t=0;init();while(1);}voidtimer1()interrupt3{//send(0x55); TL1=0x7A; //設(shè)置定時(shí)初值 TH1=0xFE; //設(shè)置定時(shí)初值 ADC_CONTR=0xe8;Delay7us(); //@24.000MHzif(flag==0) {IapProgramByte(j,ADC_DATA);////寫EEPROMj++;if(j==46079) {flag=1; j=0; } } ADC_CONTR=0x80;if(flag==1) {while(j!=46079) {send(IapReadByte(j));j++;t++;if((t%500)==0) { t=0;sendtem(read_temp(2)); } }while(1);// DAC(IapReadByte(j));//讀EEPROM并DAC轉(zhuǎn)化/* j++;if(j==46079) {Eraseeeprom();//擦除EEPROM*/flag=0; j=0; }}------------------------------------------------------------------------------------------------------------------------------------//*************************receive******************************//#include"STC12C5A60S2.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedchartypedefunsignedcharBYTE;typedefunsignedintWORD;ucharcodestr[]="Temperature";/*DefineISP/IAP/EEPROMcommand*/#defineCMD_IDLE0//Stand-By#defineCMD_READ1//Byte-Read#defineCMD_PROGRAM2//Byte-Program#defineCMD_ERASE3//Sector-Erase/*DefineISP/IAP/EEPROMoperationconstforIAP_CONTR*/#defineENABLE_IAP0x80//ifSYSCLK<30MHzsbitCS=P2^0;sbitSCLK=P2^1;sbitDIN=P2^2;sbitre=P3^2;sbittest=P0^0;sbittest1=P0^1;sbitlcden=P3^4;sbitlcdrs=P3^5;doubleLowTime,HighTime;//儲(chǔ)存高、低電平的寬度0-65535ucharmess;uchartem;doublej;ucharflag,ge,shi;voidDelay(BYTEn);voidIapIdle();BYTEIapReadByte(WORDaddr);voidIapProgramByte(WORDaddr,BYTEdat);voidIapEraseSector(WORDaddr);/*************************lcd1602程序**************************/voidDelay4ms() //@30.000MHz{unsignedchari,j;i=117; j=184;do {while(--j); }while(--i);}voidwriteCommend_Lcd(ucharcom)//寫指令{lcdrs=0; P0=com;lcden=1;Delay4ms();lcden=0;Delay4ms();}voidwriteData_Lcd(uchardate)//寫數(shù)據(jù){lcdrs=1; P0=date;lcden=1;Delay4ms();lcden=0;Delay4ms();}voidinit_Lcd()//初始化設(shè)置1602{uchari;lcden=0;writeCommend_Lcd(0x38);writeCommend_Lcd(0x0c);writeCommend_Lcd(0x06);writeCommend_Lcd(0x01);writeCommend_Lcd(0x80);for(i=0;i<11;i++) {writeData_Lcd(str[i]); }writeCommend_Lcd(0x80+14);writeData_Lcd(0xdf);writeData_Lcd(0x43);}voiddisplay(uchardate){shi=date/10;ge=date%10;writeCommend_Lcd(0x80+12);writeData_Lcd(0x30+shi);writeData_Lcd(0x30+ge);}/***********************************************DAC***********************************************//*************************************************************************************************/voidDelay120us() //@30.000MHz{unsignedchari,j;i=4; j=125;do {while(--j); }while(--i);}voidDAC(ucharw) //轉(zhuǎn)換,將數(shù)據(jù)寫入芯片{inta;CS=0;for(a=0;a<12;a++){SCLK=1; _nop_(); _nop_();if((w&0x80)!=0)//判斷寫入數(shù)據(jù)從第一位開始,看是否有數(shù)據(jù)輸入 DIN=1;//將信號(hào)1寫入芯片中else DIN=0;//將0寫入芯片中 _nop_(); _nop_(); SCLK=0;//開啟下一個(gè)寫入數(shù)據(jù) w<<=1;} CS=1;//關(guān)閉芯片}/**********************************************************EEPROM*********************************//*************************************************************************************************//*----------------------------DisableISP/IAP/EEPROMfunctionMakeMCUinasafestate----------------------------*/voidIapIdle(){IAP_CONTR=0;//CloseIAPfunctionIAP_CMD=0;//ClearcommandtostandbyIAP_TRIG=0;//CleartriggerregisterIAP_ADDRH=0x80;//Dataptrpointtonon-EEPROMareaIAP_ADDRL=0;//ClearIAPaddresstopreventmisuse}/*----------------------------ReadonebytefromISP/IAP/EEPROMareaInput:addr(ISP/IAP/EEPROMaddress)Output:Flashdata----------------------------*/BYTEIapReadByte(WORDaddr){BYTEdat;//DatabufferIAP_CONTR=ENABLE_IAP;//OpenIAPfunction,andsetwaittimeIAP_CMD=CMD_READ;//SetISP/IAP/EEPROMREADcommandIAP_ADDRL=addr;//SetISP/IAP/EEPROMaddresslowIAP_ADDRH=addr>>8;//SetISP/IAP/EEPROMaddresshighIAP_TRIG=0x5a;//Sendtriggercommand1(0x5a)IAP_TRIG=0xa5;//Sendtriggercommand2(0xa5)_nop_();//MCUwillholdhereuntilISP/IAP/EEPROMoperationcompletedat=IAP_DATA;//ReadISP/IAP/EEPROMdataIapIdle();//CloseISP/IAP/EEPROMfunctionreturndat;//ReturnFlashdata}/*----------------------------ProgramonebytetoISP/IAP/EEPROMareaInput:addr(ISP/IAP/EEPROMaddress)dat(ISP/IAP/EEPROMdata)Output:-----------------------------*/voidIapProgramByte(WORDaddr,BYTEdat){IAP_CONTR=ENABLE_IAP;//OpenIAPfunction,andsetwaittimeIAP_CMD=CMD_PROGRAM;//SetISP/IAP/EEPROMPROGRAMcommandIAP_ADDRL=addr;//SetISP/IAP/EEPROMaddresslowIAP_ADDRH=addr>>8;//SetISP/IAP/EEPROMaddresshighIAP_DATA=dat;//WriteISP/IAP/EEPROMdataIAP_TRIG=0x5a;//Sendtriggercommand1(0x5a)IAP_TRIG=0xa5;//Sendtriggercommand2(0xa5)_nop_();//MCUwillholdhereuntilISP/IAP/EEPROMoperationcompleteIapIdle();}/*----------------------------EraseonesectorareaInput:addr(ISP/IAP/EEPROMaddress)Output:-----------------------------*/voidIapEraseSector(WORDaddr){IAP_CONTR=ENABLE_IAP;//OpenIAPfunction,andsetwaittimeIAP_CMD=CMD_ERASE;//SetISP/IAP/EEPROMERASEcommandIAP_ADDRL=addr;//SetISP/IAP/EEPROMaddresslowIAP_ADDRH=addr>>8;//SetISP/IAP/EEPROMaddresshighIAP_TRIG=0x5a;//Sendtriggercommand1(0x5a)IAP_TRIG=0xa5;//Sendtriggercommand2(0xa5)_nop_();//MCUwillholdhereuntilISP/IAP/EEPROMoperationcompleteIapIdle();}/*----------------------------擦除eeprom----------------------------*/voidEraseeeprom(){uinti;doublea; a=0;for(i=0;i<90;i++) { a=512+a;IapEraseSector(a);//Erasecurrentsector }}/**********************************
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 化肥銷售合作合同范本
- 包裝稻草出售合同范本
- 勞務(wù)代理用工合同范本
- 單位汽車借用合同范本
- 代理機(jī)構(gòu)中標(biāo)合同范本
- 義工合同范本
- 個(gè)人對(duì)公勞務(wù)合同范本
- 與人投資飯店合同范本
- 醫(yī)院供氧安裝合同范例
- 一方婚前貸款買房合同范本
- 護(hù)士臨床護(hù)理組長(zhǎng)
- 土建、裝飾、維修改造等零星工程施工組織設(shè)計(jì)技術(shù)標(biāo)
- 高速公路養(yǎng)護(hù)作業(yè)安全培訓(xùn)內(nèi)容
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
- 《大白菜種植栽培技》課件
- 北京工業(yè)大學(xué)《數(shù)據(jù)挖掘》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年物聯(lián)網(wǎng)安裝調(diào)試員(中級(jí)工)職業(yè)資格鑒定考試題庫(kù)(含答案)
- 標(biāo)準(zhǔn)化機(jī)房改造方案
- 珠海市第三人民醫(yī)院中醫(yī)智能臨床輔助診療系統(tǒng)建設(shè)方案
- 早產(chǎn)臨床診斷與治療指南
- 工程簽證單完整版
評(píng)論
0/150
提交評(píng)論