本科毕业设计(论文)
基于MSP430单片机的学习型遥
控器设计
赵博洋
燕 山 大 学
2011年 6 月
本科毕业设计(论文)
基于MSP430单片机的学习型遥
控器设计
学 院: 信息科学与工程学院 专 业: 电子科学与技术 学生 姓名: 赵博洋 学 号: 070104040011 指导 教师: 常丹华 答辩 日期: 2011年6月24日
燕山大学毕业设计(论文)任务书
学院:信息科学与工程学院 系级教学单位: 光电子 学 学生 专 业 07电子科学与技070104040011 赵博洋 号 姓名 班 级 术1班 题目名称 题目性质 题目类型 题目来源 基于MSP430单片机的学习型遥控器设计 1.理工类:工程设计 (√ );工程技术实验研究型( ); 理论研究型( );计算机软件型( );综合型( ) 2.文管理类( );3.外语类( );4.艺术类( ) 题 目 1.毕业设计( √ ) 2.论文( ) 科研课题( ) 生产实际( )自选题目( √ ) 1.通过红外接收二极管把遥控器发出的红外按键信号接收并解调出来。 主 2.解调得到的信号通过MSP430单片机的定时器功能把这些信息存储起来。 要 内 3.通过MSP430的定时器模块把存储起来的高低电平信号还原出来。 容 4.还原出来的波形以调制的方式经过红外发射电路发射出去。 5.发射出去的红外按键信号能够实现对电器的控制。 1.掌握MSP430单片机,熟练C语言编程; 基 2.学习了解红外通信的原理; 本 要 3.掌握项目开发研究过程; 求 4.最终撰写毕业论文;并提交撰写论文综述;提交本科毕业设计(论文)开题 报告;完成规定的外文翻译。 参 1 苏长赞. 实用遥控技术手册[M]. 北京:人民邮电出版社,1996 考 2 安颖, 刘丽娜. 具有学习功能的智能遥控器[期刊论文]-微计算机信息 资 2005(03) 料 3 陈永甫. 红外探测与控制电路[M]. 北京:人民邮电出版社,2004 周 次 第1~4周 第5~8周 应 弄清课题要设计方案,完成必完 求,查阅文献。 要的实验准备。 成 的 内 容 第9~12周 第13~16周 实现电路和光路功能或编程操作。 第17~18周 辩 撰写论文 制作PPT,准备答指导教师:常丹华 系级教学单位审批: 职称:教授 2011 年 3月 5 日 年 月 日
摘要
摘要
随着家电行业的不断发展,如今家电市场的竞争越来越激烈。作为家电的重要部件之一,遥控器的竞争也是可想而知。红外遥控器在家电中得到了广泛应用,但各产品的遥控器不能相互兼容,使得生活中遥控器数目越来越多,使用时常混淆。另外,若遥控器丢失,找到配套的遥控器也很困难。
具有学习功能的智能遥控器以普通的低成本单片机为核心,能解码与记忆遥控器编码,并模拟发射,是一个遥控器可以代替多个遥控器控制多个电器,是一种智能化的控制工具。
本文介绍的多功能红外遥控器是使用MSP430单片机作为整个系统的主控芯片,具有多功能自适应性,两种工作状态:学习状态和控制状态。可以对多种遥控器进行解码以及自学习功能,即实现了对多种电器的遥控控制功能。
关键词 红外遥控器;红外解码;MSP430;自学习
I
燕山大学本科生毕业设计(论文)
Abstract
With the continuous development of electronics industry, household electrical appliances now increasingly fierce competition in the market. As one of the important parts of home appliances, remote control of the competition can be imagined. Infrared remote control is a user can in a few meters or even 10 meters, will be able to operate the various electrical control devices, household electrical appliances have wide application, but the product of a remote control can be compatible with each other, making life in the remote control number of more and more often confused when used. Also if the remote control lost, supporting the remote control to find it is very difficult.
With the smart learning function remote control to the ordinary low-cost microcontrollers as the core, to decoding and encoding memory remote control, and analog transmission to a remote control can replace a number of remote control of a number of electrical appliances, is an intelligent control tools.
This paper introduces the multi-function is to use the infrared MSP430 single chip microcomputer as the main control chip of the whole system, have muti-function adaptability, two kinds of work of the state: learning state and controlling state. It can decode many infrared remote controls,which realize it can remote control many electrical appliances.
Keywords Infrared remote control; Infrared decoding; MSP430; Self-learning
II
目 录
摘要 ....................................................................................................................... I Abstract ................................................................................................................ II 第1章 绪论 ...................................................................................................... 1
1.1 课题背景与选题依据 ........................................................................... 1 1.2 红外遥控技术简介 ............................................................................... 2 1.3 红外遥控技术的研究现状与成果 ....................................................... 3 1.4 本文的结构安排 ................................................................................... 5 第2章 红外遥控系统原理与硬件设计 .......................................................... 7
2.1 红外通信基本原理 ............................................................................... 7 2.1.1 红外遥控发射及其编码 ................................................................ 7 2.1.2 红外遥控接收及其解码 ................................................................ 9 2.2 红外系统硬件设计 ............................................................................... 9 2.2.1 整体设计思路与系统框架 .......................................................... 10 2.2.2 红外接收电路设计 ...................................................................... 10 2.2.3 红外发射电路设计 ...................................................................... 10 2.3 本章小结 ............................................................................................. 12 第3章 MSP430单片机的应用与编程 ......................................................... 15
3.1 MSP430单片机简介 ........................................................................... 15 3.2 IAR编译器的实用 .............................................................................. 16 3.2.1 开发调试环境 .............................................................................. 16 3.2.2 编译链接项目 .............................................................................. 18
3.2.3 调试 .............................................................................................. 19 3.3 MSP430定时器的应用 ....................................................................... 20 3.3.1 看门狗定时器 .............................................................................. 20 3.3.2 基本定时器 .................................................................................. 21 3.3.3 定时器A ...................................................................................... 21 3.4 MSP430与键盘接口电路实验 ........................................................... 23 3.4.1 键盘程序的一般书写方法 .......................................................... 23 3.4.2 矩阵键盘原理分析 ...................................................................... 24 3.4.3 一般I/0口方式的程序设计 ....................................................... 24
III
3.4.4 中断功能方式的程序设计 ........................................................... 27 3.5 MSP430与1602液晶显示接口电路实验 .......................................... 29 3.5.1 LCD1602的基本特征 ................................................................... 29 3.5.2 LCD1602的引脚定义 ................................................................... 29 3.5.3 LCD1602的操作时序 ................................................................... 30 3.5.4 LCD1602硬件电路设计 ............................................................... 30 3.5.5 LCD1602控制说明 ....................................................................... 31 3.5.6 软件程序设计 ............................................................................... 31 3.6 本章小结 .............................................................................................. 33
第4章 红外遥控器软件设计与编程 ............................................................... 35
4.1 红外数据的解码与存储 ...................................................................... 35 4.1.1 红外数据解码实验 ....................................................................... 35 4.1.2 红外数据解码的1602键值显示 ................................................. 37 4.2 红外数据的调制与发射 ...................................................................... 38 4.2.1 38KHz载波实验 ........................................................................... 38 4.2.2 PWM信号测试 ............................................................................. 38 4.3 红外遥控器的键盘控制与整体功能实现 .......................................... 40 4.4 实物图片展示 ...................................................................................... 41 4.5 本章小结 .............................................................................................. 42 结论 ..................................................................................................................... 43 参考文献 ............................................................................................................. 45 致谢 ..................................................................................................................... 47 附录1 .................................................................................................................. 49 附录2 .................................................................................................................. 55 附录3 .................................................................................................................. 67 附录4 .................................................................................................................. 61 附录5 .................................................................................................................. 79
IV
第1章 绪论
第1章 绪论
1.1 课题背景与选题依据
进入二十一世纪以来各种电子信息技术进入高速发展阶段,包括信息系统技术微电子、计算机和现代通信技术、传感器技术,这也包括红外线技术,红外线是一种人的肉眼看不见的光线,最近二三十年来,初露头角的红外技术,在各个领域里获得了广泛的应用。开始应用到生产上,并形成了一门崭新的技术——红外技术[1]。
红外线(IrDA),简称IR,是一种点对点的无线通信通讯方式,只能进行段距离的无线数据的传输,且中间不能有障碍物。红外线又称红外光波,在电磁波谱中,光波的波长范围为0.01 um—1000 um;波长为0.76um—1000um的光波为红外光线,红外线遥控是利用近红外光传送遥控指令的,波长为0.76 um—1.5 um;用近红外做遥控光源,是因为目前红外发射器件与红外接收器件的发光与受光峰值波长一般为0.8 um—0.94 um,在近红外光波段内,二者的光谱正好重合,能够很好的匹配,可以获得较高的传输效率及较高的可靠性[2]。目前红外线得到了很普遍的应用,如红外鼠标、红外打印机、红外线键盘等等。
另外,近年来随着计算机在社会领域的渗透,单片机的应用正在不断的走向深入,同时带动传统控制检测日新月异更新。传统的遥控器大多数采用了无线电遥控技术,但是随着科技的进步,红外线遥控技术的成熟,红外也成为了一种被广泛应用的通信和遥控手段。继彩电、录像机之后,在录音机、音响设备、空调机一集玩具等其它小型电器装置上也纷纷采用红外线遥控。在工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效的隔离电器干扰[3]。由于红外线抗干扰能力强,且不会对周围的无线电设备产生干扰电波,同时红外发射接收范围窄,安全性较高。红外遥控虽然被广泛应用,但各产商的遥控器不能互相兼容。当今市场上的红外遥控装置一般采用专用的遥控编码及解码集成电路,由于其灵活性较低,应用范围有限。所以采用单片机进行遥控系统的应用设计,遥控装置将同时具有编程灵活、控制范围广、体积小、功耗低、功能强、成本低、
1
燕山大学本科生毕业设计(论文)
可靠性高等特点,因此采用单片机的红外遥控技术具有广阔的发展前景[4]。
1.2 红外遥控技术简介
60年代初,一些发达国家开始研究民用产品的遥控技术,但由于受当时技术条件的限制,遥控技术发展很缓慢。70年代末,随着大规模集成电路和计算机技术的发展,遥控技术才得到快速的进步。在遥控方式上大体经历了从高成本的有线到成本低廉控制方便的无线控制。无论采用何种方式,准确无误传输信号,最终达到满意的控制效果是非常重要的。最初的无线遥控装置大多采用的是电磁波传输信号,由于电磁波容易产生干扰,也易受到外界干扰,因此逐渐采用超声波和红外线媒介来传输信号。与红外线相比,超声波传感器频带窄,所能携带的信息量少,易受干扰而引起误动作。较为理想的是光控方式,逐渐采用红外线的遥控方式取代了超声波遥控方式,出现了红外线多功能遥控器,成为当今时代的主流。由于红外线在频谱上居于可见光之外,所以抗干扰性强,且安全[5]。具有广播的直线传播特性,不易产生相互间的干扰,是很好的信息传输媒体。信息可以直接对红外光进行调制传输,例如,信息直接调制红外光的强弱进行传输,也可以用红外线产生一定频率的载波,再用信息对载波进行调制,接收端再去掉载波,取到信息。从信息的可靠传输来说,后一种方法更好,这就是我们今天看到的大多数红外遥控器锁采用的方法。红外遥控技术在这十年来得到了迅猛发展,尤其在家电领域如彩电、DVD、空调、玩具等,也在其它电子领域得到广泛应用,随着人们生活水平的提高,对产品的追求是使用更方便、更具智能化,红外遥控技术正是一个重点的发展方向[6]。
红外线是波长在760 nm至1 mm之间的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.76 um至3.0 um之间。目前广泛实用的家电遥控器几乎都是采用的近红外线传输技术,但作为无线局域网的传输方式,红外线方式的最大的优点是不受无线电干扰,且它的使用不受国家无线管理委员会的限制[7]。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围
2
第1章 绪论
限定在850至900 nm之内。
红外遥控技术是一种利用红外线进行点对点通信的技术,其相应的软件和硬件技术都已比较成熟。它是把红外线作为载体的遥控方式。由于红外线的波长远小于无线电波的波长,因此在采用红外遥控方式时,不会干扰其他电器的正常工作,也不会影响临近的无线电设备。红外遥控是利用波长为0.76 um-1.7 um之间的近红外线来传递控制信号的。
它具有一下特点:
1.由于为不可见光,因此,对环境影响很小。红外线的波长远小于无线电波的波长,所以,红外遥控不会干扰其它家用电器,也不会影响近邻的无线电设备。
2.红外为不可见光,具有很强的隐蔽性和保密性,因此在防盗,警戒等安全保卫装置中也得到了广泛的应用。
3.红外线遥控的遥控距离一般为几米至几十米或更远一点。
4.红外线遥控具有结构简单,制作方便,成本低廉,抗干扰能力强,工作可靠性高等一系列优点,特别是室内遥控的优先遥控方式。同时,由于采用无线遥控器件是,工作电压低,功耗小,外围电路简单,因此它在日常工作生活中的应用越来越广泛[8]。
它在技术上的主要优点是:
1.无需专门申请特定频率的使用执照;
2.具有移动通信设备所必须的体积小、功率低的特点; 3.传输速率适合于家庭和办公室实用的网络; 4.信号无干扰,传输准确度高。 它的缺点是:
由于它是一种视距传输技术,采用的连接具有方向性,两个设备之间如果传输数据,中间就不能有格挡物;而且通讯距离较短,此外红外发光二极管(LED)不是一种十分耐用的器件[9]。
1.3 红外遥控技术的研究现状与成果
红外遥控的特点是不影响周边环境的、不干扰其他电器设备。由于其无
3
燕山大学本科生毕业设计(论文)
法穿透墙壁,故不同房间的家用电器可使用通用的遥控器而不会产生相互干扰;电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作;编解码容易,可进行多路遥控。
由于各生产厂家生产了大量红外遥控专用集成电路,需要时按图索骥即可。因此,现在红外遥控在加用电器、室内近距离(小于10米)遥控中得到了广泛的应用。
多路控制的红外发射部分一般有许多按键,代表不同的控制功能。当发射端按下某一按键时,相应地接收端有不同地输出状态。接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。“电平”输出是指发射端按下键时,接收端对应输出端输出“有效电平”消失。此处的“有效脉冲”和“有效电平”,可能是高、也可能是低,取决于相应输出脚的静态状况,如静态时为低,则“高”为有效;如静态时为高,则“低”为有效。大多数情况下“高”为有效。“自锁”输出是指发射端每按一次某一个键,接收端对应输出端改变一次状态,即原来为高电平变为低电平,原来低电平变为高电平。此种输出适合用作电源开关、静音控制等。有时亦称这种输出形式为“反相”。“互锁”输出是指多个输出互相清除,在同一时间内只有一个输出有效[10]。电视机的选台就属此种情况,其他如调光、调速、音响的输入选择等。“数据”输出是指把一些发射键编上号码,利用接收端的几个输出形成一个二进制数,来代表不同的按键输入。一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便以后适时地来取数据。这种输出形式一般用于与单片机或微机接口。
除以上输出形式外,还有“锁存”和“暂存”两种形式。所谓“锁存”输出是指对发射端每次发的信号,接收端对应输出予以“储存”,直至收到新的信号为止;“暂存”输出与上述介绍的“电平”输出类似。
现阶段红外遥控技术已经在日常家用电器中得到了广泛应用,其使用方便、功耗低、抗干扰能力强的优点也越来越在智能仪器系统中受到重视。市场上的各种家电红外遥控系统技术成熟、成本低廉,但都是针对各自的遥控对象(彩电、冰箱、空调等),均由专用CPU解码,作为一般的单片机控制
4
第1章 绪论
系统不能直接使用。本文探讨了如何借鉴家电红外遥控系统的原理,自行设计解码电路和解码、控制程序,利用现有遥控器如何使各控制系统嵌入红外遥控技术。另外,在工业控制的许多环境下,不适合操作人员直接控制,例如:高温、高压、辐射、粉尘、强酸性、腐蚀性、有毒气体等。这时,红外遥控是可行的控制方式[11]。通过这种方式,操作人员能及时采集现场数据,修改控制对象的参数,并发送控制命令,以达到理想的控制效果。红外遥控通过红外通信的方式进行控制,具有低功耗、低成本、高可靠性、体积小、结构简单、避免人身伤害等优点,是一种先进的控制方式,具有广阔的应用前景。
1.4 本文的结构安排
本文共分为4章,对课题的叙述结构安排如下:
第1章中结合课题背景与国内外红外遥控器研究现状分析课题的选题依据,以研究意义等,同时对红外遥控技术做简单的介绍。
第2章从发射编码与接收解码两方面叙述红外通信的原理,同时根据原理,介绍课题红外遥控系统的整体思路与红外接收与发射电路设计。
第3章首先简单介绍MSP430的编程,以及课题所涉及的定时器等内容,然后按课题进展,模块化设计思想,介绍单片机与键盘和液晶接口电路及程序编写。
第4章主要对红外系统整合,首先实现红外解码及键值的液晶显示,然后调试载波信号,最后结合键盘控制,实现课题所要求的整体功能。
5
燕山大学本科生毕业设计(论文)
6
第2章 红外遥控系统原理与硬件设计
第2章 红外遥控系统原理与硬件设计
2.1 红外通信基本原理
红外通信,即以红外线作为通信载体,通过红外光在空中的传播来传输数据的通信方式,它由发射端和接收端来完成。在发射端,发送的数字信号经过适当的调制编码后,送入电光变换电路,经红外发射管转变为红外光脉冲发射到空中;在接收端,红外接收器对接收到的红外光脉冲进行光电变换,解调译码后恢复出原信号。
红外发射端发送数据时,是将待发送的二进制数据调制成一系列的脉冲信号后发射出去。红外载波为频率38 kHz的方波,采用脉宽调制PWM方式发送,通过待发送二进制数据的“0”或“1”控制两个脉冲之间的时间间隔,及PWM的占空比。红外载波既可以通过外围硬件电路实现,也可以使用单片机内部的定时器的PWM功能实现。
红外接收端在收到38 kHz的载波信号时,会输出低电平,否则输出高电平,从而可以将“时断时续”的红外光信号解调成一定周期的连续方波信号,经单片机处理,便可以恢复出原数据信号。
2.1.1 红外遥控发射及其编码
红外遥控发射器采用一块大规模集成电路(LSI),当按压功能指令键盘时,由LSI产生经过调制的串行编码,通过激励电路,驱动红外线发光二极管发光,将编码信号经红外线二次调制后发射出去。二次调制首先是用与键盘操作相对应的控制信号对38到40 kHz左右的载波信号进行脉冲调制,然后再去对波长约为950 nm的红外光载波进行第二次幅度调制,即用驱动红外线发光二极管方法产生红外遥控信号。
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565 ms、间隔0.56 ms、周期为
7
燕山大学本科生毕业设计(论文)
1.125ms的组合表示二进制的“0”;
以脉宽为0.565 ms、间隔1.685 ms、周期为2.25 ms的组合表示二进制的―1‖,其波形如图2-1所示[11]:
图2-1 遥控器的“0”和“1”
上述―0‖和―1‖组成的32位二进制码经38 kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图2-2所示[11]:
图2-2 完整的红外数据编码图
遥控信号编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。后16位为8位操作码(功能码)及其反码。
遥控器在按键按下后,周期行地发出同一种32位二进制码,周期约为108 ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~62 ms之间。
当一个键按下超过36 ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108 ms发射代码由一个起始码(9 ms),一个结束码(4.5 ms),低8位地址码(9 ms~18 ms),高8位地址码(9 ms~18 ms),8位数据码(9 ms~18 ms)和这8位数据的反码(9 ms~18 ms)组成。如果键按下超过108 ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9 ms)和结束码(4.5 ms)组成。
红外数据编码体制规律如下:
(1)一次按键动作的遥控编码信息包含一个引导脉冲和32位串行二进制码。前16位为用户码,不随按键的不同而变化。它是为了表示特定用户而
8
第2章 红外遥控系统原理与硬件设计
设置的一个辨识标志,以区别不同机种和不同用户发射的遥控信号,防止误操作与干扰。后16位码随着按键的不同而改变,是按键的识别码。前8位为键码的正码,后8位为键码的反码。
(2)遥控信号不是高电平或低电平表示“1”或“0”的,而是通过脉宽来表示的,对于二进制信号“0”,一个脉冲占1.2 ms;对于二进制信号“1”,一个脉冲占2.4 ms,而每一个脉冲内低电平均为0.6 ms。
2.1.2 红外遥控接收及其解码
红外遥控接收器的作用是将接到的红外发光遥控信号,经二次解调输出功能指令操作码,在送到微处理器去识别和处理。红外遥控信号通过红外滤光片后作用于红外光电二极管,红外光信号变成电信号。该信号经过放大器后在经过选频电路选频,然后经过检波电路取出调制信号,在经过施密特电路整形后,还原成代码波形,最后送给微处理器进行信息识别和处理。
解码的关键是如何识别“0”和“1”,由于接收代码是发射代码的反码,发射代码中“0”和“1”的高电平宽度相同,低电平宽度不同,所以,从位的定义我们可以发现接收代码中“0”、“1”均以0.56 ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56 ms,“1”为1.68 ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56 ms低电平过后,开始延时,0.56 ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56 ms长些,但又不能超过1.12 ms,否则如果该位为―0‖,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最晚可靠,一般取0.84 ms左右均可。
2.2 红外系统硬件设计
红外遥控系统主要由遥控发射器、一体化接收头、单片机、接口电路组成。遥控器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接受他完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制码,对于一般的红外遥控系统,此串行码输入到微控制器,由其内部CPU完成对遥控指令解码,并执行相应的遥控功能。使用遥控器作为控制系统的输入,需要解决如下几个关键问题:如何接收红
9
燕山大学本科生毕业设计(论文)
外遥控信号;如何识别红外遥控信号以及解码软件的设计、控制程序的设计。
2.2.1 整体设计思路与系统框架
课题所设计的这款红外遥控器,不仅能设置控制对象的给定值或控制参数,并通过红外线发送给对象,而且能接收并显示对象通过红外线反馈回的实际值,这是它不同于普通红外遥控器的地方。因此,实际应用中,红外遥控器和控制对象上都装有红外发送电路和红外接收电路。红外遥控器的硬件部分主要包括五个模块:电源模块、键盘模块、液晶模块、红外发送模块和红外接收模块。总体硬件框图如图2-3所示。由于MSP430、红外发送模块和红外接收模块都可采用3 V电源,所以电源模块采用两节1.5 V电池供电即可。键盘模块采用4×4行列扫描式键盘。液晶模块由MSP430直接驱动。
LCD1602液晶模块红外发送模块电源模块MSP430单片机键盘模块红外接收模块 图2-3 红外系统整体设计框图
2.2.2 红外接收电路设计
接收电路使用集成一体化红外接收头SM0038,SM0038对外只有3个引脚:VS、GND和1个脉冲信号输出引脚OUT。与单片机接口非常方便。VCC接电源(+5 V)并经电容进行滤波,以避免电源干扰;GND接系统的地线(0 V);脉冲信号输出接CPU的中断输入引脚。采取这种连接方法,软件解码既可工作于查询方式,也可工作于中断方式。
2.2.3 红外发射电路设计
因为发光二极管的发光距离与其发射功率成正比,为了提高发光二极管的发光距离,必须提高它的发射功率,也就是使红外发光二极管工作于脉冲状态。可以用两种方法来实现:一是用硬件方法,即设计脉冲电路来产生占
10
第2章 红外遥控系统原理与硬件设计
空比尽量小的脉冲载波信号;另一种就是用软件来控制MSP430的输出端P2.0,让其输出即为占空比较小的脉冲信号。
编码器(调制信号)38kHz振荡器(载波信号)
图2-4 红外遥控发射模块框图
图2-4是目前所有红外遥控器发射电路的功能组成,其中的编码器即调制信号,按遥控器用途的编码方式可以很简单、也可以很复杂。例如用于电视机、VCD、DVD和组合音响的遥控发射的编码器,因其控制功能多达50种以上,此时的编码器均采用专用的红外线编码协议进行严格的编程,然而对控制功能少的红外遥控器,其编码器是简单而灵活。前者编码器是由生产厂家的专业人员按红外遥控协议进行编码,而后者适用于一般电子技术人员和电子爱好者的编码。图2-4中的38 kHz振荡器即载波信号比较简单,但专业用的和业余用的也有区别,专业用的振荡器采用了晶振,而后者一般是RC振荡器。例如彩电红外遥控器上的发射端用了455 kHz的晶振,是经过整数分频的,分频系数为12,即455kHz÷12=37.9kHz。当然也有一些工业用的遥控系统,采用36 kHz、40 kHz或56 kHz等的载波信号。
因红外遥控器的控制距离约10米远,要达到这个指标,其发射的载波频率(38 kHz)要求十分稳定,而非专业用的RC(38 kHz)载波频率稳定性差,往往偏离38 kHz甚至很远,这就大大缩短了遥控器的控制距离。因晶振频率十分稳定,所以专业厂家的遥控器全部采用晶振的38 kHz作遥控器的载波发送信号。
图2-4中编码器的编码信号对38 kHz的载波信号进行调制,在经红外发射管D向空间发送信号供遥控接收端一体化接收头接收、解调输出、再做处理。
利用红外线的特点,可以制作多路遥控器。在遥控发射电路中,有两种电路,即编码器和38 kHz载波信号发生器。在不需要多路控制的应用电路
11
燕山大学本科生毕业设计(论文)
中,可以使用常规集成电路组成路数不多的红外遥控发射和接收电路,该电路无需使用较复杂的专用编译码器,因此制作容易。
MSP430 图2-5 单片机控制红外发射电路设计
这里利用软件来实现这个功能。即在需要输出高电平的时候,让程序定时把P2.1口输出状态反向,其中定时时间是由指令数和指令周期来决定的,每条指令的指令执行周期是固定的,所以如果想让反向频率高一些,则让指令执行的少一些,反之就让指令多一些。可见输出信号占空比可以由定时时间的长短来决定,这样就可以在高电平时输出占空比尽量小的脉冲信号。因为接收头对38 kHz的光信号转换能力比较强,所以把高电平的频率设置为38 kHz。在需要输出低电平的时候,控制P2.1口一直为低就可以了。
红外发光二极管发射时,先发一段前导码,以检验这组码是否为想要的码。前导码由一个9 ms的高电平和一个4 ms的低电平组成。然后再发32位数据代码,其中高电平为0.5 ms,低电平为0.5 ms的一个周期为代码“0”;高电平为0.5 ms,低电平为1.5 ms的一个周期为代码“1”,为了提高发射功率,实际工作时,发光二极管的高电平用38 kHz的载波信号载波,低电平则一直为低。
2.3 本章小结
本章讲述了红外通信的基本原理,并从发射和接收角度详细阐述了红外通信如何编码与解码。一组红外信号是有前导码、用户码、用户反码、键值码和键值反码组成,发射信号经过38 kHz载波调制后,可以分为32位的二进制编码,其中“0”与“1”都是由0.56 ms的高电平开始,不同的是低电平宽度,而接收端是发射信号数据的反码,所以接收信号中,“0”与“1”的低电平宽度相同,高电平宽度不同,解码时可以读取高电平的宽度来确定“0”与“1”,从而解出数据码。在分析原理后,设计了出红外系统的整体
12
第2章 红外遥控系统原理与硬件设计
框图,以及具体分析红外发射与接收电路。红外发射电路中的是38 kHz载波信号的产生。接收电路中采用红外一体化接收头,数据解码简单方便。
13
燕山大学本科生毕业设计(论文)
14
第3章 MSP430单片机的应用与编程
第3章 MSP430单片机的应用与编程
MSP430 是美国 Texas Instruments(TI)公司于 1996 年开始推向市场的超低功耗微处理器。除了超低功耗这一特点外,在 MSP430 系列产品中还集成了很多功能模块,可以应用于各个方面,使得用一片 MSP430 芯片就能完成以前要用多片芯片组合才能完成的功能,大大地缩小了产品的体积,并且降低了成本。因此,MSP430 系列一经推出,就受到了业内人士的欢迎。迄今为止,MSP430 已经广泛应用于各个领域,尤其是便携式仪器仪表、监测、医疗器械以及汽车电子等领域。
本章将对 MSP430 的基础特性进行简明扼要地介绍,以及说明课题设计到的一些寄存器和外围硬件电路,对基础特性的了解是操作任何一种微处理器所必备的,本章内容将展开课题的具体实践操作。
3.1 MSP430单片机简介
当前市场上存在很多种微处理器,每种微处理器都有其特色,针对不同的场合选择合适的微处理器非常重要。MSP430 单片机是 TI 公司推出的一个新型单片机系列,其主要特点是:
(1)超低功耗。拥有5种低功耗模式,以适应不同的需要。CPU 从低功耗模式被唤醒,这个过程最多只需要6 μs,因此,在某些需要迅速做出反应的应用中,CPU 能够及时退出低功耗模式,进入工作模式。
(2)灵活的时钟使用方式除了片内集成一个晶体振荡器外,还可外接 1~2个晶体振荡器。不同的内部功能模块可根据需要使用不同的晶体振荡器,在不需要时可以通过设置寄存器将其关闭,以降低功耗。
(3)高速的运算能力16位RISC架构,125 ns指令周期。
(4)灵活快速的编程方式可通过JTAG和BSL两种方式向CPU内装载程序。
(5)高保密性只需按照特定的方式将MSP430内部的熔丝熔断,JTAG 口便被物理性地阻断。BSL方式所需要的密码长达256位,排列组合出来的密码量为2的256次幂,如此巨大的数量被破解的可能性微乎其微。
15
燕山大学本科生毕业设计(论文)
(6)低电源电压范围1.8~3.6 V。
课题所设计的遥控器,选用的单片机型号是MSP430F1496,其性能特点如下:低工作电压(1.8~3.6 V);超低功耗(工作模式4下耗电仅为0.1 μA);16位精简指令结构(RISC);150 ns指令周期;带有3个捕获/比较器的16位定时器;片内集成96段LCD驱动器;片内有JTAG调试接口和FLASH型存储器,可在线串行编程;开发环境十分方便高效,支持C语言和汇编语言。
3.2 IAR编译器的实用
编写程序的过程主要包括编写代码、编译、调试,这3个过程是交替进行的。编译器的生产厂商通常将代码编辑器、编译器、调试器集成在同一个软件包中,称为集成调试环境,这样的软件包简称为编译器。熟练掌握编译器的使用方法是非常重要的,往往能够大幅度提高编写、调试代码的效率。
3.2.1 开发调试环境
要开发一个完整的软件,其源文件通常会有多个,而且文件类型也有多种。为了便于使用和管理,将这些文件的集合称为 project (工程或者项目) 。其中有几个文件是专门用来记录编译器设置、文件列表等开发环境的,称为工程文件。开发软件的时候,首先要创建一个 project ,设置工程参数,然后才可以编译和链接。EW430 除了创建工程,还需要创建一个workspace(工程集合)。
工程集合中可以只有一个工程。每个工程中也可以只有一个源文件,视需要而定。源文件的种类可以是C文件、汇编文件,也可以是库文件。
创建工程的过程为:
(1)从File菜单中选择New选项,创建一个workspace。
(2)从Project菜单中选择Creat New Project选项。出现的对话框如图3-1所示。其中Empty project表示建一个空的工程,asm表示建一个纯使用汇编语言的工程,C++表示建一个使用C++语言的工程,C表示建一个使用C语言的工程。选择后3种都会为用户生成一个主程序的框架,并对编译和链接的选项选择相关的设置。不过,它不会包办所有的工作,一般
16
第3章 MSP430单片机的应用与编程
用户在后面仍然需要按照自己的要求进一步调整选项。
图3-1 新建一个工程
选择使用C语言的工程,按OK按钮。出现对话框,要求填写工程名称以及保存路径,工程名称填写为test。填写完毕后,按OK按钮出现创建完毕的工程。
EW430还同时为同一个工程创建了两种编译选项:Debug和Release。Debug编译时在目标文件中包含调试信息,进行低级别(low)优化,用于调试程序。Release编译时不在目标文件中包含调试信息,且对目标代码文件进行了优化。用户也可以创建自己的编译方式。
(3)向工程中添加其他文件。将鼠标移动到工程窗口上,单击右键,出现如图3-2所示的弹出菜单,添加需要的文件。
图3-2 添加文件
17
燕山大学本科生毕业设计(论文)
3.2.2 编译链接项目
在编译开始之前先要对编译器的参数作一些设置。在图3-2中的弹出菜单中选择Options选项,注意单击右键之前鼠标要放在test-Debug栏上,而不是放在工程中的文件(如main.c)上。如果是放在工程中的文件上,设置的仅是这个源文件的参数,而不是整个工程的参数。编译器允许每个源文件使用各自的编译、链接参数。在图3-2中的弹出菜单中选择Options选项后,出现Options对话框,如图3-3所示。
图3-3 编译参数设置
在这里,只简单介绍一些常用的设置。
(1)在General Options选项Target选项卡中Device选项设置使用的MSP430单片机类型。
(2)在Debugger选项Setup选项卡中选择调试方式,如图3-4所示。 FET Debuger选择 JTAG 调试方式。Simulator选择软件模拟方式。
图3-4 选择仿真方式
18
第3章 MSP430单片机的应用与编程
(3)在FET Debugger选项Setup选项卡Connection选项中选择并口调试或USB调试,如图3-5所示,其中IAR软件自带并口与USB接口驱动程序。
图3-5 选择调试方式
这里选择并口调试方式,即Texas Instrument LPT-IF选项
3.2.3 调试
本节所讲的调试针对的是通过JTAG端口连接硬件进行仿真的情况。连接好JTAG仿真器后,在菜单Project选项中选择Download and Debug选项或者单击图标按钮
,正常情况下,将会进入调试状态,如图 3-6 所示。
进入调试界面之前,编译器会检查项目中的文件在修改后是否被编译过,如果没有,先进行编译和链接。这样可使生成的目标代码和源文件总是保持一致。
图3-6 调试显示界面
19
燕山大学本科生毕业设计(论文)
1.运行
下面介绍一下调试中一些按钮的功能
Reset 复位
Step Over 单步运行。遇到函数调用时,将遇到的函数当作单独
的一步执行。
Step Into 单步运行。遇到函数调用时,进入所遇到的函数中,并
执行一句语句。
Step Out 单步运行。将本函数执行完毕,退出本函数后停止程序
运行,等待用户新的命令。
Next Statement 单步运行。 C 语言的一句语句中还可以包含多个
表达式, Step Over、Step Into、Step Out 将每一个表达式作为一步。Next Statement不考虑包含的表达式,直接执行 C 语言完整的一句语句。
Run to Cursor 运行到光标所在位置停下。 Go 运行。 break 暂停。
Stop the current debug session 终止调试。
Toggle Breakpoint 建立或者取消光标所在位置的断点。
3.3 MSP430定时器的应用
MSP430系列单片机的定时器相当丰富。有基本定时器BT、定时器TA、定时器TB、看门狗定时器WDT等。其中看门狗主要用于程序的完善性控制等方面;基本定时器除了可以用于定时之外,还可以用于液晶显示的时序控制;TA、TB基本相同,而且功能复杂,这里将简单介绍。
3.3.1 看门狗定时器
看门狗的目的在于阻止程序跑飞,其原理在于:看门狗定时器设置一定时间,比如250毫秒,这个时间是所有用户程序一定能在此时间内执行完该程序的一个时间,设置好这个定时时间之后,所有用户程序就必须在这个设定的时间内将看门狗计数器的值清零,使计数器重新技术,如果CPU执行程序正确,则看门狗计数器始终能在规定的时间内被用户程序清零而时钟不
20
第3章 MSP430单片机的应用与编程
能计数到250毫秒,而当CPU执行程序跑飞(PC值指向用户程序以外),看门狗计数器得不到用户程序清零,能计数到250毫秒,发出溢出,导致CPU复位,这样CPU又重新运行用户程序。所以使用看门狗时,用户软件必须周期性地在WDTCTL的CNTCL位写“1”,使得看门狗计数器复位以防止其超过设定的定时时间。
3.3.2 基本定时器
BT是MSP430X3XX、MSP430F4XX系列器件中的模块。它也是一个定时器,它通常向其它外围模块提供低频控制信号。BT可以是两个8位定时器也可以是一个16位定时器,它有两个计数单元(BTCNT1、BTCNT2)与一个控制单元(BTCTL)。通过控制寄存器BTCTL的设置,用户可以方便地使用BT。
3.3.3 定时器A
TA、TB基本相同,这里将详细讲解定时器A。
定时器A是MSP430所有系列都有的模块,是一个用途非常广泛的通用16位定时/计数器。它有一下一些特点:
16位计数器,四种工作模式; 多种可选的计数器时钟源;
多个具有可配置输入端的捕获/比较寄存器; 有8种输出模式的多个可配置的输出单元;
Timer_A可支持同时进行的多种时序控制、多个捕获/比较功能、多种输出波形(PWM),也可以是几种功能的组合。每个捕获/比较寄存器可以以硬件方式支持实现串行通讯。
Timer_A具有中断能力。中断可由计数器溢出引起,也可来自具有捕获或比较功能的捕获/比较寄存器。每个捕获/比较模块可独立编程,由捕获或比较外部信号以产生中断,外部信号可以是上升沿,也可以是下降沿,也可都是。
在不同的MSP430器件中,Timer_A模块中的捕获/比较器的数量不一样,比如在MSP430F435中Timer_A模块含有3个捕获/比较器(简称CCR),
21
燕山大学本科生毕业设计(论文)
因此也经常称Timer_A3,表示该模块含有3个CCR。如图3-7,是Timer_A的结构原理图,图中,可以将Timer_A分解成几个部分:计数器部分、捕获/比较寄存器、输出单元。其中计数器部分完成时钟源的选择、分频、模式控制、计数等功能。捕获/比较器用于捕获事件发生的时间或产生时间间隔。输出模块用于产生用户需要的输出信号。
定时器A的寄存器中TACTL为最主要的控制寄存器,它决定TA的输入时钟信号、TA的工作模式、TA的开启与停止、中断的申请等工作。TACTL寄存器为16位寄存器,必须使用字指令对其访问。该寄存器在POR信号后全部复位,但在PUC信号后不受影响。
图3-7 定时器A的结构
下面将以设计一段时间的定时为例讲述各种定时器如何初始化。 ⒈BT的初始化:(假设允许中断)
IE2 |= BTIE; //Enable BT interrupt
BTCTL = BTSSEL+BTIP2+BTIP1+BTIP0;
22
第3章 MSP430单片机的应用与编程
_EINT(); //Enable interrupts
⒉WDT的初始化:(假设允许中断)
WDTCTL = WDT_MDLY_32; IE1 |= WDTIE; _EINT();
TACTL = TASSEL1 + TAC; CCTL0 = CCIE; CCR0 = 50000; TACTL |= MC1; _EINT();
⒊TA的初始化:(假设允许中断)
3.4 MSP430与键盘接口电路实验
在单片机应用中,键盘是人机对话的输入设备,借助键盘可向系设置参数,发出控制指令等。在课题设计中,采用了4×4键盘,在这个小节中,将从硬件和软件介绍一下MSP430单片机的键盘设计。
3.4.1 键盘程序的一般书写方法
键盘是由若干上述的独立按键按一定的规则组合而成的。也就是说,键盘的基本元素是按键,那么消除按键的抖动是必须的。同时,键盘是由若干按键构成的,那么判断是哪一个按下则需要通过判键得到键值。得到键值之后,还有一件事情就是等待按下的按键松开(注意:如果系统中使用了看门狗,则在这里要不断地清空看门狗,因为假如使用者长时间按着键,则看门狗超时、系统复位)。综合起来,一般的键盘程序有如下3个步骤:
消除按键抖动(如果使用硬件,则可忽略); 判断是哪个按键按下,识别键码; 等待按键松开。
在键盘中又分为独立式键盘和行列扫描式键盘,在课题中,采用了4×4键盘,属于行列扫描式键盘,在这里,介绍一下行列扫描式键盘。
23
燕山大学本科生毕业设计(论文)
3.4.2 矩阵键盘原理分析
行列扫描式键盘又叫矩阵键盘,矩阵键盘电路主要是对MSP430单片机的一般I/O口来进行扩展设计。矩阵键盘由行线和列线组成。矩阵键盘通过扫描来实现捕获键盘的输入。所谓扫描就是单片机不断地对行线一次设置低电平,然后检查列线的输入状态,从而确定键盘是否有输入。如图3-8,为键盘的电路设计图。
图3-8 键盘电路
在图3-8中,P1.0、P1.1、P1.2、P1.3分别为键盘的列线。P1.4、P1.5、P1.6、P1.7为键盘的行线。列线为输入口,行线为输出口。由于所有列线都上拉到3.3V,所以在没有任何键被按下时,所有列线上都为高电平。当往相应的行线上输出低电平,如果键盘上某个键被按下时,则某个列线就为低电平,单片机读取该列线的状态就可以判断某个被按下,这就是键盘的扫描原理。由于MSP430单片机的P1口具有中断功能,因此在软件设计时,可以采用一般I/O口来实现键盘输入,也可以利用P1口的中断功能来实现键盘输入。
3.4.3 一般I/0口方式的程序设计
根据上面的原理分析,软件主要是基于扫描实现的。软件通过设置行线上的输出,读取列线上的状态来获取键盘的输入值,整个程序处于键盘的扫
24
第3章 MSP430单片机的应用与编程
描状态。在实际的应用中,有时候按键的抖动可能引起误判,所以在程序设计时必须考虑消除抖动。如图3-9所示为程序流程图。
端口初始化等待输入是否有键按下抖动消除键盘分析程序
图3-9 一般I/O方式程序设计流程图
由图3-9可以看出,整个程序包括端口初始化、键盘扫描、抖动消除和键盘识别等几个部分,下面具体分析键盘扫描程序。
键盘扫描程序主要是等待按键的按下,如果有按键按下,则进行按键输入分析,在进行键盘扫描的时候,为了简单起见,在等待键盘输入的时候采取的是死循环等待方式,在实际中可以采用其它灵活的方式,具体情况根据系统的需求来确定,下面为具体的程序。
int KeyScan(void) {
int nP10,nP11,nP12,nP13; int nRes = 0; for(;;) {
//读取各个管脚的状态 nP10 = P1IN & BIT0; nP11 = (P1IN & BIT1) >> 1;
25
燕山大学本科生毕业设计(论文)
}
}
nP12 = (P1IN & BIT2) >> 2; nP13 = (P1IN & BIT3) >> 3; //是否有键被按下
if(nP10 == 0 || nP11 == 0 || nP12 == 0 || nP13 == 0)
{ }
break;//有键被按下
Delay();//延时一点时间,消除抖动 //读取各个管脚的状态 nP10 = P1IN & BIT0; nP11 = (P1IN & BIT1) >> 1; nP12 = (P1IN & BIT2) >> 2; nP13 = (P1IN & BIT3) >> 3; //是否有键被按下
if(nP10 == 0 || nP11 == 0 || nP12 == 0 || nP13 == 0)
{ }
//有键被按下,进行键盘输入分析 nRes = KeyProcess();
else return -1; //没有输入,为干扰 return nRes;
其中,Delay()为延时程序,用于消除抖动,具体程序如下: void Delay() { }
26
int i;
for(i=100;i>0;i--); //延时一点时间即可
第3章 MSP430单片机的应用与编程
3.4.4 中断功能方式的程序设计
由于MSP430单片机的P1口有中断功能,因此可以采用中断的方式进行软件设计,采用中断方式实现的软件不需要扫描处理。另外,在端口的初始化时也有所不同,下面是端口初始化的具体程序。
void Init_Port(void) {
//将P1口的所有的管脚在初始化的时候设置为输入方式 P1DIR = 0;
//将P1口所有的管脚设置为一般I/O口 P1SEL = 0;
//将P1.4、P1.5、P1.6、P1.7设置为输出方向 P1DIR |= BIT4; P1DIR |= BIT5; P1DIR |= BIT6; P1DIR |= BIT7;
P1OUT = 0x00; //先输出低电平 P1IE = 0; //将中断寄存器清零 P1IES = 0; P1IFG =0;
//打开管脚的中断功能
//对应的管脚由高到低电平跳变是相应的标志置位 P1IE |= BIT0; P1IES |= BIT0; P1IE |= BIT1; P1IES |= BIT1; P1IE |= BIT2; P1IES |= BIT2; P1IE |= BIT3; P1IES |= BIT3;
27
燕山大学本科生毕业设计(论文)
}
_EINT();//打开中断 return;
上面的程序中增加了中断设置,并设置成低电平触发中断方式。由于使用中断功能,因此必须打开全局中断使能位。上面的“_EINT();”就是打开全局中断功能使能位。键盘的输入处理可以在P1口的中断服务程序中进行处理。下面为中断服务程序。
//处理来自端口1的中断
interrupt [PORT1_VECTOR] void PORT_ISR(void) { }
28
Delay(); //延时消抖 KeyProcess(); if(P1IFG & BIT0)
{ } { } { } { }
P1IFG &= ~(BIT3); //清除中断标志位
P1IFG &= ~(BIT2); //清除中断标志位 P1IFG &= ~(BIT1); //清除中断标志位 P1IFG &= ~(BIT0); //清除中断标志位
if(P1IFG & BIT1)
if(P1IFG & BIT2)
if(P1IFG & BIT3)
第3章 MSP430单片机的应用与编程
3.5 MSP430与1602液晶显示接口电路实验
3.5.1 LCD1602的基本特征
◆单5V电源电压,低功耗、长寿命、高可靠性
◆内置192种字符(160个5×7点阵字符和32个5×10点阵字符)
◆具有64个字节的自定义字符RAM,可自定义8个5×8点阵字符或四个5×11点阵字符
◆显示方式:STN、半透、正显 ◆驱动方式:1/16DUTY,1/5BIAS ◆视角方向:6点 ◆背光方式:底部LED
◆通讯方式:4位或8位并口可选
◆标准的接口特性,适配MC51和M6800系列MPU的操作时序。
3.5.2 LCD1602的引脚定义
表3-1 LCD1602的引脚定义 管脚号 1 2 3 符号 Vss Vdd V0 功能 电源地(GND) 电源电压(+5V) LCD驱动电压(可调) 寄存器选择输入端,RS=0,当MPU进行写模块操作,指向4 RS 指令寄存器,当MPU进行读模块操作,指向地址计数器;RS=1,无论进行读操作或写操作,均指向数据寄存器; 5 6 7~14 15 16 R/W E 读写控制输入端,输入MPU选择读/写模块操作信号:R/W=0,读操作;R/W=1,写操作。 使能信号输入端,输入MPU读/写操作的使能信号,读操作时,高电平有效,写操作时,下降沿有效。 DB0~DB7 数据输入输出口 A K 背光的正端(+5V) 背光的负端(0V) 29
燕山大学本科生毕业设计(论文)
3.5.3 LCD1602的操作时序
⒈写操作时序如图3-10所示。
图3-10 1602写操作时序
写指令:输入:RS=L,R/W=L,D0~D7=指令码,E=高脉冲
输出:无
写数据:输入:RS=H,R/W=L,D0~D7=数据,E=高脉冲
输出:无 ⒉读操作时序如图3-11所示。
图3-11 1602读操作时序
读状态:输入:RS=L,R/W=H,E=H 读数据:输入:RS=H,R/W=H,E=H
输出:D0~D7=状态字 输出:D0~D7=数据
3.5.4 LCD1602硬件电路设计
如图3-12所示,为MSP430与LCD1602的接口 电路图,连接电路比较简单,使用P4口作为数 据传输接口,使用P3.0、P3.1、P3.2作为液晶 控制接口。
图3-12 液晶硬件连接图
30
第3章 MSP430单片机的应用与编程
3.5.5 LCD1602控制说明
⒈状态字说明
STA0~STA6=D0~D7 当前数据地址指针的数值 STA7
读写操作使能(1:禁止,0:允许)
⒉显示模式设置
指令码:0x38
功能:设置16×2显示,5×7点阵,8位数据接口
⒊显示开/关及光标设置
指令码:00001DCB(8位二进制码)
D=1 开显示;D=0 关显示;C=1 显示光标;C=0 不显示光标 B=1 光标闪烁;B=0 光标不显示
N=1 当读或写一个字符后地址指针加1,且光标加1 N=0 当读或写一个字符后地址指针减1,且光标减1 S=1 当写一个字符,整屏显示左移(N=1)或右移(N=0) S=0 当写一个字符,整屏显示不移动
指令码:000001NS
3.5.6 软件程序设计
了解了1602的操作时序与指令,将电路连接后,下面开始程序的编写。 ⒈首先,为了方便程序的书写,我们先对接口进行一下宏定义,这样使得程序易读且清晰。
#define DataDir P4DIR //数据方向选择 #define DataPort P4OUT #define Busy
0x80
#define CtrlDir P3DIR
#define CLR_RS P3OUT&=~BIT0; //RS = P3.0 #define SET_RS P3OUT|=BIT0;
#define CLR_RW P3OUT&=~BIT1; //RW = P3.1 #define SET_RW P3OUT|=BIT1;
#define CLR_EN P3OUT&=~BIT2; //EN = P3.2
31
燕山大学本科生毕业设计(论文)
#define SET_EN P3OUT|=BIT2; ⒉向液晶显示的当前地址写入显示数据
void LcdWriteData( uchar data ) //data为要显示的数据 {
WaitForEnable(); //等待液晶不忙 SET_RS; CLR_RW; _NOP();
DataPort = data; //将显示数据写入数据端口 _NOP();
SET_EN; //产生使能脉冲信号 _NOP(); _NOP(); CLR_EN; }
⒊向液晶模块写入命令
void LcdWriteCommand(uchar cmd,uchar chk) {
if (chk) WaitForEnable(); // 检测忙信号? CLR_RS; CLR_RW; _NOP();
DataPort = cmd; //将命令字写入数据端口 _NOP(); _NOP(); _NOP(); CLR_EN; }
32
SET_EN; //产生使能脉冲信号
第3章 MSP430单片机的应用与编程
⒋1602的初始化
void LcdInit(void) {
CtrlDir |= 0x07; //控制线端口设为输出状态 DataDir = 0xFF; //数据端口设为输出状态 LcdWriteCommand(0x38, 0); Delay5ms();
LcdWriteCommand(0x38, 0); Delay5ms();
LcdWriteCommand(0x38, 0); Delay5ms();
LcdWriteCommand(0x38, 1); LcdWriteCommand(0x08, 1); LcdWriteCommand(0x01, 1); LcdWriteCommand(0x06, 1); LcdWriteCommand(0x0c, 1); }
//显示模式设置 //显示关闭
//写字符时整体不移动 //显示开,不开游标,不闪烁
//规定的复位操作
//显示清屏
3.6 本章小结
本章中主要围绕MSP430单片机开展模块化学习及设计,在课题的设计中需要使用定时器对红外信号进行解码,使用键盘对解码所得的数据进行进一步的操作与处理,LCD1602实现红外信号的键值显示。所以在本章中,详细讲述了课题设计所需的理论基础,以及实现了课题模块化设计,为下一步的整合,做好了准备。
33
燕山大学本科生毕业设计(论文)
34
第4章 红外遥控器软件设计与编程
第4章 红外遥控器软件设计与编程
4.1 红外数据的解码与存储
由第二章所知,红外接收头接收的红外数据是由一个前导码和32位的二进制数据码组成,解码的关键是区分“0”和“1”,下面介绍红外解码的程序设计。
4.1.1 红外数据解码实验
1. 检测红外数据
课题所选用的红外遥控器如图4-1所示。
将红外一体接收头连接到示波器上,检测到的红外数据波形如图4-2所示。
图4-2显示的是一组完整的红外数据码,它是由前导码、用户码、用户反码、键码和键值反码组成的。用户码、用户反码、键码和键值反码都是由8位二进制码组成的。接收的的红外数据电平和红外发射端电平相反,如图4-2所示。
图4-1 红外遥控器 图4-2 一组完成的红外数据码
35
燕山大学本科生毕业设计(论文)
其中前导码是由9 ms的低电平和4.5 ms的高电平组成的,如图4-3所示。
图4-3 前导码显示
32位数据码显示如图4-4所示,可以看出,数据码中“0”与“1”都是由0.56 ms的低电平开始,不同的是高电平的宽度。
图4-4 数据码显示
2. 红外解码程序设计
接收红外数据,首先要判断出前导码,有波形可知,前导码是由9 ms的低电平和4.5 ms的高电平组成,可以使引脚等待低电平信号,当有低电平信号到来时,开启定时器,获得低电平的宽度,如果低电平宽度8.5 ms
36
第4章 红外遥控器软件设计与编程
到9.5 ms之间,则开启定时器获取高电平宽度,如果高电平宽度在4 ms到5 ms之间,则判断为数据前导码,开始接收数据,在由于数据中“0”和“1”不同的是高电平的宽度,所以可以利用定时器计算高电平的宽度,从而得出收到的是“0”还是“1”,程序流程图如图4-5所示:
开始等待低电平信号(即红外信号)开启定时器,获取低电平宽度No低电平宽度在8.5ms到9.5ms之间Yes开启定时器获取高电平宽度高电平宽度在4ms到5ms之间Yesi=0(i表示数据个数)j=0(j表示8位二进制数据的位数)YESNONO开启定时器,获得低电平宽度低电平宽度在0.2ms到0.8ms之间NOYES开启定时器,获取高电平宽度高电平宽度在0.2ms到2ms之间YES数据的第j位为1j++j<8NOi++i<4NO结束YES
图4-5 红外解码程序流程图
4.1.2 红外数据解码的1602键值显示
对红外数据解码后,存储在RAM中,然后使用1602显示出来,实验测试如图4-6所示。可以看出前两组数据互为反码,后两组数据也是反码关系。其中,后两组数据按键不同,数值不同,而前两组是不变的,因为实验
37
燕山大学本科生毕业设计(论文)
用的遥控器是针对特定电器设计的,用户码已经固定,不可改变。
图4-6 红外键码显示
4.2 红外数据的调制与发射
解出的红外数据首先要经过38 kHz载波调制,然后通过红外发光二极管发射出去,所以,首先要产生38 kHz载波信号。
4.2.1 38KHz载波实验
在这里,采用的软件方法获得38 kHz波形。如图4-7是波形测试。红外载波信号在38 kHz—40 kHz即可。测试信号是39 kHz,符合要求。
图4-7 载波波形显示
4.2.2 PWM信号测试
1.前导码波形测试
红外发送时,前导码是由9 ms的高电平和4.5 ms的低电平组成的,即是周期位13.5 ms,占空比为2:3的方波信号,使用定时器产生PWM信号
38
第4章 红外遥控器软件设计与编程
生成,测试波形如图4-8所示:
图4-8 前导码波形调试
2.数据“0”波形测试。
数据“0”是由0.56ms的高电平与0.565ms的低电平组成,即周期是1.125ms,占空比近1:2的方波,测试波形如图4-9所示:
图4-9 数据“0”波形调试
3.数据“1”波形测试。
数据“0”是由0.56 ms的高电平与1.69 ms的低电平组成,即周期是2.25ms,占空比近1:2的方波,测试波形如图4-10所示:
39
燕山大学本科生毕业设计(论文)
图4-10 数据“1”波形测试
4.3 红外遥控器的键盘控制与整体功能实现
使用键盘可以对红外数据解码进行选择性存储,以及存储数据的清除与键值的初始化等操作,实验结果如图4-11所示:
a) 初始化等待红外信号
b) 保存键值数据
c) 取消存储数据
40