产品选型

0804 单片机 51单片机学习29-ADC0804

小编 2024-10-10 产品选型 23 0

51单片机学习29-ADC0804

ADC0804芯片 把模拟转换成数字量

芯片操作步骤:

// 1 步骤S0:CS=0、WR=0、RD=1(由CPLD发出信号要求ADC0804开始进 行模拟/数字信号的转换)。

// 2 步骤S1:CS=1、WR=1、RD=1(ADC0804进行转换动作,转换完毕后INTR 将高电位降至低电位,而转换时间>100us)。

// 3 步骤S2:CS=0、WR=1、RD=0(由CPLD发出信号以读取ADC0804的转 换资料)。

// 4 步骤S3:CS=1、WR=1、RD=1(由CPLD读取DB0~DB7上的数字转换资 料)。

仿真图:用的是我自己做的一个51单片机开发板 图纸比较大,截图可能看不清,需要的话可以私信联系我。

程序:

源代码:

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit adcs=P3^5;

sbit adrd=P2^7;

sbit adwr=P3^3;

sbit P23=P2^3;

sbit dsrst=P3^6;

unsigned char code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,

0x7c,0x39,0x5e,0x79,0x71,0x00};

unsigned char code smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78};

uchar table1[3];

uchar advalue;

//************************************************

//延时函数,在12MHz 的晶振频率下

//大约50us 的延时

//************************************************

void delay_50us(uint t)

{ uchar j; for(;t>0;t--) for(j=19;j>0;j--); }

//************************************************

//延时函数,在12MHz 的晶振频率下//大约50ms 的延时

//************************************************

void delay_50ms(uint t)

{

uint j;

for(;t>0;t--)

for(j=6245;j>0;j--);

}

void main()

{

uchar j,k;

uchar i,l;

P23=1;

P1=0x00;

P23=1;

adcs=0;

while(1)

{

dsrst=0; //禁止实时时钟

P23=0; //禁止数码管

adcs=0; adwr=0; delay_50us(20); adwr=1; delay_50us(20); adrd=0; delay_50us(20); P1=0xff; // 释放P1

advalue=P1; //从P1 中读取数据

delay_50us(20); adrd=1; //禁止ADC 数据传输,防止影响数码管显示

adcs=1;

j=advalue/100; // 处理ADC 的数据,准备显示

k=advalue%100;

table1[2]=j;

j=k/10;

table1[1]=j;

j=k%10;

table1[0]=j;

P1=0; // 将P1 拉低准备显示

delay_50us(10);

P23=1;

for(l=0;l<20;l++) //在数码管上显示读取到的数据

{

for(i=0;i<3;i++)

{

P1=smg_du[table1[i]];

P2=smg_we[i];

delay_50us(100);

P1=0; //这句不加PROTUES显示不正常!!

}

P23=0;

}

}

}

仿真结果: 通过调节ADC0804外部接的滑动变阻器,不同的电压,数码显示不同的数值。

基于51单片机ADC0804亮度采集 功能描述: 1、adc0804采集亮度值

基于51单片机ADC0804亮度采集。

这是一个基于51单片机还有ADC0804的光敏采集系统。

·介绍一下硬件,这个是液晶显示器,用来显示当前的亮度以及设置的阈值。这个就是51单片机STC52,这个是ADC0804,这个就是蜂鸣器,这个就是光敏电阻,用它来采集环境的亮度。这两个是用来设置阈值,第一个是加,第二个是减。

·演示一下,当前的阈值默认是80,按第一个就是81,可以加按也可以减。当阈值低于当前的亮度就会报警,比如调到73,开始报警。报警的时候纸撕掉,噪音就比较大,可以把它盖上去。阈值超过当前的亮度阈值就报警,就会停止。

·光敏电阻,比如用手把它遮住,现在的亮度就只有11%,拿开就是75。比如用手电筒照一下,达到96%开始报警。

相关问答

adc 0804 和adc0808区别?

一、adc0804和adc0809区别adc0809是八个单端输入,参考电压:5V,即Vref=5V。adc0804是一个差分输入,参考电压:2.5V,即Vref=2.5V。其它参数一样。ADC...

猜你喜欢