万年历课程设计报告 联系客服

发布时间 : 星期二 文章万年历课程设计报告更新完毕开始阅读

显示缓冲单元。阳历程序流程图见图5.1所示。

开 始 初始化1302 1302开始振荡 从1302中读出年、周、月、日、[小]时、分、秒 读出的数据都为BCD码,将其高低位分离送显示缓冲单元 图5.1 阳历程序流程图

5.2 时间调整程序设计

调整时间用5个调整按钮,1个作为移位、控制用,2个作为加和减用,还有2个作为闹钟调整使用,分别定义为控制按钮、加按钮、减按钮、闹钟加按纽、闹钟减按纽。在调整时间过程中,要调整的位与别的位应该有区别。所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一定时间熄灭一次,比如说50ms。利用定时器计时,当达到50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。时间调整程序流程图如图5.2所示。

13

控制键有效,进入年调整程序员 控制键有效,进入月调整程序员 等待按键程序 等待按键程序 加键有效 减键有效 加键有效 减键有效 年加1 年减1 月加1 月减1 控制键有效,进入日调整程序员 控制键有效,进入星期调整程序员 等待按键程序 等待按键程序 加键有效 减键有效 加键有效 减键有效 日加1 日减1 星期加1 星期减1 控制键有效,进入[小]时调整程序员 控制键有效,进入分调整程序员 等待按键程序 等待按键程序 加键有效 减键有效 加键有效 减键有效 [小]时加1 [小]时减1 分加1 分减1 控制键有效,跳出时间调整程序,进入主循环程序 图 5.2 时间调整程序程序流

程图

14

5.3 温度程序设计

系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序等等。

5.3.1 主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次。其程序流程图见5.3。

5.3.2 读出温度子程序

主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图5.4所示。

发温度转换开始命1SY 初次上Y 读出温度值 温度计算处理 显示数据刷新 N 9字节Y CRC校验正Y 移入温度暂存器 N N N 调用显示子程序 初始化 发DS18B20复位命发跳过ROM命发读取温度命读取操作,CRC结束 图5.3 DS18B20温度计主程序流程图 图5.4 读出温度子程序流程图

15

5.3.3 温度转换命令子程序

温度转换子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图5.5所示。

5.3.4 计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。

5.3.5显示数据刷新子程序

显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图5.6所示。

开始 温度零下? N Y 温度值取补码 置“—”标志 置“+”标志 计算小数位BCD值 计算整数位BCD值 结束

图5.5 温度转换命令子程序流程图

16