注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
mcuhao123的个人空间 https://home.eeworld.com.cn/space-uid-146538.html [收藏] [复制] [分享] [RSS]
日志

51单片机实验板3.0,adc0832转换程序

已有 2043 次阅读2009-9-9 16:26 |


/*设置转换i/0口 */
#include
sbit clk=P3^6;
sbit d0=P3^7;
sbit cs=P2^0;
//sbit spk=P1^7;
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/*===========================================
 adc0832转换子程序
 ============================================*/
unsigned char adc_read(){
    unsigned char temp0,temp1,i;
    clk=0;
    cs=1;
    ;
    cs=0;    //复位
    d0=1;
    clk=1;  //上升沿启动
    ;
    clk=0;  
    ;
    d0=1;
    clk=1; //上升沿第二个脉冲,d0=1
    ;
    ;
    clk=0;
    d0=0;
    clk=1; //上升沿第三个脉冲送sgl
    ;
    clk=0;
    ;
    clk=1;//空闲位
    d0=1;  //释放d0
    for(i=0;i<8;i++)
    {temp0=temp0<<1;
        clk=0;
        if(d0)temp0=temp0|0x01;//下降沿取数据;
        ;
        clk=1; 
    }
    if(d0)temp1=0x80;//第一位
    for(i=0;i<7;i++)
    {   temp1=temp1>>1;
        clk=0;
        ;      
        if(d0)temp1=temp1|0x80;//下降沿取数据
        ;
        clk=1;
    }
    cs=1;  //片选关闭
    if(temp0==temp1)
    {//spk=0; */
        return(temp0);
    }


}
/*=================================
2ms延时子程序
===================================*/
delay2ms()     
{unsigned char m,n;
    for(m=0;m<20;m++)
    for(n=0;n<48;n++);
}
/*=================================
主程序
===================================*/
main(){
    unsigned int b;
    while(1)
    {   b=(int)(adc_read()*4.74*100/256); //计算输出电压值b为int型,char型值不够
        P0=0xff;
        P1=0xff;     //消隐
        P1=0xfe;
        P0=table[b/100];
        delay2ms(); //输出个位
        P1=0xff;
        P0=0xff;   //消隐
        P1=0xfd;
        P0=table[b/10%10];
        delay2ms(); //输出十位
        P1=0xff;
        P0=0xff; //消隐
        P1=0xfb;
        P0=table[b%10];
        delay2ms();   //输出百位

    }

}

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章