51單片機(jī)與Dino928單機(jī)通訊實(shí)驗(yàn)_第1頁(yè)
51單片機(jī)與Dino928單機(jī)通訊實(shí)驗(yàn)_第2頁(yè)
51單片機(jī)與Dino928單機(jī)通訊實(shí)驗(yàn)_第3頁(yè)
51單片機(jī)與Dino928單機(jī)通訊實(shí)驗(yàn)_第4頁(yè)
51單片機(jī)與Dino928單機(jī)通訊實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

期末專(zhuān)題報(bào)告書(shū)單片機(jī)與Dino928的單機(jī)通訊實(shí)驗(yàn)班別:資訊工程丙班組別:15組員一:曹睿龍(i10402091)組員二:謝曉喆(i10402109)

目錄一、 動(dòng)機(jī) 3二、 構(gòu)想 3三、 專(zhuān)題特色 4四、 製作專(zhuān)題所遇到之困難以及解決方法 4五、 結(jié)果呈現(xiàn) 5六、 程式碼 7七、 心得 15

動(dòng)機(jī)制作的初期,發(fā)現(xiàn)藍(lán)牙是一個(gè)可能很普遍存在于大眾的模組,出于推陳出新這樣的想法,我們決定不再致力于書(shū)本上已有的實(shí)驗(yàn),而是努力向外延伸,尋找更多有新意的提案所謂無(wú)通訊,無(wú)物聯(lián)。IOT應(yīng)該是物物相連的網(wǎng)際網(wǎng)路,如果一個(gè)物體裝上感測(cè)器和制動(dòng)元件就可以叫智能設(shè)備的話(huà),恐怕與真正的物聯(lián)網(wǎng)還有一定的距離。所以本組所致力的是物聯(lián)設(shè)備與其他處理設(shè)備的通訊過(guò)程,實(shí)現(xiàn)對(duì)原有Arduino裝置的擴(kuò)充。構(gòu)想實(shí)驗(yàn)1:本組果斷放棄了藍(lán)牙,轉(zhuǎn)而決定用紅外線(xiàn)機(jī)制,傳輸一個(gè)鍵碼值給MCU,再讓MCU控制不同位于Arduino的PIN口進(jìn)行后續(xù)判斷實(shí)驗(yàn)2:使用串口通訊,將MCU受到的PC端串口信息處理并轉(zhuǎn)發(fā)給Arduino,并嚴(yán)格規(guī)定時(shí)間控制其走停。專(zhuān)題特色此次實(shí)驗(yàn)重點(diǎn)在于通訊交互過(guò)程在技術(shù)實(shí)施方面,我們所采用信號(hào)發(fā)起方式是由單片機(jī)接收不同的訊號(hào),包括紅外和PC端UART兩種。傳輸上使用簡(jiǎn)單的數(shù)字信號(hào)判斷和串口單機(jī)通訊兩種通訊模式,分別由實(shí)驗(yàn)1和實(shí)驗(yàn)2完成。在外觀形態(tài)方面,本組仿照單機(jī)游戲“Minecraft”中“爬行者”角色的外形,制作Dino928的外殼。外殼體由輕質(zhì)紙塑殼拼接而成。下底經(jīng)過(guò)打磨,使其摩擦力減小以便于移動(dòng)製作專(zhuān)題所遇到之困難以及解決方法困難一:由於ardiuno與80C51單片機(jī)的收發(fā)波特率不一樣,80C51單片機(jī)需要自定義,ardiuno默認(rèn)為19200,當(dāng)初沒(méi)有考慮到波特率的問(wèn)題導(dǎo)致收發(fā)頻率不一,ardiuno無(wú)法正常接收來(lái)自80C51單片機(jī)的串口訊號(hào)。解決:查詢(xún)資料發(fā)現(xiàn)80C51有專(zhuān)門(mén)控制發(fā)送頻率的代碼,將兩者波特率調(diào)製9600,雙方就能實(shí)現(xiàn)正常收發(fā)數(shù)據(jù)。困難二:鍵碼讀取的中斷與LED動(dòng)態(tài)顯示的中斷衝突,導(dǎo)致數(shù)碼管不規(guī)律閃爍。解決:不斷分析中斷源,最終找到合適的流程設(shè)計(jì),編寫(xiě)出合適代碼解決LED燈閃爍問(wèn)題。困難三:SBUF配置不正確,80C51單片機(jī)控制發(fā)送語(yǔ)句沒(méi)寫(xiě)循環(huán),由於發(fā)送指令一次只能發(fā)送一位,如果不循環(huán)則ardiuno緩衝池只能收到一位,而ardiuno只能接受數(shù)字信號(hào),對(duì)單個(gè)位沒(méi)有處理功能,則緩沖池不接受這樣的單個(gè)位,導(dǎo)致收不到信號(hào)。解決:在80C51串口發(fā)送數(shù)據(jù)編程中加入循環(huán)語(yǔ)句,使發(fā)送的數(shù)字信號(hào)能夠完整發(fā)送。結(jié)果呈現(xiàn)實(shí)驗(yàn)一:實(shí)驗(yàn)二:外形:程式碼實(shí)驗(yàn)一:51單片機(jī)部分:#include<reg52.h>sbitADDR3=P1^3;sbitENLED=P1^4;sbitgo=P2^1;sbitstop=P2^2;sbitback=P2^3;unsignedcharcodeLedChar[]={//數(shù)碼管顯示字符轉(zhuǎn)換表0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};unsignedcharLedBuff[6]={//數(shù)碼管顯示緩沖區(qū)0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};unsignedcharT0RH=0;//T0重載值的高字節(jié)unsignedcharT0RL=0;//T0重載值的低字節(jié)externbitirflag;externunsignedcharircode[4];externvoidInitInfrared(void);voidConfigTimer0(unsignedintms);voidmain(){EA=1;//開(kāi)總中斷ENLED=0;//使能選擇數(shù)碼管ADDR3=1;InitInfrared();//初始化紅外功能ConfigTimer0(1);//配置T0定時(shí)1msPT0=1;//配置T0中斷為高優(yōu)先級(jí),啟用本行可消除接收時(shí)的閃爍while(1){if(irflag)//接收到紅外數(shù)據(jù)時(shí)刷新顯示{irflag=0; switch(ircode[2]){case0X0C:LedBuff[0]=LedChar[1];break;case0X18:{LedBuff[0]=LedChar[2];go=0;back=1;stop=1;}break;case0X5E:LedBuff[0]=LedChar[3];break; case0X08:LedBuff[0]=LedChar[4];break;case0X1C:{LedBuff[0]=LedChar[5];go=1;back=1;stop=0;}break;case0X5A:LedBuff[0]=LedChar[6];break;case0X42:LedBuff[0]=LedChar[7];break;case0X52:{LedBuff[0]=LedChar[8];go=1;back=0;stop=1;}break;case0X4A:LedBuff[0]=LedChar[9];break;}}}}/*配置并啟動(dòng)T0,ms-T0定時(shí)時(shí)間*/voidConfigTimer0(unsignedintms){unsignedlongtmp;//臨時(shí)變量tmp=11059200/12;//定時(shí)器計(jì)數(shù)頻率tmp=(tmp*ms)/1000;//計(jì)算所需的計(jì)數(shù)值tmp=65536-tmp;//計(jì)算定時(shí)器重載值tmp=tmp+18;//補(bǔ)償中斷響應(yīng)延時(shí)造成的誤差T0RH=(unsignedchar)(tmp>>8);//定時(shí)器重載值拆分為高低字節(jié)T0RL=(unsignedchar)tmp;TMOD&=0xF0;//清零T0的控制位TMOD|=0x01;//配置T0為模式1TH0=T0RH;//加載T0重載值TL0=T0RL;ET0=1;//使能T0中斷TR0=1;//啟動(dòng)T0}/*數(shù)碼管動(dòng)態(tài)掃描刷新函數(shù),需在定時(shí)中斷中調(diào)用*/voidLedScan(){staticunsignedchari=0;//動(dòng)態(tài)掃描索引P0=0xFF;//關(guān)閉所有段選位,顯示消隱P1=(P1&0xF8)|i;//位選索引值賦值到P1口低3位P0=LedBuff[i];//緩沖區(qū)中索引位置的數(shù)據(jù)送到P0口if(i<sizeof(LedBuff)-1)//索引遞增循環(huán),遍歷整個(gè)緩沖區(qū)i++;elsei=0;}/*T0中斷服務(wù)函數(shù),執(zhí)行數(shù)碼管掃描顯示*/voidInterruptTimer0()interrupt1{TH0=T0RH;//重新加載重載值TL0=T0RL;LedScan();//數(shù)碼管掃描顯示}Arduino部分:constintM1_in1=12;constintM1_in2=11;constintM2_in3=10;constintM2_in4=9;voidsetup(){Serial.begin(9600);pinMode(M1_in1,OUTPUT);pinMode(M1_in2,OUTPUT);pinMode(M2_in3,OUTPUT);pinMode(M2_in4,OUTPUT);pinMode(2,INPUT);pinMode(3,INPUT);pinMode(4,INPUT);Serial.println("輸入字元'+'代表前進(jìn),字元'-'代表後退,任意鍵代表停車(chē)");}voidloop(){intgo=digitalRead(2);//取得A2的模擬信號(hào)值。intstop1=digitalRead(3);//取得A3的模擬信號(hào)值。intback=digitalRead(4);if(go==1){//前進(jìn)Serial.println("前進(jìn)");digitalWrite(M1_in1,HIGH);//右輪前進(jìn)digitalWrite(M1_in2,LOW);digitalWrite(M2_in3,HIGH);//左輪前進(jìn)digitalWrite(M2_in4,LOW);}elseif(back==1){//倒車(chē)Serial.println("倒車(chē)");digitalWrite(M1_in1,LOW);//右輪倒轉(zhuǎn)digitalWrite(M1_in2,HIGH);digitalWrite(M2_in3,LOW);//左輪倒轉(zhuǎn)digitalWrite(M2_in4,HIGH);}elseif(stop1==1){//stopSerial.println("stop");digitalWrite(M1_in1,LOW);//右輪倒轉(zhuǎn)digitalWrite(M1_in2,LOW);digitalWrite(M2_in3,LOW);//左輪倒轉(zhuǎn)digitalWrite(M2_in4,LOW);}}實(shí)驗(yàn)二:51單片機(jī)程式碼:#include<reg52.H>sbittx=P3^0;#defineXTAL11059200//CUP晶振頻率#definebaudrate9600//通信波特率unsignedcharc;voidmain(void){unsignedcharc;TMOD=0x20;//定時(shí)器1工作于8位自動(dòng)重載模式,用于產(chǎn)生波特率TH1=(unsignedchar)(256-(XTAL/(32L*12L*baudrate)));TL1=(unsignedchar)(256-(XTAL/(32L*12L*baudrate)));//定時(shí)器0賦初值SCON=0x50;PCON=0x00;TR1=1;IE=0x00;//禁止任何中斷while(1){while(RI==0);RI=0;c=SBUF;//從緩沖區(qū)中把接收的字符放入c中SBUF=c;//要發(fā)送的字符放入緩沖區(qū)while(TI==0);TI=0;}}心得本次實(shí)作結(jié)合本學(xué)期所學(xué)的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論