找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2039|回复: 1
打印 上一主题 下一主题
收起左侧

求指点迷津啊

[复制链接]
跳转到指定楼层
楼主
ID:51232 发表于 2013-6-25 00:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    #include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
  #include <string.h>
   #include <ctype.h>
     void exdelay(void);
   void putstrxy(unsigned char cx,unsigned char cy,unsigned char idata *s);
    void putstrxyStr(unsigned char cx,unsigned char cy,unsigned char code *s);
    void putstr(unsigned char code *s);
    void putchar(unsigned char c);
    unsigned char getchar(void);
    void charlcdpos(void);
    void charcursornext(void);
    void charfill(unsigned char c);
     void lcdreset(void);
  void delay3ms(void);
     void lcdwc(unsigned char c);
  void lcdwd(unsigned char d);
  unsigned char lcdrd(void);
  void lcdwaitidle(void);
  void DataCollection(unsigned char);
  unsigned char xdata LCDCRREG_at_0xc2ff;
     unsigned char xdata LCDCWREG_at_0xc0ff;
  unsigned char xdata LCDDRREG_at_0xc3ff;
   unsigned char xdata LCDDWREG_at_0xc1ff;
   unsigned char xdata StartAN0_at_0xc8fff;
   unsigned char xdata ReadAN0H_at_0xc9fff;
   unsigned char xdata ReadAN0L_at_0xcbfff;
   unsigned char xdata CXPOS;
   unsigned char xdata CYPOS;
   unsigned char  idata *ss;
   unsigned int  ch;
   sbit P3_0=P3^0;
    sbit P3_1=P3^1;
    sbit BUSY=P3^2;
   main()
   {lcdreset();
    charfill("");
    exdelay();
    while(1)
   {DataCollection (0);
putstrxyStr(0,0,"CHANEL0:");
putstrxyStr(10,0,"");
   putstrxy(10,0,ss);
   putstrxyStr(16,0,"mV");
DataCollection (1);
  putstrxyStr(0,1,"CHANEL1:");
  putstrxyStr(10,1,"");
  putstrxy(10,1,ss);
   putstrxyStr(16,1,"mV");
  DataCollection (2);
putstrxyStr(0,2,"CHANEL2:");
  putstrxyStr(10,2,"");
   putstrxy(10,2,ss);
putstrxyStr(16,2,"mV");
DataCollection (3);
putstrxyStr(0,3,"CHANEL3:");
  putstrxyStr(10,3,"");
  putstrxy(10,3,ss);
  putstrxyStr(16,3,"mV");}
    }
void DataCollection (unsigned char Chanel)
{unsigned char i,k;
  unsigned char lenx=0;
unsigned int tn=0;
unsigned char string[4][10];
unsigned int dataH=0;
unsigned int dataL=0;
unsigned int dataA=0;
for(i=0;i<=3;i++)
{for(k=0;k<=9;k++)
  {string[i][k]=0;}
      }
  switch(Chanel)
  {case0: P3_1=0;
    P3_0=0;
    ch=0;
    break;
  case1: P3_1=0;
    P3_0=1;
   ch=1;
   break;
case2: P3_1=1;
      P3_0=0;
     ch=2;
   break;
case3: P3_1=1;
    P3_0=1;
    ch=3;
   break;
   default:ch=0;
  break;
    }
   BUSY=1;
   StartAN0=0;
   while(BUSY==0){;}
   {dataH=ReadAN0H;
    dataLReadAN0L;
    dataH=dataH<<8;
    dataA=(unsigned int)(dataH+dataL);
    dataA=dataA*0.3125;
    tn=dataA;
    if(tn==0)
    {putstrxyStr(10,ch,"0000");}
     else
    {while(tn!=0)
    {tn=tn/10;
     lenx=lenx+1;
        }
     for(i=0;i<lenx;i++)
  {string[ch][lenx-i-1]=(char)(dataA%10)+0x30;
     dataA=dataA/10;
        }
   string[ch][lenx]='\0';
   ss=string[ch];}
        }
   exdelay();
        }
  void putstrxyStr(unsigned char cx,unsigned char cy,unsigned char code *s)
{
   CXPOS=cx;
   CYPOS=cy;
   for(; *s!=0;s++)
  {  putchar(*s);
    charcursornext();
        }
        }
void putstrxy(unsigned char cx,unsigned char cy,unsigned char idata *s)
{
  CXPOS=cx;
  CYPOS=cy;
  for(; *s!=0;s++)
{  putchar(*s);
     charcursornext();
         }
         }
  void putstr(unsigned char code *s)
{for(;s!=0;s++)
  {putchar(*s);
charcursornext();
       }
   void charfill(unsigned char c)
  { for(CXPOS=CYPOS=0;1;)
   {putchar(c);
   charcursornext();
    if((CXPOS==0)&&(CYPOS==0))break;
}
}     }
void putchar(unsigned char c)
  {
    charlcdpos();
    lcdwd(c);
        }
  unsigned char getchar(void)
  {
     charlcdpos();
    return lcdrd();
         }
   void charlcdpos(void)
  {
  if(CXPOS>=20)CXPOS=0;
    CYPOS&=0x03;
   if(CYPOS==0)
   lcdwc(CXPOS|0x80);
    else if(CYPOS==1);
     lcdwc(CXPOS|0xC0);
     else if(CYPOS==2);
     lcdwc(CXPOS+20|0x80);
   else
    lcdwc(CXPOS+20|0xC0);
         }
   void charcursornext(void)
   {
   CXPOS++;
   if(CXPOS>19)
   {  CXPOS=0;
    CYPOS++;  
      CYPOS&=0X3;}
      }
      void lcdreset(void)
      {lcdwc(0x38);
      delay3ms();
    lcdwc(0x38);
      delay3ms();
      lcdwc(0x38);
      delay3ms();
     lcdwc(0x38);
      delay3ms();
      lcdwc(0x08);
      lcdwc(0x01);
       delay3ms();
     lcdwc(0x06);
      lcdwc(0x0C);
      }
     void delay3ms(void)
     { unsigned char i,j,k;
        for(i=0;i<3;i++)
       for(j=0;j<64;j++)
       for(k=0;k<51;k++)
       }
   void lcdwc(unsigned char c)
     {
     lcdwaitidle();
     LCDCWREG=c;
     }
   void lcdwd(unsigned char d)
   {
   lcdwaitidle();
   LCDDWREG=d;
   }
   unsigned char lcdrd(void)
   {   unsigned char d;
      lcdwaitidle();
      return LCDDRREG;
      }
   void lcdwaitidle(void)
   { unsigned char i;
   for(i=0;i<20;i++)
    if((LCDCRREG&0x80)==0 )
    break;
    }


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:32572 发表于 2013-8-7 17:50 | 只看该作者
一、没说明啥问题,二、代码混乱!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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