
發布
注冊
/
登錄STC單片機的案例
基于機智云的STC單片機水溫智能控制系統的設計與實現
智能水溫控制系統,通信部分主要是STC單片機之間的通信、STC單片機和ESP8266 WiFi的通信,以及ESP8266 WiFi和機智云之間的通信。由于STC單片機模擬了PWM的定時輸出,如果利用串口進行通信,會出現不穩定現象,為避免這種現象,STC單片機之間的通信采用并行口,結合P15、P16實現并口通信協議,協議內容如表1所示。STC單片機通信控制從P0端口接收到溫度控制器傳輸的數據后,用串口連接ESP8266 WiFi模塊,ESP8266 WiFi模塊連接當前環境的路由器熱點,與機智云服務器建立TCP連接,進行數據傳輸。
同時,
手機終端或WEB終端發送控制命令,通過命令數據
→機智云服務器
→ESP8266 WiFi
→STC單片機通信控制
→STC單片機控制系統的通信流程,對溫度進行遠程監控。
4 實驗數據結果
根據軟硬件測試,系統自檢正常,溫度顯示正常,通信正常。設定STC單片機控制水溫在一定范圍內,對整體水溫控制系統進行測試,在20~60℃范圍內實現多組設定,溫度控制實驗效果如圖8所示。
圖8 溫度控制實驗效果
通過實驗結果分析,每個測試的目標溫度反映實際和誤差,在相同測試環境下,將溫度計和溫度采集模塊所測得溫度進行比對,將數值記錄得到表2,從而得到標度誤差。
展開 硬件特訓班問題解答【57問-8】
老師,我手上有個stc51單片機,現在用的延時是軟件延時,但實時性不好,弊端已經顯露出來的,所以,我現在打算用定時器0進行延時,但是我現在不知道該怎么實現比較好,
我選擇的思路是:把定時器配置成1ms,已經配置完成,然后在定義20ms,50ms,100ms,500ms的變量和標志位,打算當變量達到相對應的時間后,對應的標志位置1,
我現在疑惑不知道怎么辦的是:我在主函數中,不知道該如何去實現這些延時
我原來的代碼如下,我想修改成用定時器來延時,但我不知道該怎么實現,實時性比較差的代碼如下:
Y07=1;
delay_ms(20);
Y01=0:
if (x01==0)
{
Y02=0;
delay_ms(500);
if (x05 == 0)
{
Y04=0;
delay_ms(100);
Y06=1;
}
}
A.一般解決思路有兩種:一是改變定時器中斷初始化的值,而是利用全局變量,而定時器初始化的值不變的這種方式;但是改變初始化的值會牽扯進來很多東西,而且如果你的單片機運行的任務比較多的時候,你還想要通過定時器來實現時間片輪的控制的話,就會變得非常復雜,所以一般情況下我們如果要實現精確延時的話,我們都會采取全局變量+定時固定的方式來實現,換一種思路就是你可以把延時也看做是MCU運行的所有任務的其中一個任務這就要求大家對時間片輪方式去控制不同任務,最簡單的方式其實是用一個全局變量的數組,數組中的每個元素代表了一個任務,然后每個任務的時間片輪是多少可以通過這個數組來調整
B.我們還是回歸到我們精確延時的問題上來
展開 單片機控制步進電機設計及失步原因分析
根據步進電機勵磁狀態轉換,采用查表法求出所需的輸出狀態,并以二進制碼的形式依次存入單片機內部的存儲器中;然后按照正向或反向順序依次取出地址的狀態字,送給STC12C4052AD,輸出各勵磁狀態,從而實現環形分配器的功能。
程序總體框架包括:主程序、過流檢測中斷服務子程序、定時器中斷服務子程序、以及其他子程序(包括正轉、反轉子程序、鍵盤顯示控制子程序、A/D轉換子程序等),由于篇幅限制,在此不一一敘述。
4、系統測試
該系統采用超強抗干擾,小巧低功耗的工業級STC12C4052AD單片機為控制核心,工作可靠性高,抗于擾能力強。系統測試在專門的檢測實驗室內進行。利用群脈沖發生器(EFT-4001)、周波電壓跌落發生器(VDG-1105)、靜電放電發生器(ESD-20)以及雷擊浪涌發生器(SG-5006) 等專用儀器對系統的電壓變化抗擾度、快速瞬變脈沖群抗擾度、抗靜電和雷擊浪涌等參數進行檢測。經過實驗,系統功能正常,所有參數均已達標。
電子技術發展日新月異,新型單片機層出不窮。在電機控制系統開發過程中,如果恰當選取單片機以及各電路模塊的型號,能夠簡化設計過程,起到事半功倍的效果。該系統采用STC12C4052AD單片機,其工作方式、轉動速率及轉矩數可以通過鍵盤輸入,也可通過普通旋鈕或上位機調節。鍵盤顯示模塊采用 ZLG7289實現。本系統具有通用性,適當改變輸出口各位控制端,便可控制不同相數的步進電機。
展開