智能车制作

 找回密码
 注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: 朝廷
打印 上一主题 下一主题

摄像头调试问题!!!!!!!!!!!!

[复制链接]

4

主题

97

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3035
威望
1488
贡献
917
兑换币
931
注册时间
2014-11-9
在线时间
315 小时
毕业学校
南昌工程学院
11#
 楼主| 发表于 2015-1-31 13:49:38 | 只看该作者
╭ァ简简单单、 发表于 2015-1-31 13:00
那就用串口发送1  0试试看看是不是空白的

怎么发送,难道用串口助手发送数据,然后在上位机上显示,这样不行啊,两者同时只能用一个
回复

使用道具 举报

4

主题

97

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3035
威望
1488
贡献
917
兑换币
931
注册时间
2014-11-9
在线时间
315 小时
毕业学校
南昌工程学院
12#
 楼主| 发表于 2015-1-31 13:55:39 | 只看该作者
朝廷 发表于 2015-1-31 12:37
但是上位机上一片空白

这是我的程序
/************************************************************
OV7620测试代码    基于MC9S12XS128

接线关系:
PA0~PA7--------Y0~Y7   数据
PH0------------VSY     场同步  
PH1------------HRE     行同步
B0-------------SCL     SCCB通信时钟
B1-------------SDA     SCCB通信数据
如果不用IIC通信,B0、B1可以不接。


淘宝店:http://sogadz.taobao.com
************************************************************/
/*---------------------------------------------------------*/
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define  BUS_CLOCK                   24000000           //总线频率
#define  OSC_CLOCK                   16000000           //晶振频率
#define  BAUD 115200                    //串口波特率

#define ROW     40        //定义图像行数:40行
#define COLUMN  120       //定义图像列数:120列

unsigned char VSYN_counter=0;       //场计数值
unsigned char HREF_counter=0;       //行计数值

unsigned char Data[ROW][COLUMN];    //图像数组

unsigned int line=0;
unsigned char  THRESHOLD=65;  //黑白二值化图像门槛值值(随环境光变换而变化)


/*************************************************************/
/*                      初始化锁相环                         */
/*************************************************************/
void INIT_PLL(void)
{
    CLKSEL &= 0x7f;       //设置OSCCLK作为系统时钟
    PLLCTL &= 0x8F;       //禁止锁相环

    //PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1), fbus=PLLCLK/2
    #if(BUS_CLOCK == 120000000)
        SYNR = 0xcd;
    #elif(BUS_CLOCK == 104000000)
      SYNR = 0xcc;
    #elif(BUS_CLOCK == 96000000)
      SYNR = 0xcb;
    #elif(BUS_CLOCK == 88000000)
      SYNR = 0xca;
    #elif(BUS_CLOCK == 80000000)
      SYNR = 0xc9;
    #elif(BUS_CLOCK == 72000000)
      SYNR = 0xc8;
    #elif(BUS_CLOCK == 64000000)
      SYNR = 0xc7;
    #elif(BUS_CLOCK == 56000000)
      SYNR = 0xc6;
    #elif(BUS_CLOCK == 48000000)
      SYNR = 0xc5;
    #elif(BUS_CLOCK == 40000000)
      SYNR = 0x44;
    #elif(BUS_CLOCK == 32000000)
      SYNR = 0x43;     
    #elif(BUS_CLOCK == 24000000)
      SYNR = 0x42;
    #elif(BUS_CLOCK == 16000000)
      SYNR = 0x01;
   #endif

    REFDV = 0x81;
    PLLCTL |=0x70;  //使能锁相环
    asm NOP;
    asm NOP;
    while(!(CRGFLG&0x08)); //PLLCLK锁定
    CLKSEL |= 0x80;        //设置PLLCLK为系统时钟
}

/*************************************************************/
/*                        初始化SCI                          */
/*************************************************************/
void INIT_SCI(void)
{

  SCI0BD = BUS_CLOCK/16/BAUD;   //设置SCI0波特率为9600
  SCI0CR1 = 0x00;       //设置SCI0为正常模式,八位数据位,无奇偶校验
  SCI0CR2 = 0x08;       //允许发送数据,禁止中断功能
}

/*************************************************************/
/*                       串口发送函数                        */
/*************************************************************/
void SCI_send(unsigned char data)
{
  while(!SCI0SR1_TDRE);       //等待发送数据寄存器(缓冲器)为空
  SCI0DRL = data;
}

/*************************************************************/
/*                       初始化按键                          */
/*************************************************************/
void init_PH(void)
{
     PPSH = 0x02;                      //PTH1上升沿触发中断,PTH0下降沿触发中断
     PIFH = 0xff;                                        //对PIFH的每一位写1来清除标志位;
     PIEH = 0x03;                      //中断使能寄存器;
     DDRH = 0x00;         //输入
}


/*************************************************************/
/*                       串口发送数据                        */
/*************************************************************/
void send_data(void)
{
  unsigned char i,j;
  for(i = 0;i< ROW;i++)
  {
    for(j = 0;j < COLUMN ;j++)
    {
        if(Data[j]>THRESHOLD)
            SCI_send('0');
        else
            SCI_send('1');        //判断为黑色
    }
    SCI_send('\r');
    SCI_send('\n');      //换行
  }
  SCI_send('\r');
  SCI_send('\n');      //换行
  SCI_send('\r');
  SCI_send('\n');      //换行
  SCI_send('\r');
  SCI_send('\n');      //换行

}

/*************************************************************/
/*                     H口中断函数                           */
/*************************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void PTH_inter(void)
{
   if((PIFH&0x01)==0x01)     //判断中断标志,场中断信号
   {
      PIFH = 0x03;     //清除两个中断标志
      HREF_counter=0;
      VSYN_counter+=1;
      line=0;
   }

   if((PIFH&0x02)==0x02)   //判断中断标志,行中断信号
   {
      PIFH = 0x02;     //清除行中断标志
      line++;
      if (line<6 || line>240 )      
      {
        return;   
      }
      if(line%6==0)    //每个6行采集一行。
      {
          Data[HREF_counter][0] = PORTA;
          Data[HREF_counter][1] = PORTA;
          Data[HREF_counter][2] = PORTA;
          Data[HREF_counter][3] = PORTA;
          Data[HREF_counter][4] = PORTA;
          Data[HREF_counter][5] = PORTA;
          Data[HREF_counter][6] = PORTA;
          Data[HREF_counter][7] = PORTA;
          Data[HREF_counter][8] = PORTA;
          Data[HREF_counter][9] = PORTA;
          Data[HREF_counter][10] = PORTA;
          Data[HREF_counter][11] = PORTA;
          Data[HREF_counter][12] = PORTA;
          Data[HREF_counter][13] = PORTA;
          Data[HREF_counter][14] = PORTA;
          Data[HREF_counter][15] = PORTA;
          Data[HREF_counter][16] = PORTA;
          Data[HREF_counter][17] = PORTA;
          Data[HREF_counter][18] = PORTA;
          Data[HREF_counter][19] = PORTA;
          Data[HREF_counter][20] = PORTA;
          Data[HREF_counter][21] = PORTA;
          Data[HREF_counter][22] = PORTA;
          Data[HREF_counter][23] = PORTA;
          Data[HREF_counter][24] = PORTA;
          Data[HREF_counter][25] = PORTA;
          Data[HREF_counter][26] = PORTA;
          Data[HREF_counter][27] = PORTA;
          Data[HREF_counter][28] = PORTA;
          Data[HREF_counter][29] = PORTA;
          Data[HREF_counter][30] = PORTA;
          Data[HREF_counter][31] = PORTA;
          Data[HREF_counter][32] = PORTA;
          Data[HREF_counter][33] = PORTA;
          Data[HREF_counter][34] = PORTA;
          Data[HREF_counter][35] = PORTA;
          Data[HREF_counter][36] = PORTA;
          Data[HREF_counter][37] = PORTA;
          Data[HREF_counter][38] = PORTA;
          Data[HREF_counter][39] = PORTA;
          Data[HREF_counter][40] = PORTA;
          Data[HREF_counter][41] = PORTA;
          Data[HREF_counter][42] = PORTA;
          Data[HREF_counter][43] = PORTA;
          Data[HREF_counter][44] = PORTA;
          Data[HREF_counter][45] = PORTA;
          Data[HREF_counter][46] = PORTA;
          Data[HREF_counter][47] = PORTA;
          Data[HREF_counter][48] = PORTA;
          Data[HREF_counter][49] = PORTA;
          Data[HREF_counter][50] = PORTA;
          Data[HREF_counter][51] = PORTA;
          Data[HREF_counter][52] = PORTA;
          Data[HREF_counter][53] = PORTA;
          Data[HREF_counter][54] = PORTA;
          Data[HREF_counter][55] = PORTA;
          Data[HREF_counter][56] = PORTA;
          Data[HREF_counter][57] = PORTA;
          Data[HREF_counter][58] = PORTA;
          Data[HREF_counter][59] = PORTA;
          Data[HREF_counter][60] = PORTA;
          Data[HREF_counter][61] = PORTA;
          Data[HREF_counter][62] = PORTA;
          Data[HREF_counter][63] = PORTA;
          Data[HREF_counter][64] = PORTA;
          Data[HREF_counter][65] = PORTA;
          Data[HREF_counter][66] = PORTA;
          Data[HREF_counter][67] = PORTA;
          Data[HREF_counter][68] = PORTA;
          Data[HREF_counter][69] = PORTA;
          Data[HREF_counter][70] = PORTA;
          Data[HREF_counter][71] = PORTA;
          Data[HREF_counter][72] = PORTA;
          Data[HREF_counter][73] = PORTA;
          Data[HREF_counter][74] = PORTA;
          Data[HREF_counter][75] = PORTA;
          Data[HREF_counter][76] = PORTA;
          Data[HREF_counter][77] = PORTA;
          Data[HREF_counter][78] = PORTA;
          Data[HREF_counter][79] = PORTA;
          Data[HREF_counter][80] = PORTA;
          Data[HREF_counter][81] = PORTA;
          Data[HREF_counter][82] = PORTA;
          Data[HREF_counter][83] = PORTA;
          Data[HREF_counter][84] = PORTA;
          Data[HREF_counter][85] = PORTA;
          Data[HREF_counter][86] = PORTA;
          Data[HREF_counter][87] = PORTA;
          Data[HREF_counter][88] = PORTA;
          Data[HREF_counter][89] = PORTA;
          Data[HREF_counter][90] = PORTA;
          Data[HREF_counter][91] = PORTA;
          Data[HREF_counter][92] = PORTA;
          Data[HREF_counter][93] = PORTA;
          Data[HREF_counter][94] = PORTA;
          Data[HREF_counter][95] = PORTA;
          Data[HREF_counter][96] = PORTA;
          Data[HREF_counter][97] = PORTA;
          Data[HREF_counter][98] = PORTA;
          Data[HREF_counter][99] = PORTA;
          Data[HREF_counter][100] = PORTA;
          Data[HREF_counter][101] = PORTA;
          Data[HREF_counter][102] = PORTA;
          Data[HREF_counter][103] = PORTA;
          Data[HREF_counter][104] = PORTA;
          Data[HREF_counter][105] = PORTA;
          Data[HREF_counter][106] = PORTA;
          Data[HREF_counter][107] = PORTA;
          Data[HREF_counter][108] = PORTA;
          Data[HREF_counter][109] = PORTA;
          Data[HREF_counter][110] = PORTA;
          Data[HREF_counter][111] = PORTA;
          Data[HREF_counter][112] = PORTA;
          Data[HREF_counter][113] = PORTA;
          Data[HREF_counter][114] = PORTA;
          Data[HREF_counter][115] = PORTA;
          Data[HREF_counter][116] = PORTA;
          Data[HREF_counter][117] = PORTA;
          Data[HREF_counter][118] = PORTA;
          Data[HREF_counter][119] = PORTA;

          HREF_counter++;
      }
   }



}
#pragma CODE_SEG DEFAULT



/*************************************************************/
/*                         主函数                            */
/*************************************************************/
void main(void)
{
  INIT_PLL();
  INIT_SCI();
  init_PH();
  DDRA=0x00;
        EnableInterrupts;


  for(;;)
  {
      if(VSYN_counter!=0)
      {
          send_data();
          VSYN_counter=0;
      }

  }
}


回复

使用道具 举报

4

主题

372

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1073
QQ
威望
543
贡献
360
兑换币
354
注册时间
2014-7-22
在线时间
85 小时
13#
发表于 2015-1-31 16:07:29 | 只看该作者
问学长
回复

使用道具 举报

4

主题

97

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3035
威望
1488
贡献
917
兑换币
931
注册时间
2014-11-9
在线时间
315 小时
毕业学校
南昌工程学院
14#
 楼主| 发表于 2015-1-31 19:11:13 | 只看该作者
一心一境14 发表于 2015-1-31 16:07
问学长

无语了
回复

使用道具 举报

19

主题

730

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2390
威望
1180
贡献
718
兑换币
762
注册时间
2014-7-14
在线时间
246 小时
15#
发表于 2015-2-8 17:53:50 | 只看该作者
朝廷 发表于 2015-1-31 13:49
怎么发送,难道用串口助手发送数据,然后在上位机上显示,这样不行啊,两者同时只能用一个

自己想吧
回复

使用道具 举报

8

主题

86

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1418
威望
702
贡献
390
兑换币
468
注册时间
2013-11-21
在线时间
163 小时
毕业学校
一中
16#
发表于 2015-3-4 18:23:20 | 只看该作者
应该是的SCI程序中有问题,没有设置起始和结束标志
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 11:29 , Processed in 0.052167 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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