版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、2015年高校聯(lián)盟電子制作大賽題目(數(shù)字類)技術(shù)報告隊長:黃文杰 學(xué)號:2014212652學(xué)院:自動化學(xué)院隊員:李嘉偉學(xué)號:2014212650學(xué)院:自動化學(xué)院唐泓學(xué)號:2014212640學(xué)院:自動化學(xué)院 題目名稱:簡易紅外光數(shù)字通信裝置1、 設(shè)計題目:單片機應(yīng)用系統(tǒng)設(shè)計基于單片機的簡易紅外光數(shù)字通信裝置2、 總體要求:本次大賽設(shè)計內(nèi)容從主辦方所給的題目出發(fā),參賽者應(yīng)了解單片機實際的應(yīng)用系統(tǒng),并自學(xué)紅外信號編碼,弄清結(jié)構(gòu)和功能,結(jié)合單片機課程知識及其他相關(guān)課程知識,充分發(fā)揮自己的想象力和創(chuàng)造力,實現(xiàn)主辦方題目要求并適當(dāng)發(fā)揮,團隊合作完成本次比賽。3、 具體要求:1) 確定應(yīng)用系統(tǒng)功能參數(shù)2
2、) 設(shè)計合理的電路原理圖3) Proteus仿真原理圖4) 制作電路板并檢測5) 設(shè)計程序6) 電路板調(diào)試運行7) 技術(shù)報告單片機技術(shù)報告一、 項目簡介單片機被廣泛應(yīng)用于儀器儀表、工業(yè)自動控制、家用電器、醫(yī)用設(shè)備、辦公自動化設(shè)備、安全監(jiān)控等領(lǐng)域,涵蓋了人類生活的方方面面。二、 系統(tǒng)功能描述這是一款基于STC89C52RC單片機的簡易紅外光數(shù)字通信裝置。它可以分為六個部分:(1) 紅外功能,可以紅外傳送數(shù)據(jù)(2) 音階功能,在發(fā)射板上按動七個音階,在接收板上可以響出duo rai mi fa suo nai xi 七個音階(3) 溫度檢測,在發(fā)射板上可以檢測溫度,在接收板上可以顯示溫度,每隔0.
3、5秒更新一次溫度。三、 設(shè)計思路 紅外模塊設(shè)計思路:1:對輸入的數(shù)據(jù)進(jìn)行編碼。 2:對編碼進(jìn)行脈沖調(diào)制。 3:信號放大后,通過發(fā)射管發(fā)送38khz信號。 4:接收信號,進(jìn)行解碼。 5:讓 51 對信號進(jìn)行處理(顯示,統(tǒng)計,分析)。音階模塊設(shè)計思路 :1:計算音階響應(yīng)相應(yīng)延時2:建立延時數(shù)組,按鍵控制取數(shù)組里的值。3:用延時控制發(fā)出不同聲音溫度模塊設(shè)計:1:溫度測出數(shù)據(jù),讀取溫度感應(yīng)數(shù)據(jù),計算成十進(jìn)制數(shù)。2:在數(shù)碼管上顯示十進(jìn)制數(shù)3:延時控制發(fā)射更新溫度數(shù)據(jù)四、 程序部分1. 紅外部分,紅外部分分為,發(fā)射和接收部分,發(fā)射部分,通過定時器0產(chǎn)生38k載波,通過定時器1發(fā)送信號。接收部分,通過外部中
4、斷(下降沿觸發(fā))接收信號,通過定時器計算兩個下降沿之間的時間來確定收到的是0還是1。2. 音階部分:按鍵17,每次按鍵按下,發(fā)送控制數(shù)據(jù),控制接收蜂鳴器根據(jù)不同頻率發(fā)出不同聲音。3. 溫度部分:發(fā)射端溫度傳感器,測出溫度,通過計算得到溫度具體數(shù)值,發(fā)送數(shù)據(jù),接收端,根據(jù)接收的數(shù)據(jù),顯示在數(shù)碼管上。#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar m,inform;uint temp; / variable of temperature / sign of the result pos
5、itive or negativesbit DS=P03;sbit IR_OUT=P11;sbit key1=P24;sbit key2=P25;sbit key3=P26;sbit key4=P27;sbit key5=P20;sbit key6=P21;sbit key7=P22;sbit key8=P23;/*-三個延遲函數(shù)的定義-*/void delay_ms(uint ms) uint i,j; for(i=0;i<120;i+) for(j=0;j<ms;j+); void delay(uint count) /delay uint i; while(count) i=
6、200; while(i>0) i-; count-; /*溫度傳感器函數(shù)定義*/void dsreset(void) /send reset and initialization command uint i; DS=0; i=103; while(i>0)i-; DS=1; i=4; while(i>0)i-;/-bit tmpreadbit(void) /read a bit uint i; bit dat; DS=0;i+; /i+ for delay DS=1;i+;i+; dat=DS; i=8;while(i>0)i-; return (dat);/-uc
7、har tmpread(void) /read a byte date uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tmpreadbit(); dat=(j<<7)|(dat>>1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里 return(dat);/-void tmpwritebyte(uchar dat) /write a byte to ds18b20 uint i; uchar j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat&g
8、t;>1; if(testb) /write 1 DS=0; i+;i+; DS=1; i=8;while(i>0)i-; else DS=0; /write 0 i=8;while(i>0)i-; DS=1; i+;i+; void tmpchange(void) /DS18B20 begin change dsreset(); delay(1); tmpwritebyte(0xcc); / address all drivers on bus tmpwritebyte(0x44); / initiates a single temperature conversionui
9、nt tmp() /get the temperature float tt; uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); temp=b; temp<<=8; /two byte compose a int variable temp=temp|a; tt=temp*0.0625; temp=tt*10+0.5; return temp;void readrom() /read the serial uchar sn1,sn2; d
10、sreset(); delay(1); tmpwritebyte(0x33); sn1=tmpread(); sn2=tmpread();/*-溫度傳感器函數(shù)定義-*/T1 13us產(chǎn)生一次中斷 用于產(chǎn)生38K載波/T0 方式1 16位 用于定時void Init_Timer()TMOD=0x21; /T0 mode 1 T1 mode 2 TH1=256-13; /定時產(chǎn)生13us/特殊TL1=TH1;ET1=1;EA=1; /發(fā)送引導(dǎo)碼 發(fā)送方:9ms高電平 4.5ms低電平void Send_Start_Bit() /TR1的值=發(fā)送的電平/9ms 1TH0=(65536-9000)/2
11、56;TL0=(65536-9000)%256;TR0=1;TR1=1;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;/4.5ms 0TH0=(65536-4500)/256; TL0=(65536-4500)%256;TR0=1;TR1=0;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1; /發(fā)送0 void Send_Bit_0()/0.565ms 1TH0=(65536-565)/256; TL0=(65536-565)%256;TR0=1;TR1=1;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=
12、1;/0.565ms 0TH0=(65536-565)/256; TL0=(65536-565)%256;TR0=1;TR1=0;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1; /發(fā)送1void Send_Bit_1()/0.565ms 1TH0=(65536-565)/256; TL0=(65536-565)%256;TR0=1;TR1=1;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;/1.685ms 0TH0=(65536-1685)/256; TL0=(65536-1685)%256;TR0=1;TR1=0;while(!
13、TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1; void Send_over() /發(fā)送一個結(jié)束碼,因為最后一個位只有遇到下降沿才能讀?。òl(fā)射端的上升沿)/0.500ms 1 /小于0.5ms 接收端很難識別到TH0=(65536-500)/256; TL0=(65536-500)%256;TR0=1;TR1=1;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1; /0.500ms 0TH0=(65536-500)/256; TL0=(65536-500)%256;TR0=1;TR1=0;while(!TF0);TR1=0;TF0=0;TR0=0;
14、IR_OUT=1; void keyscan()if(key1=0)delay_ms(5);if(key1=0)m=1;while(!key1);if(key2=0)delay_ms(5);if(key2=0)m=2;while(!key2);if(key3=0)delay_ms(5);if(key3=0)m=3;while(!key3);if(key4=0)delay_ms(5);if(key4=0)m=4;while(!key4);if(key5=0)delay_ms(5);if(key5=0)m=5;while(!key1);if(key6=0)delay_ms(5);if(key6=0
15、)m=6;while(!key6);if(key7=0)delay_ms(5);if(key7=0)m=7;while(!key7);if(key8=0)delay_ms(5);if(key8=0)m=8;while(!key8);switch(m)case 1:inform=0x7e;break;case 2:inform=0x18;break;case 3:inform=0x3c;break;case 4:inform=0x42;break;case 5:inform=0xe7;break;case 6:inform=0x5a;break;case 7:inform=0x99;break;
16、case 8:inform=0x24;break;default:break;void Send_Char(uchar inform,uchar flag)/發(fā)送一字節(jié) 8位uchar i,j1,j2,j3,j4;j1=flag;j2=0x41;j3=inform;j4=0x20;Send_Start_Bit(); for(i=0;i<8;i+) if(j1&0x01) Send_Bit_1(); else Send_Bit_0(); j1=j1>>1; /先發(fā)射低位for(i=0;i<8;i+) if(j2&0x80) Send_Bit_0(); el
17、se Send_Bit_1(); j2=j2<<1; /先發(fā)射低位for(i=0;i<8;i+) if(j3&0x01) Send_Bit_1(); else Send_Bit_0(); j3=j3>>1; /先發(fā)射低位 for(i=0;i<8;i+) if(j4&0x80) Send_Bit_0(); else Send_Bit_1(); j4=j4<<1; /先發(fā)射低位Send_over(); /結(jié)束符void T1_ISR() interrupt 3IR_OUT=IR_OUT;void delay_send()uchar i
18、,j;for(i=120;i>1;i-)for(j=500;j>1;j-)keyscan();if(m)Send_Char(inform,0);m=0;void main()Init_Timer();while(1)m=0;IR_OUT=0;tmpchange();if(tmp()>250)inform=0x7e;Send_Char(inform,0);delay_send();Send_Char(tmp(),0xff);#include<reg52.h> #define uchar unsigned char#define uint unsigned intsb
19、it IR=P32; /紅外接口標(biāo)志sbit Beep=P20; sbit A1=P21;sbit A2=P22;sbit A3=P23;/*- 全局變量聲明-*/uchar irtime;/紅外用全局變量bit irpro_ok,irok;/是否進(jìn)行接收和是否接受完畢uchar IRcord4;uchar irdata33;uchar Th1,Tl1; /分別給TH0,TH1賦值 uchar key=0; uchar code KeyCode=0XFF,0XFF, 0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC
20、,0x0B, 0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x33,0xFD,0x81,0xFD,0xC7,0xFE,0x05, 0xFE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02, ; uchar code table=0x5f,0x06,0x9b,0x97,0xc6,0xd5,0xdd,0x07,0xdf,0xd7; uchar code table1=0x7f,0x26,0xbb,0xb7,0xe6,0xf5,0xfd,0x27,0xff,0xf7; /*- 函數(shù)聲明-*/v
21、oid Ir_work(void);void Ircordpro(void);/音階函數(shù)聲明void PlayKey(void); void DisPlay(void);void delay_ms(uchar ms)uchar i,j;for(i=0;i<120;i+)for(j=0;j<ms;j+);/*- 定時器0初始化-*/void TIM0init(void)/定時器初始化 TMOD=0x12;/定時器0工作方式2,TH0是重裝值,TL0是初值 ,定時器1工作方式1 TH0=0x00; /重載值 TL0=0x00; /初始化值 ET0=1; /開中斷 TR0=1; ET1=
22、1; /*- 外部中斷0初始化-*/void EX0init(void) IT0 = 1; /指定外部中斷0下降沿觸發(fā),INT0 (P3.2) EX0 = 1; /使能外部中斷 EA = 1; /開總中斷/*- 定時器0中斷處理-*/void tim0_isr (void) interrupt 1 using 1 irtime+; /用于計數(shù)2個下降沿之間的時間/*- 定時器1中斷處理-*/void time1() interrupt 3 TH1=Th1;TL1=Tl1;Beep=Beep;/*- 外部中斷0中斷處理-*/void EX0_ISR (void) interrupt 0 /外部中
23、斷0服務(wù)函數(shù) static unsigned char i; /接收紅外信號處理 static bit startflag; /是否開始處理標(biāo)志位if(startflag) if(irtime<63&&irtime>=33)/引導(dǎo)碼 TC9012的頭碼,9ms+4.5ms i=0; irdatai=irtime;/存儲每個電平的持續(xù)時間,用于以后判斷是0還是1 irtime=0; i+; if(i=33) irok=1; i=0; elseirtime=0;startflag=1;/*- 鍵值處理-*/void Ir_work(void)/紅外鍵值散轉(zhuǎn)程序 swit
24、ch(IRcord2)/判斷第三個數(shù)碼值 case 0x7e:key=1;break;/1 顯示相應(yīng)的按鍵值 case 0x18:key=2;break;/2 case 0x3c:key=3;break;/3 case 0x42:key=4;break;/4 case 0xe7:key=5;break;/5 case 0x5a:key=6;break;/6 case 0x99:key=7;break;/7 case 0x24:key=8;break;/8 default:break; irpro_ok=0;/處理完成標(biāo)志 void ledisplay() uchar bai,shi,ge;bai=IRcord2/100;shi=IRcord2%100/10;ge=IRcord2%10;A1=0;P0=tablebai;delay_ms(5);P0=0x00;A1=1;A2=0;P0=table1shi;delay_ms(5);P0=0x00;A2=1;A3=0;P0=tablege;delay_ms(5);P0=0x00;A3=1;/*- 紅外碼值處理-*/void Ircordpro(void)/紅外碼值處理函數(shù) unsigned char i, j, k; unsigned char
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服務(wù)類合同的續(xù)簽事宜
- 商品采購合同新版格式
- 空氣源熱泵安裝招標(biāo)啟事
- 股東借款合同范本英文
- 監(jiān)理合同條款范本
- 道路標(biāo)志牌批量訂購
- 檢討保證書撰寫
- 國慶節(jié)活動承包合同
- 安全供貨合作協(xié)議
- 房屋購買委托協(xié)議書
- 管道安全檢查表
- 《醫(yī)學(xué)統(tǒng)計學(xué)》期末試卷
- 昌樂縣鎮(zhèn)區(qū)基準(zhǔn)地價更新修正體系匯編(完整版)資料
- 2023年中考語文褒義詞專題練習(xí)(含答案)
- 應(yīng)急救援預(yù)案演練效果評價
- 微生物原生質(zhì)體融合育種課件
- 景觀園林綠化施工設(shè)計及養(yǎng)護(hù)
- (完整版)風(fēng)電專業(yè)考試題庫(帶答案)
- 拖欠民工工資檢查表2橫表
- 防火門單位向總包單位移交防火門完成工作面交接單
- GB/T 40719-2021硫化橡膠或熱塑性橡膠體積和/或表面電阻率的測定
評論
0/150
提交評論