基于PIC单片机的红外遥控设计本科设计

上传人:仙*** 文档编号:143315824 上传时间:2022-08-25 格式:DOC 页数:36 大小:327.50KB
返回 下载 相关 举报
基于PIC单片机的红外遥控设计本科设计_第1页
第1页 / 共36页
基于PIC单片机的红外遥控设计本科设计_第2页
第2页 / 共36页
基于PIC单片机的红外遥控设计本科设计_第3页
第3页 / 共36页
点击查看更多>>
资源描述
XXXX大学本科毕业设计基于PIC单片机的红外遥控设计学生姓名 所 在 系专业名称班 级学 号指引教师XXX大学教务处年 月基于PIC单片机的红外遥控设计学生: 指引教师:内容提纲:遥控器是现代电子控制系统的重要部件。可以运用无线电波、可见光、红外光、超声波作为传播介质远距离操控电子设备。由于其功耗低、可靠性高和互相干扰小等长处,已在现实生活中得到了广泛应用。在目前的家用电器中,如电视机、家庭影院和数字音像设备中,大多都采用了红外线遥控电路。而这套“基于PIC单片机的红外遥控设计”则是以Microchip公司生产的16F877a芯片为模版,价格低廉,电路构造简朴,据此本设计提出了一种简朴易行的红外遥控器的设计。核心词:PIC单片机 红外遥控 简朴易行PIC MCU-based infrared remote control designAbstract:The remote control of modern electronic control systems are an important component. Can make use of radio waves, visible light, infrared light, ultrasonic remote control as the transmission medium of electronic equipment. Because of its low power consumption, high reliability, and interfere with each other the advantages of small, have been in real life has been widely applied. In the current household appliances such as televisions, home theater and digital audio-visual equipment, most of them have adopted the infrared remote control circuit. This set of PIC-based single-chip design of the infrared remote control is based on Microchip produced chips for 16F877a template, cheap, simple circuit structure, whereby the design of a simple infrared remote control design. Key words:PIC Single-chip infrared remote control is simple一、前言(一)开发的背景自从18英国天文学家赫歇尔发现红外辐射至今,红外技术的发展经历了将近两个世纪。从那时开始,红外辐射和红外元件、部件的科学研究逐渐发展,但发展比较缓慢,直到1940年前后才真正浮现现代的红外技术。随着科技的不断发展,各系统间的联系越来越紧密,对各系统间的数据传递的规定也越来越高,但是外部设备越多,连接用的线也越多,短距离联接的发展必然要走向无线联机,目前重要的短距离无线连接技术有红外通信技术和蓝牙技术,前者采用红外线,后者采用无线电波作为信息传播的媒介。红外无线通讯的技术与蓝牙相比较,红外技术具有比较成熟,接口电路简朴,成本低等诸多长处。红外遥控是通过红外设备将单片机与外部设备联系起来进行通讯,实现系统间的无线通讯。自从红外技术浮现以来,美国、英国、前苏联等国竞相发展。特别是美国,大力研究红外技术在军事方面的应用。目前,美国将红外技术应用于单兵装备、装甲车辆、航空和航天的侦察监视、预警、跟踪以及武器制导等各个领域。 1993年,由二十多种大厂商发起成立了红外数据协会(IrDA),统一了红外通讯的原则,这就是目前被广泛使用的IrDA红外数据通讯合同及规范。IrDA专司制定和推动能共同使用的低成本红外数据互连原则,支持点对点的工作模式。由于原则的统一和应用的广泛,更多的公司开始开发和生产IrDA模块,技术的进步也使得IrDA模块的集成越来越高,体积也越来越小。IrDA1.0可支持最高115.2kbps的通信速率,而IrDA1.1可以支持的通信速率达到4Mbps。本课题是专业知识综合用于前沿科技的一种尝试,本人坚信本次研究和设计的成果具有一定的现实意义。(二)开发的目的本系统的基本任务和目的就是,通过红外发射电路的设计,实现单片机运用红外信号,通过发射电路与外界联系,实现对外的遥控控制,其中涉及了输入设备红外键盘,和红外传感器的使用。借助软件部分的设计,实现系统的总体功能,红外遥控。总的说来,完毕此设计重要有四个模块:发射及接受电路的设计;编码及解码程序;红外传感器的选用和使用;红外键盘的设计。(三)开发的思路 设计基于单片机的红外遥控,我们要从发射接受电路,编码解码,传感器,红外键盘几种方向入手。在软件部分中,我们重要是先要画好系统原理图,尚有明确系统各部分功能,发射接受电路的设计,编码及解码程序,在硬件部分中,重要是发射和接受电路的硬件设计,红外传感器的使用,以及红外键盘的设计。二、设计基本(一)PIC单片机的简介1PIC单片机常识据记录,国内的单片机年容量已达13亿片,且每年以大概16%的速度增长,但相对于世界市场国内的占有率还不到1%。这阐明单片机应用在国内才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。当今单片机厂商琳琅满目,产品性能各异。针对具体状况,我们应选何种型号呢?一方面,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC构造的单片机数据线和指令线分时复用,即所谓冯.诺伊曼构造。它的指令丰富,功能较强,但取指令和取数据不能同步进行,速度受限,价格亦高。采用RISC构造的单片机数据线和指令线分离,即所谓哈佛构造。这使得取指令和取数据可同步进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令涉及更多的解决信息,执行效率更高,速度亦更快。同步,这种单片机指令多为单字节,程序存储器的空间运用率大大提高,有助于实现超小型化。属于CISC构造的单片机有Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列等;属于RISC构造的有Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。一般来说,控制关系较简朴的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如通讯产品、工业控制系统应采用CISC单片机。但是,RISC单片机的迅速完善,使其佼佼者在控制关系复杂的场合也毫不逊色。根据程序存储方式的不同,单片机可分为EPROM、OTP(一次可编程)、QTP(掩膜)三种。国内一开始都采用ROMless型单片机(片内无ROM,需片外配EPROM),对单片机的普及起了很大作用,但这种强调接口的单片机无法广泛应用,甚至走入了误区。如单片机的应用一味强调接口,外接I/O及存储器,便失去了单片机的特色。目前单片机大都将程序存储体置于其内,给应用带来了极大的以便。2PIC单片机的特点和工作原理(1)PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,注重产品的性能与价格比,靠发展多种型号来满足不同层次的应用规定。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。例如,一种摩托车的点火器需要一种I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片机,投资大不说,使用起来也不以便。PIC系列从低到高有几十个型号,可以满足多种需要。其中,PIC12C508单片机仅有8个引脚,是世界上最小的单片机。(2)精简指令使其执行效率大为提高。PIC系列8位CMOS单片机具有独特的RISC构造,数据总线和指令总线分离的哈佛总线(Harvard)构造,使指令具有单字长的特性,且容许指令码的位数可多于8位的数据位数,这与老式的采用CISC构造的8位单片机相比,可以达到2:1的代码压缩,速度提高4倍。(3)产品上市零等待(Zero time to market)。采用PIC的低价OTP型芯片,可使单片机在其应用程序开发完毕后立虽然该产品上市。(4)PIC有优越开发环境。OTP单片机开发系统的实时性是一种重要的指标,象一般51单片机的开发系统大都采用高档型号仿真低档型号,其实时性不尽抱负。PIC在推出一款新型号的同步推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。就我个人的经验看,还没有浮现过仿真成果与实际运营成果不同的状况。(5)其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,不必光电耦合器隔离,给应用带来极大以便。(6)彻底的保密性。PIC以保密熔丝来保护代码,顾客在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。目前,PIC采用熔丝深埋工艺,恢复熔丝的也许性极小。(7)自带看门狗定期器,可以用来提高程序运营的可靠性。(8)睡眠和低功耗模式。虽然PIC在这方面已不能与新型的TIMSP430相比,但在大多数应用场合还是能满足需要的。3PIC单片机的分类初档8位单片机:PIC12C5XXX16C5X系列PIC16C5X系列是最早在市场上得到发展的系列,因其价格较低,且有较完善的开发手段,因此在国内应用最为广泛;而PIC12C5XX是世界第一种八脚低价位单片机可用于简朴的智能控制等某些对单片机体积规定较高的地方,前景十分广阔。中档8位单片机:PIC12C6XX/PIC16CXXX系列PIC中档产品是Microchip近年来重点发展的系列产品,品种最为丰富,其性能比低档产品有所提高,增长了中断功能,指令周期可达到200ns,带AD,内部E2PROM数据存储器,双时钟工作,比较输出,捕获输入,PWM输出,I2C和SPI接口,异步串行通讯(USART),模拟电压比较器及LCD驱动等等,其封装从8脚到68脚,可用于高、中、低档的电子产品设计中,价格适中,广泛应用在各类电子产品中高档8位单片机:PIC17CXX系列PIC17CXX是适合高档复杂系统开发的系列产品,其性能在中档位单片机的基本上增长了硬件乘法器,指令周期可达到160ns,它是目前世界上8位单片机中性价比最高的机种,可用于高、中档产品的开发,如马达控制(二)有关背景知识 116F877a基本知识(1)16F877a的基本架构单片机是中央解决单元(CPU),存储器(Memory)及输入/输出单元三大部分构成。其中CPU可分为两部分,即算术逻辑单元(ALU)及控制单元(CU),CPU通过总线(BUS)执行程式码的Fetch、Decode、算术逻辑运算及读写时钟信号的控制。存储器单元提供寄存程序与资料的空间,涉及只读存储器(ROM)和随机存取存储器(RAM)。而输入/输出单元提供与外界周边设备或元件的管道 ,如图一所示。 图1 单片机基本架构(2)PIC16F877a的特性阐明如下:采用高性能的RISC CPU核心8位微电脑控制芯片8K14Flash程序存储器5组I/O端口(A,B,C,D,E)368Bytes数据存储器及256Bytes的EEPROM数据存储器2组8位定期器TMR0,TMR2,及1组16位定期器TMR1支持14个中断解决(3)PIC16F877a单片机核心架构PIC16F877a单片机是RISC架构单片机,它所采用的Harvard构造和过去一般单片机所采用的Von Neumann构造最大的差别在于总线的变化,如图2所示。Von Neumann构造是老式的单片机构造,程序存储器和数据存储器是在同一种存储体区块,存储器与CPU之间只使用单一总线,不管是对程序存储器或数据存储器作存取都是使用此总线,因此要完毕一种指令一般必须依序使用总线,从指令的提取、解码、资料读取、执行到资料的写入,最后的成果是一种指令大都需要等待好几种周期才干完毕。Harvard构造改善了这样的缺陷,重要是程序存储器和数据存储器使用不同的存储体区块,并且也有各自独立的总线,这样的做法就大大改善了指令执行的频宽,两条总线可以同步工作,最大的长处是当一种指令在执行时,已经可以去抓下一种指令,因此对于运作的效率会有明显的提高。 图2 Harvard架构与Von Neumann架构比较(4)存储器基本知识 PIC16F877a单片机共有3个存储器块,它们是程序存储器,数据存储器,EEPROM数据存储器。程序存储器和数据存储器有它自己的总线,各自工作而不受对方影响。 PIC16F877a有一种13位程序计数器它的寻址能力达8K14程序存储器空间,并且PIC16F877a的Flash存储器空间正好是8K14,当寻址超过上面可执行的地址范畴时将导致缭绕。复位向量在0000h中,而中断向量在0004h中。 数据存储器被分为4个体,它涉及通用寄存器(GPR)和特殊功能寄存器(FSR),位 RP0,RP1是块抉择位。RP1 RP0 STATUS6:5=0 0 体0=01 体1 =10 体2 =11 体3 每个块的范畴达到7Fh(128bit),每个块的较低位存储单元保存SFRS,在SFRS上面是GPRS作为静态RAM操作的。所有执行的块涉及SFR。某些常常使用的SFRS可以从一种体镜像到另一种体来减少代码和实现迅速访问。 在实际应用编程中会常常使用到两个比较特殊的寄存器:INDF和FSR。它们是实现间接寻址所必需的两个寄存器。位于RAM数据存储器的的最顶端、地址码最小的INDF寄存器,它虽有地址编码,但其实不是一种物理上的寄存器。间接寻址通过使用INDF寄存器而成为也许。任何使用INDF寄存器的指令其实是通过文献选择寄存器FSR来访问所指向的寄存器。在PIC16F877a中所采用的这种独特而巧妙的设想,可以使指令集得到很大限度的精简。 电源控制寄存器PCON电源控制寄存器的内容涉及2个有效位,用其中一种来记录和辨别与否发生了上电复位、外部引脚输入低电平引起的人工复位、还是看门狗超时溢出复位。在本系统的设计中就会用到该寄存器中的位进行判断进入哪个程序模块。 电源上电复位标志位 =1 没有发生上电复位 =0 发生了上电复位。当发生上电复位之后,应当用软件及时将其置1,以便下次运用该比特来判断与否发生了电源上电复位。2.FLASH程序存储器的背景知识 存储器是任何计算机系统都不可缺少的一类重要的外围器件或部件。在计算机系统中应用的存储器有外部存储器(又叫辅助存储器)和内部存储器(又叫主存储器)之分。外部存储器有:磁带存储器(多用于大型计算机)、软磁盘存储器、硬磁盘存储器、只读光盘存储器、可读写光盘存储器、卡式存储器(例如IC卡)等;内部存储器目前都用半导体存储器。而常用的半导体存储器器件分为RAM、ROM和NVRAM,而它们往下又细分为多种分支,FLASH程序存储器就是ROM中的一种,其内容断电后也不丢失,可反复檫写多次,并且容易实目前线檫写,其檫写速度基本同于EEPROM,但是其制导致本更低、芯片面积更小。适应于不仅规定内容可以修改而掉电后又不丢失,并且又规定成本更低、存储容量更大的电器设备中。虽然EEPROM和FLASH存储器都可以多次电檫和电写,但EEPROM的读写次数要高的多。因此,FLASH存储器适合用来烧写那些改动不太频繁的顾客程序或参数,有助于减少单片机成本。PIC16F87X单片机内部同步具有两种电檫和电写存储器,分别是用于存储数据的EEPROM和用于固化顾客程序的FLASH,它们都可以在适合PIC单片机正常工作的VDD电压范畴内实现读写操作。也就是说,单片机内部自带电荷泵升压电路,虽然是烧写操作也不需要外加高电压。FLASH程序存储器的读写操作是以14位的单指令字节为单位进行的,对于其的写操作实际是对某一指定单元进行的“先檫除,后写入”的操作。对于程序存储器的读写操作容许进行“校验和”的计算,以便提高可靠性。烧写到FLASH程序存储器中的内容,不一定都是有效指令代码,也可以运用这个14位宽的存储器,寄存某些固定参数等。当CPU执行到寄存着这些无效指令代码的区域是,产生与执行空操作指令NOP同样的成果。但是对于FLASH程序存储器进行单个指令字节的写入操作,将会暂停其她指令的执行,直到写操作完毕,并在写操作进行期间,不能对程序存储器的任何单元进行取指操作,即在此期间不能执行任何指令。因素是,FLASH是一种整体,当对其任何一种单元进行烧写操作时,升压电荷泵启动工作,对FLASH整体施加了高电压,在这个不适合FLASH正常读取操作的高电压存续期间,FLASH临时失去了程序存储器的角色。总之,FLASH不能同步扮演“被烧写存储器”和“取指令存储器”双重角色。为理解决这个矛盾,在PIC16F87X系列单片机中采用的解决方案是,作为一种整体的FLASH程序存储器,在对一种单元进行烧写并且电源自动切换到电荷泵供电时,CPU自动停止而进入等待状态。在一次烧写操作完毕,FLASH工作电压再自动切换到正常值时,CPU才继续执行FLASH中的程序。对于PIC16F87X,在烧写FLASH时,虽然不能执行FLASH中的指令,但是系统时钟仍然振荡,片内各个外围模块仍然正常工作,可以检测到中断事件的发生,并进行排队等待,直到写操作完毕之后才会得到响应。具体解决过程是,一旦写操作完毕,如果中断源相应的各个中断屏蔽位都是开放的,并且该中断源的中断祈求发生在写操作期间,那么,在执行完预先抓取到指令寄存器中的指令之后,将立即转向中断矢量地址去执行中断服务子程序。FLASH不是直接影射到RAM存储器地址空间的,也就是说,它并不与RAM统一编址。因此,FLASH两者都不能被顾客程序直接访问,而只能通过专用寄存器进行间接的访问。为了达到间接访问它们的目的,额外增长了6个特殊功能寄存器:EEADR、EEADRH、EEDATA、EEDATH、EECON1、EECON2。FLASH程序存储器容许以指令字节(14位)进行读写操作,但是写操作会暂停CPU对FLASH区中指令的执行,直到写操作完毕。当CPU间接访问FLASH程序存储器时,EEADRA和EEADRH一起用来寄存指向某一单元的13位(或12位或11位)地址码,EEDATA和EEDATH一起用来寄存即将被写入或读出的14位数据(实际是顾客程序的指令代码)。根据内部配备FLASH的容量不同,又可以分为如下3种状况。 对于PIC16F876877而言,配备的FLASH容量8K14。用到了EEADR和EEADRH寄存器对的低13位,213 =8K。虽然最高3位没有用到,但是必须将这几位清0。因素是,当EEADR和EEADRH内部16位地址码超过8K时,寻址范畴并不会绕回到FLASH的低地址单元上。例如,当EEADR和EEADRH内部16位地址码为H时,寻址到的单元并不是0000H号单元。这样做也便于顾客程序在PIC16F87X不同型号之间的移植和兼容。 对于PIC16F873874而言,配备的FLASH容量为4K14,为PIC16F876877的一半。因此仅用到了EEADR和EEADRH内部16位地址码的低12位,212=4K。虽然最高4位没有用到,但是必须将这4位清0,理由同上。 对于PIC16F870871872而言,配备的FLASH容量仅为2K14,为PIC16F876877的1/4。因此,仅用到了EEADR和EEADRH内部16位地址码的低11位,211=2K。虽然最高5位没有用到,但是必须要将这5位清0,理由同上。 3.片内FLASH程序存储器构造和操作原理图3 FLASH数据存储器构造图PIC16F877a单片机内部,用于固化顾客程序的FLASH 。也把它当作一种外围模块来看待,对于它的操作与操作EEPROM数据存储器也基本相似,只是其数据宽度和地址宽度都需要增长,因此,地址寄存器和数据寄存器都增长到了一对。FLASH与单片机内部总线之间,运用地址寄存器对EEADR:EEADRH和数据寄存器对EEDATA:EEDATH,作为顾客程序与FLASH存储器打交道的对话窗口。从图中可以发现,以上述4个寄存器为界,其左边,在工作寄存器W和4个寄存器之间通过内部数据总线进行的是数据传送,是由CPU执行顾客程序分4次来完毕的;而右边,在4个寄存器与FLASH之间的数据传送则是靠硬件自动实现的。单片机向FLASH程序存储器烧写的程序代码或数据,常常是最先来自于单片机外部,措施是可以通过端口模块(如USART、SPI、I2C等),与外界进行通信并获取程序代码或数据,然后写入FLASH。烧写FLASH与向EEPROM中烧写数据的操作过程相比,重要的不同之处有:地址码有13位、12位或11位(分别相应876877、873874和872871870),需要2个地址寄存器并行工作;数据有14位,也需要2个数据寄存器并行工作。对于以FLASH为对象的烧写操作,与CPU以FLASH为指令来源的程序执行,两种操作行为之间存在着互斥关系。也就是说,这两种操作绝对不能发生在同一时刻,其中的道理前面分析过。在对于FLASH写操作期间,系统时钟继续振荡,所有外设模块继续工作,如果中断处在使能状态,发生的中断祈求将排队等待。一旦写操作完毕,CPU将继续执行被中断的程序。能否烧写FLASH,还与系统配备字的WRT位有关。在用程序烧写器通过在线串行编程(ICSP)引脚,对单片机进行烧写编程时如果将WRT位清0,此后就不能再以执行顾客程序来操纵控制寄存器EECON的方式,烧写FLASH程序存储器,如表1所列。我们在此可以重要关注内部写操作与WRT的相应关系。表1 内部FLASH程序存储器的读写状态表配备位FLASH程序存储器区间内部ICSPCP1CP0WRT读操作写操作读操作写操作00X所有是不不不010未保护区间是不是不保护区间是不不不011未保护区间是是是不保护区间是不不不100未保护区间是不是不保护区间是不不不101未保护区间是是是不保护区间是不不不表2.10 内部FLASH程序存储器的读写状态表(续)110所有是不是是111所有是是是是阐明: ICSP读写操作指借助于“程序烧写器”通过在线串行编程(ICSP)引脚对单片机片内存储器进行读写操作; 内部读写操作以执行顾客程序和通过操纵控制寄存器EECON的方式进行读写操作烧写FLASH比烧写EEPROM更需要谨慎,以防程序失控导致死机。与向EEPROM单元中一次烧写数据过程同样,烧写FLASH也需要多种环节才干完毕:应事先把长地址和长数据分别放入地址寄存器对EEADRH:EEADR和数据寄存器EEDATH:EEDATA中,把EEPGD控制位置1,再将写容许位WREN置1,最后再把写启动位WR置1。除了正在对于FLASH进行写操作之外,平时WREN始终保持为0。只有在前一次的操作中把控制位WREN置1,背面的操作才干把控制位WR置1,也就是,这两位的置1操作,绝对不能在1条指令的执行过程中同步完毕,必须安排两条指令。在一次写操作完毕之后,WREN位由软件清0。在一次写操作尚未完毕之前,如果用软件清除WREN位,则不会停止本次写操作过程。写FLASH程序存储器的操作环节如下。把长地址码分两步送入地址寄存器对EEADRH:EEADR中,并且保证地址不能超过目的单片机内部FLASH的最大地址范畴(对于870871872,2K14的最大地址码是07FFH;对于873874,4K14的最大地址码是0FFFH;对于876877,8K14的最大地址码是1FFFH)。 把准备烧写的14位数据分两步送入数据寄存器对EEDATH:EEDATA中。把控制位EEPGD置位,以指定FLASH作为烧写对象。 把写使能位WREN置1,容许背面进行写操作。 清除全局中断控制位GIE,关闭所有中断祈求。 执行专用的“5指令序列”这5条指令是固定搭配,道理同前: 用一条移动指令把55H写入到W; 用一条移动指令再把W中的55H转入控制寄存器EECON2中; 用一条移动指令把AAH写入到W; 用一条移动指令再把W中的AAH转入控制寄存器EECON2中; 操作启动控制位WR置1。 执行2条NOP指令,给单片机足够的进入写操作的时间。 放开中断总屏蔽位(如果打算运用EEIF中断功能的话)。 清除写容许位WREN,在本次写操作没有完毕之前,严禁重开新的一次写操作。当写操作完毕时,控制位WR被硬件自动清0,中断标志位EEIF被硬件置1(该位必须由软件清0)。由于在对FLASH的写操作期间,CPU不能执行任何指令,因此,就不能使用软件查询方式检查WR状态位或EEIF标志位,来鉴定写操作与否完毕。对于FLASH程序存储器的写操作是事关系统安全运营的大问题,需要谨慎看待,并且可以充足运用PIC16F87X单片机为解决此类问题而配备的某些片内软、硬件资源,来设计某些有效的措施和措施。为了避免意外写操作行为的发生,(意外写操作重要是指由于某些偶尔的因素单片机自发进行的、也许导致不良后果的一类写操作行为。在某些特殊状况下单片机是不适合对FLASH程序存储器进行写操作的。)PIC16F87X单片机内部建立了多种保障机制。在上电复位时,写操作使能控制位WREN自动被清0,以避免上电期间也许发生的意外写操作。72ms的上电延时复位定期器PWRT(如果系统配备字定义为使能,即=0),也可以避免上电期间也许发生的意外写操作。可以由软件编程的写操作使能控制位WREN,平时保持为0,为写操作的启动设立了一道关卡。厂家规定的写操作专用的“5指令序列”,如果顺序颠倒、密码出错、不持续执行等,都不能启动写操作,从而有效地避免关机、电源跌落、电源受到强烈干扰、软件失控期间,也许发生的意外写操作。对于FLASH程序存储器避免意外写操作,PIC16F87X单片机内部,额外设立了更加严格的限制。那就是系统配备字中的CP1、CP0和WRT这3位(见表2.2或系统配备字的阐明部分)。当CP1:CP0=00时,无论WRT等于何值,都会严禁任何对于FLASH存储器的写操作;当WRT=0时,无论CP1:CP0等于何值,也都会严禁任何对于FLASH存储器的写操作。况且这三位不是由软件所能改动的。一旦设立了此种写保护功能,若想把它解除,只能对芯片所有擦除。4编码及解码原理(1)遥控发射器编码发射电路编码原理(一般家庭用的DVD、VCD、音响都使用这种编码方式)。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有如下特性: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表达二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表达二进制的“1”,其波形如图4所示。图4 遥控码的“0”和“1” (注:所有波形为接受端的与发射相反)上述“0”和“1”构成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到减少电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图5所示。图5 遥控信号编码波形图UPD6121G产生的遥控编码是持续的32位二进制码组,其中前16位为顾客辨认码能区别不同的电器设备,避免不同机种遥控码互相干扰。该芯片的顾客 辨认码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码自身的持续时间随它涉及的二进制“0”和“1”的个数不同而不同,大概在4563ms之间,图6为发射波形图。图6 遥控连发信号波形当一种键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一种引导码(9ms),一种成果码 (4.5ms),低8位地址码(9ms18ms),高8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据的反码 (9ms18ms)构成。如果按键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)构成。图7 引导码 图8连发码(2)遥控信号接受及解码接受电路可以使用一种集红外线接受和放不小于一体的一体化红外线接受器,不需要任何外接元件,就能完毕从红外线接受到输出与TTL电平信号兼容的所有工作,而体积和一般的塑封三极管大小同样,它适合于多种红外线遥控和红外线数据传播。接受器对外只有3个引脚:Out、GND、Vcc与单片机接口非常以便,如图9所示。图 9 脉冲信号输出直接接在单片机的IO 口。 GND接在系统的地线(0V); Vcc接在系统的电源正极(+5V);把红外遥控器每一种按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同步并且能发出“嘀嘀嘀”的提示音。三 、各部分设计与实现(一)原理及总体设计 红外遥控系统通用红外遥控系统由发射和接受两大部分构成。应用编/解码专用集成电路芯片来进行控制操作,如图所示。发射部分涉及键盘矩阵、编码调制、LED红外发送器;接受部分涉及光、电转换放大器、解调、解码电路,如图10所示。 图10 红外线遥控系统框图(二)各部分软硬件实现1.红外传感器这里我们采用HS0038,HS0038 一体化红外接受头,接受频率为38kHz1kHz管脚依次为: 1GND 2VCC 3OUT连接时,在VCC与GND之间并入一种0.1uF的电容有助于改善信号质量。其可以用于遥控编码接受,也可以用于低码率的数据通讯。HS0038 信号电平: 38kHz 红外发射接受届时:OUT低电平输出 38kHz 红外发射接受不届时:OUT高电平输出Hs0038的使用注意事项: 38kHz红外发射信号在HS0038接受角度范畴边沿区域时,接受信号不断振荡无法稳定,因此为保证信号质量,使用时发射接受竭力正对为好; HS0038用于数据通讯时,在原则RS232下,波特率设立不要不小于2400bps,否则HS0038无法辨别到接受的信号(2400bps接近其带宽极限了)。2红外键盘 红外键盘原理图,如图11、12、13、14。图11 图12图13图143.通用同步异步收发器USARTPIC16F87X单片机内部集成了两个类型不同的串行通信模块,即通用同步异步收发器USART(universal synchronousasynchronous receiver transmitter)模块和主控同步串行端口MSSP(master synchronous serial port)模块。前者的重要应用目的是系统之间的远距离串行通信;而后者的重要应用目的是系统内部近距离的串行扩展。与USART模块有关的寄存器有9个,都在RAM阵列中具有统一的地址编码。如表2所示。表2 与USART模块有关的寄存器寄存器名称寄存器符号寄存器地址寄存器内容bit7bit6bit5bit4bit3bit2bit1Bit0中断控制寄存器INTCON0BH/8BH/10BH/18BHGIEPEIET0IEINTERBIET0IFINTFRBIF第一外设中断标志寄存器PIR10CHPSPIFADIFRCIFTXIFSSPIFCCP1-IFTMR2-IFTMR1-IF第一外设中断屏蔽寄存器PIE18CHPSPIEADIERCIETXIESSPIECCP1-IETMR2-IETMR1-IFC口方向寄存器TRISC87HTRISC7TRISC6TRISC5TRISC4TRISC3TRISC2TRISC1TRISC0发送状态兼控制寄存器TXSTA98HCSRCTX9TXENSYNC_BRGHTRMTTX9D接受状态兼控制寄存器RCSTA18HSPENRX9SRENCRENADDENFERROERRRX9D发送寄存器TXREG19HUSART发送缓冲寄存器接受寄存器RCREG1AHUSART接受缓冲寄存器波特率寄存器SPBRG99H对于波特率发生器产生波特率的定义值发送状态兼控制寄存器TXSTA,它是一种bit3不用,bit1只读,其他6位可读写的寄存器,其中没有一位读取时会返回0。其中的SYNC位是USART同步异步选择位。等于1时,是同步模式,等于0时是异步模式;TXEN是发送使能位,为1时是使能发送,为0时是关闭发送功能。RCSTA是接受状态兼控制寄存器,它是一种低三位只读、高5位可读写的寄存器。其中的CREN是持续接受使能位。在异步模式下:等于1表达使能持续接受,等于0则是严禁持续接受;在同步模式下,等于1表达使能持续接受,直到该位被清0为止。该位优先于SREN位。等于0表达关闭持续接受。USART发送缓冲寄存器TXREG也是一种顾客程序可读写的寄存器。每次顾客发送的数据都是通过写入该缓冲器来实现的。USART接受缓冲寄存器RCREG是一种顾客程序可读写的寄存器。每次从对方传送过来的数据,顾客都是从该缓冲器最后读取出来的。SPBRG寄存器是用来控制一种独立的8位定期器的溢出周期。该寄存器的设定值(0255)与波特率成反比关系。在同步方式下波特率仅由这一种寄存器决定,在异步方式下则由BRGH位和该寄存器共同拟定。四、总结和体会通过这次红外遥控的毕业设计,学习和使用芯片的具体应用,传感器的选用,明白了不同芯片外围接口使用时的工作方式。纯熟掌握了它们的运用环境和使用时的方式控制,以及编程命令字的设立。进一步理解了所学芯片的基本的编程环节及多种方式命令字的使用。将课本上所学的东西用在实际当中了,这加深了我们对可编程器件的理解。在这次设计过程中我有几点深刻的体会。1.通过这次设计,我体会到应当掌握丰富的理论知识,理论知识是设计的前提。但同步又决不能局限于理论。如某些地方的元件取值,应当大胆的根据经验去判断。2.平时课堂上所学习的知识大多比较陈旧,作为电子专业的学生,由于专业特点自己更要积极查阅目前的最新信息资料。一种人不也许什么都学过,什么都懂,因此,当你在设计过程中需要用某些不曾学过的东西时,就要去有针对性地查找资料,然后加以吸取运用,以提高自己的应用能力,并且还能增长自己见识,补充最新的专业知识。3.实践能力得到了进一步提高,在设计过程中积累了某些经验。4.设计对此前学过的理论知识起到了回忆作用。在整个设计之中是对数字电路、模拟电路课程,单片机,微机原理等课程是综合应用,并对其加以进一步的消化和巩固,加深了对此前所学课程知识的掌握。5.在设计过程中,深深感受到自己在对某些器件的理解上,还存在很大差距,对她们的功能,参数都不是太熟悉。但是通过这次理论与实际的结合之后,结识比此前有不少提高。 五、谢辞一方面感谢我的父母,正是你们的默默的付出,才让我完毕大学四年的学习,养育之恩,无以回报,你们永远健康是我最大的幸福。还要感谢汪光宅教师,刘强教师,在毕业设计的制作过程中,教师们对我自始自终悉心教导、不断鼓励、始终督促我学习和制作,使我可以顺利完毕毕业设计 ,也教给了我诸多新的知识,令我获益匪浅。她们严谨的治学态度深深的影响着我,让我受益毕生,不管是工作还是生活中。同步我还要感谢梁明华,孙伟,刘亮宇,苟庆松等同窗,正是她们同步给我的协助,才让我的毕业设计可以顺利完毕。在此,对汪光宅教师、刘强教师以及给我提供协助的同窗致以诚挚的谢意。祝你们工作顺利,身体健康!附录(一)红外键盘有关程序用WHILE实现的延时程序void delay16(unsigned int i)while(-i);/*void delay882us(void)delay16(100);/*void delay1000us(void)delay16(115);/*void delay4740us(void)delay16(546);非中断方式串口输出void ComOutChar(unsigned char OutData)SBUF = OutData; /输出字符while(!TI); /空语句判断字符与否发完TI = 0; /清TI/*/串口初始化晶振为.0592M方式波特率/*void InitCom(void)SCON = 0x50; /串口方式,容许接受TMOD = 0x21; /定期器定期方式,定期为模式,位模式TH1 = 0xFd;/设波特率为TL1 = 0xFd;PCON = 0x00; /波特率不加倍控制,SMOD为RI = 0;/清收发标志TI = 0;TR1 = 1; /启动定期器(二)编码及解码程序接受,程序如下RF:BTFSC PORTB,2 GOTO RF1BTFSS DOWNBIT CLRF RTCCOUNTBSF DOWNBIT BTFSS UPBIT RETLW 0BTFSC IDBIT GOTO RF3MOVLW 2AHSUBWF RTCCOUNT,0BTFSS STATUS,0GOTO RF2MOVLW 36HSUBWF RTCCOUNT,0BTFSC STATUS,0GOTO RF2BTFSC IDBITGOTO RF3MOVLW .8MOVWF LOOPMOVLW .3MOVWF LOOPCOUNTCLRF DATACOUNTBSF IDBITBSF DOWNBITBCF UPBITCLRF RTCCOUNTRETLW 0RF1:BTFSS DOWNBITRETLW 0BSF UPBITRETLW 0RF2:BCF DOWNBITBCF UPBITBCF IDBITCLRF RTCCOUNTRETLW 0 ;遥控接受RF3:MOVLW 02HSUBWF RTCCOUNT,0BTFSS STATUS,0GOTO RF4MOVLW 0CHSUBWF RTCCOUNT,0BTFSS STATUS,0GOTO RF4GOTO RF2RF4:MOVLW 08HSUBWF RTCCOUNT,0BTFSC STATUS,0BSF 3H,0MOVLW 07HSUBWF RTCCOUNT,0BTFSS STATUS,0BCF 3H,0RLF DATACOUNT,1BSF DOWNBITBCF UPBITCLRF RTCCOUNTDECFSZ LOOP,1RETLW 0MOVLW .8MOVWF LOOPDECFSZ LOOPCOUNTRETLW 0BSF RFBIT BCF DOWNBITBCF UPBITBCF IDBITCLRF RTCCOUNTRETLW 0/TIME:BTFSC TIMEPD1GOTO TIME1MOVF RTCC,0MOVWF TIMEONEBSF TIMEPD1RETLW 0 ;定期查寻TIME1:MOVF RTCC,0SUBWF TIMEONE,0BTFSC STATUS,2RETLW 0BCF TIMEPD1INCF RTCCOUNT,1RETLW 0/在这里我是用查询的方式来定期的(RTCCOUNT)只是在解码时不需要去追求时间精度;是去查RTCC有无发生跳变,如有则表达时间过了 256US-RTCCOUNT加一;这样做有一种好处-你不必去管RTCC具体的值是多少,(RTCC去做精确的时钟定期;在这个查询的子程序中你可以去判断键扫,显示刷新等等)发送:原理是接受的逆过程,如下;/READDIGT:MOVF SENDLOOP,0ADDWF PC,1GOTO SENDC4GOTO SENDC3GOTO SENDC2GOTO SENDC1GOTO SENDC0;/SENDC0:MOVF C4COUNT,0;读要发的数据(假设要发5个字)RETURNSENDC1:MOVF C3COUNT,0RETURNSENDC2:MOVF C2COUNT,0RETURNSENDC3:MOVF C1COUNT,0RETURNSENDC4:MOVF C0COUNT,0RETURN;/SENDBIT:CLRF TIMEBCF PORTB,1SENDBIT1:CLRWDTMOVLW .35SUBWF TIME,0BTFSS STATUS,2GOTO SENDBIT1CLRF TIMEBSF PORTB,1SENDBIT2:CLRWDTMOVLW .18SUBWF TIME,0BTFSS STATUS,2GOTO SENDBIT2CLRF SENDLOOP ;码头数据发送/SENDBIT3:CLRWDTBCF INTCON,7CALL READDIGTMOVWF SENDCOUNTBSF INTCON,7CALL SENDDIGTINCF SENDLOOP,1MOVLW .5SUBWF SENDLOOP,0BTFSS STATUS,2GOTO SENDBIT3CLRF TIMEBCF PORTB,1SENDDIGT5:CLRWDTMOVLW .2;加发一种结束位SUBWF TIME,0BTFSS STATUS,2GOTO SENDDIGT5BSF PORTB,1BSF STARTBITRETURN;/SENDDIGT:;实现0和1的发送MOVLW .8MOVWF LOOPSENDCOUNTSENDDIGTGBTFSS SENDCOUNT,7GOTO ZERSENDCLRF TIMESENDDIGT1:CLRWDTBCF PORTB,1MOVLW .2SUBWF TIME,0BTFSS STATUS,2GOTO SENDDIGT1CLRF TIMESENDDIGT2:CLRWDTBSF PORTB,1MOVLW .6SUBWF TIME,0BTFSS STATUS,2GOTO SENDDIGT2GOTO SENDOVERZERSEND:CLRF TIMESENDDIGT3:CLRWDTBCF PORTB,1MOVLW .2SUBWF TIME,0BTFSS STATUS,2GOTO SENDDIGT3CLRF TIMESENDDIGT4:CLRWDTBSF PORTB,1MOVLW .2SUBWF TIME,0BTFSS STATUS,2GO
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!