单片机空调遥控器设计计划书.doc_第1页
单片机空调遥控器设计计划书.doc_第2页
单片机空调遥控器设计计划书.doc_第3页
单片机空调遥控器设计计划书.doc_第4页
单片机空调遥控器设计计划书.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机空调遥控器设计计划书1绪论随着社会经济的发展,空调器已经成为现代家庭中不可缺少的家电设备,因此空调遥控器也就成为日常生活中常用的遥控设备之一。目前,红外遥控一直是遥控器设计采用的主要方式之一,它具有体积小,重量轻,简单易用等特点,完全可以满足用户需要。本文的空调遥控器设计,采用的是中颖电子公司生产的SH6614单片机。这款单片机具有8位I/O输出口,可以作为键盘扫描电路的端口;系统的PA1和PA2可以作为声音发生器,对其进行编程则可以产生红外发射常用的38K载波,满足红外发射的需要;该款单片机还自带LCD输出端口,可以对LCD 进行有效驱动,无需外加辅助电路;系统提供的双晶振结构可以对系统时钟进行切换,从而实现空调遥控器的节能设计。空调遥控器的显示界面采用由用户定义笔画的定制LCD,键盘采用34矩阵键盘,不仅可以满足用户需求,而且能够很好的与单片机进行协调工作。因此,这款单片机和选择的外围设备能够很好的满足空调遥控器的设计要求。本文从第二章开始介绍了空调遥控器的设计过程。第二章对空调遥控器的技术要求进行了说明,技术参数是用户的要求,也是设计者进行设计的依据,只有认真研究技术参数才能设计出满足用户要求的产品。第三章对空调遥控器的硬件设计进行了详细的论述,对每一部分首先从一般原理上进行了研究,然后根据设计要求提出了设计方案。第四章对空调遥控器的软件设计进行了必要的说明,给出了详细的软件流程图并对关键部分进行了阐述。第五章描述了系统仿真和调试过程。2空调遥控器设计技术要求本章主要阐述了空调遥控器的设计任务,包括要求完成的功能,系统不同工作模式的说明,系统要求的编码规范和发射波形规范等,这就为空调遥控器的总体设计做出规定,为设计工作提出了基本要求。2.1功能要求空调遥控器是以单片机为核心,由键盘接收用户命令,通过发射编码对空调进行操作并用LCD对当前状态进行显示,无操作状态下系统进入低功耗模式。功能有:1. 自动、制冷、制热、抽湿模式设定2. 十二小时预约开机或关机功能3. 温度设定范围:17C-32C4. 低、中、高、自动四档风速设定2.2关键字说明2.2.1复位状态2.2.1.1首次装上电池、刚接通电源,遥控器进入的状态称为复位状态。进入复位状态后,液晶显示屏全部笔画点亮两秒钟,然后关闭全部笔画,显示默认设置状态。遥控器的默认设置状态如下:l 功能选择“模式” - 自动模式区显示自动图标l 温度选择“温度” - 24温度区显示“24”字样l 风速选择“风速” - 自动风速区显示自动图标l 风向选择“风向” - 自动 风向区显示自动图标2.2.1.2复位后遥控器处在关机状态,即液晶显示器不显示任何信息。2.2.1.3复位后,无定时开机或关机信息。若调整定时开、关时间,则第一次显示时,定时开、关时间均为0.5小时。2.2.2开机状态开机状态下,运行模式、风速、设定温度、定时开/关等信息在液晶相应区域显示,并可调整。每次有效的按键操作,均有相应的信息编码以红外形式发射。2.2.3发射指示发射指示图标是用来表示正在发射信号的符号。当有信号发射时,发射指示点亮时间与实际发码时间相等。2.2.4省电模式当无按键输入五秒以后, 系统进入省电模式,减少遥控器功耗。2.2.5正常运行模式当芯片处于省电模式中,如果有按键输入,芯片将退出省电模式,进入正常运行。 2.2.6定时设定模式定时开:按“定时开”,进入定时开调整。LCD中显示“定时开”符号,并且初次显示为0.5小时。定时关:按“定时关”进入定时关调整。LCD中显示“定时关”符号,并且初次显示为0.5小时。在定时调整期间内,如果连续五秒没有键按下,则退出定时设置模式,定时显示熄灭,遥控器处于进入此次定时设置前的状态。2.3编码规范2.3.1编码格式:每次发码奖包含所有信息的编码发出。 L,A,A,B,B,C,C,D,D,E,E 2.3.1.1第一帧与第二帧相同2.3.1.2 L为引导码,S为分隔码,A为认别码(A=11110000=F0),A为A的反码,B为B的反码,C为C的反码2.3.1.3 B,C,D,E代表的含义:表2-1 B,C编码含义Table 2-1 B,C code defineBCB7 B6 B5 B4B3 B2 B1 B0C7 C6 C5 C4C3 C2 C1 C0开/关机模式温度风速见表2-3见表2-4见表2-5见表2-6表2-2 D,E编码含义Table 2-2 D,E code defineDED7 D6 D5 D4D3 D2 D1 D0E7 E6 E5 E4E3 E2 E1 E0定时开小时定时开分钟定时关小时定时关分钟见表2-7见表2-8见表2-7见表2-8表2-3 开/关机编码Table 2-3 Open/Close code开/关机 B7 B6 B5 B4开 机 0 0 0 0关 机 1 1 1 1表2-4 模式编码Table 2-4 Mode code模 式 B3 B2 B1 B0自 动 1 0 0 0制 热 0 0 0 1抽 湿 0 0 1 0制 冷 0 1 0 0表2-5 温度编码Table 2-5 Temperature code温 度 C7 C6 C5 C417C 0 0 0 018C 0 0 0 119C 0 0 1 020C 0 0 1 121C 0 1 0 022C 0 1 0 123C 0 1 1 024C 0 1 1 125C 1 0 0 026C 1 0 0 127C 1 0 1 028C 1 0 1 129C 1 1 0 030C 1 1 0 131C 1 1 1 032C 1 1 1 1表2-6 风速编码Table 2-6 Wind code风 速 B7 B6 B5 B4自 动 1 0 0 0低 风 0 0 0 1中 风 0 0 1 0高 风 0 1 0 0表2-7 定时时间小时编码Table 2-7 Hour code for set time小时 7 6 5 40 0 0 0 01 0 0 0 12 0 0 1 03 0 0 1 14 0 1 0 05 0 1 0 16 0 1 1 07 0 1 1 18 1 0 0 09 1 0 0 110 1 0 1 011 1 0 1 112 1 1 0 0无定时信息 1 1 1 1表2-8 定时时间分钟编码Table 2-8 Minute code for set time分钟 3 2 1 030分钟 1 1 1 10分钟 0 0 0 02.4波形规范在红外发射中只有发码和不发码两种状态,于是我们用这两种状态的不同长短组合作为特定意义的编码,实现红外发射。各种编码定义如下:2.4.1引导码:L5.6ms11.2ms2.4.2两帧之间分隔符:S0.56ms5.04ms5.6ms2.4.3数据“0”0.56ms0.56ms2.4.4数据“1”0.56ms1.68ms 设计任务书是由提出设计要求的部门提供的,其中对设计工作的基本要求做了规范,设计人员应该以此为基础,并在此基础上提出自己的设计方案完成要求。3空调遥控器硬件设计本章主要阐述了空调遥控器硬件设计,包括单片机的选型、红外发射电路设计、LCD驱动电路设计、键盘扫描电路设计和系统双时钟设计,详细阐述了各部分的基本原理和设计过程。单片机LCD键盘扫描电路红外发射电路双时钟电路图3-1 空调遥控器硬件设计框图空调遥控器硬件设计框图如图3-1: Fig.3-1 Block diagram for air-condition remote controllers hardware design3.1 单片机选型空调遥控器使用的单片机应该满足LCD驱动,键盘扫描,红外发射和系统低功耗设计。中颖电子的SH66xx系列4位单片机是精简指令集单片机,所有指令具有相同指令周期,具有速度快,功耗低,抗干扰能力强,结构简单易用,性价比高等特点。SH6614是其中的一款具有双晶振及液晶驱动功能的单片机, 经过编程PA1口可以发出38K载波供红外遥控发码时使用,I/O口PA和PB可作为键盘接口,因此完全满足空调遥控器设计。它的基本功能如下: 程序存储器(ROM): 409616 数据存储器(RAM): 5124 输入输出口:8个 液晶驱动:308或344 其中Segment 1-30可以设置成输出口 中断源:4个 定时器:2个8位 内置双通道可编程声音发生器(PSG) 高低频两组振荡器 另外,中颖电子亦可提供SH6614的OTP版本的产品SH66P14,这样, 对于小量试生产或交货周期短的空调遥控器可以采用SH66P14 进行生产,由于SH6614同SH66P14有很好的一致性.。因此如果生产稳定或遇到成本压力时即可顺利转为掩膜版的SH6614。SH6614的功能框图和引脚图如图3-2和3-3。 图3-2 SH6614功能框图 Fig.3-2 Block diagram for SH6614s function图3-3 SH6614引脚图 Fig.3-3 Pins diagram for SH6614表3-1 SH6614单片机各引脚定义Table 3-1 Pins define for SH6614 MCU引脚功能OSCO,OSCI低频晶振32.768KHzOSCXO,OSCXI高频晶振4MHz/RESET重启动SEG1SEG12LCD的SEGMENT脚COM1COM8LCD的COM脚VCC电源脚GND电源地脚PA1红外输出脚PB0PB3键盘读入脚PA0、PA1、PA3键盘输出脚3.2 红外发射电路设计3.2.1红外遥控基本原理3.2.1.1概述人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.620.76m;紫光的波长范围为0.380.46m。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线,红外线遥控就是利用波长为0.761.5m之间的近红外线来传送控制信号的。常用的红外遥控系统一般分发射和接收两个部分。发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。目前大量使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通发光二极管相同,只是颜色不同。接收部分的红外接收管是一种光敏二极管。在实际应用中要给红外接收二极管加反向偏压,它才能正常工作,亦即红外接收二极管在电路中应用时是反向运用,这样才能获得较高的灵敏度。红外接收二极管一般有圆形和方形两种。红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz1237.9 kHz38kHz。也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射端晶振的振荡频率来决定。多路控制的红外发射部分一般有许多按键,代表不同的控制功能。当发射端按下某一按键时,相应地在接收端有不同的输出状态。接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。“电平”输出是指发射端按下键时,接收端对应输出端输出“有效电平”,发射端松开键时,接收端“有效电平”消失。此处的“有效脉冲”和“有效电平”,可能是高、也可能是低,取决于相应输出脚的静态状况,如静态时为低,则“高”为有效;如静态时为高,则“低”为有效。大多数情况下“高”为有效。“自锁”输出是指发射端每按一次某一个键,接收端对应输出端改变一次状态,即原来为高电平变为低电平,原来为低电平变为高电平。此种输出适合用作电源开关、静音控制等。有时亦称这种输出形式为“反相”。“互锁”输出是指多个输出互相清除,在同一时间内只有一个输出有效。电视机的选台就属此种情况,其它如调光、调速、音响的输入选择等。“数据”输出是指把一些发射键编上号码,利用接收端的几个输出形成一个二进制数,来代表不同的按键输入,这种输出形式一般用于与单片机或微机接口。 本文介绍的空调遥控器设计就是采用这种编码。3.2.1.2遥控指令编码规律遥控器所发送的功能指令码一般采用多位二进制串行码,例如某彩色电视的红外遥控码,其编码规律为:头脉冲、系统码、资料码、资料反码和结束位。头脉冲用做一帧命令的起始位;系统码用于区别不同类的电器;资料码用于完成命令功能;资料反码是将资料码按位取反的码。每次进行发送都是先发送脉宽4510us、周期2*4510us的头脉冲,然后连续发送两次系统码、接着发送资料码及资料反码、最后发送结束位,波形见图3-4。 图3-4遥控指令编码图Fig.3-4 Diagram for remote control instruction code3.2.1.3数据脉冲编码 红外通讯数据采用脉冲编码,所谓脉冲编码,就是将每位数据信号用一个脉冲来表示。例如红外编码以脉宽561us、周期4*561us代表“1”;以脉宽561us、周期2*561us代表“0”。脉冲信号都调制在占空比为1/3,频率为38kHz的载波上再发送出去,调制后的信号“1”和“0”如图3-5所示。这样做有两点好处:第一,减少了有效的发射时间,有利于降低平均功耗,这对于采用干电池供电的发射器十分重要;第二,外部干扰信号多为缓变信号,有利于抗干扰。图3-5信号1和0Fig.3-5 Signal 1 and 03.1.2.4程序设计流程图 红外发射程序流程图如图3-6所示。图3-6程序流程图Fig.3-6 Program flow chat 3.2.2红外发射电路常用的红外发光二极管(如SE303PH303),其外形和发光二极管LED相似,发出红外光(近红外线约0.93m )。管压降约1.4V ,工作电流一般小于20mA。为了适应不同的工作电压,回路中常串有限流电阻。发射红外线去控制相应的受控装置时,其控制的距离与发射功率成正比。为了增加红外线的控制距离,红外发光二极管工作于脉冲状态,因为脉动光(调制光)的有效传送距离与脉冲的峰值电流成正比,只需尽量提高峰值电流 ,就能增加红外光的发射距离。提高峰值电流的方法,是减小脉冲占空比,即压缩脉冲的宽度。减小冲占空比还可使小功率红外发光二极管的发射距离大大增加。要使红外发光二极管产生调制光,只需在驱动管上加上一定频率的脉冲电压。红外发射电路如图3-7所示。 图3-7 红外发射电路 Fig.3-7 Infrared sending circuit 3.3 LCD驱动电路设计3.3.1 LCD基本原理LCD(Liquid Crystal Digit)具有耗电低,驱动电压低,结构空间小而有效显示面积大、体薄物轻等优点,在各类电子产品中得到广泛应用。LCD的基本结构及工作原理:液晶显示器的结构如图3-8所示:上偏振片液晶材料电极上电极基板下电极基板封接剂反射板图3-8 液晶显示器基本结构 Fig.3-8 Configuration of LCD Fig.3-8 Basic configuration of LCD display制热温度指示定时关制冷抽湿自动风速在上、下两层电极之间封入向列型液晶材料,液晶分子平行排列,上、下扭曲90,在无外部电压状态下,外部入射光通过上偏振片后形成偏振光,该偏振光通过平行排列的液晶材料后备旋转90,再通过与上偏振片垂直的下偏振片,被反射板反射回来,呈透明状态;当上、下电极加上一定的电压后,电极部分的液晶分子转成垂直排列,失去旋光性,从上偏振片入射的偏振光不被旋转,光无法通过下偏振片返回,因而呈黑色。根据需要将电极做成各种文字、数字、图形,就可以获得各种状态显示。显示内容由引脚端和公共端共同决定,在应用时,只要给相应引脚端写入信号,即可显示,LCD内部自带刷新电路,不必重复写入。本文的空调遥控器设计中采用的是由厂家定制的一款LCD,LCD的面板和引脚定义如图3-9和表3-2。 C 定时开 图3-9 LCD面板图 Fig.3-9 Surface diagram of LCD 表3-2对LCD的引脚定义进行了说明。设计中把SH6614设定为8个公共端,30个LCD引脚输出。如表中所示,SEG1和COM1-COM4共同定义了“模式”笔画,在程序中将其定义为SEG11L;SEG2和COM1-COM4共同定义了“风速”笔画,在程序中将起定义为SEG12L;其它可以以此类推。数码显示-用作温度和定时时间的显示,分别由SEG3-SEG12与COM1-COM8来定义。表3-2 LCD引脚定义Table 3-2 Define of LCDs pinsSEGLCDCOM4COM3COM2COM1SEG11LSEG1AutoWarmDryCoolSEG12LSEG2AutoLwindMwindHwindSEG1LSEG31.d1.c1.b1.aSEG2LSEG42.d2.c2.b2.aSEG3LSEG53.d3.c3.b3.aSEG4LSEG64.d4.c4.b4.aSEG5LSEG75.d5.c5.b5.aSEG6LSEG86.d6.c6.b6.aSEG7LSEG97d7.c7.b7.aSEG8LSEG108d8.c8.b8.aSEG9LSEG119.d9.c9.b9.aSEG10LSEG1210.d10.c10.b10.aSEGLCDCOM8COM7COM6COM5SEG11HSEG13Pic-wCCodeSEG12HSEG14Timeo:TimecSEG1HSEG151.g1.f1.eSEG2HSEG162.g2.f2.eSEG3HSEG173.g3.f3.eSEG4HSEG184.g4.f4.eSEG5HSEG195.g5.f5.eSEG6HSEG206.g6.f6.eSEG7HSEG217.g7.f7.eSEG8HSEG228.g8.f8.eSEG9HSEG239.g9.f9.eSEG10HSEG2410.g10.f10.e3.3.2 LCD驱动电路 SH6614单片机的LCD输出口可采用308或344两种方式,这里定义$15Bit0=0,则采用的是308,即:8个公共端,30个LCD输出引脚。这里24-36引脚的LCD输出端,即SEG1-SEG12,LCD驱动电路如图3-10所示。图3-10 LCD驱动电路图 Fig.3-10 LCD drive circuit3.4 键盘扫描电路设计3.4.1键盘基本原理键盘系统一般分为非编码式键盘和编码式键盘,这里只讨论非编码式键盘。1.键盘电路结构由若干个按键组成的键盘,其电路结构可分为独立键结构和矩阵键盘结构。独立按键结构每个键单独占用一根I/O口线,每根I/O口线上的安键工作状态不会影响其他I/O口线上的状态。矩阵键盘结构按键排列为行列式矩阵结构,也称行列式键盘结构。如4行4列共16个键,只占用8根I/O口线,故键数目较多时可节省I/O口线,但这种结构的软件较繁。本文的空调遥控器设计就是采用34矩阵式键盘。2.键盘工作方式在无按键操作时,通常CPU在执行其他任务,只在有按键操作时才根据闭合键执行相应的键处理任务。键盘的工作方式可分为编程控制方式和中断控制方式。CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序。经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。这种方式为编程扫描方式。有时在正常工作中,并不会经常进行键操作,因而编程控制方式使CPU经常处于空查询状态。在CPU工作任务十分繁重的情况下,为提高CPU的效率,可采用中断控制方式。只要有按键按下,便向CPU相应中断后,在中断服务程序中进行键盘扫描、查键值与键处理等工作。3.设计要点非编码键盘系统基本任务如下:l 监测有无键按下;l 判断是哪个键按下;l 完成键处理任务。为快速可靠的实现按处理任务,还应从电路或软件角度妥善解决如下问题。l 消除键抖动影响键触点的闭合或断开瞬间,由于机械触点的弹性作用,会产生短暂的抖动现象,其抖动时间长短与其机械特性有关,一般约为5-10ms,抖动过程引起电平信号的波动,有可能令CPU误解为多次按键操作,而引起误处理。消除键抖动影响的颖键方法是每个键增加一个R-S触发器,这种方法只适用于键数目较少的情况。若键数目较多,通常采用软件延时的方法:当监测到有键按下时,调用一个延时(一般5-20)子程序,然后在此监测到该键电平仍为闭合状态,才确认该键已按下,并进行相应处理工作。这种消除键抖动影响的软件措施是切实可行的。l 采取串键保护措施串键是指同时有一个以上的键按下。串键会引起为机的错误相应。通常用软件提供串键保护。当判断是一个以上的键被按下,则返回重新进行监测。只有当监测到只有一个键被按下时,才去查键号、执行相应键处理工作。为了防止误操作的不良影响,应从软件设计的角度着手设置保护。对于某些设定参数的键,如果参数存在上、下限值要求,可采取软件限幅措施。对于某些参数若存在非法数值,可由软件判断,必要时予以拒绝接收。4.键盘扫描技术键盘扫描技术可分为行扫描法、线反转法、状态矩阵法,这里仅简单介绍下面将要用到的行扫描法。行扫描法是在确认有键闭合之后,逐行(或逐列)置低电平,并读入列(或行)状态,如果出现非全1状态,那么0状态的行、列交叉点就是被按下键。例如,4行4列键盘,首先只使第一行为“0”电平,其余各行为“1”电平,然后读入列状态,在进行键盘去抖动处理后再次读入列状态,比较两次读入结果,如果相同则可确认按下有效键,并到键盘状态表中查找与已经储存信息相吻合的键值,然后进入相应的键盘处理程序。3.4.2键盘扫描电路3.4.2.1键盘扫描电路如图3-11所示。图3-11 键盘扫描电路 Fig.3-11 Key board scan circuit图中用PA0、PA2、PA3和PB0、PB1、PB2、PB3组成34矩阵键盘。其中K1-K10为定义的按键,它们分别为:开机、关机、模式、温度、风速、温度+、温度-、定时开、定时关、小时、分钟,按下按键则进入相应操作,具体含义和操作步骤可以参看空调遥控器按键功能设计,K11和K12在系统中没有定义,可以在以后修改设计增加功能时使用,在制作线路板时做出但不必做按键。3.4.2.2 空调遥控器按键功能设计1 ON键在关机状态下,按一下此键,发射指示点亮,LCD有显示,遥控器进入开机状态,同时把当前设定的运行模式、温度值、风速、定时等信息按编码规范的要求,发射信息。2 OFF键在开机状态下,按一下此键,发射指示点亮一次,LCD熄灭,同时发射关机信息。若已设定了定时开机、定时关机,遥控器进入关机状态之前,先取消以上两种设定状态,然后发射关机信息。3 MODE键在开机状态下,每按一次此键,液晶屏的模式区显示相应的模式,发射指示点亮一次,同时把当前设定的运行模式、温度值、风速、定时等信息以红外编码方式发射出去。运行模式按如下顺序循环切换:自动、制冷、抽湿、制热4 “+”/“-”键4.1在开机状态下,每按一次调整“+”键,设定温度递增一度,并发射相应的红外信息。当温度增至32C,即使继续按此键,设定温度亦不再增加,但有信号发射。4.2在开机状态下,每按一次调整“-”键,设定温度递减一度,并发射相应的红外信息。当温度增至17C,即使继续按此键,设定温度亦不再减少,但有信号发射。高风自动中风低风 5 定时开、定时关键按定时开,进入定时开设定,定时开符号显示,然后按小时、分钟键调整时间,定时关与此相同。6 小时、分钟键按相应键,进入响应时间调整,只在定时开/定时关时有效。小时键每次增加1小时,1-12小时循环;分钟键每次改变30分钟。3.5 系统双时钟设计SH6614单片机内部集成了双时钟,这就为空调遥控器的节能设计提供了方便,在没有编码发射时系统采用32.768K晶振,维持系统的运行,在长期(超过5m)没有按键和发码操作则系统暂停工作,进一步节省能源;当有效按键按下有编码发射时,系统时钟切换到455K,利用单片机中的PSG产生38K载波,发射红外编码。系统时钟电路如图3-12所示。图3-12 时钟电路 Fig.3-12 Clock circuit3.6 空调遥控器硬件电路图 综合前面各硬件电路功能模块的设计,图3-13给出了空调要起硬件设计电路图。 图3-13 空调遥控器硬件电路图 Fig.3-13 Hardware circuit diagram for air-condition remote controller 空调遥控器的硬件设计,严格按照任务书的要求,进行了单片机的选型,并以单片机为基础进行了红外发射电路、键盘扫描电路和LCD驱动电路的设计,还针对空调遥控器通常为干电池供电的特点,在硬件电路中采用了双时钟,既满足了发码时的要求,又满足了无编码发射时的低功耗设计,同时为软件的低功耗设计奠定了基础。4空调遥控器软件设计本章给出了软件设计的总流程图和各主要功能模块的流程图,并进行了详细的说明,对主要部分还给出了源程序,并对SH6614单片机软件开发进行了必要说明。4.1 软件功能模块设计4.1.1.系统初始化程序设计初始化系统寄存器初始化用户寄存器图4-1 系统初始化程序框图Fig.4-1 Block diagram of system initialization program 系统初始化程序框图如图4-1。初始化系统寄存器:这是上电之后进入的第一个程序模块,同时也是RESET进入的程序模块。在这个程序模块中,系统首先对系统寄存器进行了初始设置,包括:开中断,中断服务寄存器清零,TM0和BTM初始设置,定义PORTA为输入口、PORTB为输出口,定义PA1为38K载波红外发射口并对PSG进行红外发射初始化。主要源程序代码:LDIIE,00H;关中断LDIIRQ,00H;清中断服务寄存器LDITM0,00H;初始化TIMER0寄存器LDIT0L,00HLDIT0H,00HLDIBTM,00H;初始化BASE TIMER寄存器LDISPA,02H;设置PORTA为输入,PA1为输出LDISPB,0FH;设置PORTB为输出LDIOSCX,00H ;设置OSC为系统时钟LDISETLCD,02H;关闭LCD,LCD时钟为OSC/64LDISEGOUT,0CH;设置LCD为SEGMENT输出LDISETPORTS,0BH;设置PA1为红外输出端LDIPSG1L,0EH;设置PSG为红外发生器,38K载波LDIPSG1H,07HLDIPSG21A,00HLDIPSG22,00HLDIPSG23,00HLDIPSG24,00HLDIPSGCTR1,0CHLDIPSGCTR2,09H初始化用户寄存器:大部分用户寄存器初始值为00H,但也有少部分寄存器要设置初始值。例如模式和风速寄存器初始值设位自动,温度显示寄存器设为24C等,主要源程序代码如下:LDIMODE,08H;设置初始模式为自动LDIWIND,08H;设置初始风速为自动LDIDATA_1,02H;设置初始温度为24C,高位为02H清LCD满屏显示2s图4-2 清LCD和满屏显示程序框图Fig.4-2 Clear LCD and display all LCDfor 2sLDIDATA_2,04H;低位为04H4.1.2.LCD初始化程序设计LCD初始化程序包括清LCD和满屏显示2s程序。这里之所以把两个模块放在一起,是因为尽管在总的看来这是两个模块,但实际上这两个模块公用了大段程序,只是从不同的入口进入,而从相同的出口返回。主要源程序如下:CLOSE_ALL-LCD:LDITEMPT,00H;关闭所有LCD笔画JMPSETLCDDISPLAY_ALL_LCD:LDITEMPT,0FH;显示所有LCD笔画SETLCD:LDISETLCD,00H;打开LCDLDATEMPT36STASEG1L,06HSTASEG2L,06HSTASEG3L,06HSTASEG4L,06HSTASEG5L,06HSTASEG6L,06HSTASEG7L,06HSTASEG8L,06HSTASEG9L,06HSTASEG10L,06HSTASEG11L,06HSTASEG12L,06HSTASEG1H,06HSTASEG2H,06HSTASEG3H,06HSTASEG4H,06HSTASEG5H,06HSTASEG6H,06HSTASEG7H,06HSTASEG8H,06HSTASEG9H,06HSTASEG10H,06HSTASEG11H,06HSTASEG12H,06HRTN延时子程序采用的是软件延时,并在入口处设置延长时间,每次只要设置PARM,就可以延长不同倍数的子程序时间,主要代码如下:DELAY:SBIMPARM,01H;判断PARM值是否大于0BC$+2RTNI;回到主程序LDICT2,0AHLDICT1,0FHLDICT0,0FHSBIMCT0,01HBC$-1SBIMCT1,01HBC$-4SBIMCT2,01HBC$-7JMPDELAY4.1.3.键盘扫描程序设计在这个程序中,PB0-PB3送出扫描码,PA0,PA2,PA3负责接收,可以从扫描码及接收码来判断哪一个键被按下,并将其值存储,然后转向键盘处理程序。键盘扫描程序如图4-3。A向PORTB置扫描码读取PORTA的值是否有键按下?再次读取PORTA的值延时20ms是否有键按下?两次是否相同?查表读取键值更新扫描码扫描完成?结束AYNYNYNBB图4-3 键盘扫描程序框图Fig.4-3 Block diagram ofkey board scanning源代码如下:KEYSCAN:LDIPORTA,0FH;置位PORTA高位LDIPROTB,0FH;置位PORTB高位LDIS_CODE,01H;置扫描码(第一个扫描码)SCAN:LDAS_CODE,00HSTAPORTB_B,00HEORIMPORTB_B,0FH;扫描码异或0FHSTAPORTB,00H;将扫描码输出到PORTBLDA PORTA,00H;从PORTA读键值STAKEY1,00H;判断是否有键按下SBIKEY1,0FHBAZNT_CODE;无键按下则跳转LDI PARM,3;去抖动处理CALLDELAYLDAPORTA,00H;再次读PORTA键值STAKEY2,00H;判断是否有键按下SBIKEY2,0FHBAZNT_CODE;无键按下则跳转LDAKEY1,00H;检查是否两键相同?SUBKEY2,00HBAZPAB1;有效按键则跳转到PAB1NT_CODE:LDAS_CODE,00H;扫描码左移一位ADDMS_CODE,00HBAZR_SAN32;如果扫描码为0,则结束程序JMPSCAN;再次扫描PAB1:LDIB_TBR,0FHLDIB_AC,00HPAB2:LDAB_TBR,00HSTATBR,00H;设置TJMP高位地址LDAB_AC,00H;得到TJMP低位地址CALL0700H;取得表格数据SUB KEY2,00H;检查表格数据是否相同BAZPAB3JMPADDAC1PAB3:LDATBR,00H;判断是否扫描码为此键SUBPORTB_B,00HBAZPAB4JMPADDAC1PAB4:LDAB_AC,00;保存键值STAKEY_NUM,00HLDIKEY_F,01HJMPR_SAN31ADDAC1:ADIMB_AC,01H;B_AC+1JMPPAB2R_SAN32:LDIKEY_NUM,00H;清除键值寄存器LDIKEY_F,00H;清除键值缓冲器R_SAN31:RTNI4.1.4.低高频转换程序设计低频转换到高频,在程序中应该先将高频打开,经过短暂时间后再切换,否则可能单片机不能得到马上相应而出错,高频转换到低频由相同原则。LOW_HIGH:LDI OSCX,01H;打开高频LDIPARM,01HCALLDELAYLDIOSCX,03H;切换到高频RTNI4.1.5.系统休眠程序设计调用键盘扫描程序后,如果没有有效按键,则启动定时器进行5s内是否有按键按下的判断。如果在定时中断之前有键按下,则重新进行键盘扫描;如果没有键按下,则进入HALT模式,使系统进入省电模式,当有按键按下则系统退出HALT模式重新进行键盘扫描。DELAY_5S:LDIIE,05HLDIIEQ,00HLDITM0,00HLDIT0L,0EHLDIT0H,0CHNOPNOPHALTINTB:RTNILDI IE,00HLDIIEQ,00HJMPCALL_KEYSCAN4.2 软件主流设计开始系统初始化清LCD满屏显示2s显示初始画面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论