刘欢+基于AT89S52太阳能热水器控制系统的设计 - 图文(6)

2019-03-29 17:19

攀枝花学院本科毕业设计(论文) 4 软件设计

4 软件设计

4.1 软件设计架构

硬件电路的设计是一切的基础,在此础上,而软件的设计是关键的部分,它

是单片机的工作重点,就是让各个部分协调工作的命令,软件的程序重要性是毋庸置疑的,它是整个控制系统的命脉,根据各个部分编写出相应的驱动程序,才能够使得相应的芯片具有相应的功能,所以程序的设计是非常重要的。芯片的工作有着和自己相对应的时序图,只有根据芯片的时序准确的执行命令才能够达到想要的目的,才能够实现芯片的功能。程序的设计还需要有一定的思路,根据系统的运行过程要画出相应程序的流程图,而根据流程图写出程序是非常方便的,也是不容易产生错误的,而且可以得到正确的程序。如图4.1所示

21

攀枝花学院本科毕业设计(论文) 4 软件设计

Y 开始 初始化 开中断 显示温度和水位 是否到了水位低线 N 自动上水 关进水阀门 是否到了设定的温N 开加热器 Y 关加热器

图4.1 系统软件流程图

22

攀枝花学院本科毕业设计(论文) 4 软件设计

4.2 主控程序

void main() { }

while(1)

{ }

xianshiTemperature(); xianshishuiwei(); if(shuiwei<20) kai1=0; if(shuiwei>90) kai1=1; if(wendu<35) kai2=0; if(wendu>40) kai2=1;

4.3 应用程序

4.3.1 DS18B20的驱动设计

1延时函数 ○

延时函数delay用于延时指定的时间,用来构成1-wire总线协议所需要的时序。在程序中通过一个空循环语句便可以实现延时。 Void delay(int usecond) {

Int s;

For(s=0;s

复位函数reset用于完成1-wire总线的复位操作,程序中首先将数据DQ拉低并保持一段时间来实现1-wire总线上所有器件的复位。接着主机等待DS18B20返回的存在脉冲,并返回存在信号。如果返回0,则表示器件存在;返回1,则表示无器件。

Uchar reset(void) {

Uchar presencesignal;

23

攀枝花学院本科毕业设计(论文) 4 软件设计

DQ=0; Delay(30); DQ=1; Delay(3);

Presencesignal=DQ; Delay(30);

Return presencesignal; }

3位写入函数 ○

位写入函数writebit用于向1-wire总线上的器件写入一位值。程序中首先拉低数据线DQ开始写时间隙,然后向DQ写入数据。如果写入1,则数据DQ置1,反之置0。

Void writebit(char val) {

DQ=0; If(val==1) DQ=1; Else DQ=0; Delay(5); DQ=1; }

4字节写入函数 ○

字节写入函数writebyte用于1-wire总线上的器件写入一个字节数据。程序中采用循环移位的方式,每次调用位写入函数writebit写入一位。 Void writebyte(char val) {

Uchar i; Uchar temp; For(i=0;i<8;i++) { temp = val>>i; Temp &= 0x01; Writebit(temp); }

Delay(5); }

5位读取函数 ○

位读取函数readbit用于从1-wire总线上读取从器件返回的一位值。程序中首先拉低数据线DQ开始读时间隙,然后将DQ置1。最后延时一段时间,读取并返回数据总线DQ上的位数据。

24

攀枝花学院本科毕业设计(论文) 4 软件设计

Uchar readbit(void) {

Uchar i; DQ=0; DQ=1;

For(i=0;i<3;i++) Rreturn DQ; }

6字节读取函数 ○

字节读取函数readbyte用于1-wire总线上读取从器件返回的一个字节数据。程序中采用循环移位的方式,每次调用位读取函数readbit读取一位。 Uchar readbyte(void) {

Uchar i;

Uchar value=0; For(i=0;i<8;i++) {

if(readbit())

Value|=0x01<

Return(value); } 7读取温度函数 ○

读取温度函数readtemperature用于读取DS18B20测量的温度。程序中首先复位1-wire总线,然后启动温度转换命令(代码为44H)。接着通过读暂存器命令(代码为BEH)。读取温度数据,最后通过处理输入对应的摄氏温度。 ReadTemperature(void)

{

uchar a=0; uchar b=0; uint t=0;

float tt=0; Init_DS18B20();

Write(0xCC); Init_DS18B20(); Write(0xCC); Write(0xBE);

25

Write(0x44);


刘欢+基于AT89S52太阳能热水器控制系统的设计 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新TRIZ48个工程参数

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

马上注册会员

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