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

正文內(nèi)容

無線電子菜譜系統(tǒng)的設計及實現(xiàn)畢業(yè)論文(編輯修改稿)

2024-07-19 21:49 本頁面
 

【文章內(nèi)容簡介】 18B20之間只需要一條連接線即可。無需外部電源,用于讀寫和溫度轉(zhuǎn)換的電源可以從數(shù)據(jù)線本身獲得。圖310 DS18B20應用電路因為出廠時每個DS18B20都有一個獨特的片序列號,所以多只DS1820 可以同時連在一根單總線上,這樣就大大簡化了電路的設計,讀取某個DS18B20的溫度只需先進行片序列號匹配即可。 串口模塊同上位機通訊需要將TTL和RS232電平進行轉(zhuǎn)換,采用MAX232芯片完成這樣的功能,其原理圖如圖311。圖310 MAX232原理圖圖311 MAX232原理圖通訊時利用單片機的PP31來進行串口通訊。設計上位機程序時若采用事件驅(qū)動方式,由計算機直接管理時,字節(jié)之間不可控,而且單片機串行口和PC機串行口速率差別較大,接收程序一定要精心合理的設計,才能使傳輸穩(wěn)定可靠,否則很容易出現(xiàn)意想不到的問題。在調(diào)試過程中,如果不小心將串行口調(diào)試工具的波特率和開發(fā)板串行口的波特率設置為不同,就會出現(xiàn)錯誤。第四章 軟件的設計 開發(fā)調(diào)試工具驅(qū)動程序是硬件電路的靈魂,沒有驅(qū)動的硬件電路是沒有用的。STC89C516RD+是51類單片機,可以像開發(fā)其他51單片機驅(qū)動一樣開發(fā)它的驅(qū)動程序。單片機軟件開發(fā)平臺選擇比較流行的Keil uVision4,因為現(xiàn)在關(guān)于Keil uVision4軟件的資料很多,這樣上手就會很快[5]。圖41是該軟件的運行界面。圖41 Keil uVision4運行界面而開發(fā)上位機軟件則采用Visual C++ ,是微軟公司推出的一款優(yōu)秀開發(fā)工具。Visual C++ 、性能和控制力度的同時,給C++帶來了更高水平的生產(chǎn)效率。它具有可視化的界面,封裝了大量的類,使界面制作變的很簡單,使用它可以方便快捷地開發(fā)Windows環(huán)境下的應用程序。Visual C++ ,使用該控件程序員不必花時間去了解比較復雜的API函數(shù),通過簡單修改控件的屬性和使用控件提供的方法就可以實現(xiàn)對串口的配置,完成串口發(fā)送和接收數(shù)據(jù)[6]。圖42是該軟件的運行界面。圖42 Visual C++ 軟件調(diào)試整個數(shù)據(jù)傳輸系統(tǒng)有兩部分組成:與PC機相連的開發(fā)板為接收端,它不能移動,接收移動端發(fā)送過來的數(shù)據(jù),經(jīng)編碼成預定的格式向上位機發(fā)送數(shù)據(jù);可以移動的為移動端,它由開發(fā)板和無線數(shù)據(jù)傳輸?shù)饶K組成。由于兩端的地位和功能不同,因此對應的驅(qū)動程序也不同。 移動端硬件驅(qū)動程序移動端的硬件驅(qū)動程序主要功能有:驅(qū)動TFT彩屏、讀觸屏坐標、操作SD卡、播放語音、讀取實時溫度、無線發(fā)送點菜數(shù)據(jù)。對于程序的編寫如果按照以前那樣全部寫在一個文件里,大量的代碼,不易于維護及修改,程序出錯了難以定位,故采用構(gòu)件化的方式將各模塊的驅(qū)動程序分開來寫,然后再添加到工程,程序結(jié)構(gòu)清晰[7]。表41 移動端端口分配表模塊引腳名稱端口備注ILI9325TFT彩屏模塊RSP2^4復用WRP2^5復用CSP2^6不可復用RSTP2^7不可復用DATA_HP1不可復用DATA_LP0不可復用DS18B20溫度傳感器DATAP2^5復用XPT2046觸屏模塊DCLKP2^4復用CSP3^3不可復用DINP3^1未復用DOUTP2^0復用IRQP3^2不可復用WTV020SD語音模塊RST未使用CLKP2^2不可復用DIP2^1不可復用SD卡DCLKP2^5復用DIP2^4復用DOP3^6不可復用CSP3^7不可復用NRF24L01無線模塊MISOP3^0未復用MOSIP2^3未復用SCKP2^0復用CEP3^5不可復用CSNP3^4不可復用在寫程序之前需要將每個模塊的所用的端口分配好,由于本設計MCU的端口嚴重不足,不得不復用端口,而由端口復用所產(chǎn)生的問題在編程時也很難查出來,所以編寫程序時需要格外注意。本次設計采用的方法是,先分別調(diào)試每個模塊,然后再綜合,表41是經(jīng)過調(diào)試后定下的端口分配表。圖43是移動端主程序的流程圖,圖42為中斷流程圖。圖44 中斷流程圖圖43 移動端主程序流程圖其中“*輸入桌號”、“*點菜”里面均是死循環(huán),通過跳轉(zhuǎn)程序轉(zhuǎn)到下一流程,這樣設計也是仿照VC++的窗口編程,每一個窗口都是一個while(1){...}循環(huán),只有收到特定的消息或滿足特定的條件才轉(zhuǎn)到另一個流程,“*輸入桌號”、“*點菜”這兩個流程內(nèi)部的流程分別如圖4圖46。在圖44中斷流程圖中采用的是外部中斷0下降沿中斷方式,在觸屏有物體按下時,XPT2046會發(fā)出中斷信號IRQ,單片機進入中斷進行相應處理,在退出中斷時返回主程序繼續(xù)顯示實時溫度。圖45 “輸入桌號”流程圖在圖45中標識“”的對應于TFT屏幕上顯示的相應按鈕,而流程圖中的“跳轉(zhuǎn)到diancai”、“跳轉(zhuǎn)到end”,其中的字母標號是在程序中設置的某段程序的入口標號,當滿足條件時,如利用“goto diancai;”這樣的程序進行跳轉(zhuǎn),跳出死循環(huán),轉(zhuǎn)到下一個流程,類似于匯編里的JUMP指令,跳轉(zhuǎn)到某段程序的入口地址[8]。圖46 “點菜”流程圖在圖46中也用了圖45中的表示方法。并且在圖43主程序流程圖中用了“清全屏”,而在圖45“輸入桌號”流程圖和圖46“點菜”流程圖中用了“清屏”這是有區(qū)別的,因為單片機的刷屏速率不高,在程序開始時才用了“清全屏”,這是必須的,因為TFT彩屏初始化成功后顯示的是一系列雜色,所以必須將整個屏幕進行刷新,而之后在程序正常運行時用“清屏”只是進行局部刷新,只對需要改變的地方,進行寫入新數(shù)據(jù),退出時再恢復,這樣提高了運行效率。不求單項設計的最先進性,但求總體設計的合理性。在程序最后所發(fā)送的數(shù)據(jù)的格式為:桌號,菜1,菜2,...,菜n,0x63,0x73。其中菜n表示該菜品所對應的序號,存儲于數(shù)組menu_data中,最大可存儲100字節(jié)的數(shù)據(jù),其中0x63是‘c’的ASCII字碼符,在接收端通過判斷是否接收到該字符作為結(jié)束標志,而0x73是‘s’的ASCII字碼符,移動端發(fā)送數(shù)據(jù)時通過判斷該字符來結(jié)束發(fā)送。NRF24L01一次性最多只能發(fā)送32字節(jié)的數(shù)據(jù),當需要發(fā)送的數(shù)據(jù)非32的倍數(shù)時,就會使得發(fā)送的最后一組數(shù)據(jù)并不是每個都是有效的,在定義NRF24L01最大發(fā)送個數(shù)時,將其設置為1,這樣當遇到‘s’時停止發(fā)送,發(fā)送方式更靈活,軟件編程更方便。在本設計中單片機通過軟件模擬SPI方式與NRF24L01傳輸數(shù)據(jù),數(shù)據(jù)發(fā)送函數(shù)如下:/*************************************************************//*函數(shù):NRF24L01_SingleSend(unsigned char * tx_buf)/*功能:單個循環(huán)發(fā)送 tx_buf中數(shù)據(jù)/*************************************************************/void NRF24L01_SingleSend(unsigned char TxBuf[]){ unsigned char i=0。 while(TxBuf[i]!=39。s39。) NRF24L01_TxPacket(amp。TxBuf[i++])。 //Transmit Tx buffer data} 接收端硬件驅(qū)動程序接收端的硬件驅(qū)動程序主要有兩種功能:實現(xiàn)開發(fā)板通過串行口和PC機通信;實現(xiàn)開發(fā)板通過某些I/O口和無線數(shù)據(jù)傳輸模塊進行通信。表42 接收端端口分配表模塊引腳名稱端口備注NRF2401無線模塊MISOP2^5未復用MOSIP2^3未復用SCKP2^2未復用CEP2^1未復用CSNP2^4未復用串口通信模塊TXDP3^0未復用RXDP3^1未復用接收端僅有無線模塊和串口模塊,功能比較少,所以單片機的端口完全夠用,表47則為接收端的端口分配表。圖47 接收端主程序流程圖STC89C52RC單片機串行口的工作方式和波特率由控制寄存器SCON和特殊功能寄存器PCON組成。通過設置合適的波特率和幀格式,來實現(xiàn)開發(fā)板和PC機之間準確的數(shù)據(jù)傳遞。串行口可以通過軟件設置四種工作方式,各種工作方式的數(shù)據(jù)格式和波特率均有所不同,在本設計中將串行口工作于方式8位數(shù)據(jù)位、1位停止位、無校驗、波特率9600,用的函數(shù)為:void StartUART( void )//晶振12M{ TMOD = 0x20。 SCON = 0x50。 TH1 = 0xFD。 TL1 = TH1。 PCON = 0x00。 TR1 = 1。}接收端在接收到數(shù)據(jù)后將所有的數(shù)據(jù)轉(zhuǎn)換成ASCII碼,并且在每相鄰兩個數(shù)據(jù)之間插入一個‘a(chǎn)’以便于區(qū)分,轉(zhuǎn)換成形如“1a2a5a8a9a”這樣的字符串,其中第一個為桌號,其余數(shù)字為所點菜品對應的序號,該序號在上位機的數(shù)據(jù)庫里與菜單的序號也是一一對應的。數(shù)據(jù)編碼的函數(shù)如下:while(menu_data[j]!=39。\039。){ if(menu_data[j]=9) { send_data[i++]=menu_data[j++]|0x30。 send_data[i++]=39。a39。 } else { send_data[i++]=(menu_data[j]/10)|0x30。 send_data[i++]=(menu_data[j++]%10)|0x30。 send_data[i++]=39。a39。 } } send_data[i]=39。\039。因為現(xiàn)在設計的菜單數(shù)量還不是很多,菜單序號沒有上3位數(shù)字的,因此采用if(menu_data[j]=9){...}else{....}這樣的判斷足矣,最后在字符串結(jié)尾寫‘\0’結(jié)束符,向上位機發(fā)送數(shù)據(jù),采用的發(fā)送函數(shù)如下:while(send_data[i]!=39。\039。) R_S_Byte(send_data[i++])。 上位機程序設計上位機的功能主要有:對接收端發(fā)送來的數(shù)據(jù)進行解碼存儲到數(shù)據(jù)庫;設置串口相關(guān)信息;對歷史賬單進行管理;對菜單的添加、刪除、修改操作。上位機程序采用Visual C++ ,該工具集成大量的API函數(shù),利用其提供的方法可方便的編寫上位機軟件[9]。本次設計初步設計了四個基于對話框的窗口,為其創(chuàng)建的類有CWirelessMenuDlg、History、Setting、Updata四個類。而所有操作的基礎都是基于數(shù)據(jù)庫的,所以下面首先介紹數(shù)據(jù)庫的設計。(一)數(shù)據(jù)庫的設計在程序里由于涉及到了數(shù)據(jù)庫,所以首先要設計數(shù)據(jù)庫結(jié)構(gòu),存儲某桌賬單時需要的信息有桌號、點菜時間、點菜順序、點菜數(shù)、應付金額、付賬情況、點菜菜單,而存儲菜單時最基本的信息應包括菜品名稱、單價。這樣可分別設計BILL表、MENU表分別存儲賬單信息和菜單信息。數(shù)據(jù)庫采用Microsoft Access創(chuàng)建。表43和表44分別為BILL表和MENU表的結(jié)構(gòu)。表43 BILL表結(jié)構(gòu)字段名稱數(shù)據(jù)類型備注序號自動編號主鍵點菜順序數(shù)字點菜時間文本桌號數(shù)字點菜數(shù)數(shù)字應付金額數(shù)字付賬情況文本字段名稱數(shù)據(jù)類型備注點菜1文本點菜2文本續(xù)表 43在BILL表設置了兩個字段“點菜1”和“點菜2”,在存儲的菜單信息量不大的情況下將從下位機接受來的菜單信息存儲到“點菜1”下,“點菜2”下寫‘a(chǎn)’表示未存儲信息。而當所存儲的菜單的字符長度超過255時則將其余信息存儲到“點菜2”下,這樣兩個字段共同存儲的最大字符長度將達到510,完全能夠滿足要求。表44 MENU表結(jié)構(gòu)字段名稱數(shù)據(jù)類型備注序號數(shù)字主鍵菜品名稱文本單價數(shù)字在MENU表中將字段“序號”的數(shù)據(jù)類型設置成數(shù)字而非自動編號,主要是為了實現(xiàn)在程序中對該表的修改。在刪除該表中某條記錄時會造成“序號”的不連續(xù),若用自動編號則數(shù)據(jù)庫會標識該條記錄所對應的“序號”的唯一性,而無法用新的記錄進行填充,所以將其數(shù)據(jù)類型設置為數(shù)字,以便于修改。(二)上位機軟件的設計,表45列出了其中所擁有的控件資源及為其映射的消息和對應的消息處理函數(shù)。該窗口中主要完成的功能有:付賬;接收數(shù)據(jù)并對其處理刷新顯示;顯示今日賬單;點擊顯示每個賬單的詳情;進入各個子窗口的入口。由于本窗口需要操作數(shù)據(jù)庫,所以先介紹關(guān)于數(shù)據(jù)庫的操作。(1) import C:\\Program Files\\Common Files\\System\\ado\\no_namespace rename(EOF,adoEOF)語句引入數(shù)據(jù)庫
點擊復制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1