资源简介
用51单片机接收红外遥控并解码,然后在红外LED灯转发刚收到的遥控码,并把数据保存到AT24C256中储存,下载解压即可用keil打开,编译0错误0警告,代码全部上备注,方便查阅,方便移植
![](http://www.nz998.com/pic/70093.jpg)
代码片段和文件信息
#include “STC15xxx.h“
#define uint unsigned int
#define uchar unsigned char
void Send_Byte_UART1(unsigned char dat);
#include “AT24C256.h“
#include “GET_IR_KEY.h“
#define T2K6Hz 170 //FOSC = 11.0592MHZ
#define T38KHz 12 //FOSC = 11.0592MHZ
sbit LED_Left_B_IO = P5^5;
sbit LED_Left_R_IO = P5^4;
sbit LED_Right_R_IO = P3^7;
sbit LED_Right_B_IO = P1^5;
sbit KEY_Left_IO = P3^3;
sbit KEY_Right_IO = P3^6;
sbit FMQ_IO = P1^0;
sbit IR_OUT_IO = P1^1;
uint Value_CCAP0;
uint Value_CCAP1;
bit test;
uchar Test_U8;
void Delay(unsigned int z)
{
unsigned int x=0y=0;
for(x = 144; x > 0; x--)
for(y = z; y > 0; y--);
}
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR |= 0x04; //定时器2时钟为Fosc即1T
T2L = 0xE0; //设定定时初值
T2H = 0xFE; //设定定时初值
AUXR |= 0x10; //启动定时器2
}
void Init_CCP_PCA()
{
//PCA工作模式寄存器
CMOD = 0;
// bit7:CIDL = 0;//==0空闲模式下PCA计数器继续工作,==1空闲模式停止工作
//
// //PCA计数脉冲源选择控制位
// bit3:CPS2 = 0; //000 系统时钟/12
// bit2:CPS1 = 0; //001 系统时钟/2
// bit1:CPS0 = 0; //010 定时器溢出脉冲
// //。。。。还有很多,STC15 930页
//
// bit0:ECF = 1; //==0禁止寄存器CCON中的CF位的中断,==1允许
//PCA控制寄存器CCON
CF = 0; //PCA计数器阵列溢出标志,硬件置1软件清零
CR = 1; //PCA计数器阵列运行控制位,置1启动,清零关闭
CCF2 = 0; //PCA模块2中断标志,硬件置1,软件清零
CCF1 = 0; //PCA模块1中断标志,硬件置1,软件清零
CCF0 = 0; //PCA模块0中断标志,硬件置1,软件清零
//PCA比较/捕获寄存器CCAPM0
CCAPM0 = 0x49;
CCAPM0 |= 0x04;//TOG0 = 1;
//PCA比较/捕获寄存器CCAPM1
CCAPM1 = 0x49;
}
//void Timer0Init(void) //100微秒@11.0592MHz
//{
// AUXR |= 0x80; //定时器时钟1T模式
// TMOD &= 0xF0; //设置定时器模式
// TL0 = 0xAE; //设置定时初值
// TH0 = 0xFB; //设置定时初值
// TF0 = 0; //清除TF0标志
// TR0 = 1; //定时器0开始计时
//}
void Init_MCU()
{
UartInit();//初始化串口
Init_CCP_PCA();//初始化CCP/PCA模块
// Timer0Init();//初始化定时器0
EA = 1;
ES = 1; //开串口中断
// EX0 = 1;//开外部中断0
// IT0 = 1;//==1下降沿触发,==0双沿触发
// ET0 = 1;//开定时器0中断
FMQ_IO = 0;
IR_OUT_IO = 1;
P1M0 = 0x03;
P1M1 = 0;
P3M0 = 0;
P3M1 = 0;
P5M0 = 0;
P5M1 = 0;
// PT0 = 1;
// PPCA = 0;
// PX0 = 0;
// PS = 0;
}
void FMQ_Di()
{
CCAPM1 |= 0x04;//TOG1 = 1;
Delay(500);
CCAPM1 &= ~0x04;//TOG1 = 0;
FMQ_IO = 0;
}
void Send_Byte_UART1(unsigned char dat)
{
ES = 0;
SBUF =dat;
while(!TI);
TI = 0;
ES = 1;
}
/*
void Send_Staing_UART1(unsigned char *dp)
{
unsigned char i;
while(dp[i] != “/0“)
{
Send_Byte_UART1(dp[i++]);
}
} */
void main()
{
Init_MCU();
WP = 0;
WriteFm24c256(327660x41);
Test_U8 = ReadFm24c256(32766);
Send_Byte_UART1(Test_U8);
Test_U8 = ReadFm24c256(1234);
Send_Byte_UART1(Test_U8);
Test_U8 = ReadFm24c256(1);
Send_Byte_UART1(Test_U8);
while(1)
{
if(KEY_Left_IO == 0)
{
FMQ_Di();
while(KEY_Left_IO == 0);
}
if(KEY_Right_IO == 0)
{
FMQ_Di();
while(KEY_Right_IO == 0);
}
if(test == 1)
{
test = 0;
FMQ_Di();
}
}
}
void Init0() interrupt 0
{
EX
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-22 21:33 红外遥控转发器 20180628 V10\
文件 3392 2018-06-29 15:23 红外遥控转发器 20180628 V10\AT24C256.h
文件 1895 2018-06-29 16:34 红外遥控转发器 20180628 V10\GET_IR_KEY.h
文件 6376 2009-05-07 14:37 红外遥控转发器 20180628 V10\STARTUP.A51
文件 14051 2018-07-02 22:42 红外遥控转发器 20180628 V10\STARTUP.LST
文件 749 2018-07-02 22:42 红外遥控转发器 20180628 V10\STARTUP.OBJ
文件 12805 2018-04-24 15:16 红外遥控转发器 20180628 V10\STC15xxx.h
文件 19748 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器
文件 1070 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.build_log.htm
文件 4006 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.c
文件 3653 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.hex
文件 76 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.lnp
文件 9786 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.LST
文件 25342 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.M51
文件 21684 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.OBJ
文件 2927 2018-07-02 22:42 红外遥控转发器 20180628 V10\红外遥控转发器.plg
文件 89200 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.uvgui.Administrator
文件 6828 2019-01-22 21:32 红外遥控转发器 20180628 V10\红外遥控转发器.uvopt
文件 14599 2019-01-22 21:32 红外遥控转发器 20180628 V10\红外遥控转发器.uvproj
文件 63 2019-01-22 21:33 红外遥控转发器 20180628 V10\红外遥控转发器.__i
文件 57387 2018-06-30 11:02 红外遥控转发器 20180628 V10\红外遥控转发器_uvopt.bak
文件 13789 2018-06-29 14:01 红外遥控转发器 20180628 V10\红外遥控转发器_uvproj.bak
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- MP3文件ID3v2ID3v2APEv2标签读取
- 课程作业:模拟仓库管理系统
- 一个简单实用个人日记管理系统
- 带时间温度显示的室内灯光控制系统
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 成绩管理系统(数据结构)
- FIR低通滤波器 ccs运行环境
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
评论
共有 条评论