单片机红外线发射程序

单片机红外线发射程序
单片机红外线发射程序

/******************************************************************** *********************

红外发射接收原理:

发射波形(38kHZ代替高电平) 接收波形(接受到的电平反向)

38kHZ 38kHZ 发射____1__________ ______1_________

||||||_____0________||||||___0_______------------->___0__| |___0__|

------------->

定时器工作方式

在方式2中把16位的计数器拆分成两个8位计数器,底8位作计数器用以保存计数初值。方式2适合用于比较精确的脉冲信号发生器,和波特率发生器

方式2计算初值X,X=256-tfosc/12(或6)

12和6是分频,一般情况下取12;t为所设计时时间单位为s,fosc为晶振单位为Hz。

计数器每加1耗费一个机器机器周期,一个机器周期等于12个振荡脉冲周期即如果震荡周期为1s计数器加一要花12s ,若晶振为fosc=12MHz计数频率

为fcont=fosc/12为1MHz即计数器加1消耗1us ,每计1所华的时间为t=T=1/fcont=1(fosc/12)=12/fosc

/**********************************************************/

#include "reg51.h"

#include "keyscan.c"

sbit TR_DATA=P2^7;

/***********************************************

函数名:delay_ms

子函数:无

输入:n

输出:无

功能:延迟nMS子程序24MHz,n MS经滤波器检测非常精确

------------------------------------------------

************************************************/

void delay_ms(unsigned int n)

{

unsigned int i=218;

for(;n>0;n--)

{

while(i--);

i=218;

}

}

/***********************************************

函数名:TransData

子函数:无

输入:_data

输出:无

功能:发送数据9ms38k 4ms低电平说明:开始时序:9ms38kHz方波接着4ms低电平|||||||||||||||||||||||____0___ 信号"1"时序:1ms的38kHZ方波接着1ms低电平

信号"0"时序:1ms的38kHZ方波接着3ms低电平

结束时序:5ms的38kHZ

************************************************/

void TransData(unsigned char _data)

{

unsigned char i;

TR0=1; //启动38K发生器

delay_ms(9); //9ms的启动38KHz脉冲

TR0=0; //关闭38K发生器

TR_DATA= 0; //输出0

delay_ms(5); //5ms的启动低电平

for(i=0;i<8;i++)

{

TR0=1; //启动38K发生器

delay_ms(1); //产生1ms的38k脉冲供红外发射管发射

TR0=0; //关闭38K发生器

TR_DATA= 0; //输出0

if(_data&(1<

//如果发送1 则高低电平比为1:1 else delay_ms(3); //如果发送0 则高低电平比为1:3 }

TR0=1; //启动38K发生器

delay_ms(5); //5ms的结束38K方波

TR0=0; //关闭38K发生器

TR_DATA= 0; //输出0

}

//主函数

void main()

{

unsigned char key;

TMOD=0x02; //定时器T0工作方式2

TH0=0xE6;

TL0=0xE6; //自动重载

EA=1;

ET0=1;

while(1)

{

TR_DATA=0;

while(!key_on()); //等待按下按键

key=key_scan();

if(key == 20)continue;//如果key=20结束本次循环

TransData(key);

while(key_on()); //等按键松开

}

}

//定时器零产生38K方波

void T0_interrupt(void) interrupt 1

{

TR_DATA=~TR_DATA;

TR0=1;

}

51单片机中断程序大全

//实例42 :用定时器T0 查询方式 P2 口8 位控制LED 闪烁 //#include单片机寄存器定义的头文件 51包含 /******************************************************* *******函数功能:主函数 ******************************************************** ******/void main(void){ // EA=1;开总中断// 中断允许T0 // 定时器// ET0=1; 1的模式TMOD=0x01;// 使用定时器T0 位赋初值定时器T0 的高8 TH0=(65536-46083)/256; // 位赋初值的高8 TL0=(65536-46083)%6; // 定时器T0 T0启动定时器TR0=1;// TF0=0;P2=0xff; 无限循环等待查询while(1)// {while(TF0==0); TF0=0;P2=~P2; 位赋初值的高8 定时器TH0=(65536-46083)/256; // T0 位赋初值T0 TL0=(65536-46083)%6; //

定时器的高8 }} 1KHzT1:用定时器43 实例// 音频查询方式控制单片机发出 #include 单片机寄存器定义的头文件51 // 包含sbit sound=P3^7;将// 引脚sound P3.7 位定义为 /********************************************************** **** 函数功能:主函数 ******************************************************** ******/void main(void){// EA=1;开总中断// 中断允许ET0=1;// // 定时器T0 1的模式使用定时器// T1 TMOD=0x10; 位赋初值// TH1=(65536-921)/256; T1 定时器的高8 TL1=(65536-921)%6; // 定时器T1 的高8 位赋初值 TR1=1;// 启动定时器T1TF1=0; while(1)// 无限循环等待查询{while(TF1==0); TF1=0;

基于单片机的红外遥控小车设计

单片机系统设计实例 红外遥控小车 专业:信息对抗技术 姓名:吴志飞 学号:1411050121 指导教师:张东阳

目录 1 绪论 (1) 2 系统分析 (2) 2.1系统框架 (2) 2.2电机驱动模块 (3) 2.3 LCD显示模块 (4) 3 系统硬件设计 (5) 3.1主控模块的电路设计 (6) 3.1.1AT89C51单片机的简介 (8) 3.1.2AT89C51管脚功能 (8) 3.2红外遥控模块的电路设计 (9) 3.2.1红外遥控的实现原理 (10) 3.2.2红外发射器 (11) 3.2.3红外接收器 (12) 3.3电机驱动模块的电路设计 (12) 3.4显示模块的电路设计 (13) 4 系统软件设计 (14) 4.1程序代码 (14) 4.2软件流程图 (17) 5 调试与仿真 (18) 5.1在keil中进行调试 (18) 5.2在Proteus中进行仿真 (19) 6 总结 (21) 参考文献 (22) I

沈阳理工大学课程设计说明书 1 绪论 随着计算机、微电子、信息技术的快速进步,智能化技术的开发速度越来越快,,智能化程度越来越高,应用范围也越来越广,包括海洋开发、宇宙探测、工农业生产、军事、社会服务、娱乐等各个领域。智能电动小车系统以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科。主要由路径识别、角度控制及车速控制等功能模块组成。同时,当今机器人技术发展的如火如荼,其在国防等众多领域的应用广泛开展。神五、神六升天、无人飞船等等无不得益于机器人技术的迅速发展。一些发达国家已把机器人制作比赛作为创新教育的战略性手段,参加者多数为学生,目的在于通过大赛全面培养学生的动手能力、创造能力、合作能力和进取精神,同时也普及智能机器人的知识。从某种意义上来说,机器人技术反映了一个国家综合技术实力的高低,而智能电动小车是机器人的雏形,它的控制系统的研制将有助于推动智能机器人控制系统的发展,同时为智能机器人的研制提供更有利的手段。 本次课设设计的红外遥控智能小车可以分为四大组成部分:红外遥控部分、显示部分、执行部分、控制部分。智能小车可以实现按遥控指示前行,后退,左转和右转。该设计主要通过对系统硬件电路的设计,软件设计和程序的编写,然后通过后期软硬件调试达到设计初衷。 1

基于51单片机的红外遥控器设计

天津职业大学 二○一五~二○一六学年第1学期 电子信息工程学院 通信系统综合实训报告书 课程名称:通信系统综合实训 班级:通信技术(5)班 学号:1304045640 1304045641 1304045646姓名:韩美红季圆圆陈真真指导教师:崔雁松 2015年11月17日

一、任务要求 利用C51单片机设计开发一套红外线收发、显示系统。 具体要求: ●编写相关程序(汇编、C语言均可); ●用Proteus绘制电路图并仿真实现基本功能; ●制作出实物 二、需求分析(系统的应用场景、环境条件、参数等) 现在各种红外线技术已经源源不断进入我们的生活中,在很多场合发挥着作用。 机场、宾馆、商场等的自动门,会在人进出时自动地开启和关闭。原来,在自动门的一侧有一个红外线光源,发射的红外线照射到另一侧的光电管上,红外线是人体察觉不到的。当人走到大门口,身体挡住红外线,电管接收不到红外线了。根据设计好的指令,触发相应开关,就把门打开了。等人进去后,光电管又可以接到红外线,恢复原来的线路,门又会自动关闭。因此这种光电管被称为“电眼”,在许多自动控制设备中大显身手。 在家庭中,许多电子设备如彩色电视、空调、冰箱和音响等,都使用了各种“红外线遥控器”。利用它我们可以非常方便的转换电视频道或设定空调的温度档次。 三、概要设计(系统结构框图/系统工作说明流程图) 红外线收发、显示系统硬件由以下几部分组成:红外遥控器,51单片机最小系统,接收放大器一体集成红外接收头,LED灯显示电路。 红外线接收是把遥控器发送的数据(已调信号)转换成一定格式的控制指令脉冲(调制信号、基带信号),是完成红外线的接收、放大、解调,还原成发射格式(高、低电位刚好相反)的脉冲信号。这些工作通常由一体化的接收头来完成,输出TTL兼容电平。最后通过解码把脉冲信号转换成数据,从而实现数据的传输。 红外遥控系统电路框图

单片机中断程序大全

单片机中断程序大全公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

//实例42:用定时器T0查询方式P2口8位控制L E D闪烁#include // 包含51单片机寄存器定义的头文件void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 //实例43:用定时器T1查询方式控制单片机发出1KHz音频

#include // 包含51单片机寄存器定义的头文件sbit sound=P3^7; //将sound位定义为P3.7引脚 void main(void) {// EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%256; //定时器T1的高8位赋初值 TR1=1; //启动定时器T1 TF1=0; while(1)//无限循环等待查询 { while(TF1==0); TF1=0; sound=~sound; //将P3.7引脚输出电平取反 TH1=(65536-921)/256; //定时器T0的高8位赋初值 TL1=(65536-921)%256; //定时器T0的高8位赋初值 } } //实例44:将计数器T0计数的结果送P1口8位LED显示 #include // 包含51单片机寄存器定义的头文件sbit S=P3^4; //将S位定义为P3.4引脚

基于51单片机的红外发射接收温度传感装置

2015年高校联盟电子制作大赛题目 (数字类) 技术报告 队长:黄文杰 学号:2014212652 学院:自动化学院 队员:李嘉伟 学号:2014212650 学院:自动化学院 唐泓 学号:2014212640 学院:自动化学院

题目名称:简易红外光数字通信装置 1、设计题目:单片机应用系统设计 基于单片机的——简易红外光数字通信装置 2、总体要求: 本次大赛设计内容从主办方所给的题目出发,参赛者应了解单片机实际的应用系统,并自学红外信号编码,弄清结构和功能,结合单片机课程知识及其他相关课程知识,充分发挥自己的想象力和创造力,实现主办方题目要求并适当发挥,团队合作完成本次比赛。 3、具体要求: 1)确定应用系统功能参数 2)设计合理的电路原理图 3)Proteus仿真原理图 4)制作电路板并检测 5)设计程序 6)电路板调试运行 7)技术报告

单片机技术报告 一、项目简介 单片机被广泛应用于仪器仪表、工业自动控制、家用电器、医用设备、办公自动化设备、安全监控等领域,涵盖了人类生活的方方面面。 二、系统功能描述 这是一款基于STC89C52RC单片机的简易红外光数字通信装置。它可以分为六个部分: (1)红外功能,可以红外传送数据 (2)音阶功能,在发射板上按动七个音阶,在接收板上可以响出duo rai mi fa suo nai xi 七个音阶 (3)温度检测,在发射板上可以检测温度,在接收板上可以显示温度,每隔0.5秒更新一次温度。 三、设计思路 红外模块设计思路: 1:对输入的数据进行编码。 2:对编码进行脉冲调制。

3:信号放大后,通过发射管发送38khz信号。 4:接收信号,进行解码。 5:让51 对信号进行处理(显示,统计,分析)。 音阶模块设计思路: 1:计算音阶响应相应延时 2:建立延时数组,按键控制取数组里的值。 3:用延时控制发出不同声音 温度模块设计: 1:温度测出数据,读取温度感应数据,计算成十进制数。 2:在数码管上显示十进制数 3:延时控制发射更新温度数据 四、程序部分 1.红外部分,红外部分分为,发射和接收部分,发射部分,通过定时器0 产生38k载波,通过定时器1发送信号。接收部分,通过外部中断(下 降沿触发)接收信号,通过定时器计算两个下降沿之间的时间来确定收 到的是0还是1。 2.音阶部分:按键1~7,每次按键按下,发送控制数据,控制接收蜂鸣器 根据不同频率发出不同声音。 3.温度部分:发射端温度传感器,测出温度,通过计算得到温度具体数值, 发送数据,接收端,根据接收的数据,显示在数码管上。

单片机红外电视遥控器C51程序代码单片机程序

单片机红外电视遥控器C51程序代码单片机程序 //************************************************************** //名称:单片机红外电视遥控器C51程序代码() /*-------------------------------------------------------------- 描述: 一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行 脉冲幅度调制而产生的.当发射器按键按下后,即有遥控码发出,所按的键 不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。上述“0”和“1”组成的32位二进制码经38kHz 的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。 一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位 为8位的操作码和8位的操作反码,用于核对数据是否接收准确。 根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。 所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低 电平处发送38kHz红外信号,高电平处则不发送红外信号。 ----------------------------------------------------------------*/ //编辑: //日期: //**************************************************************** #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include //包括一个51标准内核的头文件 static bit OP; //红外发射管的亮灭 static unsigned int count; //延时计数器 static unsigned int endcount; //终止延时计数 static unsigned char flag; //红外发送标志 char iraddr1; //十六位地址的第一个字节 char iraddr2; //十六位地址的第二个字节 void SendIRdata(char p_irdata); void delay(); //************************************************************** void main(void) {

51单片机中断程序大全

//实例42:用定时器T0查询方式P2口8位控制LED闪烁#include // 包含51单片机寄存器定义的头文件 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 } } //实例43:用定时器T1查询方式控制单片机发出1KHz音频#include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值

c51、c52单片机红外线遥控接收解码c程序(可直接使用)

/ 亲,此程序以经过测试,可直接使用!!!/ #include #define uchar unsigned char #define uint unsigned int void delay(uchar x); sbit IRIN = P3^2; uchar IRCOM[4]; void main() { IE = 0x81; TCON = 0x01; IRIN=1; /* 此处可以根据按键码自由编写程序 /以下为3*7遥控按键码/ /(也可以应用与其他类型遥控,本程序只以3*7遥控为例)/ / 0x45 0x46 0x47 / / 0x44 0x40 0x43 / / 0x07 0x15 0x09 / / 0x16 0x19 0x0d / / 0x0c 0x18 0x5e / / 0x08 0x1c 0x5a / / 0x42 0x52 0x4a / 例如: while(1) {switch(IRCOM[2]) {case 0x45: P2=0x7f; break; case 0x44: P2=0xbf; break; case 0x07: P2=0xdf; break; case 0x16: P2=0xef; break; case 0x0c: P2=0xf7; break; case 0x08: P2=0xfb; break; case 0x42: P2=0xfd; break; case 0x52: P2=0xfe; break; case 0x4a: P2=0xff; break; case 0x5a: P2=0x00; break;} } */ while(1); } //end main /**********************************************************/ void IR_IN(void) interrupt 0 //外部中断服务程序 {unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN==1) { EX0 =1;

最简单详细的红外解码程序

#include //包含头文件名 sbit IRIN=P3^2; //定义红外接收头的外部接口,即外部中断0 sbit BEEP=P1^5; //定义蜂鸣器接口,我的在P1^5 unsigned char IRCOM[7]; //定义数组,用来存储红外接收到的数据 void delay(unsigned char x) { //延时子程序unsigned char i; //延时约x*0.14ms while(x--) //不同遥控器应设置不同的参数

{for(i=0;i<13;i++){}} //参数的选择咱们先不管,先看这个 } void beep() { unsigned char i; //蜂鸣器发声子程序 for(i=0;i<100;i++) { delay(4); //这个得看你的蜂鸣器内部是否有振荡源 BEEP=~BEEP; } //如果没有振荡源就应该输入脉冲信号 BEEP=1; }

void IR_IN() interrupt 0 using 0 //外部中断0程序 { unsigned char j,k,n=0; //先定义变量,记住n=0 EX0=0; //禁止中断,以免再次进入中断 delay(15); //延时0.14ms*15=2.1ms if(IRIN==1) //如果在这期间有高电平说明 { //信号不是来自遥控的,返回主程序 EX0=1; return; } while(!IRIN){delay(1);} //死循环,等待9ms前导低电平信号的结束for(j=0;j<4;j++) //一共有4组数据

基于单片机的红外遥控系统设计

单片机红外遥控系统设计 随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的遥控系统开始进入了人们的生活。传统的遥控器采用专用的遥控编码及解码集成电路,这种方法虽然制作简单、容易,但由于功能键数及功能受到特定的限制,只实用于某一专用电器产品的应用,应用范围受到限制。而采用单片机进行遥控系统的应用设计,具有编程灵活多样、操作码个数可随便设定等优点。 本设计主要应用了AT89C51单片机作为核心,综合应用了单片机中断系统、定时器、计数器等知识,应用红外光的优点,设计了一个红外线遥控系统。本系统包含发射和接收两大部分,利用编码/解码芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED 红外线发射器;接收部分包括红外线接收芯片、光电转换器、调解电路。其优点硬件电路 简单,软件功能完善,性价比较高等特点,具有一定的使用和参考价值。 关键词:单片机AT89C51;LED红外线发射器

目录 目录 (2) 1 绪论 (2) 1.1研究背景 (2) 1.2国内外研究现状 (3) 1.3研究目的与意义 (3) 2系统方案设计论证 (5) 2.1单片机红外遥控发射器设计原理 (5) 2.2单片机红外遥控接收器设计原理 (5) 2.3方案选择和论证 (6) 3红外解码硬件电路设计 (8) 3.1红外解码系统设计 (8) 3.2单片机及其硬件电路设计 (8) 3.3红外发射电路设计 (10) 3.4红外接收电路设计 (11) 3.5本章小结 (13) 4红外解码程序设计 (14) 4.1红外接收电路主程序流程图 (14) 4.2红外接收电路子程序流程图 (14) 4.3本章小结 (15) 5 联机与调试 (16) 结论和展望 (23) 附录A:系统原理图 (24) 附录B:系统PCB图 (25) 附录C:系统仿真图 (26) 附录D:系统源程序 (27) 1 绪论 1.1研究背景 目前市场上采用的一般是遥控编码及解码集成的电路。此方案的特点是制作简单、容

红外遥控原理及解码程序

红外遥控系统原理及单片机 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 1 红外遥控系统 通用红外遥控系统由发射和接收两大部分组成。应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 图1 红外线遥控系统框图 2 遥控发射器及其编码 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC 的uPD6121G组成发射电路为例说明编码原理(一般家庭用的DVD、VCD、音响都使用这种编码方式)。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周

期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。 图2 遥控码的“0”和“1” (注:所有波形为接收端的与发射相反)上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3示。 图3 遥控信号编码波形图 UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。 遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图4为发射波形图。

单片机红外发射(原理与设计程序)

用AT89S51单片机制作红外电视遥控器 一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。 当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。 根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。 遥控串行数据编码波形如下图所示: 接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低电平处发送38kHz红外信号,高电平处则不发送红外信号。 单片机红外电视遥控器电路图如下:

C51程序代码: #include static bit OP; //红外发射管的亮灭 static unsigned int count; //延时计数器static unsigned int endcount; //终止延时计数static unsigned char flag; //红外发送标志char iraddr1; //十六位地址的第一个字节 char iraddr2; //十六位地址的第二个字节 void SendIRdata(char p_irdata); void delay(); void main(void) { count = 0;

基于单片机的红外无线控制

中国矿业大学徐海学院 技能考核培训 姓名:陈思彤学号: 22110838 专业:信息11-2班 题目:基于单片机的红外无线控制 专题:音乐播放器 指导教师:有鹏老师翟晓东老师 设计地点:电工电子实验室 时间: 2014 年 4 月

通信系统综合设计训练任务书 学生姓名陈思彤专业年级信息11-2班学号22110838 设计日期:2014年4 月5日至2014 年4 月10 日 设计题目: 基于单片机的红外无线控制 设计专题题目: 音乐播放器 设计主要内容和要求: 1. 主要内容: 单片机内部结构 红外遥控解码 C语言程序设 2. 功能扩展要求 实现音乐播放器的功能 指导教师签字:

摘要:近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入。红外线技术也被广泛应用于各个电子领域,先设计一种基于单片机的红外遥控的简易音乐播放器。通信蜂鸣器来发声,来完成音乐播放器的功能。该系统可实现对音乐播放的远距离遥控,且结构简单,速度快,抗干扰能力强。通过本次课程设计,我对单片机中断系统等知识有了进一步的了解,对单片机的相关知识做到理论联系实际。 关键词:单片机,中断系统,红外遥控,音乐播放

目录 1 绪论 (4) 1.1概述 (4) 1.2功能 (4) 2 硬件电路 (5) 2.1总体设计方 (5) 2.2单片机最小系统 (5) 2.3红外遥控收发电路 (5) 2.3.1 红外遥控发射电路 (6) 2.3.2 红外遥控接收电路 (7) 2.4蜂鸣器电路 (7) 2.5 LED指示灯电路 (8) 3软件编程 (9) 3.1 C语言实现系统设计 (9) 3.2乐谱的改编 (10) 参考文献 (11) 附录 (12)

红外解码程序详解

//此程序为网上下载后修改,要弄懂的话,可以去看看HT6221的时序图。当然也欢迎在这里留言。 ///C51的红外解码程序,可以根据需要自己修改: //11.0592Mhz #include //根据自己的接线来改 sbit IRIN = P3^2; //红外接收器数据线 sbit led = P3^7; //指示灯 //////////////////////////////////////////// //定义数组IRCOM,分别装解码后得到的数据 //IRCOM[0] 低8位地址码 //IRCOM[1] 高8位地址码 //IRCOM[2] 8位数据码 //IRCOM[3] 8位数据码的反码 ///////////////////////////////////////////// #define uchar unsigned char #define uint unsigned int uchar IRCOM[4]=0; bit flag=0; /********************/ void delay014ms(unsigned char x); //x*0.14MS void IR_init(void); void delay014ms(unsigned char x) //x*0.14MS STC10F04延时约0.15MS { unsigned char i; while(x--) { for (i = 0; i<125; i++) //13 {;} } } /////////////// //初始化 //////////// void IR_init(void) { EA=1; EX0=1; //允许总中断中断,使能 INT0 外部中断 IT0=1; //触发方式为脉冲负边沿触发 IRIN=1; //I/O口初始化

51单片机中断程序大全

//实例42 :用定时器TO查询方式P2 口8位控制LED闪烁#include // 包含 51 单片机寄存器定义的头文件/************************************************************** 函数功能:主函数 void main(void) { // EA=1; // 开总中断 // ETO=1; // 定时器 TO 中断允许 TMOD=OxO1; // 使用定时器 TO 的模式 1 THO=(65536-46O83)/256; // 定时器 TO 的高 8 位赋初值 TLO=(65536-46O83)%256; // 定时器 TO 的高 8 位赋初值 TRO=1; // 启动定时器 TO TFO=O; P2=Oxff; while(1)// 无限循环等待查询 { while(TFO==O) TFO=O; P2=~P2; THO=(65536-46O83)/256; // 定时器 TO 的高 8 位赋初值

TL0=(65536-46083)%256; // 定时器 T0 的高 8 位赋初值 } // 实例43 :用定时器T1 查询方式控制单片机发出1KHz 音频#include // 包含 51 单片机寄存器定义的头文件 sbit sou nd=P3^7; // 将 sound 位定义为 P3.7 引脚 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; // 开总中断 // ET0=1; // 定时器 T0 中断允许 TMOD=0x10; // 使用定时器 T1 的模式 1 TH1=(65536-921)/256; // 定时器 T1 的高 8 位赋初值 TL1=(65536-921)%256; // 定时器 T1 的高 8 位赋初值 TR1=1; // 启动定时器 T1 TF1=0; while(1)// 无限循环等待查询 {

基于51单片机红外发射与接收C程序

基于51单片机红外发射与接收程序实验证明,效果非常好。

红外发射程序 #include #include #define uchar unsigned char #define uint unsigned int sbit key1=P3^3; sbit key2=P3^4; sbit key3=P3^5; sbit LED=P1^0; //发射指示灯sbit out=P3^7; uchar i,a,num1; void init()//初始化作用 { key1=1;

key2=1; key3=1; } void delay(uchar aa) { uchar bb,cc; for(bb=aa;bb>0;bb--) for(cc=200;cc>0;cc--); } void delayms(uchar aa)//延时程序 { for(a=aa;a>0;a--) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } } void khz(uchar aa)//是发射38KHZ的程序 { for(a=aa;a>0;a--) //这个for语句可以得到准确的26.3波特率{ out=0; i=7; //低了17us while(i>0)i--; // 38kHZ out=1; //高了9us 17+9=26us 比26.3快一点点} } //khz(116);//3.028ms 精确的时间 //khz(64);//2.006ms //khz(40); //1.052ms //delayms(125);//2.012ms 这里是一些时间的介绍 //delayms(65);//1.054ms //delayms(93);//1.5ms void fashu(uchar num) {

红外遥控接收程序

#include "remote.h" UINT IrCode; //高8位为系统码,低八位为数据码 /*************************************************************************** *FUNCTION NAME: DelayIr *CREATE DATE: 2012/6/7 *CREATED BY: XS *FUNCTION: IR采样延时:0.14ms *MODIFY DATE: 2012/6/7 *INPUT: 无 * *RETURN: 无 ***************************************************************************/ void DelayIr(UCHAR timer) { UCHAR i; while(timer--) { for (i = 0; i<13; i++); } } /*************************************************************************** *FUNCTION NAME: RemoteDecode *CREATE DATE: 2012/6/7 *CREATED BY: XS *FUNCTION: IR遥控解码 *MODIFY DATE: 2012/6/7 *INPUT: 无 * *RETURN: 无 ***************************************************************************/ void RemoteDecode(void) { UCHAR i,j,n = 0; UCHAR irDat[4] = {0}; EX0 = 0;

基于51单片机控制红外通信

红外通信原理 红外遥控有发送和接收两个组成部分。发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。为了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038,它接收红外信号频率为38kHz,周期约26μs) 接收红外信号,它同时对信号进行放大、检波、整形得到TTL 电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对象。具体实现过程如下: (在这里特别强调:编码与解码是一对逆过程,不仅在原理上是一对逆过程,在码的发收过程也是互反的,即以前发射端原始信号是高电平,那接收头输出的就是低电平,反之亦然。因此为了保证解码过程简单方便,在编码时应该直接换算成其反码。)

1.红外发射部分: 下图为红外发射部分的电路拟图: 编码过程: (1) 二进制信号的调制 二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率为38kHz的间断脉冲串(用定时器来完成),相当于用二进制信号的编码乘以频率为38kHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。 (2)PPM编码

这种遥控编码具有以下特征: ○1遥控编码脉冲由前导码、16 位地址码(8位地址码、8 位地址码的反码)和16 位操作码(8 位操作码、8 位操作码的反码)组成。前导码:是一个遥控码的起始部分,由一个9ms的高电平( 起始码) 和一个4. 5ms的低电平( 结果码)组成,作为接受数据的准备脉冲。16位地址码:能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。 16 位操作码:用来执行不同的操作。 ○2采用脉宽调制的串行码,以脉宽为0.56ms、间隔0.56ms、周期为1.12ms的组合表示二进制的“0”;以脉宽为1.68ms、间隔0.56ms、周期为2.24ms的组合表示二进制的“1”。 (3)发送程序 #include

红外解码程序详解

红外遥控解码程序设计 ——————基于uPD6121红外编码制式 红外传感系统是目前应用最为广泛的遥控系统,一个红外遥控系统可分为发射和接收两部分组成,发射端称之为红外遥控器,一般由矩阵键盘,红外编码调制芯片和红外发射管组成;接收端用一体化红外接收头即可,这个东东内置光电放大器和解调部分,信号接收之后一般很微弱须放大后才可解码,为有效发射出去得先托付在载波上所以需经历调制、解调的过程,其实对于发射部分主要工作在于编码,而对于编码方式只有几种主流方式,而目前国内大部分均为uPD6121编码方式(日本NEC公司搞出来的。。),所以我们只须弄清楚这种编码的时序,即可写出万能的红外解码程序,只要是基于这种编码方式的遥控器(家里的电视、空调、电扇遥控器)都可以用该程序来解码(这点也充分证明了C语言的高移植性啊。。) 这种编码的格式其实很简单,开头是一个引导码,人家芯片在编码时将其设计成9ms的高电平和4.5ms的低电平,也就是说你必须跳过这段引导码之后才会接收到数据,第一个问题来了:为什么要加这段引导码?因为红外传感是非常容易受到干扰的,如果直接传送数据很可能并非发送端的信号,很可能来自其他辐射,后面设计程序时会遇到这个问题。所以我们在写程序时在引导码时可以加入检测代码,如果是引导码则继续接收,否则跳出。第二个问题就是:接收数据时我们用外部中断接收,这是考虑到CPU 的执行效率,如果你在主函数里接收数据,就好比CPU一直在问:你接收到数据没? 你接收到没?..很明显不靠谱,和串口通信一样,接收数据用中断这是经验,有利于单片机的执行效率。第三个要注意的就是红外接收端和编码发送的数据是反向的!这点很重要,我看很多资料没有写明这点,让很多童鞋疑惑不解,也就是说引导码编码时确实是9ms高电平和4.5ms 的低电平,但是到了接收端是9ms的低电平和4.5ms的高电平,所以我们在解码时就得注意引导码高电平出现的顺序。对于编码格式,引导码后接了4个字节的数据,前两个字节为用户码和用户反码,简单点说就是器件地址;后两字节为操作码和操作反码,就是我们真正需要的数据。图为发送端编码格式,注意接收到的已反向!

基于51单片机的红外线控制系统 2

单片机原理结课项目 项目题目基于51单片机的红外线控制系统 基于51单片机的红外线控制系统 一、概述: 红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。 由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以在设计红外线遥控器时,不必要像无线电遥控器那样,每套( 发射器和接收器) 要有不同的遥控频率或编码( 否则,就会隔墙控制或干扰邻居的家用电器) ,所以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。这对于大批量生产以及在家用电器上普及红外线遥控提供了极大的方面。由于红外线为不可见光,因此对环境影响很小,再由红外光波动波长远小于无线电波的波长,所以红外线遥控不会影响其他家用电器,也不会影响临近的无线电设备。

基于51单片机的红外线控制系统。要求通过单片机发送和接红外信号程序,根据接收的信号,执行有关动作的系统,能够实现近距离的无线通。 二、硬件设计 1. 系统框图 2. 电路原理图 电路由五个模块构成(最小系统模块、红外接收模块、数码管显示模块、编程下载模块、电源模块) 1) 最小系统 STC12C5410AD 单片机 红外接收头 红外遥控器 复位电路 时钟振荡电路 数码光显示

最小系统由stc12c5410ad单片机,按键复位电路,时钟振荡电路构成。 a.电源 电源采用5V直流电供电。 b.时钟、复位电路 本电路选用12MHz晶振。

2)红外接收模块 3)显示模块

相关文档
最新文档