在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于單片機(jī)的無線電子點(diǎn)菜系統(tǒng)硬件方案設(shè)計

            基于單片機(jī)的無線電子點(diǎn)菜系統(tǒng)硬件方案設(shè)計

            作者: 時間:2012-09-14 來源:網(wǎng)絡(luò) 收藏

            4.2.2程序設(shè)計原理
            第一步:初始化串行口。調(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)登陸界面后,程序首先將接收緩沖區(qū)和發(fā)送緩沖區(qū)清空
            程序如下:
            m_str_send=” “;
            m_str_recv=” “;
            UpdateData(FALSE);
            (2)然后進(jìn)行串行口的初始化,也即是設(shè)置MSComm控件的各種屬性。首先要進(jìn)行端口的選擇,由于所用到的計算機(jī)只有兩個串行口,因此本程序只給了兩個選擇,具體的程序代碼如下:
            void CMyDlg::On_Com1()
            {
            if(m_mscomm.GetPortOpen())
            m_mscomm.SetPortOpen(FALSE);
            m_mscomm.SetCommPort(1);
            m_mscomm.SetSettings(”9600,n,8,1″);
            m_mscomm.SetRThreshold(1);
            m_mscomm.SetSThreshold(0);
            m_mscomm.SetInputLen(0);
            m_mscomm.SetInputMode(1);
            m_mscomm.SetPortOpen(TRUE);
            }
            void CMyDlg::On_Com2()
            {
            if(m_mscomm.GetPortOpen())
            m_mscomm.SetPortOpen(FALSE);
            m_mscomm.SetCommPort(2);
            m_mscomm.SetSettings(”9600,n,8,1″);
            m_mscomm.SetRThreshold(1);
            m_mscomm.SetSThreshold(0);
            m_mscomm.SetInputLen(0);
            m_mscomm.SetInputMode(1);
            m_mscomm.SetPortOpen(TRUE);
            }
            1)CommPort:分別選1和2。
            2) Setting設(shè)置或返回串行端口的波特率:9600、無奇偶校驗位、數(shù)據(jù)位數(shù)為8、1位停止位。
            3) InBufferSize:設(shè)置接收緩沖區(qū)為1024字節(jié)。
            4) RThreshold:設(shè)置當(dāng)接收緩沖區(qū)內(nèi)字節(jié)個數(shù)為1時,觸發(fā)MSCOMM的OnComm事件,然后由計算機(jī)將接收緩沖的數(shù)據(jù)讀出,并將接收緩沖區(qū)清空。
            5) InputLen:值為0,設(shè)置INPUT讀取整個緩沖區(qū)的內(nèi)容。
            6) OutBufferSize:設(shè)置發(fā)送緩沖區(qū)為512字節(jié)。
            (3)發(fā)送數(shù)據(jù)的源程序代碼
            void CMyDlg::OnSend()
            {
            if(!m_mscomm.GetPortOpen())
            m_mscomm.SetPortOpen(TRUE);
            UpdateData(TRUE);
            m_mscomm.SetOutput(COleVariant(m_str_send)); //發(fā)送數(shù)據(jù)
            }
            將文本框內(nèi)的字符串送到變量m_str_send中,然后將字符轉(zhuǎn)化為ColeVariant類型的數(shù)據(jù),再通過SetOutput函數(shù)將數(shù)據(jù)發(fā)送到發(fā)送緩沖區(qū)中。
            (4)接收數(shù)據(jù)的源程序代碼
            void CMyDlg::OnComm()
            {
            VARIANT variant_tmp;
            COleSafeArray safearray_tmp;
            LONG len,i;
            BYTE buf[2048];
            CString str_tmp;
            if(m_mscomm.GetCommEvent()==2)
            {
            variant_tmp=m_mscomm.GetInput();
            safearray_tmp=variant_tmp;
            len=safearray_tmp.GetOneDimSize();
            for(i=0;ilen;i++)
            safearray_tmp.GetElement(i,buf+i);
            for(i=0;ilen;i++)
            {
            BYTE ch=*(char*)(buf+i);
            str_tmp.Format(”%c”,ch);
            m_str_recv+=str_tmp;
            }
            }
            UpdateData(FALSE);
            }
            當(dāng)m_mscomm.GetCommEvent()==2時候,數(shù)據(jù)到來,觸發(fā)OnComm事件,調(diào)用該函數(shù)。首先通過m_mscomm.GetInput()將接收緩沖區(qū)內(nèi)的數(shù)據(jù)讀到變量variant_tmp中,再將variant_tmp賦予safearray_tmp來實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)化為ColeSafeArray。通過safearray_tmp.GetOneDimSize()求出接收到的字符的總長度,再將每個ColeSafeArray變量轉(zhuǎn)化為Byte類型的變量,最后轉(zhuǎn)化為字符類型,并將它顯示在文本框內(nèi)。
            void CMyDlg::OnComm() 的流程圖:

            圖4.3 void CMyDlg::OnComm() 的流程圖

            (5)清空功能函數(shù)源代碼
            void CMyDlg::OnClr()
            {
            m_str_send=” “;
            m_str_recv=” “;
            UpdateData(FALSE);
            }
            總的程序流程圖如圖4.4所示
            圖4.5是PC機(jī)通過端口1向發(fā)送數(shù)據(jù)時候的圖型界面。進(jìn)入界面后,首先要進(jìn)行根據(jù)連接的串行口選擇要初始化的端口,然后使用鍵盤在發(fā)送緩沖區(qū)內(nèi)輸入一系列的字符。等開發(fā)板上電后,單擊發(fā)送按鍵將數(shù)據(jù)發(fā)送出去。
            圖4.6是PC機(jī)通過串口接收發(fā)送過來的數(shù)據(jù)時候的圖形界面。在緩沖區(qū)接收的數(shù)據(jù)為二進(jìn)制形式,程序內(nèi)已經(jīng)將這些二進(jìn)制轉(zhuǎn)化為字符串在界面上顯示。
            圖4.7是串行口調(diào)試工具初始運(yùn)行時候的圖形界面。
            事件驅(qū)動方式時,由計算機(jī)直接管理,字節(jié)之間不可控,而且單片機(jī)串行口和PC機(jī)串行口速率差別較大,接收程序一定要精心合理的設(shè)計,才能使傳輸穩(wěn)定可靠,否則很容易出現(xiàn)意想不到的問題。在調(diào)試過程中,如果不小心將串行口調(diào)試工具的波特率和開發(fā)板串行口的波特率設(shè)置為不同,就會出現(xiàn)錯誤。程序中已經(jīng)將串行口的波特率設(shè)置為9600bps,這樣可以避免錯誤。
            圖4.5通過端口1進(jìn)行發(fā)送時候的圖型界面

            圖4.6 通過串口接收時候的圖形界面
            圖4.7 串行口調(diào)試工具的運(yùn)行界面
            第五章 總結(jié)與展望
            5.1 全文總結(jié)

            通過這次畢業(yè)設(shè)計,我學(xué)到了不少課本上沒有的知識,也鍛煉了自己的動手能力,將以前學(xué)過的零散的知識串到一起。
            首先在畢業(yè)設(shè)計剛開始的調(diào)研階段,我學(xué)會了怎么通過各種方式查詢相關(guān)的資料。通過對這些資料的學(xué)習(xí),我大致了解了通信的發(fā)展現(xiàn)狀以及未來的發(fā)展趨勢,認(rèn)識到目前通信方面的各種各樣的協(xié)議,以及它們之間的競爭。了解了通信方面的先進(jìn)技術(shù),這些都為我未來的學(xué)習(xí)指明了方向。
            我畢業(yè)設(shè)計主要涉及和軟件兩個方面的內(nèi)容,通過這些我的和軟件開發(fā)能力都獲得了提高。首先在方面,基本了解了產(chǎn)品的開發(fā)流程和所要做的工作?;菊莆樟薖rotel 99 SE設(shè)計原理圖和簡單的PCB圖的方法,并設(shè)計了一個單片機(jī)最小。通過開發(fā)板的設(shè)計和硬件搭建的過程,使我對51系列單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路的引腳和連接方法,如LED數(shù)碼管,鍵盤等。
            在軟件方面,通過串行口調(diào)試工具的開發(fā),我基本掌握了Visual C++ 6.0的使用方法,加深了對類封裝的理解。通過開發(fā)板驅(qū)動程序的開發(fā),使我熟練掌握了Keil uVision2,熟悉了51系列單片機(jī)內(nèi)部的寄存器和編程規(guī)則,以及如何控制外圍電路。
            當(dāng)然,由于單片機(jī)功能的局限性,當(dāng)面對很復(fù)雜的時像無線,單片機(jī)就不太合適。這是因為單片機(jī)的引腳過少,能夠使用操作系統(tǒng)過于簡單,不能進(jìn)行復(fù)雜的工作調(diào)度,也不能驅(qū)動復(fù)雜的外圍電路,因此使用單片機(jī)完全實(shí)現(xiàn)系統(tǒng)的要求比較困難。
            近幾年來,處理器已經(jīng)發(fā)展到32位機(jī),尤其是以ARM(Advanced RISC Machines)為內(nèi)核的32位處理器受到越來越多嵌入式開發(fā)人員的青睞。ARM處理器支持復(fù)雜的嵌入式操作系統(tǒng),例如Win CE,UClinux等。可以進(jìn)行復(fù)雜的功能調(diào)度,而且能夠驅(qū)動比較復(fù)雜的外圍電路例如觸摸屏等。這樣使用ARM處理器和嵌入式操作系統(tǒng),配合嵌入式移動數(shù)據(jù)庫技術(shù),更能完成系統(tǒng)的要求。所以,畢業(yè)設(shè)計也給我將來的學(xué)習(xí)指明了一個方向。
            單就本論文而言,主要完成了以下工作:
            1.在ZigBee協(xié)議的基礎(chǔ)上,以51系列單片機(jī)為處理器,配合一定的外圍電路構(gòu)建了硬件開發(fā)平臺。
            2.用C51語言為硬件部分編寫驅(qū)動程序,并用Visual C++6.0開發(fā)了串口調(diào)試工具。

            5.2 研究展望

            目前,無線通信的各種技術(shù)呈現(xiàn)百花齊放的局面。但是隨著經(jīng)濟(jì)的發(fā)展,人民需求的提高,無線通信技術(shù)依然有很大的發(fā)展空間。在以下方面仍然有很長的路要走。
            1隨著IP(Internet Protocol,網(wǎng)際協(xié)議)技術(shù)的發(fā)展,無線通信網(wǎng)和IP網(wǎng)有融合的趨勢。尤其是多媒體信息需求的增加,多媒體信息對實(shí)時性要求不高的特點(diǎn),使得利用無線通信網(wǎng)傳輸多媒體信息成為一大熱門。
            2隨著人民生活水平的提高,生活方式的轉(zhuǎn)變,無線通信技術(shù)必然向移動化和便攜化方向發(fā)展。
            3由于無線頻譜資源有限和無線通信傳輸信道的特殊性,使得如何提高頻譜資源的利用率以及提高抗干擾能力成為未來很熱門的研究方向。
            4 現(xiàn)代微技術(shù)發(fā)展迅猛,摩爾定理仍然有效,集成電路技術(shù)已經(jīng)發(fā)展到SOC,32位的ARM處理器已經(jīng)得到了廣泛的應(yīng)用。因此在未來越來越復(fù)雜的嵌入式系統(tǒng)開發(fā)中,32位處理器和嵌入式操作系統(tǒng)將得到更廣泛的應(yīng)用。

            51單片機(jī)相關(guān)文章:51單片機(jī)教程


            單片機(jī)相關(guān)文章:單片機(jī)教程


            c++相關(guān)文章:c++教程


            單片機(jī)相關(guān)文章:單片機(jī)視頻教程


            單片機(jī)相關(guān)文章:單片機(jī)工作原理


            波段開關(guān)相關(guān)文章:波段開關(guān)原理


            藍(lán)牙技術(shù)相關(guān)文章:藍(lán)牙技術(shù)原理
            矢量控制相關(guān)文章:矢量控制原理

            上一頁 1 2 3 4 下一頁

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉