二○一五 ~二○一六 学年 第 1学期
电子信息工程学院
通信系统综合实训报告书
课程名称: 通信系统综合实训 班 级: 通信技术(5)班 学 号: 40 41 46
姓 名: 韩美红 季圆圆 陈真真 指导教师: 崔雁松
2015年 11月 17日
一、 任务要求
利用C51单片机设计开发一套红外线收发、显示系统。 具体要求:
编写相关程序(汇编、C语言均可);
用Proteus绘制电路图并仿真实现基本功能; 制作出实物
二、 需求分析(系统的应用场景、环境条件、参数等)
现在各种红外线技术已经源源不断进入我们的生活中,在很多场合发挥着作用。 机场、宾馆、商场等的自动门,会在人进出时自动地开启和关闭。原来,在自动门的一侧有一个红外线光源,发射的红外线照射到另一侧的光电管上,红外线是人体察觉不到的。当人走到大门口,身体挡住红外线,电管接收不到红外线了。根据设计好的指令,触发相应开关,就把门打开了。等人进去后,光电管又可以接到红外线,恢复原来的线路,门又会自动关闭。因此这种光电管被称为“电眼”,在许多自动控制设备中大显身手。
在家庭中,许多电子设备如彩色电视、空调、冰箱和音响等,都使用了各种“红外线遥控器”。利用它我们可以非常方便的转换电视频道或设定空调的温度档次。
三、概要设计(系统结构框图/系统工作说明流程图)
红外线收发、显示系统硬件由以下几部分组成:红外遥控器,51单片机最小系统,接收放大器一体集成红外接收头,LED灯显示电路。
红外线接收是把遥控器发送的数据(已调信号)转换成一定格式的控制指令脉冲(调制信号、基带信号),是完成红外线的接收、放大、解调,还原成发射格式(高、低电位刚好相反)的脉冲信号。这些工作通常由一体化的接收头来完成,输出TTL兼容电平。最后通过解码把脉冲信号转换成数据,从而实现数据的传输。
红外遥控系统电路框图
四、 详细设计(Proteus电路图、程序流程图、源程序清单) 1)Proteus电路图:
2)程序流程图:
程序是首先初始化红外接收端口,然后检测是否接收红外信号,如果接收到红外信号就
调用接收子程序,然后就通过L额度LED显示当前按键的结果,如图所示:
开始 初始化红外接收端口 接收到红外信号 Y 调用接收子程序 N
LED灯显示 返回
程序流程图
3)源程序清单:
#include<> //头文件
#define uchar unsigned char //这里用\"uchar\"代替\"unsigned char\",\"uchar\"用来定义无符号字符型数。
#define uint unsigned int //\"uint\"用来定义无符号整型数。 uchar distemp; //定义变量 uchar IRCOM[7];
/*********声明子函数**************/ void delay(uchar x); // x* void delayms(uint);
sbit IRIN = P3^3; //定义红外接收器数据线 /********定义LED灯口线***********/ sbit P2_0=P2^0; //定义LED灯口线。 sbit P2_1=P2^1;
sbit P2_2=P2^2; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_5=P2^5; sbit P2_6=P2^6; sbit P2_7=P2^7;
void IR_IN() interrupt 2 using 0 {
unsigned char j,k,N=0; EX1 = 0; delay(15); if (IRIN==1) { EX1 =1; return; }
//确认IR信号出现
while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 {delay(1);}
for (j=0;j<4;j++) //收集四组数据 {
for (k=0;k<8;k++) //每组数据有8位 {
while (IRIN) //等 IR 变为低电平,跳过的前导高电平信号。 {delay(1);}
while (!IRIN) //等 IR 变为高电平 {delay(1);}
while (IRIN) //计算IR高电平时长 {
delay(1);
N++; if (N>=30) { EX1=1;
return;} //计数过长自动离开。
} //高电平计数完毕 IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0” if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补“1” N=0; } }
if (IRCOM[2]!=~IRCOM[3]) { EX1=1; return; } switch(IRCOM[2]) {
case 0x45: // 全亮
P2=0x00; break;
case 0x47: // 全灭 P2=0xff; break;
case 0x16: //当得出十六进制值为 0x16时。 P2_7=~P2_7; break; case 0x0c: P2_6=~P2_6; break; case 0x18: P2_5=~P2_5; break; case 0x5e: P2_4=~P2_4; break; case 0x08: P2_3=~P2_3; break; case 0x1c: P2_2=~P2_2; break; case 0x5a: P2_1=~P2_1; break; case 0x42: P2_0=~P2_0; break; }
EX1 = 1; }
void delay(unsigned char x) //{
unsigned char i; while(x--) {
for (i = 0; i<13; i++) {} } }
void delayms(uint xms) 延时函数 x* // 延时函数
x*1ms{
uint k,y;
for(k=xms;k>0;k--) //i=xms即延时约xms毫秒 for(y=110;y>0;y--); }
void check() {
P2=0X7F; delayms(200); P2=0X3F; delayms(200); P2=0X1F; delayms(200); P2=0X0F; delayms(200);
P2=0X07; delayms(200); P2=0X03; delayms(200); P2=0X01; delayms(200); P2=0X00; delayms(1000); P2=0XFF; }
main() // 主函数 {
check(); //开机自检LED的好坏
IE = 0x84; //允许总中断中断,使能 INT1 外部中断 TCON = 0x10; //触发方式为脉冲负边沿触发 IRIN=1; //I/O口初始化 delayms(10); //延时 while(1) { ; } }
五、 系统实现(清晰的实物照片)
六、 个人总结(课程学习体会与收获及对课程的建议)
通过本次红外系统的设计,我大有收获。从得到题目到查找资料,从电路板的调试到失败后再一次全部重新开始,在这一个充满挑战伴随挫折,充满热情伴随打击的过程中,我感触颇深,它已不仅是一个对我三年学习知识情况和我的应用动手能力的检验,而且还是对我的钻研精神,面对困难的心态,做事的毅力和耐心的考验。我在这个过程中深刻的感受到了做毕业设计的意义所在。这个课题的根本技术就是单片机控制技术,加部分外围电路来实现一些复杂的功能。可以根据要求改变软件来实现功能的更新和扩展。
课程设计成绩:
指导教师签字:
年 月 日
因篇幅问题不能全部显示,请点此查看更多更全内容