单片机系统开发与应用工程实习报告基于AT89S52单片机的遥控器设计_第1页
单片机系统开发与应用工程实习报告基于AT89S52单片机的遥控器设计_第2页
单片机系统开发与应用工程实习报告基于AT89S52单片机的遥控器设计_第3页
单片机系统开发与应用工程实习报告基于AT89S52单片机的遥控器设计_第4页
单片机系统开发与应用工程实习报告基于AT89S52单片机的遥控器设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机系统开发与应用工程实习报告选题名称: 基于at89s52单片机的遥控器设计 系(院): 计算机工程学院专 业: 班 级: 姓 名学 号: 指导教师: 学年学期: 2009 2010 学年 第 2 学期2010年 5 月 30 日摘要: 单片机红外遥控器可以通过非接触式实现对控制系统的操纵,不影响、干扰其他设备,编解码容易,可进行多路通信。单片机是将中央处理器、随机存储器、只读存储器、定时器芯片和一些输入/输出接口电路集成在一个芯片上的微控制器。红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。发送端采用脉冲调制方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动

2、红外发射二级管ph303以光脉冲的形式发送出去,接收端红外接收头ph302将接收到的光脉冲转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后的输出。红外遥控系统由发射和接收两大部分组成,发射部分由键盘电路、遥控编码调制电路、放大器、红外发送二极管等组成,当2x8键盘有键按下时,遥控编码电路通过键盘行列扫描获得所按键的键值,键值通过编码获得一串键值代码,用编码脉冲去调制40khz的载波信号,放大后通过红外发射二极管发射出去。接收电路将接收的信号通过放大电路将信号放大,经过解调解码后将信号整形输出,通过单片机控制led灯的亮灭。关键字:红外遥控器;单片机;红外通信;

3、ph303;ph302目 录1、课题综述12、系统分析22.1红外通信原理22.2单片机系统设计22.3红外发射单元62.4红外接收单元63、系统设计73.1硬件设计73.2 软件设计94、程序清单104.1遥控发送程序清单:104.2遥控接收程序清单:18总 结23参考文献24单片机系统开发与应用工程实习计报告1、课题综述课题名称:基于at89s52单片机的遥控器设计。课题意义:随着电子技术的飞速发展,新型大规模遥控集成电路的不断出现,使遥控技术有了日新月异的发展。遥控装置的中心控制部件已从早期的分立元件、集成电路逐步发展到现在的单片微型计算机,智能化程度大大提高。近年来,遥控技术在工业生产

4、、家用电器、安全保卫以及人们的日常生活中使用越来越广泛。红外遥控器可以通过非接触式实现对控制系统的操纵,不影响周边环境,干扰其他电器设备,编解码容易,可进行多路通信。在一些比较恶劣的环境中使用遥控器,可以保证操作者的安全,它设计简单,价格低廉,是一种应用很广的短程遥控系统。通过研究遥控器的设计可以学习单片机系统的开发,单片机的工作方式和功能的实现,了解红外通信的原理,实现短程遥控,更系统全面的接触单片机。课题要求:基于at89s52单片机遥控器晶振采用12mhz。单个遥控发射模块可以控制多个控制对象,遥控的距离5-10m,并有一定的角度范围。预期目标:单片机红外遥控器一套。关键技术:制作遥控器

5、需要解决很多问题,比如单片机原理和最小系统设计、红外发射和接收器的工作原理、键盘的扫描等,最终还要编写汇编语言调试运行实现既定的结果。2、系统分析2.1红外通信原理红外通信是利用950nm 近红外波段的红外线为传递信息的载体,即通信信道。发端用脉时调制(ppm)方式,将二进制数字信号调制成某一频率的脉冲序列, 并利用该脉冲序列驱动红外线发射管以光脉冲的形式向外发射红外光, 而接收端将接收到的光脉冲信号转换成电信号,在经过放大、滤波等处理后送给解调电路进行解调, 还原成二进制数字电信号后输出。简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输, 而红外通信接口就

6、是针对红外信道的调制解调器。采用脉宽调制的串行码,以脉宽为0.5ms、间隔0.5ms、周期为1ms 的组合表示二进制的“0”;以脉宽为0.5ms、间隔1ms、周期为2ms 的组合表示二进制的“1”,如图1-1所示。上述“0”和“1”组成的42 位二进制码经40khz 的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射。0.5ms1 ms“0”“1”0.5ms2 ms图2-1 遥控码的“0”和“1”2.2单片机系统设计一个典型的单片机系统主要由单片机、晶振和复位电路、输入控制电路、输出显示电路以及外围功能器件5个部分组成。如图2-2。晶振、复位

7、电路输入控制单片机输出显示外围功能器件图2-2 单片机系统的组成单片机最小系统是单片机能够正常运行的最基本电路系统,如图2-3。通过最小系统与外围设备的链接可以实现不同的功能。图2-3 单片机最小系统原理图2.2.1单片机at89s52 at89s52片内集成256字节程序运行空间、8k字节flash存储空间,支持最大64k外部存储扩展。根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33m之间。片内资源有4组i/o控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。可以在4v到5.5v宽电压范围内正常工作。2.2.2复位电路复位电路是维持单片机最小系统运行的基本模块。

8、复位电路通常分为两种:上电复位和手动复位。如图2-4。有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。当单片机振荡器运行时,在此引脚出现2个机器周期的的高电平(有低电平到高电平的跳变),将使单片机复位。因为人用手将按键按下时的时间远大于2个机器周期,所以便能产生复位。图2-4 复位电路原理图2.2.3晶振电路晶振电路是维持单片机最小系统运行的基本模块,如图2-5。它为单片机提供时钟脉冲信号,没有晶振电路单片机便不能正常工作。本单片机系统采用的晶振频率为12mhz,晶振2端分别接入单片机的第18、19引脚,并联2个30pf陶瓷电容帮助起振。它

9、的时钟周期是1/12us,即它的一个机器周期为1us。图2-5晶振电路原理图2.2.4按键电路2*8矩阵键盘是一种简易键盘设计,如图2-6。与编码键盘相比,矩阵键盘不需要专门的编码芯片,从而成本低,设计简单。键盘的原理是在一端接入高电平,用单片机一个端口去检测按键另一端的电平,另一端是低电平时,说明按键被按下。2*8矩阵键盘,分为2行8列,在每列加上拉电阻(加高电平),然后用程序控制行扫描和列扫描,判断具体哪个按键被按下。由于本身键盘的特点,当手按下按键时,波形不是稳定的,会有一定的抖动。所以设计程序是需要加入消除抖动处理,消除抖动程序调用一个10ms的延迟程序即可。图2-6 2*8按键原理图

10、2.3红外发射单元红外发射单元由单片机最小系统和按键电路,红外发射器电路等组成,遥控发射单元框图如图2-7。复位电路晶振电路at89s52 单片机电源电路红外发射器按键电路图2-7 红外遥控发射单元框图2.4红外接收单元 红外遥控接收单元由单片机最小系统和红外接收器、控制对象电路等组成,本实验控制对象和16个led发光二极管。遥控接收单元框图如图2-8。复位电路晶振电路at89s52单片机电源电路控制对象红外接收器图2-8 红外遥控接收单元框图3、系统设计3.1硬件设计3.1.1红外发射器电路原理图电源电路为单片机以及其他模块提供标准5v电源。晶振模块为单片机提供时钟标准,使系统各部分能协调工

11、作。复位电路模块为单片机提供复位功能。单片机作为主控制器,根据输入信号和单片机程序对系统进行相应的控制。sw1-sw16按键按下时红外发射器发出相应的脉冲序列。红外发射单元根据单片机控制器计算的结果,向红外接收器发送相应的红外脉冲序列,红外发射器电路原理图如图3-1所示。图3-1 红外发射器电路原理图3.1.2 红外接收器电路原理图电源电路为单片机以及其他模块提供标准5v电源。晶振模块为单片机提供时钟标准,使系统各部分能协调工作。复位电路模块为单片机提供复位功能。单片机作为主控制器,根据输入信号和单片机程序对系统进行相应的控制。接收模块用来接收红外发射器发出的脉冲序列,并传递给单片机,发光二极

12、管作为被控制的对象,单片机通过对红外接收器电路接收到的脉冲序列进行译码,然后控制相应的发光二极管发光。在实际使用中,电路接上隔离电路和驱动电路就可以用来控制电路开关。红外接收器电路原理图如图3-2所示。图3-2 红外接收器电路原理图3.2 软件设计3.3.1 遥控发射流程图程序开始是对单片机进行初始化设置,循环扫描判断是否有按键按下,如果有按键按下就发射相应的红外信号,遥控发射程序流程图如图3-3.开 始初 始 化键按下?查是哪个按键按下发送相应的脉冲信号ny图3-3 遥控发射程序流程图3.3.2 遥控接收程序流程图遥控接收通过中断接收遥控信号,通过延时判断是否有开始脉冲,如果有开始脉冲就开始

13、接收脉冲序列,根据脉冲序列判断需要执行的程序,最终完成相应的功能。遥控接收程序流程图如图3-4所示。中 断延 时是否开始脉冲?接收脉冲执行功能中断返回ny图3-4 遥控接收程序流程图4、程序清单4.1遥控发送程序清单: button0equ p1.0 ;p1.0 - p1.3位键盘行扫描button1 equ p1.1button2 equ p1.2button3 equ p1.3button equ p0 ;p0 口键盘列扫描buttab: db0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,7fhbutfuntab:ljmpsen2p ;功能按键列表ljmpsen3p

14、ljmpsen4pljmpsen5pljmpsen6pljmpsen7pljmpsen8pljmpsen9pljmpsen10pljmpsen11pljmpsen12pljmpsen13pljmpsen14pljmpsen15pljmpsen16pljmpsen17pretdly:mov r2,#0ffh;513微秒延时程序djnz r2,$retdly10m: mov r3,#14h ;10毫秒延时程序dloop: lcall dlydjnz r3,dloopretdly500m:mov r4,#32h ;500毫秒延时程序d_1loop:lcall dly10m djnz r4,d_1lo

15、opretorg 0000h ;主程序开始ajmp mainorg 0003h ;关中断0retiorg 000bh ;关定时器t0retiorg 0013h ;关外中断1retiorg 001bh ;定时器t1中断入口地址ljmp intt1org 0023h ;关串行口中断retiorg 002bh ;关定时器t2retimain: mov a ,#0ffh ;初始化mov p0,amov p1,amov p2,amov p3,aclr p3.5;关遥控输出mov sp,#70h ;设堆栈基址为70hmov ie,#00h ;关所有中断mov ip,#01h;设优先级mov tmod,#2

16、2h;8位自动重装初值模式mov th1,#0f3h;定时为13微秒初值mov tl1,#0f3hsetb ea ;开总中断允许mloop: lcall button00 ;按键查询ljmpmloop;键盘工作子程序button00: movbutton,#0ffh;判断是否有按键按下clrbutton0clrbutton1clrbutton2clrbutton3mova,buttonmovb,acjnea,#0ffh,j_buttonnbutton:ret;判断是哪个按键按下j_button:lcall dly10m ;延时去抖动mova,buttoncjnea,b,nbutton ;a和b

17、不相等,返回主程序setbbutton1 ;有键按下,找键号开始,查0行setb button2setbbutton3mova,button ;读入p0口值cjnea,#0ffh,buttonl0 ;p0不等于#0ffh,按下键在第0行setbbutton0 ;不在第0行,开始查1行clrbutton1mova,button ;读入p0口值cjnea,#0ffh,buttonl1 ;p0口不等于#0ffh,按下键在第1行setbbutton1 ;不在第1行,开始查2行clrbutton2mova,button ;读入p0口值cjnea,#0ffh,buttonl2 ;p0口不等于#0ffh,按

18、下键在第2行setbbutton2 ;不在第2行,开始查3行clrbutton3mova,button ;读入p0口值cjnea,#0ffh,buttonl3 ;p0口不等于#0ffh,按下键在第3行ljmpnbutton ;不在第3行,子程序返回buttonl0:movr2,#00h ;按下键在第0行,r2赋行号初值0ljmp t_button ;跳到t_buttonbuttonl1:movr2,#08h ;按下键在第1行,r2赋行号初值8ljmp t_button ;跳到t_buttonbuttonl2:movr2,#10h ;按下键在第2行,r2赋行号初值16ljmp t_button

19、;跳到t_buttonbuttonl3: movr2,#18h ;按下键在第3行,r2赋行号初值24ljmpt_button ;跳到t_buttont_button:mov dptr,#buttab ; 键值翻译成连续数字movb,a ;p0口值暂存b内clr a ;清amov r0,a ;清r0t_loop: mov a,r0 ;查列号开始,r0数据放入asubb a,#08h ;a中数减8jnc nbutton ;借位c为0,查表出错,返回mova,r0 ;查表次数小于8,继续查,movc a,a+dptr ;查列号表inc r0 ;r0加1cjnea,b,t_loop ;查得值和p0口值

20、不等,转t_loop再查dec r0 ;查得值和p0口值相等,r0减1mov a,r0 ;放入a(r0中数值即为列号值)adda,r2 ; 与行号初值相加成为键号值(0-31)movb,a ;键号乘3处理用于jmp散转指令rla ;键号乘3处理用于jmp散转指令adda,b ;键号乘3处理用于jmp散转指令movdptr,#butfuntab ; 取散转功能程序(表)首址jmpa+dptr ;散转至对应功能程序标号;sen2p: mov a,#02h ;发2个脉冲ljmp sendcon ;转发送程序retsen3p: mov a,#03h ;发3个脉冲ljmp sendcon ;转发送程序r

21、etsen4p: mov a,#04h ;发4个脉冲ljmp sendcon ;转发送程序retsen5p:mov a,#05h ;发5个脉冲ljmp sendcon ;转发送程序retsen6p: mov a,#06h ;发6个脉冲ljmp sendcon ;转发送程序retsen7p: mov a,#07h ;发7个脉冲ljmpsendcon ;转发送程序retsen8p: mov a,#08h ;发8个脉冲ljmp sendcon ;转发送程序retsen9p: mov a,#09h ;发9个脉冲ljmp sendcon ;转发送程序retsen10p: mov a,#0ah ;发10个

22、脉冲ljmp sendcon ;转发送程序retsen11p: mov a,#0bh ;发11个脉冲ljmp sendcon ;转发送程序retsen12p: mov a,#0ch ;发12个脉冲ljmp sendcon ;转发送程序retsen13p: mov a,#0dh ;发13个脉冲ljmp sendcon ;转发送程序retsen14p: mov a,#0eh ;发14个脉冲ljmp sendcon ;转发送程序retsen15p: mov a,#0fh ;发15个脉冲ljmp sendcon ;转发送程序retsen16p: mov a,#10h ;发16个脉冲ljmp sendc

23、on ;转发送程序retsen17p: mov a,#11h ;发17个脉冲ljmp sendcon ;转发送程序ret;编 码 发 射 程 序sendcon: mov r1,a ;装入发射脉冲个数ljmp send_3 ;转第一个码发射处理send: mov r0,#55h ;1ms宽低电平发射控制数据send_1: setb et1 ;开t1中断setb tr1 ;开启定时器t1nop ;空操作延时nopnopnopnopdjnz r0,send_1 ;时间不到转send_1再循环mov r0,#32h ;1ms高电平间隙控制数据send_2: clr tr1 ;关定时器t1clr et1

24、 ;关t1中断clr p3.5 ;关脉冲输出nop ;空操作延时nopnopnopnopnopnopnopnopnopnopdjnz r0,send_2 ;时间不到转send_2再循环djnz r1,send ;脉冲未发完,转out再循环发射lcall dly500m ret send_3: mov r0,#0ffh ;装发谢3ms宽控制数据ljmp send_1intt1: cpl p3.5 ;40khz红外线遥控信号产生reti ;转send_1end4.2遥控接收程序清单:org 0000h;主程序开始地址ljmp mainorg 0003h;外中断0中断入口ljmp r_intorg

25、000bh ;定时器t0中断关闭reti org 0013h ;外中断1中断关闭reti org 001bh ;定时器t1中断关闭reti org 0023h ;串行口中断关闭reti org 002bh ;定时器t2中断关闭reti dly512u: mov r0,#0ffh ;延时512微妙子程序d_w_loop: djnz r0,d_w_loopretdly10m: mov r1,#14h ;延时10毫秒子程序d_1w_loop: lcall dly512udjnz r1,d_1w_loopretmain: clra ;初始化;deca ;a为#0ffhmov p0,a ;p0-p2口置

26、1mov p1,a mov p2,a mov ie,#00h ;关所有中断setb ex0 ;开外中断setb ea ;总中断允许 r_int: clr ex0 ;关外中断jnb p3.1,ok_1 ;p3.1口为低电平转ok_1disturb: setb ex0 ;p3.1口为高电平开中断(系干扰)reti ok_1: clr a mov dph,a ; dptr清零mov dpl,a c_plus: jb p3.1,f_firstplus ;p3.1变高电平时寻找第一个脉冲inc dptr ;用dptr对低电平计数nop ;2微秒延时nopajmp c_plus ;循环周期为8微秒f_fi

27、rstplus:mov a,dph jz disturb ;a为0说明脉宽小于2毫秒,不是第一个脉冲clr a ;a不为0,说明是第一个宽脉冲ok_11: inc a ;脉冲个数计1jnb p3.1,$ ;低电平时等待mov r1,#06h ;高电平宽度判断定时值ok_13: jnb p3.1,ok_11 ;变低电平时转ok_11脉冲计数lcall dly512u ;延时(512微秒)djnz r1,ok_13 ;6次延时不到转ok_13再延时dec a ;超过3毫秒判为结束,减1dec a ;减1jz aim0 ;为0执行aim0(2个脉冲)dec a ;减1jz aim1 ;为0执行aim

28、1(3个脉冲)dec a ;jz aim2 ;为0执行aim2(4个脉冲)dec a ;jz aim3 ;为0执行aim3(5个脉冲)dec a ;jz aim4 ;为0执行aim4(6个脉冲)dec a ;jz aim5 ;为0执行aim5(7个脉冲)dec a ;jz aim6 ;为0执行aim6(8个脉冲)dec a ;jz aim7 ;为0执行aim7(9个脉冲)dec a ;jz aim8 ;为0执行aim8(10个脉冲)dec a ;jz aim9 ;为0执行aim9(11个脉冲)dec a ;jz aim10 ;为0执行aim10(12个脉冲)dec a ;jz aim11 ;为

29、0执行aim11(13个脉冲)dec a ;jz aim12 ;为0执行aim12(14个脉冲)dec a ;jz aim13 ;为0执行aim13(15个脉冲)dec a ;jz aim14 ;为0执行aim14(16个脉冲)dec a ;jz aim15 ;为0执行aim15(17个脉冲)nop ;nop ;ljmp disturb ;出错退出aim0: cpl p0.0 ;p0口各端口开关输出控制setb ex0 reti aim1: cpl p0.1 ;setb ex0 reti ;aim2: cpl p0.2setb ex0 reti aim3: cpl p0.3setb ex0 reti aim4: cpl p0.4setb ex0 reti aim5: cpl p0.5 setb ex0 reti aim6: cpl p0.6setb ex0 reti aim7: cpl p0.7setb ex0 reti aim8: cpl p2.7 ;p2口各端口开关输出控制setb ex0 reti aim9: cpl p2.6setb ex0 reti aim10: cpl p2.5setb ex0 reti aim11: cpl p2.4setb ex0 reti aim12: cpl p2.3setb ex0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论