51单片机——ADC模数转换、DAC数模转换PWM C语言入门编程
目录
ADC:
XPT2046:
1.ADC模数转换:数码管上显示AD模块采集电位器的阻值、热敏的温度值、光敏的光值
DAC:
PWM:
1.DAC数模转换:DAC(PWM)模块上的指示灯DA1呈呼吸灯效果,由暗变亮再由亮变暗
ADC:
ADC(analog to digital converter)也称为模数转换器,是指一个将模拟信号转变为数字信号。单片机在采集模拟信号时,通常都需要在前端加上A/D芯片。AD转换器(ADC)将模拟量转换为数字量通常要经过4个步骤:采样、保持、量化和编码。
ADC的分辨率是指对于允许范围内的模拟信号,它能输出离散数字信号值的个数。这些信号值通常用二进制数来存储,因此分辨率经常用比特作为单位,且 这些离散值的个数是 2 的幂指数。 例如:12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/(2^12 )=2.4mV。ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。
XPT2046:
XPT2046是一款4线制电阻式触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器。XPT2046支持从1.5V到5.25V的低电压I/O接口。XPT2046能通过执行两次A/D转换查出被按的屏幕位置,除此之外, 还可以测量加在触摸屏上的压力。内部自带2.5V参考电压,可以作为辅助输入、 温度测量和电池监测之用,电池监测的电压范围可以从0V到6V。XPT2046内集成有一个温度传感器。在2.7V的典型工作状态下,关闭参考电压,功耗可小于0.75mW。
XPT2046数据接口是串行接口。前8个时钟用来通过DIN引脚输入控制字节。接着的12个时钟周期将完成真正的模数转换。第13个时钟将输出转换结果的最后一位。剩下的3个多时钟周期将用 来完成被转换器忽略的最后字节(DOUT 置低)。(接收发送先高位)
电位器对应的采集通道命令:0X94
光敏电阻对应的采集通道命令:0XA4
热敏电阻对应的采集通道命令:0XD4
外部输入AIN3对应的采集通道命令:0XE4
1.ADC模数转换:数码管上显示AD模块采集电位器的阻值、热敏的温度值、光敏的光值
XPT2046函数
#include <REGX52.H>sbit DIN=P3^4;
sbit DOUT=P3^7;
sbit DCLK=P3^6;
sbit CS=P3^5;unsigned char XPT2046(unsigned char Command)//命令 返回数据
{unsigned int Data=0;unsigned char i;DCLK=0;CS=0;for(i=0;i<8;i++){DIN=Command&(0x80>>i);DCLK=1;DCLK=0;}for(i=0;i<8;i++){DCLK=1;DCLK=0;if(DOUT)Data|=(0x80>>i);}CS=1;return Data;
}
主函数
#include <REGX52.H>
#include "XPT2046.h"
#include "shumaguan.h"void main()
{unsigned char i,j,k;while(1){i=XPT2046(0x94);//电位器阻值shumaguan(1,i/100);shumaguan(2,(i/10)%10);shumaguan(3,i%10);j=XPT2046(0xa4);//光敏shumaguan(4,j/10);shumaguan(5,j%10);k=XPT2046(0xd4);//热敏shumaguan(6,k/100);shumaguan(7,(k/10)%10);shumaguan(8,k%10);}
}
DAC:
DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号。
DAC的分辨率是输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。分辨率与输入数字量的位数有确定的关系,可以表示成FS/(2^n)。FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256 =19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。
PWM:
出于成本考虑,在实际开发应用中,使用较多的是通过PWM来模拟DAC输出。PWM是Pulse Width Modulation的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。
1.DAC数模转换:DAC(PWM)模块上的指示灯DA1呈呼吸灯效果,由暗变亮再由亮变暗
主函数1
#include <REGX52.H>
#include "DELAY.h"void main()
{unsigned char i,time;while(1){for(time=0;time<100;time++){for(i=0;i<20;i++){P2_1=0;delay10us(time);P2_1=1;delay10us(100-time);}}for(time=100;time>0;time--){for(i=0;i<20;i++){P2_1=0;delay10us(time);P2_1=1;delay10us(100-time);}}}
}
主函数2
#include <REGX52.H>
#include "DELAY.h"
#include "timer0.h"unsigned char Count,Compare,i;void main()
{Timer0Init();while(1){for(i=0;i<100;i++){Compare=i;delay(10);} for(i=100;i>0;i--){Compare=i;delay(10);} }
}void Timer0_Routine() interrupt 1 //100微秒@11.0592MHz
{TL0 = 0xA4; //设置定时初始值TH0 = 0xFF; //设置定时初始值Count++;Count%=100;if(Count>Compare){P2_1=0;}else{P2_1=1;}
}
51单片机——ADC模数转换、DAC数模转换PWM C语言入门编程相关推荐
- 51单片机ADC模数转换
51单片机ADC模数转换 ADC介绍 1.ADC简介 ADC(analog to digital converter)也称为模数转换器,是指一个将模拟信号转变为数字信号.单片机在采集 ...
- 51单片机 | ADC模数转换实验
文章目录 一.ADC介绍 1.ADC简介 2.ADC 转换原理 二.XPT2046 芯片介绍 三.硬件设计 四.软件设计 1.ADC 读写函数 2.主函数 五.实验现象 前面我们介绍的都是对数字信 ...
- 51单片机——ADC模数转换实验
目录 一.功能描述 二.ADC介绍 2.1 逐次逼近型ADC转换原理 2.2 ADC的主要技术指标 三.XPT2046芯片介绍 3.1 XPT2046外部引脚 3.2 XPT2046的命令字 3.3 ...
- 51单片机ADC0832模数转换+ LCD1602显示+Proteus仿真
51单片机ADC0832模数转换+ LCD1602显示+Proteus仿真 Proteus仿真 在Proteus SP2仿真过程中发现无法读取ADC0832的数据.解决办法:在proteus安装目录下 ...
- 51单片机 ADC0809模数转换与显示+Proteus仿真
51单片机 ADC0809模数转换与显示+Proteus仿真 Proteus仿真 实例代码 /*********************************/ #include <reg52 ...
- 51单片机使用HC-SR501人体红外感应器C语言
51单片机使用HC-SR501人体红外感应器C语言 前言 买到该产品后问客服和面向百度编程,发现在51单片机上 使用的教程不多,且不够细致,使用存在困难,烦躁了很久,为了不让后来者跟我一样,写一篇 文 ...
- 单片机红外线c语言,自己写的51单片机的红外线遥控接收程序(C语言)
自己写的51单片机的红外线遥控接收程序(C语言) (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 //51单片机做的红外遥控实验(C ...
- 51单片机心形灯实现旋转呼吸灯流水编程
51单片机心形灯--实现旋转呼吸灯流水编程 其他心形灯类型编码请看我的其他博文~ 心形灯效果图 如果是静态效果请刷新页面哦 心形灯原理图 编译软件:Keil uVision5 (如有需要可点此链接下载 ...
- 51单片机 (十二)PWM
什么是PWM 脉冲宽度调制(PWM),是英文"Pulse Width Modulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技 ...
- 51单片机智能远程遥控温控PWM电风扇系统红外遥控温度速度定时关机
实践制作DIY- GC0033-智能远程遥控温控 一.功能说明: 基于51单片机设计-智能远程遥控温控 功能介绍: STC89C51单片机+LCD1602显示器+红外遥控器(接收和发射)+5V风扇+D ...
最新文章
- Genome Biology | 基于RNA-seq的孟德尔疾病变异分析
- 数据库面试题【十六、优化长难的查询语句】
- (二十)TCPIP面试宝典-进入大厂必备总结(中)
- 云上安全保护伞--SLS威胁情报集成实战
- [转]粤语发音字典-粤语翻译
- wxpython使窗口重新显示出来_wxPython实现窗口在任务栏中闪烁
- python ddt
- 利用汇编挖掘编程语言的本质
- IDEA springboot maven 项目部署
- 数据挖掘概念与技术(原书第三版)范明 孟小峰译-----第六章课后习题答案
- Cocos2d-x组件的创建与挂载
- BZOJ-3231 递归数列 矩阵连乘+快速幂
- 《天才在左,疯子在右》读记
- esxi添加硬盘驱动
- 2021年全新UI界面1:1仿皮皮虾APP段子
- 攻与防--论游戏好玩的本质
- java 异常之Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed
- 华为C8815 默认logcat信息
- jsp页面如何调用本机的应用程序?例如c:/netterm.exe?(转载)
- Teamviewer退出锁定远程计算机