
计数型8位AD转换器仿真实验:采用Proteus 8.9实现基本要求及讲解视频
电路板上的红绿灯交替亮起,调试用的杜邦线在实验桌上缠成一团。我盯着屏幕里跳动的波形,突
然意识到这个计数型AD转换器就像在玩"猜数字"游戏——只不过这次猜谜的是单片机自己。
咱们先聊聊这个AD转换器的原理。它不像逐次逼近型那么聪明,反而像个固执的小孩,从零开始数
数,每次加1就跑去问比较器:"现在电压够了吗?"当DAC输出的电压刚超过输入电压时,计数器立马刹车,
这时候的计数值就是转换结果。虽然速度慢了点,但硬件结构简单得让人感动,特别适合给萌新理解AD转
换的本质。
打开Proteus 8.9,先把核心部件拖进工作区:AT89C51单片机、DAC0808模数转换芯片、LM393比较器
,外加几个电阻电容。注意DAC的基准电压要接稳定,我这用的是5V电源经两个1kΩ电阻分压得2.5V(实际
应用建议用TL431这类基准源)。比较器的输出接到P3.7口,这样单片机就能知道什么时候该停止计数了。
别急,咱们上代码:
```c
#include <reg51.h>
sbit COMP = P3^7; // 比较器输出接这里
void delay(unsigned int t) {
while(t--);
}
void main() {
unsigned char count = 0;
P1 = 0x00; // 计数输出端口
P2 = 0x00; // DAC控制端口
while(1) {
for(count=0; count<255; count++) {
P2 = count; // 往DAC送当前计数值
delay(100); // 等DAC输出电压稳定
if(COMP == 0) { // 当比较器翻转时
P1 = count; // 锁存当前计数值
break;
}
}