网站首页  |  关于强联  |  产品展示  |  典型应用  | 人才招聘  |  联系我们  |  强联淘宝店1强联淘宝店2
视频产品
   字符叠加器系列(多用于监控)
通用视频字符叠加模块QL504A 热门

通用视频字符叠加器QL505A

四路通用字符叠加器QL505-4
   电视字幕机系列(多用于电视广告)
通用高级电视字幕机QLV6255
全球通用电视字幕机QLV6331
8路电视字幕机QL668(有二维码 热门
4路电视字幕机QL664(有二维码 热门
   视频叠加专用系列
带十字线的测深测长字符叠加器X500S 热门
十字线圆形矩形角度图形字符叠加器QL650 热门
计米器、测深测长字符叠加器X600热门
旋转编码器测深测长字符叠加器X500
矿井深度测量视频字符叠加器 X500
水深测量视频字符叠加器 X500
距离、长度测量视频字符叠加器X500
视频十字线叠加器QL511SA模块热门
视频十字线叠加器QL510S (老产品)
温湿度字符叠加器QL505-W1    
高级静态图文字幕机QLV6300A
   典型应用
电视字幕机在KTV行业的应用
字幕机在酒店医院有线电视的应用
QL62XX字幕机/模块的应用参考
□ QLV6255字幕机在商场商铺的应用
其它产品                
温湿度变送器QL102
旋转编码器测长测深测角速模块 X200
无线数传模块  可用于字幕机…
USB转RS485模块 可用于字幕机…
温湿度变送器QL101B
广告机 数字标牌 教学 商品导购
教学、导购、广告 3合1系统 TMA
多媒体课件制作软件 KJ-TMA
数字标牌/广告机软件 QL68S

QL50系列视频字符叠加器串口UART接口测试程序
      2012年4月20日起 强联科技QL50xx系列产品软硬件全面升级 ,硬件版本号为“1203”,运行速度提高1倍,新增可设置点阵扫描时钟频率功能,其中QL504A模块新增4路10位AD转换器。PC测试软件升级为QL500-V8.4。
 ■ QL50系列视频字符叠加器串口UART接口测试程序 (keil)
/* QL505A,QL503F,QL508F,QL504A等 的UART接口测试程序
2012-04-10
测试程序适用所有8051单片机芯片
在STC11F32XE,AT89S51/STC89C51RC/STC12C5608AD/STC12C5404 测试过
QL505A,QL503F,QL508F,QL504A等 的UART接口

适用:QL505A,QL503F,QL508F,QL504A等产品
这个程序包含了很多内容,包括如何读取时钟数据显示,如何调用"72 X 96点阵的31个常用的数字、日期、箭头等图片式字符
"显示,如何编写串口程序;供读者参考,以后将逐步解析程序;
*/
//#include<STC12C5410AD.H>
#include<reg51.h>
#include<intrins.h>
#include<stdio.h>
#include<string.h>
#define UN unsigned char
#define Uint unsigned int

sbit SYN=P1^3;//此脚连接同步信号(可不连接)
sfr16 DPTR=0x82;
sbit R_T=P3^7;//RS485收发控制引脚
unsigned char bdata bm;//在片内RAM中定义一个可位选址的变量
sbit bm0=bm^0;
sbit bm1=bm^1;
sbit bm2=bm^2;
sbit bm3=bm^3;
sbit bm4=bm^4;
sbit bm5=bm^5;
sbit bm6=bm^6;
sbit bm7=bm^7;
unsigned char read_1byte(void);//读出一个字节
void write_1byte(unsigned char x);//写入一个字节
void cmd_5byte(UN a,b,c,d);//连续写四个字节
void csf_uart();//串口初始化
void csf_spi(void);//SPI初始化
void csf_djq(void);//初始化叠加器

void Set_smclk(UN idata x);//设置点阵扫描时钟,仅v1203以上版本有效
void MoRen_Color(UN ys);//设置默认字符颜色,ys高位0-7,低位0-7
void cls(UN ys);//按指定颜色清屏0-7
void Ding_Wei(UN H,L);//定位,设置要显示的起始位置H:行号1-12,L:列号1-24
void Size(UN size,h);//字符大小,设置指定行的字符大小,size:大小0-3,h:行号1-12
void Dis1Char(UN idata nmH,nmL);//按字符内码显示1字符,nmH:内码高字节,nmL:内码低字节
void Hang_ju(UN idata x);//行距设定0-15
void HDP(UN idata x);////设定水平方向开始显示的位置x:0-63
void VDP_P(UN idata x);//PAL方式下设定垂直方向开始显示的位置0-63
void VDP_N(UN idata x);//在PAL制式下按NTSC格式显示,设定扫描的起始垂直位置,范围从0-63
void Neiwai_SaoMiao(UN idata x);//内外频及扫描方式选择
void TimeKG(UN x,ys);//时间开关
UN ReadTime(UN x);//读出时间
void WriteTime(UN sj,dat);
void delay_ms(unsigned int nMs);//豪秒级延时<65535ms,,延时函数读者可根据实际使用编写

void distp(UN h,l,n);
void diskong(UN h,l);
void dis_time();
void dis_date(UN x);

#define DZM 0

UN idata allcs[7];
#define sjh allcs[0]//时间显示行
#define sjl allcs[1]//时间显示列
#define spwy allcs[2]//水平位移
#define czwy allcs[3]//垂直位移
#define hangju allcs[4]//行距
#define sjms allcs[5]//时间显示模式
#define sjkg allcs[6]//时间显示开关

//72 X 96点阵的31个常用的数字、日期、箭头等图片式字符的首地址
unsigned int code neima[]={0xA4A0,0xA4B0,0xA4C0,0xA4D0,0xA4E0,0xA4F0,0xA5A0,0xA5B0,
0xA5C0,0xA5D0,0xA5E0,0xA5F0,0xA6A0,0xA6B0,0xA6C0,0xA6D0,0xA6E0,0xA6F0,0xA7A0,0xA7B0,0xA7C0,0xA7D0,0xA7E0,
0xA7F0,0xA8A0,0xA8B0,0xA8C0,0xA8D0,0xA8E0,0xA8F0,0xA2A0};
void delay(unsigned int x);
UN code bj0[]={"调用保存的说明文字 123⒉789"};
UN sz[8];
UN settime=0;
//============================================================================
//主程序
//============================================================================
void main(void)
{ UN i,h,l,m;

R_T=0;//RS485处于接收状态
//WDT_CONTR=0x3f;
delay_ms(1000);//延时,因为需要有设备初始化的过程
//WDT_CONTR=0x3f;
csf_uart();//初始化UART
//csf_spi();//初始化SPI
csf_djq();//初始化叠加器


//=====从第3行第8列显示0123
Ding_Wei(3,8);
Dis1Char(0xa3,0xb0);Dis1Char(0xa3,0xb1);Dis1Char(0xa3,0xb2);Dis1Char(0xa3,0xb3);

//=====从第4行第1列显示UN code bj0[]={"调用保存的说明文字 123⒉78"};
m=sizeof(bj0)-1;
Ding_Wei(4,1);
for(i=0;i<m/2;i++)
{Dis1Char(bj0[i*2],bj0[i*2+1]);}
//=================================================

//=========显示72*96点阵字符 875
distp(6,8,8);
distp(6,11,7);
distp(6,14,5);
//=====================================
sjms=0;
Set_smclk(2);//设置点阵扫描时钟
ES=EA=1;

while(1)

{ // WDT_CONTR=0x3f;

if(sjkg==1)//刷新时间
{ Ding_Wei(sjh,sjl);
if(sjms<2)
{dis_date(sjms);Dis1Char(0xa1,0xa1);}
dis_time();
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
void csf_uart()//串口初始化
{
TMOD=0x22;TH1=0xfa;TL1=0xfa;SCON=0x50;PCON=0x80;
TR1=1;//IT0=1;EX0=1;ES=EA=1;
TH0=TL0=6;TR0=0;ET0=0;
}

void csf_djq(void)
{UN i;
hangju=0;//行距为0
spwy=6;//水平位移为6
czwy=36;//垂直位移为36
sjkg=1;//开时间显示
sjh=11;//时间显示行为11
sjl=3;//时间显示列为3
MoRen_Color(0x71);
Neiwai_SaoMiao(12);//先使用内频进行显示参数的设置,以保证参数设置有效
HDP(spwy);//设定水平方向开始显示的位置x:0-63
VDP_P(czwy);//PAL方式下设定垂直方向开始显示的位置0-63
Hang_ju(hangju);//行距设定为
delay_ms(1);
i=1;do{ Size(0,i);i++;}while(i<13);//把12行字符大小全设为0号
delay_ms(50);
Neiwai_SaoMiao(17);//扫描方式设为14
TimeKG(0,0x71);//关叠加器时间显示
cls(1);//按黑色清屏
}



void surt() interrupt 4
{;
}


//==========================================================================
//秒0,分1,时2,日3,月4,星期5,年6
void dis_time()
{UN ff,shi,ge;

ff=ReadTime(2);
//delay_ms(1);
shi=ff>>4;
ge=ff&0x0f;
if(shi>0){Dis1Char(0xa3,0xb0+shi);}else{Dis1Char(0xa1,0xa1);}
Dis1Char(0xa3,0xb0+ge);//时
Dis1Char(0xa1,0xc3);//:

//delay_ms(10);

ff=ReadTime(1);
//delay_ms(1);
shi=ff>>4;
ge=ff&0x0f;
Dis1Char(0xa3,0xb0+shi);
Dis1Char(0xa3,0xb0+ge);//分
Dis1Char(0xa1,0xc3);//

//delay_ms(10);

ff=ReadTime(0);
//delay_ms(1);

shi=ff>>4;
ge=ff&0x0f;
Dis1Char(0xa3,0xb0+shi);
Dis1Char(0xa3,0xb0+ge);//miao
//delay_ms(10);
out:;
}



//==========================================================================
//秒0,分1,时2,日3,月4,星期5,年6
void dis_date(UN x)
{UN ff,shi,ge;
if(x==0)
{Dis1Char(0xa3,0xb2);Dis1Char(0xa3,0xb0);
ff=ReadTime(6);
//delay_ms(1);
shi=ff>>4;
ge=ff&0x0f;
Dis1Char(0xa3,0xb0+shi);Dis1Char(0xa3,0xb0+ge);//
Dis1Char(0xa3,0xad);//-
}


//delay_ms(10);


ff=ReadTime(4);
//delay_ms(1);
shi=ff>>4;
ge=ff&0x0f;
Dis1Char(0xa3,0xb0+shi);Dis1Char(0xa3,0xb0+ge);Dis1Char(0xa3,0xad);//-

//delay_ms(10);

ff=ReadTime(3);
//delay_ms(1);
shi=ff>>4;
ge=ff&0x0f;
Dis1Char(0xa3,0xb0+shi);Dis1Char(0xa3,0xb0+ge);//-


//delay_ms(10);

}



void cls(UN ys)//清屏选择屏幕背景颜色
{cmd_5byte(1,ys,0);}
//---------------------------------------------
void Neiwai_SaoMiao(UN idata x)//内外屏及扫描方式选择
{cmd_5byte(2,x,0);}

//----------------------------------------
void HDP(UN idata x)////设定水平方向开始显示的位置x:0-63
{cmd_5byte(3,x,0);}

//----------------------------------------
void VDP_P(UN idata x)//PAL方式下设定垂直方向开始显示的位置0-63
{cmd_5byte(4,x,0);}

//----------------------------------------
void huifucc(void)//恢复出厂
{cmd_5byte(20,0xaa,0xaa);}

//----------------------------------------
void VDP_N(UN idata x)//在PAL制式下按NTSC显示,设定扫描的起始垂直位置,范围从0-63
{cmd_5byte(5,x,0);}

//-------字符大小,设置指定行的字符大小,size:大小,h:行号
void Size(UN size,h)
{cmd_5byte(6,size,h);}

//-------定位,设置要显示的起始位置--------------------
void Ding_Wei(UN H,L)
{cmd_5byte(7,H,L);}

//----------------------------------------
void Dis1Char(UN idata nmH,nmL)//按字符内码显示1字符
{cmd_5byte(8,nmH,nmL);}

//-------设置默认字符颜色--------------------
void MoRen_Color(UN ys)
{cmd_5byte(9,ys,0);}

//行距设定0-15
void Hang_ju(UN idata x)
{cmd_5byte(10,x,0);}

//开关时间显示x=0关,x=1开;ys为时间的颜色
void TimeKG(UN x,ys)//
{cmd_5byte(0X16,x,ys);
delay_ms(10);//关闭时间显示至少有4ms的延时
}
//------------------------------
//分别写入时间(sj),秒,分,时,日,月,星期,年 ,dat为数据
void WriteTime(UN sj,dat)
{cmd_5byte(0X17,sj,dat);}
//------------------------------

//分别读出时间,秒,分,时,日,月,星期,年
UN ReadTime(UN x)//
{UN a;
unsigned int y;
ES=0;
cmd_5byte(0X18,x,0);
y=0;while(RI==0){y++;if(y>0xffff){return(0xff);}}a=SBUF;RI=0;
ES=1;
return(a);
}

//---------------------------------------------
void Set_smclk(UN idata x)//设置点阵扫描时钟
{cmd_5byte(0x47,0,x,0);}


//---------------------------------------------
void cmd_5byte(UN a,b,c)//连续写5个字节--1个指令
{ R_T=1;//切换RS485为发送数据
SBUF=0x55;while(TI==0);TI=0;
SBUF=a;while(TI==0);TI=0;
SBUF=b;while(TI==0);TI=0;
SBUF=c;while(TI==0);TI=0;
SBUF=DZM;while(TI==0);TI=0;
R_T=0;//切换RS485为接收数据
}
//--------------------------------------------------------------

//-------------------------------------------------------------------------
void delay_ms(unsigned int nMs)//豪秒级的延时<65535ms
{
unsigned int n=0;
TMOD=0x21;
TR0=1;
while(n<nMs)////利用T0做定时计数器,循环采样,直到达到定时值
{
TH0=0;
TL0=20;
while(TH0<4)
{;
}
n++;
}
TR0=0;
TMOD=0x22;TH1=0xfa;TL1=0xfa;
}


void distp(UN h,l,n)
{UN H,L;
//DPTR=neima(n);
H=neima[n]>>8;L=neima[n];
Ding_Wei(h,l);Dis1Char(H,L);L++;Dis1Char(H,L);L++;Dis1Char(H,L);L++;h++;
Ding_Wei(h,l);Dis1Char(H,L);L++;Dis1Char(H,L);L++;Dis1Char(H,L);L++;h++;
Ding_Wei(h,l);Dis1Char(H,L);L++;Dis1Char(H,L);L++;Dis1Char(H,L);//L++;h++;
//Ding_Wei(h,l);Dis1Char(H,L);L++;Dis1Char(H,L);L++;Dis1Char(H,L);L++;Dis1Char(H,L);
}

//空显示
void diskong(UN h,l)
{
Ding_Wei(h,l);Dis1Char(0xa2,0xe4);Dis1Char(0xa2,0xe4);Dis1Char(0xa2,0xe4);
Ding_Wei(h+1,l);Dis1Char(0xa2,0xe4);Dis1Char(0xa2,0xe4);Dis1Char(0xa2,0xe4);
Ding_Wei(h+2,l);Dis1Char(0xa2,0xe4);Dis1Char(0xa2,0xe4);Dis1Char(0xa2,0xe4);//L++;h++;
//Ding_Wei(h,l);Dis1Char(H,L);L++;Dis1Char(H,L);L++;Dis1Char(H,L);L++;Dis1Char(H,L);
}



//短延时
void delay(unsigned int x)
{do{x--;}
while(x!=0);
}
 


下载 QL50_UART_TEST1.rar

 · 视频字符叠加器QL508F,QL505A,QL504A,QL503F--中文简体版演示软件下载 V8.4版
 · 内码转换程序下载
 · QL505A视频字符叠加叠加器 用户手册下载(PDF)  更新日期 2012-04-20

 
 业务咨询电话:0595-28011587

  技术咨询电话:0595-22570937 王工
 
 
 
泉州强联单片机科技有限公司  Copyright 2004-2018 www.qlmcu.com All Rights Reserved
备案号:闽ICP备05037255号