基于STC89C52的红外发射系统设计报告.doc_第1页
基于STC89C52的红外发射系统设计报告.doc_第2页
基于STC89C52的红外发射系统设计报告.doc_第3页
基于STC89C52的红外发射系统设计报告.doc_第4页
基于STC89C52的红外发射系统设计报告.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

职业技术师范学院2011电子信息工程基于STC89C52单片机的红外发射系统设计报告一、本设计意义红外线遥控是目前使用很广泛的一种通信和遥控技术。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空调机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 红外遥控属于光控,它自身的特点是控制方向性好,控制距离完全可以满足室内的空间距离,由于红外线的波长大,所以它对其他的电子设备的干扰小,这些条件都非常理想,因此对红外遥控的设计工作是很有意义的。当今世界,智能家居已经是一种潮流,在国外已经获得了应用,在我国还未大量推广。随着人们的经济实力的增强,不难预测,智能家居的产品将有很广阔的发展前景,在这个背景下,红外遥控应该也会得到大家的青睐。二、 本设计任务和主要内容本设计的设计任务是基于STC89C52红外遥控系统设计(数码管显示)。本设计的主要内容是:A.查阅相关资料:了解红外遥控器原理、数码管显示原理,能够运用C语言进行设计、编程、调试。B.硬件设计:根据设计任务选合适的单片机和适合的红外遥控器;设计电路。C.软件设计:根据各电路工作原理,画出软件流程图,根据流程图编写相应的C语言程序进行调试。D.调试:根据所编程的程序烧入单片机内,并进行相应的调试。E.结论:根据各步骤写好设计报告。三、硬件设计(一) 系统框图 本设计由红外遥控器、STC89C52单片机、红外接收头、数码管等组成,而单片机需外接12MHZ的晶振电路、复位电路、ISP下载接口、红外接收头等。 其基本结构图如下图2.1所示: 该设计是由红外遥控器发送信号,通过一体化接收头接收,经过单片机处理并在数码管显示出来。数码管 图2.1 系统框图(二) 最小系统单片机最小系统是指能进行正常工作的最简单电路。如图2-2所示。单片机的最小系统包括电源,晶振电路,复位电路。晶振电路:单片机必须提供脉冲信号才能正常工作。复位电路:当这个高电平持续两个机器周期以上就将复位。 图2.2 STC89C52最小系统电路图 (三) 红外接收电路设计红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法,此种方法电路复杂,现一般不使用。较好的接收方法是用一体化红外接收头。因此本设计采用一体化红外接收头。接收电路使用一种集红外线接收、放大和整形于一体的一体化红外线接收器,不需要接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。接收器对外只有3个引脚:OUT、GND、Vcc与单片机接口非常方便,如图2-3所示图2.3 红外接收器图及接收电路1脉冲信号输出接单片机的IO 口;2 GND接系统的地线(0V);3 Vcc接系统的电源正极(+5V);(五)数码管显示原理数码管简介:1数码管的结构数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字09、字符AF、H、L、P、R、U、Y、符号“-”及小数点“.”。数码管的外形结构如下图所示。 图2.4数码管结构图2数码管工作原理共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。四、 软件设计 (一) 红外遥控软件设计红外解码程序主要工作为等待红外线信号出现,并跳过引导信号,开始收集连续32位的表面数据,存入内存的连续空间。位信号解码的原则是:如果从0.56ms低电平过后,开始延时0.56ms以后,若读到的电平为低,说明改为为“0”,反之则为“1”。为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否如果则该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠。解码的方式有两种:一是采用外部中断方式,二是采用查询方式。采用外部中断方式节省了CPU时间,但进入外部中断以后还是采用查询方式解码。因此这里采用外部中断方式。其解码过程如下:A.初始化外部中断0(或1)为下降沿中断。B.进入外部中断服务程序,关闭外部中断。C.对引导码进行判断。如果引导码正确,装备接收下面一帧遥控数据,以查询方式判断是遥控数据0还是1。如果引导码错误,则退出外部中断。D.先后依次接收地址码、地址反码、数据码、数据反码。E.当接收到32位数据时,说明一帧数据接收完毕,比较数据码和数据反码。若数据码取反后与数据反码不同,则表示为无效数据,应丢弃本接收数据。F.开启外部中断准备下一次接收。其流程图如下图3.1所示: 图3.1 外部中断解码流程图 3.4 LCD显示流程图(二)主程序设计本论文所设计的主程序工作流程如图3.5所示。先各子程序初始化,利用红外遥控器发送指令,判断有按键按下,有则解码,且要判断其值是否正确,若正确则进行相应的显示,若不正确则退出。 判断解码正确与否正确错误数码管正确显示结束 图3.5主程序流程图其程序见附录所示五、原理图(一)原理图六、PCB图七、元件清单CommentDescriptionDesignatorFootprintLibRefQuantity10uFPolarized Capacitor (Radial)C1CAPPR5-5x5Cap Pol110.1uFC2, C3CAPR5-4X5CAP-0805210uFC4CAPR5-4X5CAP-0805130pFCapacitorC5, C6CAPR5-4X5Cap22LED0Typical INFRARED GaAs LEDD1LED-DIPLLED01LEDD2, D3LED-DIPLLED22Header 2Header, 2-PinP1电源插座Header 21Header 4Header, 4-PinP2HDR1X4Header 418050Q1PNP9015_DIPNPN-805015R1AXIAL-0.3R-08051330R2AXIAL-0.3R-08051510ResistorR3AXIAL-0.3Res111kR4AXIAL-0.3R-080512kR5AXIAL-0.3R-0805110KR6AXIAL-0.3R-08051SW-SPSTSingle-Pole, Single-Throw SwitchS1开关SW-SPST1SW-PBSwitchS2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17SWITCH-SMALLSW-PB100AMS1117-5.0U1SOT223AMS11171STC89C5280C51 8-Bit Flash Microcontroller Family, 4 kB FlashU251_DIP40P89C51X2BN912MHZY1CRYSTALCRYATAL1八、设计小结 三周的课程设计完成了,对我来说这一个星期比平时上课还要累,在这三周的学习中,我学到了很多,也找到了自己身上的不足,感触良多,获益匪浅。这次课程设计对我们来说都是一个挑战,理论知识又不是很牢固,一开始都不知道从何下手,但是在大家的共同努力下,我们还是顺利的完成了任务。在这次活动中将理论与实践相结合,使得我们对于单片机的实际应用有了更加深刻的认识和了解。通过实践,增强了下阶段的学习信心,为毕业设计奠定了坚实基础。在本次课程设计中,虽然学到了很多课外知识而且能巩固专业知识,但是在很多方面还需要进一步的改进和提高。在这样的一个过程中我们学到了很多,学会换位思考,学会怎样去和别人沟通,理解别人所做的事,别人也会宽容的对待我们,从而在无形之中加强可自己的人际交往能力,也让我们彼此更加团结。课程设计结束了,但我们一起奋斗的精神和这份宝贵的精力将会成为人生道路上一道亮丽的风景线。参考文献1 张洪润.单片机原理及应用.清华大学出版社. 2008.2 朱大奇.单片机原理应用与实验. 科学出版社. 2009. 3 彭为. 单片机典型系统设计. 电子工业出版社. 2006.4 刘同法. 陈忠平等. 单片机外围接口电路及工程实践. 北京航空航天大学出版社. 2009.5 谢维成. 杨加国. 单片机原理与应用及C51程序设计. 清华大学出版社. 2006. 附录:课程设计程序清单#include#include #define uchar unsigned char#define uint unsigned int#includeMyStype.hsbit Led_Port = P32;#define LED_ON Led_Port = 0#define LED_OFF Led_Port = 1uchar KeyNum = 0; /按键值寄存变量uint SysCLK = 0;bit LightOnFlag = 0;#define T0_START ET0 = 1;TR0 = 1#define T0_STOP ET0 = 0;TR0 = 0/*微妙时延函数*/void Delay(uint num) /Delay(10)约为100us (使用12MHZ晶振) while( -num ) ;/*毫秒延时函数*/void ms_Delay(uint z) /ms_Delay(10)约为10ms (使用12MHZ晶振) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);/*系统初始化*/void System_Iint(void)P0 = 0x00; / 该引脚悬空 / s8 s7 s6 s5 s4 s3 s2 s1P2 = 0xff; / 11111111 / 0 0 0 0 0 Light_out 0 0P3 = 0xff; / 0 0 0 0 0 0 0 0 P1 = 0x00; /该引进悬空/ Timer_0 /TMOD = 0x01; /定时器0工作于定时方式1 EA = 1;/TH0 = (65535-1000)/256;/TL0 = (65535-1000)%256;ET0 = 0;TR0 = 0; /*矩阵键盘扫描*/uchar Key_Scan()uchar i;P2 = 0xf0; Delay(1); /延时10us i = P2&0xf0;if(i!=0xf0) ms_Delay(1);/延时1ms i = P2&0xf0; if(i!=0xf0) P2 = 0xfe; /11111110Delay(1); /延时10us i = P2&0xf0;if(i!=0xf0)switch(i)case 0xe0: KeyNum = 1; break; /S1按钮case 0xd0: KeyNum = 2; break; /S2按钮case 0xb0: KeyNum = 4; break; /S3按钮case 0x70: KeyNum = 3; break; /S4按钮default: break; do /等待按键放开P2 = 0xf0; Delay(1); /延时10usi = P2&0xf0;while(i!=0xf0);return 1; P2 = 0xfd; /11111101Delay(1); /延时10us i = P2&0xf0;if(i!=0xf0)switch(i)case 0xe0: KeyNum = 5; break;case 0xd0: KeyNum = 6; break;case 0xb0: KeyNum = 7; break;case 0x70: KeyNum = 8; break;default: break; do /等待按键放开P2= 0xf0; Delay(1); /延时10usi = P2&0xf0;while(i!=0xf0);return 1; P2 = 0xfb; /11111011 Delay(1); /延时10us i = P2&0xf0;if(i!=0xf0)switch(i)case 0xe0: KeyNum = 9; break;case 0xd0: KeyNum = 10; break;case 0xb0: KeyNum = 11; break;case 0x70: KeyNum = 12; break;default: break; do /等待按键放开P2 = 0xf0; Delay(1); /延时10usi = P2&0xf0;while(i!=0xf0);return 1; P2 = 0xf7; /11110111 Delay(1); /延时10us i = P2&0xf0;if(i!=0xf0)switch(i)case 0xe0: KeyNum = 13; break;case 0xd0: KeyNum = 14; break;case 0xb0: KeyNum = 15; break;case 0x70: KeyNum = 16; break;default: break; do /等待按键放开P2 = 0xf0; Delay(1); /延时10usi = P2&0xf0;while(i!=0xf0);return 1; return 0; return 0;/*38KHZ调制PWM信号*/void LED_38khz_PWM(uint runtimer)TH0 = (65535-runtimer)/256;TL0 = (65535-runtimer)%256;LightOnFlag = 0;T0_START; while(LightOnFlag = 0)LED_ON;Delay13us();LED_OFF;Delay13us();T0_STOP ;void Sent_One_Bye_Data(uchar num)uchar i,j; for(j=0;j1;void Sent_Data(uint num)uchar bit1000,bit100,bit10,bit1; bit1000 = num/1000; /取按键值十位 bit100 = num%1000/100; /取按键是个位 bit10 = num%100/10; /取按键值十位 bit1 = num%10; /取按键是个位/ SentData(0x0f);/发送同字/SentData(0x02); /发送温度值代码0x01,按键代码0x02,温度传感器读数错误代码0x03LED_38khz_PWM(5000); /发送同步 DelayNms(5) ; /延时5msSent_One_Bye_Data(0);Sent_One_Bye_Data(0);Sent_One_Bye_Data(bit10);Sent_One_Bye_Data(bit1);void T0_Light_PWM_OUTPUT() interrupt 1/*SysCLK +;if(SysCLK60000)SysCLK = 0;TH0 = (65535-100)/256;TL0 = (65535-100)%256;*/LightOnFlag =1; TF0 = 0;/* 主函数*/void main() uchar i; uint SystemTimer = 0; uint SystemClock = 0; System_Iint(); while(1) if( Key_Scan() /按键值检测以及发送/Sent_KeyNum( KeyNum); Sent_Data(KeyNum);/P2= 0XF0;/SentData/(8);/P3 = 0x00;/* LED_ON ;DelayNms(1000); LED_OFF; DelayNms(1000);*/*while(1)LED_ON;Delay13us();LED_OFF;Delay13us();*/ if(SystemTimer%500=0) /每隔大概1秒钟检测并发送一次温度值/Sent_KeyNum(5);SystemClock+; /系统时钟if(SystemClock=10000)SystemClock = 0; SystemTimer+; if(SystemTimer10000)SystemTimer = 0;/* 红外发射接收原理: 发射波形(38kHZ代替高电平) 接收波形(接受到的电平反向) 38kHZ 38kHZ 发射 _1_ _1_|_0_|_0_-_0_| |_0_| -定时器工作方式 在方式2中把16位的计数器拆分成两个8位计数器,底8位作计数器用以保存计数初值。方式2适合用于比较精确的脉冲信号发生器,和波特率发生器方式2计算初值X,X=256-tfosc/12(或6)12和6是分频,一般情况下取12;t为所设计时时间单位为s,fosc为晶振单位为Hz。计数器每加1耗费一个机器机器周期,一个机器周期等于12个振荡脉冲周期即如果震荡周期为1s计数器加一要花12s ,若晶振为fosc=12MHz计数频率为fcont=fosc/12为1MHz即计数器加1消耗1us ,每计1所华的时间为 t=T=1/fcont=1(fosc/12)=12/fosc /*/#include reg51.h#include keyscan.csbit TR_DATA=P27;/*函数名:delay_ms子函数:无输 入:n输 出:无功 能:延迟nMS子程序24MHz,n MS经滤波器检测非常精确-*/void delay_ms(unsigned int n) unsigned int i=218; for(;n0;n-) while(i-);i=218;/*函数名:TransData子函数:无输 入:_data输 出:无 功 能:发送数据 9ms

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论