蓝牙遥控开关c语言程序,单片机蓝牙控制开关制作(程序源码+安卓APP分享)

这篇博客介绍了使用C语言通过串口通信控制多个继电器的操作,包括延时子程序、串口初始化和中断处理。通过案例展示了如何根据接收到的数据改变继电器的状态,涉及的关键函数如`Com_Init()`和`Com_Int()`实现串口通信的控制逻辑。
摘要由CSDN通过智能技术生成

/********************************************************************

制 作 人:林景福

*********************************************************************/

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar receive=0;

uchar send=0xff;

sbit out1=P2^0;        //继电器1

sbit out2=P2^1;        //继电器2

sbit out3=P2^2;        //继电器3

sbit out4=P2^3;        //继电器4

sbit out5=P2^4;        //继电器5

sbit out6=P2^6;        //继电器6

sbit out7=P2^5;        //继电器7

sbit out8=P2^7;        //继电器8

/********************************************************************

* 名称 : Delay_1ms()

* 功能 : 延时子程序,延时时间为 1ms * x

* 输入 : x (延时一毫秒的个数)

* 输出 : 无

**********************************************************************/

void Delay_1ms(uint i) //1ms延时

{

uchar x,j;

for(j=0;j

for(x=0;x<=148;x++);

}

/********************************************************************

* 名称 : Com_Init()

* 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中断

* 输入 : 无

* 输出 : 无

**********************************************************************/

void Com_Init(void)

{

TMOD = 0x20;        //设置定时器工作方式2

//     PCON = 0x00;        //设置波特率不加倍

SCON = 0x50;        //设置为工作方式1

TH1 = 0xfd;    //设置波特率 9600

TL1 = 0xfd;

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

ES = 1;                //开串口中断

EA = 1;                //开总中断

}

//开关操作函数,接收到一次数据改变一次状态

void alloff()

{

P2=0xff;

}

void main()

{

Delay_1ms(100);

Com_Init();//串口初始化

while (1);

}

/********************************************************************

* 名称 : Com_Int()

* 功能 : 串口中断子函数

* 输入 : 无

* 输出 : 无

**********************************************************************/

void Com_Int(void) interrupt 4

{

EA = 0;

if(RI == 1)   //当硬件接收到一个数据时,RI会置位

{

receive = SBUF ;   //接收=SBUF

RI = 0;            //令接收中断标志位为0(软件清零)

switch (receive)

{

case 0x00:alloff();break;        //关闭所有

case 0x01: P2=0xfe;break;

case 0x20: out2=1;break;

case 0x21: out2=0;break;

case 0x30: out3=1;break;

case 0x31: out3=0;break;

case 0x40: out4=1;break;         //关

case 0x41: out4=0;break;         //开

case 0x50: out5=1;break;

case 0x51: out5=0;break;

case 0x60: out6=1;break;

case 0x61: out6=0;break;

case 0x70: out7=1;break;

case 0x71: out7=0;break;

case 0x80: out8=1;break;

case 0x81: out8=0;break;

//                        case常量表达式x:语句x;break;

default:P2=0xff;break;

}

}

EA = 1;

}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值