标题:
ZIGBEE在51单片机上通信,无线路灯控制系统源代码
[打印本页]
作者:
zkkshfksd
时间:
2018-6-6 20:49
标题:
ZIGBEE在51单片机上通信,无线路灯控制系统源代码
通信程序及电路图
0.png
(10.06 KB, 下载次数: 41)
下载附件
2018-6-7 06:06 上传
单片机源程序如下:
#include<reg52.h>
#define jingzhen 12000000UL //晶振12M
#define botelv 9600UL //波特率9600
#define uchar unsigned char
#define uint unsigned int
volatile unsigned char sending;
sbit key=P3^4;
sbit key1=P3^5;
sbit key2=P3^3;
sbit key3=P3^7;
uchar code table []="the light state";
uchar code open[]="open normal";
uchar code open1[]="open error";
uchar code close[]="close normal";
uchar code close1[]="close error";
unsigned char x[]="1";
unsigned char y[]="2";
sbit lcden=P2^6;
sbit lcdrs=P2^4;
sbit rw=P2^5;
uchar num;
void uartinit(void) //串口初始化
{
EA=0;
TMOD&=0x0F;
TMOD|=0x20;
SCON=0x50;
TH1=256-jingzhen/(botelv*12*16);
TL1=256-jingzhen/(botelv*12*16);
PCON|=0x80;
ES=1;
TR1=1;
REN=1;
EA=1;
}
void send(unsigned char d) //d为发送的数据
{
SBUF=d; //将数据存到SBUF中
sending=1;
while(sending);
}
void sendc(unsigned char * pd) //发送字符串
{
while((*pd)!='\0') //遇0停止发送
{
send(*pd);
pd++;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
rw=0;
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void open2()
{
init();
for(num=0;num<15;num++) //第一屏 light状态
{
write_data(table[num]);
delay(1);
}
write_com(0x80+0x40);
for(num=0;num<11;num++) //第二行 亮 正常
{
write_data(open[num]);
delay(1);
}
}
void open3()
{
init();
for(num=0;num<15;num++) //第一屏 light状态
{
write_data(table[num]);
delay(1);
}
write_com(0x80+0x40);
for(num=0;num<10;num++) //第二行 亮 不正常
{
write_data(open1[num]);
delay(1);
}
}
void close2()
{
init();
for(num=0;num<15;num++) //第一屏 light状态
{
write_data(table[num]);
delay(1);
}
write_com(0x80+0x40);
for(num=0;num<12;num++) //第二行 灭 正常
{
write_data(close[num]);
delay(1);
}
}
void close3()
{
init();
for(num=0;num<15;num++) //第一屏 light状态
{
write_data(table[num]);
delay(1);
}
write_com(0x80+0x40);
for(num=0;num<11;num++) //第二行 灭 不正常
{
write_data(close1[num]);
delay(1);
}
}
void main() //主函数
{
uartinit();
init();
for(num=0;num<15;num++) //第一屏 light状态
{
write_data(table[num]);
delay(1);
}
write_com(0x80+0x40);
for(num=0;num<12;num++) //第二行 正常关闭
{
write_data(close[num]);
delay(1);
}
while(1)
{
if(key==0)
{
delay(20);
if(!key)
{
while(!key);
open2(); //亮 正常
sendc(x);
}
}
else if(key1==0)
{
open3(); //亮 不正常
}
else if(key2==0)
{
delay(20);
if(!key2)
{
while(!key2);
close2(); // 灭 正常
sendc(y);
}
}
else if(key3==0)
{
close3(); // 灭 不正常
}
}
}
void uart(void) interrupt 4 //串口中断
{
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
无线路灯控制系统 程序.zip
(111.2 KB, 下载次数: 108)
2018-6-6 20:48 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
hxy19971001
时间:
2019-5-28 01:35
非常有用!感谢楼主!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1