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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机蓝牙小车程序详解 -> 正文阅读

[嵌入式]51单片机蓝牙小车程序详解

1.串口初始化

void UART_Init(void)		//函数初始化。9600bps@11.0592MHz
{
	PCON &= 0x7F;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	//AUXR |= 0x40;		//定时器1时钟为Fosc,即1T(删除。高级的单片机才有这个选项)
	//AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器(删除。高级的单片机才有这个选项)
	TMOD &= 0x0F;		//清除定时器1模式位
	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
	TL1 = 0xFD;		//设定定时初值
	TH1 = 0xFD;		//设定定时器重装值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
    EA=1;		// CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。
	ES=1;		//串行口中断允许位,ES=1,允许串行口中断,ES=0,禁止串行口中断。
}

2.配置端口及驱动程序

sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;

 void stop()
{
	IN1=0;
	IN2=0;
	IN3=0;
	IN4=0;
}

void forward()
{
	IN1=1;
	IN2=0;
	IN3=1;
	IN4=0; 
}

void back()
{
	IN1=0;
	IN2=1;
	IN3=0;
	IN4=1;
}

void left()
{
	IN1=1;
	IN2=0;
	IN3=0;
	IN4=0;
}

void right()
{
	IN1=0;
	IN2=0;
	IN3=1;
	IN4=0;
}

3.主函数

void main()
{
	UART_Init();
	while(1)
	{
	}
}

4.中断函数

void UART_Routine() interrupt 4    //8个中断请求源中的串口中断。
{
	unsigned char S;		//定义一个S存放 SBUF中的数据。
	if(RI==1)  			    //判断接收中断请求标志位,TI为1 表示用开始可以开始接收了。
	{
		stop();			    //电机控制,先停止再执行指令。
		S=SBUF;			    //手机蓝牙信号发送指令 储存在SBUF中。从SBUF里面 拿出指令赋给S。
		switch(S)			
		{
			case ('1'):		//判断S中是不是指令“1”
				forward();break;
			case ('2'):		//判断S中是不是指令“2”
				back();break;
			case ('3'):
				left();break;
			case ('4'):
				right();break;
			case ('0'):
				stop();break;
		}	
		RI=0;			//单片机接收中断请求标志位,接收完之后自动变为1,接收完成之后要手动置为0。为0下次才可以接收。
	}

注意:

1.中断函数里面的1,2,3,4,0要在手机蓝牙APP中设置。

2.手机蓝牙APP中设置,按下按键/松开按键,电机转动的。

????????或者按下按键电机转动,松开按键 电机停止等。


完整代码:

#include <REGX52.H>

sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;

 void stop()
{
	IN1=0;
	IN2=0;
	IN3=0;
	IN4=0;
}

void forward()
{
	IN1=1;
	IN2=0;
	IN3=1;
	IN4=0; 
}

void back()
{
	IN1=0;
	IN2=1;
	IN3=0;
	IN4=1;
}

void left()
{
	IN1=1;
	IN2=0;
	IN3=0;
	IN4=0;
}

void right()
{
	IN1=0;
	IN2=0;
	IN3=1;
	IN4=0;
	
}

void UART_Init(void)		
{
	PCON &= 0x7F;		
	SCON = 0x50;		
	TMOD &= 0x0F;		
	TMOD |= 0x20;		
	TL1 = 0xFD;	
	TH1 = 0xFD;		
	ET1 = 0;		
	TR1 = 1;		
	EA=1;		
	ES=1;		
}


void main()
{
	UART_Init();
	while(1)
	{
	}
}

void UART_Routine() interrupt 4
{
	unsigned char S;
	if(RI==1)  
	{
		stop();
		S=SBUF;
		switch(S)		
		{
			case ('1'):		
				forward();break;
			case ('2'):		
				back();break;
			case ('3'):
				left();break;
			case ('4'):
				right();break;
			case ('0'):
				stop();break;
		}	
		RI=0;
	}
}

接线:

51单片机蓝牙小车接线(L298N供电,分别电源供电)

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:54:59  更:2021-11-17 12:55:47 
 
开发: 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 8:58:49-

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