首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

AT89C51程序

AT89C51程序

各位高手:大家好!

       小弟在使用AD0809和AT89C51芯片设计一个数字电压表,测量范围是直流0-5V。我在网上找了个程序,但是它的头文件是at89x52,不是51系列的。请问这个程序怎么改才可以适合我的设计内容呀!在此我先谢谢大家了。我的QQ是236135025,邮箱是baixianmin1983@126.com.程序如下:

#include <AT89X52.H>

 

unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,

                                  0xef,0xdf,0xbf,0x7f};

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

                               0x6d,0x7d,0x07,0x7f,0x6f,0x00};

unsigned char dispbuf[8]={10,10,10,10,0,0,0,0};

unsigned char dispcount;

unsigned char getdata;

unsigned int temp;

unsigned char i;

 

sbit ST=P3^0;

sbit OE=P3^1;

sbit EOC=P3^2;

sbit CLK=P3^3;

 

 

void main(void)

{

  ST=0;

  OE=0;

  ET0=1;

  ET1=1;

  EA=1;

  TMOD=0x12;

  TH0=216;

  TL0=216;

  TH1=(65536-4000)/256;

  TL1=(65536-4000)%256;

  TR1=1;

  TR0=1;

  ST=1;

  ST=0;

  while(1)

    {

      if(EOC==1)

        {

          OE=1;

          getdata=P0;

          OE=0;

          temp=getdata*235;

          temp=temp/128;

          i=5;

          dispbuf[0]=10;

          dispbuf[1]=10;

          dispbuf[2]=10;

          dispbuf[3]=10;

          dispbuf[4]=10;

          dispbuf[5]=0;

          dispbuf[6]=0;

          dispbuf[7]=0;

          while(temp/10)

            {

              dispbuf=temp%10;

              temp=temp/10;

              i++;

            }

          dispbuf=temp;         

          ST=1;

          ST=0;

        }

    }

}

 

void t0(void) interrupt 1 using 0

{

  CLK=~CLK;

}

 

void t1(void) interrupt 3 using 0

{

  TH1=(65536-4000)/256;

  TL1=(65536-4000)%256;

  P1=dispcode[dispbuf[dispcount]];

  P2=dispbitcode[dispcount];

  if(dispcount==7)

    {

      P1=P1 | 0x80;

    }

  dispcount++;

  if(dispcount==8)

    {

      dispcount=0;

    } 

}

我终于明白了,应该将头文件改为AT89X51,而不是AT89C51

返回列表