找回密码
 立即注册

QQ登录

只需一步,快速开始

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

蓝牙家电控制系统单片机程序

[复制链接]
跳转到指定楼层
楼主
ID:521005 发表于 2019-6-8 17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC89C51+HC05
我做的设计
手机装个蓝牙助手,实现指定串口内容控制LED开关。

单片机源程序如下:
  1. #include "main.h"

  2. void main(void)
  3. {
  4.         EA = 1;

  5.         LED1 = 0;
  6.         LED2 = 0;
  7.         Delay = 0;

  8.         ConfigTimer0();
  9.         ConfigUART(9600);
  10.         LCD_INIT();

  11. //        Write_String(0,0,"Hello");
  12. //        Write_String(0,1,"1602113");
  13.         string(0x83,"Welcome",7);//写入welcome
  14.         string(0xc3,"1602113",7);//写入Harbin China        

  15.         while(1);
  16. }

  17. //main
  18. void delay(int ms)
  19. {
  20.         int i,j;
  21.         for(i=0;i<ms;i++)
  22.                 for(j=0;j<125;j++);
  23. }

  24. /* 串口配置函数,baud-通信波特率 */
  25. void ConfigUART(unsigned int baud)
  26. {
  27.     SCON  = 0x50;  //配置串口为模式1
  28.     TMOD &= 0x0F;  //清零T1的控制位
  29.     TMOD |= 0x20;  //配置T1为模式2
  30.     TH1 = 256 - (11059200/12/32)/baud;  //计算T1重载值
  31.     TL1 = TH1;     //初值等于重载值
  32.     ET1 = 0;       //禁止T1中断
  33.     ES  = 1;       //使能串口中断
  34.     TR1 = 1;       //启动T1
  35. }

  36. /* 配置并启动T0,ms-T0定时时间 */
  37. void ConfigTimer0()
  38. {
  39.     TMOD &= 0xF0;   //清零T0的控制位
  40.     TMOD |= 0x01;   //配置T0为模式1
  41.     TH0 = T0RH;     //加载T0重载值
  42.     TL0 = T0RL;
  43.     ET0 = 1;        //使能T0中断
  44.     TR0 = 1;        //启动T0
  45. }

  46. //1602
  47. void LCD_INIT(void)
  48. {
  49.     LCD_RW=0;
  50.         write_com(0x38);   //显示模式设置:16×2显示,5×7点阵,8位数据接口
  51.         delay(20);
  52.         write_com(0x0f);   //显示模式设置
  53.         delay(20);
  54.         write_com(0x06);   //显示模式设置:光标右移,字符不移
  55.         delay(20);
  56.         write_com(0x01);   //清屏幕指令,将以前的显示内容清除
  57.         delay(20);        
  58. }

  59. void write_com(uchar com)
  60. {
  61.         P0=com;
  62.         LCD_RS=0;
  63.         LCD_EN=0;
  64.         delay(10);
  65.         LCD_EN=1;
  66.         delay(10);
  67.         LCD_EN=0;
  68. }

  69. void write_date(uchar date)
  70. {
  71.         P0=date;
  72.         LCD_RS=1;
  73.         LCD_EN=0;
  74.         delay(10);
  75.         LCD_EN=1;
  76.         delay(10);
  77.         LCD_EN=0;
  78. }

  79. void string(uchar ad,uchar *p,uchar n)//显示字符函数
  80. {
  81.         uchar i;
  82.         write_com(ad);
  83.         for(i=0;i<n;i++)
  84.         {
  85.                 write_date(*p++);
  86.                 delay(50);
  87.         }
  88. }


  89. void UART_INT(void) interrupt 4
  90. {
  91.         EA = 0;
  92.         while(RI)
  93.         {
  94.                 RxdByte = SBUF;
  95.                 SBUF = SBUF;
  96.                 switch(RxdByte)
  97.                 {
  98.                         case 0x31:LED1 = 1;//LED1开
  99.                                           //Write_String(0,0,"LED1 ON        ");
  100.                                           write_com(0x01);
  101.                                           string(0x80,"Controling",10);
  102.                                       string(0xc0,"LED1  ON ",9);
  103.                                           break;
  104.                         case 0x32:LED1 = 0;//LED1关
  105.                                           //Write_String(0,0,"LED1 OFF       ");
  106.                                           write_com(0x01);
  107.                                           string(0x80,"Controling",10);
  108.                                       string(0xc0,"LED1  OFF",9);
  109.                                           break;
  110.                         case 0x33:LED2 = 1;//LED2开
  111.                                           //Write_String(0,0,"LED2 ON        ");
  112.                                           write_com(0x01);
  113.                                           string(0x80,"Controling",10);
  114.                                       string(0xc0,"LED2  ON ",9);                                 
  115.                                           break;
  116.                         case 0x34:LED2 = 0;//LED2关
  117.                                           //Write_String(0,0,"LED2 OFF       ");
  118.                                           write_com(0x01);
  119.                                           string(0x80,"Controling",10);
  120.                                       string(0xc0,"LED2  OFF",9);
  121.                                           break;
  122.                         case 0x35:Delay = 1;//继电器开
  123.                                           //Write_String(0,0,"Delay ON       ");
  124.                                           write_com(0x01);
  125.                                           string(0x80,"Controling",10);
  126.                                       string(0xc0,"Delay  ON ",10);
  127.                                           break;
  128.                         case 0x36:Delay = 0;//继电器关
  129.                                           //Write_String(0,0,"Delay OFF      ");
  130.                                           write_com(0x01);
  131.                                           string(0x80,"Controling",10);//写入welcome
  132.                                       string(0xc0,"Delay  OFF",10);//写入Harbin China
  133.                                           break;
  134.                         default://Write_String(0,0,"Error          ");
  135.                                         write_com(0x01);
  136.                                         string(0x85,"Error",5);//写入welcome
  137.                                     string(0xc1,"Please Retry",12);//写入Harbin China
  138.                                         break;
  139.                 }
  140.                 RI = 0;
  141.         }
  142.         while(TI)
  143.         {
  144.                 TI=0;
  145.         }
  146.         EA=1;//开启串口中断
  147. }
复制代码

所有程序51hei提供下载:
蓝牙家电控制.zip (320.7 KB, 下载次数: 20)





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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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