当前位置:   article > 正文

c语言编手机蓝牙软件的代码,51单片机C语言的简易蓝牙锁代码

sbit in1

#include

#define uint unsigned int

#define uchar unsigned char

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

sbit PWMA=P2^0;        //电机驱动模块接口

sbit IN1=P2^2;

sbit IN2=P2^1;

sbit STBY=P2^3;

sbit LED1=P0^0;        //LED灯接口

sbit LED2=P0^1;

sbit LED3=P0^2;

sbit key1=P1^0;         //按键接口

sbit key2=P1^1;

sbit key3=P1^2;

sbit key4=P1^3;

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

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

void delay(uint x)        //延时函数

{

uint i,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

void turnon()          //开门函数

{

IN1=0;

IN2=1;

delay(700);

}

void turnoff()          //关门函数

{

IN1=1;

IN2=0;

delay(700);

}

void turnstop()         //停止函数

{

IN1=1;

IN2=1;

}

void InitUART()    //串口初始化9600

{

//初始化串口定时器9600

TMOD = 0x20;   //0x20=0010 0000 TMOD中的M0和M1为控制方式的选择 M1=1,M0=0 T1,方式2

PCON = 0x00;   //波特率不倍增

SCON = 0x50;   //串口模式1,允许接收

TH1 = 0xFD;           //波特率9600

TL1 = 0xFD;           //波特率9600

EA = 1;                   //开总中断

TR1 = 1;           //启动定时器1

ES = 1;               //打开串行口中断

STBY = 1;           //电机驱动STBY=1有效,等于1,才能驱动电机

PWMA = 1;           //

}

void SendOneByte(uchar c) //发送字符函数

{

SBUF = c-0x30;

while(!TI);

TI = 0;

}

void keyscan()                          //键盘扫描函数

{

if(key1 == 0)                   //扫描按键key1

{                                          //延时10ms,消抖

delay(10);

if(key1 == 0)

{

beep=0;                  //蜂鸣器响

LED2=1;                  //红灯关掉

LED3=0;                  //黄灯亮

delay(400);          //延时400毫秒

beep=1;                  //关闭蜂鸣器

turnon();     //打开门

turnstop();   //停止

state=1;          //将1赋值给state

while(!key1); //等待按键释放

}

}

if(key2==0)                           //扫描按键key2

{                                          //延时10ms,消抖

delay(10);

if(key2 == 0)

{

beep = 0;          //蜂鸣器响

LED1 = 1;          //绿灯关掉

LED3 = 0;          //黄灯亮

delay(400);          //延时400毫秒

beep = 1;          //关闭蜂鸣器

turnoff();          //关门

turnstop();          //停止

state = 2;          //将2赋值给state

while(!key2); //等待按键释放

}

}

}

void main()

{

InitUART();

//r_buf = '2';

while(1)

{

keyscan();                 //

if(state == 1)   //sate==1,也就是打开了门,亮LED1绿灯

{

LED1 = 0;

LED2 = 1;

LED3 = 1;

}

else if(state == 2)         //sate==2,也就是关闭了门,亮LED2红灯灯

{

LED1 = 1;

LED3 = 1;

LED2 = 0;

}

else

{

LED1 = 1;

LED2 = 1;

LED3 = 0;

}

}

}

void UARTInterrupt(void) interrupt 4 //串口接收字符

{

if(RI)

{

RI = 0;             //

r_buf = SBUF;     //

if(state!=1)

{

if(r_buf == '0')  //如果为字符‘0’

{

beep = 0;          //蜂鸣器响

LED2 = 1;          //红灯关掉

LED3 = 0;          //黄灯亮

delay(400);          //延时400毫秒

beep = 1;          //关闭蜂鸣器

turnon();     //打开门

turnstop();   //停止

state = 1;          //将1赋值给state

}

}

if(state!=2)

{

if(r_buf == '1')  //如果为字符‘1’

{

beep = 0;          //蜂鸣器响

LED1 = 1;          //绿灯关掉

LED3 = 0;          //黄灯亮

delay(400);          //延时400毫秒

beep = 1;          //关闭蜂鸣器

turnoff();          //关门

turnstop();          //停止

state = 2;          //将2赋值给state

}

}

else //如果为其它字符

{

LED3 = 1;

}

SendOneByte(r_buf);//向手机回发该字符

}

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/483714
推荐阅读
相关标签
  

闽ICP备14008679号