久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6157|回復: 5
打印 上一主題 下一主題
收起左側

OV7670在stm32上實現(xiàn)顏色跟蹤 EasyTrace演示工程

[復制鏈接]
跳轉到指定樓層
樓主
ID:161768 發(fā)表于 2017-8-11 03:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
EasyTrace演示工程



stm32單片機實現(xiàn)顏色跟蹤源程序如下:
  1. //注:此文件代碼由王工提供

  2. #include "Sensor.h"
  3. #include "sccb.h"

  4. const  char OV7670_reg[OV7670_REG_NUM][2]=
  5. {         
  6.     /*以下為OV7670 QVGA RGB565參數(shù)  */
  7.           {0x3a, 0x04},
  8.     {0x40, 0x10},
  9.         {0x12, 0x14},
  10.         {0x32, 0x80},
  11.         {0x17, 0x16},   
  12.         {0x18, 0x04},//5
  13.         {0x19, 0x02},
  14.         {0x1a, 0x7b},//0x7a,
  15.         {0x03, 0x06},//0x0a,
  16.         {0x0c, 0x0c},
  17.     {0x15, 0x02},
  18.         {0x3e, 0x00},//10
  19.         {0x70, 0x00},
  20.         {0x71, 0x01},
  21.         {0x72, 0x11},
  22.         {0x73, 0x09},//   
  23.         {0xa2, 0x02},//15
  24.         {0x11, 0x00},
  25.         {0x7a, 0x20},
  26.         {0x7b, 0x1c},
  27.         {0x7c, 0x28},
  28.         {0x7d, 0x3c},//20
  29.         {0x7e, 0x55},
  30.         {0x7f, 0x68},
  31.         {0x80, 0x76},
  32.         {0x81, 0x80},
  33.         {0x82, 0x88},
  34.         {0x83, 0x8f},
  35.         {0x84, 0x96},
  36.         {0x85, 0xa3},
  37.         {0x86, 0xaf},
  38.         {0x87, 0xc4},//30
  39.         {0x88, 0xd7},
  40.         {0x89, 0xe8},
  41.         {0x13, 0xe0},
  42.         {0x00, 0x00},//AGC
  43.         {0x10, 0x00},
  44.         {0x0d, 0x00},
  45.         {0x14, 0x30},//0x38, limit the max gain
  46.         {0xa5, 0x05},
  47.         {0xab, 0x07},
  48.         {0x24, 0x75},//40
  49.         {0x25, 0x63},
  50.         {0x26, 0xA5},
  51.         {0x9f, 0x78},
  52.         {0xa0, 0x68},
  53.         {0xa1, 0x03},//0x0b,
  54.         {0xa6, 0xdf},//0xd8,
  55.         {0xa7, 0xdf},//0xd8,
  56.         {0xa8, 0xf0},
  57.         {0xa9, 0x90},  
  58.         {0xaa, 0x94},//50
  59.         {0x13, 0xe5},
  60.         {0x0e, 0x61},
  61.         {0x0f, 0x4b},
  62.         {0x16, 0x02},
  63.         {0x1e, 0x07},//0x07,
  64.         {0x21, 0x02},
  65.         {0x22, 0x91},
  66.         {0x29, 0x07},
  67.         {0x33, 0x0b},
  68.         {0x35, 0x0b},//60
  69.         {0x37, 0x1d},
  70.         {0x38, 0x71},
  71.         {0x39, 0x2a},
  72.         {0x3c, 0x78},
  73.         {0x4d, 0x40},
  74.         {0x4e, 0x20},
  75.         {0x69, 0x5d},
  76.         {0x6b, 0x40},//PLL
  77.         {0x74, 0x19},
  78.         {0x8d, 0x4f},
  79.         {0x8e, 0x00},//70
  80.         {0x8f, 0x00},
  81.         {0x90, 0x00},
  82.         {0x91, 0x00},
  83.         {0x92, 0x00},//0x19,//0x66
  84.         {0x96, 0x00},
  85.         {0x9a, 0x80},
  86.         {0xb0, 0x84},
  87.         {0xb1, 0x0c},
  88.         {0xb2, 0x0e},
  89.         {0xb3, 0x82},//80
  90.         {0xb8, 0x0a},
  91.         {0x43, 0x14},
  92.         {0x44, 0xf0},
  93.         {0x45, 0x34},
  94.         {0x46, 0x58},
  95.         {0x47, 0x28},
  96.         {0x48, 0x3a},
  97.         {0x59, 0x88},
  98.         {0x5a, 0x88},
  99.         {0x5b, 0x44},//90
  100.         {0x5c, 0x67},
  101.         {0x5d, 0x49},
  102.         {0x5e, 0x0e},
  103.         {0x64, 0x04},
  104.         {0x65, 0x20},
  105.         {0x66, 0x05},
  106.         {0x94, 0x04},
  107.         {0x95, 0x08},
  108.         {0x6c, 0x0a},
  109.         {0x6d, 0x55},
  110.         {0x4f, 0x80},
  111.         {0x50, 0x80},
  112.         {0x51, 0x00},
  113.         {0x52, 0x22},
  114.         {0x53, 0x5e},
  115.         {0x54, 0x80},
  116.         {0x6e, 0x11},//100
  117.         {0x6f, 0x9f},//0x9e for advance AWB
  118.     {0x55, 0x00},//亮度
  119.     {0x56, 0x45},//對比度
  120.     {0x57, 0x80},//0x40,  change according to Jim's request             
  121. };

  122. extern const char OV7670_reg[OV7670_REG_NUM][2];

  123. static void delay_us(unsigned long i)
  124. {     
  125.         while( i--);
  126. }

  127. void Sensor_GPIO_Init(void)
  128. {
  129.   GPIO_InitTypeDef GPIO_InitStructure;
  130.    // Enable GPIOC  clock
  131.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  132.   GPIO_InitStructure.GPIO_Pin =  Sensor_VSYNC_BIT;
  133.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;////上拉
  134.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  135.   GPIO_Init(GPIOC, &GPIO_InitStructure);
  136. }

  137. //////////////////////////////////////////////////
  138. ////函數(shù)功能:中斷配制
  139. //guanfu_wang

  140. void Sensor_Interrupts_Config(void)//VSYNC 中斷
  141. {
  142.   NVIC_InitTypeDef NVIC_InitStructure;

  143.   /* Configure one bit for preemption priority */
  144.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  145.   

  146.     /* Configure one bit for preemption priority */
  147.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  148.   
  149.   /* Enable the EXTI9_5 Interrupt */
  150.   NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
  151.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  152.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  153.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  154.   NVIC_Init(&NVIC_InitStructure);
  155. }
  156. ////////////////////////////////////////////////////////////////////////
  157. void Sensor_EXTI_Config(void)//VSYNC 中斷
  158. {
  159.   EXTI_InitTypeDef EXTI_InitStructure;
  160.   
  161.   GPIO_EXTILineConfig(GPIO_PORT_SOURCE_VSYNC_CMOS, GPIO_PIN_SOURCE_VSYNC_CMOS);
  162.   EXTI_InitStructure.EXTI_Line = EXTI_LINE_VSYNC_CMOS;
  163.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  164.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  165.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  166.   EXTI_Init(&EXTI_InitStructure);
  167.   EXTI_GenerateSWInterrupt(EXTI_LINE_VSYNC_CMOS);

  168. }


  169. ///////////////////////////////////////////////////////////////////////////
  170. //功能:寫OV7660寄存器
  171. //返回:1-成功        0-失敗
  172. //guanfu_wang
  173. unsigned char wr_Sensor_Reg(unsigned char regID, unsigned char regDat)
  174. {
  175.                 startSCCB();//發(fā)送SCCB 總線開始傳輸命令
  176.         if(0==SCCBwriteByte(0x42))//寫地址
  177.         {
  178.                 stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  179.                 return(0);//錯誤返回
  180.         }
  181.         delay_us(20);
  182.           if(0==SCCBwriteByte(regID))//積存器ID
  183.         {
  184.                 stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  185.                 return(0);//錯誤返回
  186.         }
  187.         delay_us(20);
  188.           if(0==SCCBwriteByte(regDat))//寫數(shù)據(jù)到積存器
  189.         {
  190.                 stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  191.                 return(0);//錯誤返回
  192.         }
  193.           stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  194.        
  195.           return(1);//成功返回
  196. }
  197. ////////////////////////////
  198. //功能:讀OV7660寄存器
  199. //返回:1-成功        0-失敗
  200. //guanfu_wang
  201. unsigned char rd_Sensor_Reg(unsigned char regID, unsigned char *regDat)
  202. {
  203.         //通過寫操作設置寄存器地址
  204.         startSCCB();
  205.         if(0==SCCBwriteByte(0x42))//寫地址
  206.         {
  207.                 stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  208.                 return(0);//錯誤返回
  209.         }
  210.         delay_us(20);
  211.           if(0==SCCBwriteByte(regID))//積存器ID
  212.         {
  213.                 stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  214.                 return(0);//錯誤返回
  215.         }
  216.         stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  217.        
  218.         delay_us(20);
  219.        
  220.         //設置寄存器地址后,才是讀
  221.         startSCCB();
  222.         if(0==SCCBwriteByte(0x43))//讀地址
  223.         {
  224.                 stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  225.                 return(0);//錯誤返回
  226.         }
  227.         delay_us(20);
  228.           *regDat=SCCBreadByte();//返回讀到的值
  229.           noAck();//發(fā)送NACK命令
  230.           stopSCCB();//發(fā)送SCCB 總線停止傳輸命令
  231.           return(1);//成功返回
  232. }

  233. /* Sensor_init() */
  234. //返回1成功,返回0失敗
  235. //guanfu_wang
  236. unsigned char Sensor_init(void)
  237. {
  238.         unsigned char temp;
  239.        
  240.         unsigned int i=0;
  241.    //      XCLK_init_ON();//開啟MCO功能 提供時鐘給CMOS傳感器
  242.         //uchar ovidmsb=0,ovidlsb=0;
  243.         Sensor_GPIO_Init();
  244.         SCCB_GPIO_Config();//io init..
  245.         
  246.         temp=0x80;
  247.         if(0==wr_Sensor_Reg(0x12, temp)) //Reset SCCB
  248.         {
  249.           return 0 ;//錯誤返回
  250.         }
  251.    
  252.         delay_us(10000);
  253.        
  254.         if(0==rd_Sensor_Reg(0x0b, &temp))//讀ID
  255.         {
  256.                 return 0 ;//錯誤返回
  257.         }
  258.       
  259.          if(temp==0x73)//OV7670
  260.          {
  261.            for(i=0;i<OV7670_REG_NUM;i++)
  262.            {
  263.                 if( 0==wr_Sensor_Reg(OV7670_reg[i][0],OV7670_reg[i][1]))
  264.                 {
  265.                         return 0;//錯誤返回
  266.                 }
  267.             }
  268.            
  269.           Sensor_EXTI_Config();
  270.           Sensor_Interrupts_Config();
  271.         }

  272.         return 0x01; //ok   
  273. }
復制代碼

所有資料51hei提供下載:
http://www.zg4o1577.cn/bbs/dpj-92244-1.html (2樓下載)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:439705 發(fā)表于 2018-12-4 23:48 | 只看該作者
hao好好
回復

使用道具 舉報

板凳
ID:138247 發(fā)表于 2019-4-4 16:39 | 只看該作者

謝謝分享,,,,,,,,,
回復

使用道具 舉報

地板
ID:407518 發(fā)表于 2019-12-30 11:28 | 只看該作者
不錯啊,可以移植性很高哦
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产乱码久久久久久影片 | 欧美一级高潮片免费的 | 国产乱码精品一区二区三区中文 | 国产日韩欧美一区二区在线播放 | 久草电影网 | 日本久久视频 | 免费视频中文字幕 | 亚洲视频在线观看一区二区三区 | 男人的天堂视频网站 | av在线视 | 黄色精品 | 2018中文字幕第一页 | 色香婷婷 | 日韩一区欧美一区 | 亚洲高清一区二区三区 | 美女在线视频一区二区三区 | 久久成人一区 | 日韩成人影院在线观看 | 国产精品一区在线观看 | 亚洲永久精品国产 | 欧美精品欧美精品系列 | 精品区| 国产一区二区三区精品久久久 | 精品少妇一区二区三区在线播放 | 久久久噜噜噜久久中文字幕色伊伊 | 国产高清自拍视频在线观看 | 成年视频在线观看 | 亚洲天堂中文字幕 | 美女一区 | 国产精品久久久久久久久久久久 | 国产99热在线| 国产精品久久久久久模特 | 国产精品免费在线 | 日本免费一区二区三区 | 天天爱av | 日日夜夜天天干 | 亚洲顶级毛片 | 亚洲国产成人在线 | 国产精品高潮呻吟 | 亚洲精品国产一区 | 精品久久久久久久 |