|
就要毕业了,课程设计是wifi相关的,本想找几篇论文改改就行了,可后来想了想还是自己做一个,材料都有,wifi模块本想把寝室的无线路由给改了的,可是室友不同意,只好淘宝了
进入正题,在淘宝买的海凌科的RM04wifi模块(没有做广告的意思),前几天到手的,现在搞的也差不多了,我用到的功能不多(论文搞完之后在打算试试其他的功能),就是透传模式,说白点,单片机和电脑的串口通信大家应该都知道,我只不过是把wifi用作那根线而已,我用热电偶将采集的温度传送到电脑(上位机),论文要求这样就行了,现在我想加点东西,通过wifi控制51,比如当温度过高时,可以通过上位机切断加热单元的电源,当温度正常时候在恢复供电(这个可以用51程序监控自动实现,这里只是做个比喻),用串口的时候,我程序里设置的当51接收到上位机发送的’1‘时,蜂鸣器响(可以认为切断电源),发送‘2’的时候,蜂鸣器停止响,这个用串口控制的时候都正常,可用wifi控制的时候,不行,发送’1‘过去单片机没反应,但是返回的数据还是有的,上网搜了,可没找到答案,请问大牛们,能告知下原因吗,小弟十分感谢下面是简单的测试程序,有线串口时候正常,用wifi时候,有数据返回,可蜂鸣器无动作:
#include <reg52.h>
#include <csh.h>
#define uint unsigned int
#define uchar unsigned char
sbit bz=P2^3;
uint flag,temp;
uchar a;
void init() //这个用的是t2定时器,产生115200波特率的,现在用的是下面的波特率9600————这个可以略过
{
SCON=0X50;
TH2=0XFF;
TL2=0XFD;
RCAP2H=0XFF;
RCAP2L=0XFD;
TCLK=1;
RCLK=1;
C_T2=0;
EXEN2=0;
EA=1;
ES=1;
TR2=1;
}
void init1() //9600
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void main()
{
csh(); //单片机初始化
// init(); //配置初始化
init1();
while(1)
{
if(flag==1)
{
P1=a;
ES=0;
flag=0;
SBUF='I';//28; //单片机收到上位机发送的命令后想上位机发送一个数据,判断是否收到
while(!TI);
TI=0;
SBUF=a;//28; //由于用wifi时候单片机无动作,想看看SBUF里收到的是什么数据,可惜上位机也收不到数据
while(!TI);
TI=0;
ES=1;
};
if(a==1) //蜂鸣器模拟上位机命令动作
bz=0;
if(a==2)
bz=1;
};
}
void ser() interrupt 4
{
RI=0;
a=SBUF; //将上位机发送的命令存在a里
flag=1;
}
这是单片机用到的程序,其他的和这无多大关系就不上传了,wifi模块设置的是无线网卡模式,和寝室的路由连接,电脑或手机在和寝室的路由连接,通过软件即可通信了,现在就是上面说的问题,发送命令是蜂鸣器不动作,有的说wifi发送的数据要解码,搞不懂,求大神指点一二,小弟再次再次谢过了!!!
为了给论坛做点贡献,论文搞好以后,本人会将这个设计的全过程的资料发在论坛上,供有需要的人参考。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|