摘 要(7)

2019-08-29 23:20

的形式来实现的。首先主机发复位脉冲,即宽度范围为480?S?t?960?S的负脉冲,拉高15~90?S以延时等待,然后通过输入/输出线读存在脉冲,为低说明存在,复位成功;否则说明不存在,复位失败,必须对DS18B20重新初始化。

/DS18B20复位函数/见附件。 4.5.2字节写入DS18B20程序

字节写入的时序是拉低输入/输出线至少15?S以作为起始信号,按从低位到高位的顺序取出欲写入字节中的1位数据,写入输入/输出线,延时等待15?S后将输入/输出线拉高作为停止信号,以等待下一位的写入。写入程序如下:

/字节写入函数/见附件,写一个字节函数。 4.5.3字读DS18B20程序 读取过程结合附录里函数说明 /字读函数/见附录,读一个字节函数

从以上可以看出,16位数据同样是从低位到高位被逐一读取的,而且读取的温度为补码的形式,使用前必须进行补码转换。

4.5.4DS18B20温度读取函数

DS18B20温度读取函数见附录/读取温度函数/

4.6距离计算程序

距离计算中,实行了温度补偿和夹角补偿。程序见附件中/距离计算函数/

4.7数据转换程序

经过求的数据原码无法直接用于显示,必须转换为LCD所接受的BCD码的形式,而且在温度补偿和距离计算中没有考虑小数点的存在,而实际显示必须考虑小数和有效位数,这样就必须对数据进行取舍,数据转换函数见附件。

4.8LCD显示程序

LCD液晶显示程序分为液晶初始化、读忙、写指令和写数据操作,液晶显示器是一块慢器件,否则此指令无效。由于LCD是一个慢显示器件,所以在写入数据前必须确定LCD处在不忙的状态,在执行每条指令之前必须确定模块忙标志为低电平(不忙),读忙信号判断函数、写入指令函数、写入数据函数、LCD的初始化函数及液晶显示程序见附件。

在程序中,我们将测量的各种结果存放到一个数组num[]中,然后通过这个数组的数据到预先存放字符的数组中去按num[]中的数据的顺序去读取出预存在numcode[]中的字符然后送到LCD中显示,注意LCD的显示必须做一系列的初始化和忙标志的判读操作。

4.9基于Proteus的软件仿真

Proteus是一款功能强大的软件,其ISIS用来做仿真十分方便,尤其是单片机系统的仿真,我们在本设计的开发初期,用Proteus来仿真我们的设计,以便验证我们的设计,对设计的正确性做出分析。首先在软件中找到我们设计用的元件,然后连接好电路图,设置好各个元件的参数值,特别注意液晶显示屏的连接需要接上拉电阻。

图4.2Proteus仿真

用Proteus绘制好电路图后导入程序文件(用Keil编译过后的HEX文件),然后就可以执行仿真,我们在仿真的时候P2.6检测到高电平即为返回信号获得,由于在软件中没有CX20106模型,所以P2.6悬空,则程序开始就认为返回信号获得了,所以显示了一个最小测量值111mm,而温度为18°C,通过调节DS18B20模型的温度可以测试显示温度是否正确,从图中可以看出显示的温度就是DS18B20的预设温度值。下面我们在来看看P2.5口是否有发射信号的产生。由于是频率比较高的信号(40KHz),所以不能通过二极管来观察到,所以在仿真的时候P2.5一直显示的是低电平状态,这时必须用示波器来查看,如图:

图4.3波形

从上图看出,P2.5口输出了信号,由于软件是间隔60MS发送一次40KHz的信号,所以可以看到这样的尖脉冲信号产生。软件仿真说明我们的软件设计还是比较成功的。


摘 要(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新纲P1-106CMA习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: