急需一个OV7725数码管显示程序显示C语言程序,有没有大佬有资源的

列表网公众号列表活动随时有扫我活动不错过
下次自动登录(公共场合慎用)
使用合作网站账号登录:
收藏成功!
您可在个人中心,查看
类&&&&别:
245&元&每个
起订数量:
商家地址:
广东深圳市龙岗区坂田街道办布龙路633号
查看联系方式
查看联系方式
联系我时说明在列表网看到,说不定有意外惊喜哟!
微信扫一扫,快速拨打电话
类型:接触式读卡器
凡从我司华翔天诚购买的智能读卡器读写器产品,均提供相关DEMO软件及SDK开发包,并提供专业的技术支持与服务。批量订购,可为客户定制化丝印LOGO及定制产品。本公司可开据正规销售发票,如需发票,请提前告知我们的客服!
技术支持:戴先生 电话:6 移动手机: 邮箱:
华翔天诚欢迎联系与选购!RD系列接触式IC卡读卡器可对各种MEMORY卡和CPU卡操作,是开发IC卡等相关产品及系统集成必备的前端处理设备。RD系列接触式IC卡读卡器其丰富、完善的接口函数,可方便地应用于工商、电信、邮政、税务、金融、保险、医疗及各种收费、储值、查询网吧收费、计算机安全管理等智能卡管理应用系统中。
RD系列接触式IC卡读卡器外型分为外置和内置两种,适用于各种场合。 具体功能,请参照RD系列接触式IC卡读卡器型号说明。
RD系列接触式IC卡读卡器通讯接口为RS232和USB口可选,USB通讯高速稳定,写卡速度快。 RD系列外置接触式IC卡读写设备型号说明: RD-EB
各种接触式memory卡,国产插拔卡座,串口通讯,220VRD-ET
各种接触式memory卡,国产推推卡座,串口通讯,220VRD-EZ
各种接触式memory卡,国产自弹卡座,串口通讯,220VKRD-EB
各种接触式memory卡,国产插拔卡座,串口通讯,键盘口取电KRD-ET
各种接触式memory卡,国产推推卡座,串口通讯,键盘口取电RD-EB-MX
各种接触式memory卡和CPU卡,国产插拔卡座,串口通讯,220VRD-ET-MX
各种接触式memory卡和CPU卡,国产推推卡座,串口通讯,220VRD-IB
各种接触式memory卡,国产插拔卡座,串口通讯,PC机内5V,软驱大小RD-IT
各种接触式memory卡,国产推推卡座,串口通讯,PC机内5V,软驱大小URD-EB
各种接触式memory卡,国产插拔卡座,USB口通讯和取电URD-ET
各种接触式memory卡,国产推推卡座,USB口通讯和取电URD-EB-MX
各种接触式memory卡和CPU卡,国产插拔卡座,USB口通讯和取电URD-ET-MX
各种接触式memory卡和CPU卡,国产推推卡座,USB口通讯和取电
通讯接口:RS232、USB串口波特率:bps最大功耗:100MW环境温度:0-50℃相对湿度:30%-95% 支持卡型符合ISO7816协议T=0、T=1的CPU卡24C01A/02/04/08/16/32/64、AT45D(B)041、SSF1101、SLE、SLE4404、SLE4406、SLEAT88SC101/2、AT88SCB、AT88SC153、AT88SC1608 软件支持支持Win9x/xp/2K下的32位高级语言开发如VB、Delphi、PB、VFP、VC、C++Builder等。SCO UNIX下的C语言开发,LINUX下的C语言开发。
该读卡器适合多种用途,广泛应用于工商、电信、邮政、税务、金融、保险、医疗及各种收费、储值、查询网吧收费、计算机安全管理等智能卡管理应用系统中。
凡从我司华翔天诚购买的智能读卡器读写器产品,均提供相关DEMO软件及SDK开发包,并提供专业的技术支持与服务。批量订购,可为客户定制化丝印LOGO及定制产品。本公司可开据正规销售发票,如需发票,请提前告知我们的客服!
技术支持:戴先生 电话:6 移动手机: 邮箱:
华翔天诚欢迎联系与选购!
联系我时,请说是在列表网栏目上看到的,谢谢!
小贴士:RD-ET国产推推卡座式芯片卡读写器 写信息由列表网网友发布,其真实性及合法性由发布人负责。列表网仅引用以供用户参考。详情请阅读列表网免责条款。
请在查看您收到的留言
手机号码:
获取确认码
已发送(120)
所在城市:
留言内容:
快捷留言:
想了解一下详情,请尽快联系我。
我对您的商品感兴趣,请尽快和我联系。
RD-ET国产推推卡座式芯片卡读写器 写 相关广告
金牌会员推荐
&2017 列表网&琼ICP备号-12&增值电信业务经营许可证B2-&ov7725摄像头调试经验-寄存器配置
之前调过一款摄像头,是MT9V034, 最近在调的是OV7725摄像头,感觉OV7725摄像头比MT9V034要难,特别是寄存器配置,要想玩转一款摄像头,必须要熟悉它的寄存器配置,而且要亲自去调试,然后才能对它有很好的理解。下面是自己的一点见解,可能不完全对,不过希望对初学者有所帮助吧。
一、将所有寄存器的值复位到默认值状态。
寄存器地址
寄存器名称
二、 设置图像输出格式。
寄存器地址
寄存器名称
//QVGA(320*240 ),YUV输出格式
QVGA(320*240), 0x28
QVGA (320*240),0x3C
//QVGA(320*240 )
//QVGA(320*240 )
//QVGA(320*240 )
//QVGA(320*240 )
----------------------------------------------------------------------------------------------------------------------------------
Common Control 7
Bit[7]: SCCB Register Reset
0: No change
1: Resets all registers to default values
Bit[6]: Resolution selection
Bit[5]: BT.656 protocol ON/OFF selection
Bit[4]: Sensor RAW
Bit[3:2]: RGB output format control
00: GBR4:2:2
01: RGB565
10: RGB555
11: RGB444
Bit[1:0]: Output format control
01: Processed Bayer RAW
11: Bayer RAW
-------------------------------------------------------------------------------------------------------------------------------
三、和图片曝光强弱有关的寄存器
1、自动曝光
寄存器地址
寄存器名称
//整个窗口进行自动曝光
--------------------------------------------------------------------------------------------------------------------------0D
Common Control 4
Bit[7:6]: PLL frequency control
00: Bypass PLL
01: PLL 4x
10: PLL 6x
11: PLL 8x
Bit[5:4]: AEC evaluate window
00: Full window
01: 1/2 window
10: 1/4 window
11: Low 2/3 window
Bit[3:0]: Reserved
-------------------------------------------------------------------------------------------------------------------------
打开自动增益(AGC)、自动白平衡(AWB)、自动曝光(AEC)
-------------------------------------------------------------------------------------------------------------------------13
Common Control 8
Bit[7]: Enable fast AGC/AEC algorithm
Bit[6]: AEC - Step size limit
0: Step size is limited to vertical blank
1: Unlimited step size
Bit[5]: Banding filter ON/OFF
Bit[4]: Enable AEC below banding value
Bit[3]: Fine AEC ON/OFF control
Bit[2]: AGC Enable
Bit[1]: AWB Enable
Bit[0]: AEC Enable
-----------------------------------------------------------------------------------------------------------------------------------
//控制自动曝光强弱
---------------------------------------------------------------------------------------------------------------------------------------------
AGC/AEC - Stable Operating Region (Upper Limit)
----------------------------------------------------------------------------------------------------------------------------------------------
//控制自动曝光的强弱
----------------------------------------------------------------------------------------------------------------------------------------------------
AGC/AEC - Stable Operating Region (Lower Limit)
------------------------------------------------------------------------------------------------------------------------------------------------------
//快速模式工作区
---------------------------------------------------------------------------------------------------------------------------------------------------------------
AGC/AEC Fast Mode Operating Region
Bit[7:4]: High nibble of upper limit of fast mode control zone
Bit[3:0]: High nibble of lower limit of fast mode control zone
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//使能控制图片亮暗的寄存器
---------------------------------------------------------------------------------------------------------------------------------------
Special Digital Effect Control
Bit[7]: Reserved
Bit[6]: Negative image enable
Bit[5]: Gray scale image enable
Bit[4]: V fixed value enable
Bit[3]: U fixed value enable
Bit[2]: Contrast/Brightness enable
Bit[1]: Saturation enable
Bit[0]: Hue enable
----------------------------------------------------------------------------------------------------------------------------------------
//定义自动曝光时图片的亮度增益,此值越大,图片越亮
--------------------------------------------------------------------------------------------------------------------------9B
Brightness Control
--------------------------------------------------------------------------------------------------------------------------
//定义BRIGHT
的高位是正数,还是负数,如果为0x0e,则图片亮度是负的;0-255,图片越来越亮;0 ~ -127,图片越来越亮-----------------------------------------------------------------------------------------------------------------------------------
Sign Bit for Hue and Brightness
Bit[7:4]: Reserved
Bit[3]: Brightness sign bit
Bit[2]: Reserved
Bit[1]: Sign bit for HueSin (in Cr’ equation)
Bit[0]: Sign bit for HueSin (in Cb’ equation)
--------------------------------------------------------------------------------------------------------------------------------------
2、手动曝光
寄存器地址
寄存器名称
//整个窗口进行自动曝光
-----------------------------------------------------------------------------------------------------------------------0D
Common Control 4
Bit[7:6]: PLL frequency control
00: Bypass PLL
01: PLL 4x
10: PLL 6x
11: PLL 8x
Bit[5:4]: AEC evaluate window
00: Full window
01: 1/2 window
10: 1/4 window
11: Low 2/3 window
Bit[3:0]: Reserved
-----------------------------------------------------------------------------------------------------------------------
关闭自动曝光(AEC)
------------------------------------------------------------------------------------------------------------------------------------13
Common Control 8
Bit[7]: Enable fast AGC/AEC algorithm
Bit[6]: AEC - Step size limit
0: Step size is limited to vertical blank
1: Unlimited step size
Bit[5]: Banding filter ON/OFF
Bit[4]: Enable AEC below banding value
Bit[3]: Fine AEC ON/OFF control
Bit[2]: AGC Enable
Bit[1]: AWB Enable
Bit[0]: AEC Enable
------------------------------------------------------------------------------------------------------------------------------------------
//曝光值得高8位
,改变AECH和AEC的值,可以改变图片亮度
---------------------------------------------------------------------------------------------------------------------------------------------------08
Exposure Value – AEC MSBs
Bit[7:0]: AEC[15:8] (see register AECfor AEC[7:0
Automatically updated based on chip output format
----------------------------------------------------------------------------------------------------------------------------------------------------
//曝光值得低8位
---------------------------------------------------------------------------------------------------------------------------------------------------10
Exposure Value
Bit[7:0]: AEC[7:0] (see register AECHfor AEC[15:8])
-------------------------------------------------------------------------------------------------------------------------------------------------------
没有更多推荐了,阿里巴巴中国站和淘宝网会员帐号体系、《阿里巴巴服务条款》升级,完成登录后两边同时登录成功。
单片机控制程序
阿里巴巴找货神器为您推荐
单片机控制程序
同款货源、相似货源。
让千万商家找到您
感兴趣的产品
感兴趣的产品
感兴趣的产品
感兴趣的产品单片机 以及 编程语言
确定要删除当前文章?鹰眼摄像头(OV7725)的使用
凭借着OV7620,将已经调好速度控制和角度控制的车子能跑起来了。基础功能实现后就开始对车子优化了。
一个好的人眼睛最重要,同样对于一个好的平衡车,摄像头传感器最重要。因此我决心首先做的是对摄像头的优化。
OV7725(鹰眼摄像头)
使用:KEIL 鹰眼摄像头 超核库
OV7620的缺点:
OV”CMOS彩色/黑白图像传感器。它支持连续和隔行两种,VGA与QVGA两种图像格式;最高像素为664×492,为30fps。而他的缺点正是在此,帧速率太低。每秒中只能产生30唱图像。可以确定他的VSYNC信号为30HZ。
帧速率不高为何是缺点:
因为车子跑到一定速度之后,图像变化很快,帧的速率低导致了道路实时性差,不能够及时刷新道路情况。所以会影响智能车的提速。
鹰眼摄像头(OV7725)的优点:
1.高达150HZ的帧频率。
2.硬件二值化。(也有人认为是缺点。)
3.BGA封装:
但是鹰眼的制造商野火,采用捆绑销售,每次买的时候必须购买套装。不过商家也是为了购买者着想,因为很多人不会自己驱动OV7725,只会对例程进行修改,不会移植,这样的购买者买套件确实也不失为一个好方法。
不过博主比较穷,在一番软磨之下,商家给我单卖了一个鹰眼摄像头(OV7725),在此谢谢商家了。
驱动鹰眼的步骤:
1.知道该款摄像头的工作特点和方式。
第一大步:理解时序图。
2.在我介绍OV7620的使用(http://blog.csdn.net/lxk7280/article/details/)的时候,就说了理解时序图是驱动一款摄像头的重中之重。尤其是对于鹰眼这款比较特殊的摄像头。
接下来一个必须理解的地方,否则就驱动不了该款摄像头。
那就是:鹰眼摄像头的一个PCLK信号传来的时候,会传输8个像素点。而不是OV7620的一个PCLK信号,对应1个像素点。
So:如果一行为80个点,那么一个行信号中只会有10个PCLK信号,而不是80个PCLK信号。
示例:采集到:0xFF 0X00
对应二值化的像素点。
黑黑黑黑白白白白
为了更好的让自己理解鹰眼摄像头的时序图,我在实验室的示波器上仔细看了下各个信号的波形。如下图:
场信号和行信号波形:
看完这么多关于时序图的波形后,相信大家对鹰眼摄像头的波形都了解了。
接下来开始进攻第二大部分:SCCB的操作。
3. 没有对SCCB进行操作,就没办法操作摄像头。
有人会奇怪为什么使用OV系列的摄像头每次都要进行SCCB的操作呢?难道它自己不会保存上次的操作结果吗?
原因是:OV系列的摄像头的寄存器是EEPROM,不稳定,数据很容易丢失,因此程序每次初始化时我们都要重新写入寄存器设置。
需要修改的寄存器有,PCLK速率,帧率、图像亮度、对比度、色饱和度、镜像等功能。
首先给出OV7725的SCCB各个功能对应的寄存器的写入值:
#ifndef _OV7725_REG_H_
#define _OV7725_REG_H_
#define OV7725_ID
#define OV7725_GAIN
#define OV7725_BLUE
#define OV7725_RED
#define OV7725_GREEN
#define OV7725_BAVG
#define OV7725_GAVG
#define OV7725_RAVG
#define OV7725_AECH
#define OV7725_COM2
#define OV7725_PID
#define OV7725_VER
#define OV7725_COM3
#define OV7725_COM4
#define OV7725_COM5
#define OV7725_COM6
#define OV7725_AEC
#define OV7725_CLKRC
#define OV7725_COM7
#define OV7725_COM8
#define OV7725_COM9
#define OV7725_COM10
#define OV7725_REG16
#define OV7725_HSTART
#define OV7725_HSIZE
#define OV7725_VSTRT
#define OV7725_VSIZE
#define OV7725_PSHFT
#define OV7725_MIDH
#define OV7725_MIDL
#define OV7725_LAEC
#define OV7725_COM11
#define OV7725_BDBase
#define OV7725_BDMStep
#define OV7725_AEW
#define OV7725_AEB
#define OV7725_VPT
#define OV7725_REG28
#define OV7725_HOutSize
#define OV7725_EXHCH
#define OV7725_EXHCL
#define OV7725_VOutSize
#define OV7725_ADVFL
#define OV7725_ADVFH
#define OV7725_YAVE
#define OV7725_LumHTh
#define OV7725_LumLTh
#define OV7725_HREF
#define OV7725_DM_LNL
#define OV7725_DM_LNH
#define OV7725_ADoff_B
#define OV7725_ADoff_R
#define OV7725_ADoff_Gb
#define OV7725_ADoff_Gr
#define OV7725_Off_B
#define OV7725_Off_R
#define OV7725_Off_Gb
#define OV7725_Off_Gr
#define OV7725_COM12
#define OV7725_COM13
#define OV7725_COM14
#define OV7725_COM16
#define OV7725_TGT_B
#define OV7725_TGT_R
#define OV7725_TGT_Gb
#define OV7725_TGT_Gr
#define OV7725_LC_CTR
#define OV7725_LC_XC
#define OV7725_LC_YC
#define OV7725_LC_COEF
#define OV7725_LC_RADI
#define OV7725_LC_COEFB
#define OV7725_LC_COEFR
#define OV7725_FixGain
#define OV7725_AREF1
#define OV7725_AREF6
#define OV7725_UFix
#define OV7725_VFix
#define OV7725_AWBb_blk
#define OV7725_AWB_Ctrl0 0x63
#define OV7725_DSP_Ctrl1 0x64
#define OV7725_DSP_Ctrl2 0x65
#define OV7725_DSP_Ctrl3 0x66
#define OV7725_DSP_Ctrl4 0x67
#define OV7725_AWB_bias
#define OV7725_AWBCtrl1
#define OV7725_AWBCtrl2
#define OV7725_AWBCtrl3
#define OV7725_AWBCtrl4
#define OV7725_AWBCtrl5
#define OV7725_AWBCtrl6
#define OV7725_AWBCtrl7
#define OV7725_AWBCtrl8
#define OV7725_AWBCtrl9
#define OV7725_AWBCtrl10 0x72
#define OV7725_AWBCtrl11 0x73
#define OV7725_AWBCtrl12 0x74
#define OV7725_AWBCtrl13 0x75
#define OV7725_AWBCtrl14 0x76
#define OV7725_AWBCtrl15 0x77
#define OV7725_AWBCtrl16 0x78
#define OV7725_AWBCtrl17 0x79
#define OV7725_AWBCtrl18 0x7A
#define OV7725_AWBCtrl19 0x7B
#define OV7725_AWBCtrl20 0x7C
#define OV7725_AWBCtrl21 0x7D
#define OV7725_GAM1
#define OV7725_GAM2
#define OV7725_GAM3
#define OV7725_GAM4
#define OV7725_GAM5
#define OV7725_GAM6
#define OV7725_GAM7
#define OV7725_GAM8
#define OV7725_GAM9
#define OV7725_GAM10
#define OV7725_GAM11
#define OV7725_GAM12
#define OV7725_GAM13
#define OV7725_GAM14
#define OV7725_GAM15
#define OV7725_SLOP
#define OV7725_DNSTh
#define OV7725_EDGE0
#define OV7725_EDGE1
#define OV7725_DNSOff
#define OV7725_EDGE2
#define OV7725_EDGE3
#define OV7725_MTX1
#define OV7725_MTX2
#define OV7725_MTX3
#define OV7725_MTX4
#define OV7725_MTX5
#define OV7725_MTX6
#define OV7725_MTX_Ctrl
#define OV7725_BRIGHT
#define OV7725_CNST
#define OV7725_UVADJ0
#define OV7725_UVADJ1
#define OV7725_SCAL0
#define OV7725_SCAL1
#define OV7725_SCAL2
#define OV7725_SDE
#define OV7725_USAT
#define OV7725_VSAT
#define OV7725_HUECOS
#define OV7725_HUESIN
#define OV7725_SIGN
#define OV7725_DSPAuto
#endif //_OV7725_REG_H_
接着,对一些驱动OV7725时需要用到的值进行宏定义。
#ifndef _OV7725_EAGLE_H_
#define _OV7725_EAGLE_H_
#include "OV7725_REG.h"
#define uint8 unsigned char
#define uint16 unsigned short
#define OV7725_HREF_PORT
#define OV7725_HREF_PIN
#define OV7725_VSYNC_PORT PTB
#define OV7725_VSYNC_PIN
//像素中断
#define OV7725_PCLK_PORT
#define OV7725_PCLK_PIN
//配置摄像头 属性?
#define MAX_ROW
//定义摄像头图像宽度
#define MAX_COL
//定义摄像头图像高度
typedef struct
/*寄存器地址*/
/*寄存器值*/
/*返回数组元素的个数*/
#define ARR_SIZE( a ) ( sizeof( (a) ) / sizeof( ((a)[0]) ) )
ov7725_eagle_init(uint8 *imgaddr);
ov7725_eagle_get_img(void);
//_OV7725_EAGLE_H_
然后,撰写关于鹰眼摄像头的函数:
#include "sys.h"
#include "gpio.h"
#include "delay.h"
#include "dma.h"
#include "ftm.h"
#include "lptm.h"
#include "flash.h"
#include "stdio.h"
#include "uart.h"
#include "OV7725_REG.h"
#include "OV7725_Eagle.h"
#include "sccb.h"
#define OV7725_EAGLE_Delay_ms(time)
DelayMs(time)
volatile extern unsigned int
Col_Num,C//行计数
volatile extern unsigned char
Image[MAX_COL][MAX_ROW];
volatile extern unsigned char F
*ov7725_eagle_img_
//内部函数声明
static uint8 ov7725_eagle_reg_init(void);
//鹰眼 寄存器 初始化
static void ov7725_eagle_port_init();
//鹰眼 引脚 初始化
void OV7725_Init()
while(ov7725_eagle_reg_init() == 0);
ov7725_eagle_port_init();
鹰眼ov7725管脚初始化(内部调用)
void ov7725_eagle_port_init()
GPIO_InitTypeDef GPIO_InitStruct1;
DMA_InitTypeDef DMA_InitStruct1;
//数据IO口初始化
for(i=0;i&8;i++)
GPIO_InitStruct1.GPIO_Pin =
GPIO_InitStruct1.GPIO_InitState = Bit_SET;
GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_DISABLE;
GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct1.GPIOx = PTD;
GPIO_Init(&GPIO_InitStruct1);
//像素中断 PCLK 初始化
GPIO_InitStruct1.GPIO_Pin = OV7725_PCLK_PIN;
GPIO_InitStruct1.GPIO_InitState = Bit_SET;
GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_DMA_RISING;
GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStruct1.GPIOx = OV7725_PCLK_PORT;
GPIO_Init(&GPIO_InitStruct1);
//行中断 HREF 初始化
GPIO_InitStruct1.GPIO_Pin = OV7725_HREF_PIN;
GPIO_InitStruct1.GPIO_InitState = Bit_SET;
GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_RISING;
GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStruct1.GPIOx = OV7725_HREF_PORT;
GPIO_Init(&GPIO_InitStruct1);
// 场中断 VSYNC 初始化
GPIO_InitStruct1.GPIO_Pin = OV7725_VSYNC_PIN;
GPIO_InitStruct1.GPIO_InitState = Bit_SET;
GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_RISING;
//GPIO_IT_RISING
GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_IPD;
//GPIO_Mode_IPD
GPIO_InitStruct1.GPIOx = OV7725_VSYNC_PORT;
GPIO_Init(&GPIO_InitStruct1);
DMA_InitStruct1.Channelx
= DMA_CH1;
//DMA 1通道
DMA_InitStruct1.PeripheralDMAReq
=PORTE_DMAREQ;
//C端口(PCLK) 上升呀触发
DMA_InitStruct1.MinorLoopLength = 170;
//传输次数 超过摄像头每行像素数即可
DMA_InitStruct1.TransferBytes = 1;
//每次传输1个字节
DMA_InitStruct1.DMAAutoClose
//连续采集
DMA_InitStruct1.EnableState = ENABLE;
//初始化后立即采集
DMA_InitStruct1.SourceBaseAddr =(uint32_t)&PTD-&PDIR;//摄像头端口接D0-D7
DMA_InitStruct1.SourceMajorInc = 0;
//地址不增加
DMA_InitStruct1.SourceDataSize = DMA_SRC_8BIT;
//8BIT数据
DMA_InitStruct1.SourceMinorInc = 0;
//目前修改到22点37
DMA_InitStruct1.DestBaseAddr =(uint32_t)ov7725_eagle_img_
//(uint32_t)ov7725_eagle_img_
//DMA 内存
//uint8_t DMABuffer[400];
DMA_InitStruct1.DestMajorInc = 0;
DMA_InitStruct1.DestDataSize = DMA_DST_8BIT;
DMA_InitStruct1.DestMinorInc = 1;
//每次传输 +1个字节
DMA_Init(&DMA_InitStruct1);
鹰眼ov7725场中断服务函数
void PORTB_IRQHandler(void)//功
能:PORTB 外部中断服务 //V
uint8 i=10;
if((PORTB-&ISFR&&i)==1)
PORTB-&ISFR|=(1&&10);
Col_Num = 0;
DMA_SetEnableReq(DMA_CH1,DISABLE);
//close DMA ISr
NVIC_EnableIRQ(PORTA_IRQn);//行
NVIC_DisableIRQ(PORTB_IRQn);//场
void PORTA_IRQHandler(void)//功
能:PORTA 外部中断服务//Herf
unsigned int Send_B
uint8 colour[2] = {254, 0};
DMA_InitTypeDef DMA_InitStruct1;
uint8 i=14,j,k;
if((PORTA-&ISFR&&i)==1);
PORTA-&ISFR|=(1&&14);
if(Col_Num++ & 15)
//消隐区啦
if(Col_Num%2)
//进入行采集
DMA_InitStruct1.Channelx
= DMA_CH1;
//DMA 1通道
DMA_InitStruct1.PeripheralDMAReq
=PORTE_DMAREQ;
//E端口(PCLK) 上升呀触发
DMA_InitStruct1.MinorLoopLength = 24;
//传输次数 超过摄像头每行像素数即可
DMA_InitStruct1.TransferBytes = 1;
//每次传输1个字节
DMA_InitStruct1.DMAAutoClose
//连续采集
DMA_InitStruct1.EnableState = ENABLE;
//初始化后立即采集
DMA_InitStruct1.SourceBaseAddr =(uint32_t)&PTD-&PDIR;//摄像头端口接D0-D7
DMA_InitStruct1.SourceMajorInc = 0;
//地址不增加
DMA_InitStruct1.SourceDataSize = DMA_SRC_8BIT;
//8BIT数据
DMA_InitStruct1.SourceMinorInc = 0;
DMA_InitStruct1.DestBaseAddr =(uint32_t)Image[Col];
//DMA 内存
//uint8_t DMABuffer[400];
DMA_InitStruct1.DestMajorInc = 0;
DMA_InitStruct1.DestDataSize = DMA_DST_8BIT;
DMA_InitStruct1.DestMinorInc = 1;
//每次传输 +1个字节
DMA_Init(&DMA_InitStruct1);
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
if(Col==MAX_COL)
//暂时先取200行
//一场采集完成
DMA_SetEnableReq(DMA_CH1,DISABLE);
NVIC_DisableIRQ(PORTA_IRQn);//行
UART_SendData(UART4,0XFF); //////调试用
for(j=0;j&80;j++)
for(k=0;k&23;k++)
Send_Buffer = colour[ (Image[j][k] && 7 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[j][k] && 6 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[j][k] && 5 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[j][k] && 4 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[j][k] && 3 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[j][k] && 2 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[j][k] && 1 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[j][k] && 0 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
NVIC_EnableIRQ(PORTB_IRQn);//场
/*OV7725初始化配置表*/
reg_s ov7725_eagle_reg[] =
//寄存器,寄存器值次
{OV7725_COM4
{OV7725_CLKRC
{OV7725_COM2
{OV7725_COM3
{OV7725_COM7
{OV7725_HSTART
{OV7725_HSIZE
{OV7725_VSTRT
{OV7725_VSIZE
{OV7725_HREF
{OV7725_SCAL0
{OV7725_AWB_Ctrl0
{OV7725_DSPAuto
{OV7725_DSP_Ctrl2
{OV7725_DSP_Ctrl3
{OV7725_DSP_Ctrl4
#if (OV7725_EAGLE_W == 80)
{OV7725_HOutSize
#elif (OV7725_EAGLE_W == 160)
{OV7725_HOutSize
#elif (OV7725_EAGLE_W == 240)
{OV7725_HOutSize
#elif (OV7725_EAGLE_W == 320)
{OV7725_HOutSize
#if (OV7725_EAGLE_H == 60 )
{OV7725_VOutSize
#elif (OV7725_EAGLE_H == 120 )
{OV7725_VOutSize
#elif (OV7725_EAGLE_H == 180 )
{OV7725_VOutSize
#elif (OV7725_EAGLE_H == 240 )
{OV7725_VOutSize
{OV7725_EXHCH
{OV7725_GAM1
{OV7725_GAM2
{OV7725_GAM3
{OV7725_GAM4
{OV7725_GAM5
{OV7725_GAM6
{OV7725_GAM7
{OV7725_GAM8
{OV7725_GAM9
{OV7725_GAM10
{OV7725_GAM11
{OV7725_GAM12
{OV7725_GAM13
{OV7725_GAM14
{OV7725_GAM15
{OV7725_SLOP
{OV7725_LC_RADI
{OV7725_LC_COEF
{OV7725_LC_XC
{OV7725_LC_COEFB
{OV7725_LC_COEFR
{OV7725_LC_CTR
{OV7725_BDBase
{OV7725_BDMStep
{OV7725_SDE
{OV7725_BRIGHT
{OV7725_CNST
{OV7725_SIGN
{OV7725_UVADJ0
{OV7725_UVADJ1
uint8 ov7725_eagle_cfgnum = ARR_SIZE( ov7725_eagle_reg ) ; /*结构体数组成员数目*/
鹰眼ov7725寄存器 初始化
初始化结果(0表示失败,1表示成功)
uint8 ov7725_eagle_reg_init(void)
uint16 i = 0;
uint8 Sensor_IDCode = 0;
SCCB_GPIO_init();
//OV7725_Delay_ms(50);
if( 0 == SCCB_WriteByte ( OV7725_COM7, 0x80 ) ) /*复位sensor */
DEBUG_PRINTF("\n警告:SCCB写数据错误");
return 0 ;
OV7725_EAGLE_Delay_ms(50);
if( 0 == SCCB_ReadByte( &Sensor_IDCode, 1, OV7725_VER ) )
/* 读取sensor ID号*/
DEBUG_PRINTF("\n警告:读取ID失败");
// DEBUG_PRINTF("\nGet ID success,SENSOR ID is 0x%x", Sensor_IDCode);
DEBUG_PRINTF("\nConfig Register Number is %d ", ov7725_eagle_cfgnum);
if(Sensor_IDCode == OV7725_ID)
for( i = 0 ; i & ov7725_eagle_ i++ )
if( 0 == SCCB_WriteByte(ov7725_eagle_reg[i].addr, ov7725_eagle_reg[i].val) )
DEBUG_PRINTF("\n警告:写寄存器0x%x失败", ov7725_eagle_reg[i].addr);
// DEBUG_PRINTF("\nOV7725 Register Config Success!");
由于鹰眼摄像头的特色,直接导致了图像发送给上位机的时候需要进行一些细操作,才能在上位机上看到相应图像。如:
for(i=0;i&80;i++)
//本来应该是278
for(j=0;j&20;j++)
//暂时为了提高上位机刷图速度降低两边宽度
Send_Buffer = colour[ (Image[i][j] && 7 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[i][j] && 6 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[i][j] && 5 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[i][j] && 4 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[i][j] && 3 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[i][j] && 2 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[i][j] && 1 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
Send_Buffer = colour[ (Image[i][j] && 0 ) & 0x01 ];
UART_SendData(UART4,Send_Buffer);
接下来就能成功的在上位机上看到相应的图像了。
大概总结:对于每一款摄像头的操作,先对它进行SCCB的写操作,初始化成自己需要的分辨率、模式,等等。
SCCB初始化之后,再进行场中断、行中断、像素中断的函数处理编辑。
最后发送到上位机上,进行显示和处理。很多上位机都可以让用户自己在Visual Stdio上编写自己的算法,直接在上位机上处理,很赞。
没有更多推荐了,

我要回帖

更多关于 数码管程序 的文章

 

随机推荐