《2022年基于单片机红外线遥控控制_LED灯显示系统设计与制作课程设计》由会员分享,可在线阅读,更多相关《2022年基于单片机红外线遥控控制_LED灯显示系统设计与制作课程设计(24页珍藏版)》请在金锄头文库上搜索。
1、单片机与接口技术课程设计题目 :基于单片机红外线遥控控制LED 灯显示系统设计与制作班级: 电子科学与技术1101 姓名:李婷学号: 110803025 2013 年 12 月 11日目录第一章 设计要求 3第二章 硬件系统设计32.1 基于单片机红外线遥控控制LED 灯显示系统框架图32.2 单片机控制系统及其基本电路32. 2.1 单片机最小系统 42.2.2时钟电路52.2.3复位电路52.3 基于单片机红外遥控控制LED 系统地设计原理62.3.1单片机红外遥控控制LED 显示系统原理62.3.2单片机红外遥控控制LED 系统码分制原理72.4 红外遥控发射系统电路设计82.4.1指令
2、按键电路8精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 24 页2.4.2 发射电路92.4.3 显示模块92.5 红外遥控接收系统电路设计112.5.1接收电路112.5.2 LED 灯显示电路112.6 硬件原理图12第三章 软件系统设计123.1 红外线发射电路程序流程图设计123.2 红外线接收电路程序流程图设计13第四章 系统测试与分析144.1 利用 Proteus和 keil 进行仿真调试144.2 仿真图 15第五章总结 17附录 1.18附录 2.22参考文献25赣南师范学院 2013 2014 学年第 _1_学期课
3、程论文行政班级:电子科学与技术1101 学号: 110803025 姓名:李婷课程论文题目:基于单片机红外线遥控控制LED 灯显示系统设计与制作精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 24 页第一章设计要求主要功能是实现利用单片机AT89C51 结合红外线收发模块实现控制指定地LED灯亮灭 .第二章 硬件系统设计2.1 基于单片机红外线遥控控制LED 灯显示系统框架图1. 系统晶振采用11.0592MHZ 2. 系统框架图如下:图2-1 系统地设计总框图2.2 单片机控制系统及其基本电路2.2.1 单片机最小系统单片机晶振电路:
4、对于MSC-51 一般地晶振频率可以在1.2MHz 12MHz 之间选择,这是电容 C 可以对应地选择10pF30pF.当使用 89C55 时晶振频率可以提高到24MHZ. 对于本设计地电容C 用 30pF,晶振选用11.0592MHz. 晶振电路如下图3-1 所示,一条引脚接在XTAL1 ,另一条接在XTAL2. 单片机地复位电路:为了防止程序执行过程中失步或运行紊乱,此处采用了上电复位及手动复位电路,电路图如下图2-1 所示:红外线发射模块按键单片机扫描按键单片机调制频率对信号进行放大通过红外线发射二极管发射信号红外线接收器信号输入单片机调光控制电路精选学习资料 - - - - - - -
5、 - - 名师归纳总结 - - - - - - -第 3 页,共 24 页图 2-2-1 单片机最小系统图2.2.2 时钟电路单片机必须要有时钟信号才能正常工作,因为它是一种时序电路3. 单片机芯片地 18 脚(X2)、19 脚(X1)分别为片内反向放大器地输出端和输入端,只要在 18 脚(X2)和 19 脚(X1)之间接上一个晶振(本控制系统采用频率为12MHz ),同时两个脚分别串联上一个30PF地电容即可构成单片机所需地时时钟电路 . 钟电路如 2-2 所示. 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 24 页图 2-2-2
6、 时钟电路模块图2.2.3 复位电路单片机芯片地第 9 脚 RST (Reset)是复位信号输入端 . 单片机系统在开机时或在工作过程中因某种干扰而使程序失去控制,或工作中程序处于某种死循环状态等情况下都需要进行复位.AT 系列单片机地复位一般靠外部电路来实现,信号高电有效,由RST引脚输入,当引脚保持高电平2 个周期机器才正常复位4. 复位目地是使单片机以及其他所有功能都图2-3 所示. 在本设计中为简化了地模型,直接将 RST脚拉低,只实现开机复位. 恢复到一个原始状态,并从这个状态开始执行其他地任务.AT89C52单片机复位电路如下图2-3:精选学习资料 - - - - - - - -
7、- 名师归纳总结 - - - - - - -第 5 页,共 24 页图 2-2-3 复位电路模块图2.3 基于单片机红外遥控控制LED 系统地设计原理2.3.1 单片机红外遥控控制LED 显示系统原理红外遥控是指令信号产生电路以不同地脉冲编码代表不同地指令.如图 4.当不同地指令键被按下时,指令信号产生电路将产生不同脉冲编码地指令信号,也就是进行编码,然后经调制电路调制,变为编码脉冲调制信号,再由驱动电路驱动红外发射器件发射红外光信号.图2-3-1 码分制红外遥控系统图接收器接收下来地信号经过前置放大后,送入解调电路,对调制信号进行解调,再经指令按键前置放大红外接收红外发射驱动电路调制电路解调
8、电路指令编码记忆驱动执行环节指令编码被控对象精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 24 页指令信号检出电路检出指令信号.这里地指令信号检出电路是与发射器中编码电路相对应地译码电路,通过它将指令信号译出.2.3.2 单片机红外遥控控制LED 系统码分制原理红外线遥控系统中地指令产生及检出电路,在频分制中由多频振荡电路及频率选择电路构成;在码分制系统中则由编码电路及译码电路构成,这是频分制与码分制红外线遥控系统地分别 .在码分制中,因为码分制系统编码脉冲频率极低,为超低频,如果不用调制与解调电路,外界突然地光线变化可能会对接收电路
9、造成干扰,产生误动作,系统地抗干扰能力及可靠性就难以保证.所以本系统将用码分制遥控.遥控器采用脉冲个数编码,不同地脉冲个数代表不同地码,最小为2个脉冲,最大为17个脉冲 .为了使接收可靠,第一位码宽为3ms,其余为 1ms,遥控数据帧间隔大于10ms,如图 5 所示 .在遥控码地发射中,当某个操作键按下时,单片机先读出该键值,然后根据键值设定地遥控脉冲个数,再调制成38KHz 地方波由红外线发射管发射出去.P3.7 端口地输出调制波如图 2-3-2.1 所示 .图2-3-2.1调光命令码当红外线接收器输出脉冲帧数据时,第一位码地低电平将启动中断程序,实时接收数据帧 .在数据接收时,先对第一位(
10、起始位)码地码宽进行验证.若第一位低电平码地脉宽小于2ms,将作为错误码处理;否则认为是起始码,累加器A 加1.当间隔位地高电平大于3ms 时,结束接收,然后根据累加器A中地脉冲个数,执行相应地输出操作.图2-3-2.2为红外线灯具 1 地遥控输入码灯具 2 地遥控输入码灯具 5 地遥控输入码精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 24 页接收器输出地一帧遥控码波形图.图2-3-2.2 一帧遥控码波形图2.4 红外遥控发射系统电路设计2.4.1 指令按键电路本设计中通过单片机地P2 口外接按键,对外部按键进行扫描,通过按键产生外
11、部中断,并把按键地指令发送只单片机内,经单片机对各个按键进行编码后经信号指令发送至红外发射管,单片机与按键连接电路如下:图 2-4-1 指令按键电路图2.4.2 发射电路本设计中利用一体化红外收发二极管作为作为红外线地收发接口;红外线发射电路中,单片机将已编码完成地指令通过P3.7 连接红外线发射机二极管发射出去,单片机与红外二 10ms 1ms 10ms 停止位第一位 3ms 1ms 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 24 页极管接线图如下:图 2-4-2 发射电路连接图2.4.3 显示模块发射电路设计中增加了一个数码管
12、对发送地按键键码进行显示,进一步加强发射电路地功能 .单片机将已接收到地按键键码值,通过IO 口 P00-P03 发送到七段译码器CD4511,再通过七段译码器CD4511 对按键码进行解码,并显示到一位7 段数码管 .CD4511 是一个用于驱动共阴极LED (数码管)显示器地BCD 码 七段码译码器,具有BCD 转换、消隐和锁存控制、七段译码及驱动功能地CMOS 电路能提供较大地拉电流;可直接驱动LED 显示器 .CD4511 驱动数码管显示原理:CD4511 是一片 CMOS BCD 锁存 /7 段译码 /驱动器,引脚排列如图 2 所示 .其中 a b c d 为 BCD 码输入, a
13、为最低位 .LT 为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障.BI 为消隐功能端,低电平时使所有笔段均消隐,正常显示时, B1 端应加高电平.另外 CD4511 有拒绝伪码地特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐.LE 是锁存控制端,高电平时锁存,低电平时传输数据.ag 是 7 段输出,可驱动共阴LED 数码管 .另外, CD4511精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 24 页显示数 “6”时, a段消隐;显示数“9”时, d
14、 段消隐,所以显示6、9 这两个数时,字形不太美观图 3 是 CD4511 和 CD4518 配合而成一位计数显示电路,若要多位计数,只需将计数器级联,每级输出接一只 CD4511 和 LED 数码管即可 .所谓共阴 LED 数码管是指 7 段 LED 地阴极是连在一起地,在应用中应接地.限流电阻要根据电源电压来选取,电源电压5V 时可使用 300 地限流电阻 .图 2-4-3 CD45112.5 红外遥控接收系统电路设计2.5.1 接收电路本设计中通过单片机地P3.2 口外接一体化红外线收发二极管地红外线接收二极管,并把红外线接收二极管接收到地指令信号送入单片机内进行解码等处理.红外接收二极
15、管与单片机接线图如下:2.5.2 LED 灯显示电路LED 灯通过与单片机P1 口进行连接,单片机根据接收到不同地按键码,通过控制P1精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 24 页口地电平,把相应地LED 灯点亮或者熄灭,连接图如下:图 2-5-2 LED 灯显示电路2.6 硬件原理图硬件原理图如图所示:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 24 页图 2-6 硬件原理图第三章 软件系统设计3.1 红外线发射电路程序流程图设计说明:当单片机上电地时候程序开
16、始执行,首先进行初始化工作,然后开启中断,接着单片机对接有按键地引脚电平进行扫描,当发现有按键被按下地时候,将该按键地按键码发送到单片机内部,按键码经单片机进行处理,并进行编码,编码完成后将该编码经由单片机地 P3.7 发送到红外线发送二极管进行信号发射:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 24 页图 3-1 红外线发射电路流程图3.2 红外线接收电路程序流程图设计说明:当单片机上电地时候程序开始执行,首先进行初始化工作,然后开启中断;此时单片机对连接红外线接收二极管地P3.2 端口进行扫描;当红外接收二极管接收到信号地时
17、候,经该信号进行解码还原,并点亮指令地LED 灯:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 24 页图 3-2 红外线接收电路流程图第四章 系统测试与分析4.1 利用 Proteus和 keil 进行仿真调试应用系统设计完成之后,要进行硬件调试和软件调试.软件调试可以利用开发及仿真系统进行.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 24 页1先排除硬件电路故障,包括设计性错误和工艺性故障.一般原则是先静态后动态.(1)利用万用表或逻辑测试仪器,检查电路中地各元件以
18、及引脚是否连接正确,是否有短路故障 .(2)先要将单片机AT89C51 芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试各电源电压,若这些都没问题,则直接上仿真机进行联机调试观察各接口线路是否异常.2软件调试软件调试是利用仿真工具Proteus和 keil 进行在线仿真调试,不但可以发现和解决程序错误外,而且可以发现硬件中存在地问题.单片机AT89C51 是系统地核心,利用万用表检测单片机电源VCC 是否为( 40 脚)+5V 、晶振是否正常工作(可用示波器测试,也可以用万用表检测,两引脚电压一般为1.82.3V 之间)、复位引脚RST(复位时为高电平,单片机工作时为低电
19、平)、EA 是否为高电平,这样一来单片机就能工作了,再结合电路图,检测故障就很容易了.4.2 仿真图 4.2.1 按下第一个键精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 24 页4.2.2 按下第二个键 4.2.3.按下第三个键精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 24 页 4.2.4 再次按下第二个键第五章总 结通过这次课程设计,提升了我地自学能力,通过不断地查阅资料,通过与同学地交流,来解决其中遇到地困难,比如如何解决无线通信问题,如何解决控制问题等.我在设
20、计中改变了比较传统地固定式开关元件,利用单片机无线遥控控制室内灯光取得了良好地效果,为人们提供了很大地方便,在社会生活越来越现代化地同时,我认为灯具电器等家具实现智能化控制是一个很大地趋势,同时也应总结经验,逐步完善室内灯光智能控制,例如可以增加室内灯具地自动巡检与电脑联网功能,灯具故障即可自动发出报修信号,灯具地各种使我们第一时间得知灯具地工作状况,还可以对灯具加入很多地场景模式等.在设计中也体会到我地知识面还是很狭窄,作为电子系学生,在学好本专业地基础前提下,还要不断地学习其他领域地科学技术知识,拓宽自己地知识面,才能胜任新设备、新技术地工作,更好发挥本专业地作用.附录一发射器程序#inc
21、lude #include #define uchar unsigned char 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 24 页#define uint unsigned int # define _BV(bit) (1(bit) sbit k1=P20 。sbit k2=P21 。sbit k3=P22 。sbit k4=P23 。sbit k5=P24 。sbit k6=P25 。sbit k7=P26 。sbit k8=P27 。sbit out=P37 。static bit OP。 /红外发射管地亮灭static
22、 unsigned int count 。 /延时计数器static unsigned intendcount 。 /终止延时计数static unsigned char Flag。 /红外发送标志char iraddr1。 /十六位地址地第一个字节char iraddr2。 /十六位地址地第二个字节void SendIRdata(char p_irdata) 。uchar t=16。uchar CODE=0Xff 。void delay_LCM(uint) 。 /LCD 延时子程序/*延时 K*1ms,12.000mhz*/ void delay_LCM(uint k) uinti,j 。
23、for(i=0 。ik。 i+) for(j=0 。j60。j+) 。 void key() if(k1=0)/ 开 delay_LCM(5) 。 if(k1=0) SendIRdata(1)。P0=1。 while(k1=0) 。 if(k2=0)/ 开 delay_LCM(5) 。 if(k2=0) SendIRdata(2)。P0=2。 while(k2=0) 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 24 页if(k3=0)/ 开 delay_LCM(5) 。 if(k3=0) SendIRdata(3)。P0=3。
24、 while(k3=0) 。 if(k4=0)/ 开 delay_LCM(5) 。 if(k4=0) SendIRdata(4)。P0=4。 while(k4=0) 。 if(k5=0)/ 开 delay_LCM(5) 。 if(k5=0) SendIRdata(5)。P0=5。 while(k5=0) 。 if(k6=0)/ 开 delay_LCM(5) 。 if(k6=0) SendIRdata(6)。P0=6。 while(k6=0) 。 if(k7=0)/ 开 delay_LCM(5) 。 if(k7=0) SendIRdata(7)。P0=7。 while(k7=0) 。 if(k8
25、=0)/ 开 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 24 页delay_LCM(5) 。 if(k8=0) SendIRdata(8)。P0=8。 while(k8=0) 。 / 定时器 0 中断处理void timeint(void) interrupt 1 TH0=0xFF 。 TL0=0xe6 。 /设定时值为38K 也就是每隔26us中断一次 count+。 / 定时器 1 中断处理void time1(void) interrupt 3 out=!out 。 void SendIRdata(char p_irdat
26、a) inti。 char irdata=p_irdata。/发送 9ms地起始码endcount=74。 Flag=1。 count=0。 out=0。TR1=1。 dowhile(countendcount)。TR1=0。out=1。 /发送 4.5ms 地结果码/endcount=117。/Flag=0。/count=0。/out=1。 /dowhile(countendcount)。endcount=25。 Flag=1。 count=0。 out=1。/TR1=1 。 dowhile(countendcount)。 /发送八位数据/irdata=p_irdata 。 for(i=0
27、。iirdata 。i+) endcount=25。 Flag=1。 count=0。 out=0。 TR1=1。 dowhile(countendcount)。 TR1=0。 out=1。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 24 页endcount=25。 Flag=1。 count=0。 out=1。 /TR1=1 。 dowhile(countendcount)。 main() count = 0。 Flag = 0。 OP = 0。 out = 1。 EA = 1。 /允许 CPU 中断 TMOD = 0x21 。
28、 /设定时器0和 1 为 16位模式 1 ET0 = 1。 /定时器 0 中断允许P1=0xff 。 TH0 = 0xFF 。 TL0 = 0xE6 。 /设定时值 0 为 38K 也就是每隔26us中断一次 TR0 = 1。/开始计数TH1 = 256-13 。 TL1 = 256-13 。 /设定时值0 为 38K 也就是每隔26us中断一次ET1 = 1。 /定时器 1 中断允许/TR1 = 1 。 /定时器 1 中断允许iraddr1=0x00 。iraddr2=0x00 。 while(1) key()。/P2=CODE=P1 。/delay_LCM(100) 。 /SendIRda
29、ta(CODE) 。 附录二接收器程序#include #define uchar unsigned char #define uint unsigned int uchar data IRcode4 。 /定义一个 4 字节地数组用来存储代码ucharCodeTemp。 /编码字节缓存变量uchari,j,k 。 /延时用地循环变量uchardat=0。uchar num。uint time 。sbit led1=P10。sbit led2=P11。sbit led3=P12。sbit led4=P13。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - -
30、-第 21 页,共 24 页sbit led5=P14。sbit led6=P15。sbit led7=P16。sbit led8=P17。sbitIRsignal=P32 。 /HS0038 接收头 OUT 端直接连P3.2(INT0) void delay(uint z) 。void delay(uint z) uinta,b。 for(a=z 。a0。 a-) for(b=120 。 b0。 b-)。 /*延时 0.9ms 子程序 */ void Delay0_9ms(void) ucharj,k 。 for(j=18 。j0。j-) for(k=20 。 k0。 k-) 。 /*延时
31、1ms子程序 */ void Delay1ms(void) uchari,j 。 for(i=2 。 i0。i-) for(j=230 。 j0。j-) 。 /*延时 4.5ms 子程序 */ void Delay4_5ms(void) uchari,j 。 for(i=10 。i0。i-) for(j=225 。 j0。j-) 。 /* 延时子程序 */ /*中断 0 解码服务子程序*/ void int0(void) interrupt 0 using 2 EX0=0 。P3_0=!P3_0。 num=0。for(k=0 。k4。k+) Delay0_9ms()。 if (IRsignal
32、=1) / 如果 0.9ms 后 IRsignal=1 ,说明不是引导码 k=4。 break。/P0=0XFF 。 else if(k=2) / 如果持续了3 0.9ms=9ms 地低电平,说明是引导码 /P0=0。time=0。num=0。while(IRsignal=0) 。 /if(IRsignal=0) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 24 页/ num+=1 。/ P1=num。/ while(IRsignal=0) 。while(time100) time+ 。Delay0_9ms() 。/跳过持续1ms
33、 地高电平Delay0_9ms()。 /跳过持续1ms地高电平if(IRsignal=0) P0=num。num+=1。/P1=num。 while(IRsignal=0) 。 if(num=1) led1=!led1 。if(num=2) led2=!led2 。if(num=3) led3=!led3 。if(num=4) led4=!led4 。if(num=5) led5=!led5 。if(num=6) led6=!led6 。if(num=7) led7=!led7 。if(num=8) led8=!led8 。break。/ delay(2)。 EX0=1 。 void init
34、()/ 定时器初始化 TMOD=0x11 。 EA=1。 IT0=1 。 /INT0 为负边沿触发, (1:负边沿触发,0:低电平触发) EX0=1 。 /外部中断INT0 开, (1:开, 0:关 ) CodeTemp=0。 /初始化红外编码字节缓存变量 main() init() 。 while(1) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 24 页参考文献1 彭志刚 .利用单片机改进交通灯控制系统 2003 年2 郭循钊 .基于单片机地多功能交通灯控制系统设计与仿真实现2010 年3 徐金 .基于 AT89S52 单片机地SD 卡读写器设计2008 年4 刘昆山 .用单片机控制一个LED 2010 年5 罗明坡 .大学生论文联合比对库 2012 年6 杨美荣 .浅析 51单片机最小系统地设计与制作 2011 年7 浦明乐 .基于 AT89S52 单片机地水温控制器设计 2008 年教师评语:教师签字:年月日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 24 页