头像-310982

084ea927e58f37bf

个人成就

获得 0 次赞

帮助过0人

跪谢:迪文屏C51例程详解

迪文配套提供的《迪文 DGUS 屏用户开发指南Ver4.3》里面的C51例程实在是看不懂,厂家表示也不反馈给技术部门,实在没办反了,跪求各位大神给详细标注一下,尤其是打问号的地方,跪谢!!!#include <REG52.h>sbit JDQ1=P1^0;         //温度控制继电器 //串口变量  unsigned char RCVOKRCVDATARX5ARXA5RXLENRXCMDRXADRHRXADRLRXDLENTXTIME; unsigned char TX_PRX_P; //收发缓冲区的指针位置//配置参数区(DGUS 0x83 指令)32B对应 DGUS 0x1000-0x100F 地址    ???unsigned char CFGBUF[32];     ???//发送给 DGUS 屏的数据读取指令和写指令缓冲区//TXBUF[12]:TXBUF[13]用于显示曲线 CH1 接口    ???//TXBUF[20]-TXBUF[84]0x82 写 DGUS 屏的 64B 变量数据,对应 DGUS 0x0000-0x001F 地址    ???unsigned char TXBUF[84]={0x5A0xA50x40x830x100x00x10                         0x5A0xA50x40x840x10x00x00x5A0xA50x430x820x000x00};    ???void main(void){   int ij;      /@@*开始设置串口*/  PCON=PCON|0x80; //配置串口波特率为 115200bps,22.1184MHz 晶体  SCON=0x50;   TMOD=0x21;  TH1=255;  TL1=255;  TR1=1;  TH0=0xb8; //10ms 定时器中断  TL0=0x00;  TR0=1;  JDQ1=0;   JDQ1=0; //关闭加热继电器  RCVOK=0; //清除数据接收 OK 标记    ???  RCVDATA=0;     ???  TXTIME=100; //上电 1 秒后开始数据读写  ES=1;  ET0=1;  EA=1;  /@@*串口设置完毕*/  while(RCVOK==0x00); //delate     ???  //用户测量和控制温度,显示温度值和实时温度曲线  while(1)     ???整个while???  {     i=Readtemp(); //测量当前温度    j=CFGBUF[0]*256+CFGBUF[1]; //设定温度,DGUS 0x1000 地址,整形变量    if(i<j)    {      JDQ1=1;     }    else    {      JDQ1=0;    }    TXBUF[20]=i/256;  //显示当前温度值,DGUS 0x0000 地址,整形变量    TXBUF[21]=i%256;    TXBUF[12]=i/256;  //显示当前温度曲线,CH1 曲线通道    TXBUF[13]=i%256;  }}//温度测量函数int Readtemp( )     ???{  return(500); }//定时器 2 中断函数10mS 定时器中断,用于定时 200mS 发送指令给 DGUS 屏void Timer0_interrupt(void) interrupt 2 {    TF0=0;    TH0=0xb8;  TL0=0x00;    TXTIME--;   if(TXTIME==0x00) ​  {    TXTIME=20;     TX_P=0;       ???    TI=0;     SBUF=TXBUF[0];      ???  }}//串口中断方式处理和 DGUS 屏的数据交换//定时从 DGUS 屏的 1000-100F 存储区读取 32Byte 数据保存到单片机的 CFGBUF//定时把单片机的 DSPBUF 的 64B 内容写到 DGUS 屏的 0000-001FH 存储区void Uart_interrupt(void) interrupt 4 ???此处直到结束???{   unsigned char i;  if(RI)  //接收中断    {     i=SBUF;      RI=0;    if(RCVDATA==0)     {       RX5A=RXA5;      RXA5=RXLEN;      RXLEN=RXCMD;      RXCMD=RXADRH;      RXADRH=RXADRL;      RXADRL=RXDLEN;      RXDLEN=i;//检查帧同步数据 5A A5 24 83 10 00 10 +32B DATA      if((RX5A==0x5A)&&(RXA5==0xA5)&&(RXLEN==0x24)&&(RXCMD==0x83)&&(RXADRH=0x10)&&      (RXADRL=0x00)&&(RXDLEN=0x10))      {         RCVDATA=0xff;        RX_P=0;      }     }    else    {       CFGBUF[RX_P]=i;      RX_P++;      if(RX_P==32)      {         RCVDATA=0;        RCVOK=0xff;      }    }  }  if(TI) //发送中断  {     TI=0;    TX_P++;    if(TX_P<84)    {       SBUF=TXBUF[TX_P];    }  }}

迪文DGUS屏+PIC18F单片机的C语言程序编辑问题

现在要利用PIC18F4580单片机,通过添加编码器和按钮,实现对迪文DGUS屏中数值A的改变与确认,单片机与DGUS屏的联结通过RS232串口。现请问,涉及到DGUS屏的部分,都应该编写哪些程序,最好是能够提供一些示例,迪文提供的51单片机例程没有看很明白,注释有点少,谢谢!