我是靠谱客的博主 眯眯眼烧鹅,最近开发中收集的这篇文章主要介绍2022-11-12 基于开发板的蓝牙点灯分享,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2022-11-12 基于开发板的蓝牙点灯分享(程序已上传到微信公众号:风吹摇铃 奔赴星海)

(公众号有详细的程序讲解和效果视频)

硬件准备:

51单片机开发板或者最小系统、LED灯、杜邦线、蓝牙模块、手机(安装APP)或者PC端串口调试助手、LCD1602显示屏

软件准备:

KEIL4编程,串口驱动、LCD1602驱动等

原理图准备:

1、LCD1602

2、单片机最小系统

3、独立按键部分

4、LED

5、蓝牙,该模块主要用于短距离的数据无线传输领域。可以方便的和 PC 机的蓝牙设备相连,也 可以两个模块之间的数据互通。避免繁琐的线缆连接,能直接替代串口线。

6、蓝牙实物:

软件部分:

1、LCD1602驱动部分

void LcdWriteCom(uchar com)    //写入命令{  LCD1602_E = 0;   //使能清零  LCD1602_RS = 0;   //选择写入命令  LCD1602_RW = 0;   //选择写入
  LCD1602_DATAPINS = com;  //由于4位的接线是接到P0口的高四位,所以传送高四位不用改  Lcd1602_Delay1ms(1);
  LCD1602_E = 1;   //写入时序  Lcd1602_Delay1ms(5);  LCD1602_E = 0;
  LCD1602_DATAPINS = com << 4; //发送低四位  Lcd1602_Delay1ms(1);
  LCD1602_E = 1;   //写入时序  Lcd1602_Delay1ms(5);  LCD1602_E = 0;}
void LcdWriteData(uchar dat)      //写入数据{  LCD1602_E = 0;    //使能清零  LCD1602_RS = 1;    //选择写入数据  LCD1602_RW = 0;    //选择写入
  LCD1602_DATAPINS = dat;  //由于4位的接线是接到P0口的高四位,所以传送高四位不用改  Lcd1602_Delay1ms(1);
  LCD1602_E = 1;    //写入时序  Lcd1602_Delay1ms(5);  LCD1602_E = 0;
  LCD1602_DATAPINS = dat << 4; //写入低四位  Lcd1602_Delay1ms(1);
  LCD1602_E = 1;    //写入时序  Lcd1602_Delay1ms(5);  LCD1602_E = 0;}

2、显示部分:

void display_data(void)///显示{  if(led_flag==1)  {  LcdWriteCom(0x80); //第一行    LcdWritestr("LED:ON ");    uartSendStr("LED:ON ",7);  }  else if(led_flag==0)    {   LcdWriteCom(0x80); //第一行  LcdWritestr("LED:OFF");   uartSendStr("LED:OFF",7);  } }

3、独立按键部分:

void key()//按键操作函数{  if(k1==0)    //判断  {      Delay1ms();        //消抖处理    if(k1==0)      //在判断    {          //设置     led_flag=1;     P1=0X00;
    }while(k1==0);  }  if(k2==0)  {        Delay1ms();    if(k2==0)      //加    {     led_flag=0;     P1=0XFF;     }while(k2==0);    }}

4、串口初始化:

void UART_Init(void){    SCON  = 0x50;            // SCON: 模式 1, 8-bit UART, 使能接收      TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装    TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHz  TL1 = TH1;      TR1   = 1;                  // TR1:  timer 1 打开                             EA    = 1;                  //打开总中断    ES    = 1;                  //打开串口中断}

5、串口中断服务

void UART_SER (void) interrupt 4   //串行中断服务程序{    if(RI)                        //判断是接收中断产生  {  RI=0;                      //标志位清零  reseve_flag = SBUF;  }  if(TI)  //如果是发送标志位,清零  TI=0;  switch(reseve_flag)  {  case (0+0x30): led_flag=1;     P1=0X00; break;  case (1+0x30): led_flag=0;     P1=0XFF;break;  default:    break;  }}

实现效果:

到公众号:风吹摇铃 奔赴星海:观看

最后

以上就是眯眯眼烧鹅为你收集整理的2022-11-12 基于开发板的蓝牙点灯分享的全部内容,希望文章能够帮你解决2022-11-12 基于开发板的蓝牙点灯分享所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部