标题:
蓝牙遥控小车单片机代码与app,亲测,可行!易懂奥
[打印本页]
作者:
0564
时间:
2018-10-22 17:43
标题:
蓝牙遥控小车单片机代码与app,亲测,可行!易懂奥
0.png
(51.35 KB, 下载次数: 17)
下载附件
2018-10-22 18:01 上传
单片机源程序如下:
#include <reg52.h>
#include "stdio.h"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned int a;
unsigned int Time;
unsigned int S;
baojing=5;
sbit N1 = P1^0;
sbit N2 = P1^1;
sbit N3 = P1^2;
sbit N4 = P1^3;
sbit T=P2^0;
sbit R=P2^1;
sbit rs=P2^2; //1602数据/命令选择引脚
sbit rw=P2^3; //1602读写引脚
sbit e =P2^4; //1602使能引脚
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
void count()
{
Time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(Time*1.7)/100;
}
void ceju()
{
T=1;
_nop_();_nop_();
_nop_();_nop_();
_nop_();_nop_();
_nop_();_nop_();
_nop_();_nop_();
_nop_();_nop_();
T=0;
while(!R);
TR0=1;
while(R);
TR0=0;
}
void write_com(uchar com)
{
rs=0;
rw=0;
e=0;
P0=com;
e=1;
delay_1ms(5);
e=0;
}
void write_data(uchar dat)
{
rs=1;
rw=0;
e=0;
P0=dat;
e=1;
delay_1ms(5);
e=0;
}
void write_zfc(uchar *p)
{
while(*p!=0)
write_data(*p++);
}
void init_1602()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
delay_1ms(25);
write_com(0x80);
write_zfc("juli:");
write_com(0x80+0x40);
write_zfc("danger:");
write_com(0x80+12);
write_zfc("cm");
write_com(0x80+0x40+12);
write_zfc("cm");
}
void display()
{
uchar bai,shi,ge;
bai=S/100;
shi=S%100/10;
ge=S%10;
write_com(0x80+9);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
}
void display1()
{
uchar tbai,tshi,tge;
tbai=baojing/100;
tshi=baojing%100/10;
tge=baojing%10;
write_com(0x80+0x40+9);
write_data(0x30+tbai);
write_data(0x30+tshi);
write_data(0x30+tge);
}
void go()
{
N1 = 1;
N2 = 0;
N3 = 1;
N4 = 0;
}
void back()
{
N1 = 0;
N2 = 1;
N3 = 0;
N4 = 1;
}
void right()
{
N1 = 1;
N2 = 0;
N3 = 0;
N4 = 0;
}
void left()
{
N1 = 0;
N2 = 0;
N3 = 1;
N4 = 0;
}
void stay()
{
N1 = 0;
N2 = 0;
N3 = 0;
N4 = 0;
}
void chuangkou_Init9600()
{
SCON = 0X50; //设置为工作方式1
TMOD = 0X21; //设置计数器工作方式2
TH1 = 0XFD; //计数器初始值设置,注意波特率是9600的
TL1 = 0XFD;
TH0 = 0X00; //计数器初始值设置,注意波特率是9600的
TL0 = 0X00;
ES = 1; //打开接收中断
EA = 1; //打开总中断
TR0 = 1;
TR1 = 1; //打开计数器
}
void Usart() interrupt 4
{
if(RI)
{
RI=0; //清除接收中断标志位
a=SBUF;
SBUF=a; //将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0;
} //清除发送完成标志位
}
void main()
{
init_1602();
chuangkou_Init9600();
while(1)
{
switch(a)
{
case 0X01: go(); break;
case 0X02: back(); break;
case 0X03: left(); break;
case 0X04: right(); break;
default: stay(); break;
}
ceju();
count();
display();
display1();
}
}
复制代码
所有资料51hei提供下载:
2_蓝牙遥控小车-成功.zip
(807.42 KB, 下载次数: 18)
2018-10-22 17:42 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2018-10-22 18:02
补全原理图或者详细说明一下电路连接即可获得100+黑币
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1