基于51单片机的红外遥控

基于51单片机的红外遥控

ID:14037281

大小:274.00 KB

页数:7页

时间:2018-07-25

基于51单片机的红外遥控_第1页
基于51单片机的红外遥控_第2页
基于51单片机的红外遥控_第3页
基于51单片机的红外遥控_第4页
基于51单片机的红外遥控_第5页
资源描述:

《基于51单片机的红外遥控》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于51单片机的红外遥控红外遥控是无线遥控的一种方式,本文讲述的红外遥控,采用STC89C52单片机,1838红外接收头和38k红外遥控器。1838红外接收头:红外遥控器:原理:红外接收的原理我不赘述,百度文库上不少,我推荐个网址,这篇文章写得比较清楚,也比较全面,http://wenku.baidu.com/view/c353e8360b4c2e3f57276349.html我主要讲下程序的具体意思,在了解原理的基础上,我们知道,当我们在遥控器上每按下一个键,遥控器上的红外发射头都会发出一个32位的编码(32位编码分成4组8位二进制编码,前16位为用户码和用户反码,后16位为数据码

2、和数据反码,用户码表示遥控器类型,数据码表示按键编码),不同的键对应不同的编码,红外接收头接收到这个编码后,发送给单片机,再进行相关操作。源程序1:(这个程序的功能是将用户码和用户反码,数据码和数据反码显示在1602液晶上,因为遥控器买回来是不会说明按键对应什么码值,所以先自己测试,确定每个按键的码值)#include#include#include#defineuintunsignedint#defineucharunsignedchar#define_Nop()_nop_()#defineTURE1#defineFALSE

3、0/*端口定义*/sbitlcd_rs_port=P3^5;/*定义LCD控制端口*/sbitlcd_rw_port=P3^6;sbitlcd_en_port=P3^4;#definelcd_data_portP0///////////////////////////////////voiddelay1(void)//关闭数码管延时程序{intk;for(k=0;k<1000;k++);}////////////////////////////////////ucharcodeline0[16]={"user:"};ucharcodeline1[16]={"data:"};uchar

4、codelcd_mun_to_char[16]={"0123456789ABCDEF"};unsignedcharirtime;//红外用全局变量bitirpro_ok,irok;unsignedcharIRcord[4];//用来存放用户码、用户反码、数据码、数据反码unsignedcharirdata[33];//用来存放32位码值voidShowString(unsignedcharline,char*ptr);//////////////////////////////////////////////voidDelay(unsignedcharmS);voidIr_work(

5、void);voidIrcordpro(void);voidtim0_isr(void)interrupt1using1//定时器0中断服务函数{irtime++;}voidex0_isr(void)interrupt0using0//外部中断0服务函数{staticunsignedchari;staticbitstartflag;if(startflag){if(irtime<63&&irtime>=33)//引导码TC9012的头码i=0;irdata[i]=irtime;irtime=0;i++;if(i==33){irok=1;i=0;}}else{irtime=0;star

6、tflag=1;}}voidTIM0init(void)//定时器0初始化{TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值TH0=0x00;//reloadvalueTL0=0x00;//initialvalueET0=1;//开中断TR0=1;}voidEX0init(void){IT0=1;//Configureinterrupt0forfallingedgeon/INT0(P3.2)EX0=1;//EnableEX0InterruptEA=1;}voidIrcordpro(void)//红外码值处理函数(关键函数){unsignedchari,j,k=

7、1;unsignedcharcord,value;for(i=0;i<4;i++){//处理4个字节for(j=1;j<=8;j++){//处理1个字节8位cord=irdata[k];value=value>>1;if(cord>7)value=value

8、0x80;//大于某值为1k++;}IRcord[i]=value;value=0;}irpro_ok=1;//处理完毕标志位置1}//////////////////////////////////

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。