欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

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

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

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

    1、电子系统设计创新与实践实验报告 电子系统设计创新与实践报告 简易红外遥控系统 班级:通信09-1 姓名:何探 学号:3090731126 指导老师:李新 1 任务 设计并制作红外遥控发射机和接收机。2 要求 (1 )自制红外无线收、发器,可以上电工作。 (2 )调制方式:自选编码调制方式。 (3 )遥控对象:4 个,被控设备用 LED 分别代替,LED 发光表示工作。 (4 )接收机距离发射机不小于 1m。 (5 )具有红外信号学习功能。 3 系统方案 设计框图如下:红外遥控有发送和接收两个组成部分:发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。

    2、红外接收端普遍采用价格便宜,性能可靠的一体化红外接收头(如HSOO38,它接收红外信号频率为38KHz,周期约26US)接收红外信号,它同时对信号进行放大、检波、整形,得到相应电平的编码信号,再送给单片机,经单片机解码并执行,去控制相关对象。(1)二进制信号的编码 本设计采用不同的脉宽宽度来实现二进制信号的编码,可由发送单片机来完成。用图2-2(a)表示二制信号中的高电平1,其特征是脉冲中低电平的宽度等于0.26ms,相当于10个26us的宽度,高电平的宽度等于0.52ms,相当于20个26us的宽度;用图2-2(b)表示二进制信号中的低电平0,其特征是脉冲中高电平的宽度等于0.26mS,而低

    3、电平的宽度是高电平的二倍,等于0.52ms,相当于20个26us的宽度。上述10个和20个脉冲宽度还可适当调整,以适应不同数据传输速度的需要。(2)二进制信号的调制 二进制信号的调制仍由发送单片机来完成,它把编码后的二进制信号调制成频率为38KHz的间断脉冲串,相当于用二进制信号的编码乘以频率为38KHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图2-3所示,A是二进制信号的编码波形,B是频率为38KHz(周期为26uS)的连续脉冲串,c是经调制后的间断脉冲串(相当于C=A*B),用于红外发射二极管发送的波形。图2-3中,待发送的二进制数据为10。(3)二进制信号的

    4、解调 二进制信号的解调由一体化红外接收头HSOO38来完成,它把收到的红外信号(图2-4中波形D,也是图2-3中波形(C)经内部处理并解调复原,输出图2-4中波形E(正好是对图2-3中波形A的取反),HS0038的解调可理解为:在输入有脉冲串时,输出端输出低电平,否则输出高电平。二进制信号的解码由接收单片机来完成的它把红外接收头送来的二进制编码波形通过解码,还原出发送端发送的数据。如图2-4,把波形E解码后还原成数据信息101。(4)基于字节传输的红外遥控数据格式在发送字节的开始先通过单片机发送20个脉冲宽度(每个脉冲周期26uS)的高电平作为传输开始,接着发送8位数据(字节高位在前,低位在后

    5、),最后发送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 口线,看门狗

    6、定时器,内置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字节EEPRO

    7、M存储空间; 可直接使用串口下载; 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 是准双向口/弱上拉, P

    8、0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 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

    9、. PDIP封装4.1.2 集成电路74 LS21 74LS21是由四输入与门构成,74LS21集成电路的引脚分布图如图3-3所示 图3-3 74LS21集成电路的引脚分布图4.1.3 接收器HS0038一体化红外接收头HSOO38的外部结构如图3-4所示,1脚GND接电源地,2脚VCC接十SV,3脚OUT为数据输出端( TTL电平,反相输出),可直接与单片机相联。实际所用的H38B3V型号的红外接收头的管脚为管脚1是VCC,管脚2是GND,管脚3是OUT,一开始接错了,后面通过询问别人和查资料才知道。各个基本电路图的设计(1)发射接收电路如图3-7所示:图3-7(a)接收电路 图3-7(b)

    10、 发射电路(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#include#define uc

    11、har 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) /

    12、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;icount;i+) for(j=0;j110;j+);void main(void) TMOD = 0x01; /T

    13、0 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

    14、temp) unsigned int v; for(v=0;v= 1; /右移一位 /*函数:38KHz载波发射 + 延时程序入口:(是否发射载波,延时约 x (uS))*/void TT0(bit BT,unsigned int x) TH0 = x8; /输入定时值 TL0 = x; TF0=0; /溢出标志位清0 TR0=1; /启动定时器0 if(BT = 0) while(!TF0); /BT=0时,不发射38KHz载波只延时; else while(1) /BT=1时,发射38KHz脉冲+延时;38KHz载波(低电平)占空比5:26 IR = 1; if(TF0) break; i

    15、f(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=te

    16、mp&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) c

    17、ase 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

    18、(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; ca

    19、se 0xee:SendDat(0x16);break; (2)接收程序#include #include #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; sb

    20、it 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; LED

    21、3 =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(20

    22、0);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

    23、: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)

    24、; if (IRIN=1) EX1 =1; return; /确认IR信号出现 while (!IRIN) /等IR变为高电平,跳过9ms的前导低电平信号。 delay(1); for (j=0;j4;j+) /收集四组数据 for (k=0;k=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; retur

    25、n; 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; cas

    26、e 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; i13; i+) /*/void delay1(


    注意事项

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

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开