7,教案红外遥控数字显示器0107_红外遥控显示屏

2020-02-27 教案模板 下载本文

7,教案红外遥控数字显示器0107由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“红外遥控显示屏”。

实验七

红外遥控数字显示器

●引言

红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,在电视机、录音机、音响设备、空凋机以及玩具等电器装置上大都采用红外线遥控。在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控能有效地隔离电气干扰,也得到了广泛地应用。下面介绍用红外遥控器选择数码管显示指定数字的实验。

●实验目的1.制作一个用红外遥控器选择0-9数字的控制器。2.学会用arduino红外遥控器遥控设备。●实验原理

红外遥控器发出的信号是经过调制后的二进制编码,这些编码包含了各种控制指令。红外接收头内置接收管可将红外发射管发射出来的红外光信号转换为电信号,再由内部的IC电路进行放大、带通滤波、解调、波形整形等处理后,还原为遥控器发射出的原始编码,输出到电器的编码识别电路,使得电器设备按照控制指令进行工作。

●实验过程 1.红外接收头管脚

它有3个管脚,2个分别接电源的正负极,一个输出红外编码信号。

2.红外遥控器

一款21键的红外遥控发射器,发射频率38KHz,静态电流3-5uA,动态电流3-5mA;广泛地使用在单片机实验电路中。

3.搭建电路

在面包板上搭接电路:

4.下载程序 程序流程图: 程序代码:

/*YOCO 红外遥控数字显示器

功能:用红外遥控模块控制数码管显示0-9十个数字;每按动一次,数码管闪灭一次,同时蜂鸣器叫一声

红外接受头输出端接到Arduino的数字口D8。遙控器功能键的键值:

紅色电源开关 0xba45 MODE 0xb946 静音 0xb847 ←← 0xbb44 →→ 0xbf40 ‖ 0xbc43 VOL-0xf807 VOL+ 0xba15 EQ 0xf609 100+ e609 return 0xf200 */

#define IR_IN 8 //红外接收:D8 int Pulse_Width=0;//存储脉宽

int ir_code=0x00;//命令值,十六进制值

//设置控制各段的数字IO脚 int a=16;//模拟口的A2,以下同 int b=17;int c=4;int d=3;int e=2;int f=15;int g=14;int dp=5;

//以下用数组给数码管管脚、0-9十个数字赋值,简洁

byte segs[7] = { a, b, c, d, e, f, g };//除了小数点的7笔划段 byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 }, // = 0

{ 0,1,1,0,0,0,0 }, // = 1 { 1,1,0,1,1,0,1 }, // = 2 { 1,1,1,1,0,0,1 }, // = 3 { 0,1,1,0,0,1,1 }, // = 4 { 1,0,1,1,0,1,1 }, // = 5 { 1,0,1,1,1,1,1 }, // = 6 { 1,1,1,0,0,0,0 }, // = 7 { 1,1,1,1,1,1,1 }, // = 8 { 1,1,1,1,0,1,1 } // = 9 };

//定时器初始化函数 void timer1_init(void){ TCCR1A = 0X00;TCCR1B = 0X05;//给定时器时钟源 TCCR1C = 0X00;TCNT1 = 0X00;TIMSK1 = 0X00;//禁止定时器溢出中断 }

//执行译码结果函数,输出用灯光、数码管显示,必要可以加蜂鸣器 void remote_deal(void){ switch(ir_code){ case 0xba45: //左上角的电源开关按键 init_wire();//数码管熄灭 buzzer_led();//蜂鸣器鸣叫

break;

//以下显示所按的数字 case 0xE916://显示0 lightSegments(0);break;case 0xF30C://1 lightSegments(1);break;case 0xE718://2 lightSegments(2);break;case 0xA15E://3 lightSegments(3);break;case 0xF708://4 lightSegments(4);break;case 0xE31C://5 lightSegments(5);break;case 0xA55A://6 lightSegments(6);break;case 0xBD42://7 lightSegments(7);break;case 0xAD52://8 lightSegments(8);break;

case 0xB54A://显示9 lightSegments(9);break;} }

//判断逻辑值“0”和“1”子函数 char logic_value(){ while(!(digitalRead(8)));//低等待 Pulse_Width=TCNT1;TCNT1=0;if(Pulse_Width>=5&&Pulse_Width

Pulse_Width=TCNT1;TCNT1=0;if(Pulse_Width>=5&&Pulse_Width=19&&Pulse_Width

void pulse_deal()//接收地址码和命令码脉冲函数 { int i;

//执行8个0 for(i=0;i

//解析遥控器编码中的command指令 ir_code=0x00;//清零 for(i=0;i

//译码函数

void remote_decode(void){ TCNT1=0X00;while(digitalRead(8))//是高就等待 { if(TCNT1>=1563)//当高电平持续时间超过100ms,表明此时没有按键按下

{ ir_code = 0xff00;return;} } //如果高电平持续时间不超过100ms TCNT1=0X00;while(!(digitalRead(8)));//低等待 Pulse_Width=TCNT1;TCNT1=0;if(Pulse_Width>=130&&Pulse_Width=60&&Pulse_Width=28&&Pulse_Width=5&&Pulse_Width

} }

void setup(){ unsigned char i;for(i=2;i

digitalWrite(9,LOW);//为红外接收头的接地端,节省连接的导线 digitalWrite(10,HIGH);//为红外接收头的+端,节省连接的导线 digitalWrite(18,HIGH);//A4,为蜂鸣器-digitalWrite(19,HIGH);//A5,为蜂鸣器-,蜂鸣器可接在A4、A5中的任何一个

Serial.begin(9600);//为了在计算机的串口窗口里面观察键码值,需要打开串口窗口 }

void loop(){ timer1_init();//定时器初始化 while(1){ remote_decode();//译码 remote_deal();//执行译码结果 //以下是观察键码值的程序:

Serial.println(“ir_code”);Serial.println(ir_code, DEC);//显示十进制 } }

//熄灭数码管全部笔画 void init_wire(){ for(int i=0;i

// 点亮对应数字的数码管0-9 void lightSegments(int x){ for(int i=0;i

void buzzer_led()//蜂鸣器函数,同时数码管眨眼 { delay(20);//数码管亮 init_wire();//数码管熄灭 digitalWrite(18,LOW);//蜂鸣器响 digitalWrite(19,LOW);//蜂鸣器响 delay(80);//响持续时间

digitalWrite(18,HIGH);//蜂鸣器停 digitalWrite(19,HIGH);

} //////////////// //////////////// ●实验总结

1.输出输出/输入口的灵活运用。2.程序的共享、分享。●拓展实验

启用其他的红外遥控按键,设计一个红外遥控电路并编写出相应的代码。

《7,教案红外遥控数字显示器0107.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
7,教案红外遥控数字显示器0107
点击下载文档
相关专题 红外遥控显示屏 教案 显示器 数字 红外遥控显示屏 教案 显示器 数字
[教案模板]相关推荐
    [教案模板]热门文章
      下载全文