STC12C2052AD芯片ADC转换程序及软件滤波实现

5星 · 超过95%的资源 需积分: 10 116 下载量 35 浏览量 更新于2024-11-29 2 收藏 40KB DOC 举报
"STC12C2052AD芯片的AD转换程序,用于获取模拟信号的数字表示,通过软件滤波提升精度。程序包括LCD显示和ADC读取功能。" 这篇文档是关于STC12C2052AD微控制器上的模拟到数字(AD)转换程序的实现。STC12C2052AD是一款8位单片机,具有内置的AD转换器,可用于将模拟信号转换为数字值,以便于处理和显示。 程序中定义了相关的寄存器,如ADCR(AD控制寄存器)和ADDR(AD结果寄存器),这些寄存器在AD转换过程中起着关键作用。其中,ADCR用于配置AD转换的参数,ADDR则用于存储转换后的结果。此外,还定义了一些与LCD显示相关的sbit和函数,如RS、RW、E,以及LcdIni()、WrOp()、WrDat()、ChkBusy()等,用于与LCD显示屏交互,显示AD转换的数值。 在主函数`main()`中,首先初始化LCD,然后在屏幕上显示"V:"和"P:"作为电压和精度的标识。接着,进入一个无限循环,不断地更新并显示两个通道(0和1)的AD转换结果。`AdcValPro(0)`和`AdcVal(1)`分别代表通道0和1的AD转换值,`AdcValPro()`函数实现了软件滤波,提高AD转换的精度,而`AdcVal()`则返回未经滤波的原始值。 `AdcVal()`函数执行20次AD转换,并对结果取平均值,用以降低噪声影响。这个平均值被存储在`val`变量中,然后与之前的AD转换结果进行比较,以实现简单的低通滤波效果。`AdcValPro(n)`函数接收一个通道号n,返回该通道经过滤波处理后的AD值。 `ShowByte()`函数用于在LCD指定位置显示一个字节数据,`ShowNum()`函数用于显示一个无符号整数,`DisText()`函数用于显示文本字符串。这些函数结合使用,使得AD转换的数值可以在LCD上实时更新。 这个程序提供了STC12C2052AD芯片AD转换的基本框架,并通过软件滤波优化了转换精度。它还包含了LCD显示功能,使得用户可以直观地观察到AD转换的结果。