❶ 關於51單片機如何接收串口的大量數據
這要看你這個大量有多大了,連續接收數據一般都是開辟一個緩沖區,而緩沖區是受內部寄存器空間限制的,最大256個(52單片機),還不能全用做緩沖區,得留下工作寄存器去,位地址也得留下一些,堆棧也得留下一些,所以這些因數都需要考慮到。
如果不開辟緩沖區得話,接收後就處理,可能有丟失一些數據的可能。
❷ 關於51單片機串口通信接收多位數據
是你串口中斷接收數據溢出了。應該改為
if(RI)
{
receive[i]=SBUF;
i++; //此處的i需要定義為全局變數,不然你每次都會被清零,也就是數據永 遠都是recive[0]=SBUF;
if(i>?) //此處填寫你的數據最大長度,主程序中數據分析完自後要對i清零。
{
i=0;
}
}
if(TI)
{
TI=0;
........//發送程序
}
❸ 誰能幫我回答一個關於51單片機的問題: 簡述串列口接收和發送數據的過程。
串列介面的接收和發送是對同一個地址(99H)兩個物理控制的特殊寄存器SBUF進行讀與寫得,當向SBUF發寫命令時,即向緩沖期SBUF裝載並開始TXD引腳向外發送一幀數據,發送完便發送中斷標志T1=1,在滿足串列口接收中斷標志位R1=0的條件下,置允許接收位REN=1就會接收一幀數據進行移位寄存器,並裝載和接收到SBUF中,同時使R1=1當發讀SBUF命令時(執行 MOVA SBUF)便由接收緩沖期SBUF的信息通過內部匯流排送到CPU。
❹ 51單片機串口接收問題
串口接收是雙緩存相互交換接收的,你只要在發送一個位元組的時序內就取走上次的數據那不會出錯的。所以在這最好用中斷來完成最好。
❺ 請問51單片機怎麼通過串口接收字元串能解釋一下代碼嗎謝謝了
看流程是什麼了,如果等待14個位元組接收完,那就是for循環,或者while等待。如果只是接收的話,就中斷,然後去讀數組,超過14個位元組就處理。
❻ 51單片機串口數據接收問題
可以參考的模擬實例,單片機串口通訊,可以模擬試試。
❼ 51單片機的串口接收數據並分析
可惜我不能貼圖
12864去電子城買時找專做顯示屏的櫃台買。
只要是專業生產LCD的公司,都會配有c語言的驅動程序(通常是51的程序),還有電子檔LCD說明書
買來稍微修改就可以用啦
❽ 51單片機通過串口實現數據的發送與接收程序
串口收發,要有通信協議。也就是什麼時候開始接收,接收到指令後,轉發什麼數據。這個要知道,才可以寫。而且使用不同的51單片機,其內部寄存器配置是不同的。
一般來說,過程如下:
1,配置串口參數、波特率等,開啟串口中斷;
void Init_UART()
{
}
2,中斷函數里寫中斷響應函數,根據接收的指令或者數據,執行相應的動作;
程序一般為:
void UART_ISR() interrupt x using y
{
;串口中斷處理函數
}
x - 單片機的C51中斷號
y - 指定使用的當前工作寄存器組號(0-3 PSW中的RS0,RS1組合)
3,主程序
int main(void)
{
Init_UART();
while(1)
{
;//數據發送函數
}
}
❾ 51單片機串口接收數據問題
每完成一次位元組傳輸, RI都會被置為,此時就會進中斷
也就是說,發送完0後, 程序會立刻跳到串口中斷裡面
一般的,我們會設置一個緩沖隊列,來及時存儲剛進來的數據,並設置標志位,來通知主函數串口緩沖區的狀態
❿ 51單片機如何進行多位元組串口接收!!!
看數據量和數據速度,如果數據量小,間隔大。那麼完全可以單獨接收和顯示。如果是間隔時間小,可以在接收到開始標志之後,把需要的數據存在數組中,在收到結束標志之後慢慢解析數據包