[疑难问答]

【求助!】ADC0809+C语言的A/D转换器

[复制链接]
1607|0
手机看帖
扫描二维码
随时随地手机跟帖
akusar|  楼主 | 2012-11-12 22:40 | 显示全部楼层 |阅读模式
  用ADCO8O9对模拟信号进行转换,转换结果送七段数码管显示,同时用8位发光二极管显示转换值的二进制码“XX”, 5LED静态显示的前两位显示“AD”字样,后三位显示转换结果,调节模拟信号输入端的电位器旋钮,显示值随着变化,顺时针旋转值增大,AD转换值的范围是0~FFH。

#include <reg52.h>                    //52系列单片机头文件
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit ST=P3^0;                //(START): A/D转换启动脉冲输入端,输入一个正脉冲,上升复位下降沿启动
sbit OE=P3^1;                //(OE):数据输出允许信号,高电平有效
sbit EOC=P3^2;                //A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar num;

void delayms(uint xms)       //延时子程序                               
{
        uint i,j;
        for(i=xms;i>0;i--)                      //i=xms即延时约xms毫秒
                for(j=110;j>0;j--);
}

void display(uchar d)  //显示子函数
{       
        P1=0xff;         //消影
        P1=0x88;         //送段选码A
        P2=0xf7;         //送位选码
        delayms(5);     //延时

    P1=0xff;         //D
        P1=0xa1;
        P2=0xef;
        delayms(5);

        P1=0xff;
        P1=table[d/100];
        P2=0xdf;
        delayms(5);

        P1=0xff;
        P1=table[d%100/10];
        P2=0xbf;
        delayms(5);

        P1=0xff;
        P1=table[d%10];
        P2=0x7f;
        delayms(5);
}

/*void in00() interrupt 0   //中断子程序INT0
{       
        OE=1;
        adval=P0;
   A1=adval/100;                //分出百,十,和个位
        A2=adval%100/10;
        A3=adval%10;
}
*/

void main()                //        主程序
{
//        EA=1;
//        EX0=1;
//        IT0=0;
    while(1)
        {
                ST=0;
                ST=1;                        //启动AD转换
                //_nop_();
                ST=0;
      while(EOC==0);                                                                                                                                                                                                                              
                OE=1;
                while()
                display(P0);
                OE=0;
         }
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

0

粉丝