找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5320|回复: 1
打印 上一主题 下一主题
收起左侧

摄像头OV7670 OV7171中文数据手册下载 STM32彩色采集程序 LCD显示 CF7670C-V3

[复制链接]
跳转到指定楼层
楼主
OV7670/OV7171 CAMERACHIPTM图像传感器,体积小、工作电压低,提供单片 VGA摄像头和影像处理器的所有功能。通过 SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率 8位影响数据。该产品VGA图像最高达到30帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过 SCCB接口编程。OmmiVision图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。

OV7670引脚图:

功能
● 高灵敏度适合低照度应用
● 低电压适合嵌入式应用
● 标准的SCCB接口,兼容I2
C接口
● RawRGB,RGB(GRB4:2:2,RGB565/555/444),YUV
(4:2:2)和YCbCr(4:2:2)输出格式
● 支持VGA,CIF,和从CIF到40x30的各种尺寸
● VarioPixel 子采样方式
● 自动影响控制功能包括:自动曝光控制、自
动增益控制、自动白平衡,自动消除灯光条
纹、自动黑电平校准.图像质量控制包括色饱
和度、色相、伽玛、锐度和ANTI_BLOOM
● ISP具有消除噪声和坏点补偿功能
● 支持闪光灯:LED灯和氙灯
● 支持图像缩放
● 镜头失光补偿
● 50/60Hz自动检测
● 饱和度自动调节(UV调整)
● 边缘增强自动调节
● 降噪自动调节

OV7670中文数据手册:


OV7670管脚功能介绍:



STM32源程序:

  1. #include "main.h"
  2. static volatile ErrorStatus HSEStartUpStatus = SUCCESS;
  3. static vu32 TimingDelay = 0;
  4. static vu32 SELStatus = 0;
  5. extern unsigned int  a, Vsync,c_data;
  6. unsigned int  kkk=0,s=0;
  7. unsigned int M=0,N=0;
  8. /*******************************************************************************
  9. * Function Name  : main
  10. * Description    : Main program.
  11. * Input          : None
  12. * Output         : None
  13. * Return         : None
  14. *******************************************************************************/

  15. #define SI_BIT     GPIO_Pin_0  //
  16. #define SI_H()     GPIOA->BSRR =SI_BIT
  17. #define SI_L()     GPIOA->BRR  =SI_BIT

  18. #define SCK_BIT     GPIO_Pin_1  //
  19. #define SCK_H()     GPIOA->BSRR =SCK_BIT
  20. #define SCK_L()     GPIOA->BRR  =SCK_BIT

  21. void  G_GPIO_Config(void)
  22. {
  23.   
  24.   GPIO_InitTypeDef GPIO_InitStructure;
  25.   /* Enable GPIOA clock */
  26.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  27.   GPIO_InitStructure.GPIO_Pin =SI_BIT |SCK_BIT ;                              
  28.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  29.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  30.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  31.   SCK_L();
  32.   SI_L();
  33. }int main(void)
  34. {
  35.   unsigned char p0[]={1+'0',2+'0',3+'0',4+'0',0x00};  


  36. #ifdef DEBUG
  37.   debug();
  38. #endif

  39. unsigned int  kv=0;
  40.   /* Intialize the STM32 SYSTEM_Init */
  41.   SYSTEM_Init();
  42.   //G_GPIO_Config();
  43.    Delay(1); /* delay 1 ms */
  44.     LCD_write_english_string(5,66+16,p0,0Xf800,0X0000);
  45.   LCD_write_english_string(5,66+16,"CMOS Sensor Init.....",0Xf800,0X0000);
  46.   LCD_write_english_string(5,66,"GUANFU_WANG 2011-0415",0X001f,0X0000);
  47. /**/
  48.   /* while(1)
  49.    {
  50.    

  51.      SI_H();
  52.      Delay(3);
  53.    
  54.      SCK_H();  
  55.      Delay(3);
  56.      SI_L();//Delay(1);
  57.      Delay(3);
  58.      SCK_L();
  59.      Delay(3);
  60.      
  61.      for(kv=0;kv<128;kv++)
  62.      {
  63.      
  64.        SCK_H();
  65.        Delay(10);
  66.        SCK_L();
  67.        Delay(10);
  68.      }
  69.    //  Delay(1);
  70.    }
  71.    
  72.    
  73.    */
  74.    
  75.    /////////////////////////////////////
  76.    
  77.    
  78.    
  79.   FIFO_Set_GPIO_Config();
  80.   FIFO_GPIO_INPUT();
  81.   FIFO_CS_L();
  82.   FIFO_WE_H();
  83.   while(1!=Sensor_init()){}//初始化CMOS Sensor
  84.   LCD_write_english_string(5,66+16,"CMOS Sensor Init...ok",0Xf800,0X0000);
  85.   Vsync=0;
  86. ////////////////////////////////////////
  87.   FIFO_RRST_L();
  88.   FIFO_RD_L();
  89.   FIFO_RD_H();
  90.   FIFO_RD_L();
  91.   FIFO_RRST_H();
  92.   FIFO_RD_H();
  93.   Delay(50);

  94.   ////////////////////////////////////////
  95.   while(1)
  96.   {

  97.     if(Vsync==2)
  98.     {
  99.         LCD_WriteReg(0x0020,239);//GRAM水平起始位置
  100.         LCD_WriteReg(0x0021,319);      
  101.         LCD_WriteReg(0x0050,0x00);//水平 GRAM起始位置
  102.         LCD_WriteReg(0x0051,239);//水平GRAM终止位置
  103.         LCD_WriteReg(0x0052,0x00);//垂直GRAM起始位置
  104.         LCD_WriteReg(0x0053,319);//垂直GRAM终止位置
  105.         LCD_WriteReg(0x0003,0x1008);
  106.         LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */  
  107.         FIFO_RRST_L();
  108.         FIFO_RD_L();
  109.         FIFO_RD_H();
  110.         FIFO_RD_L();
  111.         FIFO_RRST_H();
  112.         FIFO_RD_H();
  113.          
  114.         for(a=0;a<9600;a++)
  115.         {

  116.              FIFO_RD_L();
  117.              asm("NOP");asm("NOP");
  118.              c_data=GPIOB->IDR&0xff00;//读高位
  119.              FIFO_RD_H();
  120.              asm("NOP");asm("NOP");
  121.              FIFO_RD_L();
  122.              asm("NOP");asm("NOP");
  123.              c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
  124.              FIFO_RD_H();  
  125.             // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
  126.              LCD_RAM=c_data;
  127.             
  128.              FIFO_RD_L();
  129.              asm("NOP");asm("NOP");
  130.              c_data=GPIOB->IDR&0xff00;//读高位
  131.              FIFO_RD_H();
  132.              asm("NOP");asm("NOP");
  133.              FIFO_RD_L();
  134.              asm("NOP");asm("NOP");
  135.              c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
  136.              FIFO_RD_H();  
  137.             // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
  138.              LCD_RAM=c_data;
  139.             
  140.              FIFO_RD_L();
  141.              asm("NOP");asm("NOP");
  142.              c_data=GPIOB->IDR&0xff00;//读高位
  143.              FIFO_RD_H();
  144.              asm("NOP");asm("NOP");
  145.              FIFO_RD_L();
  146.              asm("NOP");asm("NOP");
  147.              c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
  148.              FIFO_RD_H();  
  149.             // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
  150.              LCD_RAM=c_data;
  151.             
  152.              FIFO_RD_L();
  153.              asm("NOP");asm("NOP");
  154.              c_data=GPIOB->IDR&0xff00;//读高位
  155.              FIFO_RD_H();
  156.              asm("NOP");asm("NOP");
  157.              FIFO_RD_L();
  158.              asm("NOP");asm("NOP");
  159.              c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
  160.              FIFO_RD_H();  
  161.             // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
  162.              LCD_RAM=c_data;
  163.             
  164.              FIFO_RD_L();
  165.              asm("NOP");asm("NOP");
  166.              c_data=GPIOB->IDR&0xff00;//读高位
  167.              FIFO_RD_H();
  168.              asm("NOP");asm("NOP");
  169.              FIFO_RD_L();
  170.              asm("NOP");asm("NOP");
  171.              c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
  172.              FIFO_RD_H();  
  173.             // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
  174.              LCD_RAM=c_data;
  175.             
  176.              FIFO_RD_L();
  177.              asm("NOP");asm("NOP");
  178.              c_data=GPIOB->IDR&0xff00;//读高位
  179.              FIFO_RD_H();
  180.              asm("NOP");asm("NOP");
  181.              FIFO_RD_L();
  182.              asm("NOP");asm("NOP");
  183.              c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
  184.              FIFO_RD_H();  
  185.             // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
  186.              LCD_RAM=c_data;
  187.             
  188.              FIFO_RD_L();
  189.              asm("NOP");asm("NOP");
  190.              c_data=GPIOB->IDR&0xff00;//读高位
  191.              FIFO_RD_H();
  192.              asm("NOP");asm("NOP");
  193.              FIFO_RD_L();
  194.              asm("NOP");asm("NOP");
  195.              c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
  196.              FIFO_RD_H();  
  197.             // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
  198.              LCD_RAM=c_data;
  199.             
  200.              FIFO_RD_L(); ;
  201.              asm("NOP");asm("NOP");
  202.              c_data=GPIOB->IDR&0xff00;//读高位
  203.              FIFO_RD_H();
  204.              asm("NOP");asm("NOP");
  205.              FIFO_RD_L();
  206.              asm("NOP");asm("NOP");
  207.              c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
  208.              FIFO_RD_H();  
  209.             // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
  210.              LCD_RAM=c_data;
  211.          
  212.          }

  213.          Vsync=0;
  214.        }
  215.      }}

  216. …………限于本文篇幅 余下代码请从51黑下载附件…………

复制代码
全部资料下载地址:
CF7670C-V3 STM32F103驱动-彩色采集 LCD显示 资料.rar (2.99 MB, 下载次数: 47)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:290191 发表于 2018-3-10 20:50 | 只看该作者
感谢!祝好运!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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