久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

51藍牙串口通信給親參考

時間:2019-05-12 03:07:07下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《51藍牙串口通信給親參考》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《51藍牙串口通信給親參考》。

第一篇:51藍牙串口通信給親參考

/**********51藍牙串口調試程序**************/

//串口接收的數據送至P1口,可接幾個led試一下

#include

void main(void)

{

TMOD=0x20;//T0方式2,作為波特率發生器

TH1=0xfd;//9600波特率

TL1=0xfd;

SM0=0;//串口方式1

SM1=1;

REN=1;

EA=1;

ES=1;

PCON=0x80;

TR1=1;

while(1);//wait here

}

//******************串口中斷*******************

void isr()interrupt 4

{

ES=0;

if(RI==1)

{

P1=SBUF;//P1口作為驅動口,根據需要結合自己發送的指令自己調整哦}

ES=1;

}

第二篇:串口通信實驗報告范文

華南農業大學

實驗報告

----------目錄----------

1、實驗任務和目的..............................................................................................................2、實驗準備..........................................................................................................................3、實驗步驟................................................................................................................................4、實驗分析與總結....................................................................................................................(1)、分析.............................................................................................................................(2)、總結.............................................................................................................................1、實驗任務和目的

了解串行通信的背景知識后,通過三線制制作一條串口通信線(PC-PC),并編程實現兩臺PC間通過RS-232C通信。要求兩臺PC機能進行實時的字符通信,并了解工業自動化控制中的基本通信方式。

2、實驗準備

1、檢查PC是否具有串行通信接口,并按其針腳類準備一條串口通信線纜。

2、串口包的安裝,下載javacomm20-win32.zip并解壓,將win32com.dll復制到bin目錄下;將comm.jar復制到lib;把javax.comm.properties也同樣拷貝到lib目錄下,再將上面提到的文件放到JRE相應的目錄下就可以了。

3、實驗步驟

1、將實驗所需RS-232纜線準備好,并將JAVA串口包復制到相應地目錄下。

2、查找有關串口通信的書籍以及在網上查找相應地串口通信代碼。

3、用JAVA編程軟件JCreator編寫代碼。

4、實驗分析與總結

(1)、分析

(I)、對串口讀寫之前需要先打開一個串口并檢測串口是否被占用: public void open(){//打開串口以及輸入輸出流

recieve=false;

try

{serialPort=(SerialPort)portId.open(“Serial Communication”, 2000);}

catch(PortInUseException e){System.out.println(“端口正被占用!”);}

try

{serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);}

catch(UnsupportedCommOperationException e){System.out.println(“不支持通信”);}

try

{

outputStream=serialPort.getOutputStream();

inputStream=serialPort.getInputStream();

1-完整運行程序如圖所示:

圖1

(2)、總結

通過本次串口實驗,我對串口通信的知識了解的更透徹,這是在剛開始對串口通信知識不了解的情況下就編程而造成許多錯誤之后才得到的結果。在網上查找資料的時候也接觸到了不少其他的編程語言例如VB,delphi,C#等,這也讓我對這些從沒有學過的語言有所了解,我想這些知識對以后的實驗工作都有幫助。

3--

第三篇:藍牙通信原理

藍牙耳機的工作原理:

關于音頻流的藍牙傳輸可以通過兩個方式:

1)通過PCM接口來傳送

2)通過模擬UART來傳送

下面分別來講述:

1)通過PCM接口來傳送

通過音頻播放器(eg: Media Player)來打開音頻文件,調用Audio驅動,音頻文件通過解碼后,由PCM輸出到Host端藍牙模塊的PCM輸入端,接著,經過藍牙模塊的處理后,由RF無線模塊發送給Client 端藍牙設備。

Client 端藍牙設備經由無線接收模塊后,濾波,穩壓,經微處理芯片處理后,直接由Speaker播放。

2)通過模擬UART來傳送

通過設置注冊表【HKEY_LOCAL_MACHINEServicesBTAGSVC】IsEnabled =1 使得系統引導時自動加載語音網關(AG)服務。

首先,通過手動配置建立Host端藍牙設備與Client端藍牙設備ACL鏈接(面向無連接的異步鏈路),接著在Applicaiton或Audio Driver中調用

IOCTL_AG_OPEN_AUDIO,重新建立Host端藍牙設備與Client端藍牙設備SCO鏈接(面向連接的同步鏈路),接著AG自動發送

waveOutMessage((HWAVEOUT)i, WODM_BT_SCO_AUDIO_CONTROL, 0, TRUE);從而建立了Audio至藍牙芯片之間的通道,也即,實現了音頻流到藍牙模塊的傳送。

然后,經由主機端藍牙模塊將音頻流打包經由RF模塊發送出去。

客戶端藍牙耳機接收到無線音頻包后,濾波,穩壓,經微處理芯片處理后,由PCM傳送給音頻編解碼器芯片,最后,由Speaker播放。

第四篇:單片機串口通信方式總結

IIC總線通信協議————數據傳輸高位在前p233 1,起始和停止條件

開始信號:SCL為高電平,SDA由高電平向低電平跳變,開始傳送數據。void start()// 開始位 { SDA = 1;

//SDA初始化為高電平“1”

SCL = 1;

//開始數據傳送時,要求SCL為高電平“1”

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

SDA = 0;

//SDA的下降沿被認為是開始信號

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

SCL = 0;

//SCL為低電平時,SDA上數據才允許變化(即允許以后的數據傳遞)} 結束信號:SCL為高電平,SDA由低電平向高電平跳變,結束傳送數據。void stop()// 停止位 { SDA = 0;

//SDA初始化為低電平“0”

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

SCL = 1;

//結束數據傳送時,要求SCL為高電平“1”

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

SDA = 1;

//SDA的上升沿被認為是結束信號 }

2,數據格式(數據輸入)

在IIC總線開始信號后,送出的第一個字節數據是用來選擇器件地址和數據方向的,其格式為

從器件收到地址型號后與自己的地址比較,一致則此器件就是主器件要找的器件,并返回ACK(不管是寫數據還是地址都會返回)。IIC傳送數據時SCL為低電平時SDA可改變高低電平,SCL轉跳為高時數據輸入(此時SDA不能跳變),發送數據:bit WriteCurrent(unsigned char y){ unsigned char i;bit ack_bit;

//儲存應答位

for(i = 0;i < 8;i++)// 循環移入8個位

{

SDA =(bit)(y&0x80);

//通過按位“與”運算將最高位數據送到S

//因為傳送時高位在前,低位在后

_nop_();

//等待一個機器周期

SCL = 1;

//在SCL的上升沿將數據寫入AT24Cxx

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

SCL = 0;

//將SCL重新置為低電平,以在SCL線形成傳送數據所需的8個脈沖

y <<= 1;

//將y中的各二進位向左移一位

} SDA = 1;

// 發送設備(主機)應在時鐘脈沖的高電平期間(SCL=1)釋放SDA線,//以讓SDA線轉由接收設備(AT24Cxx)控制

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

SCL = 1;

//根據上述規定,SCL應為高電平

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

_nop_();

//等待一個機器周期

ack_bit = SDA;//接受設備(AT24Cxx)向SDA送低電平,表示已經接收到一個字節

//若送高電平,表示沒有接收到,傳送異常

SCL = 0;

//SCL為低電平時,SDA上數據才允許變化(即允許以后的數據傳遞)

return ack_bit;

// 返回AT24Cxx應答位 } 讀數據:unsigned char ReadData()// 從AT24Cxx移入數據到MCU { unsigned char i;unsigned char x;

//儲存從AT24Cxx中讀出的數據

for(i = 0;i < 8;i++){

SCL = 1;

//SCL置為高電平

x<<=1;

//將x中的各二進位向左移一位

x|=(unsigned char)SDA;//將SDA上的數據通過按位“或“運算存入x中

SCL = 0;

//在SCL的下降沿讀出數據

} return(x);

//將讀取的數據返回 } 發送數據步驟:

oid WriteSet(unsigned char add, unsigned char dat)// 在指定地址addr處寫入數據WriteCurrent { start();

//開始數據傳遞

WriteCurrent(OP_WRITE);//選擇要操作的AT24Cxx芯片,并告知要對其寫入數據

WriteCurrent(add);

//寫入指定地址

WriteCurrent(dat);

//向當前地址(上面指定的地址)寫入數據

stop();

//停止數據傳遞

delaynms(4);

//1個字節的寫入周期為1ms, 最好延時1ms以上 } 讀數據步驟:

/*************************************************** 函數功能:從AT24Cxx中的當前地址讀取數據 出口參數:x(儲存讀出的數據)

***************************************************/ unsigned char ReadCurrent(){ unsigned char x;start();

//開始數據傳遞

WriteCurrent(OP_READ);

//選擇要操作的AT24Cxx芯片,并告知要讀其數據

x=ReadData();

//將讀取的數據存入x stop();

//停止數據傳遞

return x;

//返回讀取的數據 } /*************************************************** 函數功能:從AT24Cxx中的指定地址讀取數據 入口參數:set_add 出口參數:x

***************************************************/ unsigned char ReadSet(unsigned char set_add)// 在指定地址讀取 { start();

//開始數據傳遞

WriteCurrent(OP_WRITE);

//選擇要操作的AT24Cxx芯片,并告知要對其寫入數據

WriteCurrent(set_add);

//寫入指定地址

return(ReadCurrent());

//從指定地址讀出數據并返回 }

單總線協議————數據傳輸低位在前——p237 1,初始化單總線器件

初始化時序程序:

函數功能:將DS18B20傳感器初始化,讀取應答信號 出口參數:flag

***************************************************/ bit Init_DS18B20(void){ bit flag;

//儲存DS18B20是否存在的標志,flag=0,表示存在;flag=1,表示不存在

DQ = 1;

//先將數據線拉高

for(time=0;time<2;time++)//略微延時約6微秒

;DQ = 0;

//再將數據線從高拉低,要求保持480~960us for(time=0;time<200;time++)//略微延時約600微秒

;

//以向DS18B20發出一持續480~960us的低電平復位脈沖

DQ = 1;

//釋放數據線(將數據線拉高)

for(time=0;time<10;time++)

;//延時約30us(釋放總線后需等待15~60us讓DS18B20輸出存在脈沖)

flag=DQ;

//讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在)

for(time=0;time<200;time++)//延時足夠長時間,等待存在脈沖輸出完畢

;return(flag);

//返回檢測成功標志 }

單總線通信協議中存在兩種寫時隙:寫0寫1。主機采用寫1時隙向從機寫入1,而寫0時隙向從機寫入0。所有寫時隙至少要60us,且在兩次獨立的寫時隙之間至少要1us的恢復時間。兩種寫時隙均起始于主機拉低數據總線。產生1時隙的方式:主機拉低總線后,接著必須在15us之內釋放總線,由上拉電阻將總線拉至高電平;產生寫0時隙的方式為在主機拉低后,只需要在整個時隙間保持低電平即可(至少60us)。在寫時隙開始后15~60us期間,單總線器件采樣總電平狀態。如果在此期間采樣值為高電平,則邏輯1被寫入器件;如果為0,寫入邏輯0。

下圖為寫時隙(包括1和0)時序

上圖中黑色實線代表系統主機拉低總線,黑色虛線代表上拉電阻將總線拉高。下面是代碼:

WriteOneChar(unsigned char dat){ unsigned char i=0;for(i=0;i<8;i++)

{

DQ =1;

// 先將數據線拉高

_nop_();

//等待一個機器周期

DQ=0;

//將數據線從高拉低時即啟動寫時序

DQ=dat&0x01;

//利用與運算取出要寫的某位二進制數據,//并將其送到數據線上等待DS18B20采樣

for(time=0;time<10;time++)

;//延時約30us,DS18B20在拉低后的約15~60us期間從數據線上采樣

DQ=1;

//釋放數據線

for(time=0;time<1;time++)

;//延時3us,兩個寫時序間至少需要1us的恢復期

dat>>=1;

//將dat中的各二進制位數據右移1位

}

for(time=0;time<4;time++)

;//稍作延時,給硬件一點反應時間 }

對于讀時隙,單總線器件僅在主機發出讀時隙時,才向主機傳輸數據。所有主機發出讀數據命令后,必須馬上產生讀時隙,以便從機能夠傳輸數據。所有讀時隙至少需要60us,且在兩次獨立的讀時隙之間至少需要1us恢復時間。每個讀時隙都由主機發起,至少拉低總線1us。在主機發出讀時隙后,單總線器件才開始在總線上發送1或0。若從機發送1,則保持總線為高電平;若發出0,則拉低總線。

當發送0時,從機在讀時隙結束后釋放總線,由上拉電阻將總線拉回至空閑高電平狀態。從機發出的數據在起始時隙之后,保持有效時間15us,因此主機在讀時隙期間必須釋放總線,并且在時隙起始后的15us之內采樣總線狀態。

下圖給出讀時隙(包括0或1)時序

圖中黑色實線代表系統主機拉低總線,灰色實線代表總局拉低總線,而黑色的虛線則代表上拉電阻總線拉高。代碼為:

unsigned char ReadOneChar(void){

unsigned char i=0;

unsigned char dat;//儲存讀出的一個字節數據

for(i=0;i<8;i++)

{

DQ =1;

// 先將數據線拉高

_nop_();

//等待一個機器周期

DQ = 0;

//單片機從DS18B20讀書據時,將數據線從高拉低即啟動讀時序

dat>>=1;

_nop_();

//等待一個機器周期

DQ = 1;

//將數據線“人為”拉高,為單片機檢測DS18B20的輸出電平作準備

for(time=0;time<2;time++)

;

//延時約6us,使主機在15us內采樣

if(DQ==1)

dat|=0x80;//如果讀到的數據是1,則將1存入dat

else

dat|=0x00;//如果讀到的數據是0,則將0存入dat

//將單片機檢測到的電平信號DQ存入r[i]

for(time=0;time<8;time++)

;

//延時3us,兩個讀時序之間必須有大于1us的恢復期

}

return(dat);

//返回讀出的十進制數據 }

每個單總線器件內部都光刻了一個全球唯一的64位二進制序列碼,用于該單總線器件的識別

SPI總線協議

SPI總線有四種工作方式(SP0, SP1, SP2, SP3),其中使用的最為廣泛的是SPI0和SPI3方式。

SPI是一個環形總線結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數據交換。

上升沿發送、下降沿接收、高位先發送。

上升沿到來的時候,sdo上的電平將被發送到從設備的寄存器中。

下降沿到來的時候,sdi上的電平將被接收到主設備的寄存器中。讀代碼:

unsigned char ReadCurrent(void){

unsigned char i;unsigned char x=0x00;

//儲存從X5045中讀出的數據

SCK=1;

//將SCK置于已知的高電平狀態

for(i = 0;i < 8;i++){

SCK=1;

//拉高SCK

SCK=0;

//在SCK的下降沿輸出數據

x<<=1;//將x中的各二進位向左移一位,因為首先讀出的是字節的最高位數據

x|=(unsigned char)SO;//將SO上的數據通過按位“或“運算存入 x

} return(x);

//將讀取的數據返回

} 寫代碼:

void WriteCurrent(unsigned char dat){

unsigned char i;SCK=0;

//將SCK置于已知的低電平狀態

for(i = 0;i < 8;i++)// 循環移入8個位

{

SI=(bit)(dat&0x80);

//通過按位“與”運算將最高位數據送到S

//因為傳送時高位在前,低位在后

SCK=0;

SCK=1;

//在SCK上升沿寫入數據

dat<<=1;

//將y中的各二進位向左移一位,因為首先寫入的是字節的最高位

} } RS232通訊協議 串行通訊方式3 RS485通訊協議 串行通訊方式1

第五篇:串口通信實驗報告

實驗三

雙機通信實驗

一、實驗目的

UART 串行通信接口技術應用

二、實驗實現的功能

用兩片核心板之間實現串行通信,將按鍵信息互發到對方數碼管顯示。

三、系統硬件設計

(1)單片機的最小系統部分

(2)電源部分

(3)人機界面部分

數碼管部分

按鍵部分

(4)串口通信部分

四、系統軟件設計

#include #define uchar unsigned char #define uint unsigned int void send();uchar code0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的數碼管顯示

sbit H1=P3^6;sbit H2=P3^7;sbit L1=P0^5;sbit L2=P0^6;sbit L3=P0^7;

uint m=0,i=0,j;uchar temp,prt;/***y延時函數***/ void delay(uint k){ uint i,j;

}

/***鍵盤掃描***/ char scan_key(){ H1=0;H2=0;

L1=1;L2=1;L3=1;if(L1==0){ delay(5);if(L1==0){ L1=0;H1=1;H2=1;if(H1==0)} //定義局部變量ij

//外層循環 for(i=0;i

{ m=1;return(m);} if(H2==0){ m=4;return(m);} } }

//KEY1鍵按下

//KEY4鍵按下

if(L2==0){ delay(5);if(L2==0){ L2=0;H1=1;H2=1;if(H1==0)

{ m=2;return(m);} if(H2==0){ m=5;return(m);} } }

//KEY5鍵按下 //KEY2鍵按下

if(L3==0){ delay(5);if(L3==0){ L3=0;H1=1;H2=1;if(H1==0){ m=3;

//KEY3鍵按下

}

return(m);} if(H2==0){ m=6;return(m);} } } return(0);

// KEY6鍵按下

/***主函數***/ main(){ P1M1=0x00;P1M0=0xff;

SCON=0x50;//設定串行口工作方式1 TMOD=0x20;//定時器1,自動重載,產生數據傳輸速率 TH1=0xfd;//數據傳輸率為9600 TR1=1;//啟動定時器1 P0&=0xf0;while(1){

//如果有按鍵按下 if(scan_key()){ SBUF=scan_key();//發送數據 while(!TI);TI=0;}

if(RI){ RI=0;}

// //

等待數據傳送 清除數據傳送標志

//是否有數據到來

// 清除數據傳送標志

temp=SBUF;

// 將接收到的數據暫存在temp中

P1=code0[temp];// 數據傳送到P1口輸出 delay(500);} } //延時500ms

五、實驗中遇到的問題及解決方法

(1)串行口和定時器的工作方式設定是關鍵,本次是按需傳輸的是兩位十六進制數,串行口為工作方式1,定時器為8位自動重載;(2)采用P0&=0xf0語句使4個數碼管靜態點亮;

(3)在發送和接受過程中,用標識位TI和RI來檢測發送和接受是否完成;(4)在用電腦和單片機進行串口通信測試時,電腦的傳世速率一定要和單片機的傳輸速率相等,否則顯示會出現錯誤。

指導老師簽字:

日期:

下載51藍牙串口通信給親參考word格式文檔
下載51藍牙串口通信給親參考.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    RS232串口通信原理簡介

    串口是計算機上一種非常通用設備通信的協議。大多數計算機包含兩個基于RS232的串口。串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS-232口。同時,串口......

    STC12C5A60S2串口通信keil與proteus調試 自己總結

    STC12C5A60S2串口調試 需要軟件: 在keil里安裝。在debug里設置仿真器為: 點擊MCU連接程序: RS232: 虛擬終端: 程序: #include "STC12C5A60S2.h" #include "intrins.h" typedef un......

    給祖**親的一封信(通用)(范文大全)

    給祖**親的一封信(通用5篇)在生活、工作和學習中,大家對書信都再熟悉不過了吧,書信是具有明確而特定的用途和接受對象的一種交際工具。你所見過的書信是什么樣的呢?以下是小編......

    給祖**親的一封信[范文模版]

    【篇一】親愛的媽媽:您好,請允許我這樣叫您!作為您眾多兒女中微不足道的一員,看著您為您的兒女七十年如一日的辛勤勞動,我十分不忍。在您七十華誕到來之際,我要向您致上我最崇高......

    給祖**親的一封信

    給祖國媽媽的一封信 敬愛的祖國媽媽: 您好! 祖國,我的媽媽,給您寫信,是想向您匯報我是怎樣快樂成長的。 1997年,香港回到了祖**親您的懷抱,洗涮了祖國百年的恥辱。數月后一個嬰兒......

    給祖**親的一封信(精選合集)

    給祖**親的一封信在平平淡淡的日常中,大家都不可避免地要接觸到書信吧,書信是人們相互交流情感與思想的工具。怎么寫信才能避免踩雷呢?下面是小編收集整理的給祖**親的一封......

    給祖**親的一封信

    給祖**親的一封信 親愛的祖國:您好! 作為在您高大肩膀庇護下長大的我,從小就在心中烙下了您的名字—-中國,那是埋藏在心底的一股熱浪,是隱藏在腦海深處的一種情懷,是眼神中隱約......

    給祖**親的一封信

    給祖**親的一封信 親愛的祖**親: 您好! 每當鮮艷的五星紅旗冉冉升起,每當雄壯的國歌激情奏起,我心中便洶涌澎湃,無比喜悅!我為是您的女兒而喜悅!自豪! 母親,您的幅員遼闊,您的壯......

主站蜘蛛池模板: 少妇大叫好爽受不了午夜视频| 成人国内精品久久久久影院| 久久久久国产精品熟女影院| 久久和欧洲码一码二码三码| 亚洲av中文无码乱人伦| 夜色福利站www国产在线视频| 国产精品女同一区二区在线| 亚洲熟妇少妇任你躁在线观看无码| 玩弄人妻少妇500系列| 亚洲国产精品无码久久九九大片| 亚洲欧洲国产成人综合在线| 精品无码成人网站久久久久久| 一本一道av无码中文字幕麻豆| 日本丰满白嫩大屁股ass| 性做久久久久久久免费看| 成人午夜电影福利免费| 亚洲欧美日韩成人高清在线一区| 久久午夜福利无码1000合集| 中文字幕一区二区三区波多野结衣| 国产成人女人毛片视频在线| 五月天激情电影| 欧美人妻aⅴ中文字幕| 无码精品a∨在线观看| 亚洲色成人影院在线观看| 免费人成视频| 国产亚洲精选美女久久久久| 成人国产精品无码网站| 国产成人无码aa精品一区| 日本熟妇色一本在线看| 日韩精品无码一区二区三区久久久| 人妻av无码专区久久| 无码孕妇孕交在线观看| 亚洲av无码av吞精久久| 老头天天吃我奶躁我的动图| 好了av四色综合无码| 国产欧美丝袜在线二区| 中字幕久久久人妻熟女| 精品无码专区亚洲| 欧美国产日韩在线三区| 精品免费久久久久久久| 九九热爱视频精品视频|