單片機串口傳送 晶振是24M的除了9600波特率,其他波特率均不能正常顯示在串口調(diào)試助手里 51單片機工作在24M晶振時的串口如何設置?波特率9600
51單片機,用12或24MHz的晶振,串口通信時波特率誤差是很大的啊!比如24MHz時,單片機定時器實際使用的信號頻率是2MHz,用T2定時器做波特率發(fā)生器產(chǎn)生9600的波特率,得到的參數(shù)是6.51,所以你取65530或者65529時誤差都大的驚人,得到的實際波特率是10416和8928。
要想得到準確的9600波特率,只能選用11.0592、18.432或者22.1184這樣的晶振。
郭注15934841838: 單片機串口通信常用多少M的晶振 -
武夷山市直齒: ______ 11.0592MHZ,這個頻率是在很多波特率下誤差很小,而12M晶振只有在9600等幾種波特率下誤差較小
郭注15934841838: 單片機串口通信,我只有12M晶振怎么辦? -
武夷山市直齒: ______ 12M晶振是不能取得標準波特率的,但是如果你做的系統(tǒng)是局域系統(tǒng),只限于幾個單片機的通信,在幾個單片機型號相同的情況下,可以使幾個單片機生成波特率的定時器設置一樣,這樣可以保證在非標準波特率下的通信.比如89c51和89c2051就可以.有些先進型號的單片機,如c8051f330,內(nèi)部自帶晶振,可以使用內(nèi)部的晶振做串口通信,不過,這樣的串口通信數(shù)據(jù)流不要太長,畢竟,還是外部晶振精準.還有,實在不行換成11.0592的晶振就可以做標準波特率通信了.麻煩嗎?多看你使用單片機的pdf文檔.
郭注15934841838: 關(guān)于單片機的晶振 -
武夷山市直齒: ______ 當然有上線了,一般芯片說明書都會告訴你上限……還有速度不光看晶振頻率的,內(nèi)核位數(shù)呀、ram讀取速度呀、總線結(jié)構(gòu)呀都有很大關(guān)系…………
郭注15934841838: 我做頻率計,一開始是用12M晶振LCD可以正常顯示,為什么換用24M晶振后就不能正常顯示了? -
武夷山市直齒: ______ 你是指的12M單片機的晶振吧 如果你換了24兆的話 T0,T1計數(shù)就記滿了,有溢出 如果你不是指的單片機的晶振頻率,,也要考慮你的硬件溢出情況
郭注15934841838: 51單片機為什么要用12M的晶振
武夷山市直齒: ______ 并不絕對是12M晶振 一般來說35M以內(nèi)的無源晶振(兩腳的)都可以的,我說的是對STC系列51單片機是這樣,其他51單片機也是這樣的,例如AT89S51等 我們常說的51單片機是12分頻的,如果選用12M晶振,如果是單指令周期的語句,剛好是1us,其他語句好似1us的整數(shù)倍.選擇12m晶振如果用于串口通訊中,計算會有小數(shù)(不很整),于是乎又有一重11.0592M晶振. 這些知識書本上應該有吧,晶振的選取并不很絕對.有些人用51單片機喜歡選18.432M的,還有喜歡選22.184M的,不一定非用12M 回答完畢 望對你能有幫助
郭注15934841838: 求一個 串口通信發(fā)送的程序 用匯編的
武夷山市直齒: ______ ;程序如下: MOV SCON, #0x50; //串口工作在方式1. ANL PCON, #0x7F; //SMOD=0 MOV TMOD, #0x20; //定時器1當做波特率發(fā)生器. MOV TH1, #0xFD; //初值, 9600 @ 11.0592MHz MOV TL1, #0xFD; SETB TR1; LOOP: MOV A, #0 MOV SBUF, A JNB TI, $ CLR TI INC A CJNE A, #31, LOOP SJMP $ end
郭注15934841838: STC12C5410AD單片機串行通信問題,請高手幫忙
武夷山市直齒: ______ 單片機 STC12C5410AD,內(nèi)部晶振頻率不穩(wěn)定, 串行通信波特率也會不穩(wěn)定, 接收端的接收數(shù)據(jù)就會發(fā)生錯誤.當然在溫度不變的情況下,并知道單片機的頻率,波特率設置正確,通信就能正常. 下載程序能正常是因為 用了 自動調(diào)整波特率 的方法(在軟件上稍微復雜一些).
郭注15934841838: 為啥51單片機的晶振一般使用11.0592 -
武夷山市直齒: ______ 這個是由內(nèi)部定時器決定的,為了更精確計算,減少偏差 以下是摘別人的,省的我重新打了: 11.0592晶振的原因是51單片機的定時器導致的.用51單片機的定時器做波特率發(fā)生器時,如果用11.0592Mhz的晶振,根據(jù)公式算下來需要定時器設...
郭注15934841838: C51單片機 串行通訊中 計算波特率時晶振頻率除以12后 為什么還除以32? -
武夷山市直齒: ______ 32是公式中要求的
郭注15934841838: 請問為何某些單片機上使用的晶振頻率為32.768k?要去到.768? -
武夷山市直齒: ______ 32768 剛好是int型數(shù)據(jù)的最大整數(shù) 這個晶振一般用在時鐘上 為了湊整方便計算一個有符號的int型 從0 計慢剛好是 1s 即 (1/32.768kHz)*32768=1s 所以要精確到 .768 為了準確
要想得到準確的9600波特率,只能選用11.0592、18.432或者22.1184這樣的晶振。
相關(guān)評說:
武夷山市直齒: ______ 11.0592MHZ,這個頻率是在很多波特率下誤差很小,而12M晶振只有在9600等幾種波特率下誤差較小
武夷山市直齒: ______ 12M晶振是不能取得標準波特率的,但是如果你做的系統(tǒng)是局域系統(tǒng),只限于幾個單片機的通信,在幾個單片機型號相同的情況下,可以使幾個單片機生成波特率的定時器設置一樣,這樣可以保證在非標準波特率下的通信.比如89c51和89c2051就可以.有些先進型號的單片機,如c8051f330,內(nèi)部自帶晶振,可以使用內(nèi)部的晶振做串口通信,不過,這樣的串口通信數(shù)據(jù)流不要太長,畢竟,還是外部晶振精準.還有,實在不行換成11.0592的晶振就可以做標準波特率通信了.麻煩嗎?多看你使用單片機的pdf文檔.
武夷山市直齒: ______ 當然有上線了,一般芯片說明書都會告訴你上限……還有速度不光看晶振頻率的,內(nèi)核位數(shù)呀、ram讀取速度呀、總線結(jié)構(gòu)呀都有很大關(guān)系…………
武夷山市直齒: ______ 你是指的12M單片機的晶振吧 如果你換了24兆的話 T0,T1計數(shù)就記滿了,有溢出 如果你不是指的單片機的晶振頻率,,也要考慮你的硬件溢出情況
武夷山市直齒: ______ 并不絕對是12M晶振 一般來說35M以內(nèi)的無源晶振(兩腳的)都可以的,我說的是對STC系列51單片機是這樣,其他51單片機也是這樣的,例如AT89S51等 我們常說的51單片機是12分頻的,如果選用12M晶振,如果是單指令周期的語句,剛好是1us,其他語句好似1us的整數(shù)倍.選擇12m晶振如果用于串口通訊中,計算會有小數(shù)(不很整),于是乎又有一重11.0592M晶振. 這些知識書本上應該有吧,晶振的選取并不很絕對.有些人用51單片機喜歡選18.432M的,還有喜歡選22.184M的,不一定非用12M 回答完畢 望對你能有幫助
武夷山市直齒: ______ ;程序如下: MOV SCON, #0x50; //串口工作在方式1. ANL PCON, #0x7F; //SMOD=0 MOV TMOD, #0x20; //定時器1當做波特率發(fā)生器. MOV TH1, #0xFD; //初值, 9600 @ 11.0592MHz MOV TL1, #0xFD; SETB TR1; LOOP: MOV A, #0 MOV SBUF, A JNB TI, $ CLR TI INC A CJNE A, #31, LOOP SJMP $ end
武夷山市直齒: ______ 單片機 STC12C5410AD,內(nèi)部晶振頻率不穩(wěn)定, 串行通信波特率也會不穩(wěn)定, 接收端的接收數(shù)據(jù)就會發(fā)生錯誤.當然在溫度不變的情況下,并知道單片機的頻率,波特率設置正確,通信就能正常. 下載程序能正常是因為 用了 自動調(diào)整波特率 的方法(在軟件上稍微復雜一些).
武夷山市直齒: ______ 這個是由內(nèi)部定時器決定的,為了更精確計算,減少偏差 以下是摘別人的,省的我重新打了: 11.0592晶振的原因是51單片機的定時器導致的.用51單片機的定時器做波特率發(fā)生器時,如果用11.0592Mhz的晶振,根據(jù)公式算下來需要定時器設...
武夷山市直齒: ______ 32是公式中要求的
武夷山市直齒: ______ 32768 剛好是int型數(shù)據(jù)的最大整數(shù) 這個晶振一般用在時鐘上 為了湊整方便計算一個有符號的int型 從0 計慢剛好是 1s 即 (1/32.768kHz)*32768=1s 所以要精確到 .768 為了準確