找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4961|回复: 1
打印 上一主题 下一主题
收起左侧

ZIGBEE在51单片机上通信,无线路灯控制系统源代码

[复制链接]
跳转到指定楼层
楼主
通信程序及电路图


单片机源程序如下:
  1. #include<reg52.h>
  2. #define jingzhen     12000000UL                         //晶振12M         
  3. #define botelv   9600UL                                      //波特率9600
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. volatile unsigned char sending;

  7. sbit key=P3^4;
  8. sbit key1=P3^5;
  9. sbit key2=P3^3;
  10. sbit key3=P3^7;

  11. uchar code table []="the light state";
  12. uchar code open[]="open normal";
  13. uchar code open1[]="open error";
  14. uchar code close[]="close normal";
  15. uchar code close1[]="close error";
  16. unsigned char x[]="1";
  17. unsigned char y[]="2";                       

  18. sbit lcden=P2^6;
  19. sbit lcdrs=P2^4;
  20. sbit rw=P2^5;

  21. uchar num;

  22. void uartinit(void)          //串口初始化                       
  23. {
  24. EA=0;
  25. TMOD&=0x0F;  
  26. TMOD|=0x20;   
  27. SCON=0x50;     
  28. TH1=256-jingzhen/(botelv*12*16);  
  29. TL1=256-jingzhen/(botelv*12*16);
  30. PCON|=0x80;   
  31. ES=1;         
  32. TR1=1;        
  33. REN=1;         
  34. EA=1;         
  35. }

  36. void send(unsigned char d)                  //d为发送的数据
  37. {

  38. SBUF=d;                   //将数据存到SBUF中
  39. sending=1;         
  40. while(sending);   
  41. }

  42. void sendc(unsigned char * pd)        //发送字符串
  43. {
  44. while((*pd)!='\0')    //遇0停止发送
  45. {
  46.   send(*pd);
  47.   pd++;  
  48. }
  49. }

  50. void delay(uint z)
  51. {
  52.         uint x,y;
  53.         for(x=z;x>0;x--)
  54.                 for(y=110;y>0;y--);
  55. }

  56. void write_com(uchar com)
  57. {
  58.         lcdrs=0;
  59.         P0=com;
  60.         delay(5);
  61.         lcden=1;
  62.         delay(5);
  63.         lcden=0;
  64. }

  65. void write_data(uchar date)
  66. {
  67.         lcdrs=1;
  68.         P0=date;
  69.         delay(5);
  70.         lcden=1;
  71.         delay(5);
  72.         lcden=0;
  73. }

  74. void init()
  75. {       
  76.         rw=0;
  77.         lcden=0;
  78.         write_com(0x38);
  79.         write_com(0x0e);
  80.         write_com(0x06);
  81.         write_com(0x01);
  82.         write_com(0x80);
  83. }

  84. void open2()
  85. {
  86.                  init();
  87.            for(num=0;num<15;num++)    //第一屏        light状态
  88.             {
  89.                   write_data(table[num]);
  90.                     delay(1);
  91.              }
  92.             write_com(0x80+0x40);
  93.                  for(num=0;num<11;num++)    //第二行 亮 正常
  94.              {       
  95.                    write_data(open[num]);
  96.                     delay(1);
  97.          }
  98. }

  99. void open3()
  100. {
  101.                  init();
  102.            for(num=0;num<15;num++)    //第一屏        light状态
  103.             {
  104.                   write_data(table[num]);
  105.                     delay(1);
  106.              }
  107.             write_com(0x80+0x40);
  108.                  for(num=0;num<10;num++)    //第二行 亮 不正常
  109.              {       
  110.                    write_data(open1[num]);
  111.                     delay(1);
  112.          }
  113. }

  114. void close2()
  115. {
  116.                 init();
  117.             for(num=0;num<15;num++)    //第一屏        light状态
  118.             {
  119.                   write_data(table[num]);
  120.                     delay(1);
  121.              }
  122.             write_com(0x80+0x40);
  123.                  for(num=0;num<12;num++)    //第二行 灭 正常
  124.              {       
  125.                    write_data(close[num]);
  126.                     delay(1);
  127.          }
  128. }

  129. void close3()
  130. {
  131.       init();
  132.             for(num=0;num<15;num++)    //第一屏        light状态
  133.             {
  134.                   write_data(table[num]);
  135.                     delay(1);
  136.              }
  137.             write_com(0x80+0x40);
  138.                  for(num=0;num<11;num++)    //第二行 灭 不正常
  139.              {       
  140.                    write_data(close1[num]);
  141.                     delay(1);
  142.          }
  143. }

  144. void main()                        //主函数
  145. {
  146.     uartinit();
  147.         init();
  148.         for(num=0;num<15;num++)    //第一屏        light状态
  149.             {
  150.                   write_data(table[num]);
  151.                     delay(1);
  152.              }
  153.                   write_com(0x80+0x40);
  154.                  for(num=0;num<12;num++)    //第二行        正常关闭
  155.              {       
  156.                    write_data(close[num]);
  157.                     delay(1);
  158.          }
  159.         while(1)
  160.         {
  161.          if(key==0)
  162.          {         
  163.            delay(20);
  164.                         if(!key)
  165.                         {
  166.                                 while(!key);       
  167.                                 open2();                                        //亮 正常          
  168.                                 sendc(x);
  169.                         }
  170.           }
  171.           else if(key1==0)
  172.           {
  173.                   open3();                                //亮 不正常
  174.           }
  175.           else if(key2==0)
  176.           {
  177.           delay(20);
  178.                         if(!key2)
  179.                         {
  180.                                 while(!key2);       
  181.                     close2();                                // 灭 正常   
  182.                                 sendc(y);
  183.                         }
  184.           }
  185.           else if(key3==0)
  186.           {
  187.                    close3();                                // 灭 不正常
  188.           }
  189.         }
  190. }

  191. void uart(void) interrupt 4                 //串口中断
  192. {
  193. ……………………

  194. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
无线路灯控制系统 程序.zip (111.2 KB, 下载次数: 108)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:267800 发表于 2019-5-28 01:35 | 只看该作者
非常有用!感谢楼主!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表