智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5183|回复: 24
打印 上一主题 下一主题

为什么采集的图片是这个样子呢?

  [复制链接]

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
威望
356
贡献
199
兑换币
203
注册时间
2012-11-4
在线时间
275 小时
跳转到指定楼层
1#
发表于 2013-5-11 21:25:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,请问大神,是什么情况

本帖子中包含更多资源

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

x

7

主题

101

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1915
威望
738
贡献
1031
兑换币
340
注册时间
2013-4-25
在线时间
73 小时
2#
发表于 2013-5-11 21:43:26 | 只看该作者
检查程序吧,要不你把程序发过来看下,数字摄像头?
回复 支持 反对

使用道具 举报

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
威望
356
贡献
199
兑换币
203
注册时间
2012-11-4
在线时间
275 小时
3#
 楼主| 发表于 2013-5-11 21:56:18 | 只看该作者
飞卡搬砖小工 发表于 2013-5-11 21:43
检查程序吧,要不你把程序发过来看下,数字摄像头?

OV7620的摄像头。程序就是DEMOK的源代码。没改。
回复 支持 反对

使用道具 举报

7

主题

101

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1915
威望
738
贡献
1031
兑换币
340
注册时间
2013-4-25
在线时间
73 小时
4#
发表于 2013-5-11 22:04:27 | 只看该作者
时钟啥的没错吧?线连的对不?摄像头正放赛道上,看到赛道?电池电量摄像头供电电压看看?其余想不出了,
回复 支持 反对

使用道具 举报

14

主题

145

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2746
威望
1367
贡献
847
兑换币
878
注册时间
2012-11-22
在线时间
266 小时
毕业学校
三峡大学
5#
发表于 2013-5-12 00:15:28 | 只看该作者
我也和你出过一样的问题,换个上位机试试,我换了上位机就可以看见了
回复 支持 反对

使用道具 举报

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
威望
356
贡献
199
兑换币
203
注册时间
2012-11-4
在线时间
275 小时
6#
 楼主| 发表于 2013-5-12 16:49:04 | 只看该作者
飞卡搬砖小工 发表于 2013-5-11 22:04
时钟啥的没错吧?线连的对不?摄像头正放赛道上,看到赛道?电池电量摄像头供电电压看看?其余想不出了,

/************************************************************************************
**                          OV7620 ImageAcquisition                              ****
**                        (c) Copyright 2010-2011, DEMOK                         ****
**                              All Rights Reserved                              ****
**                                                                               ****
**                                    V1.1.1.3                                   ****
**                                                                               ****
**   实验硬件平台:  岱默科技DEMOK  OV7620                                       ****
**   实 验上位机 :  DemokTool_1124                                              ****
**   上 位 机设置:  波特率115200   行40  列120                                  ****
**   修 改 时 间 :  2012-12-29                                                  ****
**   DEMOK淘宝店 :  http://demok.taobao.com                                     ****
*************************************************************************************/


#include <hidef.h>          /* common defines and macros */
#include "derivative.h"     /* derivative-specific definitions */
#include <MC9S12XS128.h>


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


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

unsigned char VSYN_C=0;         //场数统计值
unsigned int Line_C=0;          //行数统计值
unsigned char m = 0;

unsigned char  Interval;        //采集有效行数间隔
unsigned char  THRESHOLD=0x45;  //黑白二值化图像阈值(经验值,随环境光变换而变化)


/***************************************************
** 函数名称: PLL_Init
** 功能描述: 时钟初始化函数
** 说明:     总线时钟选定24M
****************************************************/
void PLL_Init(void)
{
  CLKSEL=0x00; //24mhz
  SYNR=0XC0 | 0X05;
  REFDV=0XC0 | 0X03;
  PLLCTL_PLLON=1;
  POSTDIV=0X00;
  asm(nop);
  asm(nop);
  while(0==CRGFLG_LOCK); //锁相环锁定
  CLKSEL_PLLSEL=1; //选定PLL时钟
}

/***************************************************
** 函数名称: TIM_Init
** 功能描述: 行场中断初始化函数
** 说明:     行中断上升沿触发  场中断下降沿触发
****************************************************/
void TIM_Init(void)
{
TIOS =0x00;        //定时器通道0,1 为输入捕捉
TSCR1=0x80;        //定时器使能
TCTL4=0x09;        //通道0 捕捉上升沿通道1 捕捉下降沿
TIE=0x03;          //通道0,1 中断使能
TFLG1=0xFF;        //清中断标志位
}

/***************************************************
** 函数名称: SCI0_Init
** 功能描述: 串口1初始化函数
** 说明:     波特率115200  串口SCI0
****************************************************/
void SCI0_Init()
{
SCI0BDL = (byte)((24000000 /* OSC freq /2*/) / 115200 /* baud rate */ / 16 /*factor*/);
SCI0CR1 = 0X00;                                      /*normal,no parity*/
SCI0CR2 = 0X0C;                                      /*RIE=1,TE=1,RE=1, */
}


/*void Image_Binaryzation(unsigned int row)  ////双数组模式 图像处理时选用
{
  unsigned char *p_Image;
  unsigned char *q_Image;
  q_Image=&Buffer[row][0];
  
  for(p_Image=&Image_Data[row][0];p_Image<=&Image_Data[row][COLUMN-1];p_Image++)      
    {*(q_Image++)=*p_Image; }  
}*/



/**************************************************
** 函数名称: 串口发射端程序
** 功能描述: 发送图像采集像素到DEMOKtool
** 说明:    在发送图像数据前要按照协议发送0XFF图像头
***************************************************/
void SCI0_Transmit(void)
{
  byte temp;
  unsigned char i,j;
  temp = SCI0SR1; //清零
  SCI0DRH = 0;
  
  
  SCI0DRL = 0XFF;             //图像头0XFF
  while (!(SCI0SR1&0x80));
  
  for(i = 0;i< ROW;i++)
  {
   
    for(j = 0;j < COLUMN ;j++)
    {
    //---------------发送二值化数据到SSCOM---------------------//
     //if(Image_Data[j]>THRESHOLD && Image_Data[j+1]>THRESHOLD && Image_Data[j-1]>THRESHOLD)  SCI0DRL = 0x30;
     //if(Image_Data[j]>THRESHOLD)  SCI0DRL = 0x30;
     // else SCI0DRL = 0X31;    //黑线
    //---------------发送二值化数据到SSCOM---------------------//
   
    //---------------发送像素数据到DEMOKTOOL---------------------//
      if(Image_Data[j] == 0xFF)  Image_Data[j] = 0xFE;  //若为图像头 自减
      SCI0DRL =  Image_Data[j];
      while (!(SCI0SR1&0x80));
     //---------------发送像素数据到DEMOKTOOL---------------------//
    }
  
  //SCI0DRL = 0X0A;           //回车
  //while (!(SCI0SR1&0x80));
  //SCI0DRL = 0X0D;           //换行
  //while (!(SCI0SR1&0x80));
  }
}


/***************************************************
** 函数名称: main
** 功能描述: 主函数
** 说明:
****************************************************/  
void main(void)
{
/* put your own code here */

  DisableInterrupts;
  DDRA = 0X00;
  DDRB = 0xFF;
  PORTB= 0xFF;
  PLL_Init();
  SCI0_Init();
  TIM_Init();

  EnableInterrupts;
  for(;;)
  {
  if(VSYN_C)
  {
     
    SCI0_Transmit();
   
    VSYN_C=0;
    EnableInterrupts;
  }
  PORTB = ~PORTB;    //指示程序运行

  //_FEED_COP(); /* feeds the dog */
  } /* loop forever */
/* please make sure that you never leave main */
}

//---------------------中断定义---------------------
#pragma CODE_SEG NON_BANKED

/**************************************************
** 函数名称: 中断处理函数
** 功能描述: 行中断处理函数
** 输    入: 无
** 输    出: 无
** 说明:  
***************************************************/
interrupt 8 void HREF_Count(void)
{
  TFLG1_C0F = 1;
  m++;
  if ( m<6 || m>240 )      
  {
    return;//判断是否从新的一场开始
  }

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

}

/**************************************************
** 函数名称: 中断处理函数
** 功能描述: 场中断处理函数
** 输    入: 无
** 输    出: 无
** 说明:  
***************************************************/
interrupt 9 void VSYN_Interrupt(void)
{
  TFLG1_C1F = 1; //清场中断
  TFLG1_C0F = 1; //清行中断

  Line_C = 0; //行计数器
  VSYN_C = ++VSYN_C;
   
  
}

#pragma CODE_SEG DEFAULT
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
QQ
威望
263
贡献
138
兑换币
151
注册时间
2012-12-2
在线时间
47 小时
7#
发表于 2013-5-12 17:23:36 | 只看该作者
摄像头坏了。
回复 支持 反对

使用道具 举报

7

主题

101

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1915
威望
738
贡献
1031
兑换币
340
注册时间
2013-4-25
在线时间
73 小时
8#
发表于 2013-5-13 14:43:52 | 只看该作者
你改改m和line_c的值试试,这程序如果是原版,m的值应该是对的,他应该都是测好的,你尝试改下,看效果吧,
回复 支持 反对

使用道具 举报

7

主题

101

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1915
威望
738
贡献
1031
兑换币
340
注册时间
2013-4-25
在线时间
73 小时
9#
发表于 2013-5-13 14:44:48 | 只看该作者
车放赛道上进行调试,让程序跑一遍,看下程序执行对不对
回复 支持 反对

使用道具 举报

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
威望
356
贡献
199
兑换币
203
注册时间
2012-11-4
在线时间
275 小时
10#
 楼主| 发表于 2013-5-14 10:23:07 | 只看该作者
飞卡搬砖小工 发表于 2013-5-13 14:44
车放赛道上进行调试,让程序跑一遍,看下程序执行对不对

我是用最小系统版烧这个程序来调试它的那个前瞻。主板上面的中断接口不是用的T0,T1口而是H0,1口
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 14:39 , Processed in 0.072714 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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