ADC0809模数转换与显示

该实验测in3一路的模拟量

仅共学习参考
在这里插入图片描述

主程序



#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

//各数字的数码管段码(共阴)

uchar code
DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbit CLK=P1^3;            //时钟信号

sbit ST=P1^2;        //启动信号

sbit EOC=P1^1;            //转换结束信号

sbit OE=P1^0;       //输出使能

//延时

void DelayMS(uint ms)

{

       uchar
i;

       while(ms--)
for(i=0;i<120;i++);

}

//显示转换结果

void Display_Result(uchar d)

{

       P2=0xf7;        //第4个数码管显示个位数

       P0=DSY_CODE[d%10];

       DelayMS(5);

       P2=0xfb;        //第3个数码管显示十位数

       P0=DSY_CODE[d%100/10];

       DelayMS(5);

       P2=0xfd;        //第2个数码管显示百位数

       P0=DSY_CODE[d/100];

       DelayMS(5);

}

//主程序

void main()

{

       TMOD=0x02;        //T0工作模式2(自动重载8位定时器/计数器)

       TH0=0x14;           

       TL0=0x00;

       IE=0x82;

       TR0=1;

       P1=0x3f;        //选择ADC0809的通道3(011)(P1.4~P1.6)

       while(1)

       {

              ST=0;ST=1;ST=0;        //启动A/D转换

              while(EOC==0);           //等待转换完成

              OE=1;

              Display_Result(P3);

              OE=0;

       }

}

//T0定时器中断给ADC0808提供时钟信号

void Timer0_INT() interrupt 1

{

       CLK=~CLK;

}

ADC0809介绍
在这里插入图片描述

  1. LOCK:时种信号。ADC0809内部没有时钟电路,需由外部提供时钟脉冲信号。一般为500KHz。


//T0定时器中断给ADC0808提供时钟信号

void Timer0_INT() interrupt 1

{

       CLK=~CLK;

}
//每个时钟脉冲就发生一次中断。c51基本上也就一直忙着中断处理了。中断太频繁,占资源
  1. IN0-IN7:模拟量输入通道。
  2. D0-D7:数据输出口。
  3. ADDA-C:地址线(通道)。

在这里插入图片描述

工作过程(借鉴大佬的,建议去阅读大佬的)
①在IN0-IN7上可分别接上要测量转换的8路模拟量信号。有人问了,可不可以只接一路?我就只想测一个模拟信号。当然可了,能挑一百斤的担子,让你只挑十斤那还不小菜。废话太多。。STOP。
②将ADDA-ADDC端给上代表选择测量通道的代码。如000(B)则代表通道0;001(B)代表通道1;111则代表通道7。
③将ALE由低电平置为高电平,从而将ADDA-ADDC送进的通道代码锁存,经译码后被选中的通道的模拟量送给内部转换单元。
④给START一个正脉冲。当上升沿时,所有内部寄存器清零。下降沿时,开始进行A/D转换;在转换期间,START保持低电平。
⑤EOC为转换结束信号。在上述的A/D转换期间,可以对EOC进行不断测量,当EOC为高电平时,表明转换工作结束。否则,表明正在进行A/D转换。
⑥当A/D转换结束后,将OE设置为1,这时D0-D7的数据便可以读取了。OE=0,D0-D7输出端为高阻态,OE=1,D0-D7端输出转换的数据。
————————————————
版权声明:本文为CSDN博主「少占鱼-正定」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ssou_1985/article/details/12973887

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值