资源简介
用51单片机接收红外遥控并解码,然后在红外LED灯转发刚收到的遥控码,并把数据保存到AT24C256中储存,下载解压即可用keil打开,编译0错误0警告,代码全部上备注,方便查阅,方便移植
代码片段和文件信息
#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
相关资源
- 51单片机串口通信并用数码管显示接收
- DS3231+12864 0.96oled 51单片机程序
- Proteus模拟基于51单片机的断电保护实
- 51单片机红外遥控时钟
- 基于51单片机的出租车计费器
- 股票撮合系统
- 51单片机多功能电子时钟代码
- 华科课设 空气质量监测系统
- 基于51单片机和LCD12864显示的多功能万
- 51单片机数码管秒表显示
- 51单片机汇编程序-数码管动态扫描
- 基于51单片机的酒精测试仪设计
- 51单片机数字时钟设计
- 基于51单片机的PG12864的电梯仿真
- 51单片机驱动OLED液晶显示屏
- 51单片机小车PWM测试程序
- 计算法和查表法实现的CRC16校验码生成
- 4×4矩阵键盘键值LCD1602显示汇编语言
- 51单片机C 语言例题100题
- 51单片机ISP 电路.pdf
- 用298驱动两相步进电机的51单片机的驱
- 基于51单片机的16*16led点阵贪吃蛇
- 四按键五花样流水灯
- c51单片机点亮第一个led灯的程序keil文
- 51流水灯仿真加代码
- 51单片机获取DS18B20序列号LCD显示
- 图基本操作的编程实现源码
- VC-easyx绘图游戏简易教程
- 51单片机实现密码锁(带proteus仿真)
- 中颖单片机SH79F3283P例程
评论
共有 条评论