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

📄 caiji.c.bak

📁 我做的关于锅炉运行状况采集的产品
💻 BAK
📖 第 1 页 / 共 5 页
字号:

void clear(void)             /* clear the screen */
{
    char i,j;
    for(i=0;i<8;i++)  /* write '0' to the display ram */
    {
        write(0x00,i+0xb8);/* write left row address(page 0)*/
        write(0x00,0x40);  /* write column address(column 0)*/
        write(0x02,i+0xb8);/* write right row address*/
        write(0x02,0x40);
        for(j=0;j<64;j++)
        {
             write(0x01,0x00);/* write '0' to the dram*/
             write(0x03,0x00);
        }
     }
}

void wait_key(void)
{
  uchar data i;
  for (i=0;i<25;i++)
  {
    ldelay(15);    /*about 8 second*/
    if (keyvalue!=NONE) break;
  }
}

void delay(void)
{
    unsigned int i=0;
    do{ i++;
    }while(i<4800);
}

void ldelay(unsigned int  i)
{
    uint data j=0;
    do
    {
        kbscan();
    	j++;
    }
    while((j<i)&&(keyvalue==NONE));
}

void print(uint hzb,uchar h,uchar v)
{
    uchar code * hzbpt=hzb;
    uchar code * hzmpt;
    pl:
    while(*hzbpt!='\0')
    {
        if(*hzbpt<128)
        {
            writebig(*hzbpt,h,v);
            hzbpt++;
            v+=8;
        }
        else
        {
    	    hzmpt=addres(*hzbpt,*(hzbpt+1),0);
            whz(hzmpt,h,v);
            hzbpt=hzbpt+2;
            v+=16;
        }
    }
}

void writebig(char zf,uchar h,uchar v)
{
    uchar i,m,temp,temp1;
    uchar xdata * pt;
    if(h>=128)
    {
        m=1;
    }
    else
    {
        m=0;
    }
    h&=7;
    if(v>=64)
    {
        temp=2;
        temp1=v-64;
     }
    else
    {
        temp=0;
        temp1=v;
    }
    pt=addres(zf,zf,1);
    write(temp,(h+0xb8)); /* horrizen address*/
    write(temp,(temp1+0x40));/* vertical address*/
    i=0;
    while(i<8)
    {
        if(m==1)
        {
            write((temp+1),~(*(pt+i)));
        }
        else
        {
            write((temp+1),*(pt+i));
        }
        i++;
    }
    write(temp,(h+0xb9)); /* horrizen address*/
    write(temp,(temp1+0x40));/* vertical address*/
    while(i<16)
    {
        if(m==1)
        {
            write((temp+1),~(*(pt+i+8)));
        }
        else
        {
            write((temp+1),*(pt+i+8));
        }
        i++;
    }
    v+=8;
}


void whz(uint hz,uchar h,uchar v)
{
     uchar xdata *hzmpt=hz;
     unsigned char i,j;
     unsigned char temp,temp1;
     if(v>=64)              /* write to the right screen */
     {
        temp=0x02;
        temp1=v-64;
     }
     else                   /* write to the left screen */
     {
        temp=0x00;
        temp1=v;
     }
     if(h>127)              /* require to display the negtive Character*/
     {
        h&=7;
        v=1;
     }
     else                   /* display the positive Character */
     {
      	v=0;
     }
     for(j=0;j<2;j++)       /* write two line of a Chinese Character*/
     {
         write(temp,(j+h+0xb8)); /* horrizen address*/
         write(temp,(temp1+0x40));/* vertical address*/
         for(i=0;i<16;i++)
         {
            if(v==0)
            {
                write((temp+1),*hzmpt);         /* positive*/
            }
            else
            {
                write((temp+1),~(*hzmpt));      /* negtive*/
            }
            hzmpt+=1;
         }
      }
}

void dwordtobcd(uint wa,uchar bytes)
 /* 以wa开始的字节转换成BCD格式,转换bytes个字节 */
 /* 高位字节在前,低位字节在后 */
{
    unsigned long data temp;
    uchar xdata * pt=wa;    /* 定义一个指针型变量,初值=wa */
    char data i;
    uchar data * bpt=&temp;
    temp=0;
    *(bpt+3)=*pt;
    if(bytes==4)
    {
    	*bpt=*(pt+3);
    	*(bpt+1)=*(pt+2);
    }
    if(bytes!=1)
    {
    	*(bpt+2)=*(pt+1);
    }
    for(i=0;i<16;i++)
      keybuff[i]=' ';   /* 按键缓冲区清空 */
    i=0;
    do{
        keybuff[i]=temp%10;
        temp=temp/10;
        i++;
       }while(temp!=0);
}

void dwordtobcd2(uint wa2)//,uchar bytes2)
 /* 以wa开始的字节转换成BCD格式,转换bytes个字节 */
 /* 高位字节在前,低位字节在后 */
{
    char data i;
    uint data temp=wa2;
    for(i=0;i<16;i++)
      keybuff[i]=' ';   /* 按键缓冲区清空 */
    i=0;
    do{
        keybuff[i]=temp%10;
        temp=temp/10;
        i++;
       }while(temp!=0);
     keybuff[i]=0x0d;
}

void ddatatobcd(uchar chdata)
{
    unsigned data temp;
    char data i;
    temp=chdata;
    i=0;
    do{
        keybuff[i]=temp%10;
        temp=temp/10;
        i++;
       }while(temp!=0);
    keybuff[i]=0x0d;
}

void putstring(char l)
{
    char i,k,v=64;
    for(i=0;keybuff[i]!=0x0d;i++)
    {
    }
    k=i;
    for(i=k;i!=(-1);i--)
    {
	if(keybuff[i]<10)
	    writebig(keybuff[i],l,v);
        else
        writebig('0',l,v);
        v+=8;
    }
}
void putstring_left(char l)
{
    char i,k,v=0;
    for(i=0;keybuff[i]!=0x0d;i++)
    {
    }
    k=i;
    for(i=k;i!=(-1);i--)
    {
	if(keybuff[i]<10)
	    writebig(keybuff[i],l,v);
        else
        writebig('0',l,v);
        v+=8;
    }
    writebig('.',l,v);
}
void putstring0(char bytes,char h) //输出字符 左边
{
    char i,v=0;
    for(i=bytes;i>2;i--)
    {
	if(keybuff[i]<10)
	    writebig(keybuff[i],h,v);
        else
            writebig('0',h,v);
        v+=8;
    }
}
void putstring5(char l)   //显示一位小数点
{
    char i,k,v;
    for(i=0;keybuff[i]!=0x0d;i++)
    {
    }
    k=i;
    v=39;
    if(k==1){
      writebig('0',l,v);
    }
    else
    {
      for(i=1;i<k;i++)
       {
	if(keybuff[i]<10)
	    writebig(keybuff[i],l,v);
        else
        writebig('0',l,v);
        v-=8;
       }
     }
      writebig('.',l,47);
      writebig(keybuff[0],l,56);
}

void putstring1(char bytes,char h)  //输出字符 右边
{
    char i,v=64;
    for(i=bytes;i>2;i--)
    {
	if(keybuff[i]<10)
	    writebig(keybuff[i],h,v);
        else
            writebig('0',h,v);
        v+=8;
    }
}

void display_var(uchar code * dispt,uchar h,uchar v)
{
//  uchar code * disbpt=dispt;
  uchar code * dismpt;
  while(*dispt!='\0')
    {
        if(*dispt<128)
        {
            writebig(*dispt,h,v);
            dispt++;
            v+=8;
        }
        else
        {
    	    dismpt=addres(*dispt,*(dispt+1),0);
            whz(dismpt,h,v);
            dispt=dispt+2;
            v+=16;
        }
    }
}
//*********************************------------------------------//
/*循环显示*/
//********************************-------------------------------//
void display_cycle(void)		/* DISPLAY 8 GROUPS VALUE */
{
    uchar data group,zl;
    clear();
    init_display();
    display_var(display_title,0,64);
    display_var(display_name,0,32);
    display_var(display_unit,2,64);
//  writebig(':',0,56);
//  addr=device_address;
//  ddatatobcd(addr);
//  putstring(0);
    ddatatobcd(nb_display_step);
    putstring_left(0);
//    writebig('.',0,15);  //moduel_number
    if(display_unit=="MPa")
    {
        dt2=chanel_str[moduel_display_step][chanel_display_step].display_data/10;
        dt1=(uint)(dt2);
    }
    else
    {
      if((chanel_str[moduel_display_step][chanel_display_step].display_data)==0.0)
        dt1=0;
      else
      {
        dt2=chanel_str[moduel_display_step][chanel_display_step].display_data*10;
        dt1=(uint)(dt2);
       }
     }
       dwordtobcd2(dt1);
       putstring5(2);
       chanel_display_step++;
       nb_display_step++;

    if(chanel_display_step==chanel_number[moduel_display_step])
    {
      moduel_display_step++;
      if(moduel_display_step==moduel_number)
      {
       moduel_display_step=0;
       nb_display_step=1;
      }
      chanel_display_step=0;
    }
    init_display();
    display_var(display_title,4,64);
    display_var(display_name,4,32);
    display_var(display_unit,6,64);
    ddatatobcd(nb_display_step);
    putstring_left(4);
    if(display_unit=="MPa")
    {
        dt2=chanel_str[moduel_display_step][chanel_display_step].display_data/10;
        dt1=(uint)(dt2);
    }
    else
    {
      if((chanel_str[moduel_display_step][chanel_display_step].display_data)==0.0)
        dt1=0;
      else
      {
        dt2=chanel_str[moduel_display_step][chanel_display_step].display_data*10;
        dt1=(uint)(dt2);
       }
     }
    dwordtobcd2(dt1);
    putstring5(6);
    chanel_display_step++;
    nb_display_step++;
    if(chanel_display_step==chanel_number[moduel_display_step])
    {
      moduel_display_step++;
      if(moduel_display_step==moduel_number)
      {
       moduel_display_step=0;
       nb_display_step=1;
      }
      chanel_display_step=0;
    }
  }

//*********************************------------------------------//
/*设置参数*/
//********************************-------------------------------//
void pass(void)
{
    uchar code pa1[]="ABC";	/* fixure password */
    uchar code syset[]="**系统设置**";
    uchar code input[]="请您输入口令?";
    uchar code eco[]="密码不正确!";
    uchar code input_device_name[]="1:设备地址";
    uchar code input_device_number[]="2:模块个数";
    uchar code input_chanel_number[]="3:所用的通道数";
    uchar code input_chanel_parameter[]="4:通道参数";
    uchar code indit[]="5:修改密码";
    uchar code indtt[]="其它键继续";
    uchar xdata *pt=0x8000;
    uchar i=0,j=0,k;
    keybuff[8]=0;
    clear();
    clear();
    print(syset,0,1);/* xi tong she ding */
    print(input,2,16);
    writebig(':',5,24);
    keybuff[0]='=';
    keybuff[1]=';';
    do
    {
        ldelay(5);
    	if((keyvalue<10)&&(keyvalue!=ESC))
    	{
    	    keybuff[i]=keyvalue;
            if(i<6)
    	    i++;
            writebig('X',5,32+8*i);
            keybuff[6]=0;
    	}
    	else if(keyvalue==ENTER)
    	{
            keybuff[6]=keybuff[0]<<4|keybuff[1];
    	    keybuff[1]=keybuff[2]<<4|keybuff[3];
            keybuff[2]=keybuff[4]<<4|keybuff[5];

⌨️ 快捷键说明

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