智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4294|回复: 14
打印 上一主题 下一主题

摄像头采集程序

  [复制链接]

2

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
威望
273
贡献
75
兑换币
0
注册时间
2012-2-7
在线时间
46 小时
毕业学校
西南民族大学
跳转到指定楼层
1#
发表于 2012-3-4 21:17:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
#include <hidef.h>      
#include <MC9S12XS128.h>
/*************宏定义****************************/
#define   uint          unsigned int
#define   uchar         unsigned char
#define   LINE_MAX      100              // 每行采集的点数,即列数
#define   ROW_MAX       55          // 采集到的行数
/*************变量定义**************************/
uchar a,b,c,temp;
uchar Image[ROW_MAX][LINE_MAX];//图像数据。
uchar row;                            //图像数组行数
uint  row_count;
uchar i;
uchar j;
uchar counter;
/***************变量及数组初始化****************/
void InitVariable(void)
{
   row=0;
   row_count=0;
   counter=0;
}
/*************主频设置**************************/
void Busclock(void)   //72MHz
{   
   CLKSEL=0x00;
   PLLCTL_PLLON=1;
   SYNR=0xC0 | 0x08;  
   REFDV=0xC0 | 0x01;
   POSTDIV=0x00;     
   _asm(nop);         
   _asm(nop);
   while(!(CRGFLG_LOCK==1));   
   CLKSEL_PLLSEL =1;      
}
/*************定时器初始化**********************/
void InitEct(void)
{
  TCTL4=0x09;   //通道上升沿触发,通道下降沿触发
  TSCR1=0x80;
  TIE_C1I = 1;  //场中断使能  开
  TIE_C0I = 0;  //行中断使能  关
}
/*************串口初始化*************************/
void InitSci(void)
{
   SCI0CR1 =0x00;
   SCI0CR2 =0x2c;    //enable Receive Full Interrupt,RX enable,Tx enable      
   SCI0BD  =0x1D5;   //SCI0BDL=busclk/(16*SCI0BDL)
                     //busclk  8MHz, 9600bps,SCI0BD=0x34
                     //busclk 16MHz, 9600bps,SCI0BD=0x68
                     //busclk 24MHz, 9600bps,SCI0BD=0x9C
                     //busclk 32MHz, 9600bps,SCI0BD=0xD0  
                     //busclk 40MHz, 9600bps,SCI0BD=0x106
                     //busclk 48MHz, 9600bps,SCI0BD=0x138
                     //busclk 56MHz, 9600bps,SCI0BD=0x16D
                     //busclk 64MHz, 9600bps,SCI0BD=0x1A0  
                     //busclk 72MHz, 9600bps,SCI0BD=0x1D5
                    
                     
}
/**************发射端程序************************/
void SciTx(uchar text)
{
   while (!(SCI0SR1&0x80));  
   SCI0DRH=0;
   SCI0DRL=text;
}
/*************I/O初始化*************************/
void InitIoport(void)
{
  DDRA=0x00;//A口为输入口
  DDRB=0xFF;//B口为输出口在指示中心位置
  DDRM_DDRM0 = 1;
  DDRM_DDRM1 = 0;
  PTM_PTM0=0;     
   asm(nop);
   asm(nop);
}
/**************延时******************************/
void Delay(int delay)
{ int i,j;
for(i=0;i<delay;i++)
{for(j=0;j<500;j++)
asm nop;
}
}
/**************求绝对值差************************/
uchar  PlusAbsolute(uchar m,uchar n)
{
  if(m>n)
  n=m-n;
  else
  n=n-m;
  return n;
}
/**************主函数*****************************/
void main()
{
   DisableInterrupts;
   Busclock();
   InitEct();
   InitSci();
   InitVariable();
   InitIoport();
   EnableInterrupts;
for(;;){}
   Delay(4000);  
  /*  for(i=0;i<ROW_MAX;i++)
    {
       for(j=0;j<LINE_MAX;j++)                                                                     
       {
          if(Image[j]<0x70)
         Image[j]=0xFF;
          else Image[j]=0x0;
       }
     } */  
      
    for(i=ROW_MAX-1;i>0;i--)
       for(j=LINE_MAX-20-1;j>19;j--)                                                                     
         SciTx(Image[j]);  
   
}
/**************行中断采集*************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 Port0_interrupt(void)
{
  TFLG1=0x01; //清除行中断标志
  row_count++;
  if(row_count%3==0)
  {
    for(i=0;i<41;i++)
    asm nop;
    for(i=0;i<LINE_MAX;i++)
      Image[row]=PORTA;   
   row++;
   if(row==ROW_MAX)
     TIE_C0I = 0;
  }
}
/**********场中断处理******************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 9 Port1_interrupt(void)
{
  TFLG1=0x02;
  TIE_C0I = 1; //开行中断
  row = 0;
row_count=0;
// if(counter==1)
//   TIE=0;  
// counter++;
}

0

主题

50

帖子

0

精华

高级会员

Rank: 4

积分
566
威望
337
贡献
151
兑换币
89
注册时间
2012-3-19
在线时间
39 小时
毕业学校
乐都一中
15#
发表于 2013-4-28 04:01:41 | 只看该作者
回复 支持 反对

使用道具 举报

68

主题

1086

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4578

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

QQ
威望
2515
贡献
1213
兑换币
1382
注册时间
2012-9-19
在线时间
425 小时
14#
发表于 2013-3-28 20:32:37 | 只看该作者
看看
回复 支持 反对

使用道具 举报

27

主题

441

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2351

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

威望
1251
贡献
584
兑换币
296
注册时间
2012-5-24
在线时间
258 小时
毕业学校
南昌航空大学
13#
发表于 2012-11-11 18:18:02 | 只看该作者
还是用来调节摄像头采集到的所有点的中心点所在的点数????请赐教!!
回复 支持 反对

使用道具 举报

27

主题

441

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2351

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

威望
1251
贡献
584
兑换币
296
注册时间
2012-5-24
在线时间
258 小时
毕业学校
南昌航空大学
12#
发表于 2012-11-11 18:13:19 | 只看该作者
跑之前不得静止几秒么?
,好像是刚开始采集的不是视频信号,需要延时一会儿,不知道我说得到对不对楼主??
回复 支持 反对

使用道具 举报

5

主题

560

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3867

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

威望
2373
贡献
182
兑换币
711
注册时间
2012-4-15
在线时间
656 小时
11#
发表于 2012-5-13 15:31:18 | 只看该作者
回复 支持 反对

使用道具 举报

5

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
829
威望
483
贡献
204
兑换币
45
注册时间
2012-3-6
在线时间
71 小时
10#
发表于 2012-5-7 20:02:07 | 只看该作者
for(i=0;i<LINE_MAX;i++)

      Image[row]=PORTA;   
这样行吗,,不是二维数组吗
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
威望
262
贡献
67
兑换币
0
注册时间
2012-1-13
在线时间
28 小时
9#
发表于 2012-4-26 21:04:14 | 只看该作者
这个程序有问题呀,楼主的这句Image[row]=PORTA; 没有什么意义吧???请楼主指教!!!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
384
威望
308
贡献
68
兑换币
0
注册时间
2012-4-1
在线时间
4 小时
毕业学校
内蒙古科技大学
8#
发表于 2012-4-2 21:24:53 | 只看该作者
HRain 发表于 2012-3-6 21:25
楼主 你为什么在 开始扫描前加个延时啊,有什么妙处没?

跑之前不得静止几秒么?
回复 支持 反对

使用道具 举报

5

主题

243

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
威望
722
贡献
276
兑换币
14
注册时间
2012-2-1
在线时间
120 小时
毕业学校
武汉理工
7#
发表于 2012-3-15 23:44:00 | 只看该作者
表示怀疑~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 04:21 , Processed in 0.054835 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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