基于单片机红外遥控器_第1页
基于单片机红外遥控器_第2页
基于单片机红外遥控器_第3页
基于单片机红外遥控器_第4页
基于单片机红外遥控器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及系统课程设计报告PAGEPAGE17 单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100)专业:自动化班级:自动化1202姓名:学号:201209111指导教师:于晓英兰州交通大学自动化与电气工程学院2014年12月31日基于单片机的红外遥控器1方案设计1.1题目基于单片机的红外遥控器。1.2设计目的通过本次设计对所学的单片机知识有更深入的了解;特别是单片机的红外发送,红外接收,中断,定时,计数,频率,矩阵键盘以及红外遥控NEC协议的理解和掌握。同时也能熟练掌握keil软件和protues仿真软件,主要目的是让我们把所学的基础知识运用到实际当中去。1.3方案本设计主要应用了AT89C51单片机作为核心,综合应用了单片机中断系统、定时器、计数器等知识,应用红外线的优点。遥控操作的不同,遥控发射器通过对红外线发射频率的控制来区别不同的操作。遥控接收器通过对红外光接收频率的识别,判断出控制操作,来完成整个红外遥控发射、接收过程。发射模块:单片机不工作时一直处于低功耗状态,采用了空闲节电工作方式。当遥控器的某一按键被按下以后,外部中断1产生中断,唤醒单片机进入工作状态,查询键盘按下的是哪一个按键,当确认按键后,控制软件启动定时器T0、T1,T1作为发射时间控制器,T0作为红外线发射频率控制器,T0定时溢出时中断程序使红外管接口电平反转一次,写入定时器的初值不同,在输出端口就得到不同的发射频率。T1定时溢出时中断程序关闭T0定时器,停止红外线发射。其设计原理框图如图1所示。接收模块;利用单片机中的T0作为红外脉冲计数器,T1作为计数时间控制器。当电路中红外接收管接收到第一个红外脉冲时,外部中断1被触发,启动计数器T0和定时器T1。定时溢出,中断程序关闭计数器T0,读入计数值并进行判断,确定操作对象(遥控按键)对其进行反转操作,控制电路对所控制的负载进行开或关。其设计原理框图如图2所示。1.4模块图红外发射部分对应模块图如图1所示,红外接收部对应模块图如图2所示,其功能为方案所述。图1发射部分模块图图2接收部分模块图2硬件设计2.1单片机最小系统单片机的最小系统是指用最少的元件组成的单片机可以工作的系统,对51单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。图3单片机的最小系统2.2矩阵键盘电路图3为矩阵键盘电路。矩阵键盘的行线分别与单片机的p1.7,p1.6,p1.5p1.4相连接,列线分别与单片机的的p1.3,p1.2,p1.1,p1.0相连接。行列线的低为分别为p1.7,p1.3。扫描键盘时通过先扫行再扫列确定按键的位置。图3矩阵键盘电路2.3红外发射电路图4为红外发射电路,当原始信号为低电平的时候,38KHZ载波输出,当信号为低电平的时候不发送载波。用38KHZ的载波去装载原始信号。图4红外发射电路2.4红外接收电路图5为红外接收电路,红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲,为了减少干扰,采用的是一体化红外接收头,它接收的红外信号频率为38KHZ。图5红外接收电路2.5仿真发射接收电路图6位为仿真发射接收电路,由于proteus仿真无线传输,故利用中断在单片机产生频率为38KHZ的载波信号,,把发射部分和接收部分用红外接收发射管连接,再在单片机内部进行解调。图6仿真发射接收电路2.6接收状态反映电路图7所示为输出状态反映电路,当按下矩阵开关的四个不同按键,继电器分别响应开关状态。图7输出状态反映电路2.7整体仿真电路图8所示为整体仿真电路,红外遥控就是把红外线作为载体的遥控方式。由于红外线的波长远小于无线电波的波长,因此在采用红外遥控方式时,不会干扰其他电器的正常工作,也不会影响临近的无线电设备。常用的红外遥控系统一般分发射和接收两个部分。当按下遥控器按钮就会产生具有不同的编码数字脉冲,这种代码指令信号调制在38kHz的截波上,激励红外光二级管产生具有脉冲串的红外波,通过空间的传送到受控机内的遥控接收器。在接收过程中,红外波信号通过光电二级管转换为38kHz的电信号,此信号经过放大、检波、整形、解调、送到解码与接口电路,从而完成相应的遥控功能。但由于proteus仿真软件无法进行无线仿真,故利用中断在单片机产生频率为38KHZ的载波信号,装载原始信号,再在接收部分进行解调。控制继电器的开关。图8整体仿真电路3软件设计3.1流程图流程图有两部分组成,分别为发射部分和接收部分。图9发送部分(左)接收部分(右)流程图3.2源程序源程序见附录。4系统仿真4.1仿真截图图9所示为整体仿真结果,按下矩阵键盘的按键,相应的会有继电器的闭合,LED灯的亮灭。图10整体仿真电路参考文献[1]王思明,张金敏,张鑫等.单片机原理及应用系统设计.北京:科学出版社,2012.[2]张金敏,董海棠,高博等,单片机原理应用系统设计.成都:西南交通大学出版社,2010.[3]谭浩强.C程序设计(第四版).北京.清华大学出版社,2010.附录原理图图1发射过程原理图源程序/*******************************************************************红外发射源程序*******************************************************************/#include<reg52.h>#defineuintunsignedint#defineucharunsignedchar//宏定义#defineKP1//键盘使用管脚定义sbitHL=P3^4;sbitLED=P3^3;//红外管脚接口staticbitOP;//红外发射管的亮灭控制staticuintcount;//延时计数器staticuintendcount;//终止延时计数器staticucharflag;//红外发送标志chariraddr1;//16位地址第一字节chariraddr2;//16位地址第二字节charKey_=0x10;//发送数据ucharData=0x00;//键盘参数voidSendIRdata(charp_irdata);//函数声明红外发送ucharKey();//键盘扫描/********************************************************************主函数********************************************************************/voidmain(){count=0;flag=0;OP=0;HL=0;//初始化EA=1;//总中断开TMOD=0x11;//设置定时器0和1为16位模式ET0=1;//定时器0中断允许TH0=0xff;TL0=0xe6;//设定定时大小38K等加于26us中断一次TR0=1;//开始计数iraddr1=3;iraddr2=252;//写16位地址while(1)//循环发射{Key_=Key();//检测按键if(Key_!=0x10)//是否有按键按下{SendIRdata(Key_);//发送Data=Key_;//读取参数显示while(Key_!=0x10)//等待松开{Key_=Key();}}LED=1;}}/******************************************************************定时器0中断处理函数*******************************************************************/voidtimeint(void)interrupt1{TH0=0xff;TL0=0xe6;//设定定时器初值count++;//中断计数累加if(flag==1){OP=~OP;}else{OP=0;}HL=OP;}/******************************************************************发送数据函数*******************************************************************///发送的延时时间参数即(endcount)都是在12MHZ的值voidSendIRdata(charp_irdata){inti;charirdata=p_irdata;//发送9ms的起始码endcount=223;flag=1;count=0;while(count<endcount);//发送4.5ms的结果码endcount=117;flag=0;count=0;do{}while(count<endcount);//发送16位地址的前八位irdata=iraddr1;for(i=0;i<8;i++){//先发送0.56ms的38K红外波(即编码中的0.56ms的低电平)endcount=10;flag=1;count=0;do{}while(count<endcount);//停止发送红外信号(即编码中的高电平)if(irdata-(irdata/2)*2)//判断二进制的个位是1还是0{endcount=41;}//1else{endcount=15;}//0flag=0;count=0;do{}while(count<endcount);irdata=irdata>>1;}//发送16位地址的后八位irdata=iraddr2;for(i=0;i<8;i++){//先发送0.56ms的38K红外波(即编码中的0.56ms的低电平)endcount=10;flag=1;count=0;do{}while(count<endcount);//停止发送红外信号(即编码中的高电平)if(irdata-(irdata/2)*2)//判断二进制的个位是1还是0{endcount=41;}//1else{endcount=15;}//0flag=0;count=0;do{}while(count<endcount);irdata=irdata>>1;}//发送8位数据irdata=p_irdata;for(i=0;i<8;i++){//先发送0.56ms的38K红外波(即编码中的0.56ms的低电平)endcount=10;flag=1;count=0;do{}while(count<endcount);//停止发送红外信号(即编码中的高电平)if(irdata-(irdata/2)*2)//判断二进制的个位是1还是0{endcount=41;}//1else{endcount=15;}//0flag=0;count=0;do{}while(count<endcount);irdata=irdata>>1;}//发送8位数据反码irdata=~p_irdata;for(i=0;i<8;i++){//先发送0.56ms的38K红外波(即编码中的0.56ms的低电平)endcount=10;flag=1;count=0;do{}while(count<endcount);//停止发送红外信号(即编码中的高电平)if(irdata-(irdata/2)*2)//判断二进制的个位是1还是0{endcount=41;}//1else{endcount=15;}//0flag=0;count=0;do{}while(count<endcount);irdata=irdata>>1;}//结束信息endcount=10;flag=1;count=0;do{}while(count<endcount);flag=0;}/******************************************************************键盘扫描函数*******************************************************************/ucharKey(){//扫描键盘K=0x7f;if(K==0x77){LED=0;return0x01;}elseif(K==0x7b){LED=0;return0x02;}elseif(K==0x7d){LED=0;return0x03;}elseif(K==0x7e){LED=0;return0x0A;}//无键盘按下else{return0x10;}}/******************************************************************红外接收源程序*******************************************************************/#include<reg52.h>#defineucharunsignedchar//宏定义#defineuintunsignedint//时间计算#defineImax14000//此处为晶振为11.0592时的取值,#defineImin8000//如用其它频率的晶振时,#defineInum11450//要改变相应的取值。#defineInum2700#defineInum33000unsignedcharIm[4]={0x00,0x00,0x00,0x00};//解码变量//全局变量ucharData=0x00;ucharf;unsignedlongm,Tc;unsignedcharIrOK;sbitLED1=P1^0;//4个输出sbitLED2=P1^4;sbitLED3=P3^5;sbitLED4=P3^6;/******************************************************************外部中断解码程序_外部中断1*******************************************************************/voidintersvr1(void)interrupt2{TR0=1;Tc=TH0*256+TL0;//提取中断时间间隔时长TH0=0;TL0=0;//定时中断重新置零if((Tc>Imin)&&(Tc<Imax)){m=0;f=1;return;}//找到启始码if(f==1){if(Tc>Inum1&&Tc<Inum3)//识别为1{Im[m/8]=Im[m/8]>>1|0x80;m++;}if(Tc>Inum2&&Tc<Inum1)//识别为0{Im[m/8]=Im[m/8]>>1;m++;}//取码if(m==32)//识别出32位{m=0;f=0;if(Im[2]==~Im[3])//检验反码{IrOK=1;TR0=0;//关闭定时器}elseIrOK=0;//取码完成后判断读码是否正确}//准备读下一码}}/******************************************************************主程序*******************************************************************/voidmain(void){m=0;f=0;EA=1;//开启总中断IT1=1;//下降沿有效EX1=1;//外部中断0开TMOD=0x11;//定时器初始化TH0=0;//T0赋初值TL0=0;TR0=0;//t0开始计时while(1)//循环执行{if(IrOK==1)//如果解码成功{IrOK=0;//清空标志位Data=Im[2];//赋值信息if(Data==0x0d)//判断是哪个按键按下LED1=!LED1;//控制开关elseif(Data==0x0c)LED2=!LED2;elseif(Data==0x0b)LED3=!LED3;elseif(Data==0x0a)LED4=!LED4;}}}本课件可以编辑修改.本课件可以编辑修改.学而不厌默而识之学而不厌的厌什么意思“厌”意思:不喜欢;憎恶默而识之是一个成语,读音为mòérzhìzhī,意思是默默地记住所学的知识。学而不厌是一个汉语词汇,拼音是xuéérbúyàn。意思是学习没有满足的时候,比喻非常好学。出自:孔子·《论语·述而》原文:“默而识之,学而不厌,诲人不倦,何有于我哉!”翻译:默默地记住所学的知识,学习没有满足的时候,教导别人不知道困倦。《论语·述而》出自《论语》,共包括38章,也是学者们在研究孔子和儒家思想时引述较多的篇章之一。提出了孔子的教育思想和学习态度,孔子对仁德等重要道德范畴的进一步阐释,以及孔子的其他思想主张。《论语·述而》中的其他名句及释义:1、子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?”译文:孔子说:“在学习时时常的复习学过的知识,不也愉快吗?有志同道合的人从远方而来,不也愉快吗?别人不了解我,我却不生气(恼怒),不也是一个道德上有修养的人吗?”2、子曰:“巧言令色,鲜矣仁。”译文:孔子说:“花言巧语、满脸堆笑的,这种人是很少有仁德的。”3、曾子曰:“吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?”译文:曾子说:“我每天都要多次反省自己:为别人出主意做事,是否忠实?交友是否守信?老师传授的知识,是否复习了呢?”4、子曰:“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉,可谓好学也已。”译文:孔子说:“君子,饮食不求饱足,居住不要求舒适,对工作勤劳敏捷,说话却小心谨慎,到有道的人那里去匡正自己,这样可以说是好学了。”不耻下问不耻下问的“耻”是什么意思?不耻下问[bùchǐxiàwèn]:乐于向学问或地位比自己低的人学习,而不觉得不好意思。其中“耻”的意思是羞愧,羞辱。耻[chǐ]:羞愧,羞辱。羞~。雪~。奇~大辱。~笑。~骂。羞耻[xiūchǐ]:羞辱惭愧。耻笑[chǐxiào]:轻视和讥笑。耻骨[chǐgǔ]:围成骨盆的不规则骨头之一,居骨盆前下方,左右各一。耻过[chǐguò]:不喜欢听别人谈自己的过失。无耻[wúchǐ]:不知耻辱;不要脸。对学过的东西要温故知新,对不认识的东西要不耻下问,对于学习要学而不厌。前日之耻,今日之忧,后日之患,统统不会忘!在报仇雪耻前,我决定先过卧薪尝胆的生活。在群众中挑拨离间,拨弄是非,真是卑鄙无耻。勿忘国耻,珍爱和平。作为年轻一代,我们并不应该只有仇恨,而是应该在各个方面提高我们自己,素质礼仪,修养,能力等。勿忘国耻,珍爱和平。作为年轻一代,我们并不应该只有仇恨,而是应该在各个方面提高我们自己,素质礼仪,修养,能力等。不耻下问的前一句是什么?敏而好学。出自孔子所著《论语·公冶长》。1,子谓南容,“邦有道,不废;邦无道,免于刑戮。”以其兄之子妻之。译文:孔子评论南容说:“国家有道时,他有官做;国家无道时,他也可以免去刑戮。”于是把自己的侄女嫁给了他。2,子谓子贱,君子哉若人,鲁无君子者,斯焉取斯。译文:孔子评论子贱说:“这个人真是个君子呀。如果鲁国没有君子的话,他是从哪里学到这种品德的呢?”3,子贡问曰:“赐也何如?”子曰:“女,器也。”曰:“何器也?”曰:“瑚琏也。”译文:子贡问孔子:“我这个人怎么样?”孔子说:“你呀,好比一个器具。”子贡又问:“是什么器具呢?”孔子说:“是瑚琏。”《论语》是名列世界十大历史名人之首的中国古代思想家孔子的门人记录孔子言行的一部集子,成书于战国初期。因秦始皇-焚书坑儒(虽说是焚书坑儒,但是活埋的其实是一些方士及一些书本),到西汉时期仅有口头传授及从孔子住宅夹壁中所得的本子,计有:鲁人口头传授的《鲁论语》20篇,齐人口头传授的《齐论语》22篇,从孔子住宅夹壁中发现的《古论语》21篇。西汉末年,帝师张禹精治《论语》,并根据《鲁论语》,参照《齐论语》,另成一论,称为《张侯论》。此本成为当时的权威读本,据《汉书·张禹传》记载:“诸儒为之语曰:‘欲为《论》,念张文。’由是学者多从张氏,馀家寝微。”《齐论语》《古论语》不久亡佚。现存《论语》20篇,492章,其中记录孔子与弟子及时人谈论之语约444章,记孔门弟子相互谈论之语48章。本课件可以编辑修改.学而不厌默而识之学而不厌的厌什么意思“厌”意思:不喜欢;憎恶默而识之是一个成语,读音为mòérzhìzhī,意思是默默地记住所学的知识。学而不厌是一个汉语词汇,拼音是xuéérbúyàn。意思是学习没有满足的时候,比喻非常好学。出自:孔子·《论语·述而》原文:“默而识之,学而不厌,诲人不倦,何有于我哉!”翻译:默默地记住所学的知识,学习没有满足的时候,教导别人不知道困倦。《论语·述而》出自《论语》,共包括38章,也是学者们在研究孔子和儒家思想时引述较多的篇章之一。提出了孔子的教育思想和学习态度,孔子对仁德等重要道德范畴的进一步阐释,以及孔子的其他思想主张。《论语·述而》中的其他名句及释义:1、子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?”译文:孔子说:“在学习时时常的复习学过的知识,不也愉快吗?有志同道合的人从远方而来,不也愉快吗?别人不了解我,我却不生气(恼怒),不也是一个道德上有修养的人吗?”2、子曰:“巧言令色,鲜矣仁。”译文:孔子说:“花言巧语、满脸堆笑的,这种人是很少有仁德的。”3、曾子曰:“吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?”译文:曾子说:“我每天都要多次反省自己:为别人出主意做事,是否忠实?交友是否守信?老师传授的知识,是否复习了呢?”4、子曰:“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉,可谓好

温馨提示

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

最新文档

评论

0/150

提交评论