微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 视频信号采集与图象传输技术的研究----基于 EPP 的视频信号采集系统的设计

视频信号采集与图象传输技术的研究----基于 EPP 的视频信号采集系统的设计

时间:01-25 来源:3721RD 点击:

2. 3软件设计

软件包括单片机软件部分和PC机软件部分。单片机软件包括建立通信联系和控制电路中各个信号的调协;PC机软件包括建立通信联系和发送数据。单片机系统初始化完成后,PIC16C73单片机先从RB3发送信号GETRESPONSE给PC机,判断PC机是否已作好发送图象数据的准备;PC机在接到此信号后,从DB25插座的14号线发出信号REASEXD给单片机RB5端,触发其中断,告知其即将发数据;单片机通过执行中断处理程序初始化完接收电路后,再次向PC机发送GETRESPONSE信号,告知已作好接收数据准备;当PC机再次收到GETRESPONSE信号后,确认接收方已作好准备,即开始向接收电路发送数据。

单片机软件和PC机软件分别在wave2.8和Visual C十十6.0下编译通过[32][33]

2. 3. 1信号采集、回放过程管理程序

在本系统中通过对PIC16C73进行编程来控制视频信号的采集、存储与回放,编程思想是利用PIC16C73的PORTB电平变化中断产生中断子程序。在PIC16C73的RB4和RB7引脚上分别接两个开关来产生中断脉冲,控制视频信号的回放和结束,在程序中利用由视频同步分离器分离出的场同步信号电平来保证存储和回放的视频图象是整幅的,场同步信号的波形如图3-8所示。视频信号采集、回放程序框图如图3-15所示。

2. 3. 2 PC机通讯及数字图像的重建程序

视频信号采集系统和PC机的通讯利用VC++6.0进行编程,程序框图如图3-16所示。

在发送数据方面,PC机软件将bmp文件去除文件头、信息头和调色板后,利用malloc函数分配一个足够大的空间(视bmp文件大小而定),将实际位图数据存入这个空间。malloc函数返回指针,利用这个缓冲区发送数据,可以不必每发送-个数就去读文件,从而保证数据的高速传输。PC机为了在Windows
编程环境下输出整块数据,可先用CreateFile函数打开并口,通过这个函数设置好并口参数后,得到一个句柄;利用这个句柄,使用WriteFile函数就可以向并口发送数据了。这比_Outpd函数发送数据快,因为_Outpd函数一次只能发送4个字节,不能发送数据块,每发送4个字节后就需要再读取4个字节;而WriteFile函数可以发送数据块,显然要快得多。由于EPP硬件结构会截断32位的I/O传输,传送数据时实际上产生4个向寄存器+4到+7的快速8位I/O传输,保证在一个独立的8位周期内传递32位的数据,从而保证达到2MB/s的最高传输速率。

2. 4数字图象的结构及处理数字图象

经过并口进入计算机之后,要在电脑中进行重现,图象的重建包括通过软件对同步信号的识别并将数字化的像素重新分配给计算机相应的显示缓冲单元。

3. 4. 1 BMP文件结构

(1) BMP文件组成BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。

(2) BMP文件头BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信

息。

其结构定义如下:
typedef struct tagBITMAPFILEHEADER
{ WORD bfType; //位图文件的类型,必须为BM
DWORD bfSize; //位图文件的大小,以字节为单位
WORD bfReserved1;//位图文件保留字,必须为0
WORD bfReserved2; //位图文件保留字,必须为0
DWORD bfOffBits; //位图数据的起始位置,以相对于位图
//文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;(

3)位图信息头
BMP位图信息头数据用于说明位图的尺寸等信息。

typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;//本结构所占用字节数
LONG biWidth; //位图的宽度,以像素为单位
LONG biHeight; //位图的高度,以像素为单位
WORD biPlanes; //目标设备的级别,必须为1
WORD biBitCount//每个像素所需的位数,必须是1(双色),// 4(16色),8(256色)或24(真 彩色)之一
DWORD biCompression;//位图压缩类型,必须是0(不压缩),// 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
DWORD biSizeImage; //位图的大小,以字节为单位
LONG biXPelsPerMeter; //位图水平分辨率,每米像素数
LONG biYPelsPerMeter; //位图垂直分辨率,每米像素数
DWORD biClrUsed;//位图实际使用的颜色表中的颜色数
DWORD biClrImportant;//位图显示过程中重要的颜色数
} BITMAPINFOHEADER;

(4)颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:
typedef struct tagRGBQUAD
{
BYTE rgbBlue;//蓝色的亮度(值范围为0-255)
BYTE rgbGreen; //绿色的亮度(值范围为0-255)
BYTE rgbRed; //红色的亮度(值范围为0-255)
BYTE rgbReserved;//保留,必须为0
} RGBQUAD;
颜色表中RGBQUAD结构数据的个数由biBitCount来确定:
当biBitCount=1,4,8时,分别有2,16,256个表项;当biBitCount=24时,没有颜色表项。
位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:
typedef struct tagBITMAPINFO
{
BITMAPINFOHEADER bmiHeader; //位图信息头
RGBQUAD bmiColors[1]; //颜色表
} BITMAPINFO;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top