冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 457|回覆: 0
打印 上一主題 下一主題

[討論] STC12C5608AD-35I-SKDIP28製作WIFI無線監視器

[複製鏈接]

2609

主題

0

好友

946

積分

高級會員

Rank: 4

UID
373967
帖子
7437
主題
2609
精華
0
積分
946
楓幣
1177
威望
926
存款
26000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
408 小時
註冊時間
2023-1-12
最後登入
2024-5-5

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-8 07:25:24 |只看該作者 |倒序瀏覽
STC12C5608AD-35I-SKDIP28是一款8051系列的微控制器
您可以使用它來製作WiFi無線監視器。

以下是您需要的零件列表:

STC12C5608AD-35I-SKDIP28微控制器
ESP8266 WiFi模塊
攝像頭模塊
電容器和電阻器
電源適配器和連接線
杜邦線
您可以使用下面的鏈接來查看STC12C5608AD-35I-SKDIP28微控制器的引腳佈局:

https://www.stcmcu.com/datasheet/stc/stc-ad-pdf/stc12c5608ad-series-english.pdf

下面是示例代碼,可用於ESP8266模塊與STC12C5608AD-35I-SKDIP28微控制器之間的通信。該代碼可以通過串行通信從ESP8266模塊接收數據,並將其顯示在液晶顯示器上。


#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#include <string.h>

sbit ESP8266_RTS = P1^1;
sbit ESP8266_CTS = P1^0;
sbit ESP8266_RST = P1^2;

sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit LCD_D4 = P2^4;
sbit LCD_D5 = P2^5;
sbit LCD_D6 = P2^6;
sbit LCD_D7 = P2^7;

void delay(unsigned int i);
void LCD_Init(void);
void LCD_WriteCommand(unsigned char Command);
void LCD_WriteData(unsigned char Data);
void LCD_WriteString(unsigned char x,unsigned char y,unsigned char *s);
void ESP8266_Init(void);
void ESP8266_SendString(unsigned char *s);
void ESP8266_ReceiveString(unsigned char *s);

void main()
{
    unsigned char str[100];
    unsigned char temp[50];

    LCD_Init();
    ESP8266_Init();

    while(1)
    {
        ESP8266_ReceiveString(str);
        sprintf(temp, "%s", str);
        LCD_WriteString(1,1,temp);
    }
}

void delay(unsigned int i)
{
    while(i--);
}

void LCD_Init(void)
{
    delay(10000);
    LCD_WriteCommand(0x30);
    delay(5000);
    LCD_WriteCommand(0x30);
    delay(5000);
    LCD_WriteCommand(0x30);
    delay(5000);
    LCD_WriteCommand(0x38);
    LCD_WriteCommand(0x0C);
    LCD_WriteCommand(0x06);
    LCD_WriteCommand(0x01);
}

void LCD_WriteCommand(unsigned char Command)
{
    RS = 0;
    RW = 0;
    E = 1;
    LCD_D4 = Command >> 4;
    LCD_D5 = Command >> 5;
    LCD_D6 = Command >> 6;
    LCD_D7 = Command >> 7;
    E = 0;
    delay(50);
    E = 1;
    LCD_D4 = Command & 0x0F;
    LCD_D5 = (Command & 0x1F) >> 4;

LCD_D6 = (Command & 0x3F) >> 5;
LCD_D7 = (Command & 0x7F) >> 6;
E = 0;
delay(50);
}

void LCD_WriteData(unsigned char Data)
{
RS = 1;
RW = 0;
E = 1;
LCD_D4 = Data >> 4;
LCD_D5 = Data >> 5;
LCD_D6 = Data >> 6;
LCD_D7 = Data >> 7;
E = 0;
delay(50);
E = 1;
LCD_D4 = Data & 0x0F;
LCD_D5 = (Data & 0x1F) >> 4;
LCD_D6 = (Data & 0x3F) >> 5;
LCD_D7 = (Data & 0x7F) >> 6;
E = 0;
delay(50);
}

void LCD_WriteString(unsigned char x,unsigned char y,unsigned char *s)
{
unsigned char address;

if(y==0)
    address = 0x80 + x;
else
    address = 0xC0 + x;

LCD_WriteCommand(address);

while(*s)
{
    LCD_WriteData(*s);
    s++;
}
}

void ESP8266_Init(void)
{
ESP8266_RST = 0;
delay(50000);
ESP8266_RST = 1;
delay(50000);
ESP8266_SendString("AT\r\n");
delay(10000);
ESP8266_SendString("AT+CWMODE=1\r\n");
delay(10000);
ESP8266_SendString("AT+CWJAP="SSID","password"\r\n"); //replace "SSID" and "password" with your WiFi SSID and password
delay(20000);
}

void ESP8266_SendString(unsigned char *s)
{
while(*s)
{
SBUF = *s;
while(TI == 0);
TI = 0;
s++;
}
}

void ESP8266_ReceiveString(unsigned char *s)
{
unsigned char i;

kotlin
Copy code
while(1)
{
    if(RI == 1)
    {
        *s = SBUF;
        RI = 0;
        s++;

        if(*s == '\n' || *s == '\r')
        {
            *s = '\0';
            break;
        }
    }
}
}



此示代碼僅適用於ESP8266模塊與STC12C5608AD-35I-SKDIP28微控制器之間的通信,還需要添加相應的代碼以支持攝像頭模塊和其他功能。
[發帖際遇]: 一個袋子砸在了 洪嵐峰 頭上,洪嵐峰 賺了 1 楓幣. 幸運榜 / 衰神榜
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-5-5 05:03

回頂部