|
这个实验的目的就是要通过MEGA128把DS18B20里面能读的东西都读出来,然后通过UART0发出去送给电脑显示,而不是简单的显示一个33度就了事,程序是用CV写的,UART0的发送程序是CV自动生成的,很方便,DS18B20的程序也是在论坛的基础上改的
![](http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_355530.JPG)
(原文件名:1.JPG)
这是我的"实验平台",万用板焊的,很寒酸,但很适合我用,手机拍的,不是很清楚
![](http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_355531.JPG)
(原文件名:2.JPG)
简单解释一下:
1.the ds18b20 id is 28-C6-9-16-1-0-0-5A
这个是DS18B20的ID,0x28代表它是DS18B20,如果你读出来不是0x28,说明DS18B20是坏的,或着程序电路有问题,C6-9-16-1-0-0是DS18B20的自身的序列号,每个DS18B20都是不一样的,5A是前面56位的循环冗余校验码(CRC=X8+X5+X4+1),详细的内容请看datasheet
2.the temperature lsb is--fb
the temperature msb is--1
lsb 是温度值的低8位,msb是温度值的高8位,msb的高5位是符号位,如果是0,表示温度>0,是1表示温度<0,详细的内容请看datasheet
3.the th is--4b
the tl is--46
这个是高低温报警值,可由自己设定,详细的内容请看datasheet
4.the config is--7f
配置寄存器的内容,这个每个DS18B20读出来的内容都是一样的,具体的内容请看datasheet
5.the reserved is--ff 1 10
保留位,没必要研究,具体的内容请看datasheet
6.the crc is--a1
CRC校验值,具体的内容请看datasheet
7.the real temperature is 31.6875c
实际温度值,最高精度显示,把0x1fb转成10进制,再乘上0.0625,就等于31.6875,具体的内容请看datasheet
程序在2楼 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|