❶ STC單片機串口通信為什麼上電後會多發出一串位元組,後面的數據就一切正常了
STC單片機串口通信上電後會多發出一串位元組,後面的數據就一切正常了。
出現這種情況估計是你的單片機直接連到寫入器上了,由編程器直接供電,而單片機程序啟動階段沒有加延時。寫入器連接到USB口會有一個初始化過程,串口有數據輸出,被單片機誤接收了。
解決方法:
1、單片機程序啟動階段加1到2秒延時,躲過初始化數據。
2、單片機串口實行隊列接收,只有整個隊列符合特徵才發送。串口助手發送端按隊列發送。
3、單片機單獨供電。
❷ stc單片機有哪些優缺點
stc單片機的優點:
1、下載燒錄程序用串口方便好用,容易上手,擁有大量的學習資料及視頻,最著名的要屬於昌暉儀表網的那個視頻了,好多對單片機有興趣的朋友都是通過這個視頻入門的,同時具有寬電壓:5.5~3.8V,2.4~3.8V, 低功耗設計:空閑模式,掉電模式(可由外部中斷喚醒)。
2、STC單片機具有在應用編程,調試起來比較方便;帶有10位AD、內部EEPROM、可在1T/機器周期下工作,速度是傳統51單片機的8~12倍,價格也較便宜。
3、4通道捕獲/比較單元,STC12C2052AD系列為2通道,也可用來再實現4個定時器或4個外部中斷,2個硬體16位定時器,兼容普通8051的定時器。4路PCA還可再實現4個定時器,具有硬體看門狗、高速SPI通信埠、全雙工非同步串列口,兼容普通8051的串口。
4、同時還具有先進的指令集結構,兼容普通8051指令集。
❸ STC單片機串口通信問題!
只能說提醒,
你用的晶元是stc12系列的晶元,但是你的頭文件是reg51.h
你這樣編譯都能通過的嗎?
reg51.h裡面是標准51的寄存器,是只有1個串口的,
建議你去stc的官網把stc12系列的頭文件下載下來進行包含,如果你的程序沒錯的話,應該就可以用了
歡迎追問
❹ STC單片機的SPI通信,主機發送數據給從機正常,然後從機返回主機的數據第一位有時候不正常
SPI是通訊時,主機發送一個數據後,從機也會返回一個數據的,這相當於一個移位寄存器,這邊數據進那邊數據就被移出來,但被移出來的這個數據是隨機的。除非是從機主動發送數據給主機,若這時主機接收不正確,那就是接收那邊的時序寫錯了吧,可以上傳截圖進一步分析
❺ STC 雙串口單片機如何兩串口相互通信
接線:
RXD--TXD2
TXD--RXD2
之後就初始化,兩個單片機的波特率要一樣。之後就一發一收了,可以用中斷方式接收。
❻ 什麼是STC單片機
STC系列單片機是宏晶科技生產的單時鍾/機器周期(1T)的單片機。
它是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。內部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S),針對電機控制,強干擾場合。
這種工藝的存儲器用戶可以用電的方式瞬間擦除、改寫。而且STC系列單片機支持串口程序燒寫。顯而易見,這種單片機對開發設備的要求很低,開發時間也大大縮短。寫入單片機內的程序還可以進行加密。
(6)stc單片機通信擴展閱讀
單片機技術的開發
(1)CPU開發。
開發單片機中的CPU匯流排寬度,能夠有效完善單片機信息處理功能緩慢的問題,提高信息處理效率與速度,開發改進中央處理器的實際結構,能夠做到同時運行2-3個CPU,從而大大提高單片機的整體性能。
(2)程序開發。
嵌入式系統的合理應用得到了大力推廣,對程序進行開發時要求能夠自動執行各種指令,這樣可以快速准確地採集外部數據,提高單片機的應用效率。
(3)存儲器開發。
單片機的發展應著眼於內存,加強對基於傳統內存讀寫功能的新內存的探索,使其既能實現靜態讀寫又能實現動態讀寫,從而顯著提高存儲性能。
(4)計算機開發。
進一步優化和開發單機片應激即分析,並應用計算機系統,通過連接通信數據,實現數據傳遞。
❼ stc單片機的spi通信
可能原因1: SPI 線路與 繼電器 過於靠近,繼電器動作時產生的電磁輻射,或傳導 到SPI 通訊線路上,導致的通訊異常。
可能原因2: SPI設備的電源電路去耦效果不佳(濾波電容參數過小),或電源線路過細(包括 電源線、地線迴路,迴路指從供電源頭進來到供電源頭回去的線路)。
可能原因3: 繼電器驅動電路沒有 反向電動勢 吸收電路的設計,續流二極體是其中一種設計電路。
❽ stc12c5a60s2單片機第二串口通訊問題(可以發送不能接接收)
如果確定硬體沒有問題,先用查詢方式測試接收是否正常(標志位是S2CON的最低位)。如果查詢方式接收正常,再檢查中斷相關的設置(串口2中斷允許IE2的最低位置位了沒有,時鍾源有沒有在運行,波特率設置是否正確,中斷入口函數是不是對應於矢量8)
❾ STC單片機如何設置通信引腳不是上拉
STC單片機不能設置通信引腳不是上拉,只能設置往上拉,不然就是默認下拉
❿ STC單片機 串口通信 奇偶校驗
1、51單片機SCON=0xDA,工作在方式3.(方式2也可以)
串口 1 模式 3:
波特率是可變的,其它和模式2 相同
11 位數據通過TxD/P3.1 發送,通過RxD/P3.0 接收。一幀數據包含一個起始位(0),8 個數據位(低位在
先),一個可編程的第9 位,和一個停止位(1)。發送時,第9 位數據位來自特殊功能寄存器SCON 的
TB8 位.接收時,第9 位進入特殊功能寄存器SCON 的RB8 位。
SMOD
串口1波特率在模式3 = ( 2 / 32 ) x BRT獨立波特率發生器的溢出率
當SMOD = 0時,串口1波特率 = BRT 獨立波特率發生器的溢出率 / 32,
當SMOD = 1時,串口1波特率 = BRT 獨立波特率發生器的溢出率 / 16,
BRT獨立波特率發生器的溢出率 = Fosc/12/( 256 - BRT ),當BRTx12 = 0時,
BRT獨立波特率發生器的溢出率 = Fosc / ( 256 - BRT ),當BRTx12 = 1時
TB8:發送時校驗位,可以奇校驗或偶校驗(直接置0或1),然後再發送。
RB8:接收時校驗位,判斷接數據是否正確。
2、程序
/*****************************************
*串口1中斷
*****************************************/
void RXD_Int_Service() interrupt 4
{
uint8 ch;
if(RI)
{
RI=0;
Usart1.RxdDly=6; //超過0.3S清空計數
Usart1.RxdBuf[Usart1.RxdCnt]=ch;
Usart1.RxdCnt++;
if(Usart1.RxdCnt>=10)
{
Usart1.RxdTrue=1; //接收正確。
Usart1.RxdNum=Usart1.RxdCnt;
Usart1.RxdCnt=0;
}
}
if(TI)//防止發送中斷
{
TI=0;
}
}
void Timer0_InSevice() interrupt 1
{
TH0=0xdc; //定義50ms 正常值0xfe 0x0c ,修正值:0xfe 0x16;
TL0=0x00; //11.0592MHz晶振
if(Usart1.RxdDly)
{
Usart1.RxdDly--; //0.3S沒有接收到數據,清0計數。
if(Usart1.RxdDly==0)
{
Usart1.RxdCnt =0; //記數清0.
}
}
}