求有关STC89C52单片机的学习型单片机 红外遥控器器设计毕业论文,收费的不用回了

扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于STC89C52单片机的家用红外遥控系统
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口单片机学习型万能红外遥控器的设计 c语言 stc89c52rc单片机 红外接收在p1.1口 发射在p1.0口_百度知道
单片机学习型万能红外遥控器的设计 c语言 stc89c52rc单片机 红外接收在p1.1口 发射在p1.0口
/***********学习函数 ***********///外中断0void 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;}
remotedata[n]=n+珐福粹凰诔好达瞳惮困+;
//存高电平脉宽数remdata=0x0000;
//脉宽计数器清零
while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;}
//remotedata[n]=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=i&0;i--){;} remoteout=1;
ET1=0;TR1=0; n=0; while(1) {
if(remotedata[n]==0x00){delay1ms(10);}//数据为for(i=remotedata[n];i&0;i--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
lamp=~n++;//偶地址不发脉冲//
ET1=1;TR1=1;
//奇地址发调制脉冲
for(i=remotedata[n];i&0;i--){;}
remoteout=1;ET1=0;TR1=0;n++; }
}}这是部分发送程序 来自北航出的 《单片机课程设计指导》 我看不懂为什么是这样 而且达不到控制遥控的功能
学习型红珐福粹凰诔好达瞳惮困外遥控器分成好几个过程,也有很多思路。我自己写得程序,弄了几天才发现仿真不对是38khz没滤波,现在可以了,试了下几台电视,100%学习成功,没有学习不了得码。关键还是知道原理,然后理出思路。
就是刚学 知道的不多 能不能帮我解释下我的程序 是什么意思 为什么开始是用16个 nop()后来又只用9个
还有那个for语句 怎么是空语句
哪个人会吃的那么空免费教你呢。自学吧。要是几个难点,别人会热心帮助,你要原理到设计都要别人指导。问也白问,没人会教
我只要别人能帮我改下 能达到学习遥控器发射的目的就行
“我是做课程设计 要自己搞懂”这是你说的“我只要别人能帮我改下 能达到学习遥控器发射的目的就行”这也是你说的你到底要干嘛呢?懒的里你
其他类似问题
为您推荐:
其他1条回答
优酷视频地址:/v_show/id_XMzI0OTU2Njk2.html
我对单片机的认识
从接触单片机到现在也有6年了,记得大一刚进学校时候,就听学长们讲单片机有多重要,多难学。不服输的性格,使我开始自学单片机。那时候,还没有发单片机教材,就跑图书馆借了好几本单片机书,下完课后就开始研究。每次,看的都想睡觉,这种状态一直维持了半年。大家应该知道,技术类的书籍,很枯燥的。里面全是变量,寄存器,概念性的东西。完全不知道到底干嘛用,所以很难坚持。我开始考虑是不是我的学习方法有问题,书本上的概念讲的很清楚但是我得不到验证不知道自己的理解是不是正确的,我必须要去做实验。
弄明白这一点过后,我决定买一块实验板。花了我260块钱,带1602液晶的,下载还只能用串口线。...
能不能给点学单片机有用的资料啊 我的邮箱 谢了谢谢你对我的回答
stc89c52rc的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁万能红外遥控器设计_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
万能红外遥控器设计
上传于||文档简介
&&单​片​机​课​程​设​计
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩18页未读,继续阅读
你可能喜欢基于STC89C52单片机的红外窗帘控制器设计与实现(可编辑),单片机控制器,红外控..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于STC89C52单片机的红外窗帘控制器设计与实现(可编辑)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口基于STC89C52的简易学习型红外遥控器|我爱单片机 - 数码之家
查看完整版本: [--
&Pages: ( 2 total )
赞助商链接
做了个简单的单键学习,需要多键自行扩展添改程序主程序main.c:[attachment=2017954]TKStudio、Keil工程源码:[attachment=2017928]
赞助商链接
留着到时候备用啊
赞助商链接
虽然用不上,友情邦顶!!!
马克备用....还没开始学.
不错。想学习,没M币。EEPORM.H看不到。
//&&定义宏 —— STC型号、CPU_FOSC:&& //&&&&&&&&编译器会自动选着相应该STC型号的EEPROM触发命令、触发时间、EEPROM首地址,&& //&&&&&&&&函数调用不需理会STC各型号EEPROM首地址的差异,均以0x0000开始,程序内部会自行调整&& //&& // 〖注〗:&& //&&&&&&&&连续读、写函数形参最好不使用通用指针,明确指针指向数据类型可以减小代码和提高速度。&& //&&&&&&&&5V单片机在3.7V以下禁止操作EEPROM,而单片机在3.3V以上程序仍可正常运行。&& //&&&&&&&&3.3V单片机在2.4V以下禁止操作EEPROM,而单片机在2.2V以上程序仍可正常运行。&&&& #ifndef __EEPROM_H__&& #define __EEPROM_H__&&&& #include &share_main.H&&&&&&&&& #define&&PointerType&&&&idata&&&& //连续读、写函数的指针指向数据类型(方便复制:idata,xdata,code,空:通用指针)&&&& /**************【载减函数】*****************/&&&&&& #define&&USE___EROM_R_STR___&&&&&& #define&&USE___EROM_W_STR___&&&&&& //#define&&USE___EROM_R16___&&&&&& //#define&&USE___EROM_W16___&& /*******************************************/&&&&&&&& extern uint8 EROM_R(uint16 addr);&&&&&&&&&&&& //读指定地址一字节数据&&&&&& extern void&&EROM_W(uint16 addr, uint8 dat);&&//向指定地址写一字节数据&&&&&& extern void&&EROM_C(uint8 n );&&&&&&&&&&&&&&&&//擦除指定扇区&&&&&& extern void&&EROM_R_STR(uint16 addr, uint8 PointerType *pr, uint8 size); //连续读数据&&&&&& extern void&&EROM_W_STR(uint16 addr, uint8 PointerType *pr, uint8 size); //连续写数据&&&&&& extern uint16 EROM_R16(uint16 addr );&&&&&&&&&&&&&&//读指定地址一字数据&&&&&& extern void&&EROM_W16(uint16 addr, uint16 dat);&& //向指定地址写一字数据&&&&&&&& //EEOPROM首址(不同STC型号有所不同)&& #if defined (__STC10xxx_H__)\&&&&|| defined (__STC11xxx_H__)\ &&&&|| defined (__STC12xx052_H__)\&&&&|| defined (__STC12x52xx_H__)\&&&&|| defined (__STC12x54xx_H__)\&&&&|| defined (__STC12x56xx_H__)\&&&&|| defined (__STC12x5Axx_H__)\&&&&|| defined (__STC15F104E_H__)\&&&&|| defined (__STC15F204EA_H__)&&&&&&&&&& #define&&EROM_Start&&&&0x0000 && #elif defined (__STC90x51_H__)&&&&&&&& #define&&EROM_Start&&&&0x1000&& #elif defined (__STC89x51_H__) || defined (__STC89x52_H__) || defined (__STC90x52_H__) &&&&&&&& #define&&EROM_Start&&&&0x2000&& #elif defined (__STC90x12_H__)&&&&&&&& #define&&EROM_Start&&&&0x3000&& #elif defined (__STC89x54_H__) || defined (__STC90x54_H__) &&&&&&&& #define&&EROM_Start&&&&0x4000&& #elif defined (__STC89x58_H__) || defined (__STC90x58_H__)&&&&&&&& #define&&EROM_Start&&&&0x8000&& #elif defined (__STC89x510_H__) || defined (__STC90x510_H__)&&&&&&&& #define&&EROM_Start&&&&0xA000&&&&&& #elif defined (__STC89x512_H__) || defined (__STC90x512_H__)&&&&&&&& #define&&EROM_Start&&&&0xC000&& #elif defined (__STC89x514_H__) || defined (__STC90x514_H__)&&&&&&&& #define&&EROM_Start&&&&0xE000&&&&&& #elif&&&&&& #warning &STC型号未定义,相应宏定义 EROM_Start 缺失&&&&& #endif&&&& //ISP触发命令(不同STC型号有所不同)&& #if defined (__STC10xxx_H__)\&&&&|| defined (__STC11xxx_H__)\ &&&&|| defined (__STC12x52xx_H__)\&&&&|| defined (__STC12x5Axx_H__)\&&&&|| defined (__STC15F104E_H__)\&&&&|| defined (__STC15F204EA_H__) //STC10xxx, STC11xxx, STC12x5Axx, 12x52xx系列ISP触发命令: 0x5A,0xA5&&&&&&&&&&&& #define&&ISP_TRIG()&&&&&& ISP_TRIG = 0x5A, ISP_TRIG = 0xA5&&&&&&&&&& #elif defined (__STC89_90xxx_H__)\ &&&&&&|| defined (__STC12xx052_H__)\&&&&&&|| defined (__STC12x54xx_H__)\&&&&&&|| defined (__STC12x56xx_H__) //STC89xxx, STC90xxx, STC12xx052, STC12x54xx, STC12x56xx系列ISP触发命令: 0x46,0xB9&&&&&&&&&&&& #define&&ISP_TRIG()&&&&&& ISP_TRIG = 0x46, ISP_TRIG = 0xB9&& #elif&&&&&& #warning &STC型号未定义,相应宏定义 ISP_TRIG() 缺失&&&&& && #endif&&&&&&&& #if&& ( CPU_FOSC &=
)&&&&&& #define&&EN_ISP&&0x80&&&&&&&&&&//系统时钟 &= 24MHz&& #elif ( CPU_FOSC &=
)&&&&&& #define&&EN_ISP&&0x81&&&&&&&&&&//系统时钟 &= 20MHz&& #elif ( CPU_FOSC &=
)&&&&&& #define&&EN_ISP&&0x82&&&&&&&&&&//系统时钟 &= 12MHz&& #elif ( CPU_FOSC &=&&6000000 )&&&&&& #define&&EN_ISP&&0x83&&&&&&&&&&//系统时钟 &= 6MHz&& #elif ( CPU_FOSC &=&&3000000 )&&&&&& #define&&EN_ISP&&0x84&&&&&&&&&&//系统时钟 &= 3MHz&& #elif ( CPU_FOSC &=&&2000000 )&&&&&& #define&&EN_ISP&&0x85&&&&&&&&&&//系统时钟 &= 2MHz&& #elif ( CPU_FOSC &=&&1000000 )&&&&&& #define&&EN_ISP&&0x86&&&&&&&&&&//系统时钟 &= 1MHz&& #else&&&&&& #define&&EN_ISP&&0x87&&&&&&&&&&//系统时钟 & 1MHz&& #endif&&&& #endif
EEPROM. c #include &EEPROM.H&&&&&&&&& /********************************************************************&& 函数:IAP触发命令 + 禁止IAP操作(清IAP相关寄存器)&& ********************************************************************/&& static void Command_and_Close( void )&& {&& #if ( USE_ISR )&&&&&& EA = 0;&& #endif&&&&&&&& ISP_TRIG();&&&&&& _nop_();&&&&&& _nop_();&&&&&& _nop_();&&&& #if ( USE_ISR )&&&&&& EA = 1;&& #endif&&&&&&&& ISP_CONTR = 0;&&&&&& ISP_CMD&& = 0;&&&&&& ISP_TRIG&&= 0;&&&&&& ISP_ADDRH = 0xFF;&&&&&& ISP_ADDRL = 0xFF;&& }&&&& /********************************************************************&& 函数:读指定地址一字节数据&& 输入:(地址)&& 返回:(地址内容)&& ********************************************************************/&& uint8 EROM_R( uint16 addr )&& {&&&&&& ISP_CONTR = EN_ISP;&&&&&& ISP_CMD&& = 1;&&&&&&&&&&&&&& //允许读取EEPROM&&&&&& ISP_ADDRL =&&&&&& ISP_ADDRH = (uint8)(addr&&8) + (uint8)(EROM_Start&&8);&&&&&&&& Command_and_Close();&&&&&&&& return ISP_DATA;&& }&&&& /********************************************************************&& 函数:向指定地址写一字节数据&& 输入:(地址,数据)&& ********************************************************************/&& void EROM_W( uint16 addr, uint8 dat )&& {&&&&&& ISP_CONTR = EN_ISP;&&&&&& ISP_CMD&& = 2;&&&&&&&&&&&&&&//允许编写EEPROM&&&&&& ISP_ADDRL =&&&&&& ISP_ADDRH = (uint8)(addr&&8) + (uint8)(EROM_Start&&8);&&&&&& ISP_DATA&&=&&&&&&&& Command_and_Close();&& }&&&& /********************************************************************&& 函数:擦除指定扇区&& 输入:(扇区号)&& ********************************************************************/&& void EROM_C( uint8 n )&& {&&&&&& ISP_CONTR = EN_ISP;&&&&&& ISP_CMD&& = 3;&&&&&&&&&&&&//允许擦除EEPROM&&&&&& ISP_ADDRL = 0x00;&&&&&& ISP_ADDRH = (uint8)(EROM_Start&&8) + n*0x02;&&&&&&&& Command_and_Close();&& }&&&& /********************************************************************&& 函数:连续读数据&& 输入:(起始地址,指针指向,字节长)&& 备注:最好不使用通用指针,明确指针指向数据类型可以减小代码和提高速度&& ********************************************************************/&& #ifdef USE___EROM_R_STR___&& void EROM_R_STR( uint16 addr, uint8 PointerType *pr, uint8 size )&& {&&&&&& while ( size-- )&&&&&& {&&&&&&&&&& *pr = EROM_R( addr );&&&&&&&&&& pr++;&&&&&&&&&& addr++;&&&&&& }&& }&& #endif&&&& /********************************************************************&& 函数:连续写数据&& 输入:(起始地址,指针指向,字节长)&& 备注:最好不使用通用指针,明确指针指向数据类型可以减小代码和提高速度&& ********************************************************************/&& #ifdef USE___EROM_W_STR___&& void EROM_W_STR( uint16 addr, uint8 PointerType *pr, uint8 size )&& {&&&&&& while ( size-- )&&&&&& {&&&&&&&&&& EROM_W( addr, *pr );&&&&&&&&&& pr++;&&&&&&&&&& addr++;&&&&&& }&& }&& #endif&&&& /********************************************************************&& 函数:读指定地址一字数据&& ********************************************************************/&& #ifdef USE___EROM_R16___&& uint16 EROM_R16( uint16 addr )&& {&&&&&& uint16&&&&&&&& ((uint8 *)&dat)[0] = EROM_R(addr);&&&&&& addr++;&&&&&& ((uint8 *)&dat)[1] = EROM_R(addr);&&&&&&&&&& }&& #endif&&&& /********************************************************************&& 函数:向指定地址写一字数据&& ********************************************************************/&& #ifdef USE___EROM_W16___&& void EROM_W16( uint16 addr, uint16 dat )&& {&&&&&& EROM_W( addr, ((uint8 *)&dat)[0] );&&&&&& addr++;&&&&&& EROM_W( addr, ((uint8 *)&dat)[1] );&& }&& #endif
太感谢了。留着好好学习!
STC的单片机怎么感觉EEP代码好复杂,我一直玩的芯唐的,之前用W79E4051做了很多带学习型的遥控控制器,也想过做学习型遥控器,就是一直没想好如何处理待机问题,市场上的遥控器平时是几乎不耗电的(微功耗),如果用普通单片机做,就必须要在执行完之后转入掉电模式,等待操作键来触发单片机重新工作,这样才能达到真正意义上的遥控器,单按键好解决,多按键的话总不能每个按键都接一个二极管到外中断去触发吧,纠结中。
[attachment=2018590]
我最近研究这个一直没结果,保存起来先
谢谢楼主的回复,我就是在想怎么才能一个二极管都不用
貌似不差,不知道能学习那一类型编码的遥控器,和这个发射距离怎样?
留个记号。备用
下看来看,学习
进来学习一下
备用一下。下次可能有用
謝謝分享.......
做个记号,备用
来学习学习&& 看看
备用一下。下次可能有用
准备开始单片机之旅
不错哦,支持一下了!!!!!
mark帮顶,等以后用
楼主好人,新手正在學習中
多謝分享,正需要!
学习一下 什么时候自己能做一个。。
内容这个学习留记号
可供学习研究
C的好看些,收下学习
谢谢,收下研究一下啦,
支持,学习了。
附件是什么东西啊 CESHI.tuo你确定不是病毒?
不错。想学习
收藏,现在积分不够,等攒够了再下
头文件报错,求破EEPROM.c(10): warning C322: unknown identifierEEPROM.c(19): warning C322: unknown identifierTarget not created
看到代码好多东西还是没写出来,还是要看头文件才行。。
进来学习一下
积分不够下不了
值得学习,谢谢分享
这个比较好的是可以学习,我手头上有红外遥控的程序,但是没有学习功能,这个值得一学
今天分没了 ,不过楼主代码写的很有条理,至于代码好不好我不知道,但是能看出楼主非常细心 等于号两边都加了空格,遵循C语言行业写法规定,嵌套清晰明了,赞一个
谢谢,收下研究一下啦,
虽然不知道你们在说什么?但是,我看到了,也觉得好像好牛逼的样子,只能帮顶了。
先学习学习 留着备用
代码很详细,谢谢楼主
留个记号,下次也做个玩玩
初学乍练&&没看懂
谢谢,最近刚好用到
太感谢了,正好用到
谢谢分享,留下备用
查看完整版本: [--
Powered by
Time 0.098507 second(s),query:5 Gzip enabled}

我要回帖

更多关于 stc89c52 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信