标题:
分享一个有关OV7670的二值化STM32程序
[打印本页]
作者:
藤千盂
时间:
2018-3-7 12:55
标题:
分享一个有关OV7670的二值化STM32程序
单片机源程序如下:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "string.h"
#include "ov7670.h"
#include "tpad.h"
#include "timer.h"
#include "exti.h"
#include "usmart.h"
int main(void)
{
int i;
delay_init(); //延时函数初始化
NVIC_Configuration(); //设置NVIC中断优先级
uart_init(9600); //串口初始化为9600
LED_Init(); //LE端口初始化
LCD_Init();
usmart_dev.init(72); /初始化USMART
POINT_COLOR=BLUE; //字体设置为蓝色
LCD_ShowString(60,50,200,16,16,"ROBOT_Program");
LCD_ShowString(60,70,200,16,16,"Testing.....");
LCD_ShowString(60,230,200,16,16,"OV7670 Init......");
while(OV7670_Init())//初始化OV7670
{
LCD_ShowString(60,230,200,16,16,"OV7670 Error!!");
delay_ms(200);
LCD_Fill(60,230,239,246,WHITE);
delay_ms(200);
}
LCD_ShowString(60,230,200,16,16,"OV7670 Init OK");
delay_ms(1500);
EXTI8_Init();
OV7670_CS=0;
while(1)
{
refresh_BW();
}
}
/*函数功能:黑白二值化(BLACK-WHITE)
* 函数名称:refresh_BW();
*/
void refresh_BW(void)//
{
u32 j;
u16 color;
if(ov_sta==2)
{
LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右 刷新
LCD_SetCursor(0,0); //设置光标
LCD_WriteRAM_Prepare(); //开始写入GRAM
OV7670_CS=0;
OV7670_RRST=0; //开复位度指针
OV7670_RCK=0;
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1; //读指针结束
OV7670_RCK=1;
for(j=0;j<76800;j++)
{
OV7670_RCK=0;
OV7670_RCK=1;
color=GPIOC->IDR&0XFF; //读数据
OV7670_RCK=0;
OV7670_RCK=1;
color=GPIOC->IDR&0XFF; //读数据
color>>=5;
if(color>0x03)
color=0xffff;
else
color=0x0000;
LCD->LCD_RAM=color;
}
OV7670_CS=1;
OV7670_RCK=0;
OV7670_RCK=1;
EXTI_ClearITPendingBit(EXTI_Line8); //清除LINE8上的中断标志位
ov_sta=0; //开始下一次采集
LCD_Scan_Dir(DFT_SCAN_DIR); //回复默认扫描方向
}
}
复制代码
所有资料51hei提供下载:
黑白二值化.rar
(357.12 KB, 下载次数: 27)
2018-3-7 19:21 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1