自動檢測80C51串行通訊中的波特率:本文介紹一種在80C51 串行通訊應(yīng)用中自動檢測波特率的方法。按照經(jīng)驗,程序起動后所接收到的第1 個字符用于測量波特率。這種方法可以不用設(shè)定難于記憶的開關(guān),還可以免去在有關(guān)應(yīng)用中使用多種不同波特率的煩惱。人們可以設(shè)想:一種可靠地實現(xiàn)自動波特檢測的方法是可能的,它無須嚴(yá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è)定,并且,UART總是先發(fā)送數(shù)據(jù)低位(LSB),后發(fā)送數(shù)據(jù)高位(MSB),我們總會看見數(shù)據(jù)的停止位。在下面的波特率檢測程序中,先等待串行通訊輸入管腳的起始信號(下降沿),然后起動定時器T0。在其后的串行數(shù)據(jù)的每一個上升沿,將定時器T0 的數(shù)值捕獲并保存。當(dāng)定時器T0溢出時,其最后一次捕獲的數(shù)值即為從串行數(shù)據(jù)起始位到最后一個上升沿(我們假設(shè)是停止位)過程所持續(xù)的時間。
上傳時間: 2014-08-22
上傳用戶:dajin
單片機溫度采集器與PC104分站的串行通信:用PC104 模塊組建的礦井變電所采集分站,具有強大的以太網(wǎng)和CAN 總線通信功能。在PC104模塊底板上,設(shè)計了一個基于89C2051 單片機的溫度采集器,用于采集溫度傳感器監(jiān)測值并通過串口將該監(jiān)測值傳送到PC104 分站。該設(shè)計簡化了變電所環(huán)境溫度監(jiān)測的軟、硬件,并且編程簡單,充分利用了PC104 的空閑串口資源。關(guān)鍵詞:溫度采集器; 單片機; 串行通信; PC104
上傳時間: 2013-11-24
上傳用戶:wangchong
采用UART做LIN總線的從節(jié)點應(yīng)用:本應(yīng)用例使用SPMC75F2313A和通用LIN Bus收發(fā)器TJA1020(或ATA6661)實現(xiàn)LIN(Local Interconnect Network)是低成本的汽車網(wǎng)絡(luò)的傳輸。1.2 LIN Bus規(guī)范LIN 是低成本網(wǎng)絡(luò)中的汽車通訊協(xié)議標(biāo)準(zhǔn),LIN(Local Interconnect Network)是低成本的汽車網(wǎng)絡(luò),它是現(xiàn)有多種汽車網(wǎng)絡(luò)在功能上的補充由于能夠提高質(zhì)量、降低成本,LIN 將是在汽車中使用汽車分級網(wǎng)絡(luò)的啟動因素。LIN 的標(biāo)準(zhǔn)化將簡化多種現(xiàn)存的多點解決方案且將降低在汽車電子領(lǐng)域中的開發(fā)生產(chǎn)服務(wù)和后勤成本。LIN 標(biāo)準(zhǔn)包括傳輸協(xié)議規(guī)范、傳輸媒體規(guī)范、開發(fā)工具接口規(guī)范和用于軟件編程的接口LIN在硬件和軟件上保證了網(wǎng)絡(luò)節(jié)點的互操作性并有可預(yù)測EMC的功能。
上傳時間: 2013-11-19
上傳用戶:
采用UART做LIN總線的主節(jié)點應(yīng)用:本應(yīng)用例使用SPMC75F2313A和通用LIN Bus收發(fā)器TJA1020(或ATA6661)實現(xiàn)LIN(Local Interconnect Network)是低成本的汽車網(wǎng)絡(luò)的傳輸。1.2 LIN Bus規(guī)范LIN 是低成本網(wǎng)絡(luò)中的汽車通訊協(xié)議標(biāo)準(zhǔn),LIN(Local Interconnect Network)是低成本的汽車網(wǎng)絡(luò),它是現(xiàn)有多種汽車網(wǎng)絡(luò)在功能上的補充由于能夠提高質(zhì)量、降低成本,LIN 將是在汽車中使用汽車分級網(wǎng)絡(luò)的啟動因素。LIN 的標(biāo)準(zhǔn)化將簡化多種現(xiàn)存的多點解決方案且將降低在汽車電子領(lǐng)域中的開發(fā)生產(chǎn)服務(wù)和后勤成本。LIN 標(biāo)準(zhǔn)包括傳輸協(xié)議規(guī)范、傳輸媒體規(guī)范、開發(fā)工具接口規(guī)范和用于軟件編程的接口LIN在硬件和軟件上保證了網(wǎng)絡(luò)節(jié)點的互操作性并有可預(yù)測EMC的功能。
標(biāo)簽: UART LIN 總線 主節(jié)點
上傳時間: 2013-10-15
上傳用戶:AISINI005
串口調(diào)試軟件SSCOM可供免費使用,免費下載,本軟件可以在Win95/98、Win2000、WinNT、WinXP下面運行.軟件功能主要為: 1.接收從串口進來的數(shù)據(jù)并在窗口顯示. 2.所接收到的數(shù)據(jù)數(shù)據(jù)顯示方式可以選擇為字符方式或者HEX方式 4.中文顯示無亂碼,且不影響速度 5.串口波特率可以選擇為110bps-256000bps.(波特率>115200時需要硬件支持) 6.可以即時顯示存在的串口號.如果您增加了usb轉(zhuǎn)串口等設(shè)備,串口號也會在列表中出現(xiàn). 7.可以選擇“5、6、7、8”四種數(shù)據(jù)長度. 8.可以選擇為“1、1.5、2”三種停止位.(1.5停止位需要硬件支持) 8.第9位數(shù)據(jù)可以選擇為“無、奇校驗、偶校驗、1、0”四種方式. 9.可以選擇“無流控、軟流控、硬流控、自定義”四種流控方式. 10.串口設(shè)置和字符串操作等設(shè)置在程序關(guān)閉時自動保存,打開時自動載入. 11.可以在接收窗口按鍵即發(fā)送該鍵值. 12.可以在字符串輸入框輸入您想發(fā)送的字符串,并發(fā)送. 13.可以在字符串輸入框輸入您想發(fā)送的HEX數(shù)據(jù)串,數(shù)據(jù)的值從00到FF,沒有任何限制. 14.可以定時重復(fù)發(fā)送數(shù)據(jù),并可以設(shè)置發(fā)送時間間隔. 15.可以在發(fā)送字符串時選擇發(fā)送新行,即自動加上回車換行. 16.可以顯示當(dāng)前串口的CTS、DSR、RLSL(CD)信號線的狀態(tài). 17.可以自由控制當(dāng)前串口的DTR、RTS信號線的輸出狀態(tài). 18.可以打開一個文本文件或者一個二進制文件預(yù)覽其內(nèi)容,查看方式可以是文本或者HEX方式. 19.可以打開一個文本文件或者一個二進制文件并以當(dāng)前波特率發(fā)送到串口. 20.可以保存窗口內(nèi)容到一個文本文件,文件名取自當(dāng)前時間,保存在當(dāng)前目錄. 21.可以即時顯示發(fā)送的字節(jié)數(shù)和接收到的字節(jié)數(shù),按清除窗口將會清零. 22.帶有功能強大的擴展功能:多條字符串發(fā)送定義和網(wǎng)上查找串口資料等. 23.可以定義最多32條預(yù)備發(fā)送的字符串,每條字符串可以定義為HEX數(shù)據(jù)串或者字符串方式.在每一條數(shù)據(jù)的左邊打勾就表示這是一條hex數(shù)據(jù)串. 24.點擊字符串右邊的標(biāo)號即可以發(fā)送這條定義好的字符串. 25.可以設(shè)置為循環(huán)發(fā)送你定義過的多條字符串,并且可以設(shè)置發(fā)送時間間隔. 26.在串口資料欄您可以從mcu51網(wǎng)站或者Google查找有關(guān)串口技術(shù)資料. 27.在串口資料欄您可以進入技術(shù)討論bbs,在此發(fā)表您的高見或者提出您的問題和需求. 28.在產(chǎn)品信息欄您可以獲得現(xiàn)時最新的產(chǎn)品信息. 29.這是個綠色軟件,單個文件即可執(zhí)行,不會給您的機器增加任何負擔(dān). 此版本使用C++Builder編寫,相對于上一版本SSCOM2.0,主要改進在: 1.程序更穩(wěn)定可靠,修改了一些報錯信息.使用更加人性化。 2.修改了避免顯示漢字亂碼的算法,快了許多. 3.hex數(shù)據(jù)輸入的錯誤兼容性. 4.發(fā)送字符串可以加發(fā)回車換行. 5.可以保存窗口內(nèi)容到文件. 6.發(fā)送和接收的字符數(shù)統(tǒng)計更準(zhǔn)確. 7.不再接收到一定數(shù)量字符數(shù)就清屏,因為發(fā)現(xiàn)即使收到很多內(nèi)容也不會溢出,速度仍然很快. 8,可以打開二進制文件并發(fā)送,從前只能發(fā)文本文件. 9.打開文件后可以用asc方式或者hex方式預(yù)覽文件中前4K內(nèi)容. 10.發(fā)送文件前告訴操作者需要發(fā)送多少時間.免得久等. 11.新增功能強大的擴展功能,多達32條自定義字符串操作,程序關(guān)閉時這些字符串會自動保存,下次開機時再載入,每條可以定義為HEX數(shù)據(jù)串或者ASC字符串,按后邊的數(shù)字按鈕可以發(fā)送.也可以自動循環(huán)發(fā)送定義過的字符串. 12.新增串口設(shè)置自動保存. 13.加入了網(wǎng)絡(luò)支持功能,用戶很方便討論問題和找到技術(shù)支持.
標(biāo)簽: SSCOMV 3.0 串口調(diào)試 軟件
上傳時間: 2013-10-26
上傳用戶:448949
51單片機工程師實例設(shè)計程序集-(20種常見應(yīng)用整編) \7290\ ;ZLG7290例程*\7290a\ ;ZLG7290匯編例程*\bell\ ;蜂鳴器音樂例程*\buzz\ ;蜂鳴器響例程*\eeprom\ ;讀EEPROM并顯示例程*\ex26a_lcd\ ;16×2LCD模塊例程*\ex36a_lcm\ ;128×64點陣LCD模塊例程*\KEY_IO\ ;直連KEY和LED例程\led_light\ ;直連LED例程*\lin_park\ ;lin模塊的原碼及例程。\lin\ ;LIN總線例程\rs232\ ;RS232例程(包括PC端和書上了串口例程)\USB1.1\ ;USB1.1例程(包括PC端)\RS485\ ;RS485例程\USB2.0\ ;USB2.0例程(有3個,包括PC端)\TCPIP\ ;基于ETHERNET的TCPIP例程\RTC\ ;時鐘顯示例程\CAN_SELF\ ;CAN自發(fā)自收例程 外中斷1\CAN\ ;CAN例程\USBPACK 2.0\ ;USB2.0PC例程 注意:帶*程序為MON51調(diào)試程序。在MON時程序下載后停不下來,可以按一下RSE按鈕復(fù)位一下。
上傳時間: 2013-10-13
上傳用戶:雨出驚人love
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實現(xiàn)編程的讀,寫,擦等細節(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
主要功能:1、將串口通訊協(xié)議存儲為一個通訊文件,可是隨時將存儲通訊協(xié)議文件調(diào)入計算機運行與下位機通訊可以實現(xiàn)通訊對話,供下位機工程師參考使用,其主要的通訊協(xié)議本程序把它們分成四種情況。以下說明:1)下位機直接發(fā)送數(shù)據(jù),上位機只接收不回應(yīng)數(shù)據(jù)。2)下位機直接發(fā)送數(shù)據(jù),上位機接收并回應(yīng)數(shù)據(jù)。3)上位機直接發(fā)送數(shù)據(jù),下位機只接收不回應(yīng)數(shù)據(jù)。4)上位機直接發(fā)送數(shù)據(jù),下位機接收并回應(yīng)數(shù)據(jù)。下位機工程師完全可以利用這個功能單獨的并且很方便的調(diào)試與上位機通訊程序,更改雙方的通訊協(xié)議,不再需要上位機工程師的配合。windwos標(biāo)準(zhǔn)操作,使用方便。2、可以監(jiān)聽活動串口的數(shù)據(jù),將監(jiān)聽到的數(shù)據(jù)顯示到數(shù)據(jù)顯示區(qū)里面,可以保存。也可以將原先保存的文件數(shù)據(jù)讀進來,以供分析。數(shù)據(jù)可以按照十六進制和ascii碼顯示出來。3、自動識別串口設(shè)置,當(dāng)不知道對方設(shè)備的通訊串口設(shè)置時,可以利用該功能讓此程序自動識別,當(dāng)然前提是對方設(shè)備必須是一直在發(fā)數(shù)據(jù),整個識別過程大概需要二分鐘。4、可以通過該程序,利用串口將文件發(fā)送到另一個計算機上。另一個計算機通過接收文件接收所發(fā)出的文件。
上傳時間: 2013-11-11
上傳用戶:semi1981
為實現(xiàn)某專用接口裝置的接口功能檢測,文中詳細地介紹了一種34位串行碼的編碼方式,并基于FPGA芯片設(shè)計了該類型編碼的接收、發(fā)送電路。重點分析了電路各模塊的設(shè)計思路。電路采用SOPC模塊作為中心控制器,設(shè)計簡潔、可靠。試驗表明:該設(shè)計系統(tǒng)運行正常、穩(wěn)定。
標(biāo)簽: FPGA 串行 編碼 信號設(shè)計
上傳時間: 2013-11-12
上傳用戶:xiaowei314
基于Actel FPGA 的多串口擴展設(shè)計采用了Actel 公司高集成度,小體積,低功耗,低系統(tǒng)成本,高安全性和可靠性的小容量FPGA—A3P030 進行設(shè)計,把若干接口電路的功能集成到A3P030 中,實現(xiàn)了三路以上的串口擴展。該設(shè)計靈活性高,可根據(jù)需求靈活實現(xiàn)并行總線擴展三路UART 或者SPI 擴展三路UART,波特率可以靈活設(shè)置。
標(biāo)簽: Actel FPGA 多串口 擴展設(shè)計
上傳時間: 2013-10-18
上傳用戶:JIEWENYU
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1