首页 基于PIC单片机的红外遥控设计

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

举报
开通vip

基于PIC单片机的红外遥控设计基于PIC单片机的红外遥控设计 XXXX大学本科毕业设计 基于PIC单片机的红外遥控设计 学生姓名 所 在 系 专业名称 班 级 学 号 指导教师 XXX大学教务处 年 月 X大学成都学院本科毕业设计 基于PIC单片机的红外遥控设计 学生: 指导教师: 内容提要:遥控器是现代电子控制系统的重要部件。可以利用无线电波、可见光、红外光、超声波作为传输介质远距离操控电子设备。由于其功耗低、可靠性高和互相干扰小等优点,已在现实生活中得到了广泛应用。在目前的家用电器中,如电视机、家庭影院和数字音像...

基于PIC单片机的红外遥控设计
基于PIC单片机的红外遥控 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 XXXX大学本科毕业设计 基于PIC单片机的红外遥控设计 学生姓名 所 在 系 专业名称 班 级 学 号 指导教师 XXX大学教务处 年 月 X大学成都学院本科毕业设计 基于PIC单片机的红外遥控设计 学生: 指导教师: 内容提要:遥控器是现代电子控制系统的重要部件。可以利用无线电波、可见光、红外光、超声波作为传输介质远距离操控电子设备。由于其功耗低、可靠性高和互相干扰小等优点,已在现实生活中得到了广泛应用。在目前的家用电器中,如电视机、家庭影院和数字音像设备中,大多都采用了红外线遥控电路。而这套“基于PIC单片机的红外遥控设计”则是以Microchip公司生产的16F877a芯片为模版,价格低廉,电路结构简单,据此本设计提出了一种简单易行的红外遥控器的设计。 关键词:PIC单片机 红外遥控 简单易行 1 X大学成都学院本科毕业设计 PIC MCU-based infrared remote control design Abstract: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 2 X大学成都学院本科毕业设计 一、前言 (一)开发的背景 自从1800年英国天文学家赫歇尔发现红外辐射至今,红外技术的发展经历了将近两个世纪。从那时开始,红外辐射和红外元件、部件的科学研究逐步发展,但发展比较缓慢,直到1940年前后才真正出现现代的红外技术。随着科技的不断发展,各系统间的联系越来越紧密,对各系统间的数据传递的要求也越来越高,但是外部设备越多,连接用的线也越多,短距离联接的发展必然要走向无线联机,目前主要的短距离无线连接技术有红外通信技术和蓝牙技术,前者采用红外线,后者采用无线电波作为信息传播的媒介。红外无线通讯的技术与蓝牙相比较,红外技术具有比较成熟,接口电路简单,成本低等诸多优点。 红外遥控是通过红外设备将单片机与外部设备联系起来进行通讯,实现系统间的无线通讯。自从红外技术出现以来,美国、英国、前苏联等国竞相发展。特别是美国,大力研究红外技术在军事方面的应用。目前,美国将红外技术应用于单兵装备、装甲车辆、航空和航天的侦察监视、预警、跟踪以及武器制导等各个领域。 1993年,由二十多个大厂商发起成立了红外数据协会(IrDA),统一了红外通讯的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,这就是目前被广泛使用的IrDA红外数据通讯协议及规范。IrDA专司制订和推进能共同使用的低成本红外数据互连标准,支持点对点的工作模式。由于标准的统一和应用的广泛,更多的公司开始开发和生产IrDA模块,技术的进步也使得IrDA模块的集成越来越高,体积也越来越小。IrDA1.0可支持最高115.2kbps的通信速率,而IrDA1.1可以支持的通信速率达到4Mbps。 本课 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 是专业知识综合用于前沿科技的一个尝试,本人坚信此次研究和设计的成果具有一定的现实意义。 (二)开发的目标 本系统的基本任务和目标就是,通过红外发射电路的设计,实现单片机利用红外信号,通过发射电路与外界联系,实现对外的遥控控制,其中包含了输入设备红外键盘,和红外传感器的使用。借助软件部分的设计,实现系统的总体功能,红外遥控。总的说来,完成此设计主要有四个模块: ?发射及接收电路的设计; ?编码及解码程序; 3 X大学成都学院本科毕业设计 ?红外传感器的选取和使用; ?红外键盘的设计。 (三)开发的思路 设计基于单片机的红外遥控,我们要从发射接收电路,编码解码,传感器,红外键盘几个方向入手。在软件部分中,我们主要是先要画好系统原理图,还有明确系统各部分功能,发射接收电路的设计,编码及解码程序,在硬件部分中,主要是发射和接收电路的硬件设计,红外传感器的使用,以及红外键盘的设计。 二、设计基础 (一)PIC单片机的介绍 1(PIC单片机常识 据统计,我国的单片机年容量已达1,3亿片,且每年以大约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单片机的迅速完善,使其佼佼者在控制关系复杂的场合也毫不逊色。 4 X大学成都学院本科毕业设计 根据程序存储方式的不同,单片机可分为EPROM、OTP(一次可编程)、QTP(掩膜)三种。我国一开始都采用ROMless型单片机(片内无ROM,需片外配EPROM),对单片机的普及起了很大作用,但这种强调接口的单片机无法广泛应用,甚至走入了误区。如单片机的应用一味强调接口,外接I/O及存储器,便失去了单片机的特色。目前单片机大都将程序存储体置于其内,给应用带来了极大的方便。 2(PIC单片机的特点和工作原理 (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在这方面已不能与新型的TI,MSP430相比, 5 X大学成都学院本科毕业设计 但在大多数应用场合还是能满足需要的。 3(PIC单片机的分类 初档8位单片机:PIC12C5XXX,16C5X系列 PIC16C5X系列是最早在市场上得到发展的系列,因其价格较低,且有较完善的开发手段,因此在国内应用最为广泛;而PIC12C5XX是世界第一个八脚低价位单片机可用于简单的智能控制等一些对单片机体积要求较高的地方,前景十分广阔。 中档8位单片机:PIC12C6XX/PIC16CXXX系列 PIC中档产品是Microchip近年来重点发展的系列产品,品种最为丰富,其性能比低档产品有所提高,增加了中断功能,指令周期可达到200ns,带A,D,内部E2PROM数据存储器,双时钟工作,比较输出,捕捉输入,PWM输出,I2C和SPI接口,异步串行通讯(USART),模拟电压比较器及LCD驱动等等,其封装从8脚到68脚,可用于高、中、低档的电子产品设计中,价格适中,广泛应用在各类电子产品中 高档8位单片机:PIC17CXX系列 PIC17CXX是适合高级复杂系统开发的系列产品,其性能在中档位单片机的基础上增加了硬件乘法器,指令周期可达成160ns,它是目前世界上8位单片机中性价比最高的机种,可用于高、中档产品的开发,如马达控制 (二)相关背景知识 1(16F877a基本知识 (1)16F877a的基本架构 单片机是中央处理单元(CPU),存储器(Memory)及输入/输出单元三大部分组成。其中CPU可分为两部分,即算术逻辑单元(ALU)及控制单元(CU),CPU通过总线(BUS)执行程式码的Fetch、Decode、算术逻辑运算及读写时钟信号的控制。存储器单元提供存放程序与资料的空间,包含只读存储器(ROM)和随机存取存储器(RAM)。而输入/输出单元提供与外界周边设备或元件的管道 ,如图一所示。 6 X大学成都学院本科毕业设计 图1 单片机基本架构 (2)PIC16F877a的特性说明如下: ?采用高性能的RISC CPU核心 ?8位微电脑控制芯片 ?8K×14Flash程序存储器 ?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结构改善了这样的缺点,主要是程序存储器和数据存储器使用不同的存储体区块,而且也有各自独立的总线,这样的做法就大大改善了指令执行的频宽,两条总线可以同时工作,最大的优点是当一个指令在执行时,已经可以去抓下一个指令,因此对于运作的效率会有显著的提升。 7 X大学成都学院本科毕业设计 图2 Harvard架构与Von Neumann架构比较 (4)存储器基本知识 ? PIC16F877a单片机共有3个存储器块,它们是程序存储器,数据存储器,EEPROM数据存储器。程序存储器和数据存储器有它自己的总线,各自工作而不受对方影响。 ? PIC16F877a有一个13位程序计数器它的寻址能力达8K×14程序存储器空间,而且PIC16F877a的Flash存储器空间正好是8K×14,当寻址超出上面可执行的地址范围时将导致回绕。复位向量在0000h中,而中断向量在0004h中。 ? 数据存储器被分为4个体,它包括通用寄存器(GPR)和特殊功能寄存器(FSR),位 RP0,RP1是块抉择位。 RP1 RP0 〔STATUS〈6:5〉〕 =0 0 体0 =0 1 体1 =1 0 体2 =1 1 体3 每个块的范围达到7Fh(128bit),每个块的较低位存储单元保存SFRS,在SFRS上面是GPRS作为静态RAM操作的。所有执行的块包括SFR。一些经常使用的SFRS可以从一个体镜像到另一个体来减少代码和实现快速访问。 ? 在实际应用编程中会经常使用到两个比较特殊的寄存器:INDF和FSR。它们是实现间接寻址所必需的两个寄存器。位于RAM数据存储器的的最顶端、地址码最小的INDF寄存器,它虽有地址编码,但其实不是一个物理上的寄存器。间接寻址通过使用INDF寄存器而成为可能。任何使用INDF寄存器的指令其实是通过文件选择寄存器FSR来访问所指向的寄存器。在PIC16F877a中所采用的这种独特而巧妙的构想,可以使指令集得到很大程度的精简。 ? 电源控制寄存器PCON 8 X大学成都学院本科毕业设计 电源控制寄存器的内容包括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同样的结果。但是 9 X大学成都学院本科毕业设计 对于FLASH程序存储器进行单个指令字节的写入操作,将会暂停其他指令的执行,直到写操作完成,并在写操作进行期间,不能对程序存储器的任何单元进行取指操作,即在此期间不能执行任何指令。原因是,FLASH是一个整体,当对其任何一个单元进行烧写操作时,升压电荷泵启动工作,对FLASH整体施加了高电压,在这个不适合FLASH正常读取操作的高电压存续期间,FLASH暂时失去了程序存储器的角色。总之,FLASH不能同时扮演“被烧写存储器”和“取指令存储器”双重角色。为了解决这个矛盾,在PIC16F87X系列单片机中采用的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是,作为一个整体的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种情况。 ? 对于PIC16F876?877而言,配置的FLASH容量8K×14。用到了EEADR和 13 EEADRH寄存器对的低13位,2=8K。虽然最高3位没有用到,但是必须将这几位清0。原因是,当EEADR和EEADRH内部16位地址码超出8K时,寻址范围并不会绕回到FLASH的低地址单元上。例如,当EEADR和EEADRH内部16位地址码为2000H时,寻址到的单元并不是0000H号单元。这样做也便于用户程序在PIC16F87X不同型号之间的移植和兼容。 10 X大学成都学院本科毕业设计 ? 对于PIC16F873?874而言,配置的FLASH容量为4K×14,为PIC16F876 12?877的一半。所以仅用到了EEADR和EEADRH内部16位地址码的低12位,2=4K。虽然最高4位没有用到,但是必须将这4位清0,理由同上。 ? 对于PIC16F870?871?872而言,配置的FLASH容量仅为2K×14,为PIC16F876?877的1/4。所以,仅用到了EEADR和EEADRH内部16位地址码的低 1111位,2=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程序存储器烧写的程序代码或数据,常常是最先来自 2于单片机外部,方法是可以经过端口模块(如USART、SPI、IC等),与外界进行 11 X大学成都学院本科毕业设计 通信并获取程序代码或数据,然后写入FLASH。 烧写FLASH与向EEPROM中烧写数据的操作过程相比,主要的不同之处有: 地址码有13位、12位或11位(分别对应876?877、873?874和872?871?870),需要2个地址寄存器并行工作;数据有14位,也需要2个数据寄存器并行工作。 对于以FLASH为对象的烧写操作,与CPU以FLASH为指令来源的程序执行,两种操作行为之间存在着互斥关系。也就是说,这两种操作绝对不能发生在同一时刻,其中的道理前面分析过。在对于FLASH写操作期间,系统时钟继续振荡,所有外设模块继续工作,如果中断处于使能状态,发生的中断请求将排队等候。一旦写操作完成,CPU将继续执行被中止的程序。 能否烧写FLASH,还与系统配置字的WRT位有关。在用程序烧写器经过在线串行编程(ICSP)引脚,对单片机进行烧写编程时如果将WRT位清0,此后就不能再以执行用户程序来操纵控制寄存器EECON的方式,烧写FLASH程序存储器,如表1所列。我们在此可以主要关注内部写操作与WRT的对应关系。 表1 内部FLASH程序存储器的读?写状态表 配置位 内部 ICSP FLASH程序存储器 区间 CP1 CP0 WRT 读操作 写操作 读操作 写操作 0 0 X 全部 是 不 不 不 0 1 0 未保护区间 是 不 是 不 保护区间 是 不 不 不 0 1 1 未保护区间 是 是 是 不 保护区间 是 不 不 不 1 0 0 未保护区间 是 不 是 不 保护区间 是 不 不 不 1 0 1 未保护区间 是 是 是 不 保护区间 是 不 不 不 表2.10 内部FLASH程序存储器的读?写状态表(续) 1 1 0 全部 是 不 是 是 1 1 1 全部 是 是 是 是 12 X大学成都学院本科毕业设计 说明: ? 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的最大地址范围(对于870?871?872,2K×14的最大地址码是07FFH;对于873?874,4K×14的最大地址码是0FFFH;对于876?877,8K×14的最大地址码是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中断功能的话)。 13 X大学成都学院本科毕业设计 ? 清除写允许位WREN,在本次写操作没有完毕之前,禁止重开新的一次写操作。 当写操作完成时,控制位WR被硬件自动清0,中断标志位EEIF被硬件置1(该位必须由软件清0)。由于在对FLASH的写操作期间,CPU不能执行任何指令,因此,就不能使用软件查询方式检验WR状态位或EEIF标志位,来判定写操作是否完成。 对于FLASH程序存储器的写操作是事关系统安全运行的大问题,需要谨慎对待,并且可以充分利用PIC16F87X单片机为解决此类问题而配置的一些片内软、硬件资源,来设计一些有效的方法和措施。为了防止意外写操作行为的发生,(意外写操作主要是指由于某些偶然的原因单片机自发进行的、可能导致不良后果的一类写操作行为。在某些特殊情况下单片机是不适合对FLASH程序存储器进行写操作的。)PIC16F87X单片机内部建立了多种保障机制。 在上电复位时,写操作使能控制位WREN自动被清0,以防止上电期间可能发生的意外写操作。 72ms的上电延时复位定时器PWRT(如果系统配置字定义为使能,即 =0),也可以防止上电期间可能发生的意外写操作。 PWRTE 可以由软件编程的写操作使能控制位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、音响都使用这种编码方式)。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥 14 X大学成都学院本科毕业设计 控码具有以下特征: 采用脉宽调制的串行码,以脉宽为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”的个数不同而不同,大约在45,63ms之间,图6为发射波形图。 15 X大学成都学院本科毕业设计 图6 遥控连发信号波形 当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个引导码(9ms),一个结果码 (4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码 (9ms~18ms)组成。如果按键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。 图7 引导码 图8连发码 (2)遥控信号接收及解码 接收电路可以使用一种集红外线接收和放大于一体的一体化红外线接收器,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。 接收器对外只有3个引脚:Out、GND、Vcc与单片机接口非常方便,如图9所示。 图 9 ? 脉冲信号输出直接接在单片机的IO 口。 ? GND接在系统的地线(0V); ? Vcc接在系统的电源正极(+5V); 把红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。 16 X大学成都学院本科毕业设计 三 、各部分设计与实现 (一)原理及总体设计 红外遥控系统 通用红外遥控系统由发射和接收两大部分组成。应用编/解码专用集成电路芯片来进行控制操作,如图所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路,如图10所示。 图10 红外线遥控系统框图 (二)各部分软硬件实现 1.红外传感器 这里我们采用HS0038, HS0038 一体化红外接收头,接收频率为38kHz,1kHz管脚依次为: 1,GND 2,VCC 3—OUT 连接时,在VCC与GND之间并入一个0.1uF的电容有助于改进信号质量。其可以用于遥控编码接收,也可以用于低码率的数据通讯。HS0038 信号电平: 38kHz 红外发射接收到时: OUT低电平输出 38kHz 红外发射接收不到时:OUT高电平输出 Hs0038的使用注意事项: ? 38kHz红外发射信号在HS0038接收角度范围边沿区域时,接收信号不断振荡无法稳定,因此为保证信号质量,使用时发射接收尽力正对为好; ? HS0038用于数据通讯时,在标准RS232下,波特率设置不要大于2400bps,否则HS0038无法区分到接收的信号(2400bps接近其带宽极限了)。 2(红外键盘 ? 红外键盘原理图,如图11、12、13、14。 17 X大学成都学院本科毕业设计 图11 图12 图13 18 X大学成都学院本科毕业设计 图14 3.通用同步?异步收发器USART PIC16F87X单片机内部集成了两个类型不同的串行通信模块,即通用同步?异步收发器USART(universal synchronous?asynchronous receiver transmitter)模块和主控同步串行端口MSSP(master synchronous serial port)模块。前者的主要应用目标是系统之间的远距离串行通信;而后者的主要应用目标是系统内部近距离的串行扩展。与USART模块有关的寄存器有9个,都在RAM阵列中具有统一的地址编码。如表2所示。 表2 与USART模块相关的寄存器 寄寄存器内容 存寄存 寄存器 器 器符 地址 bit7 bit6 bit5 bit4 bit3 bit2 bit1 Bit0 名号 称 中 断 控 GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 制 INTCON 0BH/8BH/10BH/18BH 寄 存 器 第 一 外CCP1- TMR2- TMR1- PSPIF ADIF RCIF TXIF SSPIF PIR1 0CH IF IF IF 设 中 断 19 X大学成都学院本科毕业设计 标 志 寄 存 器 第 一 外 设 中 CCP1- TMR2- TMR1- PSPIE ADIE RCIE TXIE SSPIE 断 PIE1 8CH IE IE IF 屏 蔽 寄 存 器 C 口 方 TRISC TRISC TRISC TRISC TRISC TRISC TRISC TRISC 向 TRISC 87H 7 6 5 4 3 2 1 0 寄 存 器 发 送 状 态 兼 CSRC TX9 TXEN SYNC _ BRGH TRMT TX9D TXSTA 98H 控 制 寄 存 器 接SPEN RX9 SREN CREN ADDEN FERR OERR RX9D RCSTA 18H 收 20 X大学成都学院本科毕业设计 状 态 兼 控 制 寄 存 器 发 送 USART发送缓冲寄存器 寄TXREG 19H 存 器 接 收 寄RCREG 1AH USART接收缓冲寄存器 存 器 波 特 率 SPBRG 99H 对于波特率发生器产生波特率的定义值 寄 存 器 发送状态兼控制寄存器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是一个用户程序可读?写的寄存器。每次从对方传送过来的数据, 21 X大学成都学院本科毕业设计 用户都是从该缓冲器最后读取出来的。SPBRG寄存器是用来控制一个独立的8位定时器的溢出周期。该寄存器的设定值(0,255)与波特率成反比关系。在同步方式下波特率仅由这一个寄存器决定,在异步方式下则由BRGH位和该寄存器共同确定。 四、总结和体会 通过这次红外遥控的毕业设计,学习和使用芯片的具体应用,传感器的选用,明白了不同芯片外围接口使用时的工作方式。熟练掌握了它们的运用环境和使用时的方式控制,以及编程命令字的设置。进一步了解了所学芯片的基本的编程步骤及各种方式命令字的使用。将书本上所学的东西用在实际当中了,这加深了我们对可编程器件的理解。在这次设计过程中我有几点深刻的体会。 1.经过这次设计,我体会到应该掌握丰富的理论知识,理论知识是设计的前提。但同时又决不能局限于理论。如某些地方的元件取值,应该大胆的根据经验去判断。 2.平时课堂上所学习的知识大多比较陈旧,作为电子专业的学生,由于专业特点自己更要积极查阅当前的最新信息资料。一个人不可能什么都学过,什么都懂,因此,当你在设计过程中需要用一些不曾学过的东西时,就要去有针对性地查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识。 3.实践能力得到了进一步提高,在设计过程中积累了一些经验。 4.设计对以前学过的理论知识起到了回顾作用。在整个设计之中是对数字电路、模拟电路课程,单片机,微机原理等课程是综合应用,并对其加以进一步的消化和巩固,加深了对以前所学课程知识的掌握。 5.在设计过程中,深深感受到自己在对一些器件的了解上,还存在很大差距,对他们的功能,参数都不是太熟悉。但是通过这次理论与实际的结合之后,认识比以前有不少提高。 五、谢辞 首先感谢我的父母,正是你们的默默的付出,才让我完成大学四年的学习,养育之恩,无以回报,你们永远健康是我最大的幸福。还要感谢汪光宅老师,刘强老师,在毕业设计的制作过程中,老师们对我自始自终悉心教导、不断鼓励、 22 X大学成都学院本科毕业设计 一直督促我学习和制作,使我能够顺利完成毕业设计 ,也教给了我很多新的知识,令我获益匪浅。他们严谨的治学态度深深的影响着我,让我受益一生,不论是工作还是生活中。同时我还要感谢梁明华,孙伟,刘亮宇,苟庆松等同学,正是他们同时给我的帮助,才让我的毕业设计能够顺利完成。在此,对汪光宅老师、刘强老师以及给我提供帮助的同学致以诚挚的谢意。祝你们工作顺利,身体健康~ 附录 (一)红外键盘相关程序 用WHILE实现的延时程序 23 X大学成都学院本科毕业设计 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) { 24 X大学成都学院本科毕业设计 SCON = 0x50; //串口方式,允许接收 TMOD = 0x21; //定时器定时方式,定时为模式,位模式 TH1 = 0xFd; //设波特率为 TL1 = 0xFd; PCON = 0x00; //波特率不加倍控制,SMOD为 RI = 0; //清收发标志 TI = 0; TR1 = 1; //启动定时器 } (二)编码及解码程序 接收,程序如下 RF: BTFSC PORTB,2 GOTO RF1 BTFSS DOWNBIT CLRF RTCCOUNT BSF DOWNBIT BTFSS UPBIT RETLW 0 BTFSC IDBIT GOTO RF3 MOVLW 2AH SUBWF RTCCOUNT,0 BTFSS STATUS,0 GOTO RF2 MOVLW 36H SUBWF RTCCOUNT,0 BTFSC STATUS,0 GOTO RF2 BTFSC IDBIT GOTO RF3 25 X大学成都学院本科毕业设计 MOVLW .8 MOVWF LOOP MOVLW .3 MOVWF LOOPCOUNT CLRF DATACOUNT BSF IDBIT BSF DOWNBIT BCF UPBIT CLRF RTCCOUNT RETLW 0 RF1: BTFSS DOWNBIT RETLW 0 BSF UPBIT RETLW 0 RF2: BCF DOWNBIT BCF UPBIT BCF IDBIT CLRF RTCCOUNT RETLW 0 ;遥控接收 RF3: MOVLW 02H SUBWF RTCCOUNT,0 BTFSS STATUS,0 GOTO RF4 MOVLW 0CH SUBWF RTCCOUNT,0 BTFSS STATUS,0 GOTO RF4 GOTO RF2 26 X大学成都学院本科毕业设计 RF4: MOVLW 08H SUBWF RTCCOUNT,0 BTFSC STATUS,0 BSF 3H,0 MOVLW 07H SUBWF RTCCOUNT,0 BTFSS STATUS,0 BCF 3H,0 RLF DATACOUNT,1 BSF DOWNBIT BCF UPBIT CLRF RTCCOUNT DECFSZ LOOP,1 RETLW 0 MOVLW .8 MOVWF LOOP DECFSZ LOOPCOUNT RETLW 0 BSF RFBIT BCF DOWNBIT BCF UPBIT BCF IDBIT CLRF RTCCOUNT RETLW 0 ////////////////////////////////////////////////////////// TIME: BTFSC TIMEPD1 GOTO TIME1 MOVF RTCC,0 MOVWF TIMEONE 27 X大学成都学院本科毕业设计 BSF TIMEPD1 RETLW 0 ;定时查寻 TIME1: MOVF RTCC,0 SUBWF TIMEONE,0 BTFSC STATUS,2 RETLW 0 BCF TIMEPD1 INCF RTCCOUNT,1 RETLW 0 //////////////////////////////////////////////// 在这里我是用查询的方式来定时的(RTCCOUNT)只是在解码时不需要去追求时间精度;是去查RTCC有没有发生跳变,如有则表示时间过了 256US---RTCCOUNT加一;这样做有一个好处---你不必去管RTCC具体的值是多少,(RTCC去做精确的时钟定时;在这个查询的子程序中你可以去判断键扫,显示刷新等等) 发送:原理是接收的逆过程,如下 ;///////////////////////////////////////////////////////////////// ////////////////////////////// READDIGT: MOVF SENDLOOP,0 ADDWF PC,1 GOTO SENDC4 GOTO SENDC3 GOTO SENDC2 GOTO SENDC1 GOTO SENDC0 ;/////////////////////////////////// SENDC0: MOVF C4COUNT,0;;读要发的数据(假设要发5个字) RETURN 28 X大学成都学院本科毕业设计 SENDC1: MOVF C3COUNT,0 RETURN SENDC2: MOVF C2COUNT,0 RETURN SENDC3: MOVF C1COUNT,0 RETURN SENDC4: MOVF C0COUNT,0 RETURN ;/////////////////////////////////// SENDBIT: CLRF TIME BCF PORTB,1 SENDBIT1: CLRWDT MOVLW .35 SUBWF TIME,0 BTFSS STATUS,2 GOTO SENDBIT1 CLRF TIME BSF PORTB,1 SENDBIT2: CLRWDT MOVLW .18 SUBWF TIME,0 BTFSS STATUS,2 GOTO SENDBIT2 CLRF SENDLOOP ;码头数据发送 29 X大学成都学院本科毕业设计 ////////////////////////////////////////////// SENDBIT3: CLRWDT BCF INTCON,7 CALL READDIGT MOVWF SENDCOUNT BSF INTCON,7 CALL SENDDIGT INCF SENDLOOP,1 MOVLW .5 SUBWF SENDLOOP,0 BTFSS STATUS,2 GOTO SENDBIT3 CLRF TIME BCF PORTB,1 SENDDIGT5: CLRWDT MOVLW .2;;加发一个结束位 SUBWF TIME,0 BTFSS STATUS,2 GOTO SENDDIGT5 BSF PORTB,1 BSF STARTBIT RETURN ;///////////////////////////////////////////////////////////////// //////////////////////// SENDDIGT:;;实现0和1的发送 MOVLW .8 MOVWF LOOPSENDCOUNT SENDDIGTG BTFSS SENDCOUNT,7 30 X大学成都学院本科毕业设计 GOTO ZERSEND CLRF TIME SENDDIGT1: CLRWDT BCF PORTB,1 MOVLW .2 SUBWF TIME,0 BTFSS STATUS,2 GOTO SENDDIGT1 CLRF TIME SENDDIGT2: CLRWDT BSF PORTB,1 MOVLW .6 SUBWF TIME,0 BTFSS STATUS,2 GOTO SENDDIGT2 GOTO SENDOVER ZERSEND: CLRF TIME SENDDIGT3: CLRWDT BCF PORTB,1 MOVLW .2 SUBWF TIME,0 BTFSS STATUS,2 GOTO SENDDIGT3 CLRF TIME SENDDIGT4: CLRWDT BSF PORTB,1 31 X大学成都学院本科毕业设计 MOVLW .2 SUBWF TIME,0 BTFSS STATUS,2 GOTO SENDDIGT4 SENDOVER: RLF SENDCOUNT,1 DECFSZ LOOPSENDCOUNT GOTO SENDDIGTGO RETURN 参考文献 [1] 李学海编. PIC单片机实用教程——基础篇[M].北京航空航天大学出版社,2002 [2] 李学海编. PIC单片机实用教程——提高篇[M].北京航空航天大学出版社,2002 32 X大学成都学院本科毕业设计 [3] 贾伯年、俞朴、宋爱国.传感器技术[M].东南大学出版社,2007 [4] 张毅刚等.新编MCS----51单片机设计[M].哈尔滨工业大学出版社1997 [5] 李光飞、楼然苗、胡佳文、谢象佐.单片机课程设计与指导[M].北京航空航天大学出版社,2004 [6] 余永权.ATMEL89系列单片机应用技术[M].北京航空航天大学出版社,2002 [7] 杨颂华、冯毛官、孙万蓉、胡力山.数字电子技术基础[M].西安电子科技大学出版社,2006 [8] 中国电子制作论坛.单片机学习指南[J].中国电子制作论坛,2009 [9] 向达兵、陈宇.在单片机开发应用中应当注意的几个关键点[J].今日科苑,2008 33
本文档为【基于PIC单片机的红外遥控设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_219945
暂无简介~
格式:doc
大小:200KB
软件:Word
页数:0
分类:互联网
上传时间:2017-09-25
浏览量:33