南宁建站模板展示,一键生成app的方法,翻译类公司网站模板,自己制作一个网站的软件文章目录 前言一、介绍部分介绍AD/DA硬件电路模型硬件电路ADC模块DAC模块ADC0809DAC0832 运算放大器#xff08;运放#xff09;运放电路 DA原理两种不同的DA转换器 AD原理部分AD/DA性能指标XPT2046介绍主要功能XPT2046时序结构控制字节解释单端模式配置表 二、实例使用AD读取… 文章目录 前言一、介绍部分介绍AD/DA硬件电路模型硬件电路ADC模块DAC模块ADC0809DAC0832 运算放大器运放运放电路 DA原理两种不同的DA转换器 AD原理部分AD/DA性能指标XPT2046介绍主要功能XPT2046时序结构控制字节解释单端模式配置表 二、实例使用AD读取单片机上四种电阻的值配置XPT2046.c主函数测试 使用DA实现呼吸灯 前言
模数转换即Analog-to-Digital Converter常称ADC是指将连续变量的模拟信号转换为离散的数字信号的器件比如将模温度感器产生的电信号转为控制芯片能处理的数字信号0101这样ADC就建立了模拟世界的传感器和数字世界的信号处理与数据转换的联系。反之能把数字信号转换为模拟信号的电路称为数模转换器 Digital to Analog Converter简称为DAC或D/A转换器 一、介绍部分
介绍AD/DA 硬件电路模型 硬件电路
ADC模块 DAC模块 这里以两个老器件学习 ADC0809 DAC0832 运算放大器运放 理想的运放电路分析有两大重要原则贯穿始终即“虚短”与“虚断”。 “虚短”的意思是正端和负端接近短路即VV-,看起来像“短路”; “虚断”的意思是流入正端及负端的电流接近于零即II-0,看起来像断路因为输入阻抗无穷大 运放电路 DA原理
两种不同的DA转换器 两个滤波器效果更好让留下的直流点电更平滑 AD原理 逐次逼近对8位依次判断若小于这个值则置0判断下一位若大于这个值则置1继续判断下一位 部分AD/DA性能指标 XPT2046介绍
主要功能 XPT2046时序结构 上升沿写入下降沿输出 控制字节解释 本单片机AD为单端模式 详解
单端模式配置表 二、实例
使用AD读取单片机上四种电阻的值
配置XPT2046.c
#include REGX52.H
#include Delay.h// 引脚定义
sbit XPT2046_CS P3^5;
sbit XPT2046_DCLK P3^6;
sbit XPT2046_DIN P3^4;
sbit XPT2046_DOUT P3^7;/*** brief XPT2046读取ad* param Command 写入的命令地址* retval ADValue 返回的AD值*/
unsigned int XPT2046_ReadAD(unsigned char Command){unsigned int ADValue 0;unsigned char i;XPT2046_DCLK 0;XPT2046_CS 0;for(i0;i8;i){XPT2046_DIN Command (0x80 i); // 写入命令XPT2046_DCLK 1; // 高电平写入XPT2046_DCLK 0; // 复位}// Delayms(1); // 时序忙等时间for(i0;i16;i){XPT2046_DCLK 1; XPT2046_DCLK 0; if(XPT2046_DOUT){ADValue | (0x8000i);}}XPT2046_CS 1; // 结束时序if(Command 0x08){return ADValue8;}else{return ADValue4;}
}主函数测试
#include REGX52.H
#include Delay.h
#include LCD1602.h
#include XPT2046.hunsigned int ADValue;
void main(){LCD_Init();LCD_ShowString(1,1,ADC);while(1){ADValue XPT2046_ReadAD(XPT2046_XP_12);LCD_ShowNum(2,1,ADValue,4);ADValue XPT2046_ReadAD(XPT2046_YP_12);LCD_ShowNum(2,6,ADValue,4);ADValue XPT2046_ReadAD(XPT2046_VBAT_12);LCD_ShowNum(2,11,ADValue,4);ADValue XPT2046_ReadAD(XPT2046_AUX_12);LCD_ShowNum(1,11,ADValue,4);Delayms(100);}
}
使用DA实现呼吸灯 大部分情况可以直接使用PWM代替DA所以应用并不广泛 #include REGX52.H
#include Delay.h
#include Time0Init.hsbit DA P2^1;unsigned char Counter,Compare; // 周期、比较值
unsigned char KeyNum,i;
void main(){Time0_Init();while(1){for(i0;i100;i){Compare i;Delayms(10);}for(i100;i0;i--){Compare i;Delayms(10);}}
}// 中断函数
void Timer0_Routine() interrupt 1
{ TL0 0xA4; //设置定时初始值TH0 0xFF; //设置定时初始值Counter;// 设置周期if(Counter100){Counter 0;} // 与比较值进行比较if(CounterCompare){DA 1; // 给电}else{DA 0; // 不给电}
}