单片机红外控制发射器设计(共30页)_第1页
单片机红外控制发射器设计(共30页)_第2页
单片机红外控制发射器设计(共30页)_第3页
单片机红外控制发射器设计(共30页)_第4页
单片机红外控制发射器设计(共30页)_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上摘 要 随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的遥控系统开始进入了人们的生活。传统的遥控器采用专用的遥控编码及解码集成电路,这种方法虽然制作简单、容易,但由于功能键数及功能受到特定的限制,只实用于某一专用电器产品的应用,应用范围受到限制。而采用单片机进行遥控系统的应用设计,具有编程灵活多样、操作码个数可随便设定等优点。本设计主要应用了STC89C54单片机作为核心,以NEC红外码为主要识别的操作对象,综合应用了单片机中断系统、定时器、计数器等知识,。根据对功能按键的识别,判断出控制操作,来完成整个红外遥控接收、解码、发射的过程。其优点硬件

2、电路简单,体积小,软件功能灵活,性价比较高等特点,具有较高的的实用和参考价值。关键词:单片机,红外遥控,中断,定时,计数,频率专心-专注-专业Abstract With the development of our society and the gradual improvement of science and technology, various kinds of help remote control systems have began to enter peoples life. The traditional remote controllers adopt special r

3、emote control code and decode integrated circuits, though this kind of method is simply and easily, it is only the practical application of some certain special electric equipments because of the counted functional keys is counted and the restricted function, so the range of application is limited.

4、But the remote controllers which adopt the microprocessors have many advantages such as flexible operating and unceremonious manipulative keys.The design has used AT89C2051 microprocessor as core, integratively apply the interruptive system, timer , counter ,etc. mainly to design originally and also

5、 take the advantage of the infrared light. The remote control launcher distinguishes different operation through the control on frequency of infrared emission of light. The remote control receiver judges control operation by adopting the discerned frequency of the received infrared light to finish t

6、he whole launching and receiving course.Its advantage is that the hardware circuit is simple, the software is with perfect function, have certain use and reference valueKeywords: Microprocessor, Infrared remote control,Interrupt,Timing,Counting, Frequency目 录4二、硬件设计 0 2.8 PCB图.10三、软件开发1 2 2 4四、使用说明63

7、031一、功能简介1、通过红外接收装置和对应功能按键,对矩阵按键中的不同按键实现遥控功能学习;2、对各按键已经学习的功能进行红外解码,并将8位用户码1+8位用户码2+8位数据码+8位数据反码以16进制数,显示在LCD1602上;3、通过各独立按键已学习的功能,对外部设备进行红外遥控;4、在按键及红外接收成功时蜂鸣器有提示音; 2、 硬件设计2.1硬件设计方案红外接收矩阵键盘电源系统单片机主控芯片红外发射液晶显示图2-12.2单片机STC89C54及其电路2.2.1单片机STC89C54简介STC89C54系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新

8、一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍,内部集成MAX810专用复位电路。2.2.2 STC89C54管脚及封装图2-22.3电源模块 电源模块采用5V供电,主要包括5V圆孔式电源接口,自锁式电源开关,发光二极管电源指示灯等。电路图如下所示:图2-5 自锁式开关图2-4 圆孔电源口图2-3 电源指示灯2.4矩阵键盘及功能按键模块矩阵键盘电路如图所示:图2-6功能按键电路如图所示:图2-7矩阵键盘与功能按键使用时互有联系,单片机首先进行功能按键扫描,若有按键按下,则进入相应按键的中断,进入矩阵键盘的扫描和识别;4*3矩阵键盘共4行,3列,12个按键,各个按键之间相互

9、独立,每当有按键按下时,通过键盘扫描及键值处理程序,锁定所按下的按键。按键编码从矩阵键盘的左上角开始,初始时刻,设置键盘的行线(低4位)为低电平,列线(高四位)为高电平,第一次在读状态下检测,列线一定有一位为低电平,第二次再有按键按下时,列信号锁定,并开始逐行扫描,扫描至闭合键所在的行时,按键确定,停止扫描。2.5 LCD1602液晶显示模块电路图如下所示:图2-8 LCD显示电路本设计采用的是长沙人电子公司的SMC1602A液晶屏,714引脚与单片机P0_0P7_0引脚相连,并连接排阻,RS,RW为读写控制端,电位器可以控制液晶显示屏的亮度,VCC供电。参数及接口说明:2.6 蜂鸣器模块 蜂

10、鸣器电路如图所示:图2-9蜂鸣器电路起提示作用,在红外接收装置成功接收信号源并保存,或者在按键有效按下时,蜂鸣器会发出提示音,提示相应操作成功,是操作更加清晰。2.7 红外接收及发射装置图2-11图2-10 红外接收电路红外发射电路红外发射装置采用直径为5毫米的红外二极管及其外围电路,二极管经过放大电路与单片机的P2_3端口相连,单片机通过红外二极管将每个按键对应扇区内已学习和解码的码制信息发射出去,控制外部设备;红外接收装置为金属封装的红外接收头,型号1828t,可以将收到的红外信号转化为数字信号并存储与单片机内,2、3号引脚分别接电源和地,1号引脚为数据传送脚。2.8 PCB图图2-12三

11、、软件开发3.1 Altium Designer 6Altium Designer 是业界首例将设计流程、 PCB 设计、可编程器件(如 FPGA)设计和基于处理器设计的功能整合在一起的产品,一种同时进行PCB和FPGA设计以及嵌入式设计的解决方案,具有将设计方案从概念转变为最终成品所需的全部功能。特点:l 在PCB部分,实现了自动优化和非凡的布线效果,提供了对度封装(如 BGA)的交互布线功能, 总线布线功能,器件精确移动,快速铺铜等功能;l 在原理图部分,新增加“灵巧粘帖”可以将一些不同的对象拷贝到原理图当中;l 在嵌入式设计部分,增强了JTAG器件的实时显示功能,增强型基于FP

12、GA的逻辑分析仪,可以支持32位或64位的信号输入。3.2 NEC协议特征:l 8位地址码,8位命令码l 完整发射两次地址码和命令码,第二次均为反码,提高可靠性l 脉冲时间长短调制方式l 38kHz载波频率l 位时间1.12ms或者2.25ms图3-1调制:NEC协议根据脉冲时间长短解码,每个脉冲时间为560us长的38kHZ载波(约21个载波周期)。逻辑“1”脉冲时间为2.25ms,逻辑“0”脉冲时间为1.12ms。推荐的载波周期为1/4或1/3。协议:图3-2上图为NEC脉冲的典型脉冲链。协议规定低位首发先送,如上图所示的情况,发送的地址码为”59”,命令码为”16”。每次发送的信息首先是

13、用于调整红外接收器增益的9msAGC(自动增益控制)高电平脉冲,接着是4.5ms的低电平,接下来便是地址码和命令码。地址码和命令码发送两次,第二次发送的是反码(如:的反码为),用于验收接收信息的准确性。因为每位都发射一次反码,所以总体的发送时间是恒定的(即每次发送时,无论是1还是0,发送时间都是它及它的反码发送时间的总和)。这种以发送反码验证可靠性的手段,可以扩展地址码和命令码为16位,这样可以扩展整个系统的命令容量。即使一直按住按键,一串信息只能发送一次,发送的是以110ms为周期的重复码,重复码是由9ms的AGC高电平和4.5ms的低电平及一个560us的高电平组成。图3-3 图3-4 1

14、10ms循环码3.3主程序: #include <reg52.h> #include "LCD1602.h"#include "EEPROM.h"#define uchar unsigned char#define uint unsigned int#define KEY_OUT P1 sbit KEY_send=P20; sbit KEY_code=P21; sbit KEY_study=P22; sbit BEEP = P24; sbit IR_T=P23; sbit IR_R=P33; uchar KEY_H_scan,KEY_V_ch

15、eck,KEY_value; uchar KEY_temp; uchar KEY; uchar KEY_flag; uchar KEY_send_f; uchar KEY_code_f; uchar KEY_study_f; uchar LCD1602key2; uchar LCD1602temp8; uint EPROM_add; uchar EPROM_temp4; static bit IR_send_op; static uint IR_send_time; static uint IR_send_endtime; static uchar IR_send_flag; uchar IR

16、_send_code4; uchar IR_receive_time; uchar IR_receive_flag; uchar IR_receive_data33; uchar IR_receive_bit; uchar IR_receive_OK; uchar IR_receive_code4; uchar IR_receive_end; void Delay1ms(uint i) uchar j;while(i-)for(j=0;j<125;j+) ; void EEPROM_read(uint R_add,uchar *R_dat) uchar i;for(i=0;i<4;

17、i+)*R_dat=Byte_Read(R_add); R_add+;R_dat+;void EEPROM_write(uint W_add,uchar *W_dat) uchar i,edat;Sector_Erase(W_add); for(i=0;i<4;i+) edat=*W_dat;Byte_Program(W_add,edat); W_add+;W_dat+;void time0(void) interrupt 1 TH0=0xFF; TL0=0xE6; IR_send_time+; if(IR_send_flag=1) IR_send_op=IR_send_op; else

18、 IR_send_op=1; IR_T=IR_send_op; void IR_send_init(void)IR_send_time=0; IR_send_flag=0; IR_send_op=1; IR_T=1; EA=1; TMOD=0x11; ET0=1; TH0=0xFF;TL0=0xE6; TR0=1; void IR_send_data(uchar *p_irdata) uchar i,j;IR_send_endtime=223; IR_send_flag=1; IR_send_time=0;dowhile(IR_send_time<IR_send_endtime);IR_

19、send_endtime=117; IR_send_flag=0; IR_send_time=0;dowhile(IR_send_time<IR_send_endtime); for(j=0;j<4;j+)for(i=0;i<8;i+) IR_send_endtime=10; IR_send_flag=1;IR_send_time=0;dowhile(IR_send_time<IR_send_endtime); if(*p_irdata&0x01) IR_send_endtime=41; else IR_send_endtime=15; IR_send_flag

20、=0; IR_send_time=0;dowhile(IR_send_time<IR_send_endtime); *p_irdata=*p_irdata>>1; p_irdata+;IR_send_endtime=10; IR_send_flag=1;IR_send_time=0;dowhile(IR_send_time<IR_send_endtime); IR_send_flag=0; IR_T=1; TR0=0; ET0=0; EA=0; void IR_receive_init(void)IR_receive_time=0;IR_receive_flag=0;I

21、R_receive_bit=0;IR_receive_OK=0;IR_receive_end=0;TMOD=0x20; TH1=0x00;TL1=0x00; ET1=1; EA=1; TR1=1; void int1init(void)IT1=1; EX1=1; EA=1; void time1(void) interrupt 3 IR_receive_time+; void int1() interrupt 2 if(IR_receive_flag) if(IR_receive_time>32&&IR_receive_time<63) IR_receive_bit

22、=0; IR_receive_dataIR_receive_bit=IR_receive_time; IR_receive_time=0; IR_receive_bit+; if(IR_receive_bit=33) IR_receive_bit=0; IR_receive_OK=1; elseIR_receive_flag=1; IR_receive_time=0; void IR_code(void)uchar k,i,j,value;k=1; for(j=0;j<4;j+) for(i=0;i<8;i+) value=value>>1; if(IR_receive

23、_datak>6) value=value|0x80; k+;IR_receive_codej=value; IR_receive_end=1; void IntToStr(uchar k,uchar *buf) uchar i,j, a2;a0=(k/10)%10; a1=(k/1)%10;for(i=0; i<2; i+) ai=ai+'0' for(i=0; ai='0' && i<=1; i+); for(j=0; j<i; j+) *buf='-' buf+; for(; i<2; i+)

24、*buf=ai; buf+; *buf='0' void HtoStr(uchar *buf,uchar *dis) uchar i,DH,DL; for(i=0;i<4;i+) DL=*buf&0x0F; DH=*buf>>4; if(DH>9) *dis=DH+0x37; else *dis=DH+0x30; dis+; if(DL>9) *dis=DL+0x37; else *dis=DL+0x30; dis+; buf+;void SET_KEY_choose(void)if(KEY_send=0) Delay1ms(30);if(

25、KEY_send=0)KEY_send_f=1;KEY_code_f=0;KEY_study_f=0; GotoXY(0,0); Print(" IR KEY Send "); GotoXY(0,1); Print("KEY-:- H"); if(KEY_code=0) Delay1ms(30);if(KEY_code=0)KEY_code_f=1;KEY_send_f=0; KEY_study_f=0;IR_receive_init(); int1init(); GotoXY(0,0); Print(" IR KEY code ")

26、; GotoXY(0,1); Print(" - H "); if(KEY_study=0) Delay1ms(30);if(KEY_study=0)KEY_study_f=1;KEY_code_f=0;KEY_send_f=0; TR1=0; ET1=0; EX1=0; EA=0; GotoXY(0,0); Print(" IR KEY Study "); GotoXY(0,1); Print("KEY-:- H"); uchar keyscan(void) KEY_OUT=0xf0; KEY_V_check=KEY_OUT&

27、;0xf0; if(KEY_V_check!=0xf0)Delay1ms(30); KEY_V_check=KEY_OUT&0xf0; if(KEY_V_check!=0xf0) KEY_flag=1; KEY_H_scan=0xfe; while(KEY_H_scan&0x10)!=0) KEY_OUT=KEY_H_scan; KEY_V_check=KEY_OUT&0xf0; if(KEY_V_check!=0xf0) KEY_value=(KEY_H_scan)+(KEY_V_check|0x0f); return(KEY_value);else KEY_H_sc

28、an=(KEY_H_scan<<1)|0x01; return(0x00); void KEY_choose(uchar tmp) switch(tmp)case 0x11: KEY=1; EPROM_add=flash_1; break; case 0x21: KEY=2; EPROM_add=flash_2; break; case 0x41: KEY=3; EPROM_add=flash_3; break;case 0x12: KEY=4; EPROM_add=flash_4; break; case 0x22: KEY=5; EPROM_add=flash_5; break

29、; case 0x42: KEY=6; EPROM_add=flash_6; break; case 0x14: KEY=7; EPROM_add=flash_7; break; case 0x24: KEY=8; EPROM_add=flash_8; break; case 0x44: KEY=9; EPROM_add=flash_9; break; case 0x18: KEY=10; EPROM_add=flash_10; break; case 0x28: KEY=11; EPROM_add=flash_11; break; case 0x48: KEY=12; EPROM_add=f

30、lash_12; break; default: break; void beep()unsigned char i;for (i=0;i<100;i+)Delay1ms(1);BEEP=!BEEP; BEEP=1; void IntToStr(uchar k,uchar *buf) *buf0=KEY/10+'0' *buf1=KEY%10+'0' void main(void) LcdRs=0;LcdRw=0;LcdEn=0;P0=0x00;IR_T=1; KEY_send=1;KEY_code=1;KEY_study=1;KEY_flag=0;KEY

31、_send_f=1;KEY_code_f=0;KEY_study_f=0;LCD1602_init();GotoXY(0,0); Print(" IR KEY Send "); GotoXY(0,1); Print("KEY-:- H");while(1)SET_KEY_choose(); if(KEY_send_f=1) TR1=0; ET1=0; EX1=0; EA=0; KEY_temp=keyscan(); KEY_choose(KEY_temp); if(KEY_flag=1) 下 KEY_flag=0; EEPROM_read(EPROM_a

32、dd,&EPROM_temp0); IR_send_init(); IR_send_data(&EPROM_temp0); EEPROM_read(EPROM_add,&EPROM_temp0); IntToStr(KEY,&LCD1602key0); HtoStr(&EPROM_temp0,&LCD1602temp0); LCD1602_Print(3,1,&LCD1602key0); LCD1602_Print(6,1,&LCD1602temp0); beep(); if(KEY_code_f=1)if(IR_receive_OK=1)IR_receive_OK=0;IR_code(); if(IR_receive_end=1)IR_receive_end=0;TR1=0;ET1=0;EX1=0;EA=0;HtoStr(&IR_receive_code0,&LCD1602temp0);LCD1602_Print(3,1,&LCD1602temp0); beep(); IR_receive_init(); int1init(); if(KEY_study_f=1)KEY_temp=keyscan(); KEY_choose(KEY_temp

温馨提示

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

评论

0/150

提交评论