全球旧事资料 分类
i322DS18B20读字节读取一位数据bittmpreadbitvoidreadabit读一位ui
tibitdatDS0iifordelay小延时一下DS1iidatDSi8whilei0iretur
datuchartmpreadvoidreadabytedate读一个字节ucharijdatdat0
ffori1i8ijtmpreadbitdatj7dat1读出的数据最低位在最前面,这样刚好一个字节在DAT里retur
dat323DS18B20写字节写入字节数据voidtmpwritebyteuchardatwriteabytetods18b20写一个字节到DS18B20里面ui
tiucharjbittestbforj1j8jtestbdat0x01datdat1iftestbwrite1写1部分DS0iiDS1i8whilei0ielseDS0write0写0部分i8whilei0i
fDS1ii324启动温度测量启动温度测量voidtmpcha
gevoidDS18B20begi
cha
ge发送温度转换命令dsreset初始化DS18B20delay1延时tmpwritebyte0xccaddressalldriverso
bus跳过序列号命令tmpwritebyte0x44i
itiatesasi
gletemperatureco
versio
发送温度转换命令ui
ttmpgetthetemperature获得温度floatttucharabdsresetdelay1tmpwritebyte0xcctmpwritebyte0xbeatmpreadbtmpreadtempbtemp8twobytecomposeai
tvariable两字节合成一个整型变量temptempatttemp00625得到真实十进制温度值,因为DS18B20可以精确到00625度,所以读回数据的最低位代表的是00625度。temptt1005放大十倍,这样做的目的将小数点后第一位
f也转换为可显示数字,同时进行一个四舍五入操作。retur
tempvoiddisplayui
ttemp显示程序ucharA1A2A2tA3A1temp100A2ttemp100A2A2t10A3A2t10dula0P0tableA1显示百位dula1dula0wela0P00x7ewela1wela0delay1dula0P0table1A2显示十位dula1dula0wela0P00x7dwela1wela0delay1P0tableA3显示个位dula1dula0P00x7bwela1wela0delay1
f325算法流程图
图425主程序流程图
f开始
图325DS18B20初始化流程图温度零下Y
发DS18B20复位命令温度值取补码置“”标志
N
置“”标志
发跳过ROM命令计算小数位温度BCD值
发温度转换开始命令计算整数位温度BCD值结束
图325温度转换流程图
结束
图325计算温度流程图
33数码管显示数码管显示voidDisplayucharijj0x08fori0i4iP1j数码管位码输出
fLOCK1
打开锁存显示小数点数码管段码输出
ifi2P0leddispi0x01elseP0leddispiLOCK0jj1P00x00Delay125调整位码关闭锁存
4系统的测试与总结
41r
好听全球资料 返回顶部