标题:
(求教大佬)stc12c5608ad,28脚单片机蓝牙小车
[打印本页]
作者:
lostrivers
时间:
2018-4-6 16:33
标题:
(求教大佬)stc12c5608ad,28脚单片机蓝牙小车
大佬们帮忙看看,为什么动不了
程序如下
#include "STC12C5608AD.h"
#define uchar unsigned char
#define uint unsigned int
typedef unsigned int u16;
typedef unsigned char u8;
sbit en1=P2^4;
sbit en2=P3^7;
sbit s1=P2^2;
sbit s2=P2^3;
sbit s3=P2^6;
sbit s4=P2^7;
u8 a=0;
u8 q1=0x80;
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void PWM_int(void)
{
CCON=0;
CL=0;
CH=0;
CMOD=0X00;
CCAP0H=0x00;
CCAP0L=0x00;
PCA_PWM0=0X00;
CCAPM0=0X42;
CCAP3H=0x00;
CCAP3L=0x00;
PCA_PWM3=0X00;
CCAPM3=0X42;
CR=1;
}
void delay(uint i)
{
while(i--);
}
void PWM0_set(uchar p)
{
CCAP0H=p;
CCAP0L=p;
}
void PWM3_set(uchar p)
{
CCAP3H=p;
CCAP3L=p;
}
void right()
{
s1=1;
s2=0;
s3=1;
s4=0;
PWM0_set(0x7e);
PWM3_set(0x91);
}
void left()
{
s1=1;
s2=0;
s3=1;
s4=0;
PWM0_set(0x91);
PWM3_set(0x7e);
}
void go()
{
s1=1;
s2=0;
s3=1;
s4=0;
PWM0_set(q1);
PWM3_set(q1);
}
void tui()
{
s1=0;
s2=1;
s3=0;
s4=1;
PWM0_set(q1);
PWM3_set(q1);
}
void stop()
{
s1=1;
s2=1;
s3=1;
s4=1;
PWM0_set(0xff);
PWM3_set(0xff);
}
void APP()
{
if(a==0x10)
{
left();
}
if(a==0x20)
{
right();
}
if(a==0x1c||a==0x1d||a==0x5c)
{
if(a==0x1c)
{
q1+=10;
go();
}
if(a == 0x1d)
{
q1-=10;
go();
}
else
{
q1=0x80;
go();
}
}
if(a==0x1e||a==0x1f||a==0x5e)
{
if(a==0x1e)
{
q1+=10;
tui();
}
if(a==0x1f)
{
q1-=10;
tui();
}
else
{
q1=0x80;
tui();
}
}
if(a==0x24)
{
stop();
}
else
{
stop();
}
}
void main()
{
init();
PWM_int();
while(1)
{
APP();
}
}
void chuan() interrupt 4
{
RI=0;
a=SBUF;
}
作者:
QIANLILI
时间:
2018-4-6 19:59
你只贴了程序 没有硬件原理图。 从程序上看 你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图 不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口 发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机 波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
作者:
asdfghj725
时间:
2018-4-13 21:19
你只贴了程序 没有硬件原理图。 从程序上看 你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图 不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口 发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机 波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
作者:
胡阿小小小
时间:
2018-4-14 18:51
你只贴了程序 没有硬件原理图。 从程序上看 你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图 不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口 发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机 波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
作者:
1034159374
时间:
2018-4-15 10:43
你只贴了程序 没有硬件原理图。 从程序上看 你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图 不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口 发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机 波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
作者:
请问是大卫杜夫v
时间:
2018-4-15 11:51
你只贴了程序 没有硬件原理图。 从程序上看 你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图 不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口 发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机 波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
作者:
643488668
时间:
2018-4-16 09:26
你只贴了程序 没有硬件原理图。 从程序上看 你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图 不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口 发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机 波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。 回复
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1