首页 理论教育 零点起步:AVR单片机开发详解,典型实例解析

零点起步:AVR单片机开发详解,典型实例解析

时间:2023-10-17 理论教育 版权反馈
【摘要】:在本实例的程序中,利用ATmega16单片机对DS18B20进行操作,并在诺基亚5110液晶屏显示当前温度字样,在第二行中显示×××℃。程序详解如下:●目的:DS18B20测量温度在诺基亚5110液晶屏上显示。9)从温度芯片DS18B20读配置或数据。假定DS18B20一定是正确的,所以没有返回有关状态。当故意把DS18B20从电路中拔下而能让程序告诉出错时,可以修改这段代码。

零点起步:AVR单片机开发详解,典型实例解析

在本实例的程序中,利用ATmega16单片机对DS18B20进行操作,并在诺基亚5110液晶屏显示当前温度字样,在第二行中显示×××℃。本程序在开发板上调试通过。

程序详解如下(完整的程序代码读者可参考光盘中的内容):

●目的:DS18B20测量温度在诺基亚5110液晶屏上显示。

●功能:单线测温。

●时钟频率:内部1MHz。

●编译环境:ICC-AVR6.31。

●使用硬件:DS18B20温度传感器,诺基亚5110液晶屏。

●结果:诺基亚5110液晶屏显示当前环境温度,格式如23.5℃或者123.5℃测试范围为-55~150℃。

●操作要求:连接好DS18B20,然后插上P18跳帽。

本实例的程序流程图如图14-9所示。

978-7-111-35161-0-Chapter14-24.jpg

图14-9 5510液晶屏显示温度流程图

1)宏定义。主要是对诺基亚5510的操作指令进行定义,包括数据、时钟、背光和片选等内容的定义。

978-7-111-35161-0-Chapter14-25.jpg

2)汉字“当前温度”的点阵字形码。

978-7-111-35161-0-Chapter14-26.jpg

978-7-111-35161-0-Chapter14-27.jpg

3)单片机通过SPI接口写数据到诺基亚5510液晶屏。函数中的参数dt表示写入的数据,command表示写入的是数据还是命令。当command为1时写入的是数据,为0写入的是命令。

978-7-111-35161-0-Chapter14-28.jpg

4)5110LCD初始化函数。(www.xing528.com)

978-7-111-35161-0-Chapter14-29.jpg

5)5110LCD设置坐标函数。

978-7-111-35161-0-Chapter14-30.jpg

6)配置(使能)AVR与DS18B20的接口。

978-7-111-35161-0-Chapter14-31.jpg

7)复位1-wire总线,并探测是否有温度芯片DS18B20(TO-92封装)挂在总线上,有返回SUCC,没有返回FAIL。

978-7-111-35161-0-Chapter14-32.jpg

8)写命令或数据到温度芯片DS18B20(发送一个字节)。

978-7-111-35161-0-Chapter14-33.jpg

9)从温度芯片DS18B20读配置或数据(接收一个字节)。

978-7-111-35161-0-Chapter14-34.jpg

10)电路中只有一个器件DS18B20,所以不需要多个器件的ID识别。跳过之后,启动温度转换,但在启动后,用户应等待几百个毫秒,才能读到这次的转换值,这是DS18B20的数据手册规定的,因为温度转换是需要时间的。

978-7-111-35161-0-Chapter14-35.jpg

11)读取转换后的温度值。假定DS18B20一定是正确的,所以没有返回有关状态。当故意把DS18B20从电路中拔下而能让程序告诉出错时,可以修改这段代码。

978-7-111-35161-0-Chapter14-36.jpg

12)主函数。

978-7-111-35161-0-Chapter14-37.jpg

978-7-111-35161-0-Chapter14-38.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈