搜索
bottom↓
回复: 0
打印 上一主题 下一主题

全功能智能车之CCD初步实现并发送数据到上位机(第十二篇)

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2018-5-12 12:13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
全功能智能车之CCD初步实现并发送数据到上位机
这其中的上位机是PC端的上位机程序,用的是红树伟业的电脑上位机软件
代码说明:
CCD初始化
void CCD_init(void)
{
    RCC->APB2ENR|=1<<2;    //使能PORTA口时钟
    GPIOA->CRL&=0XFFF00FF; //PA2 CLK PA3 SI
    GPIOA->CRL|=0XFFF33FF; //PA2 CLK PA3 SI
    GPIOE->ODR|=3<<2;      //PE.5输出高
   
    Adc_Init();                  //ADC初始化     PA1 anolog输入
}
注意这里一定要初始化端口为输出模式

CCD采集数据:
void ImageCapture(unsigned short * ImageData) {

    unsigned char i;
    CCD_SI=1;            /* SI  = 1 */
    SamplingDelay();
    CCD_CLK=1;           /* CLK = 1 */
    SamplingDelay();
    CCD_SI=0;           /* SI  = 0 */
    SamplingDelay();
    //Delay 10us for sample the first pixel
        delay_us(10);
   
    //Sampling Pixel 1
    *ImageData=Get_Adc(ADC_CH1);
    //*ImageData =  ad_once(ADC1, AD6b, ADC_8bit);
    ImageData ++ ;
    CCD_CLK=0;           /* CLK = 0 */
    for(i=0; i<127; i++) {
        SamplingDelay();
        SamplingDelay();
        CCD_CLK=1;       /* CLK = 1 */
        SamplingDelay();
        SamplingDelay();
        //Sampling Pixel 2~128
       *ImageData=Get_Adc(ADC_CH1);
        ImageData ++ ;
        CCD_CLK=0;       /* CLK = 0 */
    }
    SamplingDelay();
    SamplingDelay();
    CCD_CLK=1;           /* CLK = 1 */
    SamplingDelay();
    SamplingDelay();
    CCD_CLK=0;          /* CLK = 0 */
}



发送CCD数据:
void SendImageData(unsigned char * ImageData) {
      unsigned char i;
    /* Send Data */
    for(i=0; i<129; i++) {
             uart_putchar(USART1,*ImageData++);
    }
}
格式说明:
每个像素为用一个字节表示,0x00最示最暗,0xfe最示最亮。每一帧为129字节,并以 0xFF 代表结束,格式如下:
01 02 AB.......................... FF
每一帧由的前128字节为像素值,最后以0xFF 代表结束。前128字节中不允许出现0xff,如果下位机采集到了值为 0xFF 的点,为了防止与结束字节混淆,务必将该值改为0xFE 。
整体程序:
int main(void)
{   
    u16 i,cnt;
  Stm32_Clock_Init(9);    //系统时钟设置
    uart_init(72,9600);         //串口初始化为9600
    delay_init(72);                //延时初始化
    LED_Init();                  //初始化与LED连接的硬件接口
     LCD_Init();                   //初始化LCD
    usmart_dev.init(72);    //初始化USMART               
    CCD_init();          //初始化CCD
    //初始化数据
  for(i=0; i<128; i++) {
    Pixel=0;
        Pixelu8=0;
  }
    Pixelu8[128]=0xff;
   
    POINT_COLOR=RED;//设置字体为红色
    LCD_ShowString(60,50,200,16,16,"WarShip STM32");   
    LCD_ShowString(60,70,200,16,16,"ADC TEST");   
    LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
    LCD_ShowString(60,110,200,16,16,"2012/9/7");              
    while(1)
    {        
        //0x00代表最暗,0xfe代表最亮
        delay_ms(20);
        ImageCapture(Pixel);
        if(++cnt >= 5) {
            cnt = 0;
            for(i=0; i<128; i++) {
                Pixelu8 = (u8)(Pixel>>4);
                if(Pixelu8==0xff) Pixelu8=0xfe;
            }
            Pixelu8[128]=0xff;
            SendImageData(Pixelu8);
        }

        LED0=!LED0;
        delay_ms(500);   
    }
}在这里补充数据帧
实验图片:



程序源码如下:
http://download.csdn.net/detail/chengdong1314/9307399


阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 08:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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