unsigned char ADC0804_Read(void) { unsigned char dat; ADC0804_Port = 0xff; ADC0804_CS = 1; ADC0804_WR = 1; ADC0804_CS = 0; ADC0804_WR = 0; //Delay_xus(100); ADC0804_CS = 1; ADC0804_WR = 1; //Delay_xus(500); ADC0804_CS = 0; ADC0804_RD = 0; //Delay_xus(50); dat = ADC0804_Port; ADC0804_RD = 1; ADC0804_CS = 1; return dat; } unsigned int ADC0804_Convert(void) { unsigned char n; unsigned int sum = 0; unsigned int temp; for(n = 0;n < 3;n++) { sum = sum + ADC0804_Read(); Seg_dis(temp); } temp = sum / 3; //temp = temp * 19.60784; //5/255=0.01960784313 return temp; }将代码注释
时间: 2023-10-18 16:04:22 浏览: 145
模拟数字转换ADC0804
```
//定义一个函数,用于从ADC0804模数转换器中读取数据
unsigned char ADC0804_Read(void) {
unsigned char dat; //定义一个8位无符号整型变量dat用于存储读取到的数据
ADC0804_Port = 0xff; //将ADC0804的端口设置为输入状态
ADC0804_CS = 1; //设置片选端口为高电平
ADC0804_WR = 1; //设置写端口为高电平
ADC0804_CS = 0; //设置片选端口为低电平
ADC0804_WR = 0; //设置写端口为低电平
//Delay_xus(100); //延时100微秒
ADC0804_CS = 1; //设置片选端口为高电平
ADC0804_WR = 1; //设置写端口为高电平
//Delay_xus(500); //延时500微秒
ADC0804_CS = 0; //设置片选端口为低电平
ADC0804_RD = 0; //设置读端口为低电平
//Delay_xus(50); //延时50微秒
dat = ADC0804_Port; //将读取到的数据存储到dat中
ADC0804_RD = 1; //设置读端口为高电平
ADC0804_CS = 1; //设置片选端口为高电平
return dat; //返回读取到的数据
}
//定义一个函数,用于将多次读取到的数据进行平均值运算,得到数字量输出
unsigned int ADC0804_Convert(void) {
unsigned char n; //定义一个8位无符号整型变量n,用于循环计数
unsigned int sum = 0; //定义一个16位无符号整型变量sum,用于存储多次读取到的数据的累加和
unsigned int temp; //定义一个16位无符号整型变量temp,用于存储平均值输出
for(n = 0; n < 3; n++) { //进行3次循环,每次读取一次数据
sum = sum + ADC0804_Read(); //调用ADC0804_Read()函数读取数据,并将读取到的数据累加到sum中
Seg_dis(temp); //将temp的值显示在数码管上
}
temp = sum / 3; //将多次读取到的数据的累加和除以3,得到平均值
//temp = temp * 19.60784; //将数字量转换为模拟量输出,但是这行代码被注释掉了
return temp; //返回平均值
}
```
阅读全文