文档详情

DS18B20与AVR单片机的数字温度计设计源程序.doc

发布:2017-08-11约1.22万字共12页下载文档
文本预览下载声明
DS18B20与AVR单片机的数字温度计设计源程序 利用avr来读取ds18b20,实现温度计的功能,下面是关于DS18B20与AVR单片机的数字温度计设计源程序 #include mega48.h? #include delay.h? #include nokia3310.h #include monobus.h? unsigned char data_H, data_L,wendu;? unsigned int? data_T; void main(void)? {??? ? lcd_init();?????????????????????? //lcd初始化?????????? ? lcd_cls();??????????????????????? //清屏,光标回位?? ? while(1)?? ?????? {??? ???????? monobus_init();??????????? //单总线复位 ???????? write_monobus(0xCC);?????? //跳过ID码匹配,适用于一个DS18B20 ???????? ???????? //可以使用8条语句代替上面的那条语句依次写入8个ID码,这样就是ID码匹配了 ???????? //如果不知道18B20的ID码,可以在总线上接入单个18B20 ???????? //然后参考下面的读取语句,依次读取18B20的8个ID码 ???????? //记得使用CRC8校验一下是否正确 ???????? ???????? write_monobus(0x44);?????? //启动温度转换 ???????? ???????? delay_ms(500);???????????? //等待转换 ???????? monobus_init();??????????? //单总线复位 ???????? write_monobus(0xCC);?????? //跳过ID码匹配 ???????? write_monobus(0xBE);?????? //通知DS18B20,准备读数据 ???????? data_L=read_monobus();???? //读取第一个数据(温度低字节) ???????? data_H=read_monobus();???? //读取第二个数据(温度高字节) ???????? ???????? //可以继续读取第三个到第九个RAM数据 ???????? ???????? lcd_cls(); ???????? ???????? data_T=data_H*256+data_L;? //合并后得到原始温度数据 ???????? ???????? if(data_H15) data_T=(~data_T+1)/16; else data_T/=16; //计算实际温度 ???????? wendu=data_T; ???????? ???????? lcd_gotoxy(16,3); ???????? lcd_putsf(T = ,4);?????? //显示字符串,字符串是保存在Flash的 ???????? if(data_H15) lcd_putchar(-); ???????? lcd_put(wendu);??????????? //显示温度 ???????? lcd_putchar( );????????? //空一个字符 ???????? lcd_write(2);????????????? //显示C前面上标的一个点 ???????? lcd_write(0);????????????? //空一小格 ???????? lcd_putchar(C);?? ???????? delay_ms(250);?????? ?????? }? }?? /* 如果温度为正,则T的最高位的4位都为0,否则为1 负温度的计算:原始数据取反、加1、再乘以 0.0625 正温度的计算:原始数据乘以 0.0625 CVAVR自带了18B20的库,如果大家不喜欢上面我写的函数,也可以使用自带的 */ //********************************************************************************** //********************************************************************************** //monobus.h文件,用于操作DS18B20/DS2401等单总线器件? //假设软件设计要求的时钟频率是4MHz //实际上硬件工作在2-8MHz下也很正
显示全部
相似文档