在本实例的程序中,利用ATmega16单片机对DS18B20进行操作,并在诺基亚5110液晶屏显示当前温度字样,在第二行中显示×××℃。本程序在开发板上调试通过。
程序详解如下(完整的程序代码读者可参考光盘中的内容):
●目的:DS18B20测量温度在诺基亚5110液晶屏上显示。
●功能:单线测温。
●时钟频率:内部1MHz。
●编译环境:ICC-AVR6.31。
●使用硬件:DS18B20温度传感器,诺基亚5110液晶屏。
●结果:诺基亚5110液晶屏显示当前环境温度,格式如23.5℃或者123.5℃测试范围为-55~150℃。
●操作要求:连接好DS18B20,然后插上P18跳帽。
本实例的程序流程图如图14-9所示。
图14-9 5510液晶屏显示温度流程图
1)宏定义。主要是对诺基亚5510的操作指令进行定义,包括数据、时钟、背光和片选等内容的定义。
2)汉字“当前温度”的点阵字形码。
3)单片机通过SPI接口写数据到诺基亚5510液晶屏。函数中的参数dt表示写入的数据,command表示写入的是数据还是命令。当command为1时写入的是数据,为0写入的是命令。
4)5110LCD初始化函数。(www.xing528.com)
5)5110LCD设置坐标函数。
6)配置(使能)AVR与DS18B20的接口。
7)复位1-wire总线,并探测是否有温度芯片DS18B20(TO-92封装)挂在总线上,有返回SUCC,没有返回FAIL。
8)写命令或数据到温度芯片DS18B20(发送一个字节)。
9)从温度芯片DS18B20读配置或数据(接收一个字节)。
10)电路中只有一个器件DS18B20,所以不需要多个器件的ID识别。跳过之后,启动温度转换,但在启动后,用户应等待几百个毫秒,才能读到这次的转换值,这是DS18B20的数据手册规定的,因为温度转换是需要时间的。
11)读取转换后的温度值。假定DS18B20一定是正确的,所以没有返回有关状态。当故意把DS18B20从电路中拔下而能让程序告诉出错时,可以修改这段代码。
12)主函数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。