一、硬件设计

1. 硬件选型

主控芯片:选用STC89C52RC,单片机通过串口与EPS866模块通信。

LDO: 选用AMS1117-3.3V,ESP8266模块需要使用3.3V电源,使用1117-3.3V将常用的5V转成3.3V。

WIFI模块:使用ESP8266-01模块,为了可以正常和51单片机通信,使用串口助手将ESP8266的波特率改为9600。

2. 原理图设计

3. PCB设计

4. 实物

二、软件设计

1. 51单片机程序设计

1.1 单片机要和ESP8266正常通信,需要设置通信波特率相同。如:51单片机使用的波特率为9600,ESP8266也需要设置为9600,否则无法正常通信,而ESP8266模块默认波特率为115200。修改ESP8266波特率的方法:ESP8266和USB-TTL连接好线后,使用串口助手发送AT+UART=9600,8,1,0,0指令即可。

ESP8266和USB-TTL模块连接方式
ESP8266 USB-TTL
3V3 3V3
EN 3V3
RX TX
TX RX
GND GND

1.2  部分程序如下:

// 初始化定时器0
void Timer0Init()
{TMOD |= 0x01;TH0 = (65536-50) / 256; // TL0 = (65536-50) % 256;TR0 = 1; // 启动定时器ET0 = 1; // 打开定时器中断EA = 1;   // 打开总中断
}void delayms(uint xms)  //延时
{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);
}uchar i,j,temp;
bit flag;
uchar receive[4];void int_init(){           //开启定时器1,产生9600波特率TMOD = 0x20;         //定时器1工作在方式2八位自动重装模式TH1 = 0xfd;TL1 = 0xfd;TR1 = 1;               //开启定时器1PCON = 0x00;           //波特率不加倍SM0 = 0;               //串口工作方式SM1 = 1;   REN = 1;               //串口接收允许
}void send_char(uchar a)
{SBUF = a;while (TI == 0);TI = 0;
}void send_string(uchar * s)
{while (*s != '\0'){send_char(*s);s++;}
}void init_esp8266()
{send_string("AT+CIPMUX=1\r\n");delayms(3000);send_string("AT+CIPSERVER=1,8080\r\n");delayms(3000);
}

2. Android APP程序设计

Android APP我是使用Android Studio来编写的,首先设计好界面,页面布局如下:

需要连接esp8266需要有网络权限,在AndroidManifest.xml文件中添加

 <uses-permission android:name="android.permission.INTERNET" />

MainActivity代码如下:

package com.lili.controlled;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;public class MainActivity extends Activity implements MoveListener {public ImageView ledImageView;public Button connectButton; // 连接esp8266public Button openOrCloseLEDButton; // 打开或者关闭LED按钮private IosColumnBrightnessView mIosColumnBrightnessView;private ConnectThread connectThread;public boolean isConnected;public boolean isOpenLED;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();connectThread = new ConnectThread(this, "192.168.4.1", 8080);// 开启连接线程connectThread.start();}private void initView() {// LED灯图标ledImageView = (ImageView) findViewById(R.id.image);connectButton = findViewById(R.id.button_connect);openOrCloseLEDButton = findViewById(R.id.openOrCloseLED);// 调节亮度viewmIosColumnBrightnessView = findViewById(R.id.ios_brightness);mIosColumnBrightnessView.setMoveListener(this);}// 连接esp8266public void connect(View view){// 如果没有连接if (!isConnected){connectThread.startConnect = true;} else {try {connectThread.closeConnect();} catch (Exception e) {e.printStackTrace();}}}// 打开或者关闭LEDpublic void openOrCloseLED(View view){// 如果已经连接到esp8266if (isConnected){// 如果已经打开LEDif (isOpenLED){// 关闭LEDconnectThread.closeLED();} else {// 开启LEDconnectThread.openLED();}} else {Toast.makeText(this, "未连接到服务器!", Toast.LENGTH_SHORT).show();}}@Overridepublic void move_light(int value) {// 如果已经连接到esp8266if (isConnected){// 发送数据}}
}

最后,原理图、PCB图、51单片机源码和Android APP源码放在我网站上,有需要的小伙伴们可以点击下载【基于51单片机与ESP8266的智能台灯设计】

基于51单片机与ESP8266的智能台灯设计相关推荐

  1. 【资料分享】基于51单片机的智能指纹考勤系统设计-原理图-PCB-程序-报告、基于51单片机和MAX1898的智能手机充电器设计

    1661[毕设课设]基于51单片机的智能指纹考勤系统设计-原理图-PCB-程序-报告 摘 要 随着科学技术的不断发展带动着电子行业的地位越来越重,现在电子产品几乎在社会的各个领域都可以见到.这些技术的 ...

  2. 【51毕设案例】基于51单片机-定时喂食供氧智能鱼缸

    目录 功能介绍: 整体功能简述: 硬件框图: 软件流程图: 原理图: 仿真图: 元器件清单: 主要部分代码展示:void main() 工程管理展示: 下载内容展示: 更详细代码视频讲解及代码下载请看 ...

  3. 基于51单片机的公交车安全智能检测系统、基于51单片机的金属探测仪控制设计、基于单片机的智能电子密码锁系统设计、基于51单片机酒精浓度检测仪设计【资料转发分享】

    630基于51单片机的公交车安全智能检测系统-设计资料 本资料是基于单片机的公交车安全监测系统 具有如下功能: 1.监测环境的温度,超标报警.可以设置上下限 2.监测是否有火灾以及有毒气体,超标报警, ...

  4. 基于51单片机的RFID RC522智能钱包

    RFID RC522智能钱包 基于51单片机的RFID RC522智能钱包,这个程序主要演示的是RFID RC522智能钱包中的设置及扣款功能,相信会扣款那么充值也就改一个数字的事,具体的功能要自己根 ...

  5. 基于STM32蓝牙控制的app智能台灯设计

    提示:记录毕设 文章目录 前言 一.任务书 1.1设计(研究)目标: 1.2设计(研究)内容: 二.代码思路 三.硬件设计 3.1总体设计 3.2蓝牙部分设计 四.联系我们 五.部分代码 喜欢请点赞哦 ...

  6. 基于51单片机的烟雾火灾报警器proteus仿真设计

    基于51单片机的烟雾火灾报警器proteus仿真设计 1 开发环境 仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0004 代码讲解+仿真讲解+仿真演示 ...

  7. 单片机六位抢答器c语言程序,八路电子抢答器(基于51单片机的8路抢答器设计C语言程序)...

    哥,你还有AT89C51单片机8路抢答器的资料吗 哥,你还有AT89C51单片机8路抢答器的资料吗 AT89C51单片机8路抢答器的资料 源程序如下 #include #define uchar un ...

  8. 基于单片机超声波视力保护系统设计-基于51单片机8音键电子琴仿真设计-基于8086八路模拟信号采集均值显示系统设计-基于8086八路数据电压温度采集系统-基于8086波形发生器仿真设计【毕设课设分享】

    539基于单片机超声波视力保护系统设计-设计资料 硬件构成:单片机+最小系统+LCD1602液晶显示模块+超声波模块+DS18B20温度采集模块+光线检测模块+ADC0832模块+蜂鸣器模块+LED指 ...

  9. 【019】基于51单片机的交通灯Proteus仿真设计

    一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...

最新文章

  1. Powercli 批量获取vmhost 时间
  2. nginx在windows里面配置
  3. 手把手教你:如何让Windows恋上Linux bash
  4. Android自动化测试Uiautomator--UiSelector接口简介
  5. linux原理与应用期末考试,武汉大学计算机学院2009-2010学年第一学期期末考试《Linux原理与应用》期末考试试卷(共8套,有答案)...
  6. Sklearn 与 TensorFlow 机器学习实用指南(补档)
  7. require.js引入css文件,[DikeJS]RequireJS引入CSS样式文件(五)
  8. iOS开发笔记 基于wsdl2objc调用asp.net WebService
  9. linux下无法安装VMware的解决方法
  10. 《计算机组成原理》第二版第七章课后习题答案
  11. 微信小程序获取用户手机号
  12. iphone没有计算机功能,苹果iPad为什么没有计算器应用程序
  13. 【git】小甲鱼Git教程《极客Python之Git实用教程》笔记一
  14. 增强版在线LEFSe分析和可视化鉴定标志性基因或物种
  15. vue富媒体编辑器组件:vue-wangeditor的使用
  16. Linux学习笔记RHEL 7(九)--RHEL7.0 DNS服务配置
  17. 海量数据大课学习笔记(2)-不在其位要谋其政,技术Leader能力模型提升-小滴课堂
  18. Java高级特性 - 多线程练习题
  19. Ubuntu 16.04+ROS+ORB-SLAM2配置以及相关问题
  20. 用Python制作动态饼图

热门文章

  1. 【转】Spring AMQP 源码分析 01 - Impatient
  2. fis3静态资源库使用
  3. 基于ssm智能停车场车位管理系统
  4. ResNet18识别CelebA数据集(Pytorch实战)
  5. 使用python生成曲线图
  6. Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
  7. 概率论与统计学(2)
  8. C#对象序列化和反序列化
  9. 在线免费角色动画网站:mixamo
  10. Java如何实现文档在线预览+下载