红外线数据通信实验
时间:09-14
来源:互联网
点击:
1.实验目的:
掌握利用红外线实现数据传输的原理和方法。
2.试验内容:
利用两块实验板,利用红外线实现实验板A向实验板B发送数据。并将发送和接收的数据显示在数码管上。
3.硬件连接:
本实验主要涉及到红外模块与数码管模块,确保红外模块中的发送和接收跳线都连接正确,同时确保数码管模块中的跳线连接正确。
4.试验原理图:
硬件原理:
利用串口来处理数据,将串口数据利用红外发射管发送,将红外接收管接收到的数据取反后再送回串口处理,处理后还原得到发送的数据。利用串口处理数据,简化了数据的分解,组合,载波等一系列复杂操作,使得红外通信大大简单化。
软件原理:
利用串口来发送和接收数据,大大简化了程序的设计,将数据通过串口发送,在将收到的数据送数码管显示。由于红外传输并不可*,可能丢失数据,在实验的过程中我们可以观测到,可*的数据传输我们暂不考虑,在下一试验中会详细讨论这个问题。
5.实验步骤:
1.连接红外模块中的发送和接收条线。
2.在Keil中编写程序,利用红外线发送和接收数据,并将接收到的数据在数码管上显示出来。
3.将编译好的程序下载到实验箱上验证程序的正确性。
6.思考题:
1:简析红外探测的优点和缺点及实用范围。
2:怎样利用红外探测原理来设计一个完整的防盗报警器?
下面是程序代码:
/**********************************Copyright (c)********************;** 西南科技大学计算机学院;** ;** ;** 日期: 2005.5.10;** 描述: 红外数据通信实验,本程序也通过调试,仅供参考。;** 实验内容: 利用红外线传输数据;** 适用机型: AT89S52************************************************\*************/#include at89x52.h> //定义芯片特殊功能寄存器的头文件#define uchar unsigned charuchar Send_data[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar count=0x00; //计时变量uchar ptr=0x00; //取数指针uchar Receive_data; //接收到的数据/*******************************************************名称: 初始化运行环境 功能: 初始化各寄存器与端口状态设置串口工作方式,波特率 3138参数: 无返回值:无*******************************************************/ void DeviceInit(void){TL0=0xC0; //置定时器处置,设置中断时间为20msTH0=0x63;TMOD=0x01; //设定定时器/计数器0工作方式为1IE=0x92; //允许全局中断,允许定时器/计数器0溢出中断,允许串口接收终端T2CON = 0x39; //设置定时器2的工作模式为波特率发生器方式,RCAP2H = 0xFF; //设置波特率为3138HzRCAP2L = 0x11;SCON = 0x50; //设置串口工作方式为方式1TR2 = 0x01; //启动定时器2*/TR0=0x01; //启动定时器/计数器0P1=0xFE;}/*******************************************************名称: 发送模块 功能: 利用串口发送1个字符参数: 无返回值:无*******************************************************/void SendChar(uchar dat) {SBUF=dat; //发送数据送发送缓冲区while(TI==0); //等待发送完成TI=0; //置发送完成标志}/*******************************************************名称: 接收中断模块 功能: 将接收到的数据保送数码管显示参数: 无返回值:无*******************************************************/void Receive (void) interrupt 4{if(RI) //当接收终端标志设立时,开始读取接收到的数据{RI = 0; //清除接收终端标志Receive_data=SBUF; //将接收到的数据送缓冲区保存P0=Receive_data; //显示接收到的数据}}/*******************************************************名称: 定时器中断模块功能: 每隔一秒发送一个数据参数: 无返回值:无*******************************************************/void Timer0Over(void) interrupt 1 { count++;if(count==0x32) //每隔相同时间发送一个数据{ if(ptr=15){SendChar(Send_data[ptr]);ptr++;}else{SendChar(Send_data[0]);ptr=0x01;}count=0x00; //计时清零}TL0=0xC0; //中断时间20msTH0=0x63;}/*******************************************************名称: 主函数功能: 应用程序入口参数: 无返回值:无*******************************************************/void main() {DeviceInit(); //初始化定时器0与串口while(1);}
- 基于TMS320F240的红外线设备远程报警系统设计与实现(04-17)
- 红外线遥控器软件解码原理和程序(C语言)(12-03)
- 基于51单片机的红外线遥控程序编写代码(11-30)
- 8051单片机红外线遥控实验(11-30)
- 红外线遥控码单片机测试程序(11-29)
- 一个红外线发射+解码程序+仿真文件(11-29)