用单片机控制DAC0832和ADC0809可变电阻器输入控制,模拟LED输出控制台灯亮度的代码
时间: 2024-05-09 09:15:35 浏览: 28
以下是基于8051单片机控制DAC0832和ADC0809可变电阻器输入控制,模拟LED输出控制台灯亮度的代码:
```c
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit SDA=P2^0;
sbit SCL=P2^1;
sbit LED=P1^0;
uchar ADCdata;
uchar highByte,lowByte;
void delay(uint i)
{
while(i--);
}
void IIC_Start()
{
SDA=1;
SCL=1;
SDA=0;
SCL=0;
}
void IIC_Stop()
{
SDA=0;
SCL=1;
SDA=1;
}
void IIC_SendByte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
if(dat&0x80)
SDA=1;
else
SDA=0;
SCL=1;
SCL=0;
dat<<=1;
}
SDA=1;
SCL=1;
SCL=0;
}
uchar IIC_ReadByte()
{
uchar i, dat=0;
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;
dat<<=1;
if(SDA)
dat++;
SCL=0;
}
return dat;
}
void DAC_Write(uchar dat)
{
IIC_Start();
IIC_SendByte(0x98);
IIC_SendByte(0x00);
IIC_SendByte(dat);
IIC_Stop();
}
uchar ADC_Read()
{
IIC_Start();
IIC_SendByte(0x90);
IIC_SendByte(0x00);
IIC_Stop();
IIC_Start();
IIC_SendByte(0x91);
ADCdata=IIC_ReadByte();
IIC_Stop();
return ADCdata;
}
void main()
{
while(1)
{
ADCdata=ADC_Read();
highByte=ADCdata/16;
lowByte=ADCdata%16;
DAC_Write(highByte);
delay(1000);
DAC_Write(lowByte);
delay(1000);
LED=ADCdata/16;
}
}
```
这段代码通过I2C总线通信控制DAC0832输出电压,同时读取ADC0809的电压值,根据ADC的值控制LED灯的亮度。其中,DAC0832的输出电压与输入数字信号的关系为:
Vout = Vref * D / 256
其中,Vref为DAC的参考电压,D为输入的数字信号,取值范围为0~255。因此,我们可以通过控制DAC的输入数字信号来控制DAC的输出电压,从而控制LED灯的亮度。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)