标题:
基于stm32f103c8t6的智能避障小车源码 蓝牙控制4位数码管显示
[打印本页]
作者:
wulikanhua
时间:
2018-6-5 09:36
标题:
基于stm32f103c8t6的智能避障小车源码 蓝牙控制4位数码管显示
利用超声波测距检测距离,4位数码管显示的蓝牙避障小车。
单片机源程序如下:
#include "stm32f10x.h"
#include "stm32f10x_conf.h"
#include "led.h"
#include "systick.h"
#include "bizhang.h"
#include "key.h"
#include "zhongduan.h"
#include "tx_rx.h"
#include "timer.h"
#include "TM1637.h"
#include "timer3_pwm.h"
#include "wave.h"
#include "mortor.h"
float UltrasonicWave_Distance; //计算出的距离
u16 counter;
int main()
{
//u8 key=0;
//u8 BZ_flag=0;
int i=0,j=0;
u8 distance[4]={0};
u16 L=0;
L=2325;
distance[0]=code[L/1000];
distance[1]=code[L%1000/100];
distance[2]=code[L%100/10];
distance[3]=code[L%10];
//timer3_fig();
uart1_init();
led_inti(); //LED接PB5,PB6,PB7,PB8(核心板自带)
systick_intil();
uart1_init();
send_byte(1);
bizhang_inti();//避障传感器OUT脚接PA1
key_inil(); //按键接PA0
timer_confing();
wave_config();
TM1637_Init();
pwm_configuration(2400,599);
motor_config();
set_pwm(800,800,800,800);
motor_stop();
while(1)
{
//发出高电平
//启动测距
TIM_Cmd(TIM2, ENABLE);
if(led_flag>0)
{
TIM_Cmd(TIM2, DISABLE);
TIM_SetCounter(TIM2,0);
Wave_StarMeasure();
TIM_Cmd(TIM2, DISABLE);
while(!GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2));
//启动定时器
TIM_Cmd(TIM2, ENABLE);
//等待低电平
while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==1));
counter=TIM_GetCounter(TIM2);
TIM_Cmd(TIM2, DISABLE);
//数码管显示数据
UltrasonicWave_Distance=(float)(counter)/20*340/2;
//UltrasonicWave_Distance=(u16)UltrasonicWave_Distance*1000;
if(UltrasonicWave_Distance<5000)
{
distance[0]=code[(u16)UltrasonicWave_Distance/1000];
distance[1]=code[(u16)UltrasonicWave_Distance%1000/100];
distance[2]=code[(u16)UltrasonicWave_Distance%100/10];
distance[3]=code[(u16)UltrasonicWave_Distance%10];
TM1637_NixieTubeDisplay(distance);
}
led_flag=0;
}
if(RX_num>=5)
{
for(i=0;i<RX_num;i++)
{
if((RX_buff[i]==0x4f)&&(RX_buff[i+1]==0x4e))
{
switch(RX_buff[i+2])
{
case 0x41:;motor_run_forward();break; //前进
case 0x42:;motor_run_back();break; //后退
case 0x43:;motor_left();break; //左
case 0x44:;motor_right();break; //右
case 0x45:;motor_stop();break; //停
case 0x31:set_pwm(500,500,500,500);break; //1
case 0x32:set_pwm(900,900,900,900);break; //2
case 0x33:set_pwm(1200,1200,1200,1200);break;//3
case 0x34:set_pwm(1500,1500,1500,1500);break; //4
case 0x35:set_pwm(1800,1800,1800,1800);break;//5
case 0x36:set_pwm(2000,2000,2000,2000);break; //6
case 0x37:led_on();break; //PB8 7
case 0x38:led_on();break; //PB4 8
case 0x39:led_off();break; //OFF PB4 PB8 9
default:break;
}
RX_num=0;
for(i=0;i<50;i++)
{
RX_buff[i]=0;
}
}
}
}
}
}
void EXTI0_IRQHandler(void) //按键
{
u16 i,j;
led_on();
for(i=0;i<6000;i++)
{
for(j=0;j<6000;j++);
}
led_off();
EXTI_ClearITPendingBit(EXTI_Line0);
}
void EXTI1_IRQHandler(void)//避障
{
u16 i,j;
led_on();
for(i=0;i<6000;i++)
{
for(j=0;j<1000;j++);
}
led_off();
for(i=0;i<6000;i++)
{
for(j=0;j<1000;j++);
}
led_on();
for(i=0;i<6000;i++)
{
for(j=0;j<1000;j++);
}
led_off();
EXTI_ClearITPendingBit(EXTI_Line1);
}
复制代码
所有资料51hei提供下载:
智能小车.rar
(367.53 KB, 下载次数: 64)
2018-6-5 18:21 上传
点击文件名下载附件
全部文件
下载积分: 黑币 -5
作者:
admin
时间:
2018-6-5 18:23
电路及介绍呢?
作者:
xcnyw
时间:
2018-12-31 09:11
谢谢,下来学习学习
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1