本文介紹一種實現(xiàn)TMS320F240 DSP與C51單片機串行通訊的方法。詳細(xì)說明了TMS320F240 DSP與C51單片機的硬件構(gòu)成和軟件設(shè)置等問題。
上傳時間: 2013-11-24
上傳用戶:1234567890qqq
RS232C串行通信在控制領(lǐng)域里應(yīng)用得很廣泛但在實際應(yīng)用中又會因所控制的對象所解決的問題不同而各具特點本文所涉及的是傳輸距離不超過15米所傳輸數(shù)據(jù)量較小的PC機和單片機的通信如PC機對IC卡的讀寫PC機對單片機燒寫器的數(shù)據(jù)轉(zhuǎn)輸以及其它一些具有類似特點的智能化儀器和儀表中的數(shù)據(jù)通信
標(biāo)簽: MCU PC 串行通信 應(yīng)用設(shè)計
上傳時間: 2014-12-28
上傳用戶:6546544
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實現(xiàn)編程的讀,寫,擦等細(xì)節(jié)//AT89C2051的特殊處:給XTAL一個脈沖,地址計數(shù)加1;P1的引腳排列與AT89C51相反,需要用函數(shù)轉(zhuǎn)換#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引腳排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//編程前的準(zhǔn)備工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//編程結(jié)束后的工作,設(shè)置合適的引腳電平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//從P0口獲得數(shù)據(jù){ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//轉(zhuǎn)換并設(shè)置P0口的數(shù)據(jù){ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//讀特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//寫器件{//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 //寫一個單元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效驗:循環(huán)讀,直到讀出與寫入的數(shù)相同 { nTimeOut++; if(nTimeOut>1000)//超時了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//讀器件{ BYTE Data;//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 //讀一個單元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return Data;} void Lock01()//寫鎖定位{ InitPro01();//先設(shè)置成編程狀態(tài)//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 if(ComBuf[2]>=1)//ComBuf[2]為鎖定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//設(shè)置pw中的函數(shù)指針,讓主程序可以調(diào)用上面的函數(shù){ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上傳時間: 2013-11-12
上傳用戶:gut1234567
串行下載線的原理圖 SI Prog - Serial Interface for PonyProg
上傳時間: 2013-11-09
上傳用戶:zhishenglu
自動檢測80C51 串行通訊中的波特率本文介紹一種在80C51 串行通訊應(yīng)用中自動檢測波特率的方法。按照經(jīng)驗,程序起動后所接收到的第1 個字符用于測量波特率。這種方法可以不用設(shè)定難于記憶的開關(guān),還可以免去在有關(guān)應(yīng)用中使用多種不同波特率的煩惱。人們可以設(shè)想:一種可靠地實現(xiàn)自動波特檢測的方法是可能的,它無須嚴(yán)格限制可被確認(rèn)的字符。問題是:在各種的條件下,如何可以在大量允許出現(xiàn)的字符中找出波特率的定時間隔。顯然,最快捷的方法是檢測一個單獨位時間(single bit time),以確定接收波特率應(yīng)該是多少。可是,在RS-232 模式下,許多ASCII 字符并不能測量出一個單獨位時間。對于大多數(shù)字符來說,只要波特率存在合理波動(這里的波特率是指標(biāo)準(zhǔn)波特率),從起始位到最后一位“可見”位的數(shù)據(jù)傳輸周期就會在一定范圍內(nèi)發(fā)生變化。此外,許多系統(tǒng)采用8 位數(shù)據(jù)、無奇偶校驗的格式傳輸ASCII 字符。在這種格式里,普通ASCII 字節(jié)不會有MSB 設(shè)定
上傳時間: 2013-10-15
上傳用戶:shirleyYim
2003年第5期《簡易串行存儲器拷貝器》源程序
上傳時間: 2014-04-16
上傳用戶:問題問題
摘 要:介紹了FPGA最新一代器件Virtex25上的高速串行收發(fā)器RocketIO。基于ML505開發(fā)平臺構(gòu)建了一個高速串行數(shù)據(jù)傳輸系統(tǒng),重點說明了該系統(tǒng)采用RocketIO實現(xiàn)1. 25Gbp s高速串行傳輸?shù)脑O(shè)計方案。實現(xiàn)并驗證了采用FPGA完成千兆串行傳輸?shù)墓δ苣繕?biāo),為后續(xù)采用FPGA實現(xiàn)各種高速協(xié)議奠定了良好的基礎(chǔ)。關(guān)鍵詞: FPGA;高速串行傳輸; RocketIO; GTP 在數(shù)字系統(tǒng)互連設(shè)計中,高速串行I/O技術(shù)取代傳統(tǒng)的并行I/O技術(shù)成為當(dāng)前發(fā)展的趨勢。與傳統(tǒng)并行I/O技術(shù)相比,串行方案提供了更大的帶寬、更遠(yuǎn)的距離、更低的成本和更高的擴(kuò)展能力,克服了并行I/O設(shè)計存在的缺陷。在實際設(shè)計應(yīng)用中,采用現(xiàn)場可編程門陣列( FPGA)實現(xiàn)高速串行接口是一種性價比較高的技術(shù)途徑。
上傳時間: 2013-11-22
上傳用戶:lingzhichao
采用Xlinx公司的Virtex5系列FPGA設(shè)計了一個用于多種高速串行協(xié)議的數(shù)據(jù)交換模塊,并解決了該模塊實現(xiàn)中的關(guān)鍵問題.該交換模塊實現(xiàn)4X模式RapidIO協(xié)議與4X模式PCI Express協(xié)議之間的數(shù)據(jù)交換,以及自定義光纖協(xié)議與4X模式PCI Express協(xié)議之間的數(shù)據(jù)交換,實現(xiàn)了單字讀寫以及DMA操作,并提供高速穩(wěn)定的傳輸帶寬.
標(biāo)簽: FPGA 高速串行 模塊 實現(xiàn)方法
上傳時間: 2013-10-12
上傳用戶:rnsfing
針對實時型相機對系統(tǒng)小型化、通用化及數(shù)據(jù)高速率可靠傳輸?shù)男枨螅闹性谘芯扛咚俅衅?解串器(SerDes)器件TLK2711工作原理的基礎(chǔ)上,提出了高速串行全雙工通信協(xié)議總體設(shè)計方案。文章以TLK2711為物理層、FPGA為鏈路層設(shè)計了高速串行全雙工通信協(xié)議,對協(xié)議的實現(xiàn)進(jìn)行了詳細(xì)的描述。協(xié)議的在定制中力求做到了最簡化,為上層用戶提供簡單的數(shù)據(jù)接口。試驗中通過兩塊電路板的聯(lián)調(diào),完成了數(shù)據(jù)率為2.5Gbps的點對點高速傳輸,采用發(fā)送偽隨機碼測試,系統(tǒng)工作2小時,所測誤碼率小于10-12。
上傳時間: 2014-12-28
上傳用戶:wff
針對目前工控領(lǐng)域,現(xiàn)場數(shù)據(jù)采集分散管理的不足,該文采用了Modbus RTU通信協(xié)議和串口通信技術(shù),設(shè)計了主從式通信的采集系統(tǒng),實現(xiàn)對各個現(xiàn)場的遠(yuǎn)程集中監(jiān)控,即集散控制系統(tǒng)。詳細(xì)闡述了在C#環(huán)境下基于Modbus RTU通信協(xié)議的上位機和DAM-3504系列三相多功能電量采集模塊經(jīng)過GPRS網(wǎng)絡(luò)的主從式串行通信的實現(xiàn)。經(jīng)過現(xiàn)場測試驗證,表明該方案運行穩(wěn)定,操作簡便,能夠?qū)Σ杉臄?shù)據(jù)進(jìn)行實時顯示,解決了對現(xiàn)場的統(tǒng)一監(jiān)控和分布式管理的問題,為工業(yè)控制現(xiàn)場提供了一套可行性方案。
上傳時間: 2013-10-29
上傳用戶:88mao
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1