使用51单片机配置CMOS图像传感器_第1页
使用51单片机配置CMOS图像传感器_第2页
使用51单片机配置CMOS图像传感器_第3页
使用51单片机配置CMOS图像传感器_第4页
使用51单片机配置CMOS图像传感器_第5页
已阅读5页,还剩18页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用51单片机配置CMOJS像传感器本项目任务要达到通过MCS-51单片机对OV9121CMO图像传感器进行初始化配置,并控制其工作的目的。从而使CMOSB像传感器能按要求的工作模式进行工作,实现图像的采集和数字图像数据的顺序输出。1器件选择及介绍本课题中用到的器件包括AT89C51单片机,OV9121CMOSS像传感器,SN74LVC4245A平转换芯片。编程语言是C,软件运行环境是KeilC。1.1 CMOS芯片介绍选用OmniVision公司生产的OV912芯片。该芯片是用于数字静态图像和摄像产品的高性能数码相机芯片,为130万像素、镜头尺寸1/2英寸,黑白CMOSS像传感芯片。这款器件

2、集成了一个1280x1024(SXGA)的图像阵列和一个在全分辨率下帧速达到15帧/s的片上10位A/D转换器,并改进了微透镜设计以减少阴影。可以选择采用SXGA/VG够式输出,最大帧速为30帧/so专有的传感器技术采用了先进的计算方法以消除固定模式噪声(FPN,消除拖尾效应,并大幅度减少图像浮散。同时用户可以选择让它工作在主/从模式下。当其工作在从模式下时,主设备向它提供必要的时序信号,控制其工作。除此以外,OV9121还具有SCCB接口,用户可通过该接口对CMOS行编程,修改其内部参数,以满足用户需求。芯片内的控制寄存器允许了时间,极性,以及芯片操作的灵活控制,这样反过来给工程人员在产品设

3、计上带来了很大的自由空间。OV9121芯片采用48个引脚的表面贴装型封装(CLCC-48。如图1所示Q20921PCLK1106|MD734DS35"骁OVDD37DOSNDUHREF33CHSYNCVIVHC321718匈方U日AGNOOV96257OV9121屿alsM018470HUUAJ51IS4WD0ISVCCHG14FSSIN13VGA12EXPST011SCCB_E10RESETMCFREX7PWWLULUI!OA图1.OV9121封装引脚图按其引脚功能这些引脚可分为:1 .电源引脚SVDD,DEVDD,DEGND,AVDD,AGND,ASUB,ADVDD,ADGND,

4、DVDD,DGND,DOVDD,DOGND,SGND131艮)DEGND,AGND,ADGND,DGND,DOGND,SGND,ASUB地AVDD,SVDD,DEVDD,ADVDD,DOVDD+3.3V电压。DVDD接+2.5V电压。2 .模拟信号引脚VrHIGH,NBIT,VrLOW,VcCHG,VrAD2,VcCHG(共6根)前5个均为旁路到地使用一个0.1pF电容,VcCH的旁路到地使用一个1仙F电容。3 .时钟信号XCLK1,XCLK2,PCLK(共3根)XCLK促外部晶振时钟彳S号的输入端,XCLK2g晶振时钟信号的输出端。PCLK1像素时钟输出端,无论是在主从模式下,像素数据输出都

5、与PCLK,HREFKPCLK寸钟同步(如果端口是从模式则为MCLK。4 .SCC珅口弓I脚SCCB_E,SIO_C,SIO_D(共3根)SCCB_E!SCC曲线的使能端,低电平有效。SIO_C是时钟信号输入端,SIO_D是数据输入/输出双向端口。SCC曲线的作用及使用方法将在下文中重点介绍。5,控制和复位弓I脚PWDN,FREX,EXPSTB,VGA,FSIN,RESE共6根)。PWDN(7却):该引脚用于控制芯片的掉电模式(Power-downMode,为高电平有效。因为传感器中有一个内部下拉电阻,所以PWDNI脚的默认状态为低电平。OV912但片要到的掉电或待机的目的有两种可行的方法:一

6、、硬件方式。通过将PWDIM置高电平来选择掉电模式。在此待机模式下,芯片内部设备时钟暂停且所有的内部计数器复位,实际电流小于10仙Ao二、软件方式。通过将COMCJ存器的第四位置高也可以达到掉电的效果。采用软件掉电方式时,待机电流小于1mA所有的寄存器内容保持不变。FREX(8脚),EXPSTB(12脚):帧曝光引脚,FREX是帧曝光模式使能弓I脚,EXPST排为传感器的曝光开始触发器。OV9121支持帧曝光模式,曝光模式必须在有外部快门的支持下工作。设置帧曝光模式的两种方法:一、同时控制FREXF口EXPST图脚。将FREXKEXPSTBH脚上的电平同时拉高可将芯片设置为帧曝光模式。二、保持

7、EXPST的低电平,只控制FREX在这种情况下,传感器的曝光时间是从预充电结束到快门关闭这段时间。当外部主器件控制芯片,并设置FRENI脚为高,传感器阵列会迅速的预充电并保持在复位状态直到EXPSTBJI脚被主器彳拉低。在FRE刈I脚被拉低了之后,视频数据流在时钟控制下按逐行的次序在输出端口输出。只要是多帧传输模式,在完成一帧数据输出后,OV9121芯片会继续输出连续的动态视频数据。VGA传感器分期率选择。OV9121的默认分辨率为1280x1024(SXGA)像素,所有的有源像元都被输出。但OV9121也可以选择输出640x480(VGA)大小的图像,可以应用于对分辨率要求不高的图像捕获。该

8、引脚上0:SXGA分辨率(1280x1024),1:VG6辨率(640x480)。FSIN:帧同步输入。RESET10脚):复位引脚,高电平有效。由于传感器内部有一个下拉电阻,所以RESEEI脚的默认状态是低电平。使传感器复位的两种方法:一、硬件复位。将RESEEI脚置高并维持高电平状态在1ms以上。二、软件复位。将寄存器0x12(COMH中写入0x80。如果采用软件复位法,则建议做两次复位操作以确保传感器状态稳定并准备访问寄存器。6 .数字视频输出引脚D0D9(共10根)OV9121芯片有10位的数字视频端口,其最高位和最低位可以通过修改控制寄存器来互换。OVM25EKtemsl。产跖25E

9、itBcnalIOV9121J10V31室gXHDKiurtH卡itCofinvctlcfiiswape-bltConnectian图28-位连接方法CNiCBtMtio-brtconmettMiswap1。心aCMMcuon图310-位连接方式7 .参考信号输出弓I脚HREF,CHSYNC,VSYN吸3根)HREF水平参考输出。CHSYNC当芯片作为主器件时输出水平同步信号。VSYNC当芯片作为主器件时输出垂直同步信号。当OV9121作为从设备时,CHSYNC口VSYNCH脚改为输入信号,输入主器件提供的水平和垂直同步信号。主器件必须提供下列信号:(1)系统时钟MCLK1,由XCLK侣|脚输

10、入(2) 水平同步MHSYNC由CHSYNC唧输入(3)垂直帧同步MVSYNC由VSYNCI脚输入8.闲置引脚(共4根)1. 2软件运行环境一一KeilCC语言是一种通用的计算机程序设计语言,在国际上十分流行,它既可以用来编写计算机的系统程序,也可以用来编写一般的程序。以往编写计算机系统语言主要使用汇编,单片机更是如此。但是,作为一种低级语言,汇编语言的程序具有很多不可忽视的缺点,包括程序的可读性和可移植性差,调试和排版困难。利用汇编语言编译的单片机应用程序还有周期长的缺点。因此,高级语言逐渐在这一领域中取代了汇编语言,从而解决或减小了上述的种种问题。C语言由于本身既具有高级语言的特点,又可以

11、直接对计算机的硬件进行操作,同时还有表达和运算能力较强的优点,所以成为了替代汇编的一种很好的选择。目前C语言已经可以解决很多以往只能靠汇编来解决的问题。KeilC是目前比较流行的单片机C语言调试和开发软件,由德国KeilSoftware公司开发,该公司多年来一直致力于单片机C语言编译器的研究,该软件已为当下单片机设计者所广泛采用。但是,KeilC和普通的C语言有一些区别,差异主要是KeilC可以让用户针对8051的结构进行程序设计,其它差异主要是由8051的一些局限引起的。KeilC支持符合ANSI标准的C程序设计,它完全支持C的标准指令和单片机优化C扩展指令。特别地,针对8051单片机的自身

12、特点它作了一些特殊扩展。KeilC生成的目标代码效率非常高,生成的语旬编码紧凑,易理解,在开发单片机软件时,能充分发挥单片机的有限资源,所占用的存储空间非常小,体现其高级语言的优势。Keil公司目前已经推出了V7.0以上版本的Cx51编译器,为8051单片机软件开发提供了全新的C语言环境,同时保留的汇编代码高效快速的特点。Keil提供了包括项目(project)管理器、Cx51编译器、Ax51宏汇编、BL51/Lx51连接定位器、RTX51实时操作系统、Simulator软件模拟器以及Monitor51硬件目标调试器等在内的完整开发方案,通过一个集成开发环境(NVision)将这些部份组合在一

13、起。在这个单一而灵活的集成开发环境中,这些功能可以极为简单的被操作。1.3AT89C51单片机介绍及硬件电路连接单片机,即MicroControllerUnit(微控制器件),它是由INTE心司发明的,最早的系列是MCS-48后来有了MCS-51现在还有MCS-96系列,我们经常说的51系列单片机就是MCS-51它是一种8位的单片机,而MCS-96系列则是一种16位的单片机。后来INTEL公司把它的核心技术转让给了世界上很多的小公司,所以有许多公司生产51系列兼容单片机,比如飞利浦的87LPC系列,伟邦的W78原列,达拉斯的DS87系列,现代的GSM97系列等等,目前在我国比较流行的就是美国A

14、TMEL公司的89C51,它是一种带FlashROM的单片机,也是本课题所使用到的单片机。89C51i1片机的引脚及功能介绍如下:P1LD140IVCC户1,1239nPO.OPL233BnPOJP1.3437nP0.2川4536iP0.3P1.5635二Pt.6734nP1Jft33nP0.6RSTAP0r932P0.7"$口1089C5131jTXO/P3,11130_1ALE/PROGMTO/F3.21229nPSENWT1/PJ.J132BnP2JTC/P3.i1427nP2.6T1/P3.51526nP2.5WR"工专1625n2.4SID/IPJJ1714iP2

15、.3XTAL2182J二P2.2XTAL11922ZZIP2.1侬.2021日.图4.单片机的封装引脚图2. VCC(40):电源+5V。3. VSS(20):接地,也就是GND4. XTAL1(19)和XTAL2(18):振荡电路。单片机是一种时序电路,必须有脉冲信号才能工作,在它的内部有一个时钟产生电路,有两种振荡方式,一种是内部振荡方式,只要接上两个电容和一个晶振即可;另一种是外部振荡方式,采用外部振荡方式时,需在XTAL2上加外部时钟信号。在这里我们选用第一种方式。5. PSEN(29):片外ROM®!信号,低电平有效。6. ALE/PROG(30):地址锁存信号输出端/EP

16、RO胸程脉冲输入端。7. RST/VPD(9):复位信号输入端/备用电源输入端。单片机上电后,只要在该引脚上输入24个振荡周期(2个机器周期)宽度以上的高电平就会使单片机复位;若在RSTfVCCd同接一个10仙F的电容,而在RSTfVS之间接一个8.2kQ的下拉电阻,则可实现单片机上电自动复位。8. EA/VPP(31):内/外部ROM4择端。当EAt入高电平时,CPlM行程序,在低4KM址范围内,访问片内程序存储器;在程序计数器PC勺值超过4KM址时,将自动转向执行片外程序存储器的程序9. P0口(39-32):双向I/O口。10. P1口(1-8):准双向通用I/0口11. P2口(21-

17、28):准双向I/0口。12. P3口(10-17):多用途口。1.4电平转换芯片SN74LVC4245A由于单片机的I/O口额定电平为+5V,而OV9121的I/O口为+3.3V,所以为了使硬件电路能够正常工作,我们必须考虑电平转换的问题。在这里选择使用SN74LVC4245A平转换芯片。该芯片为3.3V到5V双向电平转换器,是八位(八进制)同向总线收发器,封装如下图所示:DBtDWhORPWPACKAGE(TOPVIEW)(5V)VcCADIRA1A2A3A4A5A6A7A8GNDGND22332242152D6197188179I6IO1511141213VcCB(33V)VCCB(3-

18、3V)OEB1B2B3B4B5B6B7B8GND图5.电平转换芯片的封装引脚图芯片包含了两个单独的电源轨,A端加VCCA4源,置为+5V,B端加VCCB电源,置为+3.3V。这样可以完成+5V和+3.3V的双向转换。该芯片是为数据总线之间的异步通信专门设计的,由DIR(direction-control)方向控制引脚输入的逻辑电平来决定数据传输的方向是从A到B还是从B到A输出使能端OE可以控制芯片电平转换功能的开启和关闭,如果关闭芯片功能,则芯片两边的总线可以有效地被隔离。功能表:输入端操作OEDIRLL由B到A转换LH由A至UB转换HX两边隔离在本课题研究中,O遴择输入低电平,电平转换的方向

19、可由软件编程控制。由于本课题中只需要对单片机的输出控制波形进行观察,而CMOS片不需要上板实验。所以对DIR的方向控制在程序中并体现。但要实现这一功能并不困难,如果单片机在A端,OV912在琳,需保持DIR在由单片机进行写入传输时为高电平,而每当传输方向改变时,DIR上的电平也同时改变。2程序设计本部分介绍CMOS区动程序的设计,选用KeilC软件,使用C语言来实现。设计的主要思想是自顶向下。2.1 整体系统框架在硬件设计中,应采用层次化,结构化的设计方法。一个完整的任务可以被划分为若干个可操作的模块,编制出相应的行为的或结构的模型,通过调试模拟仿真加以验证后,再把这些模块分配给下一层设计师。

20、用这样的方式,可以达到团队合作完成一个项目的目的,即允许多个设计师参与项目的开发,而每个人承担不同部分的任务。上级设计师可以对下级设计师的设计模块进行验证。在实际的开发中,为了提高设计质量并节省时间和费用,可以通过商业渠道得到其中的一部分模块设计,即购买它的知识产权的使用权。所谓自顶向下的设计思想,就是指该设计从系统级开始,把系统划分为若干个基本单元,而每个基本单元又可以向下划分为下一层的基本单元,直到可以直接使用基本元件来实现为止。这种设计方法的好处是方便从系统划分和管理整个项目,使得复杂设计成为可能。实际设计时,设计师也应该同时结合自底向上的设计方法。采用自顶向下的设计方法,首先,本系统可

21、以被划分为两个主要功能:1.向CMO翁存器写入数据。2.从CMO翁存器读出数据。要完成这两个功能,必须完成以下的模块:SCC亮线传输起始模块,SCCB总线传输停止模块,检查应答模块,产生应答模块,不产生应答模块。每个模块的具体功如下:SCCB总线传输起始模块:使单片机输出如图9所示的时序信号给CMOS片,作为数据开始传输的判断标准。SCCB总线传输停止模块:使单片机输出如图10的时序信号给CMOS5片,作为数据停止传输的判断标准。检查应答模块:在每一相的前八位传输结束后,第九位由从器件(此时是OV9121来决定。故单片机在这个时候检查SIO_D数据线上的逻辑电平,放入CY寄存器中。产生应答模块

22、:SIO_D数据线上产生一个由低到高的跳变。用于单片机从CMO图像传感器芯片中读出数据时数据传输成功的应答。3.2.2程序主体介绍SCCB函数是本程序最重要的部分,完成根据三相数据传输的标准格式完成向OV9121的指定寄存器中写入或读出数据的功能。其中调用的功能子模块包括:SCCBstart(),提供起始信号。SCCBstop(),提供结束信号。SCCBreceiveByte(),数据接收。SCCBsendByte(),数据发送。SCCBRecAck(),检查应答。SCCBAck(),应答。Delay_1(time),延迟一定时间。SCCBS数有三个参数:ID-Address主机地址,Sub-

23、Address从地址,以及hex,如果函数用于写数据则表示待写入的数据,如果用于读数据则表示读出数据存放的位置。规定了OV9121在写数据时的ID-Address是0x60,用于读数据时是0x610SCC圜数的主要构思是:先由单片机向OV9121发送主机地址,然后发送从地址,这样构成了一个两相写数据环。调用的函数是SCCBsendByte()。接下来对主机地址的第八位进行读写判断。如果是写,则依旧由单片机调用SCCBsendByte()函数向OV9121发送写数据,这样,这三次传输就构成了一个三相写数据环。而如果是读,则由单片机再一次向OV9121发送主机地址,然后调用SCCBreceiveB

24、yte()函数,通过SIO_D数据线由OV9121向单片机写入数据,这两次传输构成了一个两相读数据环,而OV9121的寄存器地址是由上面的两相写数据环决定的。当然,在每次传输完成之后,都需要完成一次握手。如果传输是写,则在SCCBsendByte()函数之后需要调用SCCBRecAck()函数,对OV9121请求应答,并通过得到的应答来判断是传输成功继续进行下一步传输,还是发生错误结束程序。如果传输是读,则在传输结束后由单片机发送一个应答信号表示成功。由于本课题需要完成的任务是对CMOSS行配置,所以一般只需要用到三相写数据传输。该部分的程序流程图如下图所示:图6.写数据部分程序流程图在mai

25、n函数中,可以直接调用SCCEg数,向OV9121的指定寄存器中写入或读出数据。程序参加附录二。3.3硬件电路设计选择单片机的P1.0口作为SCCB_EP1.6作为SIO_C,P1.7作为SIO_D)在单片机上电后,这三个口可以正常工作。在KeilC下运行代码,观察端口P1,P1.0表示SCCB_E,P1.6fe示SIO_C,P1.7表小SIO_D,如图所小:ParallelPort1(ParallelPort1Port1Fl:诳E7_Eis0“9Fort1.7Bits0Fl:|0x7E一尸*些*犷ins:UkTE'Ins:|0xFE问间P1.0口在程序运行时处于低电平状态,P1.6端

26、口周期性的变化,P1.7端口按照输出数据做相应的变化。可见代码可以正常运行,可以用于配置CMOS片。用KEILC51或其他的单片机开发软件把源代码汇编成HE双件;然后用编程器把汇编文件烧写入单片机中;再把单片机插入实验板中,可以看到软件的执行结果。附录引脚序号名称功能/描述01SVDD电源为像元阵列提供3.3V电压02VrHIGH模拟传感器高参考-旁路到地使用一个0.1pF电容附录03NBIT模拟传感器位线参考一旁路到地使用一个0.1pF电容04DEVDD电源为传感器阵列解码器提供3.3V的电源05DEGND电源传感器阵列解码器的地线06VrLOW模拟传感器低参考-旁路到地使用一个0.1pF电

27、容07PWDN输入(0)a掉电模式使能,高有效08FREX输入(0)快照触发器,用来激个快照序列09NC无连接10RESET输入(0)芯片复位,高有效11SCCB_E输入(0)SCCEg口使能,彳氐有效12EXPSTB输入(0)快照曝光开始触发器0:传感器开始曝光一只在快照模式中有效1:传感器保持在复位模式13VGA输入(0)传感器分辨率选择0:SXGAb辨率(1280x1024)1:VG的辨率(640x480)14FSIN输入(0)帧同步输入15VcCHG模拟传感器参考-旁路到地使用一个0.1仙F电容16AVDD电源为模拟电路提供3.3V电源17AGND电源模拟电路的地线18ASUB电源模拟

28、电路衬底的地线19ArAD2模拟A/D转换器参考-旁路到地使用一个0.1pF电容20ADVDD电源为A/D转换器提供3.3V电源21ADGND电源A/D转换器的地线22DVDD电源为数字电路提供2.5V电源23DGND电源数字电路的地线24D0输出数字视频输出位025D1输出数字视频输出位126D2输出数字视频输出位227D3输出数字视频输出位328D4输出数字视频输出位429XCLK1输入时钟晶振输入30XCLK2输出时钟晶振输出31PCLK输出像素时钟输出32D5输出数字视频输出位533D6输出数字视频输出位634D7输出数字视频输出位口35D8输出数字视频输出位836D9输出数字视频输出

29、位937DOVDD电源为数字视频端口提供3.3V电源38DOGND电源数字视频端口的地线39HREF输出水平参考输出40CHSYNC;输出当芯片作为主器件时输出水平同步信号41VSYNC输出当芯片作为主器件时输出垂直同步信号42NC无连接43NC无连接44NC无连接45SIO_DI/OSCCBI口数据I/O46SIO_C输入SCCE#时钟输入47VcCHG模拟传感器参考-旁路到地使用一个1仙F电容48SGND电源像元阵列的地线a.输入(0)代表一个内部下拉低电阻附录二:程序代码:#include<INTRINS.H>#include<AT89X51.H>#include

30、<stdio.h>/*全局符号定义*/#defineHIGH1#defineLOW0#defineucharunsignedchar#defineERRORCOUNT1sbitSCCB_E=P1A0;sbitSIO_C=P1A6;sbitSIO_D=P1A7;/*/voidmain(void)bitSCCB(ucharID_Address,unsignedintsub_Address,ucharhex);uchara=0x08,b=0x23,c=0xa0,d=0x53,e=0x4a,f=0x83,g=0x20,h=0xf6,m;unsignedintID_Address=0x61,

31、sub_address=0x0000;/SCCB(0x60,0x37,a);/单屏和多屏/SCCB(0x60,0x15,c);/水平场信号变换/SCCB(0x60,0x18,d);SCCB(0x60,0x17,b);/水平窗口变成一行象素384个/SCCB(0x60,0x1A,e);/SCCB(0x60,0x10,f);/暴光时间控制/SCCB(0x60,0x19,g);/垂直窗口调整288个行象素;/SCCB(0x60,0x13,h);/自动和手动暴光SCCB(0x61,0x19,m);/*提供工作时序中的起始位*/voidSCCBstart(void)(SIO_D=HIGH;SCCB_E=

32、HIGH;SIO_C=HIGH;_nop_();/SIO_D的充电时间大于15nsSCCB_E=LOW;_nop_();/SCCB_E下降沿到SIO_D下降沿的时间差不小于1.25us_nop_();SIO_D=LOW;_nop_();SIO_C=LOW;_nop_();)/*提供工作时序中的停止位*/voidSCCBstop(void)(SCCB_E=LOW;SIO_C=LOW;SIO_D=LOW;_nop_();SIO_C=HIGH;SIO_D=HIGH;_nop_();SCCB_E=HIGH;SIO_D=HIGH;_nop_();)/*检查应答位*/*bit*/voidSCCBRecAc

33、k(void)(SIO_C=LOWSIO_D=LOW;_nop_();SIO_C=HIGH;CY=SIO_D;_nop_();SIO_C=LOW;_nop_();/因为返回值总是放在CY中的/return(CY);)/*对SCC亮线产生应答*/voidSCCBAck(void)(SIO_D=0;SIO_C=1;_nop_();_nop_();SIO_C=0;_nop_();SIO_D=1;)/*向SCC亮线写数据*/voidSCCBsendByte(ucharsendbyte)(uchardataj=8;for(;j>0;j-)(SIO_C=0;_nop_();_nop_();_nop_();_nop_();_nop_();sendbyte<<=1;/CY=sendbyteA7;SIO_D=CY;SIO_C=1;_nop_();_nop_();_nop_();)/SIO_C=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论