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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2471|回復(fù): 0
收起左側(cè)

stm32 操控 ov7670 圖像識(shí)別源程序

[復(fù)制鏈接]
ID:594461 發(fā)表于 2019-8-3 10:14 | 顯示全部樓層 |閱讀模式
如題

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include "led.h"
  4. #include "delay.h"
  5. #include "key.h"
  6. #include "sys.h"
  7. #include "lcd.h"
  8. #include "usart.h"         
  9. #include "string.h"
  10. #include "ov7725.h"
  11. #include "tpad.h"
  12. #include "timer.h"
  13. #include "exti.h"
  14. #include "usmart.h"
  15. #include "color.h"
  16. #include "xd.h"
  17. #include "ov7670.h"


  18. //傳感器名字宏定義
  19. #define  OV7725 1
  20. #define  OV7670 2

  21. #define uchar unsigned char
  22. uchar xx,yy,m2;
  23. int yc,xc,ENA,ENB;

  24. //由于OV7725傳感器安裝方式原因,OV7725_WINDOW_WIDTH相當(dāng)于LCD的高度,OV7725_WINDOW_HEIGHT相當(dāng)于LCD的寬度
  25. //注意:此宏定義只對(duì)OV7725有效
  26. #define  OV7725_WINDOW_WIDTH                320 // <=320
  27. #define  OV7725_WINDOW_HEIGHT                240 // <=240


  28. //const u8*LMODE_TBL[5]={"Auto","Sunny","Cloudy","Office","Home"};                                                        //5種光照模式            
  29. //const u8*EFFECTS_TBL[7]={"Normal","Negative","B&W","Redish","Greenish","Bluish","Antique"};        //7種特效
  30. extern u8 ov_sta;        //在exit.c里 面定義
  31. extern u8 ov_frame;        //在timer.c里面定義                 


  32. //更新LCD顯示
  33. //void camera_refresh(void)
  34. //{
  35. //        u32 j,i;
  36. //         u16 color;  
  37. //        if(ov_sta)//有幀中斷更新?
  38. //        {
  39. //                LCD_Scan_Dir(U2D_L2R);                //從上到下,從左到右  
  40. //                if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//將顯示區(qū)域設(shè)置到屏幕中央
  41. //                else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//將顯示區(qū)域設(shè)置到屏幕中央
  42. //                LCD_WriteRAM_Prepare();     //開(kāi)始寫(xiě)入GRAM       
  43. ////                OV7725_RRST=0;                                //開(kāi)始復(fù)位讀指針
  44. ////                OV7725_RCK_L;
  45. ////                OV7725_RCK_H;
  46. ////                OV7725_RCK_L;
  47. ////                OV7725_RRST=1;                                //復(fù)位讀指針結(jié)束
  48. ////                OV7725_RCK_H;
  49. //                OV7670_RRST=0;                                //開(kāi)始復(fù)位讀指針
  50. //                OV7670_RCK_L;
  51. //                OV7670_RCK_H;
  52. //                OV7670_RCK_L;
  53. //                OV7670_RRST=1;                                //復(fù)位讀指針結(jié)束
  54. //                OV7670_RCK_H;
  55. //                for(i=0;i<OV7725_WINDOW_HEIGHT;i++)
  56. //                {
  57. //                        for(j=0;j<OV7725_WINDOW_WIDTH;j++)
  58. //                        {
  59. //                                OV7725_RCK_L;
  60. //                                color=GPIOC->IDR&0XFF;        //讀數(shù)據(jù)
  61. //                                OV7725_RCK_H;
  62. //                                color<<=8;  
  63. //                                OV7725_RCK_L;
  64. //                                color|=GPIOC->IDR&0XFF;        //讀數(shù)據(jù)
  65. //                                OV7725_RCK_H;
  66. //                                LCD->LCD_RAM=color;  
  67. //                        }
  68. //                }                                       
  69. //                 ov_sta=0;                                        //清零幀中斷標(biāo)記
  70. //                ov_frame++;
  71. //                LCD_Scan_Dir(DFT_SCAN_DIR);        //恢復(fù)默認(rèn)掃描方向
  72. //        if(Trace(&condition, &result))
  73. //                {
  74. //            LCD_DrawRectangle( result.x-result.w/2, result.y-result.h/2, result.x-result.w/2+result.w,  result.y-result.h/2+result.h);
  75. //            LCD_DrawRectangle( result.x-2, result.y-2,result.x+2, result.y+2);
  76. //                       
  77. //                             
  78. //                              xx=result.x;yy=result.y;
  79. //            LCD_ShowNum(1,280.,xx,3,16);
  80. //                        LCD_ShowNum(1,300.,yy,3,16);                       
  81. //                }   
  82. //                   else  {xx=0;yy=0; LCD_ShowNum(1,280.,xx,3,16);LCD_ShowNum(1,300.,yy,3,16);}
  83. //        }
  84. //}         

  85. void camera_refresh(void)
  86. {
  87.         u32 j,i;
  88.         u16 color;  
  89.         if(ov_sta)//有幀中斷更新?
  90.         {
  91.                 LCD_Scan_Dir(U2D_L2R);                //從上到下,從左到右  
  92.                 if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//將顯示區(qū)域設(shè)置到屏幕中央
  93.                 else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//將顯示區(qū)域設(shè)置到屏幕中央
  94.                 LCD_WriteRAM_Prepare();     //開(kāi)始寫(xiě)入GRAM       
  95. //                OV7725_RRST=0;                                //開(kāi)始復(fù)位讀指針
  96. //                OV7725_RCK_L;
  97. //                OV7725_RCK_H;
  98. //                OV7725_RCK_L;
  99. //                OV7725_RRST=1;                                //復(fù)位讀指針結(jié)束
  100. //                OV7725_RCK_H;
  101.                 OV7670_RRST=0;                                //開(kāi)始復(fù)位讀指針
  102.                 OV7670_RCK_L;
  103.                 OV7670_RCK_H;
  104.                 OV7670_RCK_L;
  105.                 OV7670_RRST=1;                                //復(fù)位讀指針結(jié)束
  106.                 OV7670_RCK_H;
  107.                 for(i=0;i<OV7725_WINDOW_HEIGHT;i++)
  108.                 {
  109.                         for(j=0;j<OV7725_WINDOW_WIDTH;j++)
  110.                         {
  111.                                 OV7670_RCK_L;
  112.                         color=GPIOC->IDR&0XFF;        //讀數(shù)據(jù)
  113.                         OV7670_RCK_H;
  114.                         color<<=8;  
  115.                         OV7670_RCK_L;
  116.                         color|=GPIOC->IDR&0XFF;        //讀數(shù)據(jù)
  117.                         OV7670_RCK_H;
  118.                         LCD->LCD_RAM=color;
  119.                         }
  120.                 }                                       
  121.                 ov_sta=0;                                        //清零幀中斷標(biāo)記
  122.                 ov_frame++;
  123.                 LCD_Scan_Dir(DFT_SCAN_DIR);        //恢復(fù)默認(rèn)掃描方向
  124.         if(Trace(&condition, &result))
  125.                 {
  126.             LCD_DrawRectangle( result.x-result.w/2, result.y-result.h/2, result.x-result.w/2+result.w,  result.y-result.h/2+result.h);
  127.             LCD_DrawRectangle( result.x-2, result.y-2,result.x+2, result.y+2);
  128.                        
  129.                              
  130.                               xx=result.x;yy=result.y;
  131.             LCD_ShowNum(1,280.,xx,3,16);
  132.                         LCD_ShowNum(1,300.,yy,3,16);                       
  133.                 }   
  134.                    else  {xx=0;yy=0; LCD_ShowNum(1,280.,xx,3,16);LCD_ShowNum(1,300.,yy,3,16);}
  135.         }
  136. }         



  137. u16 a,b,c;
  138. u16 t=0;
  139. u8 key;
  140. u8 lightmode=4,saturation=2,contrast=2;
  141. u8 effect=0;

  142. int main(void)
  143. {       
  144.          
  145.         u8 i=0;            
  146.         u8 msgbuf[15];                                //消息緩存區(qū)
  147.         u8 tm=0;

  148.         delay_init();                     //延時(shí)函數(shù)初始化          
  149.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  150.         uart_init(115200);                 //串口初始化為 115200
  151.         usmart_dev.init(72);                //初始化USMART               
  152.         XD_Init();
  153.         LED_Init();                                          //初始化與LED連接的硬件接口
  154.         KEY_Init();                                        //初始化按鍵
  155.         LCD_Init();                                           //初始化LCD  
  156.         TPAD_Init(6);                                //觸摸按鍵初始化
  157.   
  158.   TIM3_PWM_Init(899,0);
  159.         TIM3_PWM2_Init(899,0);
  160.          
  161.         POINT_COLOR=RED;                        //設(shè)置字體為紅色
  162.         LCD_ShowString(30,10,200,16,16,"WJS STM32");
  163.         LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
  164.         LCD_ShowString(30,90,200,16,16,"2018/8/5");
  165.   LCD_ShowString(30,110,200,16,16,"OV7725 Init...");         
  166.         while(OV7670_Init())//初始化OV7670
  167.         {
  168.                 LCD_ShowString(30,210,200,16,16,"OV7725 Error!!");
  169.                 delay_ms(200);
  170.           LCD_Fill(30,210,239,246,WHITE);
  171.                 delay_ms(200);
  172.         }
  173.         LCD_ShowString(30,210,200,16,16,"OV7725 Init OK");
  174.         delay_ms(1500);                  
  175.   OV7670_Brightness(-2);
  176.         OV7670_Contrast(-2);
  177.         TIM6_Int_Init(9999,7199);                        //10Khz計(jì)數(shù)頻率,1秒鐘中斷                                                                          
  178.         EXTI8_Init();                                                //使能定時(shí)器捕獲
  179. //        OV7670_Window_Set(320,240,1);        //設(shè)置窗口          
  180. //  OV7725_CS=0;       
  181.        
  182.         OV7670_Window_Set(12,176,240,320);        //設(shè)置窗口          
  183.   OV7670_CS=0;
  184.         LCD_Clear(BLACK);       
  185.         while(1)
  186.         {
  187.    
  188.                 POINT_COLOR=BLACK;   
  189.     camera_refresh();//更新顯示
  190.                 printf("x =  %d \r\n",xx);
  191.     printf("y =  %d \r\n",yy);
  192.        
  193.     yc=yy-220;
  194.                 xc=xx-220;
  195.                 yc=abs(yc);
  196.                 xc=abs(xc);
  197.                 ENA=yc*2+xc*1.7;
  198.                 ENB=yc*2-xc*1.7;
  199.                 if((xx<150)&&(xx>70)&&(yy<150)&&(yy>70))       {tz();ENA=0;ENB=0;}
  200.                 else if((xx<150)&&(xx>70)&&(yy<220)&&(yy>140)) {qj();}
  201.                 else if((xx<150)&&(xx>70)&&(yy<70)&&(yy>0))    {ht();}
  202.                 else if((xx<220)&&(xx>140)&&(yy<220)&&(yy>0))  {zz();}
  203.                 else if((xx<70)&&(xx>0)&&(yy<220)&&(yy>0))     {yz();}
  204.     TIM_SetCompare2(TIM3,ENA);//ENA
  205.                 TIM_SetCompare3(TIM3,ENB); //ENB
  206.        
  207.                        
  208.         }          
  209.        
  210. }
復(fù)制代碼


顏色識(shí)別小車(chē).7z

1.31 MB, 下載次數(shù): 37, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久精品91 | 亚洲国产一区二区三区 | 在线视频91| www.操.com | 亚洲视频中文字幕 | 日韩美女爱爱 | 91 视频网站 | 成人综合在线视频 | 一区二区高清不卡 | 欧美精品一区二区三区四区五区 | 国内精品视频 | 高清国产一区二区 | 国产福利视频导航 | 成人毛片视频在线播放 | 国产精品区一区二区三区 | 日本色综合 | 久久精品视频一区二区三区 | 久久人 | 99精品电影 | 亚洲国产成人精品久久久国产成人一区 | www.国产精品 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国产精品欧美一区二区三区不卡 | 久久精品免费一区二区 | 日本久久综合 | 欧美一级欧美三级在线观看 | av资源中文在线 | 亚洲永久精品国产 | 国产xxx在线观看 | 免费观看www7722午夜电影 | japanhd成人| 国产高清一区二区三区 | h在线免费观看 | 午夜久久久 | 欧美精品日韩 | 久久久久国产一区二区三区四区 | 亚洲一区二区av | 激情五月婷婷丁香 | av在线播放网站 | 国产精品免费福利 | 成人免费视频在线观看 |