找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机C语言的简易蓝牙锁代码

[复制链接]
跳转到指定楼层
楼主
ID:441210 发表于 2018-12-6 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言的简易蓝牙锁

单片机源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int  
  3. #define uchar unsigned char

  4. uchar r_buf; //蓝牙接收到的字符存储缓冲区

  5. sbit PWMA=P2^0;        //电机驱动模块接口
  6. sbit IN1=P2^2;
  7. sbit IN2=P2^1;
  8. sbit STBY=P2^3;

  9. sbit LED1=P0^0;        //LED灯接口
  10. sbit LED2=P0^1;
  11. sbit LED3=P0^2;

  12. sbit key1=P1^0;         //按键接口
  13. sbit key2=P1^1;
  14. sbit key3=P1^2;
  15. sbit key4=P1^3;

  16. sbit beep=P2^4;          //蜂鸣器接口

  17. uchar state;          //声明一个变量,取名state

  18. void delay(uint x)        //延时函数
  19. {
  20.         uint i,j;
  21.         for(i=x;i>0;i--)
  22.                 for(j=110;j>0;j--);
  23. }
  24. void turnon()          //开门函数
  25. {
  26.         IN1=0;
  27.         IN2=1;
  28.         delay(700);
  29. }
  30. void turnoff()          //关门函数
  31. {
  32.         IN1=1;
  33.         IN2=0;
  34.         delay(700);
  35. }
  36. void turnstop()         //停止函数
  37. {
  38.         IN1=1;
  39.         IN2=1;
  40. }
  41. void InitUART()    //串口初始化9600
  42. {
  43.                    //初始化串口定时器9600
  44.         TMOD = 0x20;   //0x20=0010 0000 TMOD中的M0和M1为控制方式的选择 M1=1,M0=0 T1,方式2
  45.         PCON = 0x00;   //波特率不倍增
  46.         SCON = 0x50;   //串口模式1,允许接收   
  47.         TH1 = 0xFD;           //波特率9600
  48.         TL1 = 0xFD;           //波特率9600
  49.         EA = 1;                   //开总中断
  50.         TR1 = 1;           //启动定时器1       
  51.         ES = 1;               //打开串行口中断
  52.         STBY = 1;           //电机驱动STBY=1有效,等于1,才能驱动电机
  53.         PWMA = 1;           //
  54. }
  55. void SendOneByte(uchar c) //发送字符函数
  56. {
  57.     SBUF = c-0x30;
  58.     while(!TI);
  59.     TI = 0;
  60. }
  61. void keyscan()                          //键盘扫描函数
  62. {
  63.         if(key1 == 0)                   //扫描按键key1
  64.         {                                          //延时10ms,消抖
  65.                 delay(10);
  66.                 if(key1 == 0)
  67.                 {
  68.                         beep=0;                  //蜂鸣器响
  69.                         LED2=1;                  //红灯关掉
  70.                     LED3=0;                  //黄灯亮
  71.                         delay(400);          //延时400毫秒
  72.                         beep=1;                  //关闭蜂鸣器
  73.                         turnon();     //打开门
  74.                         turnstop();   //停止
  75.                         state=1;          //将1赋值给state
  76.                         while(!key1); //等待按键释放
  77.                 }
  78.         }
  79.         if(key2==0)                           //扫描按键key2
  80.         {                                          //延时10ms,消抖
  81.                 delay(10);
  82.                 if(key2 == 0)
  83.                 {
  84.                
  85.                         beep = 0;          //蜂鸣器响
  86.                         LED1 = 1;          //绿灯关掉
  87.                         LED3 = 0;          //黄灯亮
  88.                         delay(400);          //延时400毫秒
  89.                         beep = 1;          //关闭蜂鸣器
  90.                         turnoff();          //关门
  91.                         turnstop();          //停止
  92.                         state = 2;          //将2赋值给state
  93.                         while(!key2); //等待按键释放
  94.                 }
  95.         }
  96. }

  97. void main()
  98. {
  99.     InitUART();
  100.         //r_buf = '2';
  101.         while(1)
  102.         {

  103.                 keyscan();                 //
  104.                 if(state == 1)   //sate==1,也就是打开了门,亮LED1绿灯
  105.                 {
  106.                         LED1 = 0;
  107.                         LED2 = 1;
  108.                         LED3 = 1;   
  109.                 }
  110.                 else if(state == 2)         //sate==2,也就是关闭了门,亮LED2红灯灯
  111.                 {
  112.                         LED1 = 1;
  113.                         LED3 = 1;
  114.                         LED2 = 0;   
  115.                 }
  116.                 else
  117.                 {
  118.                         LED1 = 1;
  119.                         LED2 = 1;
  120.                         LED3 = 0;       
  121.                 }
  122.         }
  123. }
  124. void UARTInterrupt(void) interrupt 4 //串口接收字符
  125. {
  126.     if(RI)
  127.     {
  128.         RI = 0;             //
  129.         
  130.         r_buf = SBUF;     //
  131.         if(state!=1)
  132.         {
  133.                 if(r_buf == '0')  //如果为字符‘0’
  134.                 {
  135.                         beep = 0;          //蜂鸣器响
  136.                         LED2 = 1;          //红灯关掉
  137.                     LED3 = 0;          //黄灯亮
  138.                         delay(400);          //延时400毫秒
  139.                         beep = 1;          //关闭蜂鸣器
  140.                         turnon();     //打开门
  141.                         turnstop();   //停止
  142.                         state = 1;          //将1赋值给state
  143.                 }
  144.         }
  145.         if(state!=2)
  146.         {
  147.                 if(r_buf == '1')  //如果为字符‘1’
  148.                 {
  149.                         beep = 0;          //蜂鸣器响
  150.                         LED1 = 1;          //绿灯关掉
  151.                         LED3 = 0;          //黄灯亮
  152.                         delay(400);          //延时400毫秒
  153.                         beep = 1;          //关闭蜂鸣器
  154.                         turnoff();          //关门
  155.                         turnstop();          //停止
  156.                         state = 2;          //将2赋值给state
  157.                 }
  158.         }
  159.         else //如果为其它字符
  160.         {
  161.           LED3 = 1;
  162.         }

  163.    SendOneByte(r_buf);//向手机回发该字符
  164.     }
  165. }
复制代码

所有资料51hei提供下载:
蓝牙锁.zip (30.74 KB, 下载次数: 26)


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

使用道具 举报

沙发
ID:568474 发表于 2019-6-21 20:48 | 只看该作者
有电路图吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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