智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4329|回复: 13
打印 上一主题 下一主题

[讨论] 有关蓝牙的

[复制链接]

7

主题

69

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1090
威望
612
贡献
308
兑换币
214
注册时间
2012-3-10
在线时间
85 小时
毕业学校
孟坝中学
跳转到指定楼层
1#
发表于 2013-3-31 20:11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5贡献
大家看看我这个程序
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */


  unsigned char  Image_Data[60][74];

//基于16M外部晶振
//byte nM 预设定的总线频率
//函数可能存在问题,仅供参考演示
void SetBusCLK_nM(byte nM)
{   
    MMCCTL1=0X00;                       
    PKGCR  =0X06;                       
    DIRECT =0x00;
    IVBR   =0xFF;   
    ECLKCTL=0xC0;   
    CPMUPROT   =0x26;   //停止保护时钟配置寄存器
    CPMUCLKS_PSTP=0;    //
    CPMUCLKS_PLLSEL=1;  //应用PLL
    CPMUCLKS   =0x80;    //允许PLL分频        
    //CPMUSYNR   =nM-1;   //设置分频因子  
    CPMUSYNR   =0xc0|(nM-1); //设置分频因子
    CPMUREFDIV =0x80|0x00; //pllclock=2*(1+SYNR)= MHz;
    CPMUPOSTDIV=0x00;   // Set the post divider register      
    //CPMUPOSTDIV=0x00;   // Set the post divider register  
    CPMUPLL    =0x10;   // Set the PLL frequency modulation  
    while(CPMUFLG_LOCK == 0);          /* Wait until the PLL is within the desired tolerance of the target frequency */
    CPMUPROT=0x00;            /* Enable protection of clock configuration registers */
}

void PWM_Init(void)
{      
    //SB,B for ch2367
    //SA,A for ch0145  
    PWMPRCLK = 0X44;    //clockA,CLK B 32分频:6000k //预分频寄存器  
    PWMSCLA = 0x01;     //对clock SA 进行2*PWMSCLA=2分频;pwm clock=clockA/4=10KHz;分频寄存  107k     
    PWMSCLB = 0X06;     //clk SB=clk B/(2*pwmsclb)=10KHZ   分频寄存
     // PWMCTL_CON67=1 --- 通道6、7 级联成一个16位的PWM通道  150k
     //pwm1  
    //PWMCNT2 = 0;
    PWMCTL_CON01=1;    //--- 通道0、1 级联成一个16位的PWM通道
    PWMCTL_CON23=1;
    PWMCTL_CON67=1;         
    //PWMCAE_CAE0=1;   // 左对齐  1居中对齐置为0左对齐   只有输出通道被关闭后才能对其进行设置
    PWMCAE_CAE1=0;            //通道时钟周期*PWMPER23
    PWMCAE_CAE3=0;         
    PWMCAE_CAE7=0;
    //PWMPOL_PPOL0=1;  //  极性设置 寄存器  通道对外输出波形先是高电平然后再变为低电平        
    PWMPOL_PPOL1=1;           //  PWMDTY23/PWMPER23
    PWMPOL_PPOL3=1;          //(PWMPER23-PWMDTY23)/PWMPER23
    PWMPOL_PPOL7=1;
    /*PWMPER1 =4000;   // 周期寄存器设置  100HZ
    PWMDTY1 =800;      //  占空比寄存器设置中值39
    PWMPER3 =100;        
    PWMDTY3 =0;
    PWMPER7 =100;        
    PWMDTY7 =50;*/
    PWMPER01 = 20000;  //周期10ms; 75Hz;
    PWMDTY01 = 2300;   //高电平时间为430    16.7  加左3800减右3000;
    PWMPER23 = 5000;   //周期10ms; 100Hz;
    PWMDTY23 = 600;
    PWMPER67 = 3000;  //周期10ms; 100Hz;
    PWMDTY67 = 0;                          
    //PWMCLK_PCLK0 = 1;           //0 1 4 5时钟源的选择   1通道的时钟源设为SA   0通道的时钟源设为A
    PWMCLK_PCLK1 = 1;
    PWMCLK_PCLK3 = 0;
    PWMCLK_PCLK7 = 0;
    //PWME_PWME0 = 1;
    PWME_PWME1 = 1;
    PWME_PWME3 = 1;
    PWME_PWME7 = 1;                        
}

//计数初始化//
void time1Init(void)
{
  //TIOS_IOS0=0;
  //TCTL4=0x02;
  //TIE_C0I=1;
  PACTL_PAEN=0;//0-16b计数禁止,1允许,先禁止
  PACTL_PAMOD=0;//0-计数模式,1-门时计数模式,设0
  PACTL_PEDGE=0;//0下降沿,1-上升沿,指定有IOC7-PT7口输入,此位受PACTL_PAMOD影响,此设0
  PACTL_CLK1=0;//当计数位外部脉冲,此设置无意义,都设0
  PACTL_CLK0=0;
  PACTL_PAOVI=0;//0-溢出中断禁止,1-允许,本例计数个数有time0时钟中断读取,不需要溢出中断,设0
  PACTL_PAI=0;//0禁止中断,1允许,设0
  PACNT=0;//计数器寄存器的值,可以使0000~FFFF,先清0
  //PAFLG_PAOVF=1;//计数溢出FFFF>0000
  PAFLG_PAIF=1;//脉冲数入1=IOC7-PT7,最大65536个脉冲
  PACTL_PAEN=0;//16b计数允禁止
}

//--------------------行场初始化------------------//
void ECT0_Init(void)
{
  TSCR1=0x80; //允许主时钟,允许预分频时钟
        TIOS=0x40;  //PT4,PT6均为输入捕捉
        TCTL3=0x09; //PT6捕捉下降沿,PT4捕捉上升沿
        TFLG2=0x80;//清主时钟溢出中断标志位
        TFLG1=0xFF;//清PT4,PT6中断标志位
        TIE=0x00;  //关PT4,PT6中断
}

//--------------------定时器初始化------------------//
void ECT0_Init_time(void)
{
  TIOS=0x40;    //定时器通道0设置为输出比较
  TC6=0x00ee;   //赋初值,当TCNT从0计数到此值时第一次进入中断
  TCTL1=0x10;   //其他七路与定时器断开   执行的动作时:0通道输出清零
  TSCR2=0x06;   //溢出中断禁止   64M/64=1微秒,计一个数用1微秒
  TSCR1=0x80;   //使能定时器
  TIE=0x00;     //通道0输出比较中断允许  通道1、2、6、7输入捕捉中断允许
}

//---------------图像初始化------------------//
void tuxiang_init()
{
     TIE_C5I=1;
     TIE_C4I=1;
     TIE_C6I=1;
     TIE_C7I=1;
}

void SCI_Init(void)
{
      SCI0BD=31; /*波特率为115200 误差为0.0079*/
      //SCI0BD =BusCLK_nM/16/9600;
      SCI0CR1=0;/*一个起始位8位数据位一位停止位,无奇偶校验*/
      SCI0CR2=0x2C;/*TIE=0发送中断申请,TCIE发送完成中断,RIE接受完成中断,ILIE空闲中断,TE允许发送,RE允许接收
                      7                       6                   5              4            3             2
                  */

}
void SEND(unsigned char DATE)
{

      while(!(SCI0SR1_TDRE==1));
      SCI0DRH=0;
      SCI0DRL=DATE;
      _asm(nop);

}
void ling()
{
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
           SEND(0x00);SEND(0x00);
}
//求绝对值
int abs_1(int xn)
{
  if(xn<0)xn=-xn;
  return(xn);
}
int abs_stub(int anx,int bnx)
{
  if(anx>=bnx) return anx-bnx;
  else return bnx-anx;
}
int absa(int an)
{
  if(an>=0)return an;
  else return -an;
}

void delay(unsigned int time)
{
   unsigned int i,j,k;
   for(i=0;i<125;i++)
   {
      for(j=0;j<125;j++)
      {
         for(k=time;k>0;k--);
      }
   }  
}
void delay1(unsigned int time)
{
   unsigned int i,j,k;
   for(i=0;i<80;i++)
   for(j=0;j<125;j++)
   for(k=time;k>0;k--);
}




void main(void)
{
  unsigned char i,j;
// unsigned char T,T1,T2,n=0,m=0;
  SetBusCLK_nM(48);
  SCI_Init();
  PWM_Init();
  ECT0_Init();
  ECT0_Init_time();
  time1Init();
  DDRA=0x00;   
  DDRD=0xFF;
  PORTD=0xff;
  DDRB=0xFF;
  DDRC=0xFF;
  tuxiang_init();
        EnableInterrupts;
  for(;;)
  {   
          if(flag==2)
     {      
          for(i=0;i<50;i++)
            {
              for(j=0;j<74;j++)           
              {
                  if(Image_Data[j]>0xa0)
                  {
                        Image_Data[j]=1;
                        SEND(0x01);   
                  }
                  else
                  {
                        Image_Data[j]=0;
                        SEND(0x00);   
                  }

              }
           }

            flag=0;            
            PORTD_PD7=~PORTD_PD7;
            TIE_C4I=1; //开行中断
            TIE_C5I=1; //开场中断                  
            _FEED_COP(); // feeds the dog               
         }   
    }   
}

#pragma CODE_SEG NON_BANKED    //定时器通道0输入捕捉中断
void interrupt 20 SCI_R(void)
{                                   
     volatile unsigned char da;
     if(SCI0SR1_RDRF==1)
     da=SCI0DRL;
     SEND(da);

}   
void interrupt 12  LINE0(void)
{  
          unsigned char n;
          TFLG1_C4F=1;
          Line_C++;
          if((Line_C%3==0)&&(flag==1))
          {



               for(n=0;n<74;n++)
               {

                   Image_Data[ROW][n]=PORTA;
               }
                  if(ROW==55)
                  {
                     TIE_C4I=0; //开行中断
                  }
                  ROW++;     

          }
          if(Line_C>240)   //为什么要用这个数字
           {
          Line_C=0;
          }   

}
void interrupt 13 ROW0(void)
{            
            TFLG1_C5F=1;
            PORTD_PD6=~PORTD_PD6;            //PACTL_PAEN=1;//16b计数允许
            Line_C=0;
            ROW=0;
            flag++;
            if(flag==2)
            {            
              TIE_C4I=0; //开行中断
              TIE_C5I=0; //开场中断
            }      
}
void interrupt 14 dingshi(void)
{  
            unsigned int m;
            TFLG1_C6F=1;
            TIE_C6I=0;
            PACTL_PAEN=0;//16b计数禁止
            PORTD_PD3=~PORTD_PD3;  //PACTL_PAEN=1;//16b计数允许

            m=TCNT;
            TC6=m+10000;           //10000*1us=10ms定时时间
            PACTL_PAEN=1;//16b计数禁止
            TIE_C6I=1;
}
按照这个程序用蓝牙应该能看到赛道情况啊,可是我的界面是这样的,为什么呀谁能帮我看看,谢谢了


附件: 您需要 登录 才可以下载或查看,没有帐号?注册

7

主题

69

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1090
威望
612
贡献
308
兑换币
214
注册时间
2012-3-10
在线时间
85 小时
毕业学校
孟坝中学
2#
 楼主| 发表于 2013-3-31 20:12:09 | 只看该作者
蓝牙已经配对成功了。。。
回复

使用道具 举报

21

主题

892

帖子

0

精华

常驻嘉宾

爱板者

Rank: 8Rank: 8

积分
3857

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

威望
1833
贡献
1048
兑换币
736
注册时间
2012-12-4
在线时间
488 小时
3#
发表于 2013-3-31 21:13:52 | 只看该作者
协议呢 按照协议发了吗 我以前也把蓝牙配对成功了 可是我不知道协议
回复

使用道具 举报

1

主题

2067

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5124

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
2752
贡献
898
兑换币
59
注册时间
2012-12-8
在线时间
737 小时
4#
发表于 2013-3-31 21:18:53 | 只看该作者
不懂蓝牙
回复

使用道具 举报

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30566

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章优秀版主奖章资源大师奖章

威望
19719
贡献
7191
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
5#
发表于 2013-3-31 23:59:28 | 只看该作者
鼠标钛合金滑轮已坏。
回复

使用道具 举报

7

主题

69

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1090
威望
612
贡献
308
兑换币
214
注册时间
2012-3-10
在线时间
85 小时
毕业学校
孟坝中学
6#
 楼主| 发表于 2013-4-1 09:11:23 | 只看该作者
mxj1005071012 发表于 2013-3-31 21:13
协议呢 按照协议发了吗 我以前也把蓝牙配对成功了 可是我不知道协议

怎么个协议法???
回复

使用道具 举报

1

主题

2067

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5124

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
2752
贡献
898
兑换币
59
注册时间
2012-12-8
在线时间
737 小时
7#
发表于 2013-4-1 11:07:44 | 只看该作者

RE: 有关蓝牙的

^蒲公英@约定_ 发表于 2013-4-1 09:11
怎么个协议法???

应该是蓝牙通信协议,网上能查到
回复

使用道具 举报

7

主题

69

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1090
威望
612
贡献
308
兑换币
214
注册时间
2012-3-10
在线时间
85 小时
毕业学校
孟坝中学
8#
 楼主| 发表于 2013-4-1 11:39:52 | 只看该作者
是这个嘛

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

7

主题

69

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1090
威望
612
贡献
308
兑换币
214
注册时间
2012-3-10
在线时间
85 小时
毕业学校
孟坝中学
9#
 楼主| 发表于 2013-4-1 12:22:00 | 只看该作者
我用的是串口通信,不需要啥协议的吧
回复

使用道具 举报

21

主题

892

帖子

0

精华

常驻嘉宾

爱板者

Rank: 8Rank: 8

积分
3857

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

威望
1833
贡献
1048
兑换币
736
注册时间
2012-12-4
在线时间
488 小时
10#
发表于 2013-4-1 12:32:36 | 只看该作者
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-8 01:40 , Processed in 0.052028 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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