单片机课程设计报告_报告

2020-02-28 其他范文 下载本文

单片机课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“报告”。

课程设计报告

题 目: 自动滴灌系统设计

课程名称: 单片机原理及应用 学 院: 信息工程学院

专 业: 计算机科学与技术 班 级: 2014 级计本 1 班

学生姓名: *** 学 号: 201403031 指导教师: 巫 宗 宾

成 绩:

开课时间: 2016~2017 学年 2 学期

目录

第一章 系统概要.........................................................................................................................2 1.1系统背景............................................................................................................................2 1.2系统功能............................................................................................................................2 1.3设计要求............................................................................................................................2 第二章 系统硬件原理...............................................................................................................3 2.1AW60主要模块和特点........................................................................................................3 2.2 LCD模块............................................................................................................................3 2.3 LED模块............................................................................................................................4 第三章 系统软件设计.................................................................................................................6 3.1系统流程............................................................................................................................6 3.2主程序(main.c)............................................................................................................7 3.2中断处理程序(isr.c)..................................................................................................7 3.3构件组成............................................................................................................................9 第四章 系统测试.......................................................................................................................27 4.1测试结果..........................................................................................................................27 第五章 总结展望........................................................................................................................31 5.1总结..................................................................................................................................31 5.2展望..................................................................................................................................31 参考文献.....................................................................................................................................32

第一章 系统概要

1.1系统背景

随着科学技术的发展电子技术产业结构调整,单片机开始迅速发展,由于单片机本身的易于控制,精度高,自动化全面,市场对于智能控制系统的需求也越来越大。自动滴灌系统,就是在单片机程序的控制下实现湿度监测、滴灌控制的设备。单片机系统座位一种典型的嵌入式系统,其系统设计包括硬件设计和软件设计编程设计两个方面,其调试过程一般分为软件调试,硬件调试,系统调试。自动滴灌系统需要实现湿度采集,A/D转换,湿度显示,工作状态显示,电机驱动的功能。

1.2系统功能

首先要进行湿度监测,每隔固定的时间就采集一次湿度,在内部转换后与标准值进行比较如果湿度值低于给定值的话就切换至工作状态,滴灌结束时自动切换至结束模式,继续监测湿度。

仿真状态下湿度监测采用软件模拟实现,采集湿度信息使用LED显示,每隔5s采集一次。工作状态由LCD显示。分别有滴灌开始(“Drip-irrigation is starting..”),和滴灌结束(“Drip-irrigation has ended..”)。滴灌时间为5s。结束后切换至结束模式。

1.3设计要求

学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。1

第二章 系统硬件原理

2.1AW60主要模块和特点

AW60系列主要常规模块和特点:

(1)最高达40MHz的CPU工作频率和20MHz的内部总线工作频率;时钟源选项包括晶振,谐振器,外部时钟或,内部产生的时钟。

(2)相比HC08CPU指令集,S08CPU增加了BGND指令。

(3)单线后台调试模式接口:增强的断点能力,允许单一的断点设置在线调试(在片内调试模块增加了多于两个的断点)。

(4)内含32个中断/复位源;内含2KB的片内RAM;内含60KB的片内在线可编程的Flash存储器,带有 块保护和安全选项。

(5)可选的计算机正常操作(COP)复位;低电压检测与复位或中断;非法操作码检测与复位;非法地址检测与复位。

(6)ADC:多达16个通道,10个A/D转换器与动动比较功能;两个串行通信接口SCI模块与可选的13位中断;一个串行外设接口SPI模块;集成电路互联总线IIC模块运行高达100kbps的最高总线负载;8引脚键盘中断KBI模块。

(7)Timers:1个2 通道和一个6通道16位定时器/脉冲宽度调制器模块。既有输入捕获,输出比较,脉宽调制功能。AW子系列MCU的4种封装形式只是引脚数量和形式有所区别,其他方面是一致的。

2.2 LCD模块

LCD作为电子信息产品的主要显示器件,相对于其他类型的显示器件来说有其自身的特点,主要包括:

(1)低电压,低功耗;(2)平板型结构;

(3)使用寿命长;

(4)被动显示;

(5)显示信息量大且易于彩色化; 1

(6)无电磁辐射。

点阵字符型LCD是专门用于显示数字,字母,图形符号及少量自定义符号的液晶显示器。这类显示器把LCD控制器,点阵驱动器,字符存储器,显示体及少量的阻容元件等集成一个液晶显示模板。鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的,只要设计出一种型号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示器模块。

字符型液晶显示器模块的特点如下:

(1)液晶显示屏是以若干5*8或5*11点阵块等组成的显示字符群。每个点阵块块为一个字符位,字符间距和行间距都是一个点的宽度。

(2)主控制电路为HD44780(HITACHI及其他公司的兼容电路。从程序员的角度来看LCD显示接口与编程是面向HD44780的,只要了解HD44780的编程结构即可进行LCD的显示编程。

(3)内部具有字符发生器ROM,可显示192种字符。

(4)具有64字节的字符发生器RAM,可以定义8个5*8点阵字符或4个5*11的点阵字符。

(5)具有64字节的数据显示RAM,供显示器编程使用。(6)标准接口特性,与MC9S08系列的MCU容易接口。(7)模块结构紧凑,轻巧,装配容易。

(8)单+5V电源供电(宽温型需要加-7V驱动电源)。(9)低功耗,高可靠性。

2.3 LED模块

LED发光二极管分为共阴极和共阳极数码管,若为共阴极数码管则公共端接地,若为共阳极数码管则公共端接电源正极。如图1:1

图1

实际应用中是多个LED共同使用,MCU通过一个称为数据口的8位数据端口来控制位段而原来8段数码管的公共端,原来接到公共电平,现在接MCU的一个引脚,由MCU来控制,通常叫做位选信号,这样MCU的8个端口就可以控制8连排的数码管了。若要控制更多数码管则需加一个译码芯片。每个时刻只让一个数码管有效,由于人的视觉暂留效应(100ms)可以达到同时显示的效果。

图2是MCU与4排8段数码管的连接:

图21

第三章 系统软件设计

3.1系统流程

开始初始化土壤湿度数据采集显示湿度N小于设定值Y显示滴灌开始计时结束,结束滴灌显示滴灌结束 图3 图3是系统流程图,开始时先初始化各个部件,LCD显示结束滴灌信息,LED显示为全零。后每隔五秒采集一次湿度数据用LED显示湿度。判断湿度值是否低于设定值,低于设定值的话立即启动滴灌,此时湿度上升,结束滴灌。若没有低于设定值的话,则继续监测。LED不断刷新显示当前湿度值。1

3.2主程序(main.c)

#include “includes.h” //包涵总头文件 int main(void){ work = 0;shidu = 75;enter_critical();LEDInit();//LED初始化 LCDInit();//LCD初始化 tpm_init(TPM0,TPM_CLKSRC_PLL,1000);//初始化TPM模块,1ms中断一次

light_init(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_OFF);light_init(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF);tpm_enable_int(0);init_critical();for(;;){

}

} return 0;3.2中断处理程序(isr.c)

//================== //文件名称:isr.c //功能概要: 中断底层驱动构件源文件

//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)1

//================== #include “includes.h” void tpm0_isr(void){ static uint_32 TPMCounter = 0;//计时器 static uint_8 LEDindex=0;//位选口声明 uint_8 LEDDataBuffer[4];//LED显示缓冲区

changeCode(shidu,LEDDataBuffer);//将湿度值转化为对应字符输出 uint_8 i;uint_8 * working;uint_8 * stop;working =(uint_8 *)“Drip-irrigation is starting......”;stop =(uint_8 *)“Drip-irrigation has ended......”;if((TPM_SC_REG(TPM0_BASE_PTR)TPM_SC_TOF_MASK){ TPMCounter++;

&

TPM_SC_TOF_MASK)

== } BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR));//中断置标志位写1清0 LEDindex++;//位选位+1 if(LEDindex>=4)LEDindex=0;//大于4位选口置0 i=LEDchangeCode(LEDDataBuffer[LEDindex]-'0');//转码 LEDshow1(LEDindex,i);if(TPMCounter>5000){

shidu = sdmn(shidu);if(shidu

1

} changeState(&work);//改变工作状态

if(work == 0)

{ LCDShow(stop);TPMCounter = 0;light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_ON);light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF);} if(work == 1){

LCDShow(working);

TPMCounter = 0;shidu = 80;light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_ON);light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_OFF);changeState(&work);}

} }

3.3构件组成1、TPM构件:

//=================== //文件名称:tpm.c //功能概要:tpm底层驱动构件源文件1

//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//====================== #include “tpm.h” //定时器模块0,1,2地址映射 Const TPM_MemMapPtr TPM_ARR[]={TPM0_BASE_PTR,TPM1_BASE_PTR,TPM2_BASE_PTR};//====================== //函数名称:tpm_enable_int //功能概要:使能tpm模块中断。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_enable_int(uint_8 tpmModule){ } //====================== //函数名称:tpm_disable_int //功能概要:禁止tpm模块初始化。enable_irq(tpm0_irq_no + tpmModule);//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_disable_int(uint_8 tpmModule){ } //====================== //函数名称:tpm_init //功能概要:初始化tpm模块.1

disable_irq(tpm0_irq_no + tpmModule);

//参数说明:tpmModule:模块号:0、1、2 //clk_src_sel:时钟源选择:1:PLL/FLL(推荐)、2:晶振、3:内部参考时钟。1,2可用

// int_us:中断毫秒数,中断时间间隔,单位为毫秒,10ms=10000 //函数返回:函数执行状态:0=正常;非0=异常

//====================== uint_8 tpm_init(uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us){

if(tpmModule>2)//防止越界值 { } //开启SIM时钟门 tpmModule=2;BSET(SIM_SCGC6_TPM0_SHIFT+tpmModule,SIM_SCGC6);//使能TPM时钟

//中断时间计算:(48000/8)*10000/1000=0x7530 10ms中断一次 switch(clk_src_sel){ case 1: //MCGPLL/2或者MCGFLL作为时钟源 BSET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);

//使能PLL为时钟源

int_us=(48000/8)*int_us/1000;break;case 2: //晶振作为时钟源

int_us=(8000/8)*int_us/1000;OSC0_CR|=OSC_CR_ERCLKEN_MASK;//开启晶振输出时钟

break;case 3: //内部参考时钟,由MCG决定 break;

default:1

} return 1;//传参错误,返回

SIM_SOPT2 |= SIM_SOPT2_TPMSRC(clk_src_sel);//使能时钟选择 TPM_ARR[tpmModule]->CNT=0x00;TPM_ARR[tpmModule]->MOD=int_us;//TOF写1清0,TOIE中断使能,CMOD选择每次时钟加1,PS=0x011 选择8分频;TPM_ARR[tpmModule]->SC=TPM_SC_TOF_MASK|TPM_SC_TOIE_MASK|TPM_SC_CMOD(1)|TPM_SC_PS(3);return 0;} //====================== //函数名称:tpm_stop //功能概要:禁止tpm模块。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_stop(uint_8 tpmModule){ } Tpm.h //====================== //文件名称:tpm.c //功能概要:tpm底层驱动构件源文件

//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//====================== #ifndef TPM_H1

TPM_ARR[tpmModule]->SC&=~TPM_SC_CMOD(3);

#define TPM_H

#include “common.h” #include “sysinit.h” //中断号

#define tpm0_irq_no 17 #define tpm1_irq_no 18 #define tpm2_irq_no 19 //时钟选择

#define TPM_CLKSRC_PLL 1 #define TPM_CLKSRC_OSC 2 #define TPM_CLKSRC_IRC 3 //模块号 #define TPM0 0 #define TPM1 1 #define TPM2 2

//====================== //函数名称:tpm_enable_int //功能概要:使能tpm模块中断。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_enable_int(uint_8 tpmModule);//====================== //函数名称:tpm_disable_int //功能概要:禁止tpm模块初始化。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无1

//====================== void tpm_disable_int(uint_8 tpmModule);//====================== //函数名称:tpm_init //功能概要:初始化tpm模块.//参数说明:tpmModule:模块号:0、1、2 //clk_src_sel:时钟源选择:1:PLL/FLL(推荐)、2:晶振、3:内部参考时钟。1,2可用

// int_us:中断毫秒数,中断时间间隔,单位为毫秒,10ms=10000 //函数返回:函数执行状态:0=正常;非0=异常

//====================== uint_8 tpm_init(uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us);//====================== //函数名称:tpm_stop //功能概要:禁止tpm模块。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_stop(uint_8 tpmModule);#endif

2、LED构件

//===================== // 文件名称:led.c // 功能概要:led构件源文件

// 版权所有: 苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//====================== #include “led.h” //led位选端口 struct GPIO led_cs[4]=1

{

{LED_CS0_PORT,LED_CS0}, {LED_CS1_PORT,LED_CS1}, {LED_CS2_PORT,LED_CS2}, {LED_CS3_PORT,LED_CS3}, };//led数据端口 struct GPIO led_d[8]= {

{LED_D1_PORT,LED_D1}, {LED_D2_PORT,LED_D2}, {LED_D3_PORT,LED_D3}, {LED_D4_PORT,LED_D4}, {LED_D5_PORT,LED_D5}, {LED_D6_PORT,LED_D6}, {LED_D7_PORT,LED_D7}, {LED_D8_PORT,LED_D8}, };

//====================== //函数名称:LEDInit //函数返回:无 //参数说明:无 //功能概要:LED初始化。

//====================== void LEDInit(){ uint_8 i = 0;//定义8根数据线为输出,初始输出0 for(i = 0;i

1

//定义4位选线定义为输出,初始输出0 for(i = 0;i

//参数说明:i:指定LED哪一位显示,c:显示的内容 //功能概要:指定LED的第i位显示c。

//====================== void LEDshow1(uint_8 i, uint_8 c){ uint_8 temp;uint_8 j;//位选全部置0 for(j=0;j>j)& 0x01;

gpio_set(led_d[j].gpio_port, led_d[j].gpio_pin, temp);} //选择的位选置1 gpio_set(led_cs[i].gpio_port, led_cs[i].gpio_pin, 1);}

//显示码表

const uint_8 Dtable[24] =1

// 0 1 2 3 4 5 6 7 8 9 {0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F, // 11 12 13 14 15 16 17 18 19 20 // 0.1.2.3.4.5.6.7.8.9.0xBF,0x86,0xDB,0x4F,0x66, 0x6D,0x7D,0x07,0xFF,0x6F, // 21 22 23(全亮)24(全灭)// E F 0x79,0x71, 0xFF, 0x00};//====================== //函数名称:LEDchangeCode //函数返回:返回数据num对应的显示码 //参数说明:num:需要转换成显示码的数字 //功能概要:数字转成显示码

//===================== uint_8 LEDchangeCode(uint_8 num){ return Dtable[num];} LED.h //====================== // 文件名称:led.h // 功能概要:led构件头文件

// 版权所有: 苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//======================

#ifndef led_H //防止重复定义(开头)#define led_H #include “GPIOapp.h” //LED数据口分别接PORTB的{11,10,9,8,3,2,1,0}引脚1

#define LED_D1_PORT PORTB #define LED_D1 11 #define LED_D2_PORT PORTB #define LED_D2 10 #define LED_D3_PORT PORTB #define LED_D3 9 #define LED_D4_PORT PORTB #define LED_D4 8 #define LED_D5_PORT PORTB #define LED_D5 3 #define LED_D6_PORT PORTB #define LED_D6 2 #define LED_D7_PORT PORTB #define LED_D7 1 #define LED_D8_PORT PORTB #define LED_D8 0 //LED位选口分别接PORTB的{19,18,17,16}引脚 #define LED_CS0_PORT PORTB #define LED_CS0 19 #define LED_CS1_PORT PORTB #define LED_CS1 18 #define LED_CS2_PORT PORTB #define LED_CS2 17 #define LED_CS3_PORT PORTB #define LED_CS3 16 //====================== //函数名称:LEDInit //函数返回:无 //参数说明:无1

//功能概要:LED初始化。

//====================== void LEDInit();//====================== //函数名称:LEDshow1 //函数返回:无

//参数说明:i:指定LED哪一位显示,c:显示的内容 //功能概要:指定LED的第i位显示c。

//====================== void LEDshow1(uint_8 i, uint_8 c);//====================== //函数名称:LEDchangeCode //函数返回:返回数据num对应的显示码 //参数说明:num:需要转换成显示码的数字 //功能概要:数字转成显示码

//====================== uint_8 LEDchangeCode(uint_8 num);#endif //防止重复定义(结尾)

3、LCD构件

//====================== // 文件名称:lcd.c // 功能概要:lcd构件头文件

// 版权所有: 苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//====================== #include “lcd.h”//lcd控制位和数据位端口及引脚号 struct GPIO LCD[11]= { {LCD_RS_PORT,LCD_RS},1

{LCD_RW_PORT,LCD_RW}, {LCD_E_PORT,LCD_E}, {LCD_D0_PORT,LCD_D0}, {LCD_D1_PORT,LCD_D1}, {LCD_D2_PORT,LCD_D2}, {LCD_D3_PORT,LCD_D3}, {LCD_D4_PORT,LCD_D4}, {LCD_D5_PORT,LCD_D5}, {LCD_D6_PORT,LCD_D6}, {LCD_D7_PORT,LCD_D7}, };//内部函数原型说明

extern void LCDCommand(uint_8 cmd);//====================== //函数名称:LCDInit //函数返回:无 //参数说明:无

//功能概要:LCD初始化。

//====================== void LCDInit(){ uint_32 i = 0; //定义数据口和控制口为输出 for(i = 0;i

gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);1

//功能设置-//设置指令

LCDCommand(0x38);//5*7点阵模式,2行显示,8位数据总线 LCDCommand(0x08);//关显示,关光标显示,不闪烁

LCDCommand(0x01);//清屏

for(i=0;i

//参数说明:需要显示的数据 //功能概要:液晶显示data中的数据。

//====================== void LCDShow(uint_8 data[32]){ uint_8 i;LCDInit();//LCD初始化 //显示第1行16个字符

gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//后7位为DD RAM地址(0x00)LCDCommand(0x80);//写16个数据到DD RAM gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 1);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//将要显示在第1行上的16个数据逐个写入DD RAM中1

for(i = 0;i

gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//后7位为DD RAM地址(0x40)LCDCommand(0xC0);gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 1);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//将要显示在第2行上的16个数据逐个写入DD RAM中 for(i = 16;i

//参数说明:cmd:待执行的命令

//功能概要:执行给定的cmd命令,且延时。

//====================== void LCDCommand(uint_8 cmd){

uint_8 i;uint_16 j;uint_8 temp;LCDCommand(data[i]);LCDCommand(data[i]);//等待延迟防止重复调用此函数而LCD卡死1

for(j=0;j>(i-3));gpio_set(LCD[i].gpio_port, LCD[i].gpio_pin, temp);} //给出E信号的下降沿(先高后低),使数据写入LCD gpio_set(LCD[2].gpio_port, LCD[2].gpio_pin, 1);for(j=0;j

// 版权所有: 苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)// 版本更新: 2013-03-17 V1.2 //====================== #ifndef LCD_H #define LCD_H #include “GPIOapp.h” //LCD寄存器选择信号引脚 #define LCD_RS_PORT PORTD #define LCD_RS 7 //LCD读写信号引脚1

#define LCD_RW_PORT PORTD #define LCD_RW 6 //LCD读写信号引脚

#define LCD_E_PORT PORTD #define LCD_E 5 //LCD数据引脚

#define LCD_D0_PORT PORTD #define LCD_D0 4 #define LCD_D1_PORT PORTD #define LCD_D1 3 #define LCD_D2_PORT PORTD #define LCD_D2 2 #define LCD_D3_PORT PORTD #define LCD_D3 1 #define LCD_D4_PORT PORTD #define LCD_D4 0 #define LCD_D5_PORT PORTC #define LCD_D5 17 #define LCD_D6_PORT PORTC #define LCD_D6 16 #define LCD_D7_PORT PORTC #define LCD_D7 13 //====================== //函数名称:LCDInit //函数返回:无 //参数说明:无

//功能概要:LCD初始化。

//====================== extern void LCDInit();1

//====================== //函数名称:LCDShow //函数返回:无

//参数说明:data[32]:需要显示的数组 //功能概要:LCD显示数组的内容。

//====================== extern void LCDShow(uint_8 data[32]);#endif //防止重复定义(结尾)

4、辅助函数 /* * qzh.h * * Created on: Jun 5, 2017 * Author: administrator */

#ifndef QZH_H_ #define QZH_H_ #include “GPIOapp.h” void changeState(int*);//改变工作状态函数 int sdmn(int);//湿度变化模拟函数

void changeCode(int,uint_8 s[4]);//LED显示转码函数 #endif /* QZH_H_ */ /* * fun.c * * Created on: Jun 5, 20171

* Author: administrator */ #include“qzh.h” void changeState(int *a){

} int sdmn(int a){ } void changeCode(int a,uint_8 s[4]){

}1

if(*a == 0){ } else { } *a = 0;*a = 1;return a-=5;uint_8 c[10] = {'0','1','2','3','4','5','6','7','8','9'};s[3] = c[a%10];s[2] = c[a/10];s[1] = c[a/100];s[0] = c[a/1000];

第四章 系统测试

4.1测试结果

图4 图4 是开始是湿度显示是72%,工作状态显示为停止。1

图5 图5 是第二次采集湿度显示为69%,工作状态显示为停止。1

图6 图6 是第三次采集湿度显示为66%度,已经逼近设定值65%,此时工作状态显示为停止。1

图7 再次采集时湿度低于65%,滴灌立即开始,湿度上升至75%。1

第五章 总结展望

5.1总结

通过本次课程设计,对中断处理有了更加深入的理解。对于计时器,LED和LCD的工作原理也有了更深的认识。LCD在试验中遇到的问题不大,主要问题在于中断处理函数的编写和LED显示上,LED显示是每次中断显示一个数,所以要每次中断显示,才能使得四个值看起来是同时显示的且没有闪烁效果。

其次LED的显示是要求是字符,所以在显示湿度是加上了转码函数加以转换。这里又涉及到了参数为数组的函数的写法,因为学过好几种语言,其传递方式偶所不同所以在这里也出现了不少问题。

通过此次课程设计不仅对单片机应用有了很好的实践经验,而且也帮助巩固了以前的知识。

5.2展望

1、滴灌系统可以增加通信模块,使得所有者可以实时监测农作物生长环境,也可以远程操控进行滴灌等功能。

2、滴灌系统可以增加温度监测,土壤酸碱性监测,空气CO2浓度监测,并配套处理设备使得对农作物的管理更加智能化。

1

参考文献

[1] 王宜怀、张书奎、王林、吴瑾著.嵌入式技术基础与实践(第3版),北京:清华大学 出版社,2011.[2] 田泽.嵌入式系统开发与应用.北京:北京航天航空大学出版社,[3] 王宜怀、陈建明、蒋银珍著.基于32位ColdFire构建嵌入式系统.北京:电子工业出

版社,2006.[4] 王粉花、王志良.嵌入式系统与单片机实践教程.北京:清华大学出版社,2010.32 1

《单片机课程设计报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
单片机课程设计报告
点击下载文档
相关专题 报告 单片机 课程设计 报告 单片机 课程设计
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文