单片机遥控.docx

上传人:b****5 文档编号:8020571 上传时间:2023-01-28 格式:DOCX 页数:25 大小:138.74KB
下载 相关 举报
单片机遥控.docx_第1页
第1页 / 共25页
单片机遥控.docx_第2页
第2页 / 共25页
单片机遥控.docx_第3页
第3页 / 共25页
单片机遥控.docx_第4页
第4页 / 共25页
单片机遥控.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

单片机遥控.docx

《单片机遥控.docx》由会员分享,可在线阅读,更多相关《单片机遥控.docx(25页珍藏版)》请在冰豆网上搜索。

单片机遥控.docx

单片机遥控

目录

摘要1

第1章绪论3

第2章系统总体设计方案5

2.1设计总框图5

2.1.1红外发射部分5

2.1.2红外接收部分6

第3章硬件电路设计7

3.1芯片选型7

3.2液晶显示器(LCD)8

3.2.1LCD简介8

3.2.2LCD控制方式9

3.2.3LCD初始化与显示流程9

3.3晶振电路10

3.4复位电路11

3.5键盘12

第4章程序流程图14

第5章:

仿真和调试15

5.1软件特点及介绍15

5.2系统概述及整体结构16

5.2.1系统概述16

5.2.2KeilC51单片机软件开发系统的整体结构16

总结18

附录19

附录1参考文献19

附录2总体原理图20

附录3程序清单22

摘要

单片机遥控应用系统要求用单片机作为控制芯片制作一个遥控器,另一个单片机控制系统能被遥控操作。

什么是遥控系统呢?

我们定义:

能对相隔一定距离的被测对象进行测量、分析处理和显示记录的系统。

通常由输入设备、数据传输设备和终端设备组成。

红外线编码是数据传输和家用电器遥控常用的一种通讯方法,其实质是一种脉宽调制的串行通讯。

这里就以这些电路的编码格式来仿真怎样使用单片机的捕获中断功能来实现其解码。

红外线通讯的发送部分主要是把待发送的数据转换成一定格式的脉冲,然后驱动红外发光管向外发送数据。

接收部分则是完成红外线的接收、放大、解调,还原成同步发射格式相同(但高、低电位刚好相反的脉冲信号)。

这些工作通常由一体化的接收头来完成,主要输出TTL兼容电平。

最后通过解码把脉冲信号转换成数据,从而实现数据的传输。

关键字:

单片机;红外发射;红外接收。

第1章绪论

随着电子技术的飞速发展,新型大规模遥控集成电路的不断出现,使遥控技术有了日新月异的发展。

遥控装置的中心控制部件已从早期的分立元件、集成电路逐步发展到现在的单片微型计算机,智能化程度大大提高。

近年来,遥控技术在工业生产、家用电器、安全保卫以及人们的日常生活中使用越来越广泛。

常见的遥控电路一般有如下几种类型:

声控、光控、无线电遥控、红外遥控等等。

1.声控方式

声控就是用声音去控制对象动作,一般采用驻极体话筒或压电陶瓷片作为传感元件来拾取声音,通过电路放大驱动后级电子开关动作。

为防止外界音频干扰,可以采用超声波控制,但也有故意选用声频来进行控制的,比如用小孩发出的声音频率去控制声控玩具娃娃的哭笑动作等。

2.光控方式

简单的单通道光控电路是利用光敏管受光以后内阻发生变化使电子开关的状态发生变化,传感器有光敏二极管、光敏三极管、光敏电阻、光敏电池等等(早期生产的玻璃壳封制晶体管,刮掉外面黑色遮光油漆后就是一个不错的光敏管。

)。

这个光源既可以是可见光,也可以是红外线等不可见光源,不同的光敏元件有着不同的光谱。

复杂一些的光控电路则能够完成多通道开关或模拟量变化控制,应用极其广泛,可以说家家都有。

3.无线电遥控方式

无线电遥控电路比起声控或光控电路复杂多了,但控制距离也更远是它的主要特点,光控、声控电路一般仅有几米到十几米的作用距离,而无线电遥控视不同的应用场合近可以是零点几米,远则可以超越地球到达太空!

它由发射电路和接收电路2部分组成,当接收机收到发射机发出的无线电波以后驱动电子开关电路工作。

所以它的发射频率与接收频率必须是完全相同的。

根据其发射的高频波形有等幅、调幅、调频、数字脉冲发射机,根据其控制的开关数目有单通道遥控和多通道遥控等。

4.红外遥控方式

红外遥控就是把红外线作为载体的遥控方式。

由于红外线的波长远小于无线电波的波长,因此在采用红外遥控方式时,不会干扰其他电器的正常工作,也不会影响临近的无线电设备。

同时,由于采用红外线遥控器件时,工作电压低,功耗小,外围电路简单,因此它在日常工作生活中的应用越来越广泛。

常用的红外遥控系统一般分发射和接收两个部分。

发射部分的主要元件为红外发光二极管。

它实际上是一只特殊的发光二极管;由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。

目前大量的使用的红外发光二极管发出的红外线波长为940mm左右。

红外遥控的特点是不影响周边环境的、不干扰其他电器设备。

由于其无法穿透墙壁,故不同房间的家用电器可使用通用的遥控器而不会产生相互干扰;电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作;编解码容易,可进行多路遥控。

由于各生产厂家生产了大量红外遥控专用集成电路,需要时按图索骥即可。

因此,现在红外遥控在加用电器、室内近距离(小于10米)遥控中得到了广泛的应用。

第2章系统总体设计方案

2.1设计总框图

根据任务书的要求,利用单片机设计一个遥控电路。

红外线发射/接收控制电路均采用单片机来实现,输出控制方式可选择,实用性强。

这种遥控电路不需要使用较贵的专用编译码器,因此成本较低。

2.1.1红外发射部分

当按下遥控按钮时,单片机产生相应的控制脉冲,由红外发光二极管发射出去。

 

2.1.2红外接收部分

当红外接收器接收到控制脉冲后,通过控制方式传给单片机,由单片机处理后,在液晶显示器上显示。

第3章硬件电路设计

3.1芯片选型

此次毕业设计主要分为红外接收部分与红外发射部分,所以我们必须用两块单片机,因此在红外发射部分我们选用的是单片机AT89C52,红外接收部分我们选用的是单片机AT89C51。

首先我们看看发射部分的单片机AT89C52有什么特点呢?

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM)。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线。

其中:

P3^2/INT0是外部中断0;

P3^3/INT1是外部中断1;

P3^4/T0定时器/计数器T0计数输入端;

P3^5/T1定时器/计数器T1记数输入端;

单片机AT89C52主要功能特性:

兼容MCS51指令系统,8k可反复擦写1000次FlashROM;

32个双向I/O口,256x8bit内部RAM;

3个16位可编程定时/计数器中断,时钟频率0-24MHz;

2个串行中断,可编程UART串行通道;

2个外部中断源,共6个中断源;

2个读写中断口线,3级加密位;

低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。

接着,我们再来看看接收部分的单片机AT89C51的特点。

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。

AT89C51是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

其主要特性如下:

与MCS-51兼容;

4K字节可编程闪烁存储器;

寿命:

1000写/擦循环;

数据保留时间:

10年;

128×8位内部RAM;

32可编程I/O线;

两个16位定时器/计数器;

5个中断源;

可编程串行通道;

低功耗的闲置和掉电模式。

3.2液晶显示器(LCD)

3.2.1LCD简介

此次毕业设计使用的是液晶显示器(如图3-1)作为显示工作,D0~D7口为双向数据总线。

LCD数据读写方式可以分为8位和4位两种,以8位数据进行读写操作,则D0~D7都有效;若以4位方式进行读写操作,则只用到D7~D4。

RS为寄存器选择控制位,当RS=0时,并且做写入动作时,可以写入指令寄存器;若当RS=0时,且做读取动作时,可以读取忙标志及及地址计数器的内容;若RS=1时则用于读取数据寄存器。

R/W是LCD的读写控制线。

当R/W=0时,LCD执行写入动作,R/W=1时则做读取的动作。

图3-1液晶显示器(LCD)

3.2.2LCD控制方式

通过CPU来控制LCD模块,方式十分简单,LCD模块的内部可以看成有两组寄存器,一个为指令寄存器,一个为数据寄存器,由RS引脚控制。

所有对指令寄存器或数据寄存器的存取均需检查LCD内部的忙标志(BusyFlag),此标志用来告知LCD内部正在工作,并不允许接收任何的控制指令。

而此位的检查可以令RS=0时,读取位7加以判断,当此位为0时,才可以写入指令寄存器或数据寄存器。

3.2.3LCD初始化与显示流程

从通电开始通过延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示状态(如设置行、位或阵列)再经过延时后清屏后再可以设置输入方式。

经过显示速度测试实现与LCD的速度匹配后,就可以实现对液晶的初始化、清屏和显示等操作了,而实现这些操作最基本的函数是对液晶控制器指令的操作函数,其显示实现过程如图所示。

这些操作主要功能如下:

(1)LCD初始化。

主要包括对控制器的显示频率、显示行数及显示缓冲区地址的设置。

(2)LCD清屏。

由于系统上电时,显示缓冲区的数据是不固定的,显示出乱码;因此在液晶显示操作之前应将缓冲区清零。

(3)数据显示。

液晶初始化结束后,系统将采集来的信号通过处理后用文字、图形等显示到LCD上。

3.3晶振电路

80C51芯片内部有一个用于构成振荡器的高增益反相放大器,输入端引脚为XTAL1,输出端引脚为XTAL2。

当工作于内部时钟方式时硬件电路如图3-2所示。

在芯片外部,XTAL1和XTAL2之间跨接晶体振荡器和两个微调电容,和芯片内部的振荡器电路构成一个稳定的自激振荡器,在XTAL2引脚上会输出一个3V左右的正弦波微调电容的主要功能就是协调振荡频率的及帮助振荡器起振的,取值为30pF,而一般晶振的对应取值就是12MHz

图3-3晶振电路

3.4复位电路

什么是单片机的复位电路呢?

复位是单片机的初始化操作。

单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。

因而,复位是一个很重要的操作方式。

但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。

(如图3-3)

图3-4复位电路

3.5键盘

键盘的组成与构造

键盘的内部结构主要包括控制电路板、按键、底板和面板等。

电路板是整个键盘的控制核心,位于键盘的内部,主要担任按键扫描识别、编码和传输接口工作;它将各个键所表示的数字或字母转换成计算机可以识别的信号,是用户和计算机之间主要的沟通者之一。

键盘主要由键开关矩阵、单片机和译码器三大部分组成。

键开关矩阵即键盘按键由一组排列成矩阵方式的按键开关组成,所输入的信号由按键所在的位置决定。

单片机即键盘内部采用的Intel 8048单片机微处理器,这是一个40引脚的芯片,内部集成了8位CPU、1024×8位的ROM、64×8位的RAM以及8位的定时器/计数器等。

译码器即信号编码转译装置,把键盘的字符信号通过编码翻译转换成相应的二进制码。

由于键盘排列成矩阵格式,被按键的识别和行列位置扫描码的产生,是由键盘内部的单片机通过译码器来实现的。

根据键盘向主机送入的二进制代码类型,可把键盘分为编码键盘和非编码键盘两种。

IBMPC机的键盘属于非编码键盘,其特点是不直接提供所按键的编码信息,而是用较为简单的硬件和一套专用程序来识别所按键的位置,并提供与所按键相对应的中间代码,然后再把中间代码转换成要对应的编码。

这样,非编码键盘就为系统软件在定义键盘的某些操作功能上提供了更大的灵活性。

图3-5键盘

第4章程序流程图

第5章:

仿真和调试

Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。

5.1软件特点及介绍

该软件的特点:

全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。

具有模拟电路仿真、数字电路仿真、单片机及外围电路组成的系统的仿真、RS—232动态仿真、IC调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

支持大量的存储器和外围芯片。

总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真51、AVR、PIC。

Keil软件介绍

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。

机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言的逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持kei即可看出。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。

掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

KeilC51开发系统基本知识KeilC51开发系统基本知识

5.2系统概述及整体结构

5.2.1系统概述

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与湖边相比,C语言在功能上、结构上、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后在使用C来开发,体会更加深刻。

KeilC51软件提供丰富的库函数和强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

下面详细介绍KeilC51开发系统各部分功能和使用。

5.2.2KeilC51单片机软件开发系统的整体结构

C51工具包的整体结构中,其中uVision与Ishe11分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及A51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

采用Keil开发的89c51单片机应用程序一般需要以下步骤:

在uVision集成开发环境中创建新项目(Project),扩展名为.UV2,并为该项目选定合适的单片机CPU器件(本设计采用ATMEL公司下的AT89C52)。

用uVision的文件编辑器编写源文件,可以是汇编文件(.ASM),也可以使用C语言文件(扩展名.C),并将该文件添加到项目中去。

一个项目文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件。

通过uVision2的相关选择项,配置编译环境、链接定位器以及Debug调试器的功能。

对项目中的源文件进行编译连接,生成绝对目标代码和可选的Hex文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个项目。

对没有语法错误的程序进行仿真调试,调试成功后将Hex文件写入到单片机系统的ROM中。

总结

经过几个月的努力,我们在王老师的细心指导下,并按照任务书的要求实现了此次毕业设计——单片机遥控系统的应用设计。

让我了解了红外遥控的一些发展状况及一些基础知识。

这些知识是书本上没有的,所以倍显珍贵。

并让我了解用单片机开发产品的详细过程,清楚了设计的概念。

充分调动我在网上、书本上寻找相关资料,通过老师指导分析调试完成了毕业设计。

明白了理论与实践相结合的含义,并发挥了我们团队协作的优势及个人能力。

让我在以后的岗位上注意团队所带来的成效,时刻都提醒我要仔细认真。

在这里,王老师以和蔼负责的态度为我们讲解了许多的问题,在这里向老师表示由衷的感谢。

附录

附录1参考文献

李建华.实用遥控器原理与制作,人民邮电出版社;

李华.MCS-51系列单片机实用接口技术.航天航空大学出版社;

何立民.MCS-51系列单片机应用系统设计,系统配置与接口技术.北京航天航空大学;

林志琦.单片机原理接口及应用.中国水利水电出版社;

胡辉.单片机原理与应用.中国水利水电出版社;

附录2总体原理图

附图1总体电路原理图

附图2红外发送电路部分

附图3红外接收电路部分

附录3程序清单

/**************************************************************/

//send.c

//遥控发射器

/**************************************************************/

#include"At89x51.h"

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#defineJINGZHEN48

#defineTIME0TH((65536-100*JINGZHEN/12)&0xff00)>>8//time0,100us,红外遥控

#defineTIME0TL((65536-100*JINGZHEN/12)&0xff)

#defineTIME1TH((65536-5000*JINGZHEN/12)&0xff00)>>8

#defineTIME1TL((65536-5000*JINGZHEN/12)&0xff)

#defineucharunsignedchar

#defineuintunsignedint

codeucharBitMsk[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};

uintIrCount=0,Show=0,Cont=0;

ucharIRDATBUF[32],s[20];

ucharIrDat[5]={0,0,0,0,0};

ucharIrStart=0,IrDatCount=0;

externvoidinitLCM(void);//LCD初始化子程序

externvoidDisplayListChar(ucharX,ucharY,unsignedchar*DData);

voidtimer1int(void)interrupt3using3//定时器1

{

EA=0;

TH1=TIME1TH;

TL1=TIME1TL;

Cont++;

if(Cont>10)Show=1;

EA=1;

}

voidtimer0int(void)interrupt1using1//定时器0

{

uchari,a,b,c,d;

EA=0;

TH0=TIME0TH;

TL0=TIME0TL;

if(IrCount>500)IrCount=0;

if(IrCount>300&&IrStart>0){IrStart=0;IrDatCount=0;IrDat[0]=IrDat[1]=IrDat[2]=IrDat[3]=0;IrCount=0;}

if(IrStart==2)

{

IrStart=3;

for(i=0;i

{

if(i<32)

{

a=i/8;

b=IRDATBUF[i];

c=IrDat[a];

d=BitMsk[i%8];

if(b>5&&b<14)c|=d;

if(b>16&&b<25)c&=~d;

IrDat[a]=c;

}

}

if(IrDat[2]!

=~IrDat[3])

{

IrStart=0;IrDatCount=0;IrDat[0]=IrDat[1]=IrDat[2]=IrDat[3]=0;IrCount=0;

}

EA=1;

return;

}

IrCount++;

EA=1;

}

voidint0()interrupt0using0

{

EA=0;

if(IrStart==0)

{

IrStart=1;IrCount=0;TH0=TIME0TH;TL0=TIME0TL;

IrDatCount=0;EA=1;

return;

}

if(IrStart==1)

{

if(IrDatCount>0&&IrDatCount<33)

IRDATBUF[IrDatCount-1]=IrCount;

if(IrDatCount>31)

{IrStart=2;TH0=TIME0TH;TL0=TIME0TL;EA=1;return;}

if(IrCount>114&&IrCount<133&&IrDatCount==0)

{IrDatCount=1;}elseif(IrDatCount>0)IrDatCount++;

}

IrCount=0;TH0=TIME0TH;TL0=TIME0TL;

EA=1;

}

/******************主程序****************/

main()

{

uchar*a,n;

TMOD|=0x011;

TH0=TIME0TH;

TL0=TIME0TL;

ET0=1;

TR0=1;

ET1=1;

TR1=1;

IT0=1;//下降沿

EX0=1;

initLCM();

EA=1;

/**************按键扫描程序**************/

for(;;)

{

if(Show==1)

{

Show=0;

Cont=0;

DisplayListChar(0,1,"Pleasekeys");

a="";

switch(IrDat[3])

{

case0x12:

//ON/C

a="ON/C";

break;

case0x0b:

//±

a="+/-";

break;

case0x1a:

//+

a="+";

break;

case0x1e:

//-

a="-";

break;

case0x0e:

//÷

a="/"

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1