IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 2021-10-25 -> 正文阅读

[嵌入式]2021-10-25

蓝牙控制单片机小灯亮灭(51)

我是一个初学的,在学51。板子用的是清祥电子51AVR单片机最小系统那个板子,然后做的是蓝牙控制小灯亮灭。因为是初学,一开始有很多的困惑都没解决,不多说了,先说说我的经历。
我用的是hc-06的蓝牙模块,然后就是用的普中科技的PZ-ISP这个串口调试助手,首先蓝牙模块的VCC,GND与单片机的相连,然后就是蓝牙模块的RXD连接单片机的RXD,蓝牙模块的TXD连接单片机的TXD,如图然后就打开串口调试助手,把波特率调到9600,然后打开串口,在发送区输入AT然后加上换行,输入AT+enter键再点击发送再点击发送,如果接收区收到ok就表示🉑了。然后输入AT+BAUD4(将波特率改成9600),输入AT+BAUD4将波特率改为9600这里我想跟大家讲一下,串口调的是蓝牙的波特率,我们在keil上面写的文件里面的内容才是去修改单片机波特率的。输入完之后,显示OK,就表示可以了。接下来就是文件部分了。
我用的是keil5然后具体就如下

#include <reg51.h>
unsigned char k;
typedef unsigned int u16;
sbit led1=P1^0;
sbit led2=P1^1;
void InitUART(void)
{    TMOD = 0x20;  
  SCON = 0x50;   
   TH1 = 0xF3;   
    TL1 = 0xF3;   
     PCON = 0x00;    
     EA = 1;    
     ES = 1;   
      TR1 = 1;}
      void delay(u16 i)
      {    unsigned char j;  
        for(i; i > 0; i--)        
           for(j = 255; j > 0; j--);}
           void main(void)
           {		k=0; 
              InitUART();	
              while(1)
              	{		
              	if(k==0)	
              		{		
              			led1=0;		
              				led2=1;		
              				}		else if (k==1)		
              				{		
              					led1=1;		
              						led2=0;;		}		
              						else if (k==2)		
              						{			led1=1;			led2=1;	}	
              							else 		{			led1=1;			led2=1;		}	
              							}
              							}
  void UARTInterrupt(void) interrupt 4
  {    if(RI)   
   {        RI = 0;	
   	k++;		
   	if(k>2)		
   		k=0;    }    
   		else        TI = 0;}

这个图我是根据发送数据的次数去控制小灯的亮灭的,我也是看了很多博主的文章去琢磨的(我才学不是很会)。

#include "reg52.h"			
typedef unsigned int u16;	 
 typedef unsigned char u8;
 u8 receivedata;
 sbit led1=P1^0;
 sbit led2=P1^1;
 sbit led3=P1^2;
 void UsartInit()
 {	
 SCON=0X50;			//设置为工作方式1	
 TMOD=0X20;			//设置计数器工作方式2	
 PCON=0X80;			//波特率加倍	
 TH1=0XFA;				//计数器初始值设置,注意波特率是9600的	
 TL1=0XFA;	
 ES=1;						//打开接收中断	
 EA=1;						//打开总中断	
 TR1=1;					//打开计数器}
 void main()
 {		
 UsartInit();  //	串口初始化	
 while(1);		}
 void contrl()
 {	if(receivedata=='1')	
 {		led1=0;	}	
 if(receivedata=='2')	{		led2=0;	}	
 if(receivedata=='3')	{		led3=0;	}	
 if(receivedata=='4')	{		led1=~led1;	}	if(receivedata=='5')	{		led2=~led2;	}	if(receivedata=='6')	{		led3=~led3;	}	if(receivedata=='7')	{		P1=0xf0;	}	if(receivedata=='8')	{		P1=0xff;	}
 }
 void Usart() interrupt 4
 {	receivedata=SBUF;//出去接收到的数据	
 RI = 0;	
 SBUF=receivedata;//将接收到的数据放入到发送寄存器	contrl();	
 while(!TI);			 //等待发送数据完成	TI=0;						 //清除发送完成标志位}

这一个程序是根据发送的具体的数字去判断小灯的亮灭,要写这个程序可以先去把串口通信那些学了,之前我一直都没搞懂怎么样才可以收到具体数值然后去让小灯亮灭,其实最主要就是里面的接受数据那里,我在这里定义了一个全局变量receivedata,然后让中断函数里面SBUF接受的数据和receivedata相等,最后控制函数里面引用的时候就是你发送的数据。(我表述可能不太清楚,但大概是这个样子,多多指教。)

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 12:59:08  更:2021-10-27 13:01:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:27:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码