红外遥控器的设计用单片机制作通用性电视遥控器.docx

上传人:b****6 文档编号:9049341 上传时间:2023-02-02 格式:DOCX 页数:16 大小:218.83KB
下载 相关 举报
红外遥控器的设计用单片机制作通用性电视遥控器.docx_第1页
第1页 / 共16页
红外遥控器的设计用单片机制作通用性电视遥控器.docx_第2页
第2页 / 共16页
红外遥控器的设计用单片机制作通用性电视遥控器.docx_第3页
第3页 / 共16页
红外遥控器的设计用单片机制作通用性电视遥控器.docx_第4页
第4页 / 共16页
红外遥控器的设计用单片机制作通用性电视遥控器.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

红外遥控器的设计用单片机制作通用性电视遥控器.docx

《红外遥控器的设计用单片机制作通用性电视遥控器.docx》由会员分享,可在线阅读,更多相关《红外遥控器的设计用单片机制作通用性电视遥控器.docx(16页珍藏版)》请在冰豆网上搜索。

红外遥控器的设计用单片机制作通用性电视遥控器.docx

红外遥控器的设计用单片机制作通用性电视遥控器

天津城建大学

课程设计任务书

2013—2014学年第1学期

控制与机械工程学院电气工程及其自动化专业2班级

课程设计名称:

单片机原理及应用A

设计题目:

用单片机制作通用型电视遥控器

完成期限:

自2014年1月6日至2014年1月10日共1周

设计依据、要求及主要内容:

一.程设计的目的

1.进一步熟悉和掌握单片机的结构及工作原理。

2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。

4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

5.通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应打下基础。

二.课程设计的基本要求

1.认真认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。

2.提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。

3.提高独立分析、解决问题的能力,逐步增强实际应用训练。

4.课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。

5.课程设计说明书封面格式要求见《天津城市建设学院课程设计教学工作规范》附表1。

三.课程设计具体要求

a)要求每位同学独立完成设计任务。

b)原理图设计。

1.原理图设计要符合项目的工作原理,连线要正确。

2.图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。

3.原理图要完整,CPU,外围器件,扩器接口,输入/输出装置要一应俱全。

c)程序调计

1.根据要求,将总体项能分解成若干个子功能模块,每个功能模块完成一个特定的功能。

2.根据总体要求及分解的功能模块,确定各功能模块之间的关系,设直出完整的程序流程图。

d)设计说明书

1.原理图设计说明

简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。

2.程序设计说明

对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。

3.画出工作原理图,程序流程图如并给出相应的程序清单。

四.设计任务

用MCS-51系列单片机AT89C52代替专用遥控芯片的设计方案,通过软件模拟实现了电视机遥控编码的发射,并且达到“一器多用”

 

指导教师(签字):

系主任(签字):

批准日期:

2014年1月10日

一、绪论

在现在社会及家庭的各种家用电器产品和娱乐设施中,一般都采用红外线遥控技术。

红外遥控器电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作,而且红外遥控编解码容易,还可以进行多路遥控。

目前红外线遥控技术已经在电视机中得到了广泛的应用。

电视机遥控器使用的是专用集成发射芯片来实现遥控器的发射,如东芝TC9012,飞利浦SAA3010T等。

这些芯片价格贵,且互相之间采用的遥控格式互不兼容,所以各机型遥控器通常只能针对各自的遥控对象而无法通用。

本设计利用低成本的MCS-51系列来实现遥控器的模拟发射,并实现遥控器的通用化。

 

二、功能要求和设计原理

2.1功能要求

通用红外遥控系统由发射和接收两大部分组成,发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调电路和解码电路。

遥控信号发射装置通过将某个按键所对应的控制指令调制在38KHz范围内的载波上,然后经放大、驱动红外发射管将信号发射出去。

遥控接收头通过对遥控信号的放大、检波、整形、解调出遥控编码脉冲。

图1红外遥控系统总体框图

本设计采用MCS-51系列单片机AT89C52代替专用遥控发射芯片,通过软件模拟实现了电视机遥控编码的发射,具有编程灵活多样,操作码个数可随意设定等优点,并且可以达到“一器多用”。

2.2遥控器发射设计原理

目前市场上一般设备系统采用专用的遥控编码芯片,制作比较简单容易,但由于功能键数及功能受到特定的限制,只适合用于某一专用电器产品的应用,应用范围受到限制。

而采用单片机进行遥控系统的应用设计,具有编程灵活多样,操作码个数可随意设定等优点。

 

 

图2遥控发射器总体结构图

 

三、遥控发射器硬件电路及其组成

3.1遥控发射器硬件电路图

遥控发射器电路主要由下面几部分组成:

AT89C52单片机,低功率损耗电路,红外线发射电路以及由P0口和P2口搭成8×8按键矩阵。

当无键按下时,单片机处于低功耗空闲状态。

当有键按下时,产生的外中断请求信号(低电平有效)经八输入与非门和非门后送至P3.2端,使CPU进入中断处理,同时点亮按键指示灯。

系统产生的遥控编码信号通过P3.5端发出,经放大后驱动发射管发射出去。

图3遥控器硬件电路总图

3.2键盘电路

3.2.1键输入原理

在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。

当所设置的功能键或数字键按下时,应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。

对于一组键或一个键盘,总有一个接口电路与CPU相连。

CPU可以采用查询或中断方式了解有无按键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。

3.2.2按键结构与特点

机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有——定时间的触点机械抖动,然后其触点才稳定下来。

抖动时间的长短与开关的机械特性有关,一般为5—10ms。

在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。

为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。

这一点可从硬件、软件西方面予以考虑。

在键数较少时,可采用硬件去抖,而当模数较多时,采用软件去抖。

3.2.3按键编码

一组按键或键盘都要通过I/O口线查询技键的开关状态。

根据键盘结构的不同,采用不同的编码。

无论有无编码,以及采用什么编码、最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。

3.3空闲节电模式

在空闲工作模式状态,CPU自身处于睡眠状态而所有的外设仍保持激活状态,这种方式由软件产生。

此时将片内RAM和所有特殊功能寄存器的内容冻结。

空闲模式可有任何允许的中断请求和硬件复位终止。

由硬件复位终止空闲状态只需要两个机器周期有效复位信号,在此状态下,片内硬件禁止访问内部RAM,但可以访问端口引脚,当复位终止空闲方式时,为避免可能对端口和外部存储器产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。

3.3.1掉电模式

在掉电模式下,震荡器停止工作。

进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结,去除掉电模式的唯一办法是硬件复位。

复位后将重新定义全部特殊功能寄存器,但不改变RAM中的内容。

在VCC恢复到正常工作电平前,复位无效,且保持一定的时间以使振荡器重启动并稳定工作。

在这里遥控器采用空闲节电方式。

当系统进入空闲工作方式,内部时钟电路不向CPU提供,而只供给中断`串行口和定时器部分。

遥控器退出低功耗空闲方式电路由T060与非门来实现。

当有键按下时,单片机退出空闲状态,进入键盘和红外发射程序,结束后又进入低功耗空闲方式待机。

使用过程中单片机基本上都处于空闲工作方式,功耗相当低,从而为电池电源提供保障。

3.3.2红外线发射管和指示灯

红外发光二极管能发出波长为940nm的红外光,其结构、工艺、原理与一般的发光二极管相同,只是所采用的半导体材料不同,具有体积小、寿命长、耐振动、响应速度快、耗电小等优点。

在这里遥控编码信息由AT89C52单片机的定时器1调制成38kHz红外载波信号,由P3.5输出,经过三极管9013放大,由红外发射管发射。

按键的操作指示灯使用一个LED发光二级管即可。

 

四、系统软件的设计

软件的设计,需要准确无误的实现遥控器的控制功能,希望能够使系统具有高的可靠性能、快的反应速度、以及较低的系统功率损耗。

控制功能主要包括:

系统的初始化程序、键盘扫描程序、红外线的编码程序以及发射程序等。

4.1系统软件的总体流程图

图4系统的总程序流程图

 

4.2初始化程序和主程序流程

图5初始化程序流程图

图6主程序流程图

4.3键盘扫描程序

4.3.1键盘的工作方式

在单片机应用系统中,键盘扫描是系统工作内容之一。

CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。

通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。

采用前两种键盘扫描方式时,无论是否按键,CPU都要定时扫描键盘.而遥控器在工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态。

而且对于电视机的遥控器,当有按键按下时,需要做出立即的反应。

同时为了提高CPU工作效率,可采用中断扫描工作方式。

其工作过程如下;当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。

其工作原理用上面的4*4键盘矩阵来进行说明。

图7是一种简易键盘接口电路,该键盘是由89C52门口的高、低字节构成的4×4键盘。

键盘的列线与门口的高4位相连,键盘的行线与门口的低4位相连,因此,P1.4—P1.7是键输出线,P1.0~P1.3是扫描输入线。

图中的4输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5v电源,输出端接至8051的外部中断输入端口。

具体工作如下:

当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,其端口端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,转去执行键盘扫描子程序。

4.3.2矩阵键盘具体按键的确定

要确定具体是键盘的哪一个按键按下,使用线性反转法。

第一步:

将行线编程为输入线,列线编程为输出线,并使输出线为全0电平,则行线中电平由高到低变化所在的行为按键所在的行。

第二步:

同第一步完全相反,将行线编程为输出线,列线编程为输入线,并使输出线为全0电平,则列线中电平由高到低变化所在的列为按键所在的列

矩阵形式由扫描线和数据线构成。

两组线分别接AT89C52的两个输端口。

控制器通过软件把扫描线写成0,接受线写成1。

按下一键即将响应的扫描线和接收线接通,于是接受线被拉成低电平。

8条接受线逻辑相与之后的统一信号作为AT89C52的一个外部中断输入,这样有键按下时就将引起中断。

中断服务程序对所按的键进行鉴别。

如果是多个键同时按下则不做任何反应,若是单键按下,则将信息转换成响应的输出。

通常,当无键按下且无其他任务时,微控制器处于空闲状态。

当矩阵有键按下,则产生中断,从而结束空闲状态。

中断服务程序首先调用一段延时程序(10ms~~20ms左右),等待键的抖动消失,然后才对所按的键进行处理。

首先接收线的现状态被存入内部的寄存器中,若是单一键按下,则接收线除一位外其余各位均为1,此后向接受线写0,扫描线写1,并随之读扫描线,若是单一键按下,则扫描线除一位外其余各位均为1,根据两组线中零的位置即可确定按下的是哪一个键,若矩阵中同时有多个键按下,则每组线中0的个数不止一个。

SCAN扫描程序可以确定每组线中那一个为零,是否有多个零等。

再调用此程序前,应将所读组线的数据存入一个可按位寻址的片内RAM单元。

自这段程序返回时,ZERO_CNT单元中包含有LINE单元中0的个数。

若只有一位为0,则0的位置保存在ZERO_BIT单元中。

按键所引起的中断有如下的中断服务程序:

4.4红外编码设计

遥控器之间的本质区别就在于编码的不同。

不同的编码,其发射和接受的原理不同。

常用的编码格式有脉冲编码和脉宽编码。

这里采用脉冲个数进行编码。

采用脉冲个数进行编码,不同的脉冲个数代表不同的码,最小为两个脉冲,依次递加,为了接受可靠,第一位码宽为3ms,其余为1ms,遥控码数据桢之间的间隔大于10ms,当某个操作键按下时单片机先读出键值,然后再根据键值设定遥控码的脉冲个数,再调制成38KHZ的方波发射出去

4.5遥控码的发射流程图

图10遥控码发射流程图

编码的格式比较多,其相对应的发射格式也比较多,但其原理都是一样的。

在这里画出脉冲个数编码的发射流程图。

在用脉冲个数进行中,不同的脉冲个数代表不同的码。

最小为两个脉冲,依次递加,为了接受可靠,第一位码宽为3ms,其余为1ms。

直至按键所对应的脉冲个数发射完毕为止。

 

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

/*********************引脚定义********************/

#defineoutP2

#defineoutkP1

/*********************函数申明********************/

voiddelayms(uint);

ucharscan(void);

/*****************共阳数码管编码表****************/

ucharseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

/*********************主函数**********************/

voidmain(void)

{

ucharkey;

while

(1)

{

key=scan();if(key!

=16)out=seg[key];

}

}

/*********************延时函数********************/

voiddelayms(uintj)

{

for(;j>0;j--);

}

/*********************键盘处理********************/

ucharscan(void)

{

uchark=16,m,n,in;

outk=0xf0;//扫描所有行

if((outk&0xf0)!

=0xf0)

{

for(m=0;m<4;m++)

{

outk=~(0x01<

for(n=0;n<4;n++)

{

in=outk;

in=in>>(4+n);

if((in&0x01)==0)

{

delayms(10);

if((in&0x01)==0){k=n+m*4;break;}

}

}

if(k!

=16){break;}

}

}

return(k);

}

五、小结

通过这次单片机的课设,我了解到了我还有很多东西都不会,自己知识有待提高,在编程过程中,好多都不知道怎么写,通过同学的帮忙,在网上找资料才写出了一些,今后应该多加学习一下基础知识,让自己的知识更加的充实,使自己在今后的道路上可以多一点本事。

参考文献

[1]王晓君安国臣,MCS-51及兼容单片机原理与选型[M],北京:

电子工业出版社2002.1

[2]南建辉熊鸣王军茹,MCS-51单片机原理及应用实例[M],北京:

清华大学出版社2011.2

[3]楼然苗李光飞编著,51系列单片机设计实例[M],北京:

北京航空航天大学出版社2007.5

[4]李广弟等编著,单片机基础[M],北京:

北京航空航天大学出版社2007.2

[5]吴秀清周荷琴编著,微型计算机与接口技术[M],合肥:

中国科学技术大学出版社2012.2

[6]何立民主编,单片机应用系统设计[M],北京:

北京航空航天大学出版社2011.4

 

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

当前位置:首页 > 高等教育 > 医学

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

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