蓝牙定时开关APP软件(附51单片机参考程序)

发布者:爱笑的猫咪最新更新时间:2019-11-08 来源: 51hei关键字:蓝牙  定时开关  51单片机 手机看文章 扫描二维码
随时随地手机看文章

APP发送字符“1”至“7”数字。比如第一组定时发送的是字符“1”。第二组定时发送字符“2”.....一共7组。可用串口助手测试,电脑与蓝牙模块通信连接,如图1.所示。

 

单片机源程序如下:

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar tmp;

uint c=0;

sbit led1=P1^0;                    //指示灯0

sbit led2=P1^1;                        //指示灯1

sbit led3=P1^2;                        //指示灯3

sbit led7=P1^7;                        //指示灯3


sbit P2_0 = P2^0;

sbit P2_1 = P2^1;

sbit P2_2 = P2^2;

sbit P2_3 = P2^3;


uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,

                        0xf8,0x80,0x90};


void delay1(uint z)//1ms

{

        uint x,y;

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

                for(y=120;y>0;y--);        

}

void display(uchar value)

{

    uchar shu1,value1;

        value1=value-48;

        //bai=value1/16;

        shu1=value1%16;



   P0=table[shu1];

   P2_0 = 0;

   delay1(1);

   P2_0 = 1;

}        

          

void init();   //串口初始化

void send(unsigned char a);        //单字节发送函数

void ctrl(); //接收处理函数


void main()

{

                init();

          while(1)

          {         

                  display(SBUF);

                                  if(RI==1)                     // 是否有数据到来

                  {

                   RI = 0;

                                  ctrl();

                                  }       

          }

}


void init()        //串口初始化

{

                   ES=0;                                                                  //关中断

                  SCON = 0x50;                        // REN=1允许串行接受状态,串口工作模式1,

                                                                                          //10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变


                  TMOD = 0x20;                        // 定时器1工作于方式2,8位自动重载模式, 用于产生波特率

          TH1=TL1=0xFD;                       // 波特率9600 (本次测试采用晶振为11.0592)

          

          PCON &= 0x7f;                       // 波特率不倍增

          TR1 = 1;                                                          //定时器1开始工作,产生波特率

                                                                                          //发送标志位置0

                  TI=0;                                                                  //接收标志位置0

                  RI=0;

                  

                  //EA=0;

              ES=1;

}

   

void send(unsigned char a)        //单字节数据发送

{                                                        //注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。本次测试需要接上拉电阻

        TI=0;        

        SBUF=a;

        while(TI==0);

        TI=0;


        if(c%2)                                        //发送指示灯标志,每接收一次,此灯亮灭交替

         led7=1;

        else

         led7=0;

        c++;


void ctrl()                            //接收处理函数

{

                                    switch(tmp)

                                  {

                                          case '1':

                                                led1=1;                                   //收到字符1,指示灯0灭

                                                send(tmp);

                                                break;                                        

                                        case '2':                                         //收到字符2,指示灯1灭

                                                 led2=1; 

                                                 send(tmp);

                                                 break;

                                        case '3':                                    //收到字符3,指示灯0、1亮

                                                 led1=0;

                                                 led2=0;

                                                 send(tmp);

                                                 break;

                                        case '4':                                        //收到字符4,指示灯0、1灭

                                                  led1=1;

                                                  led2=1;

                                                  send(tmp);

                                                  break;

[1] [2]
关键字:蓝牙  定时开关  51单片机 引用地址:蓝牙定时开关APP软件(附51单片机参考程序)

上一篇:单片机DAC0832波形发生器实验报告
下一篇:stc12c5a60s2 0-30电压测量 有注释

推荐阅读最新更新时间:2024-11-11 01:48

51单片机LCD1602程序详解
LCD1602 工业字符型液晶。1602是指LCD显示的内容为16X2,即可以显示两行,每行16个字符. 特殊接口说明 RS:寄存器选择输入端 RS=1:指向数据寄存器 RS=0:指向指令寄存器 RW:读写控制输入端 RW=0:写操作 RW=1:读操作 E:使能信号输入端 读操作时,高电平有效; 写操作时,下降沿有效; 程序编写: #include reg51.h #include intrins.h //其中有nop函数的定义 /*对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。*/
[单片机]
基于51单片机嵌入式系统仿真设计
本文介绍一种嵌入式系统仿真方法,通过一种特殊设计的指令集仿真器ISS将软件调试器软件Keil uVision2和硬件语言仿真器软件Modelsim连接起来,实现了软件和硬件的同步仿真。 缩略词解释: BFM:总线功能模块。在HDL硬件语言仿真中,BFM完成抽象描述数据和具体的时序信号之间的转换。 PLI:Verilog编程语言接口,是C语言模块和Verilog语言模块之间交换数据的接口定义。 TCL:字面意思是工具命令语言,是一种解释执行语言,流行EDA软件一般都集成有TCL。使用TCL用户可以编写控制EDA工具的脚本程序,实现工具操作自动化。 ISS:CPU指令集仿真器,可以执行CPU的机器码。 TFTP:简单文件传输协议,
[单片机]
基于<font color='red'>51单片机</font>嵌入式系统仿真设计
Bluetooth Developer Studio:更快的开发速度实现更大的梦想
我当初加入蓝牙技术联盟时,虽然身为无线开发者,但对蓝牙(Bluetooth )技术的细节并不十分熟悉。因此我也花了很多时间翻阅了3000多页的蓝牙规格指南,学习采用的和自定义配置文件的开发过程,以及有哪些工具可以辅助开发。我希望通过这样的学习过程,更多地了解如何将蓝牙这项技术推向现实应用。 一个比较根本的问题是初学者需要花费较长时间入门,摸索相关的开发知识。对开发者来说,从理解蓝牙技术、专业术语、再到在蓝牙芯片或模组上实际操作,着实不容易。也正是那时开始,我决心要为开发者打造一个便于开发及了解蓝牙的工具。 因此我和我在蓝牙技术联盟的团队开始着手打造能够让蓝牙开发更简单更快速的工具。我们已经打造出了几个非常不错的工具,包括应
[网络通信]
51单片机环境的搭建-1.3指令下载/烧写软件
第一章 51单片机环境的搭建-1.3指令下载/烧写软件 1.3 指令下载/烧写程序下载STC-ISP:http://pan.baidu.com/s/1kU3oXD1 将STC-ISP-v4.80.rar文件解压,即可使用
[单片机]
51单片机定时器实验
一.实验要求 由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮......一直循环下去。 二.实验目的 1.学习8031内部计数器的使用和编程方法。 2. 进一步掌握中断处理程序的编程方法。 三.实验电路及连线 P1.0--P1.7 接 L1--
[单片机]
<font color='red'>51单片机</font>定时器实验
51单片机入门 - UART串口
对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。 1、初步认识 一位一位的发送出去的,要发送 8 次才能发送完一个字节。 STC89C52有两个引脚是专门用来做 UART串行通信的,一个是 P3.0一个是 P3.1,它们还分别有另外的名字叫做 RXD和TXD,由它们组成的通信接口就叫做串行接口,简称串口。 波特率:发送二进制数据位的速率,习惯上用 baud 表示;即我们发送一位二进制数据的持续时间=1/baud。 通信过程:在UART 通信的时候,一个字节是 8 位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位 0
[单片机]
<font color='red'>51单片机</font>入门 - UART串口
STC89C52_51单片机_串口配置_UART串口通信
寄存器配置 PCON电源管理寄存器 位序号 D7 D6 D5 D4 D3 D2 D1 D0 位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI – 模式 模式 模式1直接清零 使能串口接收 模式1接收停止位 发送标志位,软件清零 接受标志位,软件清0 //不能位寻址 SCON串口控制寄存器 位序号 D7 D6 D5 D4 D3 D2 D1 D0 位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI – 模式 模式 模式1直接清零 使能串口接收 模式1接收停止位 发送标志位,软件清零 接受标志位,软件清0 /* SCON */ sbit SM0 = SCON^7; sbit SM1 = SCON
[单片机]
STC89C52_<font color='red'>51单片机</font>_串口配置_UART串口通信
MCS51单片机采用什么样的抗干扰技术
普及型MCS-51系列单片机(如8031和8032)既然无复位指令,又没有集成WATCHDOS电路,那么普及型MCS-51单片机是采用什么样的抗干扰技术呢?如果没有外接硬件WATCHDOG电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位就是用一系列指令来模仿复位操作,这就是MCS-51系列单片机所特有的软件复位技术。
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved