赞
踩
#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);//向手机回发该字符
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。