ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:616.75KB ,
资源ID:12756010      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12756010.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(红外遥控与点阵显示器件的应用.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

红外遥控与点阵显示器件的应用.docx

1、红外遥控与点阵显示器件的应用1 软件及原理介绍1.1 Protuse 软件简介Proteus具有和其他EDA工具一样的原理图编辑、印刷电路板(PCB)设计及电路仿真功能,最大的特色是其电路仿真的交互化和可视化,如图2-1所示。通过Proteus软件的VSM(虚拟仿真模式),用户可以对模拟电路、数字电路、模数混合电路、单片机及外围元器件等电子线路进行系统仿真。Proteus软件由ISIS和ARES两部分构成,其中ISIS是一款便捷的电子系统原理设计和仿真平台软件,ARES是一款高级的PCB布线编辑软件。Proteus ISIS是一种操作简便而又功能强大的原理图编辑工具,它运行于Windows操作

2、系统上,可以仿真、分析各种模拟器件和集成电路,该软件的特点有: 实现了单片机仿真和SPICE电路仿真的结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真等功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 支持主流单片机系统的仿真。目前支持的单片机类型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因

3、此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。 具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的电路设计和仿真软件,功能极其强大。PROTEUS还有使用极方便的印刷电路板高级布线编辑软件(PCB)。特别指出,PROTEUS库中数千种仿真模型是依据生产企业提供的数据来建模的。因此,PROTEUS设计与仿真极其接近实际。 目前,PROTEUS已成为流行的单片机系统设计与仿真平台,应用于各种领域。实践证明:PROTEUS是单片机应用产品研发的灵活、高效、正确的设计与仿真平台,它明显提高了研发效率、

4、缩短了研发周期,节约了研发成本。PROTEUS的问世,刷新了单片机应用产品的研发过程。1.2 Keil软件简介 KEIL是德国开发的一个51单片机开发软件平台,最开始只是一个支持C语言和汇编语言的编译器软件。后来随着开发人员的不断努力以及版本的不断升级,使它已经成为了一个重要的单片机开发平台,不过KEIL的界面并不是非常复杂,操作也不是非常困难,很多工程师的开发的优秀程序都是在KEIL的平台上编写出来的。可以说它是一个比较重要的软件,熟悉他的人很多很多,用户群极为庞大,要远远超过伟福等厂家软件用户群,操作有不懂的地方只要找相关的书看看,到相关的单片机技术论坛问问,很快就可以掌握它的基本使用了。

5、单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(u

6、Vision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。我们将通过一些实例来学习Keil软件的使用,在这一部份我们将学习如何输入源程序,建立工程、对工程进行详细的设置,以及如何将源

7、程序变为目标代码。1.3单片机介绍单片机也被称为微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为

8、性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。

9、现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利

10、条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!2设计原理或方法2.1 主要模块介绍2.1.1 MCS-51单片机的结构及编程方法51单片机内包含下列几个部件:一个8位CPU;一个片内振荡器及时钟电路;4KB ROM程序存储器;128B RAM数据存储器;可寻址64KB外部数据存储器和64KB外部程序存储器空间的控制电路;32条可编程的I/O线(4个8位并

11、行I/O端口);两个16位的定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套中断结构。 图1 8051单片机的组成框图(1)cpu中央处理器运算器运算器的功能是进行算数、逻辑运算。它可以对半字、单字节等数据进行操作。运算器还包含有一个布尔处理器,用来处理位操作。程序计数器PC 程序计数器PC是一个自动加1的16位寄存器,用来存放即将要取出的指令码的地址,可对64KB程序存储器直接寻址。指令寄存器指令寄存器用于存放指令代码。CPU执行指令时,由程序存储器中读出的指令代码送入指令寄存器,经指令译码器后由定时与控制电路发出相应的控制信号,完成指令功能。(2)存储器MCS-51单片机按

12、程序存储器可分为内部无ROM型(如8031)和内部有ROM型(如8051)两种,连接时 引脚有区别。如右图所示:程序存储器 :一般将只读存储器(ROM)用做程序存储器。(3)特殊功能寄存器(SFR) MCS-51有21个特殊功能寄存器(也称为专用寄存器),包括算术运算寄存器、指针寄存器、I/O口锁存器、定时器/计数器、串行口、中断、状态、控制寄存器等。 图2 80C51内部结构(4)I/O接口 I/O接口是MCS-51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。8051内部有4个8位并行接口P0, P1, P2, P3,有1个全双工的可编程串行I/

13、O接口。(5)定时器/计数器 8051内部有两个16位可编程序的定时器/计数器,均为二进制加1计数器,分别命名为T0和T1。(6)中断系统 8051可处理5个中断源(2个外部,3个内部)发出的中断请求,并可对其进行优先权处理。外部中断的请求信号可以从P3.2, P3.3引脚上输入,有电平或边沿两种触发方式;内部中断源有3个,2个定时器/计数器中断源和1个串行口中断源。8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成。2.1.2 16*16点阵LED 88单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的叉点上。下图为88点阵LED外观及引脚图,其等效

14、电路如下图所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。图3 88点阵外观及引脚图 图4 8X8 LED 点阵等效电路 LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以1616点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;.第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的

15、视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达

16、到重叠处理的目的,列数据的显示就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。LED点阵显示模块进行的方法有两种:(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):此时用一个P口输出决

17、定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。能亮的行从上向下扫描完16行(相当于位码循环移位16次)即显示一帧完整的图像。2.1.3 红外控制相关介绍红外遥控系统由发射和接收两大部份组成,应用编/解码专用集成电路芯片来进行控制操作,如图1 所示。发射部份包括键盘矩阵、编码调制、LED红外发送器;接收部份包括光、电转换放大器、解调、解码电路。 图5 红外遥控系统框图HT6221 键码的形成:当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽

18、为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。2.2 设计方案介绍2.2.1 设计总体思路 本次课程设计的要求是利用红外遥控器控制,在1616点阵的显示器件上循环显示“武汉理工大学”6个汉字,控制项目:循环显示的速度可调,循环显示进入方向(从左至右、从右至左、从上到下、从下往上)。由于要用16*16点阵显示汉字,而80C51的I/O接口是8位的,我们可以用4个8*8点阵来组成。由于80C51的I/O口不多(只有4组,32个),为了节约I/O口,我们用74HC154(4

19、线-16译码器)作为点阵的列驱动,P2口和P0口作为数据线。为了显示16*16的点阵汉字,我们需建一个表先将要显示的汉字的点阵码存起来,然后编写一个合适的查表程序就可以按给定要求显示汉字。至于改变汉字移动的速度,可以通过用按键改变汉字在LED上的显示时间来改变,通过改变的数值大小就可以改变汉字的移动速度。2.2.2 与题目相关的具体设计汉字的显示:可以采用扫描的方式,先使一个I/O口产生一个选行(列)信号(通过74HC154),先选中一行,对选中的行进行扫描,然后用另外2组I/O口输送数据,这样一个字的1/16就送到LED点阵上了,接着选下一行,这样经过16次就可以显示一个字了,再适当延时使显

20、示的字清晰。汉字的移动:在LED上显示一个汉字并延时后,可以通过增加所取表的地址(加2);这样下一次LED上显示的字就移动了一个点阵,可以通过适当的设计来控制汉字移动循环的的次数。汉字的左右上下移动:可以通过建立不同的表,来实现汉字的各种移动,或者改变查表的方式来实现。3系统硬件线路设计图4程序框图 系统初始化 选点阵行号并增一 是 否 是 否是 否 显示驱动程序流程图 是 否是否是否否是否系统主程序流程图5 资源分配 P1.0到P1.3接74HC154(4-16译码器)给16*16点阵提供选行信号。P0.0到P0.7接16*16点阵的上半块作为数据线,给16*16点阵上部提供数据,点亮相应的

21、LED,P2.0到P2.7接16*16点阵的下半块作为数据线,给16*16点阵下部提供数据,点亮相应的LED。P1.4接开关,用于控制移动速度(减慢移动速度),P1.5接开关,用于控制移动速度(加快移动速度),P1.6接开关,用于控制系统的显示是否开始。P1.0-P1.3接译码器P0.0-P0.7接16*16点阵的上半块作为数据线P2.0-P2.7接16*16点阵的下半块作为数据线P3.7接红外6 源程序#include #define uchar unsigned char#define uint unsigned intsbit key0=P37;sbit key1=P32;uchar z

22、t,z,speed,flag;uchar code hanzi=0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/武, 0xfb,0x0fb,0xfb,0xf9,0xdb,0x03,0xdb,0xfb, 0xdb,0xfb,0xd8,0x07,0x9b,0x77,0xdb,0x77, 0xfb,0xf7,0x00,0x3f,0

23、xfb,0xc7,0xbb,0xfb, 0xcb,0xfd,0xfb,0xfe,0xfb,0xf8,0xff,0xff,/汉, 0xf7,0xdf,0xbb,0xdf,0xd9,0x81,0xcf,0x7f, 0xfe,0xfe,0xdf,0xfd,0xd1,0xfb,0xde,0x77, 0xdf,0xaf,0xdf,0xdf,0xdf,0x2f,0xdc,0xf7, 0x83,0xf9,0xdf,0xfc,0xff,0xfd,0xff,0xff,/理, 0xdd,0xf7,0xdd,0xf3,0xc0,0x07,0x9d,0xef, 0xdd,0xed,0xff,0xed,0x80,0xd

24、d,0xb6,0xdd, 0xb6,0xdd,0x80,0x01,0xb6,0xdd,0xb6,0x9d, 0x00,0xdd,0xbf,0xf9,0xff,0xfd,0xff,0xff,/工, 0xff,0xfb,0xdf,0xfb,0xdf,0xfb,0xdf,0xfb, 0xdf,0xfb,0xdf,0xfb,0xdf,0xfb,0xc0,0x03, 0xdf,0xfb,0xdf,0xfb,0xdf,0xfb,0xdf,0xfb, 0x9f,0xfb,0xdf,0xf3,0xff,0xfb,0xff,0xff,/大, 0xfb,0xff,0xfb,0xfd,0xfb,0xfd,0xfb,

25、0xfb, 0xfb,0xf7,0xfb,0xcf,0xfa,0x3f,0x01,0xff, 0xfa,0x7f,0xfb,0x9f,0xfb,0xef,0xfb,0xf7, 0xfb,0xfb,0xf3,0xf9,0xfb,0xfb,0xff,0xff,/学, 0xfd,0xdf,0xf3,0xdf,0x77,0xdf,0x96,0xdf, 0xf6,0xdf,0xf6,0xdd,0x76,0xde,0x96,0x81, 0xf6,0x9f,0xf6,0x5f,0xe6,0xdf,0xd7,0xd7, 0x37,0xdf,0xf5,0x9f,0xf3,0xdf,0xff,0xff,0xff,

26、0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,;uchar code lie=0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff;void delay(uchar x) /延时函数 uchar i,j; for(i=0;ix;

27、i+) for(j=0;j120;j+);void scanf_dir() /判断按键 if(key0=0) delay(3); if(key0=0) zt+; while(!key0); if(zt=4) zt=0; /显示汉字 将编号为c的汉字从第b条开始显示n条到屏幕的l条开始void left() /左移动 uchar i,zishu,x; P1=0x00; for(zishu=0;zishu6;zishu+) /6个字 P0=0xff; P2=0xff; for(x=0;x16;x+)/从左向右移动16次,(第一屏、第二屏。) if(zt!=0) break; for(z=0;zsp

28、eed;z+)/改变在z的值可以调整移动速度 for(i=0;i16;i+)/16列循环显示 scanf_dir(); if(zt!=0) break; P1=liei; P0=hanzi2*i+zishu*32+x*2; P2=hanzi2*i+zishu*32+x*2+1; /*例:开始显示第一列,显示数组的P0第一个数据和P1第二个数据 第二列,显示数组的P0第三个P1第四个数据.当显示第二屏时,第一列显示的为数组的 第五个和第六个数据,第二列为第7和第8个数据,当显示第十六屏的时候,第一列显示的数据 为第33和第34个,第二列为第35个和36个,即加了32*zishu个 */ dela

29、y(3); P0=0xff; P2=0xff; void showc(uchar c,uchar b,uchar n,uchar l) /右移动辅助函数 uchar i; for(i=0;in;i+) scanf_dir(); if(zt!=1) break; P1=liei+l; P0=hanzic*32+i*2+b*2; P2=hanzic*32+i*2+1+b*2; delay(3); P0=0xff; P2=0xff; void right()/右移动 uchar i,zishu; P1=0x00; for(zishu=0;zishu6;zishu+) for(i=0;i16;i+)

30、if(zt!=1) break; for(z=0;zspeed;z+)/这个可以调整移动速度 showc(zishu,0,16-i,i); showc(zishu+1,15-i,i,0); void up()/上移动 uchar i,zishu,y,n; uchar t1,t2,t3; P1=0x00; for(zishu=0;zishu6;zishu+) P0=0xff;P2=0xff; for(n=0;n2;n+) for(y=0;y8;y+) if(zt!=2) break; for(z=0;zspeed;z+)/可以调整移动速度 for(i=0;i16;i+) scanf_dir(); if(zt!=2) break; if(n=0) t1=hanzi2*i+zishu*32; t2=hanz

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

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