STC89C52控制AD0809采集信号并显示
ADC0809是采样分辨率为8位的、以逐次逼近原理进行模-数转换的器件,其内部有一个8通道多路开关,它能够依据地址码锁存译码后的信号,选通8路模拟输入信号的任意一路,而且方便拓展,能够实现多路信号的同时采集。可实现模拟电压信号到数字电压信号的转换,这里所用的ADC芯片型号为ADC0809CCN,28引脚双列直插式封装,低功耗,具有转换启停控制端,使用温度范围为-40℃~+80℃。
图1 ADC0809内部结构
表1 地址信号与通道对应关系
这里我仅用到两个通道,显示用的LCD1602,很简单,不说废话直接上代码。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define out P2
sbit START=P3^5;
sbit OE=P3^3;
sbit CLOCK=P3^7;
sbit EOC=P3^4;
sbit add_a=P3^0;
sbit add_b=P3^1;
sbit add_c=P3^2;
sbit RS=P0^7;
sbit E=P0^5;
sbit RW=P0^6;
void delay(uint z)//延时函数
{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}
void check_busy(void)//检查忙函数
{uchar dt;do{dt=0xff;E=0;RS=0;RW=1;E=1;dt=out;}while(dt&0x80);E=0;
}
void write_com(uchar com)//写指令函数
{check_busy();E=0;RS=0;RW=0;out=com;E=1;_nop_();E=0;delay(1);
}
void write_data(uchar dat)//写数字函数
{check_busy();E=0;RS=1;RW=0;out=dat;E=1;_nop_();E=0;delay(1);
}
void lcd_init(void)//LCD初始化函数
{write_com(0x38);write_com(0x0C);write_com(0x06);write_com(0x01);delay(1);
}
void Timer0_INT() interrupt 1
{CLOCK=!CLOCK;
}
void main()
{ uint addata2=0;uint addata1=0;uint addata3,addata4;uchar temp;lcd_init();TMOD=0x02;TL0=0xff;TH0=0xff;IE=0x82;TR0=1;//beep=0;delay(1);while(1){ delay(8);add_a=0;//采集第一路信号add_b=0;add_c=0;START=0;START=1;delay(8);START=0;while(EOC==0)OE=1;delay(8);temp=P1;OE=0;addata3=temp*19.61;if(addata1<=addata3){addata1=addata3;}else{addata1=addata1;}write_com(0x82);write_data('F');write_data('O');write_data('R');write_data('C');write_data('E');write_data('=');write_data('0'+addata1/1000);write_data('0'+addata1/100%10);write_data('.');write_data('0'+addata1/10%10);write_data('0'+addata1%10);write_data('N');delay(10);add_a=1;//采集第二路信号add_b=0;add_c=0;START=0;START=1;delay(8);START=0;while(EOC==0)OE=1;delay(8);temp=P1;OE=0;addata4=temp*3.93;if (addata2<=addata4){addata2=addata4;}else{addata2=addata2;}write_com(0xC0);write_data('T');write_data('O');write_data('R');write_data('Q');write_data('U');write_data('E');write_data('=');write_data('0'+addata2/1000);write_data('.');write_data('0'+addata2/100%10);write_data('0'+addata2/10%10);write_data('0'+addata2%10);write_data('N');write_data('*');write_data('m');delay(100);}
}
STC89C52控制AD0809采集信号并显示相关推荐
- 【PROTEUS仿真】使用AT89C51控制AD0809进行采样并显示
原理图及运行效果 源程序 #include <reg52.h> //头文件 #define uchar unsigned char //宏定义无符号字符型 #define uint uns ...
- 【开源工程】STM32C8T6+ADC信号采集+OLED波形显示
[开源工程]STM32C8T6+ADC信号采集+OLED波形显示 通过手指皮肤接触探测输入引脚:PA7 PA8引脚上的方波输出 PB13引脚上的方波输出 PB13和PA8:互补型方波输出引脚 硬件搭建 ...
- LabVIEW控制Arduino采集DHT11温湿度数值(进阶篇—4)
目录 1.项目概述 2.项目架构 3.硬件环境 4.Arduino功能设计 5.LabVIEW功能设计 5.1.前面板设计 5.2.程序框图设计 1.项目概述 在多数情况下,测量温度的同时需要测量湿度 ...
- 51单片机红外通信及控制LED灯(LCD1602显示)
51单片机红外通信及控制LED灯(LCD1602显示) 大家好,又和大家见面了,离上一次DS18B20传感器的文章已经过去了一个星期了,这期我将给大家带来,基于STC89C52芯片和HS0038红外接 ...
- 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...
- LabVIEW控制Arduino采集光敏电阻数值(基础篇—14)
目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用光敏电阻和LIAT中的光敏函数库,通过Arduino Uno控制板的模拟端口采集与光敏电阻串联电阻的分压值上传给LabV ...
- LabVIEW控制Arduino采集电位器电压(基础篇—4)
目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用LIAT函数库中模拟IO的功能,通过Arduino Uno控制板上模拟输入端口实现对电压的测量,并显示在LabVIEW前 ...
- FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(三)
第七章 实战项目提升,完善简历 19.OV7725摄像头实时采集送HDMI显示(三) 在详细介绍过OV7725 CMOS Sensor的相关背景知识和如何初始化其内部寄存器达到输出预期视频流的目的后, ...
- LabVIEW控制Arduino采集多路DS18B20温度数值(进阶篇—3)
目录 1.项目概述 2.项目架构 3.硬件环境 4.Arduino功能设计 5.LabVIEW功能设计 5.1.前面板设计 5.2.程序框图设计 1.项目概述 DS18B20是美国DALLAS半导体公 ...
最新文章
- Struts2标签库
- Python自学起飞——005
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...
- OpenGL mipmap filters贴图过滤的实例
- 40_pytorch Batch Norm
- 栈,队列,单链表,双向链表
- _bzoj1007 [HNOI2008]水平可见直线【单调栈】
- 力扣724.寻找数组的中心索引
- PHP用substr截取字符串出现中文乱码问题用mb_substr
- bzoj 2938: [Poi2000]病毒(AC自动机)
- 关于raw_input()和sys.stdin.readline()的区别
- 网络安全设备Bypass功能分析
- 泛微E-Office v9任意文件上传(CNVD-2021-49104)复现
- 2B市场 面向2025年技术趋势与5大机会
- linux 时间 time(2)-频率(时钟周期/指令周期/CPU周期)和 jiffies
- 【空气质量数据分析专题三】优良率年际变化分析
- 使用Moment.js 格式化时间为今天,昨天,明天
- RPLIDAR思岚雷达学习记录--1--初识a1并跑通
- 华为首次自曝“天才少年”成果:入职不到一年就干成这件大事,网友:值200万年薪!...