实现 AD 采样,使用 LCD1602 显示 AD 数值
实现 AD 采样,使用 LCD1602 显示 AD 数值
写在前面
单片机内集成的A/D转换,一般都有相应的特殊功能寄存器来设置A/D的使能标志,参考电压,转换频率,通道选择,A/D输入口的属性(模拟量输入还是普通的I/O口),启动,停止控制等。有了这些寄存器,使得我们控制单片机的模拟量采集变得非常方便。
A/D转换的基本原理是:将参考电平按最大的转换值量化,再利用输入模拟电平与参考电平的比例来求得输入电平的测量值(V测=V参*(AD量化值/AD转换的最大值))。有些MCU A/D转换的参考电平可以选择由一个外部引脚输入,这样使得用户可以对A/D转换进行更好的控制。值得注意的一点就是A/D转换的输入电平必须比参考电平低或相等,不然测试的结果就会有很大的偏差。
要求
将电位器的输出电压进行AD转换,然后把转换的结果在1602上进行展示。
源码
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "lcd.h"
#include"XPT2046.h" typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8; u8 disp[];
u8 code smgduan[]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A}; /*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
} /*******************************************************************************
* 函数名 :datapros()
* 函数功能 :数据处理函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void datapros()
{
u16 temp;
static u8 i;
if(i==)
{
i=;
temp = Read_AD_Data(0x94); // AIN0 电位器
}
i++;
disp[]=smgduan[temp/];//千位
disp[]=smgduan[temp%/];//百位
disp[]=smgduan[temp%%/];//个位
disp[]=smgduan[temp%%%];
} /*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
u8 i;
while()
{
datapros(); //数据处理函数
LcdInit();
for(i=;i<;i++)
{
LcdWriteData(disp[i]);
}
delay();
}
}
效果

实现 AD 采样,使用 LCD1602 显示 AD 数值的更多相关文章
- AD采样模块采集带模拟量真空表值的实验
实验采用带模拟量,分辨率为1-5V,量程为0--101kpa的真空表 数据采集模块采用DAM-8021, 16位模块 算法描述如下: 真空表读数范围: 0到-101kpa 模拟量输出: 1-5V 一 ...
- STM32中AD采样的三种方法分析
在进行STM32F中AD采样的学习中,我们知道AD采样的方法有多种,按照逻辑程序处理有三种方式,一种是查询模式,一种是中断处理模式,一种是DMA模式.三种方法按照处理复杂方法DMA模式处理模式效率最高 ...
- WPF编程 ,TextBlock 显示百分数值的一种简单方法。
原文:WPF编程 ,TextBlock 显示百分数值的一种简单方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/ ...
- 3.5.基于STC89C52+MC20的短信远程控制开关LCD1602显示
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- LCD1602显示中文汉字
小子在西藏 2011-11-25编写 特别说明笔者是上面的作者,感谢那些原意分享知识的人.时隔5年我又看到了笔者当年写的东西,我想这期间还有许许多多的人 今天写在博客上,愿更多后来者可以学习. LCD ...
- Intel Edison —— 控制GPIO接口,网页显示传感器数值
前言 原创文章,转载引用务必注明链接. 因为是使用Typora(markdown)写好然后复制到论坛的,推荐直接访问我的网站以获得更好地阅读体验. Intel XDK IoT 开发环境很久之前就上手了 ...
- 51单片机—LCD1602显示模块
文章目录 - 什么是LCD1602 - 如何操作LCD1602 - 上代码 - 什么是LCD1602 LCD:Liquid Crystal Display-液晶显示器,简称LCD,其主要显示原理是以电 ...
- STM32 AD采样电压计算公式
在使用STM32的ADC进行检测电压时必须回涉及到电压值的计算,为了更高效率的获取电压,现在有以下三种方法: 你得到的结果是你当前AD引脚上的电压值相对于3.3V和4096转换成的数字.假如你得到的A ...
- ad采样后幅度的衰减
adc采集到的信号对低频有一定的衰减.因为要确定衰减的程度.通过da输出到示波器上观察. 数据如下: 输入 输出(enable) 输出(disable) 1v(20hz) 1v 0.88v 1v(10 ...
随机推荐
- ASP.NET 预编译命令(解决发布后第一次访问慢问题)
ASP.NET 编译工具 (Aspnet_compiler.exe) 官方说明 新建bat文件 @echo off CD /d C:\Windows\Microsoft.NET\Framewo ...
- [洛谷]p1996约瑟夫环 &xdoj1311
https://www.luogu.org/problemnew/show/P1996 约瑟夫环这个问题一直以来都是用循环链表写的,今天才知道有循环队列的写法.以下是要点: 1.循环队列实现环的思想, ...
- 原生table相关写法
1.<table style="width: 100%;text-align: center" cellpadding="0" cellspacing=& ...
- HttpClient超时设置setConnectionTimeout和setSoTimeout
http是基于TCP/IP进行通信的,tcp通过3次握手建立连接,并最终以4次挥手终止通信. 知乎上对三次握手和四次挥手有如下解释: 作者:知乎用户链接:https://www.zhihu.com/q ...
- MVC 中url-pattern配置为"/"和"/*"的区别
首先大家都知道"/*"可以匹配所有url,包括带扩展名的,一般只用在过滤器上. 而"/"很多人理解成不能拦截带扩展名的,这种理解是错误的!它其实也能拦截“.js ...
- php实现记住密码下次自动登陆
这篇博客里面还写到 实现“记住我的登录状态”的功能方法,简言之,就是对首先对session进行用户信息赋值,检测session,失效后,利用cookie对其赋值: 在实现过程中,根据网上一些代码贴,整 ...
- Flume:sink.type=hive
Flume以Kafka为Source,以Hive为Sink进行数据转存. 业务背景:公司要求将某四川城市的卡口数据实时接入大数据平台中,历史数据可以通过Hive进行Load,也就是增量数据的对接问题. ...
- 第四章 CSS3概述
1.CSS3新增常用选择器(1)结构性伪类选择器:root 文档根元素 :nth-child(n) 第N个子元素"first-child 第一个元素 :kast-child 最后一个子元素 ...
- 1.安装Python3和PyCharm
一.安装Python3 1.进入官网:www.python.org 2.下载(可以选择你自己的电脑系统版本,我这里是win7 64位) 3.然后点击XXX.exe傻瓜式安装 4.配置环境变量 [右键计 ...
- 【impala学习之一】impala
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 CM5.4 一.ImpalaImpala是基于Hive的大数 ...