结合单片机学习板学习c语言之AD转换 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    目的:通过STC单片机接收ADC0804的数字量,并把该数字量通过8155控制的LED显示出来,

结合单片机学习板学习c语言之AD转换

   

    /*本程序利用查询法得到ADC0804的AD转换后的数字量。*/

    #include"at89x51.h"

    #include"absacc.h"

    #include "intrins.h"

    #includetdio.h>

    #include"math.h"

    #define uchar unsigned char

    sfr ISP_CONTR =0xE7;

    uchar advalue,adl,adh;

    uchar code BitdisL[]={0x1f,0x2f,0x37,0x3b,0x3d,0x3e};

    uchar code Chardis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

    delay_05s()

    {

    int count;

    count=647395;

    for(;count!=0;count--);

    }

    /*void ad() interrupt 2 //如果想要用中断法,可以使用这个子程序

    {

    //EX1=0;

    RD=0;

    advalue=P0;

    adl=advalue & 0x0f;

    adh=_cror_(advalue,4);

    RD=1;

    //P1=~P1;

    //P1=advalue;

    WR=0;

    _nop_();

    WR=1;

    //EX1=1;

    }*/

    void serial() interrupt 4 //编号0-4,外中断0,定时器0,外中断1,定时器1,串行中断

    {

    uchar a;

    RI=0;

    a=SBUF;

    if (a==0xFE)

    {P1_0=0;

    delay_05s();

    delay_05s();

    ISP_CONTR=0x60;}

    else if(a=='A')

    {P1_1=0;

    delay_05s();

    P1_1=1;

    }

    }

    void main(void)

    {

    unsigned int b;

    unsigned char cmd,temp;

    TMOD=0x20;

    TH1=0xf4;

    TL1=0XF4;

    TR1=1;

    SCON=0XF8;

    PCON=0X80;

    IT0=1;

    EA=1;

    ES=1;

    RI=0;

    cmd=0x0F;

    XBYTE[0X7FF0]=cmd;

    WR=0;

    _nop_();

    WR=1;

    while(1)

    {

    WR=0;

    _nop_();

    WR=1;

    while(P3_3);

    RD=0;

    advalue=P0;

    RD=1;

    if (cabs(advalue-temp)>0x01)/*该句仅仅为了显示值不会老是变动,但代价是显示精度减少了,有的电压不能用数字显示出来,

电脑资料

结合单片机学习板学习c语言之AD转换》(https://www.unjs.com)。*/

    {

    temp=advalue;

    adl=advalue & 0x0f;

    adh=advalue>>4;

    }

    XBYTE[0X7FF3]=BitdisL[1];

    XBYTE[0X7FF1]=Chardis[adl];

    for(b=0;b<500;b++);

    XBYTE[0X7FF3]=BitdisL[0];

    XBYTE[0X7FF1]=Chardis[adh];

    for(b=0;b<500;b++);

    }

    }

    【重点难点】

    1.启动ADC0804,有的书写MOVX@Ri,A (即XBYTE[0X0000]=0X00;),用这个语句来启动单片机,我个人认为,程序没错,但是它可能针对低频晶振用的,当用到高频晶振,WR

最新文章