智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2793|回复: 8
打印 上一主题 下一主题

求助!我是新手,刚看了一个图像采集程序

[复制链接]

4

主题

29

帖子

0

精华

高级会员

Rank: 4

积分
688
威望
458
贡献
126
兑换币
0
注册时间
2011-4-8
在线时间
52 小时
跳转到指定楼层
1#
发表于 2012-5-23 15:35:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚看了一个图像采集程序想用串口显示一下,不知怎么接线,基友们帮忙看下。我用的是OV7620,单片机xs128maa。请问VSYNC 和HREF分别接在单片机哪个引脚?还有串口的RXD接哪?谢谢!
复制搜索


复制搜索
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include <MC9S12XS128.h>
#define ROW 17
#define COLUMN 120
#define ROW_START 11  
#define ROW_MAX   280
#define THRESHOLD  0x45
unsigned char Buffer[ROW][COLUMN];
unsigned char Buffer_Temp[ROW][COLUMN];
unsigned char SampleFlag=0;  
unsigned char Interval;
unsigned int m=0;
unsigned int n=0;
unsigned int Line=0;

/***************************************************
** 函数名称: PLL_Init
** 功能描述: 时钟初始化函数
** 说明:
****************************************************/
void PLL_Init(void)   
{                    
   CLKSEL=0x00;  //48mhz
   PLLCTL_PLLON=1;
   SYNR=0XC0 | 0X05;
   REFDV=0X80 | 0X01;
   POSTDIV=0X00;
   _asm(nop);
   _asm(nop);
   while(0==CRGFLG_LOCK);//锁相环锁定
   CLKSEL_PLLSEL=1;//选定外部时钟  
}
/***************************************************
** 函数名称: TIM_Init
** 功能描述: 行场中断初始化函数
** 说明:
****************************************************/
void TIM_Init(void)
{
   TIOS=0x00;          //外部输入捕捉 0,1 通道  
   TCTL4=0x09;         //通道0上升沿触发,通道 1 下降沿触发
   TSCR1=0x80;         //使能
   TIE=0x03;           //通道 0,1 中断使能
   TFLG1=0xFF;         //清中断标志位
}
/***************************************************
** 函数名称: IO_Init
** 功能描述: IO口初始化函数
** 说明:
****************************************************/
void IO_Init(void)
{
    DDRA=0X00;
}
/***************************************************
** 函数名称: SCI_Init
** 功能描述: 串口初始化函数
** 说明:
****************************************************/
void SCI_Init()
{
    SCI0BD=312;         //9600bps  Baud Rate=BusClock/(16*SCIBD)
    SCI0CR1=0;         //正常8位模式,无奇偶校验
    SCI0CR2=0X2C;      //发送允许   接受中断允许  
}
/**************************************************
** 函数名称: SCI_Write
** 功能描述: 给串行口写一个字符数据
** 输    入: SendChar为写入字符
** 输    出: 无
** 说明:  
***************************************************/
void SCI_Write(unsigned char SendChar)
{
    while (!(SCI0SR1&0x80));
    SCI0DRH=0;
    SCI0DRL=SendChar;
}
/**************************************************
** 函数名称: Image_Binaryzation
** 功能描述: 图像数据二值化
** 输    入: row
** 输    出: 无
** 说明:  
***************************************************/      
void Image_Binaryzation(unsigned int row)  //二值化程序
{
  unsigned char *p_Image;
  unsigned char *q_Image;
  q_Image=&Buffer_Temp[row][0];

  for(p_Image=&Buffer[row][0];p_Image<=&Buffer[row][COLUMN-1];p_Image++)      
    {*(q_Image++)=*p_Image; }  
}
/**************************************************
** 函数名称: Process
** 功能描述: 图像数据处理
** 输    入: 无
** 输    出: 无
** 说明:  
***************************************************/
void Process()
{
  unsigned char i,j;
  for(i=0;i<ROW;i++)
    {
    for(j=0;j<COLUMN;j++)
      {
       if(Buffer_Temp[j]>THRESHOLD)
       SCI_Write('1') ;
       else  SCI_Write('0') ;
      }
    SCI_Write(0x0D);
    SCI_Write(0X0A);
  }
}
/***************************************************
** 函数名称: main
** 功能描述: 主函数
** 说明:
****************************************************/        
void main(void)
{
  /* put your own code here */
  PLL_Init();
  TIM_Init();
  IO_Init();
  SCI_Init();
EnableInterrupts;
  for(;;)
  {
  Process();

  //  _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
/**************************************************
** 函数名称: 中断处理函数
** 功能描述: 行中断处理函数
** 输    入: 无
** 输    出: 无
** 说明:  
***************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8  PT0_Interrupt()
{
  TFLG1_C0F=1;
  Line++;     
  if ( SampleFlag == 0 || Line<ROW_START ||  Line>ROW_MAX )
  {
    return;
   }      

  if(Line<=132)                Interval=12;                                          
  else if(Line>132&&Line<=200) Interval=8;
  else if(Line>200&&Line<=248) Interval=6;
  else                         Interval=4;        

  if(Line%Interval==0)
  {
  Buffer[m][0]=PORTA;  
  Buffer[m][1]=PORTA;  
  Buffer[m][2]=PORTA;  
  Buffer[m][3]=PORTA;  
  Buffer[m][4]=PORTA;
  Buffer[m][5]=PORTA;
  Buffer[m][6]=PORTA;  
  Buffer[m][7]=PORTA;  
  Buffer[m][8]=PORTA;  
  Buffer[m][9]=PORTA;  
  Buffer[m][10]=PORTA;
  Buffer[m][11]=PORTA;
  Buffer[m][12]=PORTA;
  Buffer[m][13]=PORTA;
  Buffer[m][14]=PORTA;
  Buffer[m][15]=PORTA;
  Buffer[m][16]=PORTA;
  Buffer[m][17]=PORTA;
  Buffer[m][18]=PORTA;
  Buffer[m][19]=PORTA;
  Buffer[m][20]=PORTA;
  Buffer[m][21]=PORTA;
  Buffer[m][22]=PORTA;
  Buffer[m][23]=PORTA;
  Buffer[m][24]=PORTA;
  Buffer[m][25]=PORTA;
  Buffer[m][26]=PORTA;
  Buffer[m][27]=PORTA;
  Buffer[m][28]=PORTA;
  Buffer[m][29]=PORTA;
  Buffer[m][30]=PORTA;
  Buffer[m][31]=PORTA;
  Buffer[m][32]=PORTA;
  Buffer[m][33]=PORTA;
  Buffer[m][34]=PORTA;
  Buffer[m][35]=PORTA;
  Buffer[m][36]=PORTA;
  Buffer[m][37]=PORTA;
  Buffer[m][38]=PORTA;
  Buffer[m][39]=PORTA;
  Buffer[m][40]=PORTA;
  Buffer[m][41]=PORTA;
  Buffer[m][42]=PORTA;
  Buffer[m][43]=PORTA;
  Buffer[m][44]=PORTA;
  Buffer[m][45]=PORTA;
  Buffer[m][46]=PORTA;
  Buffer[m][47]=PORTA;
  Buffer[m][48]=PORTA;
  Buffer[m][49]=PORTA;
  Buffer[m][50]=PORTA;
  Buffer[m][51]=PORTA;
  Buffer[m][52]=PORTA;
  Buffer[m][53]=PORTA;
  Buffer[m][54]=PORTA;
  Buffer[m][55]=PORTA;
  Buffer[m][56]=PORTA;
  Buffer[m][57]=PORTA;
  Buffer[m][58]=PORTA;
  Buffer[m][59]=PORTA;
  Buffer[m][60]=PORTA;
  Buffer[m][61]=PORTA;
  Buffer[m][62]=PORTA;
  Buffer[m][63]=PORTA;
  Buffer[m][64]=PORTA;
  Buffer[m][65]=PORTA;
  Buffer[m][66]=PORTA;
  Buffer[m][67]=PORTA;
  Buffer[m][68]=PORTA;
  Buffer[m][69]=PORTA;
  Buffer[m][70] = PORTA;
Buffer[m][71] = PORTA;
Buffer[m][72] = PORTA;
Buffer[m][73] = PORTA;
Buffer[m][74] = PORTA;
Buffer[m][75] = PORTA;
Buffer[m][76] = PORTA;
Buffer[m][77] = PORTA;
Buffer[m][78] = PORTA;
Buffer[m][79] = PORTA;
Buffer[m][80] = PORTA;
Buffer[m][81] = PORTA;
Buffer[m][82] = PORTA;
Buffer[m][83] = PORTA;
Buffer[m][84] = PORTA;
Buffer[m][85] = PORTA;
Buffer[m][86] = PORTA;
Buffer[m][87] = PORTA;
Buffer[m][88] = PORTA;
Buffer[m][89] = PORTA;
Buffer[m][90] = PORTA;
Buffer[m][91] = PORTA;
Buffer[m][92] = PORTA;
Buffer[m][93] = PORTA;
Buffer[m][94] = PORTA;
Buffer[m][95] = PORTA;
Buffer[m][96] = PORTA;
Buffer[m][97] = PORTA;
Buffer[m][98] = PORTA;
Buffer[m][99] = PORTA;
Buffer[m][100] = PORTA;
Buffer[m][101] = PORTA;
Buffer[m][102] = PORTA;
Buffer[m][103] = PORTA;
Buffer[m][104] = PORTA;
Buffer[m][105] = PORTA;
Buffer[m][106] = PORTA;
Buffer[m][107] = PORTA;
Buffer[m][108] = PORTA;
Buffer[m][109] = PORTA;
Buffer[m][110] = PORTA;
Buffer[m][111] = PORTA;
Buffer[m][112] = PORTA;
Buffer[m][113] = PORTA;
Buffer[m][114] = PORTA;
Buffer[m][115] = PORTA;
Buffer[m][116] = PORTA;
Buffer[m][117] = PORTA;
Buffer[m][118] = PORTA;
Buffer[m][119] = PORTA;  
  m++;
  }
  Image_Binaryzation(m);
}
/**************************************************
** 函数名称: 中断处理函数
** 功能描述: 场中断处理函数
** 输    入: 无
** 输    出: 无
** 说明:  
***************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED  
void interrupt 9 PT1_Interrupt()
{
  TFLG1_C1F=1;
  TFLG1_C0F=1;
  m=0;         
  Line=0;      
  SampleFlag=1;
}

31

主题

1010

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4800

热心会员奖章优秀会员奖章活跃会员奖章论坛元老奖章

威望
3250
贡献
986
兑换币
110
注册时间
2012-2-11
在线时间
282 小时
2#
发表于 2012-5-23 17:27:44 | 只看该作者
我是激光的,帮你顶一下
回复 支持 反对

使用道具 举报

4

主题

487

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2981

活跃会员奖章优秀会员奖章

QQ
威望
2216
贡献
489
兑换币
53
注册时间
2010-11-10
在线时间
138 小时
3#
发表于 2012-5-23 17:51:50 | 只看该作者
大家的程序很像啊
VSYNC 和HREF分别接在单片机的PT1和PT0  串口的RXD接单片机的TXD0/TXD1
根据程序看 应该接TXD0
但这样只能实现单片机向电脑串口的发送 无法实现串口通信
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
392
威望
265
贡献
55
兑换币
0
注册时间
2012-2-6
在线时间
36 小时
毕业学校
集美大学
4#
发表于 2012-5-23 18:42:31 | 只看该作者
xinmengwangran 发表于 2012-5-23 17:51
大家的程序很像啊
VSYNC 和HREF分别接在单片机的PT1和PT0  串口的RXD接单片机的TXD0/TXD1
根据程序看 应 ...

那么请问怎么样才能实现串口的通讯呢?
回复 支持 反对

使用道具 举报

4

主题

487

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2981

活跃会员奖章优秀会员奖章

QQ
威望
2216
贡献
489
兑换币
53
注册时间
2010-11-10
在线时间
138 小时
5#
发表于 2012-5-23 20:42:20 | 只看该作者
浅川的草1989 发表于 2012-5-23 18:42
那么请问怎么样才能实现串口的通讯呢?

RXD TXD 都需接
回复 支持 反对

使用道具 举报

4

主题

29

帖子

0

精华

高级会员

Rank: 4

积分
688
威望
458
贡献
126
兑换币
0
注册时间
2011-4-8
在线时间
52 小时
6#
 楼主| 发表于 2012-5-25 18:24:51 | 只看该作者
xinmengwangran 发表于 2012-5-23 20:42
RXD TXD 都需接

试试看,ありがとうございます
复制搜索


复制搜索
回复 支持 反对

使用道具 举报

4

主题

487

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2981

活跃会员奖章优秀会员奖章

QQ
威望
2216
贡献
489
兑换币
53
注册时间
2010-11-10
在线时间
138 小时
7#
发表于 2012-5-25 19:48:54 | 只看该作者
Honanking 发表于 2012-5-25 18:24
试试看,ありがとうございます
复制搜索

回复 支持 反对

使用道具 举报

1

主题

28

帖子

0

精华

高级会员

Rank: 4

积分
855
威望
444
贡献
157
兑换币
26
注册时间
2012-1-7
在线时间
127 小时
8#
发表于 2012-6-20 22:33:32 | 只看该作者
RXD接单片机的S0和S1...
回复 支持 反对

使用道具 举报

12

主题

165

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2023
威望
1069
贡献
584
兑换币
525
注册时间
2012-9-1
在线时间
185 小时
9#
发表于 2012-11-2 21:45:46 | 只看该作者
初学者 路过
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 05:48 , Processed in 0.054003 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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