单片机学习型万能红外遥控器的设计 c语言 stc89c52rc单片机 红外接收在p1.1口 发射在p1.0口 55
/***********学习函数***********///外中断0voidintt0(void)interrupt0{for(i=0;i<206;i++)//清内存{r...
/***********学习函数 ***********/
//外中断0
void intt0(void) interrupt 0
{for(i=0;i<206;i++) //清内存
{remotedata[i]=0x00;}
ET1=0;TR1=0;EX0=0;EA=0;
head=0;studylamp=0;lamp=1;
while(studykey==0); //等待键释放 下降沿触发
while(remotein==1) ; //等待遥控码输入
head=0; //读入起始位
while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();head++;}
n=0;remdata=0x0000;
while(1)
{
while(remotein==1){_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();remdata++;}
if(remdata>m) //高电平>5毫秒退
{remotedata[n]=0x00;EX0=1;EA=1;goto end;}
remotedata[n]=remdata;n++; //存高电平脉宽数
remdata=0x0000; //脉宽计数器清零
while(remotein==0){_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;} //
remotedata[n]=remdata;n++;remdata=0x00;//存低电
}
end: lamp=0;studylamp=1;
}
/**********键功能函数************/ 发射部分
keywork()
{
if(txkey==0)
{ET1=0;TR1=0;
while(txkey==0); //等待键释放
ET1=1;TR1=1; //发起始位
for(i=head;i>0;i--){;}
remoteout=1; ET1=0;TR1=0;
n=0;
while(1)
{
if(remotedata[n]==0x00){delay1ms(10);break;}//数据为
for(i=remotedata[n];i>0;i--){_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();}
lamp=~lamp;n++;//偶地址不发脉冲
//
ET1=1;TR1=1; //奇地址发调制脉冲
for(i=remotedata[n];i>0;i--){;}
remoteout=1;ET1=0;TR1=0;n++;
}
}
}
这是部分发送程序 来自北航出的 《单片机课程设计指导》
我看不懂为什么是这样 而且达不到控制遥控的功能 展开
//外中断0
void intt0(void) interrupt 0
{for(i=0;i<206;i++) //清内存
{remotedata[i]=0x00;}
ET1=0;TR1=0;EX0=0;EA=0;
head=0;studylamp=0;lamp=1;
while(studykey==0); //等待键释放 下降沿触发
while(remotein==1) ; //等待遥控码输入
head=0; //读入起始位
while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();head++;}
n=0;remdata=0x0000;
while(1)
{
while(remotein==1){_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();remdata++;}
if(remdata>m) //高电平>5毫秒退
{remotedata[n]=0x00;EX0=1;EA=1;goto end;}
remotedata[n]=remdata;n++; //存高电平脉宽数
remdata=0x0000; //脉宽计数器清零
while(remotein==0){_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;} //
remotedata[n]=remdata;n++;remdata=0x00;//存低电
}
end: lamp=0;studylamp=1;
}
/**********键功能函数************/ 发射部分
keywork()
{
if(txkey==0)
{ET1=0;TR1=0;
while(txkey==0); //等待键释放
ET1=1;TR1=1; //发起始位
for(i=head;i>0;i--){;}
remoteout=1; ET1=0;TR1=0;
n=0;
while(1)
{
if(remotedata[n]==0x00){delay1ms(10);break;}//数据为
for(i=remotedata[n];i>0;i--){_nop_();_nop_
();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();}
lamp=~lamp;n++;//偶地址不发脉冲
//
ET1=1;TR1=1; //奇地址发调制脉冲
for(i=remotedata[n];i>0;i--){;}
remoteout=1;ET1=0;TR1=0;n++;
}
}
}
这是部分发送程序 来自北航出的 《单片机课程设计指导》
我看不懂为什么是这样 而且达不到控制遥控的功能 展开
2个回答
展开全部
优酷视频地址:http://v.youku.com/v_show/id_XMzI0OTU2Njk2.html
我对单片机的认识
从接触单片机到现在也有6年了,记得大一刚进学校时候,就听学长们讲单片机有多重要,多难学。不服输的性格,使我开始自学单片机。那时候,还没有发单片机教材,就跑图书馆借了好几本单片机书,下完课后就开始研究。每次,看的都想睡觉,这种状态一直维持了半年。大家应该知道,技术类的书籍,很枯燥的。里面全是变量,寄存器,概念性的东西。完全不知道到底干嘛用,所以很难坚持。我开始考虑是不是我的学习方法有问题,书本上的概念讲的很清楚但是我得不到验证不知道自己的理解是不是正确的,我必须要去做实验。
弄明白这一点过后,我决定买一块实验板。花了我260块钱,带1602液晶的,下载还只能用串口线。比起现在来说已经很贵了,而且功能还很少。最要命的是,里面的资料一团糟。不知道从哪里下手。偶然机会在网上找到了视频教程(当然是不配套的),然后就跟着视频学习。一个月时间我就把单片机的所有资源系统的学习了一遍,也可以自己独立写程序了。这次很顺利,单片机总算是入门了。我可以负责任的告诉你,入门单片机十天是完全可以的,不过关键是方法。
入门过后,我在想我应该要做点什么。决定做我的第一个单片机作品:1602液晶时钟。时钟芯片用的是DS12C887(以前电脑主板上用这个芯片),有按键设置时间,闹钟,蜂鸣器做闹钟发声器。这个小作品,可是花了我整整两个星期时间。做完后,很有成就感,完全自己独立完成。这个时钟程序,它应用到很多单片机知识,如IO口的控制,外部中断的使用,等等。如果你可以独立完成这个程序,不用我去宣布你已经学会单片机,你自己可以很深刻的体会到这一点。这也是我为什把这个芯片加到我的开发板上的原因,淘宝没有哪个卖家会使用这个时钟芯片,因为它的价格很贵。
在这之后,我做了:数控稳压电源,电子称,密码锁,红外遥控,频率计,温度计等,我就
不一一说明了。
学完单片机之后,大家要知道,单片机确实很简单,难的是操作各种电路,芯片。我们要去做更多得项目,积累更多的电路,学会更多的芯片,去适应这个社会,让自己能找到更好的工,过上更好的生活。
学完单片机过后我们还要学习什么?
这个问题可以说纠结到了很多初学者,以下个人愚见,如果相信我你就接着往下看。
我按重要性先后,依次往后排:
1.多做单片机小项目保证最少10个(巩固对单片机的认识)
2.学习PCB设计软件 Protel 99se(要能做到生成PCB文件可以送工厂加工,软件光盘里已提供)
3.学习PCB设计软件Altium Designer Summer 09(这个版本很好用,软件光盘里已提供)他是
Protel 99se的升级版功能更全面,使用更舒服。熟悉它也就更费时间一点,他对Protel
所有快捷键,操作方式完全支持。这也是我为什么让你先熟悉Protel 99se的原因。
以上几点你都可以做到,那恭喜你,已经符合做一名硬件工厂师的基本条件了!
5.你要买一把吉他了。因为选择了这个行业就是选择了安静,我们会经常对这电脑,我们需
要懂一门乐器,来调整我们的心情好继续学习。
6.MSP430单片机:如果有很多多余的时间,又还要学习一种单片机的话,那你就考虑学TI的
MSP430,因他最有特点,低功耗,一片柠檬片,就可以工作。什么AVR,PIC,之类就别迷恋
了,价格贵用的人少,你会51后,稍微看下资料,AVR ,MSP430 完全搞定。记得,千万别再
去买开发板,有了我这一块51板子,你可以自己再画一块 AVR转接板或者MSP430转接板,扣在我
的开发板上就可以学习了。如果,考虑成本不想做转接板,我们也有这方面的产品提供。
7.嵌入式:嵌入式现在最流行,很有必要学习这个,不过这个会比较复杂。
8.FPGA,CPLD,DSP,工作当中根据自己的需要,选择学习。
我对单片机的认识
从接触单片机到现在也有6年了,记得大一刚进学校时候,就听学长们讲单片机有多重要,多难学。不服输的性格,使我开始自学单片机。那时候,还没有发单片机教材,就跑图书馆借了好几本单片机书,下完课后就开始研究。每次,看的都想睡觉,这种状态一直维持了半年。大家应该知道,技术类的书籍,很枯燥的。里面全是变量,寄存器,概念性的东西。完全不知道到底干嘛用,所以很难坚持。我开始考虑是不是我的学习方法有问题,书本上的概念讲的很清楚但是我得不到验证不知道自己的理解是不是正确的,我必须要去做实验。
弄明白这一点过后,我决定买一块实验板。花了我260块钱,带1602液晶的,下载还只能用串口线。比起现在来说已经很贵了,而且功能还很少。最要命的是,里面的资料一团糟。不知道从哪里下手。偶然机会在网上找到了视频教程(当然是不配套的),然后就跟着视频学习。一个月时间我就把单片机的所有资源系统的学习了一遍,也可以自己独立写程序了。这次很顺利,单片机总算是入门了。我可以负责任的告诉你,入门单片机十天是完全可以的,不过关键是方法。
入门过后,我在想我应该要做点什么。决定做我的第一个单片机作品:1602液晶时钟。时钟芯片用的是DS12C887(以前电脑主板上用这个芯片),有按键设置时间,闹钟,蜂鸣器做闹钟发声器。这个小作品,可是花了我整整两个星期时间。做完后,很有成就感,完全自己独立完成。这个时钟程序,它应用到很多单片机知识,如IO口的控制,外部中断的使用,等等。如果你可以独立完成这个程序,不用我去宣布你已经学会单片机,你自己可以很深刻的体会到这一点。这也是我为什把这个芯片加到我的开发板上的原因,淘宝没有哪个卖家会使用这个时钟芯片,因为它的价格很贵。
在这之后,我做了:数控稳压电源,电子称,密码锁,红外遥控,频率计,温度计等,我就
不一一说明了。
学完单片机之后,大家要知道,单片机确实很简单,难的是操作各种电路,芯片。我们要去做更多得项目,积累更多的电路,学会更多的芯片,去适应这个社会,让自己能找到更好的工,过上更好的生活。
学完单片机过后我们还要学习什么?
这个问题可以说纠结到了很多初学者,以下个人愚见,如果相信我你就接着往下看。
我按重要性先后,依次往后排:
1.多做单片机小项目保证最少10个(巩固对单片机的认识)
2.学习PCB设计软件 Protel 99se(要能做到生成PCB文件可以送工厂加工,软件光盘里已提供)
3.学习PCB设计软件Altium Designer Summer 09(这个版本很好用,软件光盘里已提供)他是
Protel 99se的升级版功能更全面,使用更舒服。熟悉它也就更费时间一点,他对Protel
所有快捷键,操作方式完全支持。这也是我为什么让你先熟悉Protel 99se的原因。
以上几点你都可以做到,那恭喜你,已经符合做一名硬件工厂师的基本条件了!
5.你要买一把吉他了。因为选择了这个行业就是选择了安静,我们会经常对这电脑,我们需
要懂一门乐器,来调整我们的心情好继续学习。
6.MSP430单片机:如果有很多多余的时间,又还要学习一种单片机的话,那你就考虑学TI的
MSP430,因他最有特点,低功耗,一片柠檬片,就可以工作。什么AVR,PIC,之类就别迷恋
了,价格贵用的人少,你会51后,稍微看下资料,AVR ,MSP430 完全搞定。记得,千万别再
去买开发板,有了我这一块51板子,你可以自己再画一块 AVR转接板或者MSP430转接板,扣在我
的开发板上就可以学习了。如果,考虑成本不想做转接板,我们也有这方面的产品提供。
7.嵌入式:嵌入式现在最流行,很有必要学习这个,不过这个会比较复杂。
8.FPGA,CPLD,DSP,工作当中根据自己的需要,选择学习。
追问
能不能给点学单片机有用的资料啊 我的邮箱314777895@qq.com 谢了
谢谢你对我的回答 说得好
展开全部
学习型红外遥控器分成好几个过程,也有很多思路。我自己写得程序,弄了几天才发现仿真不对是38khz没滤波,现在可以了,试了下几台电视,100%学习成功,没有学习不了得码。关键还是知道原理,然后理出思路。
更多追问追答
追问
就是刚学 知道的不多 能不能帮我解释下我的程序 是什么意思 为什么开始是用16个 nop()
后来又只用9个 还有那个for语句 怎么是空语句
追答
哪个人会吃的那么空免费教你呢。自学吧。
要是几个难点,别人会热心帮助,你要原理到设计都要别人指导。问也白问,没人会教
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询