找回密码
 立即注册

QQ登录

只需一步,快速开始

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

使用野火STM32单片机配合OV7725与上位机山外调试助手拍照源码

[复制链接]
跳转到指定楼层
楼主
使用的原工程是野火资料提供的,在此基础上 我将FIFO中发往LCD的RGB565数据通过usart串口输送到上位机,再利用山外调试助手显示出来。


单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "./ov7725/bsp_ov7725.h"
  3. #include "./lcd/bsp_ili9341_lcd.h"
  4. #include "./led/bsp_led.h"   
  5. #include "./usart/bsp_usart.h"
  6. #include "./key/bsp_key.h"  
  7. #include "./systick/bsp_SysTick.h"

  8. extern uint8_t Ov7725_vsync;

  9. unsigned int Task_Delay[NumOfTask];


  10. extern OV7725_MODE_PARAM cam_mode;


  11. /**
  12.   * @brief  主函数
  13.   * @param  无  
  14.   * @retval 无
  15.   */
  16. int main(void)         
  17. {               

  18.         float frame_count = 0;
  19.         uint8_t retry = 0;

  20.         /* 液晶初始化 */
  21.         ILI9341_Init();
  22.         ILI9341_GramScan ( 3 );
  23.         
  24.         LCD_SetFont(&Font8x16);
  25.         LCD_SetColors(RED,BLACK);

  26.   ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);        /* 清屏,显示全黑 */
  27.         
  28.         /********显示字符串示例*******/
  29.   ILI9341_DispStringLine_EN(LINE(0),"BH OV7725 Test Demo");

  30.         USART_Config();
  31.         LED_GPIO_Config();
  32.         Key_GPIO_Config();
  33.         SysTick_Init();
  34. //        printf("\r\n ** OV7725摄像头实时液晶显示例程** \r\n");
  35.         
  36.         /* ov7725 gpio 初始化 */
  37.         OV7725_GPIO_Config();
  38.         
  39.         LED_BLUE;
  40.         /* ov7725 寄存器默认配置初始化 */
  41.         while(OV7725_Init() != SUCCESS)
  42.         {
  43.                 retry++;
  44.                 if(retry>5)
  45.                 {
  46.                         printf("\r\n没有检测到OV7725摄像头\r\n");
  47.                         ILI9341_DispStringLine_EN(LINE(2),"No OV7725 module detected!");
  48.                         while(1);
  49.                 }
  50.         }


  51.         /*根据摄像头参数组配置模式*/
  52.         OV7725_Special_Effect(cam_mode.effect);
  53.         /*光照模式*/
  54.         OV7725_Light_Mode(cam_mode.light_mode);
  55.         /*饱和度*/
  56.         OV7725_Color_Saturation(cam_mode.saturation);
  57.         /*光照度*/
  58.         OV7725_Brightness(cam_mode.brightness);
  59.         /*对比度*/
  60.         OV7725_Contrast(cam_mode.contrast);
  61.         /*特殊效果*/
  62.         OV7725_Special_Effect(cam_mode.effect);
  63.         
  64.         /*设置图像采样及模式大小*/
  65.         OV7725_Window_Set(cam_mode.cam_sx,
  66.                                                                                                                 cam_mode.cam_sy,
  67.                                                                                                                 cam_mode.cam_width,
  68.                                                                                                                 cam_mode.cam_height,
  69.                                                                                                                 cam_mode.QVGA_VGA);

  70.         /* 设置液晶扫描模式 */
  71. //        ILI9341_GramScan( cam_mode.lcd_scan );
  72.         
  73.         
  74.         
  75. //        ILI9341_DispStringLine_EN(LINE(2),"OV7725 initialize success!");
  76. //        printf("\r\nOV7725摄像头初始化完成\r\n");
  77.         
  78.         Ov7725_vsync = 0;
  79.         
  80.         
  81.         while(1){
  82.                 /*接收到新图像进行显示*/
  83.                 if( Ov7725_vsync == 2 )
  84.                 {
  85.                         USART_SendBits(DEBUG_USARTx,0x01);
  86.                         USART_SendBits(DEBUG_USARTx,0xFE);
  87.                         frame_count++;
  88.                         FIFO_PREPARE;                          /*FIFO准备*/                                       
  89.                         ImagDisp(cam_mode.lcd_sx,
  90.                                                                 cam_mode.lcd_sy,
  91.                                                                 cam_mode.cam_width,
  92.                                                                 cam_mode.cam_height);                        /*采集并显示*/
  93.                         USART_SendBits(DEBUG_USARTx,0xFE);
  94.                         USART_SendBits(DEBUG_USARTx,0x01);
  95.         
  96.                         Ov7725_vsync = 0;                        
  97.                         LED1_TOGGLE;

  98.                 }
  99.                
  100.                 /*检测按键*/
  101.                 if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON  )
  102.                 {
  103.                         /*LED反转*/
  104.                         LED2_TOGGLE;

  105.                 }
  106.                 /*检测按键*/
  107.                 if( Key_Scan(KEY2_GPIO_PORT,KEY2_GPIO_PIN) == KEY_ON  )
  108.                 {
  109.                         /*LED反转*/
  110.                         LED3_TOGGLE;                        
  111.                         
  112.                                 /*动态配置摄像头的模式,
  113.                             有需要可以添加使用串口、用户界面下拉选择框等方式修改这些变量,
  114.                             达到程序运行时更改摄像头模式的目的*/
  115.                         
  116.                                 cam_mode.QVGA_VGA = 0,        //QVGA模式
  117.                                 cam_mode.cam_sx = 0,
  118.                                 cam_mode.cam_sy = 0,        

  119.                                 cam_mode.cam_width = 320,
  120.                                 cam_mode.cam_height = 240,

  121.                                 cam_mode.lcd_sx = 0,
  122.                                 cam_mode.lcd_sy = 0,
  123.                                 cam_mode.lcd_scan = 3, //LCD扫描模式,本横屏配置可用1、3、5、7模式

  124.                                 //以下可根据自己的需要调整,参数范围见结构体类型定义        
  125.                                 cam_mode.light_mode = 0,//自动光照模式
  126.                                 cam_mode.saturation = 0,        
  127.                                 cam_mode.brightness = 0,
  128.                                 cam_mode.contrast = 0,
  129.                                 cam_mode.effect = 1,                //黑白模式
  130.                         
  131.                         /*根据摄像头参数写入配置*/
  132.                         OV7725_Special_Effect(cam_mode.effect);
  133.                         /*光照模式*/
  134.                         OV7725_Light_Mode(cam_mode.light_mode);
  135.                         /*饱和度*/
  136.                         OV7725_Color_Saturation(cam_mode.saturation);
  137.                         /*光照度*/
  138.                         OV7725_Brightness(cam_mode.brightness);
  139.                         /*对比度*/
  140.                         OV7725_Contrast(cam_mode.contrast);
  141.                         /*特殊效果*/
  142.                         OV7725_Special_Effect(cam_mode.effect);
  143.                         
  144.                         /*设置图像采样及模式大小*/
  145.                         OV7725_Window_Set(cam_mode.cam_sx,
  146.                                                                                                                                 cam_mode.cam_sy,
  147.                                                                                                                                 cam_mode.cam_width,
  148.                                                                                                                                 cam_mode.cam_height,
  149.                                                                                                                                 cam_mode.QVGA_VGA);

  150.                         /* 设置液晶扫描模式 */
  151.                         ILI9341_GramScan( cam_mode.lcd_scan );
  152.         }
  153.                
  154.                 /*每隔一段时间计算一次帧率*/
  155.                 if(Task_Delay[0] == 0)  
  156.                 {                        
  157. //                        printf("\r\nframe_ate = %.2f fps\r\n",frame_count/10);
  158.                         frame_count = 0;
  159.                         Task_Delay[0] = 10000;
  160.                 }
  161.         }
  162.         
  163. }




  164. /*********************************************END OF FILE**********************/
复制代码

提供源码参考:
液晶实时显示.7z (762.76 KB, 下载次数: 90)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:956087 发表于 2022-3-23 15:34 | 只看该作者
能用吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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