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

正文內(nèi)容

探討無線數(shù)據(jù)通信在mcu系統(tǒng)中的應用射頻無線鍵盤設計畢業(yè)論文(編輯修改稿)

2025-07-25 14:59 本頁面
 

【文章內(nèi)容簡介】 線,即采用外部中斷 0 的方式來接受 PS/2 接口鍵盤的傳輸數(shù)據(jù)。①從設備到主設備的通信當從設備向主設備發(fā)送數(shù)據(jù)時,首先檢查時鐘線,以確認時鐘線是否為高電平。如果是高電平,從設備就可以開始傳輸數(shù)據(jù);反之,從設備要等待獲得總線的控制權,才能開始傳輸數(shù)據(jù)。傳輸?shù)拿恳粠?11 位組成,發(fā)送時序及每一位的含義如圖 7 所示。 圖 7 從設備到主設備的通信 每一幀數(shù)據(jù)中開始位總是為 0,數(shù)據(jù)校驗采用奇校驗方式,停止位始終為 1。從設備到主設備通信時,從設備總是在時鐘線為高時改變數(shù)據(jù)線狀態(tài),主設備在時鐘下降沿讀人數(shù)據(jù)線狀態(tài)。② 主設備到從設備的通信 主設備與從設備進行通信時,主設備首先將時鐘線和數(shù)據(jù)線設置為“請求發(fā)送”狀態(tài),具體方式為:首先下拉時鐘線至少 100us 抑制通信 ,然后下拉數(shù)據(jù)線“請求發(fā)送”最后釋放時鐘線。在此過程中,從設備在不超過 10us 的間隔內(nèi)必須檢查這個狀態(tài),當設備檢測到這個狀態(tài)時,它將開始產(chǎn)生時鐘信號。此時數(shù)據(jù)傳輸?shù)拿恳粠?12 位構成,其時序和每一位含義如圖 8 所示。 圖 8 主設備到從設備的通信與從設備到主設備通信相比,其每幀數(shù)據(jù)多了一個 ACK 位。這是從設備應答接收到字節(jié)的應答位,由從設備通過拉低數(shù)據(jù)線產(chǎn)生,應答位 ACK 總是為 0。主設備到從設備通信過程中,主設備總是在時鐘線為低電平時改變數(shù)據(jù)線的狀態(tài),從設備在時鐘上升沿讀人數(shù)據(jù)線狀態(tài)。STC89S52PS/2鍵盤GND GND+5V VCCCLKDATA3圖 9 硬件連接電路 單片機接收完數(shù)據(jù)后便要進入 nRF24L01 的發(fā)射模塊。在本設計中 nRF24L01 選擇 ShockBurstTM 收發(fā)工作模式。在 ShockBurstTM 發(fā)射流程中,接口引腳為 CE,CLK1,DATA,當微控制器有數(shù)據(jù)要發(fā)送時,其把 CE 置高,使 nRF24L01 工作。當 nRF24L01 工作后,才把接收機的地址和要發(fā)送的數(shù)據(jù)按時序送入 nRF24L01,隨后微控制器把 CE 置低,激發(fā)nRF24L01 進行 ShockBurstTM 發(fā)射。無線接收應用技術在 nRF24L01 工作在 ShockBurstTM 接收流程中,接口引腳 CE、DR1 、CLK1 和DATA(接收通道 1),首先要配置本機地址和要接收的數(shù)據(jù)包大小。一但進入接收狀態(tài),便把 CE 置高, 200us 后,nRF2401 進入監(jiān)視狀態(tài),等待數(shù)據(jù)包的到來。當接收到正確的數(shù)據(jù)包(正確的地址和 CRC 校驗碼),nRF2401 自動把字頭、地址和 CRC 校驗位移去,nRF2401 通過把 DR1(這個引腳一般引起微控制器中斷)置高通知微控制器,之后微控制器把數(shù)據(jù)從 nRF2401 移出,所有數(shù)據(jù)移完, nRF2401 把 DR1 置低,此時,如果CE 為高,則等待下一個數(shù)據(jù)包,如果 CE 為低,開始其它工作流程。六、PCB 電路板制作的關鍵技術材料PCB 電路圖 圖 基于 PS/2 接口的無線數(shù)據(jù)傳送系統(tǒng)的 PCB 圖裝配圖元件清單元件標號 封裝 參數(shù)C1 104C2 104C3 104C4 104C5 104C6 104C7 104C8 104C9 104C10 220UC11 10UC12 10UC13 C14 20C15 20C16 20C17 20C18 100UC19 100UC20 100UC21 100UD1 led LEDD2 led  J1 sip4 ISPJ2 USB1 USBJ3 DB9RA/M DB9JP1 IDC10 24L01LED1 led LEDR1 1KR2 1KR3 1KR4 1KR5 10KR6 22R7 22RP1 SIP9 10KS1 BUT1 TESTU1 SOJ28 PDIUSBD12U2 DIP40 8051U3 DIP16 MAX232U4 AS1117a AMS1117Y1 XTAL1 6MY2 XTAL1 七、軟件設計流程圖主程序流程圖主程序先對系統(tǒng)初始化,接收機初始化后等待進入中斷接收數(shù)據(jù),轉換數(shù)據(jù)傳給芯片轉換。發(fā)送機初始化后,等待 PS/2 的數(shù)據(jù)信號,采集轉換給射頻模塊,無線送出數(shù)據(jù)。主程序流程圖如下圖所示。開始系統(tǒng)初始化外部中斷N發(fā)送數(shù)據(jù)Y圖 發(fā)送機主程序流程圖開始系統(tǒng)初始化外部中斷N接收數(shù)據(jù)傳給電腦Y接收機主程序流程圖子程序流程圖在有外部中斷發(fā)生時,表示 PS/2 接口的鍵盤將向單片機發(fā)送數(shù)據(jù),待數(shù)據(jù)發(fā)送完成后,單片機保存數(shù)據(jù)并由無線發(fā)射模塊發(fā)射出去。其程序流程圖如圖 12 所示。外部中斷產(chǎn)生鍵值數(shù)據(jù)?數(shù)據(jù)采集完?nRF24L01發(fā)射數(shù)據(jù)Y轉換NY返回N圖 發(fā)送端外部中斷子程序流程圖nRF24L01接收數(shù)據(jù)數(shù)據(jù)移位完畢?外部中斷Y返回送USB 轉換N接收端外部中斷子程序流程圖發(fā)射主程序include include include define uchar unsigned char define uint unsigned intsbit KB_CLK=P3^3。sbit KB_DATA=P3^2。uint n=0。void Delay_NS(uint x){ for(。x0。x)。}void delay_nms(unsigned int t){ unsigned int i,j。 for(i=0。it。i++) for(j=0。j120。j++)。}void Send_Key(uchar dat){uint i。 KB_CLK=0。 Delay_NS(10)。 KB_DATA=0。 KB_CLK=1。 while(KB_CLK)。 KB_DATA=0。 while(!KB_CLK)。 for(i=0。i 8。i++){while(KB_CLK) _nop_()。 KB_DATA = datamp。0x01。 if(KB_DATA) n++。 while(!KB_CLK) _nop_()。 dat=1。 }switch(n){case 0:case 2:case 4:case 6:KB_DATA =1。break。case 1:case 3:case 5:case 7:KB_DATA =0。break。default:break。}while(KB_CLK) _nop_()。 while(KB_CLK)_nop_()。 KB_DATA =1。 while(!KB_CLK) _nop_()。 while(KB_CLK) _nop_()。 while(!KB_CLK) _nop_()。 }uchar Key_Scan(void){ uchar i,key_temp。 KB_CLK=1。 KB_DATA=1。 key_temp=0。while(KB_CLK)。 for(i=0。i8。i++) { key_temp=1。 while(!KB_CLK)。 while(KB_CLK)。 _nop_()。 if(KB_DATA) { key_temp|=0x80。 } }while(KB_CLK)。 return key_temp。}unsigned char key2asc(unsigned char Key){ unsigned char temp=0xff,i。 for(i=0。i49。i++){ if(Key==kbdasciicode[i][0]) { temp= kbdasciicode[i][1]。 break。 }}if(temp==0xff) { for(i=0。i37。i++){ if(Key==kbdcontrolcode[i][0]) { temp= kbdcontrolcode[i][1]。 break。 }} } if(temp==0xff) { for(i=0。i18。i++){ if(Key==E0startedcode[i][0]) { temp= E0startedcode[i][1]。 break。 }} } return temp。}uchar Get_Key(void){ uchar Key_Code[3],temp=0xff。 Key_Code[0]=Key_Scan()。 Key_Code[1]=Key_Scan()。 Key_Code[2]=Key_Scan()。 temp=key2asc(Key_Code[0])。 if(temp!=0xff)nRF24L01_TxPacket(amp。temp)。 putchar(temp)。 Delay_NS(2022)。 return Key_Code[0]。}void LED_Indication(){ Send_Key(0xED)。 Delay_NS(10)。 Send_Key(0x07)。 Delay_NS(10)。}int main(){uchar Key_Code。LED_Indication()。UsartInt()。Init_NRF24L01()。 for(。) { Key_Code=Get_Key()。 P1^=1。 if((Key_Code==0x77)||(Key_Code==0x58)) { P1^=2。 } delay_nms(100)。 }}接收主程序include include include include void SendReport(uint8 hid_code){ u
點擊復制文檔內(nèi)容
語文相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1