图像采集需要进行同步信号的处理,比通常的A/D数据采集过程复杂,电路的设计也较为困难。51本身速度及程序存储器和数据存储器的寻址空间的限制,要读取并存储每秒30帧。640*480像素大小的一幅图像,是相当困难的,因此,51用于图像采集系统,主要利用单片机作为一个智能控制器,起协调图像采集系统各部分之间工作的作用。
C程序如下
******************************************************************************
51单片机主程序用于对CMOS图像传感器芯片OV7620的初始化设置,程序设计的关键是用单片机的普通I/O口模拟OV7620的SCCB总线操作
SCCB总线的特点是数据信号端SDA在SCK的高电平期间需要保持不变,SCK的低电平期间允许改变状态
******************************************************************************
SDA BIT P1.0 //数据线
SCK BIT P1.1 //时钟线
SBB BIT P1.2 //片选
ORG 0000H
LJMP MAIN
MAIN:MOV SP,#70H
MOV IE,#00H
MOV P1,#0FFH //SCCB总线悬浮
CLR SBB //SCCB总线准备工作
LCALL START //启动SCCB总线
MOV A,#00H
LCALL SENDCODE //发送ID号
MOV A,#28H
LCALL SENDCODE //发送模式寄存器地址
MOV A,#20H
LCALL SENDCODE //发送你是控制字
LCALL END
SJMP $
//启动SCCB总线
START:SETB SCK //启动信号
CLR SDA
RET
//结束SCCB总线
END : CLR SDA //停止信号
SETB SCK
SETB SDA
RET
//通过SCCB总线发送一个字节数据
SENDCODE:MOV R7,#08H //发送一个字节数据
LOOP0:RLC A
MOV SDA,C
SETB SCK
CLR SCK
DJNZ R7,LOOP0
RET
//通过SCCB总线接收一个字节数据
RECODE:MOV R7,#08H //读一个字节
LOOP1:SETB SCK
MOV C, SDA
RLC A
LCALL DELAY
CLR SCK
DJNZ R7,LOOP1
RET
//延时子程序
DELAY:NOP //延时程序,用于调整SCCB总线速率
NOP
NOP
RET
//检查应答位
ACKC: SETB SCL //时钟上升沿
ACALL DELAY
MOV C,SDA //读取数据线状态
CLR SCL
RET //返回
//发送一个应答位
ACKS: SETB SCL
ACALL DELAY
MOV SDA,C //发送应答位,应答位通过进位位C传递
CLR SCL
RET |