freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

紅外異步數(shù)字通信的數(shù)據(jù)采集裝置設(shè)計與實現(xiàn)畢業(yè)論文(編輯修改稿)

2025-07-25 01:54 本頁面
 

【文章內(nèi)容簡介】 章 系統(tǒng)軟件設(shè)計 系統(tǒng)總流程發(fā)送機及接收機構(gòu)成了其系統(tǒng)軟件部分中的單片機程序。開 始系統(tǒng)初始化返回 數(shù)據(jù)顯示是否接到前導碼信號 開 始系統(tǒng)初始化發(fā)送數(shù)據(jù)數(shù)據(jù)顯示返回按鍵識別,看是否有鍵值要發(fā)送NN圖41 系統(tǒng)總流程圖 紅外數(shù)據(jù)通信的編碼格式起始位和8個數(shù)據(jù)位共同構(gòu)成了系統(tǒng)設(shè)計中的幀格式。發(fā)送端在進行數(shù)據(jù)的傳送時按照一定的先后順序進行,遵循著先高后低的原則,并且重要的數(shù)據(jù)具有優(yōu)先傳送的特權(quán)。其具體的幀格式如圖42所示。圖42 數(shù)據(jù)幀格式:圖43調(diào)制后的起始位,調(diào)制后的數(shù)據(jù)位0:圖44調(diào)制后的數(shù)據(jù)位0調(diào)制后的數(shù)據(jù)位1:圖45調(diào)制后的數(shù)據(jù)位1在1ms周期內(nèi)傳送38khz的紅外信號 主機程序include include define uchar unsigned char // 變量定義 sbit BEEP=P2^7。sbit KEY1=P0^0。const uchar data BRGR1_DATA=9。 //波特率設(shè)為2400bit/sconst uchar data BRGR0_DATA=0xb4。//函數(shù)聲明void CCU_Ini()。void UART_Ini()。void SendData()。void RcvData(uchar *pbuf)。bit Compare(uchar *pbuf)。void Delay(uchar k)。//主程序開始void main(){ uchar RcvBuf[16]。 //接收數(shù)據(jù)用緩沖區(qū) P0M1=P0M2=0。 P1M1=P1M2=0。 //P0,P1口設(shè)置為準雙向 P2M1=P2M2=0xc0。 //, CCU_Ini()。 //CCU模塊初始化,用以產(chǎn)生38KHz調(diào)制信號 UART_Ini()。 while(1) { while(KEY1)。 SendData()。 //發(fā)送16字節(jié)數(shù)據(jù) Delay(1)。 RcvData(RcvBuf)。 //接收16字節(jié)數(shù)據(jù) if(Compare(RcvBuf)==1) //比較接收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù) { BEEP=0。 //如果正確則蜂鳴器短響一聲 Delay(1)。 BEEP=1。 } else { BEEP=0。 //如果錯誤則蜂鳴器長響一聲 Delay(5)。 BEEP=1。 } } }名稱: SendData()功能: 通過UART連續(xù)發(fā)送16字節(jié)數(shù)據(jù)(0~15)入口參數(shù):無出口參數(shù):無注意: 此程序采用查詢方式發(fā)送。void SendData(){ uchar i。 TI=0。 for(i=0。i16。i++) { SBUF=i。 while(!TI)。 TI=0。 } }名稱: RcvData()功能: 通過UART連續(xù)接收16字節(jié)數(shù)據(jù)入口參數(shù): pbuf用于接收數(shù)據(jù)的緩沖區(qū)首地址出口參數(shù): 接收到的16字節(jié)數(shù)據(jù)位于接收緩沖區(qū)注意: 此程序采用查詢方式進行接收。由于采取半雙工通信,所以接收數(shù)據(jù)之前要打開接收允許,接收完畢之后要關(guān)閉接收允許。void RcvData(uchar *pbuf){ uchar i。 REN=1。 FE=0。 RI=0。 for(i=0。i16。i++) { while(!RI)。 RI=0。 pbuf[i]=SBUF。 } REN=0。}名稱: Compare()功能: 比較緩沖區(qū)中的內(nèi)容是否為0~15入口參數(shù): pbuf需要比較的緩沖區(qū)首地址出口參數(shù): 比較正確則返回1,否則返回0。bit Compare(uchar *pbuf){ uchar i。 for(i=0。i16。i++) { if(pbuf[i]!=i) { return(0)。 } } return(1)。}名稱: CCU_Ini()功能: CCU模塊初始化,使OCA()輸出38KHz,50%占空比的PWM波,作為紅外線的載波,使用6MHz晶振時,CCU頻率=((6000000/2)/6)*32=16MHz定時器重裝值=CCU頻率/紅外線載頻=16000000/38000=421=0x1a5void CCU_Ini(){ TOR2H=0x01。 //定時器重裝值 TOR2L=0xa5。 OCRAH=0x00。 //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比為50% OCRAL=0xd2。 TCR21=0x85。 //PLL預分頻為5+1 CCCRA=1。 //非反相的PWM, TCR20=0。 PLEEN=1。 while(!PLEEN)。 TCR20|=3。 //啟動定時器,非對稱PWM模式}名稱: UART_Ini()功能: UART初始化,波特率2400bit/s void UART_Ini(){ PCON=0。 SSTAT=0。 //雙緩沖禁止,中斷禁止,采用查詢方式發(fā)送和接收 SCON=0x40。 //串口模式1,接收禁止 PCON|=0x40。 //SMOD0=1,SCON的位7作為FE BRGCON=0。 BRGR1=BRGR1_DATA。 BRGR0=BRGR0_DATA。 BRGCON=3。 //啟動UART的波特率發(fā)生器}名稱: Delay()功能: *k秒(振蕩器為6MHz)入口參數(shù):k延時時間出口參數(shù):無注意: 如果入口參數(shù)k等于0,則不延時而直接返回。void Delay(uchar k){ uchar i,j。 if(k==0) { return。 } for(。k。k) { for(j=200。j。j) // { for(i=i。i) { _nop_()。 _nop_()。 _nop_()。 _nop_()。 } } }} 從機程序void main(){ P0M1=P0M2=0x80。 //,其他為準雙向 P1M1=P1M2=0x01。 //TXD()設(shè)置為開漏,其他為準雙向 CCU_Ini()。 //CCU模塊初始化,用以產(chǎn)生38KHz調(diào)制信號 UART_Ini()。 while(1) { while(KEY1)。 SendData()。 //發(fā)送16字節(jié)數(shù)據(jù) Delay(1)。 RcvData(RcvBuf)。 //接收16字節(jié)數(shù)據(jù) if(Compare(RcvBuf)==1) //比較接收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù) { BEEP=0。 //如果正確則蜂鳴器短響一聲 Delay(1)。 BEEP=1。 } else { BEEP=0。 //如果錯誤則蜂鳴器長響一聲 Delay(5)。 BEEP=1。 } } }名稱: SendData()功能: 通過UART連續(xù)發(fā)送16字節(jié)數(shù)據(jù)(0~15)入口參數(shù):無出口參數(shù):無注意: 此程序采用查詢方式發(fā)送。void SendData(){ uchar i。 TI=0。 for(i=0。i16。i++) { SBUF=i。 while(!TI)。 TI=0。 } }名稱: RcvData()功能: 通過UART連續(xù)接收16字節(jié)數(shù)據(jù)入口參數(shù): pbuf用于接收數(shù)據(jù)的緩沖區(qū)首地址出口參數(shù): 接收到的16字節(jié)數(shù)據(jù)位于接收緩沖區(qū)注意: 此程序采用查詢方式進行接收。由于采取半雙工通信,所以接收數(shù)據(jù)之前要打開接收允許,接收完畢之后要關(guān)閉接收允許。void RcvData(uchar *pbuf){ uchar i。 REN=1。 FE=0。 RI=0。 for(i=0。i16。i++) { while(!RI)。 RI=0。 pbuf[i]=SBUF。 } REN=0。}名稱: Compare()功能: 比較緩沖區(qū)中的內(nèi)容是否為0~15入口參數(shù): pbuf需要比較的緩沖區(qū)首地址出口參數(shù): 比較正確則返回1,否則返回0。bit Compare(uchar *pbuf){ uchar i。 for(i=0。i16。i++) { if(pbuf[i]!=i) { return(0)。 } } return(1)。}名稱: CCU_Ini()功能: CCU模塊初始化,使OCA()輸出38KHz,50%占空比的PWM波,作為紅外線的載波使用6MHz晶振時,CCU頻率=((6000000/2)/6)*32=16MHz,定時器重裝值=CCU頻率/紅外線載頻=16000000/38000=421=0x1a5void CCU_Ini(){ TOR2H=0x01。 //定時器重裝值 TOR2L=0xa5。 OCRAH=0x00。 //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比為50% OCRAL=0xd2。 TCR21=0x85。 //PLL預分頻為5+1 CCCRA=1。 //非反相的PWM, TCR20=0。 PLEEN=1。 while(!PLEEN)。 TCR20|=3。 //啟動定時器,非對稱PWM模式}名稱: UART_Ini()功能: UART初始化,波特率2400bit/s void UART_Ini(){ PCON=0。 SSTAT=0。 //雙緩沖禁止,中斷禁止,采用查詢方式發(fā)送和接收 SCON=0x40。 //串口模式1,接收禁止 PCON|=0x40。 //SMOD0=1,SCON的位7作為FE BRGCON=0。 BRGR1=BRGR1_DATA。 BRGR0=BRGR0_DATA。 BRGCO
點擊復制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1