欢迎来到天天文库
浏览记录
ID:57609610
大小:18.97 KB
页数:9页
时间:2020-08-28
《ds18b20显示程序学习笔记.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ds18b20显示程序学习笔记本程序基于STM8S105K4单片机学习程序。程序硬件就是STM8的最小开发板搭建,用的内部晶振1分频。经测试可以正常显示实际温度。程序中遇到温度显示跳动问题,遇到了之前到达一定的温度之后超过这个温度读取的数据变为0xff.显示温度为0,和始终显示85的情况。这些情况程序中有注释。最终通过调试和实验。所有的程序如下:(程序中可能还有些其他没有发现的问题,或其他错误有问题再学习更改。)//#ifndef__ds18b20_h//#define__ds18b20_h/**读取温度数值程序:unsignedchards18b20_check
2、();//检测是否有DS18B20模块有则返回1,无则返回0voidds18b20_gone();//复位和初始化voidread_ds18b20_buff();//转换和读取数据,最终温度数据在全局变量temp_last中当前模块状态:ds18b20_state*///包含以下可调用程序://*unsignedchards18b20_check();//检测是否有DS18B20模块有则返回1,无则返回0***////*ds18b20_reset();*///*将ds18b20复位//////*ds18b20_gone();//DS18B20开始转换,包含复位//
3、//*read_ds18b20_buff();//DS18B20读取暂存数据值在temp_last中////*unsignedinttemp_last;//处理后的最终温度值*10////*unsignedinttemp_dec_x10();//数据求出十进制范围十进制温度值,上一步已经包含////*当前模块状态:ds18b20_state//0xa0-0xa9代表不同状态见下方//////////********************////////////***相关变量定义*****/////////C0端口的输入输出配置/////#defineds18b2
4、0_io_outGPIO_Init(GPIOD,GPIO_PIN_3,GPIO_MODE_OUT_PP_HIGH_FAST);#defineds18b20_io_inGPIO_Init(GPIOD,GPIO_PIN_3,GPIO_MODE_IN_PU_NO_IT);#defineds18b20_dq_out1GPIO_WriteHigh(GPIOD,GPIO_PIN_3);#defineds18b20_dq_out0GPIO_WriteLow(GPIOD,GPIO_PIN_3);//端口输出数据////***ds18b20_state状态定义*****////#d
5、efinechecking0xa0//检测中#defineresetbegin0xa1//开始复位#defineresetover0xa2//复位完成#definewritingdata0xa3//写数据中#definewaitreport0xa4//复位等待#definereadingdata0xa5//读数据中#definegoing0xa6//ds18b20开始工作#definegettempdata0xa7//获取温度数据中#definedataconversion0xa8//数据转换状态#definetempdataover0xa9//数据获取完成///
6、/////***************函数声明***************///////unsignedinttemp_last;//读取处理后的最终温度值*10//unsignedcharminus_flag=0;//定义符号位为全局变量unsignedchards18b20_state;//模块状态unsignedchards18b20_dq_read(void);//读取输入值unsignedinttemp_buffer[]={0,0,0,0,0,0,0,0};//保存读取的温度值,便于滤波unsignedchards18b20_check(void);
7、//检测是否有DS18B20模块有则返回1,无则返回0***//voidds18b20_reset();//将ds18b20复位//voidds18b20_write_bit(unsignedcharwrite_bit);//向ds18b20写位数据写入0或1***//unsignedchards18b20_read_bit();//向ds18b20读位数据返回读取值0或1***//unsignedchards18b20_read_bit();//向ds18b20写字节数据//unsignedchards18b20_read_byte(void);//向ds18b
8、20读取字
此文档下载收益归作者所有