智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4275|回复: 19
打印 上一主题 下一主题

ccd单次曝光程序为啥改写一下会有两种不同结果呢?

  [复制链接]

1

主题

56

帖子

0

精华

高级会员

Rank: 4

积分
743
威望
373
贡献
182
兑换币
220
注册时间
2012-10-16
在线时间
94 小时
毕业学校
安徽理工大学
跳转到指定楼层
1#
发表于 2013-1-12 16:10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
改写部分为for循环部分,见程序最后
byte ADV[128]={0,0};         //声明数组,用于存放采集的线性数值
#define TSL_SI  PORTA_PA0    //定义线性传感器的端口 SI
#define TSL_CLK PORTA_PA1   //定义线性传感器的端口 CLK   
#define BUSCLOCK24M          //根据单片机的总线频率选择相应的宏定义
      //短暂的延时
void Dly_us(byte us);
      //较长延时
void Dly_ms(int ms)
{
   int ii,jj;
   if (ms<1) ms=1;
   for(ii=0;ii<ms;ii++)
     for(jj=0;jj<2000;jj++);    //busclk:32MHz--1ms
     //for(jj=0;jj<5340;jj++);    //busclk:64MHz--1ms         
}
void SetBusCLK_24M(void)
{   
    MMCCTL1=0X00;   
    PKGCR  =0X06;   
    DIRECT =0x00;
    IVBR   =0xFF;   
    ECLKCTL=0xC0;   
    CPMUPROT   =0x26;   //停止保护时钟配置寄存器
    CPMUCLKS_PSTP=0;    //
    CPMUCLKS_PLLSEL=1;  //应用PLL      
    //CPMUSYNR   =nM-1;   //设置分频因子  
    CPMUSYNR   =0x40|23; //设置分频因子
    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 AD_Init(void)
{  
  
    ATDCTL1=0x00;   //7:1-外部触发,65:00-8位精度,4:放电,3210:ch
  ATDCTL2=0x40;   //禁止外部触发, 中断禁止   
  ATDCTL3=0xa0;   //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转   
  ATDCTL4=0x01;   //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]
  ATDCTL5=0x38;   //6:0特殊通道禁止,5:1连续转换 ,4:1多通道轮流采样
  ATDDIEN=0x00;   //禁止数字输入
}
void RD_TSL1(void)
{
  byte i=0,tslp=0;
  TSL_CLK=1;//起始电平高
  TSL_SI=0; //起始电平低
  Dly_us(1); //合理的延时
      
  TSL_CLK=0; //上升沿
  Dly_us(1); //合理延时
  TSL_SI=1;//下降沿
  Dly_us(1); //合理延时
      
  TSL_CLK=1;//上升沿
  Dly_us(1); //合理延时
  TSL_SI=0; //下降沿
  Dly_us(1); //合理延时
  
  for(i=0;i<128;i++)
  {
    TSL_CLK=0;//下降沿   
    Dly_us(3); //合理延时
    while(!ATDSTAT0_SCF);//等待转换结束
    ADV[tslp]=ATDDR0L;  //AD采集
    ++tslp;
    TSL_CLK=1;//上升沿
    Dly_us(3); //合理延时   
  }
  
Dly_us(20);
}
void RD_TSL0(void)
{
  byte i=0;
  TSL_CLK=1;//起始电平高
  TSL_SI=0; //起始电平低
  Dly_us(1); //合理的延时
      
  TSL_CLK=0; //上升沿
  Dly_us(1); //合理延时
  TSL_SI=1;//下降沿
  Dly_us(1); //合理延时
      
  TSL_CLK=1;//上升沿
  Dly_us(1); //合理延时
  TSL_SI=0; //下降沿
  Dly_us(1); //合理延时
  
  for(i=0;i<128;i++)
  {
    TSL_CLK=0;//下降沿   
    Dly_us(3); //合理延时
   
    TSL_CLK=1;//上升沿
    Dly_us(3); //合理延时   
  }
  
   Dly_us(10);
}
   
void SendHex(unsigned char hex) {
  unsigned char temp;
  temp = hex >>4;
  if(temp < 10) {
    SCI_Write(temp + '0');
  } else {
    SCI_Write(temp - 10 + 'A');
  }
  temp = hex & 0x0F;
  if(temp < 10) {
    SCI_Write(temp + '0');
  } else {
    SCI_Write(temp - 10 + 'A');
  }
}
void SendImageData(unsigned char *ImageData) {
    unsigned char i;
    /* Send Data */
    SCI_Write('*');
    SCI_Write('L');
    SCI_Write('D');
    SendHex(0);
    SendHex(0);
    SendHex(0);
    SendHex(0);
    for(i=0; i<128; i++) {
   SendHex(*ImageData++);
    }
    SCI_Write(0);
    SCI_Write('#');
}
void main(void)
{
  /* put your own code here */  

  SetBusCLK_24M();  //总线初始化
  DisableInterrupts;//关闭中断
  //DDRA = 0xff;      //IO口初始化
  //PORTA= 0x00;      //IO口初始化
  DDRA = 0xff;      //IO口初始化
  PORTA= 0x01;      //IO口初始化  
  SCI_Init();      //串口初始化 9600,8,n,1     
  AD_Init();        //AD初始化
  for(;;)                                                          for(;;)            
  {                                                                   {  
     RD_TSL0();                                                         RD_TSL0();                                 
     Dly_ms(10);                                                          Dly_ms(10);
     //SendImageData(ADV);         改写为                       SendImageData(ADV);                              
     RD_TSL1();                                                            RD_TSL1();
     SendImageData(ADV);            改写为                       //SendImageData(ADV);      
  }                                                                      }                        
  /* please make sure that you never leave this function */
}

void Dly_us(byte us)
{
   byte ii;   
   for(ii=0;ii<us;ii++)
   {
      
#ifdef BUSCLOCK24M
      _asm(nop);_asm(nop);_asm(nop);_asm(nop);
      _asm(nop);_asm(nop);_asm(nop);_asm(nop);
      _asm(nop);_asm(nop);_asm(nop);_asm(nop);
      _asm(nop);_asm(nop);_asm(nop);_asm(nop);
      
      _asm(nop);_asm(nop);_asm(nop);_asm(nop);
      _asm(nop);_asm(nop);_asm(nop);_asm(nop);  
#endif
   }         
}

16

主题

1037

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5076

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

威望
1956
贡献
2072
兑换币
679
注册时间
2012-2-24
在线时间
524 小时
2#
发表于 2013-1-12 16:21:55 | 只看该作者
曝光时间很重要,曝光时间越长,采集出来的电压值就越大,在光线暗的时候可以采取适当的增加点曝光时间!
回复 支持 反对

使用道具 举报

1

主题

56

帖子

0

精华

高级会员

Rank: 4

积分
743
威望
373
贡献
182
兑换币
220
注册时间
2012-10-16
在线时间
94 小时
毕业学校
安徽理工大学
3#
 楼主| 发表于 2013-1-12 16:36:49 | 只看该作者
上面的都有曝光时间,同一光照条件下 第一种for循环采到的电压十分低几乎为0
第二种for循环采到的电压却很正常,为什么会这样呢?
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15175

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11098
贡献
1417
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
4#
发表于 2013-1-12 18:35:03 | 只看该作者
第一个 for后把SendImageData(ADV);注释了,所以减少了曝光时间,而第二个没有注释该函数。该函数应该占用了很大时间,所以相对来说就增加了曝光时间,采集到的数据也就比较明亮了。
推荐楼主补充一下线性ccd的基本知识:http://www.znczz.com/thread-114961-1-1.html
回复 支持 反对

使用道具 举报

42

主题

1450

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
8643

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

威望
4293
贡献
2166
兑换币
2108
注册时间
2011-10-20
在线时间
1092 小时
5#
发表于 2013-1-12 19:10:02 | 只看该作者
:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol
回复 支持 反对

使用道具 举报

42

主题

1450

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
8643

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

威望
4293
贡献
2166
兑换币
2108
注册时间
2011-10-20
在线时间
1092 小时
6#
发表于 2013-1-12 19:10:19 | 只看该作者
:lol:lol:lol
回复 支持 反对

使用道具 举报

0

主题

53

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2079
威望
985
贡献
640
兑换币
552
注册时间
2012-11-3
在线时间
227 小时
7#
发表于 2013-1-12 20:04:32 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

34

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3920
威望
1944
贡献
1324
兑换币
1090
注册时间
2012-5-15
在线时间
326 小时
8#
发表于 2013-1-12 20:28:40 | 只看该作者
回复 支持 反对

使用道具 举报

29

主题

784

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
14246

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

威望
3430
贡献
9098
兑换币
1437
注册时间
2012-4-7
在线时间
859 小时
9#
发表于 2013-1-13 05:03:10 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

56

帖子

0

精华

高级会员

Rank: 4

积分
743
威望
373
贡献
182
兑换币
220
注册时间
2012-10-16
在线时间
94 小时
毕业学校
安徽理工大学
10#
 楼主| 发表于 2013-1-13 13:20:38 | 只看该作者
SendImageData(ADV);调用只用了18ms
即使加上18ms影响也不大啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 18:45 , Processed in 0.085975 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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