久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 265|回復: 3
打印 上一主題 下一主題
收起左側

STC15單片機串口返回值和控制繼電器

[復制鏈接]
跳轉到指定樓層
樓主
ID:818740 發表于 2025-4-24 18:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
剛學單片機,硬件是用的最簡單的STC 15W408單片機開發板,外接RS232串口通訊,外接光耦隔離的繼電器模塊,強制單片機IO口,繼電器可以正常吸合。可以說硬件連接無問題。現在要實現如下功能,網上找了很多方法,都沒有達到要求:1.要求STC 15W408 (28腳封裝)串口收到“PASS”,返回值“OK ”,17腳控制的繼電器吸合,串口收到“FAIL” 返回值“NG”,18腳控制的繼電器吸合。其中PASS FAIL字符沒有結束位,也沒有回車換行字符。

哪位大神,幫忙寫個代碼,參考一下,謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:685462 發表于 2025-4-24 23:55 | 只看該作者
串口接收char buffer[16];
中斷接收函數:
void UartIsr() interrupt 4
{
    if (TI)
    {
        TI = 0;
        busy = 0;
    }
    if (RI)
    {
        RI = 0;
        buffer[rptr++] = SBUF;
        rptr &= 0x0f;
    }
}
接收字符串和自定義fan_buf進行比較,如果相等給 CCAP0H
if( strcmp(fan_buf[0],buffer) == 0 )      //1700
     CCAP0H = 0x90;  
這是我用來給路由器散熱,控制風扇用的,用的stc8g1k08a

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:712097 發表于 2025-4-25 11:34 | 只看該作者
#include <STC15.H>
#include <string.h>

#define RELAY_PASS P16  // P1.6(17腳)
#define RELAY_FAIL P17  // P1.7(18腳)

char recvBuffer[5];     // 接收緩沖區(PASS/FAIL均為4字符)
unsigned char recvIndex = 0;
bit recvComplete = 0;   // 接收完成標志

void UART_ISR() interrupt 4 {
    if (RI) {
        RI = 0;         // 清除接收中斷標志
        recvBuffer[recvIndex++] = SBUF;  // 存入緩沖區
        if (recvIndex >= 4) {           // 接收滿4字節
            recvComplete = 1;          // 觸發處理標志
            recvIndex = 0;             // 重置索引
        }
    }
    if (TI) TI = 0;     // 清除發送中斷標志(未啟用發送中斷)
}

void UART_Init() {
    SCON = 0x50;        // 模式1:8位UART,允許接收
    AUXR = 0x14;        // 定時器2為1T模式,作為波特率發生器
    T2L = 0xE8;         // 波特率9600@11.0592MHz
    T2H = 0xFE;
    ES = 1;             // 使能串口中斷
    EA = 1;             // 全局中斷使能
}

void GPIO_Init() {
    P1M0 = 0xC0;        // P1.6/P1.7推挽輸出模式
    P1M1 = 0x00;        // 其他引腳準雙向口
    RELAY_PASS = 0;      // 初始狀態關閉繼電器
    RELAY_FAIL = 0;
}

void SendResponse(char *str) {
    while (*str) {
        SBUF = *str++;  // 發送字符
        while (!TI);    // 等待發送完成
        TI = 0;
    }
}

void main() {
    UART_Init();
    GPIO_Init();
    while (1) {
        if (recvComplete) {
            recvComplete = 0;
            // 比較接收內容并執行動作
            if (memcmp(recvBuffer, "PASS", 4) == 0) {
                SendResponse("OK");
                RELAY_PASS = 1;     // 吸合17腳繼電器
            } else if (memcmp(recvBuffer, "FAIL", 4) == 0) {
                SendResponse("NG");
                RELAY_FAIL = 1;     // 吸合18腳繼電器
            }
            // 延時后釋放繼電器(根據需求調整)
            DelayMs(2000);
            RELAY_PASS = RELAY_FAIL = 0;
        }
    }
}
回復

使用道具 舉報

地板
ID:595237 發表于 2025-4-25 12:00 | 只看該作者
請參考,自己調試一下

void main() {
    GPIO_Init();
    UART_Init();
    while(1); // 主循環保持空轉
}

// 串口中斷服務函數
void UART_ISR() interrupt 4 {
    if (RI) {
        RI = 0; // 清除接收中斷標志
        
        // 接收字符并存入緩沖區
        rxBuffer[rxIndex++] = SBUF;
        
        // 當接收滿4個字符時處理
        if (rxIndex >= 4) {
            // 檢測"PASS"命令
            if (memcmp(rxBuffer, "PASS", 4) == 0) {
                SendString("OK");
                Relay1 = 0;  // 吸合繼電器1
                Relay2 = 1;  // 釋放繼電器2
            }
            // 檢測"FAIL"命令
            else if (memcmp(rxBuffer, "FAIL", 4) == 0) {
                SendString("NG");
                Relay2 = 0;  // 吸合繼電器2
                Relay1 = 1;  // 釋放繼電器1
            }
            
            rxIndex = 0; // 重置接收索引
        }
    }
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久一区精品 | 国产毛片久久久久久久久春天 | 久久精品亚洲一区二区三区浴池 | 欧美一区视频在线 | 午夜精品一区二区三区在线观看 | 成人福利电影 | 天天插天天舔 | 国产人免费人成免费视频 | 欧美极品在线 | 2020亚洲天堂 | 亚洲视频中文字幕 | 久久国产日本 | 精品在线 | 国产91精品在线 | 亚洲国产看片 | 一级黄色录像片子 | 一区二区在线免费观看 | 国产精品一区二区av | 欧美成人a| 欧美一区二区三区小说 | 亚洲综合三区 | 午夜国产一级 | 拍真实国产伦偷精品 | 美女国内精品自产拍在线播放 | 天天看天天摸天天操 | 精品久久久网站 | 国产精品日韩在线 | 亚洲精精品 | 国产精品久久久久一区二区三区 | 男人av在线播放 | 精品久久九| 亚洲第1页| 亚洲在线一区二区 | 在线一级片 | 日韩不卡一区二区 | 成人欧美一区二区三区黑人孕妇 | 五月婷亚洲| 亚洲区中文字幕 | 91天堂网 | 精品久久久久久久久久久久久久久久久 | 成人欧美一区二区三区在线观看 |