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

正文內(nèi)容

基于單片機無線電子點菜系統(tǒng)硬件設(shè)計及實現(xiàn)畢業(yè)論文設(shè)計-資料下載頁

2025-06-27 19:21本頁面
  

【正文】 實現(xiàn)開發(fā)板通過某些 I/O口和無線數(shù)據(jù)傳輸模塊進行通信。STC89C58RD+單片機的串行口是一個全雙工通信接口,即能同時進行發(fā)送和接收,它可以作 UART用,也可以作為同步移位寄存器用,其禎格式和波特率可以通過軟件編程來設(shè)置,在使用上非常方便。Vb bnnjm基于單片機的無線點菜系統(tǒng)的硬件設(shè)計及實現(xiàn) 第四章 硬件驅(qū)動程序和串行口調(diào)試工具26STC89C58RD+單片機串行口的工作方式和波特率由控制寄存器 SCON和特殊功能寄存器 PCON組成。串行口控制寄存器 SCON:D7 D6 D5 D4 D3 D2 D1 D0SM0 SM1 SM2 REN TB8 RB8 TI RI特殊功能寄存器 PCON:D7 D6 D5 D4 D3 D2 D1 D0SMOD串行口可以通過軟件設(shè)置四種工作方式,各種工作方式的數(shù)據(jù)格式和波特率均有所不同,這四種工作方式如下:1. 方式 0當(dāng)設(shè)定 SMSM0 為 00時,串行口工作于方式 0,在方式 0下,RXD 為數(shù)據(jù)輸入/輸出端,TXD 為同步脈沖輸出端,發(fā)送或接收的數(shù)據(jù)為 8位,低位在前,高位在后,方式 0的波特率固定震蕩頻率的 1 /12,也就是每一機器周期傳送一位數(shù)據(jù)。方式 0可以外接移位寄存器,將串行口擴展為并行口,也可以外接同步輸入/輸出設(shè)備。發(fā)送完畢后,硬件自動將 TI置 1。再次發(fā)送數(shù)據(jù)前,需要軟件將 TI位清 0。REN為 1時,單片機允許接收數(shù)據(jù)。RXD 為數(shù)據(jù)接收端,接受數(shù)據(jù)保存到 SBUF接收緩沖器中。發(fā)送完畢后,硬件自動將 RI置 1。再次接收數(shù)據(jù)前,需要通過軟件將 RI清 0。2. 方式 1當(dāng)設(shè)定 SMSM0 為 01時,串行口工作方式 1。方式 1為波特率可變的 8位異步通信方式,由 TXD發(fā)送 RXD接收,一幀數(shù)據(jù)為 10位,1 位起始位(低電平) ,8位數(shù)據(jù)位(低位在前)和 1位停止位(高電平) ,波特率取決于定時器 的 T 溢出率(1/溢出周期)和波特率的選擇位 SMOD。 2和方式 3 當(dāng)設(shè)定 SM0、SM1 為 10或 11時,串行口工作于方式 2或方式 3,這兩種方式都是 9位異步通信,僅波特率不同,適用于多機通信。在方式 2或方式 3下,數(shù)據(jù)由TXD發(fā)送 RXD接收,1 幀數(shù)據(jù)為 11位,1 位起始位(低電平) ,8 位數(shù)據(jù)位(低位在前) ,1 位可編程位(第 9位數(shù)據(jù),用作奇偶校驗或地址/數(shù)據(jù)選擇) ,1 位停止位(高電平) 。與方式 1相比,多了一位可編程位,發(fā)送時,第 9位數(shù)據(jù)為 TB8,接收時,第 9位數(shù)據(jù)送入 RB8。 基于單片機的無線點菜系統(tǒng)的硬件設(shè)計及實現(xiàn) 第四章 硬件驅(qū)動程序和串行口調(diào)試工具27通過以上單片機串行口各種工作方式的比較,由于使用一個開發(fā)板和 PC機進行單獨的通信,因此工作方式 1比較適合系統(tǒng)的要求。通過設(shè)置合適的波特率和幀格式,來實現(xiàn)開發(fā)板和 PC機之間準(zhǔn)確的數(shù)據(jù)傳遞。由于 PC機和單片機的處理速度的不同,PC 機給開發(fā)板發(fā)送數(shù)據(jù)時,單片機采用中斷的方式進行數(shù)據(jù)接收。通過軟件設(shè)置單片機的傳輸屬性參數(shù)為“9600,N,8,1” ,來實現(xiàn)和 PC機端串行口傳輸速率同步。開發(fā)板向 PC機發(fā)送數(shù)據(jù)時,采用查詢方式,這樣可以節(jié)省單片機有限的資源。開發(fā)板還要通過專門的接口和無線數(shù)據(jù)傳輸模塊進行數(shù)據(jù)交換,由于系統(tǒng)設(shè)計為點對點通信,因此只使用了 nRF2401一個信道。nRF2401 的數(shù)據(jù)傳輸方式為同步傳輸,因此使用普通的 I/O口通過軟件方式模擬 SPI方式傳輸。nRF2401有四種工作模式:收發(fā)模式,配置模式,空閑模式和關(guān)機模式 [16][17]。工作模式由 PWR_UP 、CE、TX_EN 和 CS三個引腳決定,詳見表 。表 nRF2401 的各種工作模式的設(shè)置方式工作模式 PWR_UP CE CS收發(fā)模式 1 1 0配置模式 1 0 1空閑模式 1 0 0關(guān)機模式 0 * *前文已經(jīng)講過有關(guān) nRF2401的收發(fā)方式,這里重點討論一下它的配置方式。nRF2401的所有配置工作都是通過 CS、CLK1 和 DATA三個引腳完成,把其配置為ShockBurstTM收發(fā)模式需要 15字節(jié)的配置字。ShockBurst TM的配置字可以分為以下四個部分:(1) 數(shù)據(jù)寬度:聲明射頻數(shù)據(jù)包中數(shù)據(jù)占用的位數(shù)。這使得 nRF2401能夠區(qū)分接收數(shù)據(jù)包中的數(shù)據(jù)和 CRC校驗碼;(2) 地址寬度:聲明射頻數(shù)據(jù)包中地址占用的位數(shù)。這使得 nRF2401能夠區(qū)分地址和數(shù)據(jù);(3) 地址:接收數(shù)據(jù)的地址,有通道 1的地址和通道 2的地址;(4) CRC:使 nRF2401能夠生成 CRC校驗碼和解碼。 nRF2401的配置字如表 : 在配置模式下要保持 PWR_UP引腳為高電平,CE 引腳為低電平,配置字從最高位開始,依次寫入 nRF2401。在 CS引腳的下降沿,新送入的配置字開始工作?;趩纹瑱C的無線點菜系統(tǒng)的硬件設(shè)計及實現(xiàn) 第四章 硬件驅(qū)動程序和串行口調(diào)試工具28表 nRF2401 的配置字位 位數(shù) 名字 功能143:12024 TEST 保留119:1128 DATA2_W 接收頻道 2有效數(shù)據(jù)長度111:1048 DATA1_W 接收頻道 1有效數(shù)據(jù)長度103:64 40 ADDR2 接收頻道 2的地址,最高為 5字節(jié)63:24 40 ADDR1 接收頻道 1的地址,最高為 5字節(jié)23:18 6 ADDR_W 接受頻道地址位數(shù)17 1 CRC_L 8位或 16位 CRC校驗ShockbBrst TM 配置16 1 CRC_EN 使能 CRC校驗15 1 RX2_EN 使能第二頻道14 1 CM 通信方式設(shè)置13 1 RFDR_SB 發(fā)射數(shù)據(jù)速率12:10 3 XO_F 晶震頻率9:8 2 RF_PWR 發(fā)射輸出電源7:1 7 RF_CH 頻道設(shè)置常用器件配置0 1 RX_EN 接收或發(fā)送操作開發(fā)板通過串行口和 PC機交換數(shù)據(jù)的流程圖如下:開始初始化串行口循環(huán)等待觸發(fā)條件開發(fā)板上有鍵按下否 是RI=1否ACC=SBUF將數(shù)據(jù)在數(shù)碼管上顯示將數(shù)據(jù)發(fā)送到串口發(fā)送緩沖區(qū),關(guān)中斷TI=1?否基于單片機的無線點菜系統(tǒng)的硬件設(shè)計及實現(xiàn) 第四章 硬件驅(qū)動程序和串行口調(diào)試工具29圖 開發(fā)板和 PC 機通過串行口交 換數(shù)據(jù)的流程圖開發(fā)板通過 IO口和無線數(shù)據(jù)傳輸模塊進行數(shù)據(jù)交換的流程圖為圖 。圖 開發(fā)板通 過 IO 口和無線數(shù)據(jù)傳輸模塊進行數(shù)據(jù)交換的流程圖 移動端驅(qū)動程序移動端的開發(fā)板的結(jié)構(gòu)和 PC機端的開發(fā)板的結(jié)構(gòu)完全相同,但由于它不需要和 PC機通信,只需要和無線數(shù)據(jù)傳輸模塊進行通信。因此相對另一端的驅(qū)動簡單一些。具體編程規(guī)則在上一節(jié)已經(jīng)詳細敘述,這里不再多說,具體的程序是 PC機端程序的一部分。 串行口調(diào)試工具串行口調(diào)試工具是用微軟公司的 visual c++[20][21]開發(fā)的。幾乎所有世界級的軟件,從業(yè)界領(lǐng)先的 Web瀏覽器到面向任務(wù)的企業(yè)應(yīng)用,都是使用 Microsoft Visual C++開發(fā)系統(tǒng)來開發(fā)的。要用 C++來開發(fā) Windows和 Web上的高性能應(yīng)用程序,Visual C++是效率最高的首選工具。Visual C++ 、性能和控制力度的同時,給 C++帶來了更高水平的生產(chǎn)效率。它具有可視化的界面,封裝了大量的類,使界面制作變的很簡單,使用它可以方便快捷地開發(fā) Windows環(huán)境下的應(yīng)用程序。visual c++ Msm[20][21]控件,使用該控件程序員不必花時間去了解比較復(fù)雜的 API函數(shù),通過簡單修改控件的屬性和使發(fā)送完畢,開中斷開始配置 nRF2401 的工作方式循環(huán)等待觸發(fā)條件DR1=1否是有數(shù)據(jù)發(fā)送否將數(shù)據(jù)接收到開發(fā)板將數(shù)據(jù)發(fā)送到開發(fā)板是基于單片機的無線點菜系統(tǒng)的硬件設(shè)計及實現(xiàn) 第四章 硬件驅(qū)動程序和串行口調(diào)試工具30用控件提供的方法就可以實現(xiàn)對串口的配置,完成串口發(fā)送和接收數(shù)據(jù)。串行端口的本質(zhì)功能是作為 CPU和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)據(jù)從 CPU經(jīng)過串行端口發(fā)送出去時,字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位。在接收數(shù)據(jù)時,串行的位被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。 在 Windows環(huán)境下,串口是系統(tǒng)資源的一部分。 應(yīng)用程序要使用串口進行通信,必須在使用之前向操作系統(tǒng)提出資源申請要求(打開串口) ,通信完成后必須釋放資源(關(guān)閉串口) 。32 位下串口通信程序可以用兩種方法實現(xiàn):利用 ActiveX控件;使用 API通信函數(shù)。在本次課程設(shè)計中,所用到的是 MFC的MSComm控件,下面先將這個關(guān)鍵的控件做一下簡單的介紹。Microsoft Communications Control(以下簡稱 MSComm)是 Microsoft公司提供的簡化 Windows下串行通信編程的 ActiveX控件,為應(yīng)用程序提供串行通信功能,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。MSComm 控件在串口編程時非常方便,其實際上是調(diào)用了 API函數(shù),但我們不必再了解復(fù)雜的 API函數(shù)就可控制串行通信。通信的過程,實際上是對屬性的操作和對控件事件的響應(yīng)。在 Windows操作系統(tǒng)中,串行通信采用“事件通知”方式,支持?jǐn)?shù)據(jù)按塊傳送。進行通信時,Windows 開辟一個用戶定義的輸入輸出緩沖區(qū),每接收一個字符就產(chǎn)生一個低級硬件中斷,串行驅(qū)動程序立即取得控制權(quán),并將字符放入輸入數(shù)據(jù)緩沖區(qū),然后將控制權(quán)返還正在運行的應(yīng)用程序。如果輸入數(shù)據(jù)緩沖區(qū)滿了,驅(qū)動程序用當(dāng)前定義的流控制機制通知發(fā)送方停止發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)也采用類似的處理方式,應(yīng)用程序?qū)⑿枰l(fā)送的數(shù)據(jù)放入輸出數(shù)據(jù)緩沖區(qū),串口每發(fā)送一個字符就產(chǎn)生一個低級硬件中斷。Visual C++ Msm提供了功能完善的串口數(shù)據(jù)的發(fā)送和接收功能,Msm 控件具有兩種處理方式:一是事件驅(qū)動(Event-driven)方法,一是查詢法。1)事件驅(qū)動方式。當(dāng)通信事件發(fā)生時,MSCOMM 控件會觸發(fā) OnComm事件,調(diào)用者可以捕獲該事件,通過檢查其 CommEvent屬性便可確認(rèn)發(fā)生的是哪種事件或錯誤,從而進行相應(yīng)的處理。這種方法的優(yōu)點是響應(yīng)及時、可靠性高。 2)查詢方式。在程序的每個關(guān)鍵功能之后,可以通過檢查 CommEvent屬性的值來查詢事件和錯誤。如果應(yīng)用程序較小,這種方法可能更可取。例如,如果寫一個簡單的電話撥號程序,則沒有必要每接收 1個字符都產(chǎn)生事件,因為惟一等待接收的字符是調(diào)制解調(diào)器的確定響應(yīng)。在使用 MSCOMM控件時,1 個 MSCOMM控件只能同時對應(yīng) 1個串口。如果應(yīng)用程序需要訪問和控件多個串口,那么必須使用多個 MSCOMM控件。 在 VC++中,MSCOMM 控件只對應(yīng)著 1個 C++類CMSComm。由于 MSCOMM控件本身沒有提供方法,所以 CMSComm類除了 Create()成員函數(shù)外,其他的函數(shù)都是基于單片機的無線點菜系統(tǒng)的硬件設(shè)計及實現(xiàn) 第四章 硬件驅(qū)動程序和串行口調(diào)試工具31Get/Set函數(shù)對,用來獲取或設(shè)置控件的屬性。MSCOMM 控件也只有 1個 OnComm事件,用來向調(diào)用者通知有通信事件發(fā)生。 MSCOMM控件有許多很重要的屬性,限于篇幅只給出幾個較為重要和常用的屬性。表 MSCOMM 控件的重要屬性屬 性 說 明CommPort 通信端口號Settings 以字符串形式表示的波特率、奇偶校驗、數(shù)據(jù)位PortOpen 通信端口的狀態(tài),打開或是關(guān)閉Input 接收數(shù)據(jù)Output 發(fā)送數(shù)據(jù)InputMode 接收數(shù)據(jù)的類型:0 為文本;1 為二進制 表 程序中用到的所有控件,以及它們的 ID控件 ID 標(biāo)題按鈕 ID_SEND 發(fā)送按鈕 ID_CLEAR 清空編輯框 IDC_EDIT_SEND編輯框 IDC_EDIT_RCV靜態(tài)文本 IDC_STATIC 接收緩沖區(qū)靜態(tài)文本 IDC_STATIC 發(fā)送緩沖區(qū)組框 IDC_STATIC 端口選擇單選按鈕 IDC_1 端口 1單選按鈕 IDC_2 端口 2msm IDC_MSCOMM表 用到的變量和變量的類型Control IDS Type MemberIDC_EDIT_SEND CString m_str_sendIDC_EDIT_RCV CString m_str_recvIDC_MSCOMM CMSComm m_msmObject IDS Messages FunctionID_SEND BN_CLICKED OnSendID_CLEAR BN_CLICKED OnClrIDC_1 BN_CLICKED On_Com1IDC_2 BN_CLICKED On_Com2IDC_MSComm OnComm OnComm基于單片機的無線點菜系統(tǒng)的硬件設(shè)計及實現(xiàn) 第四章 硬件驅(qū)動程序和串行口調(diào)試工具32第一步:初始化串行口。調(diào)用 SetCommPort()函數(shù),選擇使用的端口好,然后設(shè)置波特率發(fā)送接收的處理方式,以及數(shù)據(jù)的傳輸方式,最后將串口打開。第二步:發(fā)送數(shù)據(jù)。將要發(fā)送的字符串變成特定的類型后,調(diào)用函數(shù)SetOutput() ,將數(shù)據(jù)發(fā)送到發(fā)送緩沖區(qū)第三步:接受數(shù)據(jù)。將接收緩沖區(qū)中的數(shù)據(jù)通過 GetInput()函數(shù)讀出,并將它轉(zhuǎn)換為 Cstring類型,顯示在界面上。程序的各個主要部分和一些流程圖: (1)登陸界面后,程序首先
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1