找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3712|回复: 6
打印 上一主题 下一主题
收起左侧

(求教大佬)stc12c5608ad,28脚单片机蓝牙小车

[复制链接]
跳转到指定楼层
楼主
ID:292464 发表于 2018-4-6 16:33 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5黑币
大佬们帮忙看看,为什么动不了
程序如下
#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;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:160834 发表于 2018-4-6 19:59 | 只看该作者
你只贴了程序  没有硬件原理图。 从程序上看  你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图  不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口  发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机  波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
回复

使用道具 举报

板凳
ID:307604 发表于 2018-4-13 21:19 | 只看该作者
你只贴了程序  没有硬件原理图。 从程序上看  你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图  不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口  发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机  波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
回复

使用道具 举报

地板
ID:270401 发表于 2018-4-14 18:51 | 只看该作者
你只贴了程序  没有硬件原理图。 从程序上看  你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图  不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口  发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机  波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
回复

使用道具 举报

5#
ID:307591 发表于 2018-4-15 10:43 | 只看该作者

你只贴了程序  没有硬件原理图。 从程序上看  你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图  不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口  发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机  波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
回复

使用道具 举报

6#
ID:308468 发表于 2018-4-15 11:51 | 只看该作者
你只贴了程序  没有硬件原理图。 从程序上看  你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图  不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口  发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机  波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。
回复

使用道具 举报

7#
ID:308965 发表于 2018-4-16 09:26 来自手机 | 只看该作者
你只贴了程序  没有硬件原理图。 从程序上看  你用蓝牙接收一个字符来执行相关动作。 看程序 接受一个字符可以这么写。 PWM驱动没有硬件原理图  不知道你怎么接的。 但是可以测量下你定义的S1到S4的引脚有无脉冲电压就可知道程序正不正确。 另外 蓝牙属于无线串口  发送和接收的串口波特率要一致。从你的TH1=0xfd;TL1=0xfd;上看,这个应该是用在12T的(STC89C52)单片机上的。STC12C5608AD是1T的单片机  波特率参数不一样。 具体可看STC烧录程序里的波特率计算器 里面可以按照你使用的晶振要求的波特率直接生成代码。 回复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表