⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ql503_uart_public.c

📁 通用视频字符叠加模块ql503A技术资料通过简单的SPI或UART即可二次开发视频字符叠加产品。
💻 C
字号:
/********************************************************
视频字符叠加模块(器)UART接口的c51公共函数(仅供参考)
编译环环境: KEIL C 
适用产品:QL501,QL503,QL503A,QL503B,
     注:QL503B型为5字节指令读者请在前面加一字节"0x55"
              void Tx4b(UN a,b,c,d)//连续写4个字节--1个指令
          {      SBUF=0x55;while(TI==0){;}TI=0;//同步字节,QL503B需增加
                 SBUF=a;while(TI==0){;}TI=0;
                 SBUF=b;while(TI==0){;}TI=0;
                 SBUF=c;while(TI==0){;}TI=0;
                 SBUF=d;while(TI==0){;}TI=0;
                }
工作条件:使用AT89S51,11.0592M晶振
程序名称:ql503_uart_public.c
福建泉州强联单片机科技有限公司
网址:http://www.qlmcu.com  电话:0595-22570937
//上传日期2007/02/28,如有更新恕不另行通知
*********************************************************/
#define UN  unsigned char
void csf_uart();//初始化Uart//9600波特率
unsigned char  read_1byte(void);
void  write_1byte(unsigned char x);
void Tx4b(UN a,b,c,d);
void MoRen_Color(UN ys,addr);//设置默认字符颜色,ys高位0-7,低位0-7,addr:地址码
void Cls_Main(UN ys,addr);//按指定颜色清屏0-7,addr:地址码
void Ding_Wei(UN H,L,addr);//定位,设置要显示的起始位置H:行号1-12,L:列号1-24,addr:地址码
void Size(UN size,h,addr);//字符大小,设置指定行的字符大小,size:大小0-3,h:行号1-12,addr:地址码
void Tx_arry(UN idata zfc[],addr);//字符数组的显示,addr:地址码
void Tx_nei_ma(UN idata nmH,nmL,addr);//按字符内码显示1字符,nmH:内码高字节,nmL:内码低字节,addr:地址码
void Hang_ju(UN idata x,addr);//行距设定0-15,addr:地址码
void HDP(UN idata x,addr);////设定水平方向开始显示的位置x:0-63,addr:地址码
void VDP_P(UN idata x,addr);//PAL方式下设定垂直方向开始显示的位置0-63,addr:地址码
void VDP_N(UN idata x,addr);//在PAL制式下按NTSC格式显示,设定扫描的起始垂直位置,范围从0—63,addr:地址码
void Neiwai_SaoMiao(UN idata x,addr);//内外频及扫描方式选择,addr:地址码



void delay_ms(unsigned int nMs);//豪秒级的延时<65535ms,,延时函数读者可根据实际使用编写
//-------按指定颜色清屏0-7----------------
void Cls_Main(UN ys,addr)
{Tx4b(1,ys,0,addr);
 
 delay_ms(1);//至少延时1ms
}
//---------------------------------------------
void Neiwai_SaoMiao(UN idata x,addr)//内外屏及扫描方式选择
{Tx4b(2,x,0,addr);}

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

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

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

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

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

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

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

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

//------------------------------
void Tx_arry(UN idata zfc[],UN idata addr)//字符数组的显示
{UN idata i,j;
j=strlen(zfc);//计算字符串长度	
Tx4b(11,j,2,addr);//开始发送J个字节的字符串
     i=0xff;
     do
     {i++;write_1byte(zfc[i]);}//发送字符代码
     while(i<j-1);
     
     if(j/6==0){delay_ms(1);}////每3个字符约延时1MS,此延时也可放在本函数之后处理
     else{delay_ms(j/6);}    
}
void Tx4b(UN a,b,c,d)//连续写4个字节--1个指令
{    //SBUF=0x55;while(TI==0){;}TI=0;//同步字节,QL503B需增加
      SBUF=a;while(TI==0){;}TI=0;
      SBUF=b;while(TI==0){;}TI=0;
      SBUF=c;while(TI==0){;}TI=0;
      SBUF=d;while(TI==0){;}TI=0;
}
 void  write_1byte(unsigned char x)//写1个字节
{ SBUF=x;while(TI==0){;}TI=0;}
unsigned char  read_1byte(void)//读1个字节
{ while(RI==0){;}RI=0;return(SBUF);}

void csf_uart()
{TMOD=0x21;TH1=0xfa;TL1=0xfa;SCON=0x50;PCON=0x80;//9600波特率
        TR1=1;}
        
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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -