欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    电子系统设计创新与实践实验报告.doc

    • 资源ID:60101062       资源大小:250KB        全文页数:20页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    电子系统设计创新与实践实验报告.doc

    电子系统设计创新与实践报告 简易红外遥控系统 班级:通信09-1 姓名:何探 学号: 指导老师:李新 1 任务 设计并制作红外遥控发射机和接收机。2 要求 (1 )自制红外无线收、发器,可以上电工作。 (2 )调制方式:自选编码调制方式。 (3 )遥控对象:4 个,被控设备用 LED 分别代替,LED 发光表示工作。 (4 )接收机距离发射机不小于 1m。 (5 )具有红外信号学习功能。 3 系统方案 设计框图如下:红外遥控有发送和接收两个组成部分:发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外接收端普遍采用价格便宜,性能可靠的一体化红外接收头(如HSOO38,它接收红外信号频率为38KHz,周期约26US)接收红外信号,它同时对信号进行放大、检波、整形,得到相应电平的编码信号,再送给单片机,经单片机解码并执行,去控制相关对象。(1)二进制信号的编码 本设计采用不同的脉宽宽度来实现二进制信号的编码,可由发送单片机来完成。用图2-2(a)表示二制信号中的高电平1,其特征是脉冲中低电平的宽度等于0.26ms,相当于10个26us的宽度,高电平的宽度等于0.52ms,相当于20个26us的宽度;用图2-2(b)表示二进制信号中的低电平0,其特征是脉冲中高电平的宽度等于0.26mS,而低电平的宽度是高电平的二倍,等于0.52ms,相当于20个26us的宽度。上述10个和20个脉冲宽度还可适当调整,以适应不同数据传输速度的需要。图2-2(a) 1的表示图2-2(b) 0的表示(2)二进制信号的调制 二进制信号的调制仍由发送单片机来完成,它把编码后的二进制信号调制成频率为38KHz的间断脉冲串,相当于用二进制信号的编码乘以频率为38KHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图2-3所示,A是二进制信号的编码波形,B是频率为38KHz(周期为26uS)的连续脉冲串,c是经调制后的间断脉冲串(相当于C=A*B),用于红外发射二极管发送的波形。图2-3中,待发送的二进制数据为10。10个脉冲A发送前的二进制数据0、1编码C=A*B、调制后的二进制信号(发送)T=26us20个脉冲单个脉冲B、脉冲调制图2-3、二进制信号的调制(3)二进制信号的解调 二进制信号的解调由一体化红外接收头HSOO38来完成,它把收到的红外信号(图2-4中波形D,也是图2-3中波形(C)经内部处理并解调复原,输出图2-4中波形E(正好是对图2-3中波形A的取反),HS0038的解调可理解为:在输入有脉冲串时,输出端输出低电平,否则输出高电平。二进制信号的解码由接收单片机来完成的它把红外接收头送来的二进制编码波形通过解码,还原出发送端发送的数据。如图2-4,把波形E解码后还原成数据信息101。D、红外接收头接收的波形(输入)E、解调后的输出波形图2-4、HS0038的输入输出波形(4)基于字节传输的红外遥控数据格式在发送字节的开始先通过单片机发送20个脉冲宽度(每个脉冲周期26uS)的高电平作为传输开始,接着发送8位数据(字节高位在前,低位在后),最后发送10个脉冲宽度的低电平作为传输结束,如图2-5所示。4 理论分析与硬件电路设计4.1 主要器件介绍4.1.1 芯片STC89C52(1)芯片介绍 STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 引脚标注 (2)相关特性 STC89C52RC单片机: 8K字节程序存储空间; 512字节数据存储空间; 内带2K字节EEPROM存储空间; 可直接使用串口下载; AT89S52单片机: 8K字节程序存储空间; 256字节数据存储空间; 没有内带EEPROM存储空间;(3)相关参数1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.2. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V 单片机)3.工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz4. 用户应用程序空间为8K字节5. 片上集成512 字节RAM6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片8. 具有EEPROM 功能9. 共3 个16 位定时器/计数器。即定时器T0、T1、T210.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒11. 通用异步串行口(UART),还可用定时器软件实现多个UART12. 工作温度范围:-40+85(工业级)/075(商业级)13. PDIP封装4.1.2 集成电路74 LS21 74LS21是由四输入与门构成,74LS21集成电路的引脚分布图如图3-3所示1A Vcc1B 2DNC 2C1C NC1D 2B1Y 2A接地 2Y 图3-3 74LS21集成电路的引脚分布图4.1.3 接收器HS0038一体化红外接收头HSOO38的外部结构如图3-4所示,1脚GND接电源地,2脚VCC接十SV,3脚OUT为数据输出端( TTL电平,反相输出),可直接与单片机相联。图3-4 HS0038的外观及引脚实际所用的H38B3V型号的红外接收头的管脚为管脚1是VCC,管脚2是GND,管脚3是OUT,一开始接错了,后面通过询问别人和查资料才知道。各个基本电路图的设计(1)发射接收电路如图3-7所示:图3-7(a)接收电路 图3-7(b) 发射电路(2)键盘扫描:采用4*4键盘,键盘扫描采用低电平扫描,中断定时扫描方式。电路图如3-8所示,其公共端连接VCC,初始时,令P2=F0H,无论哪个按键被按下,都将产生中断,开启定时器10ms,扫描键盘。开始进行扫描时,P2.0P2.3点均保持高电平。P2.4P2.7只能有一个为低电平。程序流程图如图4-1所示。 图3-8 键盘扫描电路(3)控制电路:采用小灯的亮灭来模拟实际应用中的电路,电路如图3-9所示。图3-9 小灯控制电路5 主要电路设计(1)发射电路原理图如图所示:(2)接收电路原理图如图所示:6 软件程序设计(1)发射程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char #define uint unsigned int sbit IR=P10; /发射引脚(接NPN三极管基极)#define sam 0x80 /用户识别码unsigned char IRCOM7;#define m9 (65536-9000) /9mS#define m4_5 (65536-4500) /4.5mS#define m1_6 (65536-1650) /1.65mS#define m_56 (65536-560) /0.56mS#define m40 (65536-40000) /40mS#define m56 (65536-56000) /56mS#define m2_25 (65536-2250) /2.25mSvoid SendDat(unsigned int Value); /NEC编码发送程序void Z0(unsigned int temp); /单帧(8位数据)发送程序void TT0(bit BT,unsigned int x); /38KHz载波发射 + 延时程序void KEY();void delay(unsigned int count)unsigned int i,j;for(i=0;i<count;i+)for(j=0;j<110;j+);void main(void) TMOD = 0x01; /T0 16位工作方式 IR=0; /发射端口常态为低电平P2=0xf0;while(1)KEY();/*函数:NEC编码发送程序*/void SendDat(unsigned int Value) TT0(1,m9); /高电平9mS TT0(0,m4_5); /低电平4.5mS /* 发送4帧数据*/ Z0(sam); /用户码 Z0(sam); /用户码 Z0(Value); /操作码 Z0(Value); /操作码反码 /* 结束码 */ TT0(1,m_56); TT0(0,m40); /*函数:单帧(8位数据)发送程序入口:temp*/void Z0(unsigned int temp) unsigned int v; for(v=0;v<8;v+) TT0(1,m_56); /高电平0.65mS if(temp&0x01) TT0(0,m1_6); /发送最低位 else TT0(0,m_56); temp >>= 1; /右移一位 /*函数:38KHz载波发射 + 延时程序入口:(是否发射载波,延时约 x (uS))*/void TT0(bit BT,unsigned int x) TH0 = x>>8; /输入定时值 TL0 = x; TF0=0; /溢出标志位清0 TR0=1; /启动定时器0 if(BT = 0) while(!TF0); /BT=0时,不发射38KHz载波只延时; elsewhile(1) /BT=1时,发射38KHz脉冲+延时;38KHz载波(低电平)占空比5:26 IR = 1; if(TF0)break;if(TF0)break; IR = 0; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; TR0=0; /关闭定时器0 IR =0; /载波停止后,发射端口常态为低void KEY()uchar temp;P2=0xf7;/第一行键盘扫描temp=P2;temp=temp&0xf0;if(temp!=0xf0)delay(7);temp=P2;temp=temp&0xf0;if(temp!=0xf0)temp=P2;switch(temp)case 0x77:SendDat(0x01);break;case 0xb7:SendDat(0x02);break;case 0xd7:SendDat(0x03);break;case 0xe7:SendDat(0x04);break;P2=0xfb;/第二行键盘扫描temp=P2;temp=temp&0xf0;if(temp!=0xf0)delay(7);temp=P2;temp=temp&0xf0;if(temp!=0xf0)temp=P2;switch(temp)case 0x7b:SendDat(0x05);break;case 0xbb:SendDat(0x06);break;case 0xdb:SendDat(0x07);break;case 0xeb:SendDat(0x08);break;P2=0xfd;/第三行键盘扫描temp=P2;temp=temp&0xf0;if(temp!=0xf0)delay(7);temp=P2;temp=temp&0xf0;if(temp!=0xf0)temp=P2;switch(temp)case 0x7d:SendDat(0x09);break;case 0xbd:SendDat(0x10);break;case 0xdd:SendDat(0x11);break;case 0xed:SendDat(0x12);break;P2=0xfe;/第四行键盘扫描temp=P2;temp=temp&0xf0;if(temp!=0xf0)delay(7);temp=P2;temp=temp&0xf0;if(temp!=0xf0)temp=P2;switch(temp)case 0x7e:SendDat(0x13);break;case 0xbe:SendDat(0x14);break;case 0xde:SendDat(0x15);break;case 0xee:SendDat(0x16);break;(2)接收程序#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar distemp=100;void delay(uchar x); /x*0.14MSvoid delay1(int ms);sbit IRIN = P33; /红外接收器数据线sbit LED0 = P00; sbit LED1 = P01;sbit LED2 = P02;sbit LED3 = P03;sbit LED4 = P04;sbit LED5 = P05; sbit LED6 = P06;sbit LED7 = P07;sbit LED8 = P20;sbit LED9 = P21;sbit LED10 = P22; sbit LED11 = P23;sbit LED12 = P24;sbit LED13 = P25;sbit LED14 = P26;sbit LED15 = P27;uchar IRCOM7;/*/void main() IE = 0x84; /允许总中断中断,使能 INT1 外部中断 TCON = 0x04; /触发方式为脉冲负边沿触发 IRIN=1; /I/O口初始化LED0 =1; LED1 =1;LED2 =1;LED3 =1;LED4 =1;LED5 =1; LED6 =1;LED7 =1;LED8 =1;LED9 =1;LED10 =1; LED11 =1;LED12 =1;LED13 =1;LED14 =1;LED15 =1; delay1(10); /延时 while(1) switch(distemp) case 0:LED0=0;delay(200);LED0=1;break; case 1:LED1=0;delay(200);LED1=1;break; case 2:LED2=0;delay(200);LED2=1;break; case 3:LED3=0;delay(200);LED3=1;break; case 4:LED4=0;delay(200);LED4=1;break; case 5:LED5=0;delay(200);LED5=1;break; case 6:LED6=0;delay(200);LED6=1;break; case 7:LED7=0;delay(200);LED7=1;break; case 8:LED8=0;delay(200);LED8=1;break; case 9:LED9=0;delay(200);LED9=1;break; case 10:LED10=0;delay(200);LED10=1;break; case 11:LED11=0;delay(200);LED11=1;break; case 12:LED12=0;delay(200);LED12=1;break; case 13:LED13=0;delay(200);LED13=1;break; case 14:LED14=0;delay(200);LED14=1;break; case 15:LED15=0;delay(200);LED15=1;break; delay(20); /end main/*/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 变为低电平,跳过4.5ms的前导高电平信号。 delay(1); while (!IRIN) /等 IR 变为高电平 delay(1); while (IRIN) /计算IR高电平时长 delay(1); N+; if (N>=30) EX1=1; return; /0.14ms计数过长自动离开。 /高电平计数完毕 IRCOMj=IRCOMj >> 1; /数据最高位补“0” if (N>=8) IRCOMj = IRCOMj | 0x80; /数据最高位补“1” N=0; /end for k /end for j if (IRCOM2!=IRCOM3) EX1=1; return; switch(IRCOM2) case 0x01:distemp = 0;break;case 0x02:distemp = 1;break;case 0x03:distemp = 2;break;case 0x04:distemp = 3;break;case 0x05:distemp = 4;break;case 0x06:distemp = 5;break;case 0x07:distemp = 6;break;case 0x08:distemp = 7;break;case 0x09:distemp = 8;break;case 0x10:distemp = 9;break; case 0x11:distemp = 10;break;case 0x12:distemp = 11;break;case 0x13:distemp = 12;break;case 0x14:distemp = 13;break;case 0x15:distemp = 14;break;case 0x16:distemp = 15;break; EX1 = 1; /*/void delay(unsigned char x) /x*0.14MS unsigned char i; while(x-) for (i = 0; i<13; i+) /*/void delay1(int ms) unsigned char y; while(ms-) for(y = 0; y<250; y+) _nop_(); _nop_(); _nop_(); _nop_(); 7 测试方案与测试结果 我们将电路板通过ISP与单片机开发板连接,首先下载程序测试程序是否可行。刚开始接收部分并不工作,后面查找程序的错误和遗漏的地方,修改了好几次程序,最终红外遥控可以工作。 经过测验,红外遥控信号的发送和接收没有出现传输误码,发光二极管可以准确地显示发射信号。8 实习小结通过这三周的实习,我懂得了硬件组成、设计电路的一些知识,弄懂了51单片机在电路中的工作原理,以及编写程序代码的知识。这些都是很重要的知识和经验积累。这次实习我对红外遥控电路的基本工作原理有了大概的了解,总之收获颇丰。本实习不仅把以前学过的知识重新温习,而且在查阅课外资料时还有好多芯片都是以学过的芯片为基础,并且在其基础上改进和完善的。通过实施,我把在校学习的理论知识和实际应用有机地结合起来,同时也能培养我独立思考、勇于创新的科学态度和钻研精神,有老师和同学的支持和帮助,我顺利地完成了这次实习,在这里对他们表示深深地感谢。而且在这次实习中,我掌握了许多东西,这是一笔宝贵的财富,为我以后的个人发展储备了资源,此经历我定会感触良多。

    注意事项

    本文(电子系统设计创新与实践实验报告.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开