仿真图:
芯片/模块的特点:
ADC0832特点:
8位分辨率:ADC0832可以将模拟输入信号转换为8位数字输出。这意味着它可以将模拟信号划分为256个不同的离散电平,提供相对较低的分辨率。
双通道输入:ADC0832具有两个模拟输入通道,使其能够同时转换两个模拟信号。这对于需要同时测量多个信号的应用非常有用。
内部参考电压源:ADC0832提供了一个内部的参考电压源,它可以用作模拟输入信号的参考电压。这样可以简化外部电路设计,并提供更稳定和准确的参考电压。
串行输出:ADC0832通过串行接口(SPI或I2C)输出转换结果。这种串行输出形式使其与微控制器或其他数字设备的通信变得更加简单和方便。
低功耗:ADC0832具有较低的功耗特性,适合在低功耗应用中使用。
可编程时钟频率:ADC0832的转换速度可以通过控制输入时钟频率进行编程。这使得可以根据应用的需求调整转换速度,并平衡转换精度和速度。
内部自校准:ADC0832具有内部自校准电路,可以降低转换误差,并提供更准确的转换结果。
24C02特点:
存储容量:24C02具有2K位的存储容量,即可以存储2千个位数据。它的存储空间被组织成256个字节,每个字节由8个位组成。
串行接口:24C02采用串行接口进行数据读写,与主控器件之间进行通信。它使用两根线路(串行数据线SDA和串行时钟线SCL)进行数据传输,简化了连接和控制电路。
低功耗:24C02在工作时功耗低,适用于电池供电或对功耗要求较高的应用场景。它还具有自动功耗优化功能,可以在闲置状态下自动进入低功耗模式。
多功能保护:24C02具有多种数据保护功能,包括写保护、密钥保护和唯一序列号保护。这些功能可以保护数据的安全性和完整性。
高速读写操作:24C02支持快速的读写操作,具备高达400 kHz的传输速度。它能够快速、准确地读取和写入存储器中的数据。
长寿命和可靠性:24C02采用耐用的封装材料,具有较高的抗震动和抗振动能力。它具备较长的数据保存时间和可靠性,适用于各种工业和消费类应用。
主程序:
#include <reg51.h>
#include <ADC0832.h>
#include"i2c.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^7;
sbit k2=P3^6;
sbit beep=P2^3;
uchar disp1[]=" Rain: 00 mm";
uchar disp2[]="Limit:045mm";
uchar Rainfall=0;//待测值
uchar limit =50;//报警阀值
uchar k=0;
void delay(uint i) //延时
{
while(i--);
}
void main()
{
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
init_1602();
limit=At24c02Read(0);//初始化存储
if(limit>200)
{
limit=50;
At24c02Write(0,limit);
delay(10000);
}
write_string(1,0,disp1); //显示
write_string(2,2,disp2);
while(1)
{
if(Rainfall>limit)//报警判断
beep=0;
else
beep=1;
if(!k1)//加
{
if(limit<200)
limit++;
At24c02Write(0,limit);
delay(10000);
while(!k1);
}
if(!k2)//减
{
if(limit>0)
limit--;
At24c02Write(0,limit);
delay(10000);
while(!k2);
}
}
}
void Timer0() interrupt 1//定时器中断
{
TH0=0X3C;
TL0=0XB0;
if(k<10)
k++;
else
{
k=0;
Rainfall=ADC();//待测值
disp1[8]=Rainfall/100+0x30;
disp1[9]=Rainfall%100/10+0x30;
disp1[10]=Rainfall%10+0x30;
disp2[6]=limit/100+0x30;
disp2[7]=limit%100/10+0x30;
disp2[8]=limit%10+0x30;
write_string(1,0,disp1); //显示
write_string(2,2,disp2);
}
}
设计文件: