電子設(shè)計(jì)與單片機(jī)應(yīng)用實(shí)訓(xùn)教程代碼第十六章_第1頁(yè)
電子設(shè)計(jì)與單片機(jī)應(yīng)用實(shí)訓(xùn)教程代碼第十六章_第2頁(yè)
電子設(shè)計(jì)與單片機(jī)應(yīng)用實(shí)訓(xùn)教程代碼第十六章_第3頁(yè)
電子設(shè)計(jì)與單片機(jī)應(yīng)用實(shí)訓(xùn)教程代碼第十六章_第4頁(yè)
電子設(shè)計(jì)與單片機(jī)應(yīng)用實(shí)訓(xùn)教程代碼第十六章_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1:溫度傳感器模塊(單片機(jī)):腳unsignedchartempH=0;}11數(shù)據(jù)傳輸線接單片機(jī)的相應(yīng)的引//測(cè)量到的溫度的整數(shù)部分//DQ先置高//延時(shí)(>480us)//等待(15~60us)/*用X的值來判斷初始化有沒有成功,18B20存在的話X=0,否則X=1*//*主機(jī)數(shù)據(jù)線先從高拉至低電平1us以上,再使數(shù)據(jù)線升為高電平,從而產(chǎn)生讀信號(hào)/*每個(gè)讀周期最短的持續(xù)時(shí)間為60us,各個(gè)讀周期之間必須有1us以上的高電平恢復(fù)期*/11一個(gè)字節(jié)有8位voidWriteOneChar(unsignedchardat)//高電高電{/*數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生寫起始信號(hào)。15us之內(nèi)將所需寫的位送到數(shù)據(jù)線上*//*在15~60us之間對(duì)數(shù)據(jù)線進(jìn)行采樣,如果是電平就寫1,低寫0發(fā)生。*//*在開始另一個(gè)寫周期前必須有1us以上的高{//讀溫度寄存器(兩個(gè)值為溫度低位和高//讀出溫度的低位LSB//最高位為1時(shí)溫度是負(fù)//補(bǔ)碼轉(zhuǎn)換,取反加一xiaoshul=(tempL&Ox0f)*iaoshu2=(tempL&OxOf)*100/16/xiaoshu=xiaoshul*10+xia{小數(shù)第二位2:溫濕度傳感器模塊(單片機(jī)):typedefunsignedcharU8;typedefsignedcharS8;typedefunsignedintU16;typedefunsignedlongU32;typedefsignedlong#defineucharunsigned#defineuintunsignedintU8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8chU8T_data_H_temp,U8T_dataLtemp,U8Rwhile((!P2_0)&&U8FLAGwhile((P2_0)&&U8FLAG}/1----校驗(yàn)8位==U8checkdata-----*///判斷數(shù)據(jù)位是0還是1則數(shù)據(jù)位為1*///rof//總線由上拉電阻拉高主機(jī)延時(shí)20us/*判斷從機(jī)是否有低電平響應(yīng)信號(hào)如不響應(yīng)while((!P2_0)&&U8FLAG++);//判斷從機(jī)發(fā)出80us的低電平響應(yīng)信號(hào)是否while((P2_0)&&U8FLAG++);入U(xiǎn)8RH_data_H_temp=U8comU8RH_dataLtemp=U8comU8T_dataLtemp=U8comU8checkdata_temp=U8comU8temp=(U8T_data_H_temp+U8TU8RH_data_L=U8RH_dataL}U8T_data_L=U8T_dataLU8checkdata=U8checkdata_/*系統(tǒng)初始化*/voidRSINTROinterrupt4using2{}}//工作方式1,波特率9600bps,允許接收}3:雨滴傳感器模塊(單片機(jī)):#include<reg52.h>率}{{}11允許定時(shí)器T1的中斷1/定時(shí)器T1,在方式2中斷產(chǎn)生波特11方式1由定時(shí)器控制//波特率設(shè)置為9600//開定時(shí)器T1運(yùn)行控制位4:CO?檢測(cè)傳感器模塊(單片機(jī)):(1)TTL輸出程序#defineucharunsignedchar//宏定義無符號(hào)字符型入端//定義單片機(jī)P1口的第1位(即P1.0)為指示端{(lán){//當(dāng)濃度高于設(shè)定值時(shí),執(zhí)行條件函數(shù)//確定濃度高于設(shè)定值時(shí),執(zhí)行條件函數(shù)}(2)模擬量程序#defineucharunsignedchar1/宏定義無符號(hào)字符型#defineuintunsignedint//宏定義無符號(hào)整型codeucharseg7code[10]={Oxc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x//顯示段碼數(shù)碼管字跟sbitST=P3^0;//A/D啟動(dòng)轉(zhuǎn)換信號(hào)sbitOE=P3^1;//數(shù)據(jù)輸出sbitEOC=P3^2;/1A/D轉(zhuǎn)換結(jié)束信號(hào)voidtimerO()interrupt1//定時(shí)器0工作方式1//定時(shí)器中斷0//脈沖信號(hào)初始值為0//電壓顯示不能超過5V//數(shù)碼管顯示的數(shù)據(jù)值,其中20為采集數(shù)據(jù)的毫安值5:觸摸傳感器模塊(單片機(jī)):#defineucharunsignedchar//宏定義無符號(hào)字符型#defineuintunsignedint//宏定義無符號(hào)整型sbitLED=P1^0;//定義單片機(jī)P1口的第1位(即P1.0)為指示端入端//當(dāng)用手觸摸時(shí),執(zhí)行條件函數(shù)//確定用手觸摸時(shí),執(zhí)行條件函數(shù)6:超聲波傳感器模塊(單片機(jī)):unsignedintdistance=0;//距離單位為厘米1/定時(shí)器1定時(shí)值高八位1/定時(shí)器1定時(shí)值低八位//定時(shí)器0計(jì)數(shù)值unsignedcharLED_num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07bitsuccess=0;//回波接收成功標(biāo)志位時(shí)模式//定時(shí)器0設(shè)定為16位定1/定時(shí)器0中斷允許J1外部中斷0允許11外部中斷0下降沿觸發(fā)voidtimerOint()inte生{的/*50ms*4=0.2s定時(shí),每0.2s產(chǎn)一次超聲波,測(cè)一次距離*/11判斷是否到達(dá)4次定時(shí),即//定時(shí)產(chǎn)生大約50us脈沖/*定時(shí)器1開始計(jì)時(shí),測(cè)量回波寬度,即超聲波來回波動(dòng)的時(shí)間*/1/定時(shí)器0初值重填裝voidexint0)interrupt0{7:霍爾傳感器模塊(單片機(jī)):voidInitial_com(void)//串口初始化函數(shù)率11外部中斷0檢測(cè)回波的下降沿//讀取定時(shí)器1定時(shí)值//定時(shí)器1定時(shí)值清零//回波接受成功標(biāo)志位置111允許定時(shí)器T1的中斷//定時(shí)器T1,在方式2中斷產(chǎn)生波特/1方式1由定時(shí)器控制//波特率設(shè)置為9600//開定時(shí)器T1運(yùn)行控制位8:ADXL345加速度傳感器模塊(單片機(jī)):#defineDataPortP2/sbitSCL=PO^4;根據(jù)ALTADDRESS地址引腳不同修改0xA6,接電源時(shí)地址為0x3A*/typedefunsignedcharBYTE;typedefunsignedshortWORD;voiddelay(unsignedintvoidWriteDataLCM(uchardataW);voidDisplayOneChar(ucharX,ucharY,ucharDData);voidSingle_Write_ADXL345(ucharREG_Address,ucharucharSingle_Read_ADXL345(ucharREG_AddrvoidADXL345_WritePavoidconversion(uinttemp_data)wan=temp_data/10000+temp_data=temp_data%temp_data=temp_data{LCM_EN=1;_nop_();_nopLCM_RS=0;LCM_RW=0;_nvoidWriteDataLCM(uchardataW)/*單個(gè)讀取內(nèi)部寄LCM_EN=1;_nop_();_nop_();LvoidDisplayOneChar(ucharX,ucharY,ucharDData)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();voidADXL345_SendACK(bitack)d{ADXL345_SendByte(BYTEdat)//向IC總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)}數(shù)據(jù)voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data)//單字節(jié)寫入{ADXL345_SendByte(SlaveAddrADXL345_SendByte(REG_AddrADXL345_SendByte(REG_d11發(fā)送設(shè)備地址+寫信號(hào)ADXL345_SendByte(SlaveAddrADXL345_SendByte(REG_AddrADXL345_SendByte(SlaveAddresREG_data=ADXL345_RecvvoidMultiple_read_ADXL3{ADXL345_SendByte(SlaveAddrADXL345_SendByte(0xADXL345_SendByte(SlaveAddres{BUF[i]=ADXL345_Recv11發(fā)送設(shè)備地址+寫信號(hào)11發(fā)送存儲(chǔ)單元地址,從0開始1/發(fā)送設(shè)備地址+讀信號(hào)度數(shù)據(jù),地址范圍0x32~0x37*/11發(fā)送設(shè)備地址+寫信號(hào)11發(fā)送設(shè)備地址+讀信號(hào)//連續(xù)讀取6個(gè)地址數(shù)據(jù)//存儲(chǔ)0x32地址中的數(shù)據(jù)if(i==5)NOACK}temp=(float)dis_datDisplayOneChar(11,0}//最后一個(gè)數(shù)據(jù)需要回{elseDisplayOneChatemp=(float)dis_dat{DisplayOneChar(11,111第1行,第0列顯示y11第0行,第10列顯示Zdevid=Single_Read_ADXL//讀出的數(shù)據(jù)為OXE5,正確//連續(xù)讀出數(shù)據(jù),存在BUF中9:地磁傳感器模塊(單片機(jī)):#defineucharunsigned址typedefunsignedcharBYTE;typedefunsignedshortWORD;/1使用的端口,請(qǐng)按照以下接線//LCD1602數(shù)據(jù)端口//IC時(shí)鐘引腳定義//IC數(shù)據(jù)引腳定義//LCD1602命令端口//LCD1602命令端口//LCD1602命令端口1/定義器件在IC總線中的從地1/初始化5883voidWriteDataLCM(uchardataW);voidDisplayOneChar(ucharX,ucharY,ucharDData);voidconversion(uinttemp_data);voidSingle_Write_HMC5883(ucharREG_Address,ucharREG_data);//單個(gè)寫入ucharSingle_Read_HMC5883(ucharREG_Address);據(jù)voidMultiple_Read_HMvoidHMC5883_SendACK(bitvoidHMC5883_SendByte(BYTEvoidHMC5883_ReadPavoidconversion(uinttemp_data)wan=temp_data/10000+temp_data=temp_data%temp_data=temp_databai=temp_data/100+0x30;LCM_EN=1;_nop_();_nopLCM_EN=1;_nop_();_nop_();LvoidWriteDataLCM(uchardataW)LCM_EN=1;_nop_();_nop_();LvoidDisplayOneChar(ucharX,ucharY,ucharDData)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();voidHMC5883_Stop()voidHMC5883_SendACK(bitack)voidHMC5883_SendByte(BYTEdat)數(shù)據(jù)字節(jié)數(shù)據(jù)數(shù)據(jù).1/8位計(jì)數(shù)器voidSingle_Write_HMC5883(ucharREG_HMC5883_SendByte(SlaveAd11發(fā)送設(shè)備地址+寫信號(hào)HMC5883_SendByte(R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論