51单片机ad转换实例(51单片机有ad转换吗)

51单片机AD转换实例介绍

随着科技的发展,现代电子技术中的模拟电路应用越来越广泛,因而势必会用到模拟量的转换,而自然离不开AD转换器。同时,51单片机又是应用最广泛的单片机之一,因其功能全面、性价比高而深受大家的喜爱。那就介绍一下51单片机AD转换实例吧!

51单片机AD转换实例电路图

首先看一下所用到的电路图。如图所示,这是一个简单的51单片机AD转换电路图。其中74LS573作为一个低电平触发锁存器,起到了保持输入电平的作用;RC复位电路使单片机复位后可以达到最佳的工作状态;单片机晶振电路则是脉冲的产生源,为程序提供时钟源。

51单片机AD转换实例电路图

51单片机AD转换实例程序设计

接下来进入最关键的程序设计环节。下面这段是51单片机AD转换实例的程序代码,大家可以根据自己的需要进行学习和应用。

```
#include
#define uint unsigned int
sbit CS = P1^7;
sbit OE = P1^6;
sbit XCLK = P1^5;
sbit Xi = P3^2;
sbit SW1 = P3^0;
void delayms(uint);
uint readadc(uint);
uint convertadc(uint);
void main() {
uint k,ADData;
while(1) {
if(!SW1){
ADData = readadc(1); //从0口读取AD值
P2 = ADData & 0xff;
}
}
}
void delayms(uint msCount){
uint i,j;
for(i=0;i> 6;
return temp;
}
uint convertadc(uint ch){
uint i,temp=0;
for(i=0;i<12;i++){ XCLK = 0; temp = temp << 1; temp |= Xi; XCLK = 1; } switch(ch) { case 0: OE = 1; break; case 1: OE = 0; break; default: break; } return temp;}```

上述代码由几个函数组成,主要功能为:读取ADC值、转换ADC值。其中,readadc和convertadc两个函数有点类似。

readadc函数的第一步是产生片选信号(即输入的转换信号)、清时钟信号,以准备 ADC 所需的时序;其次调用 convertadc 函数完成 ADC 的转换工作,并将转换的结果存储在变量 temp 中;最后,使时钟信号提高并产生拉高的片选信号,完成 ADC 的一次采样。

而convertadc函数较为简单,主要工作是发出一条转换命令,然后读取由 ADC 输出的 12 位二进制数据数组中的每一位,每次在时钟的上升沿输入一位(使用 temp 数据向左移一位,然后利用与函数内部变量 Xi 读取输入的 0 或 1)。
之后再根据通道号、使能 OE 信号的方式转换采集信号,最后返回 12 位的A/D转换数据。

结语

以上就是51单片机AD转换实例的简介、电路图和代码实现。如果大家对单片机有一定基础,相信会对此代码有所启发。在实际应用中,还需要自己动手尝试并且结合具体应用中所需的数据类型、采样率等因素进行调整。期望此篇文章对大家有所帮助!

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcuqcp-2.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月26日 上午8:12
下一篇 2023年4月26日 上午8:12

猜你喜欢