单片机程序设计课程设计资料.docx

上传人:b****5 文档编号:12392248 上传时间:2023-04-18 格式:DOCX 页数:16 大小:101.28KB
下载 相关 举报
单片机程序设计课程设计资料.docx_第1页
第1页 / 共16页
单片机程序设计课程设计资料.docx_第2页
第2页 / 共16页
单片机程序设计课程设计资料.docx_第3页
第3页 / 共16页
单片机程序设计课程设计资料.docx_第4页
第4页 / 共16页
单片机程序设计课程设计资料.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机程序设计课程设计资料.docx

《单片机程序设计课程设计资料.docx》由会员分享,可在线阅读,更多相关《单片机程序设计课程设计资料.docx(16页珍藏版)》请在冰豆网上搜索。

单片机程序设计课程设计资料.docx

单片机程序设计课程设计资料

 

课程设计名称:

单片机程序设计基础

题目:

智能浇花装置程序设计

 

学期:

2013-2014学年第二学期

专业:

测控技术与仪器

班级:

测控11-1

姓名:

学号:

指导教师:

完成日期:

2014年5月30日

辽宁工程技术大学

课程设计成绩评定表

学期

2013-2014

(二)

姓名

专业

测控技术与仪器

班级

测控11-1

课程名称

单片机程序设计基础

论文题目

智能浇花装置程序设计

评定指标

评定指标

分值

得分

知识创新性

20

理论正确性

20

内容难易性

15

结合实际性

10

知识掌握程度

15

书写规范性

10

工作量

10

总成绩

100

评语:

任课教师

时间

2014年6月8日

备注

课程设计任务书

一、设计题目

智能浇花装置系统程序设计

二、设计任务

设计在单片机为核心的前提下,完成对花盆的浇水,对水箱的补水以及低温报警功能。

通过使用继电器,温度传感器,湿度传感器等元件,编写合适的驱动程序进行控制,完成装置的全部功能。

三、设计计划

本设计共1周。

第1天:

针对选题查资料,确定设计方案;

第2天:

方案分析比较,确定程序的逻辑顺序,执行步骤;

通过网上搜索,学习并理解部分芯片的程序操作。

第3天:

编写主程序流程图和软件程序;

第4天:

对编写程序进行语法和逻辑纠错,并下载运行;

第5天:

编写整理设计报告。

四、设计要求

1、绘制软件流程图并利用C语言编写软件程序;

2、形成设计报告。

 

指导教师:

教研室主任:

2014年5月26日

 

 

1、系统程序功能及设计思路

1.1系统主要功能

智能浇花装置主要功能如下:

1、检测土壤湿度并自动浇水,通过电磁阀控制花盆内水量

2、通过继电器控制水泵进行自动补水功能。

3、低温报警。

室温低影响花卉生长,此时需要声音提醒。

4、人机交互显示。

使用LCD5110液晶进行显示。

上述各个功能均有不同电路模块进行控制,核心芯片为STC12C5A60S2,程序代码兼容8051系列单片机。

1.2程序设计思路

图1智能浇花装置硬件工作原理

智能浇花系统程序语言以C语言为主,根据设计所实现的不同功能,将系统程序分为主程序和驱动程序两部分。

其中,主程序的作用包含控制逻辑的实现、驱动程序的调用及配合、功能区分以及系统初始化。

驱动程序主要为部分传感器及芯片的通信协议、数据采集和处理程序、液晶显示所用字库以及单片机操作程序,由于驱动程序涉及硬件电路中的各个模块,因此,驱动程序比较繁多,主要有LCD5110驱动、DS18b20通信协议、DHT11通信协议、继电器控制程序、水位检测控制程序以及单片机中断和AD转换功能设定程序。

主程序中包含4个子程序块分别为系统初始化程序、系统全状态检测程序、系统操控程序和数据显示程序。

主要功能如下:

1、系统初始化程序完成系统上电时,对部分芯片的初始设定、单片机定时器中断功能的设定、液晶初始显示内容以及相关标志位的赋值。

2、全状态检测程序主要用于对空气温湿度、土壤湿度、水箱水位的检测,当系统初次通电、复位以及其他可能用于检测时,都会使用该程序或者首先执行该检测程序,保证整个装置在正常情况下工作以便完成相应的功能。

3、系统操控程序主要是在采集到系统状态参数后,针对不同情况执行不同的功能,命令部分硬件机构处理相应问题如土壤湿度低,会命令继电器吸合使电磁阀开始浇水等。

4、数据显示程序利用LCD5110液晶为使用者提供有关系统的检测参数如土壤湿度,空气温湿度等,同时,在执行某些功能时,显示提示信息,实时监控系统各参数的变化。

驱动程序以.H文件形式存在于主函数之外,通过全局变量或者临时标志位,互通信息,执行主函数的控制指令。

驱动程序因芯片而不同,通信时序千差万别,部分驱动程序以芯片数据手册提供的C语言程序为主,无需自己编写即可使用,但是,由于STC12C5A60S2单片机指令执行速度快于8051系列,因此,驱动程序中的通信时序要经过调试、验证后才能真正在本系统程序中使用。

 

2、主程序及其他程序的设计

2.1主程序流程设计

图2系统主程序流程图

系统主程序流程设计如图2所示,程序详细内容如下:

/************************************************/

/*********系统主程序***************/

/************************************************/

voidmain()

{

Init();//系统初始化

while(N)

{

Stateful_Inspection();//系统状态监测

System_Control();//系统操控

Status_Display();//系统数据显示与提醒

}

}

上述程序中,N的赋值操作在初始化程序内对DS18B20的忙信号检测程序段中,当温度传感器未有信号应答时,N=0,将不执行while循环,而是在液晶上提示传感器未接入系统,如果传感器正常工作,N=1,执行while循环。

2.2系统状态检测程序

图3状态检测程序流程图

上图展示了系统对自身状态检测的运行过程,其中,WaterLe_key1、WaterLe_key2分别为高低水位检测传感器的使能标志位,当程序执行对水箱水位检测的功能时,必须对二者赋值为1,若为0,则关闭传感器无法获取信号。

检测程序获取到状态信息后,不用直接去调用某些功能驱动程序,只需要将相应的标志位赋值即可,这样,可使程序整体执行效率提高,编写时容易发现错误。

程序中所有条件判断语句均使用if…else,程序详细内容如下:

/*****************************************

********系统全状态检测*********

********************************************/

voidStateful_Inspection()

{

if(SI)

{

WaterLe_key1=1;

WaterLe_key2=1;

calculate_T();//计算温度

T_Value=TN;//读出温度整数部分,为“温度报警”做准备

RH();//计算湿度RH

S_Value=1000-2*ADC_Result(0);//AD转换输出的是十进制整形数据,该公式用于直

//接计算湿度的百分比,计算所得数据需要除以10

if(T_Value<=T_Alert)

{KW_view=1;//报警开启}

elseif(Water_level2==1)//检查低水位传感器信号,等于1,说明水箱无水,则上水

{Draw_water=1;}

elseif(S_Value<=S_AlertL)//在温度适宜,水箱有足够水的情况下,检测土壤干湿度

{Water_on=1;//小于最低湿度则执行浇水操作,此处置标志位为1即开启}

}

}

上述程序中:

1、SI标志位用于实现程序不同情况下都可对系统的检查,使该程序利用率提高,当遇到需要检测的状况时,直接调用并对标志位赋值,不用在重复编写某些检测程序。

2、函数名为calculate_T、RH、ADC_Result的程序分别用于对空气温度、湿度和土壤湿度的数据采集与处理。

3、标志位KW_view用于执行温度报警,标志位Draw_water用于水箱上水,标志位Water_on用于花盆浇水。

三者均置1,表示功能可执行。

2.3系统操控程序

图4系统操控程序流程图

系统操控程序依赖单片机的定时器中断功能而执行。

使用定时器主要为了量化浇水或者上水动作的执行时间,使其间隔一定时间执行一次。

与前述程序相同,程序中使用标志位来调用相应的子函数。

程序详细内容如下:

/***********************************************

***********系统操控***************

************************************************/

voidSystem_Control()

{

if(KW_view)

{

SI=0;

WaterLe_key1=0;

WaterLe_key2=0;

ET0=0;

ET1=0;

TR0=0;

TR1=0;

Draw_water=0;

Water_on=0;

calculate_T();//计算温度

T_Value=TN;//读出温度整数部分,为“温度报警”做准备

if(T_Value>T_Alert)

{

KW_view=0;//温度达到后停止报警与显示提醒,并重新进行系统状态监测

SI=1;

}

}

if(Draw_water)//上水

{

Draw_water=0;

DW_view=1;

SI=0;

t1=0;

TR1=1;//开启定时器1

ET1=1;//开启定时器1中断

WaterLe_key1=1;

WaterLe_key2=1;

}

if(Water_on)//浇水

{

Water_on=0;

WO_view=1;

WaterLe_key2=1;

SI=0;

t0=0;

TR0=1;//开启定时器0

ET0=1;//开启定时器0中断

}

}

2.4数据显示程序

图5数据显示程序流程图

在经过检测程序对相关标志位赋值后,数据显示程序执行时通过判断标志位是否为1,来进一步执行相应的子程序。

当所有标志位为0时,液晶正常显示即没有任何有关警告或提示的内容显示出来。

程序详细内容如下:

/**************************************************************

***********系统检测数据全显示***********************

***************************************************************/

voidStatus_Display()

{

if((KW_view==0)&&(DW_view==0)&&(WO_view==0))

{

Draw_water=0;

Display_Scan();

Display_T();//此处显示温度

Display_RH();//此处显示空气湿度

Display_soilRH(1000-2*ADC_Result(0));//此处显示土壤湿度

}

if(KW_view)

{

Keep_Warm();//低温提示:

请注意保温

beep();//声音提示

delay1ms(100);

beep();

delay1ms(100);

}

if(DW_view)

{

Clear5110();

Display5110(5,2,chinese3,14,2,25);//正

Display5110(19,2,chinese3,14,2,26);//在

Display5110(33,2,chinese3,14,2,29);//上

Display5110(47,2,chinese3,14,2,28);//水

delay1ms(100);

}

if(WO_view)

{

Clear5110();

Display5110(4,2,chinese3,14,2,25);//正

Display5110(18,2,chinese3,14,2,26);//在

Display5110(32,2,chinese3,14,2,27);//浇

Display5110(46,2,chinese3,14,2,28);//水

Display_soilRH(1000-2*ADC_Result(0));//浇水过程继续显示土壤湿度,实时监测湿度变化

}

}

 

3、调试

3.1程序逻辑检查及语法校正

根据系统不同功能和实际的操作过程,分析各程序块中的语句的前后搭配和逻辑判断条件是否合理,由于实际环境以及硬件执行机构的限制,需要人为地将部分程序分出优先级,分步分时执行相应的功能,避免程序执行过程中,逻辑混乱,操作失误,便于以后对部分程序的修改。

除此而外,还需要对C语言的语法进行检查,在本程序设计中,主要有if..else,while循环,中断服务程序和指针等相关语句,编写时尤为注意。

3.2程序编译及装载

当程序逻辑顺序和语法检查无误后,开始对程序进行编译与装载。

在调试过程中,需要结合硬件的执行情况对程序中不妥之处进行更正,也可以注释掉部分程序,仅执行未注释的程序,逐个观察并修改相应功能的子程序语句。

当所有程序执行的功能均符合设计需要时,程序设计工作基本完成。

 

4、总结

经过对程序整体思路的把握,合理安排各功能程序逻辑关系和顺序,编写正确的语句进行控制,通过软件编译纠错和硬件调试修改,基本完成了设计要求的有关功能,修改、更正了错误的程序逻辑和语法错误。

通过实际的调试和观察,本次智能浇花装置系统程序圆满完成。

 

5、设计体会

通过设计智能浇花装置的程序,我学会了运用KEILC软件编辑单片机程序工程以及利用软件进行程序调试。

另外,巩固了曾经学过的C语言知识,并且在实际应用中总结了不少经验和教训,使我对C语言的编译有了更新的认识,提高了我对C语言程序的应用能力,同时,也掌握了不少有关数据处理方面的程序算法如平均值滤波法。

编写设计程序时,不仅需要创新的思路和灵感,还需要细心认真的态度,在本次设计过程中,出现了很多因一时疏忽导致的语法或者逻辑错误,致使硬件调试时系统工作不正常甚至损坏部分机构。

因此,程序的编辑不仅要求我们掌握熟练的C语言应用技能,还要戒骄戒躁,仔细排除编写过程中的细小错误,这样,在后续的调试过程中,提高工作效率,避免不必要的危险发生。

对程序进行设计应当特别注意使用者的习惯操作,以及实际可能发生的错误操作,提高程序功能的执行人性化,合理化。

程序编辑的合情合理有时可以保护硬件机构或电路板免受冲击和破坏,这使得系统整体的安全性能增强,实用性大幅提高。

 

参考文献

[1]谭浩强.C语言程序设计基础[M].清华大学出版社,2004.

[2]王选民.智能仪器原理及设计[M].清华大学出版社,2008.

[3]张毅刚.单片机原理及应用[M].高等教育出版社,2002.

[4]何利民.单片机应用技术选编[M].北京航空航天大学出版社,1993.

[5]林志琦.基于Proteus的单片机可视化软硬件仿真[M].北京航空航天大学出版社,2006.

[6]王幸之.AT89系列单片机原理与接口技术[M].北京航空航天大学出版社,2004.

[7]周航慈.单片机程序设计基础[M].北京航空航天大学出版社,2004.

[8]STC.STC12C5A60S2数据手册[CP/OL].[2014-5-29]..

[9]奥松电子.DHT11数字温湿度传感器说明书[CP/OL].[2014-5-29]..

[10]PHILIPS.LCD5110数据表[CP/OL].[2014-5-29]..

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1