-
2021-01-22 12:48:57
前言:
之前讲过基于数码管显示的自动数字电压表,接下来讲一下基于LCD1602显示的相关设计,分别利用的是TI公司的ADC0808和ADC0809。
硬件和软件设计
基于51单片机+ADC0808+LCD1602 测试电压范围为2.1~25V(超出这个范围,程序会卡死),精度<0.05
仿真图如下:
部分代码如下:#include <AT89X52.H> #define LEDDATA P0 #define v20_on {s3=0;s2=0;s1=1;} //宏定义不同量程,不同的开关状态 #define v2_on {s3=0;s2=1;s1=0;} #define v02_on {s3=1;s2=0;s1=0;} unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; unsigned char dispbuf[8]={0,0,0,0,0,0,0,0}; unsigned char getdata; unsigned long temp; unsigned char i,k,l,m; unsigned char code mytable0[]=" Welcome to use "; unsigned char code mytable1[]="Auto Voltmeter!"; unsigned char code line0[]=" Voltmeter "; //初始化显示 unsigned char code line1[]=" Value: V "; //引脚定义 sbit lcdrs=P2^0; sbit lcden=P2^1; sbit s3=P3^7; sbit s2=P3^6; sbit s1=P3^5; sbit OE=P3^0; sbit EOC=P3^1; sbit ST=P3^2; void delay(unsigned int z) //延时子函数 z*1ms { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(unsigned char c) //写命令子函数 { lcdrs=0; //低电平选择为 写指令 lcden=0; LEDDATA=c; //把指令写入P0口 delay(5); //参考时序图 lcden=1; //开使能 delay(5); //读取指令 lcden=0; //关闭使能 } void write_data(unsigned char d) //写数据子函数 { lcdrs=1; //高电平选择为 写数据 LEDDATA=d; //把数据写入P0口 delay(5); //参考时序图 lcden=1; //开使能 delay(5); //读取数据 lcden=0; //关闭使能 } void initialize() //LCD初始化函数 { unsigned char num; lcden=0; write_com(0x38); //设置16x2显示,5x7点阵显示,8位数据接口 write_com(0x0c); //00001DCB,D(开关显示),C(是否显示光标),B(光标闪烁,光标不显示) write_com(0x06); //000001N0,N(地址指针+-1) write_com(0x01); //清屏指令 每次显示下一屏内容时,必须清屏 write_com(0x80+0x10); //第一行,顶格显示 for(num=0;num<17;num++) { write_data(mytable0[num]); delay(10); } write_com(0x80+0x50); //第二行,从第一格开始显示 for(num=0;num<15;num++) { write_data(mytable1[num]); delay(10); } for(num=0;num<16;num++) { write_com(0x1c); //0001(S/C)(R/L)**; S/C:高电平移动字符,低电平移动光标; R/L:高电平左移,低电平右移 delay(300); } delay(1000); write_com(0x01); //清屏指令 每次显示下一屏内容时,必须清屏 write_com(0x80); for(num=0;num<14;num++) { write_data(line0[num]); delay(10); } write_com(0x80+0x40); for(num=0;num<15;num++) { write_data(line1[num]); delay(10); } }
.
基于51单片机+ADC0809+LCD1602 测试电压范围为0~5V,精度约为0.01
以AT89C51单片机为核心,起着控制作用。系统包括LCD1602液晶显示电路、复位电路、时钟电路、模数转换电路电路。设计思路分为五个模块:复位电路、晶振电路模块、AT89C51、LCD1602液晶显示电路、模数转换器电路这五个模块。
部分代码如下://<程序名>:数字电压表 ** //<功能>:使用LCD显示被检测电压,精度为0.05V,范围是0~5V。 ** #include"includes.h" #define TIME0H 0x3C #define TIME0L 0xB0 uchar uc_Clock=0; //定时器0中断计数 bit b_DATransform=0; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把电压显示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> void vShowVoltage(uint uiNumber) { uchar ucaNumber[3],ucCount; if(uiNumber>999) uiNumber=999; ucaNumber[0]=uiNumber/100; //把计算数字的每个位存入数组。 ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10; ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1]; for(ucCount=0;ucCount<3;ucCount++) { vShowOneChar(ucaNumber[ucCount]+48); //从首位到末位逐一输出。 if(ucCount==0) vShowOneChar('.'); } } //************************************************************************************************* //* * //* ********************************主函数****************************** * //* * //************************************************************************************************* void main() { TMOD=0x01; //定时器0,模式1。 TH0=TIME0H; TL0=TIME0L; TR0=1; //启动定时器。 ET0=1; //开定时器中断。 EA=1; //开总中断 vdInitialize(); vWriteCMD(0x84); //写入显示起始地址(第一行第4个位置) vShowChar("voltage"); vWriteCMD(0xC9); vShowChar("(V)"); while(1) { if(b_DATransform==1) { b_DATransform=0; vWriteCMD(0xC4); vShowVoltage(uiADTransform()); } } } //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0中断函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> void t0() interrupt 1 { if(uc_Clock==0) { uc_Clock=5; b_DATransform=1; } else uc_Clock--; TH0=TIME0H; //恢复定时器0。 TL0=TIME0L; }
更多相关内容 -
ADC0809与51单片机的连接方式
2020-07-12 07:27:40由于ADC0809片内没有时钟,可利用单片机提供的地址锁存信号ALE经D触发器2分频后获得,ALE引脚的频率是单片机时钟频率的1/6,如果单片机时钟频率采用6MHz,则ALE引脚的输出频率为1MHz,再经过2分频后为500kHz,恰好... -
adc0809引脚图及功能详解,adc0809与51单片机连接电路分析
2021-05-23 12:17:29描述adc0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。1.主要特性1)8路8位A/D转换器,...描述
adc0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
1.主要特性
1)8路8位A/D转换器,即分辨率8位。
2)具有转换起停控制端。
3)转换时间为100μs
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
2.内部结构
adc0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近组成。
adc0809的内部逻辑结构图如图9-7所示。
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。
adc0809引脚图及功能
3.外部特性(引脚功能)
adc0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。下面说明各引脚功能。
IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路
ALE:地址锁存允许信号,输入,高电平有效。
START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
adc0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
adc0809与单片机连接电路分析
MCS-51单片机与adc0809的接口
adc0809与MCS-51单片机的连接如图9.10所示。
电路连接主要涉及两个问题。一是8路模拟信号通道的选择,二是A/D转换完成后转换数据的传送。
图9.11 adc0809的部分信号连接
2. 转换数据的传送
A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如adc0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片由表明转换完成的状态信号,例如adc0809的EOC端。因此可以用查询方式,测试EOC的状态,即可却只转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述那种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
不管使用上述那种方式,只要一旦确认转换结束,便可通过指令进行数据传送。所用的指令为MOVX 读指令,仍以图9-17所示为例,
则有
MOV DPTR , #FE00H
MOVX A , @DPTR
该指令在送出有效口地址的同时,发出有效信号,使0809的输出允许信号OE有效,从而打开三态门输出,是转换后的数据通过数据总线送入A累加器中。
这里需要说明的示,adc0809的三个地址端A、B、C即可如前所述与地址线相连,也可与数据线相连,例如与D0~D2相连。这是启动A/D转换的指令与上述类似,只不过A的内容不能为任意数,而必须和所选输入通道号IN0~IN7相一致。例如当A、B、C分别与D0、D1、D2相连时,启动IN7的A/D转换指令如下:
MOV DPTR, #FE00H ;送入0809的口地址
MOV A ,#07H ;D2D1D0=111选择IN7通道
MOVX @DPTR, A ;启动A/D转换
A/D转换应用举例
设有一个8路模拟量输入的巡回监测系统,采样数据依次存放在外部RAM 0A0H~0A7H单元中,按图9.10所示的接口电路,adc0809的8个通道地址为0FEF8H~0FEFFH.其数据采样的初始化程序和中断服务程序(假定只采样一次)如下:
打开APP阅读更多精彩内容
点击阅读全文
-
ADC0809与单片机的接口电路图
2008-11-23 16:24:25ADC0809与单片机的接口电路图。ADC0809是一款常用的A/D转换芯片。 -
51总线方式获取adc0809数值
2018-11-27 22:28:52最近单片机有一个实验挺有意思的,使用51单片机以总线的方式读取adc0809的数据 先补充点关于单片机总线的预备知识,我一开始不了解总线的时候做这个实验也是很懵逼的。 单片机的三总线结构 51单片机有三条总线...最近单片机有一个实验挺有意思的,使用51单片机以总线的方式读取adc0809的数据
先补充点关于单片机总线的预备知识,我一开始不了解总线的时候做这个实验也是很懵逼的。
单片机的三总线结构
51单片机有三条总线:数据总线、地址总线、控制总线
从图中可以看出,8位数据总线由P0组成,16位地址总线由P0和P2组成,控制总线由P3和相关引脚组成
采用总线的方式可以简化编程,节省I/O口,便于外设扩展
但是数据口和地址口在P0是怎么复用的呢,这就需要看到时序了
从图中可以看出,P0口是数据/地址分时复用的,这是P0口内部的复用结构完成的
实操练习
51单片机与adc0809接线原理图如下
解释电路
P2.7口用作adc0809的选择线
P0.0~P0.2所接的A B C是adc0809的IN0通道选择线
接下来就是计算adc0809的地址了
P2 P0
0xxx xxxx xxxx x000
因此地址为0x7ff8
遇到的问题
本来应该显示5v的位置只显示1.144v,而且在电阻增大的过程中,显示的值先减小后增大又减小,具体情况如图
实在没有办法的情况下,借别的同学的代码来看,没发现自己的程序在时序、地址上的错误。
琢磨了单片机的数值变换的现象后,突然觉得是不是保存ad转换数值的变量溢出了,然后就发现我的变量类型是int,而别人的变量类型是long int
在将保存ad转换的变量类型修改过后,程序就运行正常了
程序代码
#include <reg51.h> #include <absacc.h> typedef unsigned char uchar; typedef unsigned int uint8; typedef unsigned long int uint16; uchar led_mod[] = { 0x3f,0x06,0x5b,0x4f, //!< 数码管编码 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; #define AD_IN0 XBYTE [0x7ff8] sbit EOC = P3^5; sbit CLK = P3^3; sbit seg1 = P2^0; sbit seg2 = P2^1; sbit seg3 = P2^2; sbit seg4 = P2^3; uint16 adc_data = 0; //> 保存ad转换结果 /** * @brief 延迟函数 * */ void delay_ms(uint8 time) { uint8 j; for (; time>0; time--) { for(j=114; j>0; j--); } } /** * @brief 定时器初始化 * */ void timer_init(void) { TMOD |= 0x02; TH0 = 200; //> 产生方波周期2us TL0 = 200; ET0 = 1; TR0 = 1; } /** * @brief 数码管动态显示函数 * */ void display(void) { adc_data = adc_data*1000/51; //> 分辨率为5/256约为1/51 P1 = 0x00; P1 = led_mod[adc_data/1000]|0x80; seg1 = 0; delay_ms(2); seg1 = 1; P1 = 0x00; P1 = led_mod[(adc_data%1000)/100]; seg2 = 0; delay_ms(2); seg2 = 1; P1 = 0x00; P1 = led_mod[(adc_data%100)/10]; seg3 = 0; delay_ms(2); seg3 = 1; P1 = 0x00; P1 = led_mod[adc_data%10]; seg4 = 0; delay_ms(2); seg4 = 1; } void main() { timer_init(); EA = 1; while(1) { AD_IN0 = 0; while(EOC == 0); adc_data = AD_IN0; display(); } } /** * @brief 产生时钟周期 * */ void timer0() interrupt 1 { CLK = ~CLK; }
-
51 ADC0809八路NTC温度采集系统(代码+仿真,OLED SPI)
2021-03-25 19:09:42目录ADC0809和51八路NTC温度采集系统1.NTC负温度2.ADC08093.51最小系统连接图(proteus8)4.Keil代码5.踩坑注意(1)proteus8仿真ADC0809(2) proteus8仿真OLED相应引脚接线5.效果演示图 1.NTC负温度 网络上很多NTC...ADC0809和51八路NTC温度采集系统
目录
1.NTC负温度
网络上很多NTC温度转换方式,有查表之类的。由于我的这个项目对于温度准确度要求并不高,所以用一下公式转化即可满足显示要求,如需要更精确的数值,还请看看数据手册查表分析。
这里引用这位大佬的经验,转换公式也是从此的来。(所谓站在巨人肩膀上才能看的更远)感激这位大佬的分享。https://blog.csdn.net/u013866683/article/details/79391849
2.ADC0809
仿真替代方案
proteus仿真里面用ADC0808代替ADC0809,只需要把名字给改一下就可以了,引脚也是适用的。
3.51最小系统连接图(proteus8)
4.Keil代码
这里放出关键的NTC温度转换代码
main.c
/* const float Rp =10.0; //10K const float Temp2 = (273.15+25.0); //T2 const float Bx = 3950.0;//B const float Ka = 273.15; */ float Get_Temp(uchar channel) { float Rt; float temp; float vol; float tempBuff=0;//返回值缓存 int showTemp; vol = (float)(AD())*(5.04/256); //NTC电压 vol = (float)(AD())*(5.04/256); //NTC电压,ad转换要多转换一次,因为第二次读取的数才是本次使用的数值 Rt = (vol*10)/(5.04-vol); //当前温度阻值 temp = Rt/Rp; temp = log(temp);//ln(Rt/Rp) temp/=Bx;//ln(Rt/Rp)/B temp+=(1/Temp2); temp = 1/(temp); temp-=Ka+0.5; tempBuff = temp; //返回值缓存 if(temp<0) { temp = -temp; //变正取数 minFlag=1; //负值标志位 } else { temp = temp; minFlag=0; } showTemp = 100*temp; disbuff[channel*4+0]=showTemp/1000; //分别取千百十个位,后面添加 '+' '-' '.';数据格式+xx.xx(-xx.xx) disbuff[channel*4+1]=showTemp%1000/100; disbuff[channel*4+2]=showTemp%100/10; disbuff[channel*4+3]=showTemp%10; return tempBuff; }
链接:https://pan.baidu.com/s/1O64KxTIM1UwWvrY0eVqCQg 提取码:qost 如果需要代码和仿真源文件,可以留言个邮箱。
5.踩坑注意
(1)proteus8仿真ADC0809
这里我就不重复说明了,感激这位大佬的分享。简单说就是ADC0808的输出引脚序号与实际数据的高低位是相反的,即OUT8对应输出数据的最低位(LSB),OUT1对应输出数据的最高位(MSB)
https://blog.csdn.net/weixin_42098782/article/details/86503628
(2) proteus8仿真OLED
proteus器件输入LY190-128064
相应引脚接线
特此说明,由于我接的是P0口,所以用上拉电阻。
5.效果演示图
-
从51开始的单片机之旅(二)----LCD1602液晶、ADC0809、DAC0832
2020-05-13 15:20:26说在前面一、基本原理介绍二、原器件介绍三、设计及接线四、流程框图五、程序六、项目设计总结七、最后找了两张实物图 一、基本原理介绍 adc0809 模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变... -
ADC0804 模数转换51单片机程序+电路图
2020-12-24 11:48:4251单片机驱动 adc0804模数转换 ,下面是电路图 #include#include "lcd.h"#include#define uint unsigned int#define uchar unsigned charuchar lcd[]="0123456789";sbit rd=P3^6; //IO口定义sbit wr=P3^5;sbit cs=P3... -
ADC0804与单片机的模数转换程序(附仿真图)
2010-07-19 11:16:31ADC0804与单片机的模数转换程序(附仿真图),希望对大家有用 -
hc05与单片机连接图_如何来看单片机外设A/D转换器ADC0804时序图
2020-11-21 04:23:27如图,为单片机AD转换器的一种:ADC0804单片集成A/D转换器。它采用CMOS工艺20引脚集成芯片,分辩率为8位,转换时间为100µs,输入电压范围为0~5V。芯片内具有三态输出数据锁存器,可直接接在数据总线上。各引脚名称... -
浊度传感器51单片机代码
2020-01-09 11:32:34该资料为浊度传感器在51单片机上进行应用的c语言代码。 使用ADC0809模块,可拓展液晶显示屏。 十分适合需要结合水污染探测的人使用。 -
ADC0809转换原理报告
2011-01-25 21:43:46计算机接口技术 AD转换原理报告 ADC0809接线图 51单片机 -
基于51单片机水质检测电路设计(检测水温度、水浊度,包含源程序、原理图及说明文档).rar_单片机硬件电路...
2020-12-22 09:55:54该设计的方案是基于51单片机,对水源进行采集,将温度传感器DS18B20、水浊度传感器放入水中,水浊度传感器通过A/D转换器adc0832进行模数转换,转变之后的信号传送给单片机。单片机通过LCD1602显示测得的温度值、水浊... -
单片机的智能火灾报警系统+烟雾传感+ADC0832模数转换+温度检测+数码管显示+按键设定+声光蜂鸣器设计-电路...
2021-04-20 13:43:08本作品单片机的智能火灾报警系统采用51单片机+MQ-2烟雾传感+ADC0832模数转换芯片+DS18B20温度传感器+数码管显示+按键设定+声光蜂鸣器设计而成。 1、可设置烟雾浓度和高温报警值,遇到紧急突发情况可紧急报警和手动... -
我的51单片机之模数转换ADC0804的C语言和汇编编程.pdf
2020-10-31 21:36:57模数转换ADC0804 一功能: 程序为数字电压表程序先接上液晶1602输入电压可取自实验板或处接当 电压取自实验板...值数码管显示相应的AD 转换内码(ASCII 码)当输入电压外接时接线端为A-IN 和GND电压取0 到5伏 二电路图: 三 -
基于51单片机——AD转换电路设计(采用AD0809芯片)
2021-12-25 16:03:38一、设计要求 采用AD0809对输入的模拟量进行转化,转化完成后将数字量通过LED进行二进制显示。电路图如下。...由上图可以看到,AD0809由一个8路模拟量开关、一个地址锁存与译码器、一个A/D转换器.. -
51单片机电路原理图_51单片机AD转换电路设计实现
2020-11-21 21:04:2451单片机AD转换电路设计实现关于AD转换的原理,大家在《数字电子技术》中已经学过,这里做过多的介绍,本文介绍一款经典的8位AD转换芯片ADC0804,基于51单片机设计AD转换电路,并完成测量值的转换。1 芯片引脚介绍CS... -
基于51单片机利用ADC0808芯片实现A/D转换。
2020-06-23 16:06:19按照下图接线,当输入模拟2.5V电压输入时,A/D转换得出数字量7FH,并在数码管中显示 来。 #include "AT89X52.H" main() { while(1) { P2_2=0;P2_2=1;P2_2=0; while(P2_0==0) { P2_1=1;P1=P0; } } }... -
adc0831使用说明
2009-03-02 23:20:32adc0831的使用手册,让大家对ADC0831在单片机的应用中有一个好的资料 -
adc0832工作原理详解_引脚图及功能_内部结构及应用电路
2020-12-19 02:49:39美国国家半导体公司生产的ADC0832是广泛应用的8 位分辨率、双通道A/D转换芯片。ADC0832是双通道输入,并且可以软件配置...ADC0832的工作原理正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI... -
【STM32F4】GP2Y1010粉尘传感器与STM32F4的接线图
2020-05-31 18:43:12在网上找了很久,大多数都是原理图连接,所以自己根据...连接如下图,其中③接的是输出端用于传感器接收采集信号,④接的是STM32F4的ADC1的A5引脚,模拟输入 具体STM32F4中GP2Y10粉尘传感器的代码见下篇博客 ... -
肺活量监测,STC89C51单片机和AD0832,AD转换,加上XGZP6847
2018-08-06 09:06:36肺活量监测,原理图部分,STC89C51单片机和AD0832,AD转换,加上XGZP6847 -
51proteus仿真:adc0804实现模数转换
2019-10-02 01:03:3251proteus仿真:adc0804实现模数转换 系统采集到的信号,几乎都是模拟信号。学习单片机的模拟数字ad转换是必须的。 这个仿真就是利用adc0804把模拟电压转换为数字信号,然后再输出到数码管。 由于最大电压不... -
51单片机按键控制数码管0~9_C51例程—矩阵键盘控制与数码管显示
2020-11-19 19:44:43也就是对于数码管内部的灯管来说,公共端是地,在图中也能看的出来。而且,在单片机控制数码管的引脚都连着上拉电阻,也是就图中的RP1。RP1的引脚1是排阻的公共端,连接着电源。这里的作用是当单片机驱动LED时,给... -
普中51开发板,用XPT2046芯片实现AD数模转换。protues仿真用ADC0808实现AD数模转化
2020-04-23 17:33:43普中51开发板,用XPT2046芯片实现AD数模转换:让8个动态数码管,第一二位显示AD,后3位转换的数字量,最后3位显示对应电压值 XPT2046芯片使用小结: XPT2046 是一种典型的逐次逼近型模数转换器(SAR ADC),包含了... -
模数转换ADC0804的应用实例(含源程序及电路)
2021-05-23 00:45:16[实验要求]从ADC0804 的模拟量通道输入0-5V 之间的模拟量,通过ADC0804 转换成数字量送给单片机,经单片机处理后在数码管上以十进制形成显示出来。[实验目的]学习如果用单片机控制ADC0804芯片进行数模转换,掌握... -
模数转换IC ADC0809的使用制做之一……基础知识
2013-10-23 16:34:14查看文章 17、模数转换IC ADC0809的使用制做之一……基础知识2008-12-31 13:56我们重在实际制做,太罗嗦的内容我就不说了,只讲些跟制做有关的最精炼的知识。 ADC0809是可以将我们要测量的模拟电压信号量转换为... -
51单片机的花卉、农田自动浇水灌溉系统开发,Proteus仿真,原理图和C代码
2022-04-21 18:40:29系统以51单片机为核心部件,辅以外围电路,实现了对土壤湿度信号采集、处理、显示、以及声光报警、水泵的自动控制功能。 -
基于proteus的51单片机仿真实例八十、模数转换器ADC0832应用实例
2017-05-29 09:52:17本系列文章讲述了基于proteus仿真的51单片机学习,内容全面,不仅讲解电路原理,还讲解了单片机c语言,实例丰富,内容全面。 -
多功能时钟电路的设计框图_OLED显示屏,行驱动电路设计,单片机AT89C51与和显示屏的硬件接线...
2020-10-22 12:10:15随着科学技术与电子业技术的不断发展更迭,有机发光二极管如何简易并且有效的实现显示均匀、大面积发光、高亮度高分辨率发光、以及延长有机发光二极管寿命等当前亟需解决的问题,是我们未来要面对的技术挑战。...