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

正文內(nèi)容

基于單片機的鍵盤無線數(shù)據(jù)通信系統(tǒng)畢業(yè)設(shè)計(編輯修改稿)

2024-07-19 20:43 本頁面
 

【文章內(nèi)容簡介】 51CPLD 開 發(fā) 板 ”中 , 綜 合 程 序 波 特 率 只 能 采 用 19200, 也 是 這 個 原 因 。 ( 3) 接 口 使 用 一 根 信 號 線 和 一 根 信 號 返 回 線 而 構(gòu) 成 共 地 的 傳 輸 形 式 , 這 種 共 地傳 輸 容 易 產(chǎn) 生 共 模 干 擾 , 所 以 抗 噪 聲 干 擾 性 弱 。在 MAX232 與單片機進(jìn)行通信時,串 行 口 的 SBUF 是 作 為 同 步 移 位 寄 存 器 使 用的 。 在 串 行 口 發(fā) 送 時 , SBUF 相 當(dāng) 于 一 個 并 行 進(jìn) 入 、 串 行 輸 出 的 移 位 寄 存 器 , 由 單片 機 的 內(nèi) 部 總 線 并 行 接 收 8 位 數(shù) 據(jù) , 并 從 RXD 信 號 線 串 行 輸 出 。 在 接 收 操 作 時 ,它 又 相 當(dāng) 于 一 個 串 行 輸 入 、 輸 出 的 移 位 寄 存 器 。 在 本 設(shè) 計 中 MAX232 與 單 片 機 的串 口 通 信 原 理 圖 如 下 所 示 :上圖為本設(shè)計應(yīng)用的 RS232 串行通信原理圖PS/2 接口的鍵盤與無線發(fā)射模塊的數(shù)據(jù)傳送應(yīng)用技術(shù)在本設(shè)計中 PS/2 鍵盤與單片機的連接方式如圖 9 所示。 口接 PS/2 數(shù)據(jù)線;(INT0)接 PS/2 時鐘線,即采用外部中斷 0 的方式來接受 PS/2 接口鍵盤的傳輸數(shù)據(jù)。①從設(shè)備到主設(shè)備的通信當(dāng)從設(shè)備向主設(shè)備發(fā)送數(shù)據(jù)時,首先檢查時鐘線,以確認(rèn)時鐘線是否為高電平。如果是高電平,從設(shè)備就可以開始傳輸數(shù)據(jù);反之,從設(shè)備要等待獲得總線的控制權(quán),第 15 頁 共 35 頁才能開始傳輸數(shù)據(jù)。傳輸?shù)拿恳粠?11 位組成,發(fā)送時序及每一位的含義如圖 7 所示。 圖 7 從設(shè)備到主設(shè)備的通信 每一幀數(shù)據(jù)中開始位總是為 0,數(shù)據(jù)校驗采用奇校驗方式,停止位始終為 1。從設(shè)備到主設(shè)備通信時,從設(shè)備總是在時鐘線為高時改變數(shù)據(jù)線狀態(tài),主設(shè)備在時鐘下降沿讀人數(shù)據(jù)線狀態(tài)。② 主設(shè)備到從設(shè)備的通信 主設(shè)備與從設(shè)備進(jìn)行通信時,主設(shè)備首先將時鐘線和數(shù)據(jù)線設(shè)置為“請求發(fā)送”狀態(tài),具體方式為:首先下拉時鐘線至少 100us 抑制通信 ,然后下拉數(shù)據(jù)線“請求發(fā)送”最后釋放時鐘線。在此過程中,從設(shè)備在不超過 10us 的間隔內(nèi)必須檢查這個狀態(tài),當(dāng)設(shè)備檢測到這個狀態(tài)時,它將開始產(chǎn)生時鐘信號。此時數(shù)據(jù)傳輸?shù)拿恳粠?12 位構(gòu)成,其時序和每一位含義如圖 8 所示。 圖 8 主設(shè)備到從設(shè)備的通信與從設(shè)備到主設(shè)備通信相比,其每幀數(shù)據(jù)多了一個 ACK 位。這是從設(shè)備應(yīng)答接收到字節(jié)的應(yīng)答位,由從設(shè)備通過拉低數(shù)據(jù)線產(chǎn)生,應(yīng)答位 ACK 總是為 0。主設(shè)備到從設(shè)備通信過程中,主設(shè)備總是在時鐘線為低電平時改變數(shù)據(jù)線的狀態(tài),從設(shè)備在時鐘上升沿讀人數(shù)據(jù)線狀態(tài)。STC89S52PS/2鍵盤GND GND+5V VCCCLKDATA3第 16 頁 共 35 頁圖 9 硬件連接電路 單片機接收完數(shù)據(jù)后便要進(jìn)入 nRF24L01 的發(fā)射模塊。在本設(shè)計中 nRF24L01 選擇 ShockBurstTM 收發(fā)工作模式。在 ShockBurstTM 發(fā)射流程中,接口引腳為 CE,CLK1,DATA,當(dāng)微控制器有數(shù)據(jù)要發(fā)送時,其把 CE 置高,使 nRF24L01 工作。當(dāng) nRF24L01 工作后,才把接收機的地址和要發(fā)送的數(shù)據(jù)按時序送入 nRF24L01,隨后微控制器把 CE 置低,激發(fā)nRF24L01 進(jìn)行 ShockBurstTM 發(fā)射。無線接收應(yīng)用技術(shù)在 nRF24L01 工作在 ShockBurstTM 接收流程中,接口引腳 CE、DR1 、CLK1 和DATA(接收通道 1),首先要配置本機地址和要接收的數(shù)據(jù)包大小。一但進(jìn)入接收狀態(tài),便把 CE 置高, 200us 后,nRF2401 進(jìn)入監(jiān)視狀態(tài),等待數(shù)據(jù)包的到來。當(dāng)接收到正確的數(shù)據(jù)包(正確的地址和 CRC 校驗碼),nRF2401 自動把字頭、地址和 CRC 校驗位移去,nRF2401 通過把 DR1(這個引腳一般引起微控制器中斷)置高通知微控制器,之后微控制器把數(shù)據(jù)從 nRF2401 移出,所有數(shù)據(jù)移完, nRF2401 把 DR1 置低,此時,如果CE 為高,則等待下一個數(shù)據(jù)包,如果 CE 為低,開始其它工作流程。六、PCB 電路板制作的關(guān)鍵技術(shù)材料PCB 電路圖第 17 頁 共 35 頁 圖 基于 PS/2 接口的無線數(shù)據(jù)傳送系統(tǒng)的 PCB 圖裝配圖元件清單第 18 頁 共 35 頁元件標(biāo)號 封裝 參數(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 第 19 頁 共 35 頁七、軟件設(shè)計流程圖主程序流程圖主程序先對系統(tǒng)初始化,接收機初始化后等待進(jìn)入中斷接收數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)傳給芯片轉(zhuǎn)換。發(fā)送機初始化后,等待 PS/2 的數(shù)據(jù)信號,采集轉(zhuǎn)換給射頻模塊,無線送出數(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 所示。第 20 頁 共 35 頁外部中斷產(chǎn)生鍵值數(shù)據(jù)?數(shù)據(jù)采集完?nRF24L01發(fā)射數(shù)據(jù)Y轉(zhuǎn)換NY返回N圖 發(fā)送端外部中斷子程序流程圖nRF24L01接收數(shù)據(jù)數(shù)據(jù)移位完畢?外部中斷Y返回送USB 轉(zhuǎn)換N第 21 頁 共 35 頁接收端外部中斷子程序流程圖發(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:第 22 頁 共 35 頁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。第 23 頁 共 35 頁 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()第 24 頁
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1