纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 20369|回复: 2

51单片机控制52寸大尺寸显示器程序

[复制链接]
发表于 2013-3-3 17:42:23 | 显示全部楼层 |阅读模式
给大家分享一个51单片机控制52寸大尺寸显示器程序,给大家学习研究!因为字数有限制,只能给前面的串口通讯和协议程序.
未命名.jpg
单片机演示程序和通讯协议
#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-7-3 12:03:58 | 显示全部楼层
看起来像广告
回复 支持 1 反对 0

使用道具 举报

发表于 2013-7-3 12:04:34 | 显示全部楼层
看起来像是在发广告,不多说了
回复 支持 反对

使用道具 举报

发表于 2022-11-7 19:48:11 | 显示全部楼层
讨债公司 www.zhent.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-22 00:54 , Processed in 0.222797 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表