圣龙扬特-AVR电子

标题: 单片机通过VGA控制板控制52寸大尺寸显示器程序 [打印本页]

作者: vgalcd    时间: 2013-3-3 16:32
标题: 单片机通过VGA控制板控制52寸大尺寸显示器程序
给大家分享一个单片机通过【VGA控制板】控制52寸大尺寸显示器程序,给大家学习研究!因为字数有限制,只能给前面的串口通讯和协议程序了。
[attach]210[/attach]
单片机演示程序和通讯协议,
#include<Atmel/AT89x52.H>
//定义颜色数据类型(可以是数据结构,有什么不明白的可以加我QQ交流2321069078)
//*************************************************************
void InitUART(void)         //串口初始化使用22.1184M晶体
{
      SCON = 0x50;                 //选择模式1,8位数据格式,使能UART
     PCON |= 0x80;                 //波特率加倍
     TMOD =TMOD| 0x20;               //定时器1:模式2 ,自动装载初值   
       //波特率计算公式:TH1=TL1=256-(2*22.1184*1000000)/(32*12*baud)
       //若选115200波特率则TH1=TL1=256-(2*22.1184*1000000)/(32*12*115200)=0xff
       //若选19200波特率则TH1=TL1=256-(2*22.1184*1000000)/(32*12*19200)=0xfa
     TH1 = 0xfa;              
     TL1 = 0xfa;
       TR1 = 1;                         //定时器1计数使能
       REN = 1;                //允许串口接受使能
}
/*
******************************************************************
*
* 名称:    write_byte()
* 功能:    向串口发送一个字节的数据
* 入口参数:i为待发送的字节数据
******************************************************************
*/
void UART_SendByte(unsigned char i)
{
       SBUF=i;        //发送本次数据
       while(TI==0){}//等待发送完毕
    TI=0;
}
void SetVariable(unsigned int adr,unsigned short nBytes,unsigned char *m_VarP)
{
    unsigned char temp;
    unsigned short m_CheckCRC;//命令校验
       UART_SendByte(0x81); //开始,固定,一个字节
       UART_SendByte(0x0);          //命令类型,设置变量
       UART_SendByte(0x2);          //接收方的设备号
       m_CheckCRC=0x81+0x0+0x2;
       temp=adr&0xff;
       UART_SendByte(temp); //地址1
       m_CheckCRC=m_CheckCRC+temp;
       temp=(adr>>8)&0xff;
       UART_SendByte(temp); //地址2
       m_CheckCRC=m_CheckCRC+temp;
       temp=(adr>>16)&0xff;
       UART_SendByte(temp); //地址3
       m_CheckCRC=m_CheckCRC+temp;
       temp=(adr>>24)&0xff;
       UART_SendByte(temp); //地址4
       m_CheckCRC=m_CheckCRC+temp;   
       temp=(nBytes)&0xff;
       UART_SendByte(temp); //个数低8位
       m_CheckCRC=m_CheckCRC+temp;                  
       temp=(nBytes>>8)&0xff;
       UART_SendByte(temp); //个数高8位
       m_CheckCRC=m_CheckCRC+temp;   
       while(nBytes!=0)
       {
           temp=*m_VarP;
              UART_SendByte(temp);
              m_CheckCRC=m_CheckCRC+temp;   
           nBytes--;
           m_VarP++;
       }
       UART_SendByte(m_CheckCRC);
       UART_SendByte(m_CheckCRC>>8);
}

作者: 铜河    时间: 2013-3-3 17:05
我还以为是直接输出VGA信号,结果是串口数据。
作者: 小涛电子工作室    时间: 2013-3-3 20:42
这方案很多的  都是用CPLD或FPGA做了一个单片机的显卡
作者: vgalcd    时间: 2013-5-19 21:49
不错,是用FPGA做的。公司叫【广州易显科技有限公司】,你可以到他们网站上去了解一下。做的很好的。




欢迎光临 圣龙扬特-AVR电子 (http://avr.cnta.net/) Powered by Discuz! X2.5