红外发射程序.rar

  • 新地
    了解作者
  • C/C++
    开发工具
  • 23KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2019-05-28 23:47
    上传日期
红外发射的的弟弟的的的的的的的的的的的弟弟的的程序
红外发射程序.rar
  • 红外发射程序
  • STARTUP.OBJ
    749B
  • 红外发射程序.hex
    1.4KB
  • 红外发射程序
    9KB
  • 红外发射程序.OBJ
    10.7KB
  • STARTUP.A51
    6.2KB
  • 红外发射程序.plg
    202B
  • 红外发射程序_Uv2.Bak
    2.2KB
  • 红外发射程序.Opt
    1.1KB
  • STARTUP.LST
    13.7KB
  • 红外发射程序.Uv2
    2.1KB
  • 红外发射程序.M51
    14.9KB
  • 红外发射程序_Opt.Bak
    1KB
  • 红外发射程序.c
    5.9KB
  • 红外发射程序.lnp
    41B
  • 红外发射程序.LST
    13.1KB
内容介绍
/************************************************************************* *工程名称:红外发射模块 * *单片机型号:89C51/C52 * *晶振频率:12MHz * *按键数:5键 * *功能描述:按键盘上的按键,发射相应按键的红外编码 * *红外编码格式为:世面上常用的NEC红外编码格式 * *作者:新兴光电 * *日期:2016-04-23 * *************************************************************************/ #include <reg51.h> #define uchar unsigned char #define uint unsigned int #define user1 0x00 //红外用户码1 #define user2 0xFF //红外用户码2 //单片机端口定义 sbit IR_T=P2^3; //红外线数据发送口 sbit KEY1=P1^0; //按键1 sbit KEY2=P1^1; //按键2 sbit KEY3=P1^2; //按键3 sbit KEY4=P1^3; //按键4 sbit KEY5=P1^4; //按键5 sbit LED=P2^0; //以下为键盘扫描用到的寄存器 bit KEY_flag; //按键标志位 uchar value; //以下为红外发射用到的寄存器 static uint IR_send_time; //红外发射延时计数器 uchar IR_data; //红外按键码寄存器 bit flag; void Delay1ms(uint i); uchar keyscan(); void timer0_init(); void IR_send_0(); void IR_send_1(); void IR_send_1byte(uchar dat); void IR_send_start(); void IR_send_stop(); void IR_send_NECcode(uchar a,uchar b,uchar c,uchar d); /************************************************************/ void main() { IR_T=1; //关闭红外发射管 KEY1=1; //按键1 KEY2=1; //按键2 KEY3=1; //按键3 KEY4=1; //按键4 KEY5=1; //按键5 KEY_flag=0; timer0_init(); //定时器0(即红外)初始化程序 while(1) { if(KEY_flag==1) { IR_send_NECcode(user1,user2,value,~value); KEY_flag=0; } else { value=keyscan(); //按键扫描 } } } /*******1ms基准延时程序*******************/ void Delay1ms(uint i) //1ms延时程序 { uchar j; while(i--) { for(j=0;j<125;j++) { ; } } } /****************************************/ /******************按键扫描程序******************************/ uchar keyscan() { KEY1=1; if(KEY1==0) { Delay1ms(30); if(KEY1==0) { KEY_flag=1; IR_data=0x43; //按键1编码 return(IR_data); } } KEY2=1; if(KEY2==0) { Delay1ms(30); if(KEY2==0) { KEY_flag=1; IR_data=0x07; //按键2编码 return(IR_data); } } KEY3=1; if(KEY3==0) { Delay1ms(30); if(KEY3==0) { KEY_flag=1; IR_data=0x15; //按键3编码 return(IR_data); } } KEY4=1; if(KEY4==0) { Delay1ms(30); if(KEY4==0) { KEY_flag=1; IR_data=0x09; //按键4编码 return(IR_data); } } KEY5=1; if(KEY5==0) { Delay1ms(30); if(KEY5==0) { KEY_flag=1; IR_data=0x16; //按键5编码 return(IR_data); } } return(0x00); } /************************************************************/ /**********定时器0中断程序***********************************/ void timer0()interrupt 1 { ET1=0; TR1=0; //关闭产生38KHz脉冲 IR_T =1; //关闭红外发射管 ET0=0; TR0=0; flag=1; } /**********定时器1服务程序***********************************/ void timer1()interrupt 3 { IR_T=!IR_T; } /************************************************************/ /********定时器0初始化程序***********************************/ void timer0_init() { TMOD=0x21; //设置定时器0为16位模式,定时器1为8位自动重装模式 TH1=0xf3; TL1=0xf3; EA=1; } /********红外发送'0'子程序***********************************/ void IR_send_0() { ET1=1; TR1=1; //产生38KHz脉冲 TH0=(65536-560)/256; TL0=(65536-560)%256; TF0=0; TR0=1; //启动计时 ET0=1; flag=0; while(!flag); flag=0; TH0=(65536-560)/256; TL0=(65536-560)%256; TF0=0; TR0=1; ET0=1; flag=0; while(!flag); flag=0; } /************************************************************/ /*********红外发送'1'子程序**********************************/ void IR_send_1() { ET1=1; TR1=1; //产生38KHz脉冲 TH0=(65536-560)/256; TL0=(65536-560)%256; TF0=0; TR0=1; //启动计时 ET0=1; flag=0; while(!flag); flag=0; TH0=(65536-1650)/256; TL0=(65536-1650)%256; TF0=0; TR0=1; ET0=1; flag=0; while(!flag); flag=0; } /************************************************************/ /**********红外发送一字节数据程序****************************/ void IR_send_1byte(uchar dat) { uchar i; for(i=0;i<8;i++) { if(dat&0x01) IR_send_1(); //发送'1' else IR_send_0(); //发送'0' dat>>=1; } } /************************************************************/ /**********红外发送启始码子程序******************************/ void IR_send_start() { ET1=1; TR1=1; //产生38KHz脉冲 TH0=(65536-9000)/256; TL0=(65536-9000)%256; TF0=0; TR0=1; //启动计时 ET0=1; flag=0; while(!flag); flag=0; TH0=(65536-4500)/256; TL0=(65536-4500)%256; TF0=0; TR0=1; ET0=1; flag=0; while(!flag); flag=0; } /************************************************************/ /********发送结束码子程序************************************/ void IR_send_stop() { ET1=1; TR1=1; //产生38KHz脉冲 TH0=(65536-560)/256; TL0=(65536-560)%256; TF0=0; TR0=1; //启动计时 ET0=1; flag=0; while(!flag); flag=0; TH0=(65536-560)/256; TL0=(65536-560)%256; TF0=0; TR0=1; ET0=1; flag=0; while(!flag); flag=0; } /************************************************************/ /*********发送一组NEC格式红外编码****************************/ void IR_send_NECcode(uchar a,uchar b,uchar c,uchar d) { IR_send_start(); //发送启始码 IR_send_1byte(a); //发送用户码1 IR_send_1byte(b); //发送用户码2 IR_send_1byte(c); //发送数据码 IR_send_1byte(d); //发送数据码反码 IR_send_stop(); //发送结束码 while(keyscan()!=0x00); //判断按键是否一直按下 } /************************************************************/
评论
    相关推荐
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路
    • VHDL 的实例程序,共44个.rar
      经典VHDL 的实例程序,共44个!要下载的尽快
    • USBtoRS232Driver.rar
      USB转串口驱动程序,可以用在笔记本电脑上,方便的通过串口给单片机下载程序!
    • 模糊控制程序.rar
      模糊PID控制程序的源码,是作业,有讲解,
    • 串口编程源代码.rar
      这是本人最近几年所编写的串行通讯的代码集,可以供大家参考学习。
    • DELTA_PLC.rar
      台达PLC Modbus协议通信dll com控件
    • hongwaigooog.rar
      单片机红外遥控最全的资料,包含很多当前电视遥控专用芯片的解码方式,C语言和汇编语言编写的解码范例程序,看完了你就会了!
    • MF500绝密.rar
      非接触式IC卡开发板源程序,包括原理图/PCB图;源程序在KEIL环境下编译,打开压缩包后直接点击PRJ文件,即可编译使用。 这是个保密文件,做Mifare one卡开发人基本上都用过到这个源代码。
    • 20078251299410.rar
      C51实用程序(45个) I/O、定时器、中断、看门狗、计数器、软件AD、VB串口、93c06驱动、24c02系列驱动、7219、20045、软件陷阱、串口中断、码值转换、AVR通讯、IIC、DS1302、DS1820、SPI、1602、12232、12864、T6963、1330、PC键、键盘输入法、智能化、飞机游戏、贪吃蛇、多级菜单实例等
    • mcudesign.rar
      单片机设计,毕业设计 16×16点阵(滚动显示)论文+程序 cdma通信系统中的接入信道部分进行仿真与分析 LED显示屏动态显示和远程监控的实现 MCS-51单片机温度控制系统 USB接口设计 毕业设计(论文)OFDM通信系统基带数据 仓库温湿度的监测系统 单片机串行通信发射机 单片机课程设计__电子密码锁报告 单片机控制交通灯 电动智能小车(完整论文 电气工程系06届毕业设计开题报告 电信运营商收入保障系统设计与实现 电子设计大赛点阵电子显示屏(A题 电子时钟 火灾自动报警系统设计 基于GSM短信模块的家庭防盗报警系统 基于GSM模块的车载防盗系统设计 TC35i 资料 基于网络的虚拟仪器测试系统 门控自动照明电路 全遥控数字音量控制的D类功率放大器 数控直流稳压电源完整论文 数字密码锁设计 数字抢答器(数字电路) 数字时钟 水箱单片机控制系统 同步电机模型的MATLAB仿真 温度监控系统的设计 用单片机控制直流电机 用单片机实现温度远程显示 智能家用电热水器控制器 智能型充电器电源和显示的设计 自动加料机控制系统