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

正文內(nèi)容

can總線與rs-232、spi總線轉(zhuǎn)換模塊的設計論文(已改無錯字)

2023-02-18 13:20:47 本頁面
  

【正文】 緩存區(qū)時,中斷寄存器和狀態(tài)寄存器相應位都置1,通過判斷寄存器狀態(tài)來判斷SJA1000是否存在有效報文,如果有有效報文則調(diào)用CAN_Receive函數(shù)接收數(shù)據(jù)。如果檢測到ComBuff數(shù)組兩個指針不相等,就說明串口有數(shù)據(jù)發(fā)送過來,ComBuff數(shù)組里有待發(fā)送數(shù)據(jù),首先判斷要發(fā)送的是什么幀格式,以及發(fā)送的數(shù)據(jù)有幾個字節(jié),然后從數(shù)組里截取這個報文然后通過Can_trans這個函數(shù)把待發(fā)數(shù)據(jù)寫到SJA1000的數(shù)據(jù)發(fā)送緩存區(qū)里,然后通過置位發(fā)送請求位,當總線閑時把數(shù)據(jù)通過CAN總線驅(qū)動器PCA82C250發(fā)送到CAN總線上。這樣就完成了數(shù)據(jù)格式的轉(zhuǎn)換[10]。第五章 CAN/SPI總線轉(zhuǎn)換模塊設計第五章 CAN/SPI總線轉(zhuǎn)換模塊設計CAN/SPI總線轉(zhuǎn)換模塊的設計與CAN/RSRS232轉(zhuǎn)換模塊的設計基本相似,在CAN總線收發(fā)部分以及單片機最小系統(tǒng)的硬件設計是相同的,所以不做詳細介紹,如有需要可參考上一小節(jié)CAN/RSRS232轉(zhuǎn)換模塊的設計。 硬件設計圖51 CAN/SPI總線轉(zhuǎn)換模塊硬件原理框圖由于系統(tǒng)采用的單片機STC89C52自身不帶SPI接口 ,所以我們采用普通的IO接口模擬SPI接口進行數(shù)據(jù)的通信。該模塊的硬件原理圖、PCB圖及實物圖見附錄。 軟件設計程序可分為初始化、CAN數(shù)據(jù)收發(fā)和SPI總線數(shù)據(jù)收發(fā)。選用單片機是STC89C52,這款單片機本身不具有SPI接口,然而我們需要把從CAN總線接收來的數(shù)據(jù)通過SPI總線發(fā)送出去,我們采取用單片機的端口引腳來模擬SPI總線的方法來彌補。1)程序初始化程序初始化包括CAN總線的初始化、SPI總線的初始化。CAN控制器SJA1000的初始化包括設置工作方式、接收濾波方式、接收屏蔽寄存器和接收代碼寄存器、波特率參數(shù)和中斷允許寄存器。初始化設置完成后,SJA1000則進入工作狀態(tài),開始工作,獨立CAN控制器SJA1000必須先復位,而且是低電平復位,在每次開始工作時給SJA1000的復位引腳一個復位電平(低電平),使其進入復位模式。SPI總線的初始化要根據(jù)硬件電路圖,把SCK 、MOSI、MISO、CS和單片機的端口引腳對應起來。2)CAN總線數(shù)據(jù)的接收和SPI總線的發(fā)送圖52 CAN/SPI總線轉(zhuǎn)換模塊軟件主程序流程圖我們采取查詢的方式來CAN總線數(shù)據(jù)的接收和SPI總線的發(fā)送實現(xiàn),當SJA1000的數(shù)據(jù)接收緩存區(qū)有有效報文時,就通過調(diào)用Can_Receive函數(shù)把數(shù)據(jù)接收緩存區(qū)的數(shù)據(jù)接收進來,然后將從CAN總線接收來的數(shù)據(jù)再通過SPI總線發(fā)送出去,由于SPI總線發(fā)送是通過MOSI在SCK上升沿時一位一位的傳送出去的,所以進入SPI發(fā)送程序里首先把SCK清零,然后把要發(fā)送的數(shù)據(jù)和0x80相與并把結(jié)果發(fā)到MOSI上,SCK置位,SCK在一次上升沿到來時把MOSI的數(shù)據(jù)位發(fā)送到對方的接收緩存寄存器了,接著要發(fā)送的數(shù)據(jù)左移一位,這樣循環(huán)八次一個字節(jié)就發(fā)送出去了,而且這個字節(jié)的數(shù)據(jù)是從高位從低位一次傳送的。3)SPI數(shù)據(jù)的接收和CAN總線數(shù)據(jù)的發(fā)送SPI總線與無線收發(fā)器NRF24L01模塊相連,NRF24L01有一個INT引腳,當有數(shù)據(jù)往單片機發(fā)送時,此引腳被清零。當監(jiān)測到INT引腳為低電平時,說明有數(shù)據(jù)通過SPI總線發(fā)送到單片機,此時調(diào)用SPI接收函數(shù),SPI總線在SCK的下降沿到來時從MISO接收一位,所以進入SPI接收函數(shù)時先把SCK置位,然后把SCK清零,在SCK下降沿到來時就把數(shù)據(jù)接收到MISO上了,先把變量賦值0x00并與MISO相與然后把變量向左移動一位,這樣循環(huán)八次一個字節(jié)的數(shù)據(jù)就接收完了[3]。當SPI總線有數(shù)據(jù)接收進來,就調(diào)用can_trans函數(shù)把SPI接收的數(shù)據(jù)傳送到CAN總線上。第六章 系統(tǒng)調(diào)試第六章 系統(tǒng)調(diào)試在前面的小節(jié)中已詳細的介紹了系統(tǒng)模塊的設計,接下來介紹模塊的調(diào)試過程中遇到的問題,以及問題的解決過程和方法。圖61 CAN/RS232模塊調(diào)試總線的轉(zhuǎn)化主要涉及的是數(shù)據(jù)的通信過程,因此傳輸中的幀格式定義是相當重要的,在調(diào)試的過程中應該注意。模塊的調(diào)試過程中微小的疏忽都可能導致數(shù)據(jù)傳輸丟幀或接接收錯誤。在設計以及調(diào)試的過程中遇到了很多問題,正是通過不斷的解決這些問題設計才能向前開展,才最終調(diào)試成功。遇到的主要問題主要有:1) 在確定模塊代碼正確的前提下,代碼寫入單片機后發(fā)現(xiàn)SJA1000不工作。圖62 CAN/SPI模塊調(diào)試檢查電路后,發(fā)現(xiàn)單片機的復位引腳和SJA1000的復位引腳接在同一個硬件復位電路上了,而單片機是高電平復位,SJA1000是低電平復位,那么SJA1000相當于沒有復位,所以其不能正常工作。這樣每次工作前先對SJA1000進行軟件復位,使其能正常工作。2)在調(diào)試CAN/SPI轉(zhuǎn)換模塊過程中,發(fā)現(xiàn)能通過SPI總線向無線模塊(我們使用基于SPI的無線模塊測試該模塊)能發(fā)送數(shù)據(jù),但從無線模塊接收的數(shù)據(jù)都是0xFF。能接收到0xFF說明單片機檢測到了無線模塊INT的引腳有信號置位,但數(shù)據(jù)沒能正確通過MISO進入單片機,而單片機的P1口的默認值為高電平,與無線模塊的要求電平相反,不能正確的接收數(shù)據(jù)。,再調(diào)試時發(fā)現(xiàn)能模塊可以正確的接收數(shù)據(jù)。3)調(diào)試CAN/SPI轉(zhuǎn)換模塊過程中,為了測試接收數(shù)據(jù)的正確性把無線模塊發(fā)過來的數(shù)據(jù)通過串口調(diào)試助手進行顯示,發(fā)現(xiàn)數(shù)據(jù)會丟失。在測試過程中通過串口調(diào)試助手通過CAN/RS232轉(zhuǎn)換模塊向CAN總線上發(fā)送數(shù)據(jù),然后經(jīng)過CAN/SPI轉(zhuǎn)換模塊送入SPI總線上通過無線模塊發(fā)送到另一個無線接收模塊,然后通過串口調(diào)試助手進行顯示,發(fā)現(xiàn)有數(shù)據(jù)丟失的現(xiàn)象,我們經(jīng)過逐步監(jiān)測數(shù)據(jù),未發(fā)現(xiàn)錯誤,最后通過在轉(zhuǎn)換模塊發(fā)送中添加一個延遲函數(shù),數(shù)據(jù)能接收和發(fā)送都正確了。第七章 總結(jié)第七章 總結(jié)經(jīng)過大量的實踐測試,設計總線轉(zhuǎn)換模塊可以實現(xiàn)總線數(shù)據(jù)格式的轉(zhuǎn)換,達到了立項時的預期目標。CAN總線具有其它總線所不具備的優(yōu)勢,使得CAN總線成為現(xiàn)在世界上唯一一個有國際標準的現(xiàn)場總線,并被評為最有前景的總線。而現(xiàn)在工業(yè)控制領域仍存在各種總線協(xié)議,彼此之間不能兼容,短時間內(nèi)又不可能有哪種總線一統(tǒng)天下??偩€之間的不兼容嚴重阻礙了發(fā)展,我們設計的CAN/SPI、 CAN/RS232總線轉(zhuǎn)換模塊可以分別實現(xiàn)CAN與SPI和RS232總線格式的轉(zhuǎn)換,為只具有RS232或者SPI接口的設備和CAN總線的相互兼容提供了可能。在工作時只需要把轉(zhuǎn)換模塊的RS23SPI接口和設備的RS23SPI相連,而轉(zhuǎn)換模塊的CAN接口和CAN總線連在一起,在工作之前彼此之間制定一些協(xié)議,這樣就可以實現(xiàn)了具備RS23SPI接口的設備也可以和CAN總線相兼容,也解決了現(xiàn)在各總線之間不兼容的弊端。我們的設計也存在著很大的不足,由于整個模塊的電路板都是自己腐蝕、焊接的,又沒有做外殼進行裝飾,所以整體看起來不夠美觀。經(jīng)過大量的測試發(fā)現(xiàn)轉(zhuǎn)換模塊的穩(wěn)定性不夠高,要想讓轉(zhuǎn)換模塊應用到實踐中我們必須從這兩點不足之處努力改進。致謝參考文獻[1]王黎明,夏立,邵英,[M].北京:電子工業(yè)出版社,2008.[2][M].北京:機械工業(yè)出版社,2005.[3]易志明,林凌,李剛,[J].電氣技術與自動化,2003.[4][J].計算機工程,2002,28(2).[5]饒運濤,[M].北京:北京航空航天大學出版社,.[6][J].電氣技術與自動化,2006(1).[7][M].北京:高等教育出版社,2009 .[8][J].國外電子元器件,2008(6).[9][J].機械與電子,2005(4).[10]輝亞男,[J].計算機工程與設計,2008,29(3).[11]黃婷,施國梁,[J].《微處理機》,2010(3).[12]蔣偉,[J].《科技廣場》,2008(10)[13][J].寧夏機械,2002,(4).[14]高彥波,李巖,[J].電站設備自動化,2001,(3).[15][J]. 寧夏機械,2003,(2). [16]汪瞳,劉玉明,[J].應用科技,2007,34(6).[17][J].廣東白云職業(yè)技術學院廣州白云工商高級技工學校學報,2002,(4).[18] Designer教程——原理圖、PCB設計與仿真[J].. [19]許超,吳新杰,[J]. 遼寧大學學報(自然科學版),2011,(1).致謝致謝經(jīng)過半年的忙碌和工作,本次畢業(yè)設計已經(jīng)接近尾聲,作為一個本科生的畢業(yè)設計,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有導師的督促指導,以及一起工作的同學的支持,想要完成這個設計是難以想象的。 在這里首先要感謝我的指導老師李栓明老師。李老師平日里工作繁多,但在我做畢業(yè)設計的每個階段,從查閱資料到系統(tǒng)方案的選型確定,硬件電路設計、軟件程序設計、系統(tǒng)調(diào)試、系統(tǒng)優(yōu)化等整個過程中都給予了我們悉心的指導。我們的設計涉及到總線通信,設計以及調(diào)試過程較為復雜煩瑣,但是李老師仍然細心地糾正我們設計過程中的錯誤。其次要感謝我的同學對我無私的幫助,正因為在同學們的幫助配合下,我才能順利的完成設計。在這里我們還要感謝信息科學與技術學院各位老師四年來對我們學習的諄諄教誨,傳授給了我專業(yè)知識。在此期間還要感謝家人及朋友對我學習的支持。謝謝!附錄A 硬件原理圖、PCB圖、實物圖附錄A 硬件原理圖、PCB圖、實物圖圖A1 CAN/RS232總線轉(zhuǎn)換模塊硬件原理圖圖A2 CAN/RS232總線轉(zhuǎn)換模塊硬件PCB圖 圖A3 CAN/RS232總線轉(zhuǎn)換模塊硬件實物圖圖A4 CAN/SPI總線轉(zhuǎn)換模塊硬件原理圖圖A5 CAN/SPI總線轉(zhuǎn)換模塊硬件PCB圖圖A6 CAN/SPI總線轉(zhuǎn)換模塊硬件實物圖附錄B 源程序附錄B 源程序(一)主程序include include include include include define SLAW24 0xA6 define SLAR24 0xA7define MODE XBYTE[0x0600]define SR XBYTE[0x0602]define IR XBYTE[0x0603]define RXERR XBYTE[0x060E]define TXERR XBYTE[0x060F]uchar idata ComRxdBuf[80]。uchar idata ComRxdWrite。uchar idata ComRxdRead。uchar pdata Com_Buf_Len。uchar idata ETX。uchar idata STX。uchar idata STX2。uchar pdata COM_RXD_BUFF_SIZE。uchar pdata CAN_BUFF_SIZE。uchar pdata CAN_BUF_Len。 uchar pdata CanBuff[100]。 /*CAN接收緩沖區(qū)*/uchar idata CanTxP。 /*CAN接收指針*/uchar idata CanRxP。 /*CAN發(fā)送指針*/uchar idata TBuffer[13]。 /*發(fā)送緩沖區(qū)。*/uchar idata RBuffer[13]。 /*接收緩沖區(qū)。*/sbit Time = P1^0。/*出廠時CAN總線參數(shù)固化為某個值,參數(shù)存貯在CanParmSet中。*/Uchar code CanParmSet[16]={0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x03,0xFF,0x00,0x66,0x00,0x55,0xAA,0x00}。void delay_10ms(unsigned char a)。 //延時10毫秒子程序 void put_char(uchar ascii)。main() { uchar i,j,n,m。 uchar pdata BlockData[18]。 uchar WinAddr。 CanRxP=0。 CanTxP=0。 ComRxdRead=0。 ComRxdWrite=0。 COM_RXD_BUFF_SIZE=80。CAN_BUFF_SIZE=100。 CAN_BUF_Len=0。 Com_Buf_Len=0。 AUXR=0。 Time= 0。 delay_10ms(1)。 Time = 1。 delay_10ms(1)。 for(i=0。i16。i++) BlockData[i]=CanParmSet[i]。 WinAddr
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1