版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务8-1数字钟的设计与制作《单片机应用技术(C语言版)》一、任务导入自动计时,由6位LED显示器显示时、分、秒。具备校准功能,可以设置当前时间。具备定时启闹功能,可以设置启闹时间并同时开启闹钟功能,启闹15s后自动关闭闹铃。在闹钟开启状态或闹铃过程中,可以按键关闭闹钟功能。设计要求方案选型单片机——8051内核单片机计时方案——8051内部定时器,采用12MHz晶振方案选型显示——8个数码管动态显示功能选择——三个按键,两个采用外部中断控制二、系统功能及资源分配数字钟硬件电路图数字钟硬件电路图采用共阴极数码管,因此P0口输出低电平选中相应的位,而P1口输出高电平则点亮相应的段。单片机P3口的P3.0、P3.2和P3.3为键盘输入口。单片机的P2.7引脚接蜂鸣器,低电平驱动蜂鸣器鸣叫,模拟闹钟启闹。P2.0引脚连接一个LED作为闹钟功能指示灯,闹钟功能开启则LED点亮,闹钟功能关闭则LED熄灭。K1键
在闹钟功能关闭状态下,按下K1进入闹钟时间修改,再次按下K1,结束闹钟时间修改同时开启闹钟功能。在闹钟功能开启状态或闹铃过程中,按下K1键则关闭闹铃和闹钟功能。K2键
修改时间或闹钟时间的“小时”,每按一次K2,“小时”加1,加到23后再加1则清零。K3键
修改时间或闹钟时间的“分钟”,每按一次K3,“分钟”加1,加到59后再加1则清零。键盘功能定义6位LED从左到右依次显示时、分、秒,采用24小时方式计时。显示定义小时分钟秒(1)时间显示上电后,系统自动进入时钟显示,从“00﹕00﹕00”开始计时。(2)时间调整计时过程中,随时按下K2修改“小时”,按下K3修改“分钟”。(3)闹钟设置/启闹/停闹按下K1键,数码管显示00﹕00﹕00,进入闹钟时间设置状态。用K2和K3键分别修改闹钟时间的“小时”和“分钟”,再次按下K1结束闹钟时间设置,同时启动定时启闹功能,闹钟指示灯亮,并恢复时间显示。定时时间到,蜂鸣器鸣叫15s后停闹。在闹钟设置过程中,系统继续计时。(4)关闭闹铃及闹钟功能在闹钟功能开启状态或者响铃状态下,按下K1关闭闹铃和闹钟功能。系统工作流程(1)时间显示上电后,系统自动进入时钟显示,从“00﹕00﹕00”开始计时。(2)时间调整计时过程中,随时按下K2修改“小时”,按下K3修改“分钟”。(3)闹钟设置/启闹/停闹按下K1键,数码管显示00﹕00﹕00,进入闹钟时间设置状态。用K2和K3键分别修改闹钟时间的“小时”和“分钟”,再次按下K1结束闹钟时间设置,同时启动定时启闹功能,闹钟指示灯亮,并恢复时间显示。定时时间到,蜂鸣器鸣叫15s后停闹。在闹钟设置过程中,系统继续计时。(4)关闭闹铃及闹钟功能在闹钟功能开启状态或者响铃状态下,按下K1关闭闹铃和闹钟功能。系统工作流程上电后,系统自动进入时钟显示,从“00﹕00﹕00”开始计时。1.时间显示计时过程中,随时按下K2修改“小时”,按下K3修改“分钟”。2.时间调整按下K1键,数码管显示000000,进入闹钟时间设置状态。用K2和K3键分别修改闹钟时间的“小时”和“分钟”,再次按下K1结束闹钟时间设置,同时启动定时启闹功能,闹钟指示灯亮,并恢复时间显示。定时时间到,蜂鸣器鸣叫15s后停闹。在闹钟设置过程中,系统继续计时。3.闹钟设置/启闹/停闹在闹钟功能开启状态或者响铃状态下,按下K1关闭闹铃和闹钟功能。4.关闭闹铃和闹钟功能三、模块化程序设计主函数模块初始化LED动态显示计时时间显示闹钟模式设置闹钟时间设置闹钟报警处理T0中断函数INT0中断函数INT1中断函数程序模块划分程序模块划分定时器初始化,T0工作于工作方式1,晶振频率12MHz下,设置10ms定时初值,并开放T0中断以及两个外部中断。6位LED动态显示,将显示缓冲区中的6个数依次扫描显示一遍。主函数模块初始化LED动态显示计时时间显示闹钟模式设置闹钟时间设置闹钟报警处理T0中断函数INT0中断函数INT1中断函数程序模块划分将当前计时时间的“小时”、“分钟”和“秒”拆分到显示缓冲区,并调用LED显示扫描函数实现时间的显示。按下K1进入闹钟时间设置,调用闹钟时间设置函数;在闹钟开启或闹铃响期间,按下K1关闭闹钟功能。主函数模块初始化LED动态显示计时时间显示闹钟模式设置闹钟时间设置闹钟报警处理T0中断函数INT0中断函数INT1中断函数程序模块划分K2修改闹钟时间的“小时”,K3修改闹钟时间的“分钟”,K1按下结束修改;设置完闹钟时间后,自动开启闹钟。闹钟时分和当前时分相同、闹钟功能开启的情况下,蜂鸣器响15秒主函数模块初始化LED动态显示计时时间显示闹钟模式设置闹钟时间设置闹钟报警处理T0中断函数INT0中断函数INT1中断函数程序模块划分10ms定时修改当前时钟参数。加1方式修改当前时间的“小时”。加1方式修改当前时间的“分钟”。主函数模块初始化LED动态显示计时时间显示闹钟模式设置闹钟时间设置闹钟报警处理T0中断函数INT0中断函数INT1中断函数程序变量定义程序中的变量定义意
义bitnao;闹钟开关标志,nao=1闹钟开;nao=0闹钟关unsignedchara;记录K1按下次数,第一次按下修改闹钟时间,第2次按下切换闹钟开关unsignedchardisplay[]={0,0,0,0,0,0};显示缓冲区,对应六个数码管unsignedcharssec;10ms计数变量unsignedcharsec;当前时间“秒”变量unsignedcharmin;当前时间“分”变量unsignedcharhour;当前时间“小时”变量unsignedcharnao_hour;闹钟时间“小时”变量unsignedcharnao_min;闹钟时间“分钟”变量四、任务小结总结设计流程单片机应用系统开发的一般工作流程包括:项目任务的需求分析(确定任务),制定系统软、硬件方案(总体设计),系统硬件设计与制作,系统软件模块划分与设计,系统软、硬件联调,程序固化,脱机运行等。自顶向下的模块化程序设计方法
当任务模块比较多时,一般由多个人合作完成系统软件设计,此时可每人分别负责几个模块的编码和调试,然后再进行各模块联调,这样可以加快项目的开发进度。例如键盘模块、显示模块等相对独立的模块均可分别编写。
在一般情况下,先编写简单的测试用程序进行模块调试。调试成功后由模块负责人编写模块接口文档,明确模块的调用方式,如参数传递等模块接口信息。最后再根据系统主程序的流程图和模块接口文档调用各功能模块,进行编译、链接和定位,生成系统可执行程序,再固化到应用系统中,反复测试,直到完成任务为止。程序设计经验(1)灵活选择变量的存储类型是提高程序运行效率的重要途径,要合理分配存储器资源,对经常使用和频繁计算的数据,应该采用内部存储器。(2)灵活分配变量的全局和局部类型,高效利用存储器。(3)合理设置变量类型及设置运算模式可以减少代码量,尽可能选用无符号的字符类型减少占用存储空间。(4)合理分配模块间函数调用的参数,可以利用指针作为传递参数,使各模块有很好的独立性和封装性,同时又能实现各模块间数据的灵活高效传输。(5)汇编语言与C语言混合编程,以提高程序执行效率,汇编语言程序执行效率高,实时响应性好,将一些实时性或者运算能力要求很高的程序,如中断处理程序、数据采集程序、实时控制程序等嵌入到C语言中,或分开独立编成汇编语言程序进行处理。(6)利用丰富的标准函数,可以大大地提高编程效率。感谢您的观看Thanks
for
your
attention.
任务8-2图形液晶显示系统设计《单片机应用技术(C语言版)》一、任务导入在图形液晶显示系统上显示文字或图片(1)信息发布屏的设计:在图形液晶上显示“深圳”;(2)用图形液晶显示一副漂亮的图片。设计要求方案选型LCD——128*64PG12864F模块控制芯片——T6963C控制器液晶显示模块PG12864F
PG12864F模块有18个外部引脚,其中8条数据线、5条控制线,控制线用以和MCU连接同步时序,完成基本命令和数据的读写操作。液晶显示模块PG12864F引脚号引脚名称引脚定义1FG边框地,用于防静电、防雷击,应与大地相连,禁止悬空2VSS数字地3VDD逻辑电源+5V4VEE液晶驱动电压5写选通信号,低电平有效,输入信号6读选通信号,低电平有效,输入信号7T6963C的片选信号,低电平有效8C/通道选择信号,1为指令通道,0为数据通道9低电平有效的复位信号,将行、列计数器和显示寄存器清零,关显示;可通过对+5V接4.7K电阻,对地接4.7uF电容来实现10~17D0~D7显示缓冲区8位数据总线18FS1字体选择。FS1=1选8×6点阵;FS1=0选8×8点阵液晶显示模块PG12864F二、图形点阵LCD模块的文本和图形显示方法数字钟硬件电路图T6963C内部有8KB字节的显示缓冲区,用于存储当前要求显示的数据,根据显示模式不同划分为3个显示区:
文本显示区为DDRAM
图形显示区为GDRAM
文本特性区为TRAM另外有2KBCGRAM可以供用户自定义字模。
T6963C控制器内置CGROM字符库显示区域设置命令字,格式如下(2参数命令字):参数命令字格式
该命令字根据N1,N0的不同取值,有四种指令功能形式小提示文本区和图形区首地址对应显示屏左上角字符位或字节位。文本区宽度(字节数/行)设置和图形区宽度(字节数/行)设置用于调整一行显示所占显示RAM的字节数,从而确定显示屏与显示RAM单元的对应关系。T6963C控制器常用命令D1,D2010000N1N0N1N0参数D1参数D2指令代码功
能00低字节高字节0x40文本区首址01字节数0x000x41文本区宽度(字节数/行)10低字节高字节0x42图形区首址11字节数0x000x43图形区宽度(字节数/行)显示开关命令字,格式如下(无参数命令字):
参数命令字格式
N0:1/0,光标闪烁启用/禁止。N1:1/0,光标显示启用/禁止。N2:1/0,文本显示启用/禁止。N3:1/0,图形显示启用/禁止。T6963C控制器常用命令无1001N3N2N1N0地址指针设置命令字,格式如下(2参数命令字):
参数命令字格式
地址指针设置命令字的作用是设置将要进行操作的显示缓冲区(RAM)的一个单元地址,D1、D2为该单元地址的低位和高位。T6963C控制器常用命令D1,D200100N2N1N0数据一次写方式命令字,格式如下(1参数命令字):
参数命令字格式
参数D1为需要写的数据。命令字根据N2、N1、N0的不同取值有3种功能T6963C控制器常用命令D111000N2N1N0N2N1N0指令代码功能0000xC0数据写,地址加10100xC2数据写,地址减11000xC4数据写,地址不变三、系统硬件接口设计硬件电路图T6963C控制器与MCU的接口时序四、系统软件设计1.用字模软件对要显示的汉字取模2.编写函数实现LCD的基本接口时序操作由于各命令含参数个数不同,可根据命令格式分别调用无参数写命令函数、1参数写命令函数和2参数写命令函数。3.编写初始化函数编程实现LCD图形显示方式、图形显示区域设置等操作的初始化函数init_12864()。4.写入汉字字模按照任务要求调用写命令函数实现指针设置命令和数据一次写命令功能,将汉字字模写入图形显示缓存GDRAM的对应存储单元。汉字的显示一般采用图形方式,事先提取需要显示的汉字点阵码,每个汉字占32字节,分左、右两半部,各占16字节,左边为1、3、5、…,右边为2、4、6、…,根据在LCD上开始显示的行列号及每行的列数可确定显示GDRAM对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加1,送第2字节,换行按列对齐,送第3字节…直到32字节显示完就可在LCD上得到一个完整的汉字。五、举一反三图形液晶模块的优势在于逐位寻址的绘图和汉显功能,我们在显示汉字的基础上,实现在图形点阵液晶PG12864F上显示一副漂亮的图片。
感谢您的观看Thanks
for
your
attention.
任务8-3单片机温度检测记录系统设计《单片机应用技术(C语言版)》一、任务导入(1)LCD显示实时时钟:年、月、日、时、分、秒。(2)每30秒采样温度,LCD更新显示温度值。(3)按键触发存储当前温度和时钟信息(年、月、日、时、分)。(4)按键触发串口传输存储的温度和时钟信息。(5)温度测量精度:±1度。设计要求设计一个具有温度实时显示和动态记录功能的温度检测记录系统。方案选型系统选用AT89S52单片机作为主控制器选用独立式按键和128×64图形点阵LCD模块LM6029作为人机接口温度检测:数字温度传感器DS18B20实时时间:实时时钟S35190A存储温度信息:EEPROM芯片24LC02通过单片机的串口资源传输温度信息到PC机,动态监测温度变化曲线二、系统工作流程系统工作流程(1)时间显示
上电后,系统自动进入时间显示,显示当前年、月、日、时、分、秒的时间信息,每隔1秒刷新显示。(2)检测温度
每隔30秒动态检测温度一次,并在LCD上显示温度信息。系统工作流程(3)记录温度
按下0#键,LCD显示提示信息“正在存储”,完成向EEPROM存储当前温度和时间信息(共7字节)的功能,同时记录已存储温度的总记录数。(4)传输温度
按下1#键,从EEPROM中取出温度和时间信息到发送缓冲区中,通过串口发送数据到PC机,PC机可通过串口调试软件接收显示。三、系统硬件接口设计硬件框图硬件框图MCU选用AT89S52作为控制系统的核心。采用外部时钟方式,系统采用11.059MHz的工作频率。硬件框图温度检测部分包括数字温度传感器DS18B20和RTC时钟S35190A。硬件电路图硬件电路图温度检测电路采用Dallas公司生产的1-Wire接口数字温度传感器DSl8B20,如图9.11所示,它采用3引脚T0-92封装,温度测量范围为-55℃~+125℃,编程设置9~12位分辨率。现场温度直接以1-Wire的数字方式传输,大大提高了系统的抗干扰性。MCU只需一根端口线就能与多个DS18B20通信,但需要接4.7KΩ的上拉电阻。硬件电路图S35190A是精工电子提供的CMOS实时时钟芯片,可以在超低消耗电流、宽工作电压范围内工作,具有3线SPI串行总线接口。其工作电压为1.3V~5.5V,可适用于从主电源电压开始到备用电源电压驱动为止的宽幅度的电源电压。计时工作时,消耗电流0.25μA,工作电压1.1V,可大幅度地改善电池的持续时间。芯片内置了时钟调整功能,可以在很宽范围内校正石英的频率偏差,以最小分解能力为1ppm来进行校正。硬件电路图为了在掉电状态下能够存储温度和时钟信息,系统选用EEPROM芯片24LC02B。该芯片是CMOS2048位串行EEPROM,在内部组织成256×8位存储格式,具有低功耗的特点,工作电压2.5V~5.5V。硬件电路图系统采用串口通信,将温度信息传输到上位机PC机中,以便进行更多的信息处理及动态检测。系统选用MAX公司推出的RS232电平转换芯片MAX3232。硬件电路图LCD模块LM6029是一款128*64的图形点阵LCD,采用S6B0724控制器,8位并口数据传输方式,可以实现字符、图形等的显示。如图9.12所示,LCD的8位并行数据线选用P2口,读控制线
连接单片机的P3.6管脚,写控制线
连接单片机的P3.7管脚,数据与命令选择线RS连接单片机的P3.4,复位线
连接单片机的P3.5,片选
接地。为实现记录温度和传输温度的控制功能,系统设置2个功能键。0#键:记录触发键,按下后即将当前的温度信息和时钟存储到EEPROM中。1#键:传输触发键,按下后即将EEPROM中存储的数据通过串口传输到PC机。四、系统软件设计系统模块划分系统模块划分完成系统初始化,调用时钟和温度控制函数,显示当前时间和温度。循环扫描按键,按下0#键则调用读写数据存储器函数实现数据存储;按下1#键则调用串口发送函数实现数据传输。另外串口发送模块的函数也直接放置在main.c中实现。系统模块划分实现LCD模块的初始化、写命令、写数据、设置页地址、显示字符、显示汉字等函数。系统模块划分实现DS18B20初始化、读字节、写字节、读温度数据命令等函数。实现24LC02存储器的I2C时序、存储单字节、存储1页8字节数据、读某地址单元的单字节数据、读连续若干字节数据等函数。实现时钟芯片的初始化设置、读字节、写字节、配置状态寄存器、设置时钟寄存器、读取时钟寄存器等函数。主程序流程图感谢您的观看Thanks
for
your
attention.
任务8-4家居照明蓝牙控制系统设计《单片机应用技术(C语言版)》一、任务导入系统框图HC-06嵌入式蓝牙串口通信模块是专为智能无线数据传输而打造,采用英国CSR公司BlueCore4-Ext芯片,遵循V2.0+EDR蓝牙规范。本模块支持UART,USB,SPI等接口,具有成本低、体积小、功耗低、收发灵敏等优点。该模块主要用于短距离的数据无线传输领域,可方便的和手机等智能终端的蓝牙设备相连,也可实现两个模块之间的数据互通。HC-06嵌入式蓝牙串口通信模块蓝牙模块与单片机连接系统硬件电路图程序控制协议二、蓝牙模块的AT指令测试AT指令是以AT开头,然后加上具有特定含义命令字符的指令格式。AT指令是应用于终端设备与PC应用之间的连接与通信的指令。什么是AT指令蓝牙模块设置硬件连接串口调试助手设置1.测试通信是否正常
发送:AT
返回:OK2、设置蓝牙串口通信波特率
发送:AT+BAUD1
返回:OK1200
发送:AT+BAUD2
返回:OK24001---------1200
2---------2400
3---------4800
4---------9600(默认设置)
5---------19200
6---------38400
7---------57600
8---------115200
9---------230400
A---------460800
B---------921600
C---------13824003、设置蓝牙名称
发送:AT+NAMEname
返回:OKname参数name:所要设置的当前名称,即蓝牙被手机搜索到的名称。例:发送AT+NAMESZPT返回OKsetname这时蓝牙名称改为SZPT4、设置蓝牙配对密码发送:AT+PINxxxx返回:OKsetPIN参数xxxx:所要设置的配对密码,4个数字例:发送:AT+PIN8888返回:OKsetPIN这时蓝牙配对密码改为88885、设置主从工作模式(1)设置主工作模式发送:AT+ROLE=M返回:OK+ROLE:M(2)设置从工作模式发送:AT+ROLE=S返回:OK+ROLE:S三、家居照明蓝牙控制系统程序设计voidCom_Init(){ SCON=0x50;TMOD=0x20; TH1=0xFD;//设置波特率9600 TL1=0xFD; TR1=1;//启动定时器1 ES=1;//开串口中断
EA=1;//开总中断}串口初始化子函数voidCom_Int()interrupt4{ ES=0; if(RI)//当硬件接收到一个数据时,RI会置位
{ rev=SBUF; RI=0; rok=1; } ES=1; }其中rev为定义的用于存放接收到的控制信号的全局变量,rok为代表是否接收到控制信号的全局位变量,其值为1代表接收到控制信号,为0代表未接收到控制信号或者控制信号已被处理。串口中断服务子函数voidgongneng(){switch(rev) { case‘0':LED0=~LED0;break; case'1':LED1=~LED1;break; case'2':LED2=~LED2;break; case'3':LED3=~LED3;break; default:break; }rok=0;}每个按钮相邻的两次按下代表亮灭两种状态,因此用取反的形式就可实现控制。单片机判断控制字符并执行响应的子函数voidmain(){P1=0x00;//所有灯熄灭Com_Init();//串口初始化
while(1)
{if(rok)gongneng(); }}主函数#include<reg51.h>typedefunsignedintuint;typedefunsignedcharuchar;sbitLED0=P1^0;//定义客厅灯sbitLED1=P1^1;//定义卧室灯sbitLED2=P1^2;//定义厨房灯sbitLED3=P1^3;//定义卫生间灯ucharrev=0;//蓝牙接收缓存值bitrok=0;//接收标志voidCom_Init(void){SCON=0x50;TMOD=0x20;TH1=0xFD;//设置波特率9600TL1=0xFD;TR1=1;//启动定时器1ES=1;//开串口中断EA=1;//开总中断}voidgongneng(){switch(rev){case'0':LED0=~LED0;break;case'1':LED1=~LED1;break;case'2':LED2=~LED2;break;case'3':LED3=~LED3;break;default:break;}rok=0;}voidmain(){P1=0x00;//熄灭所有灯Com_Init();//初始化
while(1){if(rok)gongneng();}}voidCom_Int(void)interrupt4{ES=0;if(RI)//当硬件接收到一个数据时,RI会置位
{rev=SBUF;RI=0;rok=1;}ES=1; }系统控制程序四、蓝牙串口APP的设置及系统运行调试下载“蓝牙串口.apk”并安装在手机上,注意该APP只能在安卓系统上运行。手机安装蓝牙控制app开启手机的蓝牙功能,打开“蓝牙串口”APP。点击右上角的“连接”按钮,此时会列出手机已配对的所有蓝牙模块,发现连接在单片机上的蓝牙模块并未出现在列表中,可以点击右上角的搜索按钮进行搜索,马上就会发现名为“SZPT”的蓝牙模块出现在其他设备下面,点击“SZPT”进行配对并输入密码“8888”就可以成功完成连接。蓝牙模块连接逐个点击页面标题直至“开关”页面。看到很多灰色的空白按钮,长按第一个按钮就会弹出按钮编辑窗口,每个按钮可以编辑两种状态,由于我们的程序是通过按键次数来判断的,因此不需要区分两种状态。在按钮文本中输入“客厅灯”,消息中输入“0”,选择“字符”形式,最后点确定。聊天页面设置请大家思考一下,如果我们将四个按钮分别编辑成如表所示的两种状态情形,也即每个按钮相邻按下时发出的控制字符不同,这时单片机的控制程序应该如何修改呢?举一反三:拓展训练被控照明按钮状态状态OFF状态ON按钮文本消息按钮文本消息客厅灯客厅灯灭0客厅灯亮1卧室灯卧室灯灭2卧室灯亮3厨房灯厨房灯灭4厨房灯亮5卫生间灯卫生间灯灭6卫生间灯亮7感谢您的观看Thanks
for
your
attention.
任务8-5WIFI遥控小车设计《单片机应用技术(C语言版)》一、任务导入遥控小车使用安卓智能手机作为遥控器,首先在手机端安装“WIFI小车”APP,通过这个APP并利用手机内的WIFI模块发送控制命令,小车端的WIFI模块接收到控制信号后,通过51单片机的串行通信接口将控制信号传给单片机,单片机判断控制信号并作出相应的动作,如此就实现了小车的WIFI遥控。设计要求UART系统框图ESP8266模块介绍802.11b/g/n频率范围 2.4G-2.5G(2400M-2483.5M)
WIFI@2.4GHz,支持WPA/WPA2安全模式内置低功率32位CPU:可以兼作应用处理器SDIO2.0、SPI、UART待机状态消耗功率小于1.0mW(DTIM3)工作温度范围-40~125℃ESP8266模块ESP8266模块专用转接板通过转接板后只引出四个输出线,分别为电源VCC,地GND,信号输出端TXD和信号输入端RXD,并且可以5V供电,可以直接配合51单片机使用,非常方便。由于ESP8266模块支持UART接口,因此把转接板的TXD、RXD分别和51单片机的RXD、TXD相连,通电后就可进行二者之间的串口通信了。可外接5V电源,直接配合51单片机一起使用四脚输出VCC、GND、TXD、RXDESP8266模块专用转接板WIFI遥控小车的硬件电路图在程序设计前,需要根据WIFI模块设置单片机的通信协议。这里我们采用的串口通信波特率为9600b/s;数据帧为串口工作方式1的帧格式。手机端发送的控制信号定义如下:字符‘0’代表前进,字符‘1’代表后退,字符‘2’代表左转,字符‘3’代表右转,字符‘5’和‘6’均代表停车。控制信号对应的小车执行动作‘0’前进‘1’后退‘2’左转‘3’右转‘5’停止‘6’停止通信协议约定二、wifi模块的AT指令测试我们在使用WIFI模块前,通常需要先对其进行AT指令配置,以验证模块是否正常,并设置模块名称、波特率、工作模式、服务器等参数。
命令 描述 基础指令
AT 测试AT启动 AT+RST 重启模块 AT+GMR 查看版本信息 wifi功能指令
AT+CWMODE 选择WIFI应用模式 AT+CWJAP 加入AP AT+CWLAP 列出当前可用AP AT+CWQAP 退出与AP的连接 AT+CWSAP 设置AP模式下的参数 AT+CWLIF 查看已接入设备的IP
命令 描述
TCP/IP指令
AT+CIPSTATUS 获得连接状态 AT+CIPSTART 建立TCP连接或注册UDP端口号AT+CIPSEND 发送数据 AT+CIPCLOSE 关闭TCP或UDP AT+CIFSR 获取本地IP地址 AT+CIPMUX 启动多连接 AT+CIPSERVER 配置为服务器 AT+CIPMODE 设置模块传输模式 AT+CIPSTO 设置服务器超时时间
ESP8266
AT指令集AT指令集中的格式利用ESP8266可以实现十分灵活的组网方式和网络拓扑。ESP8266支持softAP模式,station模式,softAP+station共存模式三种。softAP:即无线接入点,是一个无线网络的中心节点。通常使用的无线路由器就是一个无线接入点。station:即无线终端,是一个无线网络的终端。ESP8266工作模式RXDTXDGND+5VRXDTXDGND+5V使用一个USB到TTL的转接口来实现WIFI模块和PC机之间的串口连接。连线时要注意转接口的RXD要接WIFI模块的TXD,而转接口的TXD要接WIFI模块的RXD。ESP8266与PC机连接进行设置1243串口调试助手设置1、测试AT启动
发送:AT
返回:OK12432、设置ESP8266应用模式
发送:AT+CWMODE=<mode>
返回:OK
<mode>:‣1:Station模式‣2:SoftAP模式‣3:SoftAP+Station模式在字符串输入框中输入AT+CWMODE=2指令来设置ESP8266工作在softAP模式。由于该指令需重启后才能生效,因此要接着输入AT+RST指令来重启模块。3、重启模块
发送:AT+RST返回:OK4、设置ESP8266softAP参数发送:AT+CWSAP=<ssid>,<pwd>,<chl>,<ecn>返回:OK指令参数:<ssid>字符串参数,接入点名称<pwd>字符串参数,密码最长64字节ASCII<chl>通道号<ecn>加密方式0OPEN1WEP2WPA_PSK3WPA2_PSK4WPA_WPA2_PSK 由于默认的名称太长,使用指令AT+CWSAP=“SZPT”,“”,1,0将名称改为SZPT。设置WIFI模块的连接类型,这里需要设置为多连接模式,输入的指令为AT+CIPMUX=1。设置这一步主要是为下一步建立TCP服务器做准备,因为建立TCP服务器必须在多连接模式下进行。5、设置ESP8266连接类型发送:AT+CIPMUX=<mode>返回:OK<mode>:‣0:单连接模式‣1:多连接模式建立一个端口号为5000的TCP服务器,输入的指令为AT+CIPSERVER=1,5000。6、建⽴TCP服务器发送:AT+CIPSERVER=<mode>[,<port>]返回:OK<mode>:‣0:关闭服务器‣1:建⽴服务器<port>:端⼝号,默认为333。7、设置波特率发送:
AT+CIOBAUD=<value>返回:OK指令参数:<value>要设置的波特率数值约定WIFI遥控小车项目中WIFI模块与单片机的串口通信波特率为9600,因此要用指令AT+CIOBAUD=9600将波特率设置为9600。三、wifi遥控小车的程序测试首选需要对单片机串口进行初始化,设置工作方式及波特率等。另外,由于部分AT指令断电不会保存,因此需要在程序中进行重新设置。等待接收手机端发来的控制信号,最后根据控制信号做出相应的动作。注意:ES=0,开启串口中断,因为在配置wifi模块时没有使用中断方式。voidUart_Init(){ SCON=0x50;TMOD=0x20; TH1=0xFD;//设置波特率9600 TL1=0xFD; TR1=1;//启动定时器1 ES=0;//关闭串口中断
EA=1;//开总中断}串口初始化子函数voidESP8266_Set(uchar*puf)//指针*puf指向字符串数组{ while(*puf!='\0')//字符串结束跳出循环
{ SBUF=*puf;//向WIFI模块发送控制指令
while(TI==0); //等待发送完毕
TI=0; //清发送完毕中断请求标志位
puf++; } DelayMs(2000); //模块需要一定的反应时间,该延时时间需要根据硬件调整}注意:使用while语句完成了字符串的逐个发送;为了确保发送不受干扰,这里采用查询方式发送;每个AT指令字符串发送完成后,wifi模块还需要一定的反应时间,这个延时要根据系统硬件调整,这里的延时大概是2S的样子。ESP8266WIFI模块设置子函数voidUart_Interrupt()interrupt4{ucharreceive;if(RI==1){RI=0;receive=SBUF;if(receive==‘+‘) {i=0;start=1;}if(start){Receive_table[i]=receive;i=i+1;if(i==10)start=0;} }}注意:如果单片机接收到一个有效控制信号,则一定是以+IPD开头,并且真正有用的控制字符位于这个字符串的第10位。多路连接时(+CIPMUX=1)接收到的数据格式:+IPD,<id>,<len>:<data>参数说明:<id>收到连接的id号<len>数据长度<data>收到的数据举例:+IPD,0,1:3 串口中断服务子函数//定义的全局变量ucharReceive_table[20];//用来存放接收到的控制字符串uchari;//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国1.3.5-吡唑酮市场调查研究报告
- 2026年计算机网络管理员-计算机网络管理员(中级)历年参考题库含答案解析
- 2026年航空职业技能鉴定考试-航空航天考试历年参考题库含答案解析
- 2026年福建住院医师-福建住院医师全科医学历年参考题库含答案解析
- 2026年石油石化技能考试-生产作业助理监督岗位资格认证考试历年参考题库含答案解析
- 2026年省市地方性知识竞赛-内蒙古知识竞赛历年参考题库含答案解析
- 2026年生化化工药品技能考试-制浆工艺考试历年参考题库含答案解析
- 2026年特种设备作业人员技能考试-特种设备相关管理历年参考题库含答案解析
- 2026年煤炭矿山职业技能鉴定考试-煤矿矿井主扇风机操作工历年参考题库含答案解析
- 2026年烟草职业技能鉴定考试-烟叶切丝工历年参考题库含答案解析
- 中医医疗技术相关性感染预防与控制指南考试试题及答案
- 医院党建与医疗质量提升的融合策略
- 商务局遴选笔试真题及答案
- 护理部台账管理
- AI搜索时代:从GEO到AIBE的品牌新蓝图
- 2025年浙江省宁波市事业单位招聘考试卫生类药学专业知识试卷
- 2025 神经外科脑梗死溶栓后出血护理查房课件
- 特大排水管渠结构检测评估技术规程
- 贵州贵财招标有限责任公司招聘笔试题库2025
- 2025中泰证券笔试题目及答案
- 高职新生心理健康知识讲座
评论
0/150
提交评论