学习STC51单片机24(芯片为STC89C52RCRC)

article/2025/6/16 19:55:30

每日一言

        把 “我不行” 换成 “我试试”,你会发现一片新的天地。

那关于优化

白盒测试

我们之前不是通过这个接线方式可以看到返回到信息嘛因为安信可的特性就是返回Esp8266的反馈,可以看到代码死在哪里了,导致连接不上,因为我们怎么知道5秒可以连接上路由器呢,所以说代码不太健壮,所以我们一定要让联网成功以后再让他去做数据透传这些事情

我们先通过这个测试来检测代码的好坏,那为什么要这样接线呢?

有两点

  1. 安可信助手是专门调试ESP8266的

因为原本ESP8266发送数据后都会发送这些成功和失败信息的信息的,但是一般的串口是不会返回信息的(只是不显示信息),由于安可信是做ESP8266的技术支持的,所以这个安可信串口助手会显示信息,那么我们就是可以利用这一点,来看我们的代码是否写得好,可以去不断调试,因为可以看到反馈信息

这个安可信的话会返回相关的信息     这个STCISP串口助手的话不会

那么我们可以先根据这一点先这样接线,目的就是调试代码,调试完之后我们再将单片机与ESP82664根线完全接通

展示代码

解释代码:

很简单,为什么我们要用这样的办法(标志位的方法),是因为延时是一个很容易炸的方法,我们可以去测试,每一次ESP8266联网的时间都不一样,那么就是很有可能会超过延时时间导致失败,或者导致时间的冗余,都是容易导致失败的原因,好的,现在我们根据标志位的方法

就等于是等待ESP8266进行连接WIFE、连接服务器、开启数据透传模式的操作,随后都会反馈数据,他只会一条一条执行,因为我们在中断的时候设置了。只有当我们在STCISP的串口助手输入带有W O这样的字眼才会跳出循环继续下去,为什么要这样做,取决于我们的接线测试,ESP8266的反馈在模拟阶段暂时要看得到的话必须要让安可信串口反馈现象,但是这个数据不会返回到单片机,如果不是测试的话,就会返回到单片机(测试测试,所以我们叫做测试!!!安可信的好处!!!)

当在安可信看到结果后说明ESP操作成功了,所以我们需要手动在STCISP(单片机的串口助手)发送WIFI GOT IP(相关字眼)发送后再发送OK 这个是对连WIFE的操作,当然我们的代码层面要讲OK这个标志复位为0,这样下面的指令才能用上OK的标志位

好啦,后面的都是我们看到安可信的成功信息后,我们STCISP那边就输入OK,就好了,就除了连WIFE我们是多设置了一个标志位要发送WIFE GOT IP 和OK,其他的都只要发送OK就行,

这样的成功率接近100%了,也就是一个成功的程序了,稳定性高

好了,测试完代码没有问题那我们就直接用单片机4根线直接连ESP8266,这样就不用我单片机还要输入信息才能开启下一条指令的发送了。复习一下原理:因为ESP8266会返回成功的信息,这样单片机收到后就会进行接收中断的判断,只要返回到字符数组里面有复合成功信息的相关的几个字符,那么我们就等于是判断出来了ESP8266成功的完成了联网等等相关操作

然后我们就可以通过TCP服务器来操控LED灯的亮灭了

比如说我们代码里面设置成这样我们就可以让LED灯灭

如果运用于手机上我们是不是就可以只要在一个局域网里面,我们就可以进行手机开关灯的操作了,惊喜吧!!!

其实我们已经可以完成很多了,如果你单片机的模块都堆上去,那我们是不是只要在家在一个局域网内都就可以通过手机对只要连接了ESP8266模块的模块进行操作了,那么是不是智能家居我们就可以去逐步实现了!!

最后一点优化点,要是出现了FALL现象,这个是小概率事件,但是我们要处理好他

我们在代码里面添加这个操作,我们这样可以根据灯的提示来判断,是否连接上了,如果没有连接上呢就会ESP8266给单片机返回FALL这个信息,那么我们设置了LED每个一秒亮一次,一共亮5次,后重启AT+RET是重启

完整的代码

#include "reg52.h"
#include "intrins.h"
#include  <string.h>
sbit D5 = P3^7;
sbit D6 = P3^6;
sfr AUXR = 0x8E;

#define SIZE 12

char buffer[SIZE];
code char LJWL[] = "AT+CWJAP=\"RedmiK50Pro\",\"12345678\"\r\n";
code char LJFWQ[]= "AT+CIPSTART=\"TCP\",\"192.168.167.197\",8880\r\n";
char TCMS[]      = "AT+CIPMODE=1\r\n";  //Êý¾Ý·¢ËÍģʽΪÊý¾Ý͸´«Ä£Ê½
char SJCS[]      = "AT+CIPSEND\r\n";
char RESET[]     = "AT+RST\r\n";
char AT_OK_Flag = 0;
char AT_Connect_Net_Flag = 0;

void Uart1_Init(void)    //9600bps@11.0592MHz
{
    AUXR  = 0x01;
    SCON  = 0x50;//ÅäÖô®¿Ú¹¤×÷·½Ê½1£¬RENʹÄܽÓÊÕ
    TMOD &= 0xF0;//ÅäÖö¨Ê±Æ÷ģʽΪ¶¨Ê±Æ÷1£¬8λ×Ô¶¯ÖØ×°ÔØ
    TMOD |= 0x20;
    TH1   = 0xFD;//É趨¶¨Ê±³õÖµ
    TL1   = 0xFD;//ÉèÖö¨Ê±Æ÷֨װֵ
    TR1   = 1;     //Æô¶¯¶¨Ê±Æ÷
    ES = 1;
    EA = 1;
}


void sendByte(char data_msg){
        SBUF = data_msg;
        while(!TI);
        TI=0;
}

void sendString(char *str){
        while(*str!='\0'){
            sendByte(*str);
            str++;
        }
}

void Delay1000ms(void)    //@11.0592MHz
{
    unsigned char data i, j, k;

    _nop_();
    i = 8;
    j = 1;
    k = 243;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void main()
{
        int mark=0;
        D5 = 1;
      Uart1_Init();
        Delay1000ms();
    
        sendString(LJWL);
        while(!AT_Connect_Net_Flag);
        while(!AT_OK_Flag);
        AT_OK_Flag = 0;
        sendString(LJFWQ);    
        while(!AT_OK_Flag);
        AT_OK_Flag = 0;
        sendString(TCMS);
        while(!AT_OK_Flag);
        AT_OK_Flag = 0;
      sendString(SJCS);
        while(!AT_OK_Flag);
    

        if(AT_Connect_Net_Flag){
             D5    =    0;//´ú±íÈëÍø³É¹¦
        }
        if(AT_OK_Flag){
             D6    =    0;//´ú±íÁ´½Ó·þÎñÆ÷²¢´ò¿ªÍ¸´«Ä£Ê½³É¹¦
        }
        
        while(1){
                        Delay1000ms();
                        sendString("helloworld\r\n");
        }
}

void UART_handler() interrupt 4
{
        static int i = 0;
        int w;
        char tmp;
        if(RI == 1){
            RI = 0;
            tmp = SBUF;
            if(tmp =='W' || tmp =='O' || tmp=='L' ||tmp=='F' ){
                    i = 0;
            }
            buffer[i++]=tmp;
            
            if(buffer[0]=='W' && buffer[5]=='G'){
                 AT_Connect_Net_Flag=1;
                 memset(buffer,'\0',SIZE);
            }
            if(buffer[0]=='O' && buffer[1]=='K'){
                 AT_OK_Flag=1;
                 memset(buffer,'\0',SIZE);
            }
            if(buffer[0]=='F' && buffer[1]=='A'){
                    for(w=0;w<5;w++){
                            D5 = 0;
                            Delay1000ms();
                            D5 = 1;
                            Delay1000ms();
                    }
                    sendString(RESET);
            }
            
            if(buffer[0]=='L' && buffer[2]=='1'){
                D5 = 0;
            }
            if(buffer[0]=='L' && buffer[2]=='0'){
                D5 = 1;
                 memset(buffer,'\0',SIZE);
            }
            
            if(i==12){
                    i=0;
                 memset(buffer,'\0',SIZE);
            }
            
        }
        if(TI);
}


http://www.hkcw.cn/article/EsQmLEJMww.shtml

相关文章

效率办公Office 2003-2024网盘下载与安装教程指南

说起Office&#xff0c;相信大家都不会觉得陌生。不管是文字处理工具Word&#xff0c;还是电子表格程序Excel&#xff0c;抑或是幻灯片制作工具PowerPoint&#xff0c;都是大家日常工作和学习不可或缺的。下面就与大家来聊聊这款效率办公软件&#xff01; 目前来看&#xff0c…

美国牙医麻醉时用笑气致女童死亡 意外悲剧引发关注

美国牙医麻醉时用笑气致女童死亡 意外悲剧引发关注!美国南加州9岁女童西尔瓦娜莫雷诺去年10月因牙痛转诊至另一诊所,今年3月17日进行了臼齿根管手术。术后几小时,她突然死亡。圣地牙哥郡法医办公室近日公布调查报告,裁定女童的死亡为意外。调查显示,她在接受麻醉时使用了一…

私家车给救护车让行反被司机竖中指 车主:对方已致歉

6月2日18时24分,四川成都绕城高速一辆新Q牌照的救护车向一辆私家车竖中指。网友小白在社交平台吐槽,自己驾车在绕城高速准备进入龙泉驿时,一辆鸣笛的救护车从后方急疾而来,小白立即变道让行,不料后方救护车超车后竟向小白坚中指。3日,百姓关注记者在社交平台联系到小白,…

高校通报施工方偷窃学生物品 施工单位被罚违约金

5月29日,南京大学基本建设处发布了对南京诚善科技有限公司执行合同违约金的通报。经调查发现,该公司员工于5月13日在学校宿舍楼内偷窃学生物品。根据施工合同的相关规定,并经过处办公会研究确认,决定对南京诚善科技有限公司执行2000元违约金,从工程款中予以扣减。希望校内…

男子住酒店半夜房门被陌生女子刷开 酒店处理引争议

6月2日,一位网友在社交平台发帖称,他在沈阳万豪酒店入住时,凌晨时分房间门被陌生异性刷开。等到次日退房时,酒店给出的补偿方案是5000点积分,只够住半个晚上,让他深感不满。当事人肖先生描述,5月31日他从江西到沈阳旅游,住在沈阳北站旁边的万豪酒店。6月1日凌晨,当他快…

万豪称房门被女子刷开是因同名同姓 酒店补偿引争议

6月2日,一位网友在社交平台发帖称,他在沈阳万豪酒店入住时,凌晨时分房间门被一名陌生女性刷开。等到次日退房时,酒店只给出5000点积分的补偿方案,这让他深感不满。肖先生描述了事情经过:5月31日他从江西到沈阳旅游,住在沈阳北站旁边的万豪酒店。6月1日凌晨,当他快要睡着…

三年连破三次死局 李在明掌舵青瓦台 寒门逆袭之路

李在明,一个从辍学打工的寒门少年成长为屡败屡战的政治人物,最终在韩国前总统尹锡悦突遭弹劾的政治地震中赢得大选,成为新任总统。这是他第三次向总统宝座发起冲击。2017年,他在第19届总统选举中止步于共同民主党党内初选;五年后的第20届总统选举中,他以微弱劣势惜败国民…

卫星图显示13架俄大型飞机遭摧毁 乌军“蛛网”行动精准打击

最新卫星图像揭示,俄罗斯空军在乌克兰军方代号为“蛛网”的行动中遭受重大打击。13架大型军机被摧毁,其中包括8架早已停产的图-95战略轰炸机。这一损失对俄军的战略威慑力造成了不可恢复的打击。当地时间6月1日,乌克兰军方宣布对俄罗斯多个州的军用机场发动大规模无人机袭击…

为什么说李在明赢面最大 民调领先优势明显

韩国大选进入最后决战阶段,李在明第三次冲击总统宝座能否成功,金文洙是否成为最大变数,答案即将揭晓。目前,韩国第21届总统大选已经拉开帷幕,从今天清晨6点到晚上8点,选民们将通过手中的选票决定国家的未来领袖。投票结束后,计票工作随即展开,最快到明天凌晨6点,新任总…

《酱园弄》能否拿下30亿票房 全明星阵容引期待

6月份国产电影市场迎来了一部备受期待的作品——《酱园弄悬案》,定档于6月21日在各大院线上映。这部电影在开机时就引起了广泛关注,不仅因为导演陈可辛亲自操刀,还因为这是章子怡离婚后的首部作品,象征着她重返电影圈的决心。影片杀青后曾登上戛纳电影节的舞台,但原150分钟…

常州苏超连输3场被调侃变“I州” 比赛热度持续攀升

江苏省城市足球联赛近日在网络上引起了广泛关注,网友们纷纷玩梗。这场被称为“苏超”的足球联赛由江苏省体育局与各设区市政府联合主办,江苏13个设区市各派出一支队伍参赛,球员包括职业球员、个体工商户、大学生和高中生等业余球员。自5月10日开赛以来,比赛迅速走红,吸引了…

专家:李在明两字定调美韩关系 外交牌引关注

韩国大选即将迎来最后时刻,各候选人纷纷使出浑身解数争取选票。目前胜算最大的李在明将目光投向中国。2024年12月3日,尹锡悦突然发布紧急戒严令,次日又迅速撤销,这一系列反常举动引发广泛关注。不到两个月后,他因涉嫌发动内乱罪被拘留起诉,重创执政党形象,促使国家提前进…

乌炸毁俄轰炸机影响有多大 乌克兰奇袭改变谈判格局

6月1日,乌克兰成功偷袭了俄罗斯本土的多个轰炸机基地,至少有5架图-95MS轰炸机、2架图-22M3轰炸机和1架安-12运输机被炸毁。这次袭击对乌克兰带来了多方面的好处。乌克兰提升了在俄乌和谈中的谈判筹码。此前,由于乌军在库尔斯克地区被俄军击退,外界对乌克兰的前景并不乐观。…

如何看待李在明的对华政策框架 平衡外交成主轴

距离韩国总统选举投票仅剩六天,一场电视辩论和三份封关民调已经勾勒出大选后的局势。5月27日晚,首尔MBC电视台演播厅内,共同民主党候选人李在明面对全国观众发出宣言:“国民通过‘光之革命’制止了内乱,但内乱仍在持续。6月3日将成为彻底镇压内乱、全面恢复民主的胜利日。…

世界泳联晒全红婵陈芋汐完美一跳 中国跳水梦之队再展雄风

在2025年世界泳联跳水世界杯蒙特利尔站的赛场上,中国跳水队再次展现了“梦之队”的实力。陈芋汐与15岁新秀黄依婷以近乎完美的表现摘得女子双人10米台金牌,观众席爆发出经久不息的掌声。这一刻不仅标志着中国跳水新生代的崛起,也体现了这支队伍在人才培养上的深谋远虑。全红…

整排俄核轰炸机被炸有何影响 全球军事平衡受考验

俄乌冲突再度升级。近日,据多方消息显示,乌克兰对俄罗斯战略轰炸机基地发动了大规模袭击,引发全球高度关注。从军事战略角度看,此类行动虽可能在短期内改变谈判态势,但也潜藏着全球军事战略失衡的风险。乌克兰安全局内部人士透露,乌方进行了代号“蛛网”的特别行动,经过…

美国女童看牙数小时后因笑气身亡 意外事故调查结果公布

美国南加州9岁女童西尔瓦娜莫雷诺因牙痛转诊至另一诊所,并于今年3月17日进行臼齿根管手术。术后几小时,她突然死亡。圣地牙哥郡法医办公室近日公布调查报告,裁定女童的死亡为意外。她在接受麻醉时使用了一氧化二氮(笑气),引发高铁血红蛋白血症。验尸报告显示,女童在手术…

如何判断韩国新总统是政客还是政治家 无缝衔接执政挑战

韩国将在6月3日正式迎来新一届总统选举。当选总统最早将于4日上午7时许正式获得总统职权,并开启任期。届时,包括韩军统帅权在内的总统固有权限将从代总统李周浩自动转移至新任总统。当地时间5月30日,首尔江南体育文化中心设置的投票所内,市民在“事前投票”期间排队投票。无…

男子偷梨被果农砸到腿 果农担责一半 偷窃反索赔引争议

如果在家发现小偷正在偷东西,应该怎么做?广西一男子王某看到梨园的梨子长得喜人,忍不住进去偷摘。被果农李大爷发现后,李大爷大声喝止,王某慌忙逃跑,结果被树枝绊倒,锄头砸到他的腿上,治疗费用高达7万多。事后,王某要求李大爷赔偿20万。法院审理认为,李大爷追捕王某是…

韩国大选的本质是什么 宪政命运的抉择

5月31日,共同民主党总统候选人李在明在平泽市举行的造势活动吸引了大量支持者,显示出其强大的动员力。此前的5月29日至30日,韩国举行了总统选举的缺席投票,投票率为34.74%,略低于2022年总统选举的36.93%。尽管差距不大,但这背后的政治温度和选民结构预示着一个重要的转折…