智能车制作

标题: 蓝宙ccd采样程序中的*ImageData++ = (byte)(temp_int>>4)求解释啊 [打印本页]

作者: 猎鹰2013    时间: 2013-3-3 14:23
标题: 蓝宙ccd采样程序中的*ImageData++ = (byte)(temp_int>>4)求解释啊
请问下高人蓝宙ccd采样程序中的*ImageData++ = (byte)(temp_int>>4);是什么意思啊  感
void ImageCapture(unsigned char * ImageData)   //CCD采样
{                               //存数据地址
    unsigned char i;
    unsigned int  temp_int;
    TSL1401_SI = 1;         //  SI  = 1      
    SamplingDelay();
    TSL1401_CLK = 1;        /* CLK = 1 */
    SamplingDelay();
    TSL1401_SI = 0;         /* SI  = 0 */
    SamplingDelay();
   
    for(i = 0; i < 20; i++) //延时20us
    {
        Cpu_Delay1us();
    }
   
    temp_int = AD_Measure12(0);//采集第一个像素点
    *ImageData++ = (byte)(temp_int>>4);
    TSL1401_CLK = 0;        /* CLK = 0 */
    for(i=0; i<127; i++)    //采集128
    {
        SamplingDelay();
        SamplingDelay();
        TSL1401_CLK = 1;    /* CLK = 1 */
        SamplingDelay();
        SamplingDelay();
                            //采集第2~128个点
        temp_int = AD_Measure12(0);
        *ImageData++ = (byte)(temp_int>>4);
        TSL1401_CLK = 0;    /* CLK = 0 */
    }
    SamplingDelay();        //再产生一个clk信号结束采集
    SamplingDelay();
    TSL1401_CLK = 1;        /* CLK = 1 */
    SamplingDelay();
    SamplingDelay();
    TSL1401_CLK = 0;        /* CLK = 0 */
}
   

作者: 灰原姐姐    时间: 2013-3-3 14:42
*ImageData++ = (byte)(temp_int>>4);
temp_int>>4表示丢失精度,即低4位不要了。
(byte)是强制类型转换
*imageData = 是把右边的值赋值给左边的指针所指向的变量
++表示赋值完成后imageData自增1
作者: 猎鹰2013    时间: 2013-3-3 16:07
明白了  非常感谢楼上 谢谢啊
作者: 1039074784    时间: 2013-4-4 15:48
各位,请问一下为甚么ccd采样是有些像素点一直是低电平?
作者: 紫萱?梓轩!    时间: 2013-4-14 09:08
灰原姐姐 发表于 2013-3-3 14:42
*ImageData++ = (byte)(temp_int>>4);
temp_int>>4表示丢失精度,即低4位不要了。
(byte)是强制类型转换 ...

如果是丢失4位精度的话,为啥在这段程序中也要丢失4位,这样不就没有数据了么?hex被*ImgaeData赋值,求解,void SendHex(unsigned char hex) {
  unsigned char temp;
  temp = hex >> 4;
  if(temp < 10)
  {
    SCI0_SendChar1(temp + '0');
  }
  else
  {
    SCI0_SendChar1(temp - 10 + 'A');
  }
  temp = hex & 0x0F;
  if(temp < 10)
  {
    SCI0_SendChar1(temp + '0');
  }
  else
  {
    SCI0_SendChar1(temp - 10 + 'A');
  }
}





作者: 我爱小kb    时间: 2013-5-5 12:00
1039074784 发表于 2013-4-4 15:48
各位,请问一下为甚么ccd采样是有些像素点一直是低电平?

你好,请问问题解决了吗?我们现在也是有一些常低电平,怎么弄啊急死了
作者: donsbin    时间: 2013-8-27 09:55
灰原姐姐 发表于 2013-3-3 14:42
*ImageData++ = (byte)(temp_int>>4);
temp_int>>4表示丢失精度,即低4位不要了。
(byte)是强制类型转换 ...

问个问题,同为8位无符号整数,byte和unsigned char 有什么区别吗??
用uchar 进行强制类型转换也可以吧!

作者: 灰原姐姐    时间: 2013-8-27 11:46
donsbin 发表于 2013-8-27 09:55
问个问题,同为8位无符号整数,byte和unsigned char 有什么区别吗??
用uchar 进行强制类型转换也可以吧 ...

你可以找到你的开发环境的byte的定义,就是typedef的

作者: donsbin    时间: 2013-8-27 15:00
灰原姐姐 发表于 2013-8-27 11:46
你可以找到你的开发环境的byte的定义,就是typedef的

谢谢姐姐,我是个水货,希望以后能多多帮助!话说在群里看到你的靓照咯
表示向你学习啊!

作者: 灰原姐姐    时间: 2013-8-27 16:13
donsbin 发表于 2013-8-27 15:00
谢谢姐姐,我是个水货,希望以后能多多帮助!话说在群里看到你的靓照咯
表示向你学习啊!
...

噗。。。。吐了。。。哪个群!!!

作者: donsbin    时间: 2013-8-27 16:20
灰原姐姐 发表于 2013-8-27 16:13
噗。。。。吐了。。。哪个群!!!

我真想不明白,你怎么会这么强的啊!感觉你什么都懂!论坛里那么多问题你都能解答!
实在是太强大了。
要是有你一半强就好了。。。

作者: 灰原姐姐    时间: 2013-8-27 16:23
donsbin 发表于 2013-8-27 16:20
我真想不明白,你怎么会这么强的啊!感觉你什么都懂!论坛里那么多问题你都能解答!
实在是太强大了。
...

三年前,我也是这么看我师兄的。


作者: donsbin    时间: 2013-8-27 16:40
灰原姐姐 发表于 2013-8-27 16:23
三年前,我也是这么看我师兄的。

可以加你qq吗!真心需要你的帮助啊!

作者: donsbin    时间: 2013-8-27 16:54
灰原姐姐 发表于 2013-8-27 16:23
三年前,我也是这么看我师兄的。

是在蓝宙群里看到的,1055384324这是我的qq,求加啊!用小号也可以啊!问问题方便!

作者: 灰原姐姐    时间: 2013-8-27 17:07
donsbin 发表于 2013-8-27 16:54
是在蓝宙群里看到的,1055384324这是我的qq,求加啊!用小号也可以啊!问问题方便!

为什么蓝宙群里会有我的QQ号?

作者: donsbin    时间: 2013-8-27 17:21
灰原姐姐 发表于 2013-8-27 17:07
为什么蓝宙群里会有我的QQ号?

好啊!那为什么你自己不知道呢???

作者: donsbin    时间: 2013-8-28 15:40
灰原姐姐 发表于 2013-8-27 17:07
为什么蓝宙群里会有我的QQ号?

我看了蓝轴的这个程序,他AD采样时12位的精度,他是为了转换成8位才把后四位舍弃。
后四位占的比列不大,最多也就是5*16/(2^12),但是转换成8位的话,那么计算的比列怎么算,
是不是1/(255)的比列来算,求解

作者: 灰原姐姐    时间: 2013-8-28 18:01
donsbin 发表于 2013-8-28 15:40
我看了蓝轴的这个程序,他AD采样时12位的精度,他是为了转换成8位才把后四位舍弃。
后四位占的比列不大, ...

丢了4位数值的大小不是差了16倍吗?

作者: donsbin    时间: 2013-8-28 20:47
灰原姐姐 发表于 2013-8-28 18:01
丢了4位数值的大小不是差了16倍吗?

左移4位2^4,是相差16倍。4096/16=256,刚好是8位,那我不明白了,为什么不直接用8位精度,
我同学也说12位的不准??

作者: 灰原姐姐    时间: 2013-8-28 21:31
donsbin 发表于 2013-8-28 20:47
左移4位2^4,是相差16倍。4096/16=256,刚好是8位,那我不明白了,为什么不直接用8位精度,
我同学也说1 ...

一般8为精度高6位比较准,低2位就不准了。

作者: donsbin    时间: 2013-8-28 23:17
灰原姐姐 发表于 2013-8-28 21:31
一般8为精度高6位比较准,低2位就不准了。

看了数据手册,说是在时钟下降沿采集电压值
[attach]50287[/attach]
可是我看蓝轴的程序采集的时候是上升沿??搞不懂了
[attach]50288[/attach]
最后来了一个下降沿是为了结束采集。
搞不懂了???
[attach]50289[/attach]

作者: 灰原姐姐    时间: 2013-8-29 16:55
donsbin 发表于 2013-8-28 23:17
看了数据手册,说是在时钟下降沿采集电压值

可是我看蓝轴的程序采集的时候是上升沿??搞不懂了

没用过线性CCD

作者: donsbin    时间: 2013-8-29 18:50
灰原姐姐 发表于 2013-8-29 16:55
没用过线性CCD

你是做电磁的???

作者: 灰原姐姐    时间: 2013-8-29 19:02
donsbin 发表于 2013-8-29 18:50
你是做电磁的???

摄像头

作者: donsbin    时间: 2013-8-29 22:58
灰原姐姐 发表于 2013-8-29 19:02
摄像头


我也是摄像头的,不过太水了!直接跪在虚线上了!
作者: donsbin    时间: 2013-8-30 09:49
灰原姐姐 发表于 2013-8-29 19:02
摄像头

我想问一下,如果我直接在主程序中定义uchar num[ ];这样肯定是会报错的;
但是我不想用指针,形参定义成这样是不会有问题。
void Display(uchar num[ ],number)  ?

作者: 灰原姐姐    时间: 2013-8-30 12:13
donsbin 发表于 2013-8-30 09:49
我想问一下,如果我直接在主程序中定义uchar num[ ];这样肯定是会报错的;
但是我不想用指针,形参定义成 ...

这种非经验性的,有明确答案的,无数人遇到过的,问题,自行解决。

作者: donsbin    时间: 2013-9-1 16:07
灰原姐姐 发表于 2013-8-30 12:13
这种非经验性的,有明确答案的,无数人遇到过的,问题,自行解决。

最近碰到个问题,就是我用128的串口发送数据到51单片机,比如发送{1,2,3,4,5},51接收到的数据顺序是乱的,不是1,2,3,4,5,发送的我串口助手看过正常,不知道是什么原因。

作者: 灰原姐姐    时间: 2013-9-1 17:58
donsbin 发表于 2013-9-1 16:07
最近碰到个问题,就是我用128的串口发送数据到51单片机,比如发送{1,2,3,4,5},51接收到的数据顺序是乱的 ...

你发的是数1,还是字符‘1’,接收方显示的是数1还是数1对应的字符。
作者: donsbin    时间: 2013-9-2 09:40
灰原姐姐 发表于 2013-9-1 17:58
你发的是数1,还是字符‘1’,接收方显示的是数1还是数1对应的字符。

我发的是数组,不是字符串,测试了一次啊,发送{1,2,3,7,15,16,18,25},接收到的数据显示到液晶上,顺序对的,但是一到16的时候就出现错误的显示了,大于16的都显示错误的数据。液晶显示我测试过,没问题
作者: 灰原姐姐    时间: 2013-9-2 10:09
donsbin 发表于 2013-9-2 09:40
我发的是数组,不是字符串,测试了一次啊,发送{1,2,3,7,15,16,18,25},接收到的数据显示到液晶上,顺序对 ...

请仔细检查,自行解决。

作者: 风起时想你    时间: 2013-11-26 13:14
我爱小kb 发表于 2013-5-5 12:00
你好,请问问题解决了吗?我们现在也是有一些常低电平,怎么弄啊急死了

我们是第九届的,也遇到这个问题了。你们当时解决了没???图像左端总有一块低电压

作者: 我爱小kb    时间: 2013-11-28 13:20
风起时想你 发表于 2013-11-26 13:14
我们是第九届的,也遇到这个问题了。你们当时解决了没???图像左端总有一块低电压

注意保证程序里没有其它发送函数在
作者: 风起时想你    时间: 2013-11-28 22:44
1039074784 发表于 2013-4-4 15:48
各位,请问一下为甚么ccd采样是有些像素点一直是低电平?

我们也遇到这种情况了。。。是程序的问题么?你们怎么处理的。。。我们都困扰好几天了。。
作者: 风起时想你    时间: 2013-11-28 22:48
我爱小kb 发表于 2013-11-28 13:20
注意保证程序里没有其它发送函数在

学长,方便加下QQ么。。这个问题困扰好几天了。。。745274094  感激不尽

作者: 风起时想你    时间: 2013-11-28 22:49
灰原姐姐 发表于 2013-3-3 14:42
*ImageData++ = (byte)(temp_int>>4);
temp_int>>4表示丢失精度,即低4位不要了。
(byte)是强制类型转换 ...

蓝宙的自适应程序为什么 在上位机看,左边总有一段 低电平,采全白的时候也存在。

作者: 灰原姐姐    时间: 2013-11-28 23:31
风起时想你 发表于 2013-11-28 22:49
蓝宙的自适应程序为什么 在上位机看,左边总有一段 低电平,采全白的时候也存在。

那程序不是我写的,我也没用过。

作者: 我爱小kb    时间: 2013-11-29 20:22
风起时想你 发表于 2013-11-28 22:48
学长,方便加下QQ么。。这个问题困扰好几天了。。。745274094  感激不尽

我都不做飞思卡尔了,,。。我们那会儿就是因为除了发送ccd的图像以外还在主程序发送其他传感器的值了,所以CCDVIEW上会显示有一段常低电平,。好好检查程序
作者: 我爱小kb    时间: 2013-11-29 20:23
风起时想你 发表于 2013-11-28 22:48
学长,方便加下QQ么。。这个问题困扰好几天了。。。745274094  感激不尽

我都不做飞思卡尔了,,。。我们那会儿就是因为除了发送ccd的图像以外还在主程序发送其他传感器的值了,所以CCDVIEW上会显示有一段常低电平,。好好检查程序




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2