• 数字电压表的设计 > 数字电压表设计
  • 数字电压表设计

    免费下载 下载该文档 文档格式:DOC   更新时间:2007-07-09   下载次数:0   点击次数:2
    文档基本属性
    文档语言:Simplified Chinese
    文档格式:doc
    文档作者:wu
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    数字电压表设计任务书
    1.设计内容:
    单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示.
    2.设计方案
    3.系统板上硬件连线:
    (1) 把"单片机系统"区域中的P1.0-P1.7与"动态数码显示"区域中的ABCDEFGH端口用8芯排线连接.
    (2) 把"单片机系统"区域中的P2.0-P2.7与"动态数码显示"区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接.
    (3) 把"单片机系统"区域中的P3.0与"模数转换模块"区域中的ST端子用4.导线相连接.
    (4) 把"单片机系统"区域中的P3.1与"模数转换模块"区域中的OE端子用导线相连接.
    (5) 把"单片机系统"区域中的P3.2与"模数转换模块"区域中的EOC端子用导线相连接.
    (6) 把"单片机系统"区域中的P3.3与"模数转换模块"区域中的CLK端子用导线相连接.
    (7) 把"模数转换模块"区域中的A2A1A0端子用导线连接到"电源模块"区域中的GND端子上.
    (8) 把"模数转换模块"区域中的IN0端子用导线连接到"三路可调电压模块"区域中的VR1端子上.
    (9) 把"单片机系统"区域中的P0.0-P0.7用8芯排线连接到"模数转换模块"区域中的D0D1D2D3D4D5D6D7端子上.
    5.程序设计内容:
    由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从 P3.3输出CLK信号供ADC0809使用.因此产生CLK信号的方法就得用软件来产生了.
    由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值.实际显示的电压值 (D/256*VREF)
    6. C语言源程序
    #include

    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[i]=temp%10;
    temp=temp/10;
    i++;
    }
    dispbuf[i]=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;
    }
    }
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • 数字电压表课程设计  数字电压表的设计论文  三位半数字电压表设计  数字电压表设计方案  单片机数字电压表设计  数字电压表  三位半数字直流电压表  小尺寸数字显示电压表  简易数字电压表