51单片机数模转换
你result_reg result定义是浮点数,转换用整数运算result=result_reg*500/256;损失了精度,
最后又n=result;赋值给整型n,又损失一次精度
#include
unsigned char flag,a;
void main()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
/*if(RI==1)
{
RI=0;
P1=SBUF;
}*/
if(flag==1)
{
ES=0;
flag=0;
SBUF='1';//28;
while(!TI);
TI=0;
SBUF='2';//28;
while(!TI);
TI=0;
SBUF='3';//28;
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
//P1=SBUF;
a=SBUF;
flag=1;
}
解决了 超简单
说下我的理解。
P0=0 // 初值呀, 这样转化到0V。
flag 是一个标志 当数字量(val)为255(最大转化值)时置1. 为0时清零。
val是一个待转化的数字量 。把val的值给P0口 ,再通过P0与数模转化芯片转化为模拟量。
注释如下:
P0=0; //P0付初值。也就是让val为0;
while(1) //大循环开始
{
if(flag==0) //当flag为0时 。
{
val+=5; // val=val+5;
P0=val; //把val送给P0口;
if(val==255) //如果 val=255;
{
flag=1; //flag=1
beep=0; // 蜂鸣器 汪汪叫 (0是叫还是不叫?)
delayms(100);
beep=1; // 跟前个状态相反。
}
delayms(50);
}
else //如果flag==1; (val=255)
{
val-=5; // 待转化的数字量-5;
P0=val; // val送给P0;
if(val==0) // 待转化val=0;
{
flag=0; // 标记flag =0;
beep=0; // 蜂鸣器不叫
delayms(100);
beep=1; /蜂鸣器叫
}
delayms(50)
}
}
}
以上是我的理解 。 不知道你用PROTUES仿真了没有 。
看这一句 "unchar val,flag"
是定义的 val计数 flag是标记位
当flag为零 val值+5 然后把val给P0
因为是8位的DAC 所以当val为255时 把flag置1 因为256就溢出了
后面不懂的地方类似
P0接的是DA的D0到D7的数据口吧
遇到过这样的问题,现在还不知道为什么,,val,flag 没有赋初值,缘何判断?
我看过这个程序 很多句子也不懂 unchar val,flag; 这句虽然定义了 但是没有赋初值,后面运行到if(flag==0)是怎么运行的呢?无法判断啊
单片机应用系统为什么需要进行数模以及模数转换?
单片机内部处理的是数字量,以实际应用举例,当采用光敏电阻搭建一个采集光照强度的电路并对单片机输出的是电压信号时,使用ADC模数转换电路就可以将连续变化的模拟量变成可供单片机处理的数字量。与此类似,也可以通过数模转换电路将数字量转化为模拟量,用于输出模拟信号或使用模拟量经放大电路后驱动负载。
在单片机系统的设计中需要数模转换吗
根据需求确定,如果需要输出模拟量,则需要数模转换。一般数模转换有两种方式。1种是用专门的DA芯片或者单片机内部DA模块来输出。另一种就是用PWM调节占空比,经过低通滤波和运放跟随来做。看具体情况。
单片机里ADC是个怎么个数模转换呢 求解释下 ADC0 ADC1是啥子个情况
1 单片机里ADC是数模转换器:功能就是将模拟信号(电压0~5V)转换成数字信号 可以转换成8位数字量(即00H~FFH)也可以转换成10位、12位、16位的数字量。转换后的数字量与模拟量在数值上成正比。这样就可以把模拟信号的大小采集到计算机中了,经过处理后,可以送显示器显示采集的电压大小。2 ...
刚学习单片机,请说一下关于数模和模数转换最基本的知识
简单点:如果用124567890这是个点代表模;如果用0,1代表数,那么,凡是小于5的模一律认为是数的0,其他的人视为数的1,那么一次编码后就实现了转换。详细点:数模转换的原理 是 模数转换原理的逆过程 数模转换就是将离散的数字量转换为连接变化的模拟量,实现该功能的电路或器件称为数模转换电路,通...
单片机与数模转换芯片的连接
单片机上的接口很多呀,可以是用P1和P2的端口,这一共是16个呢。如果是8位DAC的话,一个端口就够了,如果是12位的话,就可以用两个端口中的部分引脚了。
MSP430单片机中模数数模转换有什么用
和普通的模数数模转换用途相同,是将外部输入的电压信号转化成可以处理和运算的数字量(模数),和将数字量转化成外部一定范围的电压对外输出(数模),最终实现了现实世界中数据的采集和输出一定范围的信号对现实世界予以控制。
单片机模数转换
现在的单片机都带有模数转换,老的单片机没有,你只要编写程序操作这个模数转换单元就可以了,不知道你用的是哪个单片机,所以你可以看一下手册,确认有没有,我用的STC89C52RC单片机是有的。
五一单片机与数模转换芯片dac 0832的硬件连接如图编写输出锯齿波的程...
可以这样,DAC0832是根据输入的数字量,输出相应的模拟量,锯齿波是有规律的模拟量。单片机内部程序可以通过算法(规律计算或数组),定时生成一个数字量发送到DAC0832,使其输出相应模拟量,即可。例如锯齿波是从0~3V,将0~3V分为若干个点(分辨率),定时输出每个点的数字量。
经过数模转换后怎么产生PWM 51单片机
1、PWM是介于 模拟量 和数字量之间的一种信号。从产生角度看,由高电平和 低电平 组成,接近数字量。从使用角度看,加上一个 低通滤波器 就变成幅值连续的模拟量了,接近模拟量。2、你要产生PWM,不需要经过 数模转换 。3、选定PWM输出频率,就决定了输出 方波 的周期,将数字量转换为方波 占空比 ...
单片机内的AVCC是什么
单片机内的AVCC通常是电源供电电压。AVCC是指模拟电路电源电压,通常用于为单片机内部的模拟电路提供电源。这些模拟电路包括ADC(模数转换器)、DAC(数模转换器)等,它们需要稳定的电压才能正常工作。通常情况下,AVCC与单片机的数字电路电源是分开供电的,以避免数字电路的噪声干扰模拟电路的正常工作。在...
姓怜舒其: 这个程序的效果是 电压值逐渐上升 然后逐渐下降 吗? 说下我的理解. P0=0 // 初值呀, 这样转化到0V.flag 是一个标志 当数字量(val)为255(最大转化值)时置1. 为0时清零.val是一个待转化的数字量 .把val的值给P0口 ,再通过P0与数模...
瀍河回族区18537338611: 我想将一个模拟电压信号进行模数转换,怎么接线,用51单片机 - ?
姓怜舒其: 首先要选定一个合适精度的AD转换器,模拟电压必须经过它才能变成数字信号,并与51单片机连接.或者选用具有AD功能的51系单片机.
瀍河回族区18537338611: 在51单片机中 什么是AD/DA? - ?
姓怜舒其: a 模拟量 d数字量 模拟量转化为数字量ad 数字量转化为模拟量da,单片机上一般只有ad
瀍河回族区18537338611: 单片机的模数转换 - ?
姓怜舒其: 模拟信号放大之后,如果电压超过0-5V范围是绝对不能直接加P1口的,严重的话会将P1口烧坏.如果电压在0-5V内,可以接入P1口,但是没有意义.单片机是不能直接读入模拟量的,只能读入信号量.比如,电压大于某一个阀值读入的是1,反之读入的是0.具体的阀值电压是多少要看单片机芯片自身的接口电路.89C51没有做AD用的口,要外加专用AD芯片.
瀍河回族区18537338611: 如何用AT98S52单片机(51系列)控制MAX187进行数模转换 - ?
姓怜舒其: 这是个调试的过程,分硬件和软件.首先你必须确保硬件电路工作正常,用万用表和示波器等工具测试单片机是否正常工作,倘若单片机都没有工作,何来的DOUT信号?再根据MAX数据手册实现单片机和采集芯片的硬件连接.在单片机中下载好程序后,用示波器查看相应的控制信号是否正常,如CS和SCLK信号如何,如果确保了硬件连接和单片输出控制信号正常的话,考虑MAX芯片是否存在问题了,那时就换个芯片试试.
瀍河回族区18537338611: 你好,我买了一个灰度传感器,只知道需要数模转换,可是具体搞不清楚,我用的是51单片机,请问具体该怎么 - ?
姓怜舒其: 传感器要是输出模拟量的话,需要再买个AD转换的芯片,转换后再接到单片机上就行了.换有AD的单片机也行.
瀍河回族区18537338611: 51单片机中,如何使用PCF8591数模转换产生波形 - ?
姓怜舒其: 首先把pcf8591驱动起来
瀍河回族区18537338611: 如何利用PCF8591P和51单片机编程,实现模数转换,求程序及解释 - ?
姓怜舒其: 知道内部寄存器的地址,只要调用单片机模拟I2C时序的程序就可以了.写寄存器设定转换工作方式,输入引脚,启动转换,然后读取转换结果再处理就可以了.
瀍河回族区18537338611: 在单片机系统的设计中需要数模转换吗 - ?
姓怜舒其: 根据需求确定,如果需要输出模拟量,则需要数模转换.一般数模转换有两种方式.1种是用专门的DA芯片或者单片机内部DA模块来输出.另一种就是用PWM调节占空比,经过低通滤波和运放跟随来做.看具体情况.
瀍河回族区18537338611: 不同款的51单片机数模转换芯片,能不能共用 - ?
姓怜舒其: 外置的DA芯片当然可以共用,一般单片机都会内置一些DA,和AD.那是集成在芯片内部的外设