




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告题 目: 自动滴灌系统设计 课程名称: 单片机原理及应用 学 院: 信息工程学院 专 业: 计算机科学与技术 班 级: 2014 级计本 1 班 学生姓名: * 学 号: 指导教师: 巫 宗 宾 成 绩: 开课时间: 20162017 学年 2 学期 目录第一章 系统概要21.1系统背景21.2系统功能21.3设计要求2第二章 系统硬件原理32.1AW60主要模块和特点32.2 LCD模块32.3 LED模块4第三章 系统软件设计63.1系统流程63.2主程序(main.c)73.2中断处理程序(isr.c)73.3构件组成9第四章 系统测试274.1测试结果27第五章总结展望315.1总结315.2展望31参考文献32第一章 系统概要1.1系统背景随着科学技术的发展电子技术产业结构调整,单片机开始迅速发展,由于单片机本身的易于控制,精度高,自动化全面,市场对于智能控制系统的需求也越来越大。自动滴灌系统,就是在单片机程序的控制下实现湿度监测、滴灌控制的设备。单片机系统座位一种典型的嵌入式系统,其系统设计包括硬件设计和软件设计编程设计两个方面,其调试过程一般分为软件调试,硬件调试,系统调试。自动滴灌系统需要实现湿度采集,A/D转换,湿度显示,工作状态显示,电机驱动的功能。1.2系统功能首先要进行湿度监测,每隔固定的时间就采集一次湿度,在内部转换后与标准值进行比较如果湿度值低于给定值的话就切换至工作状态,滴灌结束时自动切换至结束模式,继续监测湿度。仿真状态下湿度监测采用软件模拟实现,采集湿度信息使用LED显示,每隔5s采集一次。 工作状态由LCD显示。分别有滴灌开始(“Drip-irrigation is starting.”),和滴灌结束(“Drip-irrigation has ended.”)。滴灌时间为5s。结束后切换至结束模式。1.3设计要求学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。第二章 系统硬件原理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)显示信息量大且易于彩色化;(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实际应用中是多个LED共同使用,MCU通过一个称为数据口的位数据端口来控制位段而原来段数码管的公共端,原来接到公共电平,现在接MCU的一个引脚,由MCU来控制,通常叫做位选信号,这样MCU的个端口就可以控制连排的数码管了。若要控制更多数码管则需加一个译码芯片。每个时刻只让一个数码管有效,由于人的视觉暂留效应()可以达到同时显示的效果。图2是MCU与4排8段数码管的连接:图2第三章 系统软件设计3.1系统流程图3图3是系统流程图,开始时先初始化各个部件,LCD显示结束滴灌信息,LED显示为全零。后每隔五秒采集一次湿度数据用LED显示湿度。判断湿度值是否低于设定值,低于设定值的话立即启动滴灌,此时湿度上升,结束滴灌。若没有低于设定值的话,则继续监测。LED不断刷新显示当前湿度值。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/功能概要: 中断底层驱动构件源文件/版权所有:苏州大学飞思卡尔嵌入式中心()/=#include includes.hvoid tpm0_isr(void) static uint_32 TPMCounter = 0; /计时器 static uint_8 LEDindex=0; /位选口声明 uint_8 LEDDataBuffer4; /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) = TPM_SC_TOF_MASK) TPMCounter+; BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR); /中断置标志位写1清0 LEDindex+; /位选位+1 if (LEDindex=4) LEDindex=0; /大于4位选口置0 i=LEDchangeCode(LEDDataBufferLEDindex-0); /转码 LEDshow1(LEDindex,i); if(TPMCounter5000) shidu = sdmn(shidu); if(shidu 2)/防止越界值tpmModule=2;/开启SIM时钟门 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: return 1; /传参错误,返回SIM_SOPT2 |= SIM_SOPT2_TPMSRC(clk_src_sel);/使能时钟选择TPM_ARRtpmModule-CNT=0x00;TPM_ARRtpmModule-MOD=int_us; /TOF写1清0,TOIE中断使能,CMOD选择每次时钟加1,PS=0x011 选择8分频;TPM_ARRtpmModule-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_ARRtpmModule-SC&=TPM_SC_CMOD(3);Tpm.h/=/文件名称:tpm.c/功能概要:tpm底层驱动构件源文件/版权所有:苏州大学飞思卡尔嵌入式中心()/=#ifndef TPM_H#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 /函数返回:无/=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);#endif2、LED构件/=/ 文件名称:led.c / 功能概要:led构件源文件/ 版权所有: 苏州大学飞思卡尔嵌入式中心() /=#include led.h /led位选端口struct GPIO led_cs4=LED_CS0_PORT,LED_CS0,LED_CS1_PORT,LED_CS1,LED_CS2_PORT,LED_CS2,LED_CS3_PORT,LED_CS3,;/led数据端口struct GPIO led_d8=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 8;i+) gpio_init (led_di.gpio_port, led_di.gpio_pin, 1, 0); /定义4位选线定义为输出 ,初始输出0 for(i = 0;i 4;i+) gpio_init (led_csi.gpio_port, led_csi.gpio_pin, 1, 0);/=/函数名称:LEDshow1/函数返回:无/参数说明: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=3;j+) gpio_set (led_csj.gpio_port, led_csj.gpio_pin, 0); /数据上线 for (j=0;jj) & 0x01; gpio_set (led_dj.gpio_port, led_dj.gpio_pin, temp); /选择的位选置1 gpio_set (led_csi.gpio_port, led_csi.gpio_pin, 1); /显示码表const uint_8 Dtable24 =/ 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 Dtablenum; LED.h/=/ 文件名称:led.h / 功能概要:led构件头文件/ 版权所有: 苏州大学飞思卡尔嵌入式中心()/=#ifndef led_H /防止重复定义(开头)#define led_H#include GPIOapp.h /LED数据口分别接PORTB的11,10,9,8,3,2,1,0引脚#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/函数返回:无/参数说明:无 /功能概要: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构件头文件/ 版权所有: 苏州大学飞思卡尔嵌入式中心() /=#include lcd.h/lcd控制位和数据位端口及引脚号struct GPIO LCD11=LCD_RS_PORT,LCD_RS,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 11;i+) gpio_init(LCDi.gpio_port, LCDi.gpio_pin, 1,0); /设置指令,RS,R/W = 00, 写指令代码 gpio_set (LCD0.gpio_port, LCD0.gpio_pin, 0); gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0); /功能设置- /设置指令 LCDCommand(0x38); /5*7点阵模式,2行显示,8位数据总线 LCDCommand(0x08); /关显示,关光标显示,不闪烁 LCDCommand(0x01); /清屏 for (i=0; i40000; i+)asm(NOP); /延时 LCDCommand(0x06); LCDCommand(0x14); /光标右移一个字符位,AC自动加1 LCDCommand(0x0C); /开显示,关光标显示,不闪烁 /=/函数名称:LCDShow/函数返回:无/参数说明:需要显示的数据 /功能概要:液晶显示data中的数据。/=void LCDShow(uint_8 data32) uint_8 i; LCDInit();/LCD初始化 /显示第1行16个字符 gpio_set (LCD0.gpio_port, LCD0.gpio_pin, 0); gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0); /后7位为DD RAM地址(0x00) LCDCommand(0x80); /写16个数据到DD RAM gpio_set (LCD0.gpio_port, LCD0.gpio_pin, 1); gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0); /将要显示在第1行上的16个数据逐个写入DD RAM中 for (i = 0;i 16;i+) LCDCommand(datai); /显示第2行16个字符 gpio_set (LCD0.gpio_port, LCD0.gpio_pin, 0); gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0); /后7位为DD RAM地址(0x40) LCDCommand(0xC0); gpio_set (LCD0.gpio_port, LCD0.gpio_pin, 1); gpio_set (LCD1.gpio_port, LCD1.gpio_pin, 0); /将要显示在第2行上的16个数据逐个写入DD RAM中 for (i = 16;i 32;i+) LCDCommand(datai); /=/函数名称:LCDCommand/函数返回:无/参数说明:cmd:待执行的命令 /功能概要:执行给定的cmd命令,且延时。/=void LCDCommand(uint_8 cmd)uint_8 i;uint_16 j;uint_8 temp; /等待延迟防止重复调用此函数而LCD卡死 for (j=0; j1600; j+);asm(NOP); /数据送到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全教员培训试题及答案
- 乐队架子鼓面试题及答案
- 生物安全实验室安全作业环境协议
- 2025食品采购合同范本
- 统编版九年级上册语文第五单元教学设计
- 望水小说试题及答案
- 专技岗面试试题及答案
- 2024水利考试试题及答案一建
- 电热电动考试题及答案
- 劳动保障考试题及答案
- 高层建筑火灾扑救危险识别与应对
- 广播电视节目评析期末考试资料
- 重庆市沙坪坝区第八中学校2023-2024学年八年级下学期期末英语试题(解析版)
- 江西省南昌市西湖区2023-2024学年五年级下学期期末数学试题
- 植物拓染非物质文化遗产传承拓花草之印染自然之美课件
- TD/T 1044-2014 生产项目土地复垦验收规程(正式版)
- 雾化吸入团体标准解读
- MOOC 质量工程技术基础-北京航空航天大学 中国大学慕课答案
- 【数字人民币对货币政策的影响及政策探究12000字(论文)】
- 江苏省盐城市大丰区2023-2024学年八年级上学期期中数学试题(解析版)
- 内分泌系统疾病教学设计教案1
评论
0/150
提交评论