目录
一、前言
二、项目简介
1.功能详解
2.主要器件
三、原理图设计
四、PCB硬件设计
1.PCB图
2.PCB板及元器件图
五、程序设计
六、实验效果
七、资料内容
项目分享
一、前言
项目成品图片:
哔哩哔哩视频链接:
https://www.bilibili.com/video/BV1pt421b74E/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2
(资料分享见文末)
二、项目简介
1.功能详解
STM32单片机通过OV7670将图片上传电脑。功能如下:
- 摄像头识别:OV7670摄像头获取图像数据
- 屏幕显示:通过摄像头采集图像,并实时驱动TFT液晶屏显示相应图像。
- 按键拍照:通过按键使屏幕图像暂停或开启采集
- 串口上传电脑:通过USB线把暂停得到的图像上传到电脑串口助手
2.主要器件
- STM32F103RCT6最小系统板
- 2.8寸TFT显示屏
- OV7670摄像头模块
三、原理图设计
四、PCB硬件设计
1.PCB图
2.PCB板及元器件图
五、程序设计
int main(void)
{
unsigned int num=0;
int flag = 0;
Stm32_Clock_Init(16);//初始化时钟
Led_init(); //初始化 LED
Lcd_Gpio_Init();
LCD_Init();
Key_init(); //初始化 KEY1 PA8
OV7670_Gpio_Init();//OV7670引脚初始化,放在串口初始化前面
GPIO_WriteBit(FIFO_OE_PORT, FIFO_OE_PIN, 0);
USART1_init();//初始化串口
TIM3_Configuration();//10Khz的计数频率,计数到5000为500ms
LCD_Fill(0x6666);
printf("Welecom\r\n");
while(!Sensor_init());
LCD_Fill(0xF800);
delayms(100);
num=2;
u8 key; //键值
//二值化阈值
R_a=24;
G_a=53;
B_a=24;
while(1)
{
//Data_LCD_ColorChange_Test();//摄像头扫描测试
//Data_LCD_ColorChange();
Data_LCD_Display();
key=KEY_Scan(0);//不支持连按
if(key==KEY1_PRES)
{
GPIO_WriteBit(FIFO_WR_PORT, FIFO_WR_PIN, 0); //FIFO写禁止
while(1)
{
key = KEY_Scan(0);
if(key==KEY1_PRES)
{
GPIO_WriteBit(FIFO_WR_PORT, FIFO_WR_PIN, 1); //FIFO写使能
break;
}
if(key==KEY2_PRES)
{
send_pic_using_USART();
LED();
delay_ms(1000);//等待1.8秒钟
break;
}
}
}
}
}
六、实验效果
七、资料内容