温室大棚卷帘机控制系统总体方案设计.pdf

上传人:tbuqq 文档编号:5218835 上传时间:2020-02-25 格式:PDF 页数:33 大小:1.61MB
返回 下载 相关 举报
温室大棚卷帘机控制系统总体方案设计.pdf_第1页
第1页 / 共33页
温室大棚卷帘机控制系统总体方案设计.pdf_第2页
第2页 / 共33页
温室大棚卷帘机控制系统总体方案设计.pdf_第3页
第3页 / 共33页
温室大棚卷帘机控制系统总体方案设计.pdf_第4页
第4页 / 共33页
温室大棚卷帘机控制系统总体方案设计.pdf_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《温室大棚卷帘机控制系统总体方案设计.pdf》由会员分享,可在线阅读,更多相关《温室大棚卷帘机控制系统总体方案设计.pdf(33页珍藏版)》请在三一文库上搜索。

1、. . 目录 第一章绪论. 2 1.1 背景介绍 . 2 1.2 相关技术的情况 . 2 1.3 设计的意义 . 2 第二章总体设计方案 3 2.1 结构设计 . 3 2.2 本设计主要功能流程图. 3 第三章硬件设计模块 . 5 3.1 单片机主控制模块 5 3.2 GSM 短信收发模块 . 6 3.3 温度显示模块 8 3.4 矩阵键盘模块 . 10 3.5 步进电机仿卷帘机模块. 11 第四章软件设计 . 13 4.1 程序设计总流程图 13 4.2GSM 短信模块程序设计 14 4.3 DS18B20 程序设计 . 16 4.4 1602液晶程序设计 . . 19 4.5矩阵键盘程序设

2、计 . 22 4.6步进电机程序设计 . 24 第五章调试与总结 . 27 5.1 调试 . 27 5.2总结 . 27 致谢. . 29 参考文献 . . 30 附录. . 31 . . 第一章绪 论 1.1 背景介绍 2009 年 12 月 8 日傍晚,福兴地某村一位中年妇女到自家大棚上放草帘,由 于没有及时停住卷帘机,导致绳子在铁杆上反缠,该妇女去拉绳子时,不慎被绳 子缠住围巾,最终被勒住颈部,当场死亡。 1.2 相关技术的情况 目前使用的温室大棚卷帘机是靠人工送电,以达到控制卷帘机升降的目的, 存在着很大的安全隐患。卷帘机本是帮助人们干活的工具,可有时却成了杀人工 具,而且不管温室中是

3、否有劳动任务,管理人员必须亲自到温室按动按键实现卷 帘机的升降,浪费了时间。 1.3设计的意义 本设计以发送短信的方式来控制卷帘机的升降,通过远程控制,就能实现卷 帘机的自动升降,一方面可以有效的避免类似上述情况的发生,另一方面可减轻 管理人员的劳动强度,在温室中没有劳动任务的时候不必亲自到温室,仅仅为实 现大棚帘子的升降,节省了时间。同时本设计外加其他功能,一方面能检测室内 温度,将温度以短信的形式发给管理人员,使管理人员能够及时准确的了解温室 内的温度情况,及时实现对温室大棚的通风,使作物获得适宜的生长温度,有利 于作物的生长;另一功能就是当室内温度过低时,卷帘机能够自动放帘,以保证 室内

4、基本恒温,缩短蔬菜生长周期,使蔬菜提前上市,提高经济效益。 . . 第二章总体设计方案 温室大棚卷帘机控制系统总体方案设计是根据其功能而设计的,从全局的角 度,以系统的观点而进行整体方面的设计,主要由 GSM 短信收发模块、 温度显示 模块、矩阵键盘设置模块,步进电机模拟卷帘机模块等组成。 2.1 结构设计 (图 2-1 总体框架结构图) 其中 AT89S52单片机作为本系统的主控制模块。按键设置模块可设置 最低报警温度和管理人员手机号码。GSM 模块中的短信内容由单片机进行判别, 如读到升起的指令,卷帘机往上卷,若为降指令,则往下卷。同时18B20温度传 感器将检测到的温度传输到LCD 显示

5、,温度一旦低于设置的值,单片机发短信给 GSM,提示管理人员降下帘子。 2.2 本设计主要功能流程图 AT89S52 单片机 GSM 短信收 发模块 1602液晶显示 模块 按键设置模块 卷 帘 机 升 降 控 温度检测模块 . . (图 2-2 功能流程图) 小节:本章对该设计的总体框架结构体系设计进行了论述,并对该设计的功能 通过流程图的形式进行了介绍, 硬件及软件模块的设计分别在第三章、第四章给以 介绍。 . . 第三章硬件设计模块 温室大棚卷帘机控制系统硬件模块主要由单片机主控制模块、GSM 短信收发 模块、温度显示模块、按键模块、步进电机仿卷帘机五大模块组成。下面分别对 五大模块进行

6、分析。 3.1 单片机主控制模块 本模块主要由单片机最小系统搭建而成,主要包括复位电路与时钟电路两大 部分,这里单片机主要进行计算,判断,进制转换等一系列工作,也是整个系统 中最关键的部分,下面具体介绍一下单片机主控制模块的各个组成。 3.1.1 AT89S52功能简介 AT89S52和 AT89S51(如图)基本是一样的,S52比 S51多一个定时器,由 于 S52的定时器 2 不常用,故在此我们讨论 S51,它是一个低功耗, 高性能 CMOS 8 位单片机, 片内含 4k Bytes ISP(In-system programmable) 的可反复擦写 1000次的 Flash只读程序存储

7、器, 器件采用 ATMEL 公司的高密度、 非易失性存储技术制造, 兼容标准 MCS-51 指令系统及 80C51引脚 结构,芯片内集成了通用8 位中央处理器 和 ISP Flash存储单元,功能强大的微型计 算机的 AT89S51可为许多嵌入式控制应 用系统提供高性价比的解决方案。 AT89S51具有如下特点: 40 个引脚, 4k Bytes Flash片内程序存储器, 128 bytes 的随机存取数据存储器(RAM ) ,32 个外 部双向输入 /输出(I/O)口,5 个中断优先 级 2 层中断嵌套中断, 2 个 16位可编程定 时计数器 ,2 个全双工串行通信口,看门狗 (WDT)电

8、路,片内时钟振荡器。 ( 图 3-1-1 AT89S51 引脚图 ) . . 3.1.2 复位电路 为确保单片机系统中电路稳定可靠工作,复位电路是必不可少的部分, 复位电路有上电自动复位和按键复位两种,这里采用按键复位。其工作电路图 (3.1.2) 。 3.1.3 时钟电路 时钟电路是单片机工作的心脏,它控制着单片机的工作节奏,单片机就是通 过复杂的时序电路完成不同指令功能的。时钟的工作电路图如(3.1.3) 。 ( 图 3-1-2 复位电路)( 图 3-1-3 时钟电路) 3.2 GSM 短信收发模块 GSM 短信收发的主要功能是收发短信,当温度低于设定的值时自动给管理 人员发送短信,给以报

9、警提示,同时接受管理人员回复的短信,通过单片机判断 短信内容,控制卷帘机的升降。 3.2.1 TC35 模块简介 TC35 是 Siemens公司推出的新 一代无线通信 GSM 模块,可以快速安 全可靠地实现系统方案中的数据、 语音 传输、短消息服务 (Short Message Service)和传真。模块的工作电压为3.3 5.5V,可以工作在 900MHz 和 . . 1800MHz 两个频段,所在频段功耗分别为2W(900M)和 1W(1800M) 。模块有 AT 命令集接口,支持文本和PDU 模式的短消息、第三组的二类传真、以及2.4k, 4.8k,9.6k 的非透明模式。此外,该模

10、块还具有电话簿功能、多方通话,漫游检测 功能,常用工作模式有省电模式、IDLE、TALK 等模式。通过独特的40 引脚的 ZIF 连接器,实现电源连接、指令、数据、语音信号、及控制信号的双向传输。通 过 ZIF 连接器及 50天线连接器,可分别连接SIM 卡支架和天线。 3.2.2 TC35 引脚极其用法简介 TC35 有 40 个引脚, 114引脚为电源部分,其中l5 引脚为电源电压输入 端 VBATT+6 10引脚为电源地 GND,ll12 引脚为充电端, 13引脚为对外输出 电压(供外部电路使用 ),2429引脚为 SIM 卡连接端; 3340 引脚为语音接口用 来接电话手柄。 15、3

11、0、 31 和 32 引脚为控制部分, 15 引脚为启动线 IGT(Ignition) 。 当 TC35 通电后必须给 IGT 一个大于 100 mV 的低电平,模块才能启动。30 引脚 为 RTC BACK up;31 引脚为掉电控制; 32 引脚为 SYNC,1623 引脚为数据输 入输出端。启动电路由漏极开路三极管控制。 在这里,着重介绍下SYNC 引脚,因为该引脚可以很好的反映TC35 的工作 状态。 SYNC 引脚可以用来输出一个同步信号(synchronization signal) ,也可以在应 用时来控制一个LED 灯的输出状态。 SYNC 端通过一个三极管或门电路来控制 LE

12、D。 一个简单的电路接法是: SYNC 端通过一电阻接到NPN 三极管(如 9013)的基极,射极直接接地,集 电极通过一个接限流电阻接到LED 的负端, LED 的正端接 VCC。LED 的工作模 式完全类同于同步信号,显示的是TC35 的工作状态: 【1】LED 灯灭,表示 TC35 电源关闭,处于休眠、报警或单纯的充电模式 【2】600 ms 亮 / 600ms 灭,表示未插入 SIM 卡,或者个人身份未登记 /已注 销,或者网络正在搜寻中,或者正在进行管理人员身份鉴定,或者网络注册正在 进行中 【3】75ms 亮 / 3s 灭,表示网络注册成功(控制通道和管理人员交换信息完 成) ,无

13、来电 . . 【4】LED 灯亮,依据不同的呼叫类型:声音呼叫,数据呼叫,在建立或者完 毕时的状态。 3.3 温度显示模块 本模块主要通过 DS18B20 温度传感器采集室内温度, 将实时温度显示在LCD 液晶上,并且当温度低于设定温度时,将温度值发送给管理人员,让管理人员知 道温室内温度变化。 3.3.1 DS18B20温度传感器 (1)DS18B20温度传感器简介 DS18B20 温度传感器是美国 DALLAS 半导体公司最新 推出的一种改进型智能温度传感器,与传统的热敏电阻等测温 元件相比,它能直接读出被测温度,并且可根据实际要求通过 简单的编程实现912位的数字值读数方式 独特的单线接

14、口仅需要一个端口引脚进行通信;多个 DS18B20 可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过 数据线供电,电压范围为3.05.5V;零待机功耗。零待机功耗;温度以或 位数字;管理人员可定义报警设置;报警搜索命令识别并标志超过程序限定温度 (温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而 烧毁,但不能正常工作。 (2) 温度检测电路 温度检测采用数字温度计DS18B20。如图( 3.3.1) (图 3-3-1) . . 3.3.2 1602字符型 LCD液晶屏 (1)LCD 简介 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD, 目

15、前常用 16*1,16*2,20*2 和 40*2 行等的模块。本次设计选用的是长沙太阳人 电子有限公司的1602字符型液晶显示器,下面介绍其用法。一般1602字符型液 晶显示器实物如图3-3-2-1: (图 3-3-2-1) 引脚功能说明 1602LCD 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口 说明如下: 第 1脚:VSS 为地电源。 第 2脚:VDD 接 5V 正电源。 第 3脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对 比度最高,对比度过高时会产生“ 鬼影” ,使用时可以通过一个10K 的电位器调整 对比度。 第 4脚:RS 为寄存器选

16、择,高电平时选择数据寄存器、低电平时选择指令寄 存器。 第 5脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。 当 RS和 R/W 共同为低电平时可以写入指令或者显示地址,当RS 为低电平 R/W 为高电平时可以读忙信号,当RS 为高电平 R/W 为低电平时可以写入数据。 第 6脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命 令。 . . 第 714脚:D0D7 为 8 位双向数据线。 第 15脚:背光源正极。 第 16脚:背光源负极。 (2)LCD 显示电路 本设计液晶显示模块的设计如下图(3-3-2-2)所示 ,该电路实现的功能是:通 过 AT89S

17、52的 P00P07八个口输出控制信号,控制液晶的8位双向数据线,通 过单片机的 P2.0、P2.1、P2.2向液晶模块发送命令,控制液晶执行各种命令,其 中 P2.2控制液晶的使能端, 当 E 端由高电平跳变成低电平时, 液晶模块执行命令, P2.1控制液晶模块的读写,高电平时进行读操作,低电平时进行写操作。当P2.0 和 P2.1共同为低电平时可以写入指令或者显示地址,当P2.0为低电平 P2.1为高 电平时可以读忙信号,当P2.0为高电平 P2.1为低电平时可以写入数据 ,P2.0控制 寄存器的选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 (图 3-3-2-2) 3.4矩阵键盘

18、模块 矩阵键盘主要用来对最低温度和管理人员手机号码的设置,可以随时改变数 值,更符合实际生产的要求。 3.4.1 44 矩阵键盘的工作原理 . . 矩阵键盘又称为行列式键盘,它是用4 条 I/O 线作为行线, 4 条 I/O 线作为列 线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按 键的个数是 4 4 个。这种行列式键盘结构能够有效地提高单片机系统中I/O 口的 利用率。 3.4.2键盘电路设计 矩阵键盘引脚接法及其电路图3-4-2: S0S1S2S3 S4S5S6S7 S8 S12 S9 S13 S10 S14 S11 S15 P2.0 P2.1 P2.2 P2.3

19、P2.4 P2.5 P2.6 P2.7 (图 3-4-2) 3.5步进电机仿卷帘机模块 现实生活中本模块是卷帘机控制,卷帘机主要由直流电机和减速器组成。本 设计用二相四线步进电机模拟卷帘机的升降。 3.5.1 步进电机的工作原理 步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一 个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“ 步距 角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制 角位移量,从而达到准确定位的目的,同时可以通过控制脉冲频率来控制电机转 动的速度和加速度,从而达到调速的目的。 步进电机可以作为一种控制用的特种电机,利用

20、其没有积累误差(精度为 100%)的特点,广泛应用于各种开环控制。 现在比较常用的步进电机包括反应式步进电机(VR) 、 永磁式步进电机(PM) 、 . . 混合式步进电机( HB)和单相式步进电机等。 3.5.2 步进电机模拟卷帘机的设计 本设计步进电机及驱动器模块设计的电路如图所示,VCC 接 12V 电源,GND 接地, A+、A-,B+、B-分别连接步进电机的四根接线,CP+、CP-、CW+、CW- 分别连接单片机P10P13 口。 该电路实现的功能是:通过AT89S51的 P10、P11、P12、P13四个口输出四 个信号,其中 P10、P12口输出控制水平方向和垂直方向脉冲的个数,

21、即两个方 向上的位移量; P11、P13口控制步进电机的转动方向,即正反转。 控制过程为:单片机接受键盘传来的信号,通过P1 的四个口输出控制信号, 通过硬件接线,发送到步进电机的驱动器,通过驱动器控制步进电机的转向和转 角。当然,其中还包括单片机的内部振荡电路,驱动器匹配的电路等的设计。 (图 3-5-2) 步进电机及驱动器模块设计电路图 引脚功能说明 P10、P12(1、3 脚) :接步进驱动器,传递脉冲个数; P11、P13(2、4脚) :控制电机的转动方向; 小节:本章节对单片机主控制模块、GSM 短信收发模块、温度显示模块、按键 模块、步进电机仿卷帘机模块分别进行了介绍,里面对各模块

22、的重点,难点及注 意点进行了很仔细的分析与讲解。 . . 第四章软件设计 温室大棚卷帘机控制系统软件设计主要由GSM短信模块程序设计, DS18B20 程序设计, 1602 液晶程序设计,矩阵键盘程序设计及步进电机程序组成。每一模 块都是先单独调试,最后整体调试的。下面分别介绍一下各模块的程序设计过程 及注意点。 4.1 程序设计总流程图 . . (图 4-1 功能流程图) 4.2GSM 短信模块程序设计 GSM 模块与手机之间的通信协议是一些AT 指令集, AT 指令是以AT 作首,字符结束的字符串,AT 指令的响应数据包在中。每个指令执行成功与 否都有相应的返回。所以本模块的程序设计主要以

23、发送AT 指令为着手点。 用 AT 命令设置 TC35 的参数时,必须先要将命令写入串口,然后通过读取 串口的应答数据来判断是否成功。一般AT 命令发送成功时,会返回数据“OK“ , 表示 AT 命令执行成功。在短消息模块设计的过程中,对于TC35 的相关参数要进 行设置。具体应用到的AT 指令如下: (1)设置发送模式 短消息收发时,必须要用AT 命令设置 TC35 的发送和接收模式。在收发短 消息时,必须按照设置的模式对发送和接收的数据进行相应编码和解码。其中, 设置 PDU 模式的命令为 “AT+CMGF=1 回车“ 。 (2)设置服务中心号码 根据前面介绍短消息收发技术原理,短消息的传

24、输总是由处于GSM 外部的 短消息服务中心进行中继。每个消息有自己的目的地或起源地,但只与用户和 SMSC 有关,因此要根据SIM 卡的营运商设置相应的服务中心。如设置徐州联通 公司服务中心的命令是,“AT+CSCA=008613010350500 回车“ 。 (3)短消息发送 在短消息发送时,使用以下命令将短信发出去: atcmgf1 回车 atcsmp17,167,0,0 回车 atcscs gsm 回车 atcmgs手机号码回车 输入短信内容 text 格式 (注: “ ” ASCII 值为 26,即 1AH ) 发送短信子程序如下: ;= . . ;发送短信程序 ;= MAIN: MO

25、V SP,#53H ;设置堆栈指针 MOV 78H,#20H ;设置要发送的数据块的首末地址 MOV 77H,#00H MOV 76H,#20H MOV 75H,#40H ACALL TRANS ;调用发送子程序 SJMP $ TRANS: MOV SBUF ,78H ;发送地址高 8 位 WAT1: JNB TI,WAT1 CLR TI MOV SBUF ,77H ;发送地址低 8 位 WAT2: JNB TI,WAT2 CLR TI MOV SBUF ,76H ;发送地址高 8 位 WAT3: JNB TI,WAT3 CLR TI MOV SBUF ,75H ;发送地址低 8 位 WAT4

26、: JNB TI,WAT4 CLR TI MOV IE,#90H ;打开中断允许寄存器,采用中断方式发送数据 MOV DPH,78H MOV DPL,77H MOVX A,DPTR MOV SBUF,A ;发送首个数据 WAIT: JNB F0,WAIT RET COM_INT: CLR TI ;关发送中断标志位TI INC DPTR ;数据指针加 1,准备发送下一个数据 . . MOV A,DPH ;判断当前被发送的数据地址是不是末地 址 CJNE A,76H,END1 ;不是末地址则跳转 MOV A,DPL CJNE A,75H,END1 SETE FO ;数据发送完毕,置1 标志位 CL

27、R ES ;关串行口中断 CLR EA ;关中断 RETI ;中断返回 END1: MOVX A,DPTR ;将要发送的数据送累加器,准备发送 MOV SBUF,A ;发送数据 RETI ;中断返回 4.3 DS18B20程序设计 DS18B20 温度传感器是 DALLAS 公司生产的单总线器件, 在一根线上进行全 部的信息传输,因为硬件简单,所以软件设计相对麻烦,对时序掌控精度要求较 高。 4.3.1 写 18B20程序设计 主机要生存一个写时间隙,必须把数据线拉低到低电平然后释放,写时间间 隙开始后的 15us内允许数据线拉倒高电平。主机要生成一个写0 间隙,必须把数 据线拉低电平并保持6

28、0us,如图 4.3.1 所示。 (图 4-3-1 DS18B20写时序图) . . 写 18b20子程序的汇编程序如下: ;= ; 写 DS18B20 的子程序 (有具体的时序要求 ) ;= WRITE_1820: MOV R2,#8 ; 一共 8 位数据 CLR C WR1: CLR DQ MOV R3, #6 DJNZ R3, $ RRC A MOV DQ, C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET 4.3.2读 18B20程序设计 主机生成读时间间隙,从ds18b20输出的数据在读间隙的下降沿出现的15us 内

29、有效,因此主机停止I/O 口的操作,以读取I/O 口的值,如图 4.3.2所示。 (图 4-3-2 DS18B20读时序图 ) . . 读 18b20子程序的汇编程序如下: ;= ; 读 DS18B20 的程序 ;= READ_18200: MOV R4,#2 ;将温度高位和低位从DS18B20 中读出 MOV R1,#TEMPER_L ;低位存入 TEMPER_L(TEMPER_L) ; 高位存入 (TEMPER_H) RE00: MOV R2,#8 ;数据一共有 8 位 RE01: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R

30、3,#9 RE10: DJNZ R3,RE10 MOV C,DQ MOV R3,#23 RE20: DJNZ R3,RE20 RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 . . RET 单线总线的空闲状态是高电平。无论任何理由需要暂停某一执行过程时,如果 还想恢复执行的话,总线必须停留在空闲状态。在恢复期间,如果单线总线处于 非活动(高电平)状态,位与位间的回复时间可以无限长。如果总线停留在低电 平超过 480us,总线上所有的器件都将复位。 执行序列通过单线总线端口访问DS18B20的协议流程图如下: (图4-3-2 协议流程图) 4.4

31、1602液晶程序设计 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块 的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字 符地址,也就是告诉模块在哪里显示字符,图4.4 是 1602 的内部显示地址。 (图 4-4 1602LCD 内部显示地址) . . 例如第二行第一个字符的地址是40H,那么是否直接写入40H 就可以将光标定位 在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7 恒定为高电平 1 所以实际写入的数据应该是01000000B(40H) +10000000B(80H)=11000000B(C0H)。 4.4.1 160

32、2 初始化的程序设计 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光 标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙 的状态。 1602LCD的一般初始化(复位)过程 延时 15mS 写指令 38H(不检测忙信号) 延时 5mS 写指令 38H(不检测忙信号) 延时 5mS 写指令 38H(不检测忙信号) 以后每次写指令、读 /写数据操作均需要检测忙信号 写指令 38H:显示模式设置 写指令 08H:显示关闭 写指令 01H:显示清屏 写指令 06H:显示光标移动设置 写指令 0CH:显示开及光标设置 液晶初始化程序: ;= ;初始化 ;= INIT:

33、 MOV A,#38H ;#38HA LCALL WIR ;调写 IR 子程序 MOV A,#0EH ;#0EHA ( 显示开,光标开,光标闪烁) LCALL WIR ;调写 IR 子程序 MOV A,#06H ;#06HA LCALL R ;调写 IR 子程序 . . RET ;返回 4.4.2 1602 写指令与数据的程序设计 因为本设计是显示温度值,所以不要读数据,只需写入指令与数据即可。下 面着重介绍一下1602写指令及数据的时序特点; 如图 4-4-2 是 1602写操作时序 (图 4-4-2 时序图) 按照图 4.4.2 时序写指令及数据程序如下: ;= ;写指令 ;= WIR:

34、ACALL CKLCD ;调查空闲子程序 CLR E ;E 清 0 CLR RS ;RS 清 0 CLR RW ;RW 清 0 SETB E ;E 置 1 MOV P0,A ;AP0 CLR E ;E 清 0 . . RET ;返回 ;= ;写数据 ;= WDR: ACALL CKLCD ;调查空闲子程序 CLR E ;E 清 0 SETB RS ;RS 置 1 CLR RW ;RW 清 0 SETB E ;E 置 1 MOV P0,A ;AP0 CLR E ;E 清 0 RET ;返回 4.5 矩阵键盘程序设计 矩阵键盘又称为行列式键盘,它是用4 条 I/O 线作为行线, 4 条 I/O 线

35、作为 列线组成的键盘。本模块设计是先读取键盘的状态,然后得到按键的特征编码, 再而让液晶显示。下面介绍一下键盘扫描的过程。 先从 P2 口的高四位输出低电平,低四位输出高电平,从P2 口的低四位读取 键盘状态。再从P2 口的低四位输出低电平,高四位输出高电平,从P2 口的高四 位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。使 用上述方法我们得到16 个键的特征编码。 举例说明如何得到按键的特征编码: 假设“1”键被按下,找其按键的特征编码。 从 P2 口的高四位输出低电平,即P2.4P2.7为输出口。低四位输出高电平, 即 P2.0P2.3为输入口。读 P2口的低四位状态

36、为 “ 1101”,其值为 “0DH ” 。 再从 P2口的高四位输出高电平, 即 P2.4P2.7为输入口。低四位输出低电平, 即 P2.0P2.3为输出口,读 P2口的高四位状态为 “1110”,其值为 “E0H ” 。 将两次读出的P2 口状态值进行逻辑或运算就得到其按键的特征编码为 “EDH ” 。 用同样的方法可以得到其它15 个按键的特征编码。 . . ;= ;按键扫描子程序 ;= KEY_SCAN: ;识别键盘有无键按下子程序 MOV P2,#0F0H ;置列线为 0,行线为 1 MOV A,P2 ;读 P2口 ANL A,#0F0H ;取出高四位 MOV B,A ;暂存到 B

37、MOV P2,#0FH ;置列线为 1,行线为 0 MOV A,P2 ;读 P1口 ANL A,#0FH ;取出低四位 ORL A,B ;高四位与低四位逻辑或运算重新组合 CJNE A,#0FFH,KEY_IN1 ;0FFH为无按键按下 RET KEY_IN1 : ;识别具体按键值子程序 MOV B,A ;将按键的特征编码暂存于B MOV DPTR,#KEYTABLE MOV R3,#0FFH KEY_IN2: INC R3 ;顺序码加 1 MOV A,R3 MOVC A,A+DPTR ;查表 CJNE A,B,KEY_IN3 ;比较,若相同则找到按键的特征编码。 MOV A,R3 ;找到特征

38、编码后,取顺序码 MOV 30H,A ;存入 30H单元 RET KEY_IN3: CJNE A,#00H,KEY_IN2 ;末完,继续查 RET ;00H为结束码 KEY_TABLE: . . DB 0EEH,0EDH,0EBH,0E7H,0DEH ;0,1,2,3,4, 顺序码 DB 0DDH,0DBH,0D7H,0BEH,0BDH ;5,6,7,8,9, 顺序码 DB 0BBH,0B7H,07EH,07DH,07BH, 077H ;A,B,C,D,E,F 顺序码 DB 00H ; 结束码 4.6 步进电机程序设计 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲: 当步进驱动器接

39、收到一个脉冲信号,它就驱动步进电机按设定的方向转动一 个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达 到准确定位的目的;同时还可以通过控制脉冲频率来控制电机转动的速度和 加速度,从而达到调速的目的。所以在软件编写时一定要注意步进电机时序 的变化,时序图如图(4-6 ) A B C D 13571357135713 (图 4-6 步进电机时序图 ) ;= ;步进电机子程序 ;= MOTO: MOV SP,50H STOP: MOV P1,#0FFH ;步进电机停转 LOOP: JNB K1,MZZ2 ;是否 K1按下,是则转正转模块 JNB K2,MFZ2 ;是否 K2按下

40、,是则转反转模块 JNB K3,STOP1 ;是否 K3按下,是则转步进电机停转 . . JMP LOOP ;循环 STOP1: ACALL DELAY ;按 K3键,消除抖动 JNB K3,$ ;K3放开否? ACALL DELAY ; 放开消除抖动 JMP STOP ; 步进电机停转 MZZ2: ACALL DELAY ;按 K1键,消除抖动 JNB K1,$ ;K1放开否? ACALL DELAY ; 放开消除抖动 JMP MZZ ; 转步进电机正转模块 MFZ2: ACALL DELAY ;按 K2键,消除抖动 JNB K2,$ ;K2放开否? ACALL DELAY ; 放开消除抖动

41、 JMP MFZ ; 转步进电机反转模块 MZZ: MOV R0,#00H ;置表初值 MZZ1: MOV A,R0 MOV DPTR,#TABLE ;表指针 MOVC A,A+DPTR ;取表代码 JZ MZZ ;是否取到结束码? MOV P1,A ;从 P1输出,正转 JNB K3,STOP1 ; 是否 K3按下,是则转步进电机停转 JNB K2,MFZ2 ; 是否 K2按下,是则转反转模块 ACALL DELAY ; 步进电机转速 INC R0 ;取下一个码 JMP MZZ1 RET MFZ: MOV R0,#05 ; 反转到 TABLE 表初值 MFZ1: MOV A,R0 MOV D

42、PTR,#TABLE ;表指针 MOVC A,A+DPTR ;取表代码 JZ MFZ ;是否取到结束码? . . MOV P1,A ;从 P1输出,反转 JNB K3,STOP1 ; 是否 K3按下,是则转步进电机停转 JNB K1,MZZ2 ; 是否 K1按下,是则转正转模块 ACALL DELAY ; 步进电机转速 INC R0 ;取下一个码 JMP MFZ1 RET TABLE: DB 0F1H,0F3H,0F2H,0F6H; ;正转 DB 0F4H,0FCH,0F8H,0F9H; DB 00H ; ;正转结束码 DB 0F1H,0F9H,0F8H,0FCH; ;反转 DB 0F4H,0

43、F6H,0F2H,0F3H; DB 00H; ;反转结束码 小节:本章节对各模块的软件编程进行了介绍,其中很详细的分析了各模块的 时序,将时序与程序一一对应着分析了模块的工作过程。 . . 第五章调试与总结 5.1 调试 单片机系统的软件调试与硬件调试是分不开的,许多硬件错误是在软件调 试中被发现和纠正的,但是硬件调试是基础,若硬件调试不过关,软件调试无从 谈起,所以我是先排除明显的硬件错误,然后再软硬兼顾,逐步排除错误。 本设计主要有 GSM 短信收发模块、温度显示模块、按键设置模块,步进电 机模拟卷帘机模块,我是对上述模块分别测试,然后再组装起来的,同样程序也 是如此,这样便于问题的查找和

44、以后的维护。 下面讲述一下我调试过程中遇到的比较苦恼的问题: (1)GSM 模块设计时主要遇到的问题是无法启动,按照 TC35的中文说明接线, 反复实验,还是无法达到 75ms 亮/ 3s 灭的启动效果,最后还是看英文资料, 才知道是电压的问题,虽然在这一模块设计时花了很多时间,走了不少弯路,可 是也从中学到不少东西。 (2)温度显示模块最主要的问题是DS18B20 和 1602的时序(具体时序极其程 序已第四章中仔细讲解) ,一定要严格按照它们的时序来编写,不然一定会出错。 (3)按键设置模块是一个稳定性的问题,你按下一个按键,液晶屏上有时不 显示任何数字,有时一下子会显示两三个数字,原因在

45、于我没加消除抖动的指令, 经修改之后,稳定性相对来说大大提高。 5.2总结 此设计是本人设计的最复杂的一个项目,思路源于生活,特别具有实用价值。 这也是第一次尝试将多个独立的模块集成在一起,实现一个整体的功能,对我来 说是一次极大的挑战,也是一次极佳的锻炼机会。 最后同大家分享一下我编写程序时的一些经验。 首先程序要分割编写,对于一个大的软件开发,如果不分割编写,实现的难 度在设计初期表现并不明显,到了后期这种设计引起的问题会越来越明显,此时 不断地修改,不断地调整,可能还是无济于事,最终导致失败。因而在设计的初 期就要对整体做好把握,各部分功能进行合理的切割,即使某一方面出了问题, . . 也可以在其内部解决掉而不要牵扯到其他的内容。实现彼此之间尽量互不干预。 其次,程序一定要注意随时添加注释,一个注释清晰的程序可以使一个原 本对此段程序不了解的人员很快的了解程序的功能和结构。这一点对于程序设计 者本身也是很重要的,一个大的软件设计周期可能很长,当设计者在设计后期再 回头看最初设计的东西时,如果注释不清楚则会花费很长时间去重新来了解自己 编写的程序,既费精力又费时间,事倍功半,得不偿失。 . . 致谢 在毕

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1