永发信息网

关于51.和AVR单片机的电压转化问题

答案:2  悬赏:0  手机版
解决时间 2021-04-06 07:17
  • 提问者网友:遁入空寂
  • 2021-04-05 23:41
小生有几点不是很明白,1.做一个数字电压表为什么AD得到的要转化成电压值呢,得到的是什么数才需要转化。
2.在AVR单片机如果用定时器0的CTC模式,怎么实现2ms,最主要的是OCR要怎么计算,。
3.我在看一些书时,看到SPI 的例子时,IC用的TLC548,得到数要转化成成电压,转换的程序如下:
#define dv 196 //5v*1000/255 这是为什么??
dat_in=SPDR; //收数据
adc_v=(unsigned long)dat_in/10; //这是为什么??
.................

然而在另外一本书用的是TLC549,转化的程序如下,
#define dv 196

dat_in=SPDR;
adc_v=(unsigned int)dat_in/100;//????????????

我想问一下他的转化原理是什么,思路是什么,为什么要5*1000/255,如果换成其它的IC又怎么写。

上面有一句写错了,
#define dv 196 //5v*1000/255 这是为什么??
dat_in=SPDR; //收数据
adc_v=(unsigned long)dat_in*dv/10; //这是为什么??

然而在另外一本书用的是TLC549,转化的程序如下,
#define dv 196

dat_in=SPDR;
adc_v=(unsigned int)dat_in*dv/100; //????????????
最佳答案
  • 五星知识达人网友:煞尾
  • 2021-04-06 00:59
5V是电源电压,也就是基准电压

8位AD:测得数字量=待测电压/基准电压*256
10位AD:测得数字量=待测电压/基准电压*1024
12位AD:测得数字量=待测电压/基准电压*4096
因此, 对于8位AD 实际电压=所测数字量*基准电压/256
由于单片机进行整数运算比较快,且显示处理方便,为了保证精度,因此将基准电压扩大1000倍(单位为mv)
结果就是: 实际电压=所测数字量*5000/256,如果显示时还想以V为单位,只需将小数点向前移3位,就可以了
不扩大1000倍速的话,运算结果只能是 0 1 2 3 4,所有的小数部分全丢失
全部回答
  • 1楼网友:逐風
  • 2021-04-06 02:34
icc: #pragma data:code const unsigned char led0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//不带小数点 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; const unsigned char led1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,//带小数点 0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1}; // 0x40 显示横线,0xc0 横线带小数点,p=0x73 const unsigned char led2[]={0x00,0x40}; const unsigned char wei[]={0x7f,0xfe,0xfd,0xbf};//led位码 #pragma data:data
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯