当前位置:首页 >> 信息与通信 >>

基于STC89C52单片机红外遥控步进电机


中山职业技术学院

09 届毕业设计项目制作报告

项目名称: 项目名称:基于 STC89C52 单片机红外遥控步进电机

系部: 系部:

电子信息工程系

专业: 专业:

电子信息工程技术

班级: 班级:

09 电子 2 班

指导教师: 指导教师:李 森

团队成员:张明、梁立生、 团队成员:张明、梁立生、黄艳芬

报告制作人: 报告制作人:张 明

一、摘要>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 摘要 二、关键词>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 关键词 概述>>>>>>>>>>>>>>>>>>>>>> 三、STC89S52 概述 1. 概述 概述>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. 主要性能 主要性能>>>>>>>>>>>>>>>>>>>>>>>>>> 3. 单片机引脚分布图 单片机引脚分布图>>>>>>>>>>>>>>>>>>> 四、功能描述及分析 功能描述及分析>>>>>>>>>>>>>>>>>>>>>> 及分析 五、软件描述>>>>>>>>>>>>>>>>>>>>>>>>>>> 软件描述 1.程序流程图 程序流程图>>>>>>>>>>>>>>>>>>>>>>>> 程序流程图 2.判断编码电平流程图 判断编码电平流程图>>>>>>>>>>>>>>>>> 判断编码电平流程图 六、操作说明>>>>>>>>>>>>>>>>>>>>>>>>>>> 操作说明 七、实施步骤>>>>>>>>>>>>>>>>>>>>>>>>>>> 实施步骤 1.步骤 步骤>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 步骤 2.PCB 制作流程 制作流程>>>>>>>>>>>>>>>>>>>>>>> 3.原理图及电路分析 原理图及电路分析>>>>>>>>>>>>>>>>>>>> 原理图及电路分析 八、项目制作原件清单>>>>>>>>>>>>>>>>>>>> 项目制作原件清单 九、项目程序>>>>>>>>>>>>>>>>>>>>>>>>>>>> 项目程序 十、毕业作品实物照>>>>>>>>>>>>>>>>>>>>>>> 毕业作品实物照 十一、毕业设计总结>>>>>>>>>>>>>>>>>>>>>>> 毕业设计总结

一、摘要
随着我国工业化、 信息化进程的高速发展, 电子信息产业蓬勃发 随着我国工业化、 信息化进程的高速发展, 国内对单片机及其外围设备研究越来越深入, 实用也越来越广泛。 展, 国内对单片机及其外围设备研究越来越深入, 实用也越来越广泛。 无论是工业用品, 还是民用产品, 基本上都设计到单片机的设计和使 无论是工业用品, 还是民用产品, 用。 本设计介绍了一种基于 STC89S52 单片机的红外遥控步进电机 的设计, 系统分为红外遥控编解码和驱动步进电机两个模块, 设计的 的设计, 系统分为红外遥控编解码和驱动步进电机两个模块, 系统能通过红外遥控器发射不同的码值来控制步进电机的正反转, 加 系统能通过红外遥控器发射不同的码值来控制步进电机的正反转, 速减速以及启动停止, 本报告对该系统的工作原理、 硬件电路和软件 速减速以及启动停止, 本报告对该系统的工作原理、 进行了详细介绍。 进行了详细介绍。

二、关键词
红外遥控; 单片机; 红外遥控;51 单片机;步进电机

三、STC89S52 概述
1.STC89S52 是一种低功耗、高性能 CMOS8 位微控制器、具有 是一种低功耗、 位微控制器、 8K 在系统可编程 Flash 储存器。实用 Atmel 公司高密度非易失性储 储存器。 公司高密度非易失性储 存器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash 存器技术制造, 产品指令和引脚完全兼容。 允许程序储存器在系统可编程,亦适于常规编程器。在单芯片上, 允许程序储存器在系统可编程,亦适于常规编程器。在单芯片上,拥 有灵巧的 8 位 CPU 和在系统可编程 Flash,使 STC89S52 为众多嵌 , 入式控制应用系统提供高灵活,超有效地解决方案。 入式控制应用系统提供高灵活,超有效地解决方案。

2.主要性能 主要性能
(1) 与 MCS_51 单片机产品兼容 ) 、与 、

、8K 字节在系统可编程 Flash 存储器 (2) ) 、 (3) ) 、1000 次擦写周期 、 、全静态操作 (4) 全静态操作:0Hz~33Hz ) 全静态操作: 、 、三级加密程序存储器 (5) 三级加密程序存储器 ) 、 、32 (6) ) 、 个可编程 I/O 口线 、三个 位定时器、 (7) 三个 16 位定时器、计数器 ) 、 (8) 八个中断源 ) 、八个中断源 、 、全双工 (9) 全双工 UART 串行通道 ) 、 、低功耗空闲和掉电模式 (10) 低功耗空闲和掉电模式 ) 、 、掉电后中断可唤醒 (11) 掉电后中断可唤醒 ) 、 、看门狗定时器 (12) 看门狗定时器 ) 、 (13) 双数据指针 ) 、双数据指针 、 、掉电标识符 (14) 掉电标识符 ) 、

3. 单片机引脚分布图

四、功能描述及分析 功能描述及分析

红外接收 红外接收 步进驱 动

STC89S52
复位电路 红外发送 晶振电路

基本构架原理框图

1.红外发射模块:遥控发射器采用 SC6121 编码芯片进行红外遥 红外发射模块:遥控发射器采用 控发射电路的搭建。 控发射电路的搭建。SC6121 是一块用于红外遥控系统中得虹鳟 用发射继承电路, 公益制造, 个按键。 用发射继承电路,采用 CMOS 公益制造,它可外接 32 个按键。 通过遥控器发射不同的码值, 红外接收电路将接收到的信号送给 通过遥控器发射不同的码值, 单片机的外部中断 0,单片机接收到信号后通过解码程序对接收 , 到的信号进行处理, 经过处理 到的信号进行处理,使得性和谐信号成为相应的码值。 使得性和谐信号成为相应的码值。 后这些信号就可以去控制步进电机的正转反转、 加速减速以及启 后这些信号就可以去控制步进电机的正转反转、 动停止。 动停止。具体的遥控发射应用电路图如图所示

红外遥控器: 红外遥控器:

2.红外接收模块:本系统采用的接收模块其核心是与 SC6121 相 红外接收模块: 红外接收模块 红外接收头。 是一颗集接收电路、 对应的 LFN0038 红外接收头。LFN0038 是一颗集接收电路、调

制解调电路、 低通滤波、 制解调电路、 低通滤波、放大电路和控制电路为一体的集成接收 一共有三个引脚输出其中一个是电源一个是接地另一个则是 头, 输出,这样就大大方便了我们的使用。 输出,这样就大大方便了我们的使用。LFN0038 内部结构如图

内部集成了强大的信号处理功能, 由于 LFN0038 内部集成了强大的信号处理功能, 所以在本系 统中使用这个 LFN0038 的接收的时候我们只需要在外部嘉盛一 个滤波电路即可, 这个 RC 滤波电路是为了滤除电源端的干扰信 个滤波电路即可, 号。下图为 LFN0038 应用电路及遥控器 红外接收头电路: 红外接收头电路:

3.步进电机驱动模块:本系统采用额定电压 5VDC,相数为四相 步进电机驱动模块: 步进电机驱动模块 , 步进电机。 根连接线,其中两根红色的为电源线。 步进电机。一共 6 根连接线,其中两根红色的为电源线。采用单 极性直流电源供电。 只要对不仅电机的各项绕组按合适的时序通 极性直流电源供电。 电,就能使不仅电机步进转动。由于单片机 P 口输出地电流比 就能使不仅电机步进转动。 较弱不能驱动不仅电机, 较弱不能驱动不仅电机,所以要价一个 ULN2003 芯片来放大电 流使之能驱动步进电机工作。 是高耐压、 流使之能驱动步进电机工作。ULN2003 是高耐压、大电流达林 顿陈列, 达林顿管组成。 顿陈列,由七个硅 NPN 达林顿管组成。ULN2003 的每一对达林 工作电压高,工作电流大,灌电流可 顿管都串联一个 ULN2003 工作电压高,工作电流大,灌电流可 的电压, 达 500mA,并且能够在关态时承受 50V 的电压,输出还可以在高 并且能够在关态时承受 负载电流并行运行。 步进电机驱动电路如图: 负载电流并行运行。 负载电流并行运行。 步进电机驱动电路如图: 负载电流并行运行。 步进电机驱动电路如图: 步进电机驱动电路如图:

五、软件描述 (1)程序流程图 )

主程序

系统初始化

INT0 外部中断设置

有没有按下? 有没有按下?

UP 键按下? 键按下?

DOWN 按下? 按下?

正转

反转

中断子程序 红外译码) (红外译码)

收集四字节数据保存到 IRCOM[]

关闭中断

用户码比较接收数据 比较

INTR = 0 ? 跳 过 9 ms 的前导 低电平信号

数据比较正确 吗?

数据处理 INIR= 1 ? 跳 = 过 4 . 5 ms 的 前导高电平信 重新开中断返回

(2)判断编码电平流程图 )

六、操作说明 、接上 电源线,按下开关按钮,系统初始化。 (1) 接上 5V 电源线,按下开关按钮,系统初始化。 ) 、 、按下 按键,单片机调用正转程序指令, (2) 按下 UP 按键,单片机调用正转程序指令,步进电机开始 ) 、 做时针运动。 做时针运动。 按键,单片机调用反转程序指令 反转程序指令, 按下 DOWN 按键,单片机调用反转程序指令,步进电机 开始顺时针运动。 开始顺时针运动。

、在正转反转状态下: (3) 在正转反转状态下:连续按下 键,单片机调用加速指令, ) 在正转反转状态下 连续按下+键 单片机调用加速指令, 、 步进电机开始加速。连续按下-键 单片机调用减速指令, 步进电机开始加速。连续按下 键,单片机调用减速指令,步进 电机开始减速。 电机开始减速。 七、实施步骤 1.步骤 步骤 (1)方案确定:分析题目要求,手机资料,提出方案并论证; )方案确定:分析题目要求,手机资料,提出方案并论证; 单片机红外遥控步进电机: (2)基于 STC89S52 单片机红外遥控步进电机: ) a) 完成基于 STC89S52 单片机红外遥控步进电机的原理 图的设计及电路分析 单片机红外遥控步进电机的原件清单; 基于 STC89S52 单片机红外遥控步进电机的原件清单; 关 b)键元器件选购; 键元器件选购; 键元器件选购 (3)线路板的设计与制作 ) 1) ProtelDXP 完成线路板的设计 完成线路板的设计 2) 利用热转印方法完成线路板的制作 (4)基于 STC89S52 单片机红外遥控逼近电机的制作 ) 1) 完成线路板的装配; 完成线路板的装配; 2) 简易外壳的制作; 简易外壳的制作; 3) 利用知道老师提供的程序完成整机的调试。 利用知道老师提供的程序完成整机的调试。 (5)程序编写、调试及仿真(使用 KeilC51 和 Proteus 开发工 )程序编写、调试及仿真( 具软件) 具软件) 单片机红外遥控步进电机的原理图; (6)基于 STC89S52 单片机红外遥控步进电机的原理图; )

八、项目清单 红外遥控步进电机耗材清单
序 号
1 2 3 4 5 6 7 8 9 10 11 12

耗材名称
碳膜电阻 瓷片电容 瓷片电容 电解电容 电解电容 晶振 桥堆 保险丝 IC IC 单片机 单片机插座

规格/型号
10K 104 30p 220uF/16V 220uF/3.5V 12MHz

合计数量
10 3 2 2 2 1 2 1

ULN2003A L7805CV AT89C51 DIP-40

1 1 1 1

13 14 15 16 17 18 20 21 22 23 24 25 26

IC 插座 2 脚插座 4 脚插座 2 脚插座 变压器 电动机 碳膜电阻 电解电容 3 脚插座 红外接收器 按键开关 碳膜电阻 电解电容

DIP-16 白色 白色 蓝色 AC9V 42BYGH102 15K 4.7uF 白色 SW-PB 100 22uF

1 2 1 1 1 1 1 1 1 1 1 1 1

总计

九、项目程序 #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit IRIN=P3^2; //红处接收端口 红处接收端口 sbit BEEP = P2^0; //蜂鸣器驱动线 蜂鸣器驱动线 bit direction,flag; uchar count1=0,count2=0; uchar rate=9; uchar IRCOM[6]; unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //反转 反转 unsigned char code REV[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}; //正转 正转 char code reserve[3]; //保留 0x3b 开始的 3 个字节 保留 /****************************************************** ************* 延时子函数 ******************************************************* ************/ void delay(uchar x)

{ uchar i; while(x--) { for(i=0;i<14;i++); } } void beep(void) { unsigned char i; for (i=0;i<100;i++) { delay(4); BEEP=!BEEP; //BEEP 取反 } BEEP=1; //关闭蜂鸣器 关闭蜂鸣器 } /****************************************************** ************* 主函数 ******************************************************* ************/ void main(void) { BEEP=1; P0=0xff; P1=0xff; TMOD=0x01; TH0=0xf8; TL0=0xcc; ET0=1; EA=1; TR0=0; EX0=1; IT0=1; direction=1; while(1) {

//端口初始化 端口初始化 //Timer0 工作方式 1 //2ms 定时常数 //允许 Timer0 中断 允许

if(IRCOM[2]==0x47) //为遥控器的 K1 键 为遥控器的 { TR0=0; P0=0xf0; //步进电机断电 步进电机断电 } if(IRCOM[2]==0x43) //为遥控器的 up 键 为遥控器的 { direction=1; //置运行方向标志位(正转) 置运行方向标志位( 置运行方向标志位 正转) TR0=1; } if(IRCOM[2]==0x40) //为遥控器的 DOWN 键 为遥控器的 { direction=0; //清运行方向标志位(反转) 清运行方向标志位( 清运行方向标志位 反转) TR0=1; } flag=0; } } /****************************************************** ************* INT0 中断服务子函数 ******************************************************* ************/ void IR_IN()interrupt 0 { unsigned char j,k,Num=0; EX0=0; //关闭 INT0 中断 关闭 delay(15); //延时 延时 if(IRIN==1) //再确认 IR 信号是否出现 再确认 { EX0=1; //开 INT0 中断 开 return;//退出 退出 } while(!IRIN) //等 IR 变为高电平,跳过 9ms 的前导低电平 等 变为高电平, 信号 { delay(1);

} while(IRIN) //等 IR 变为低电平,跳过 4.5ms 的前导高电 变为低电平, 等 平信号 { delay(1); } for (j=0;j<4;j++) // 收集四组数据 { for(k=0;k<8;k++)//每组数据有8位 每组数据有8 每组数据有 { while(IRIN)//等 IR 变为低电平 等 { delay(1); } while(!IRIN)//等 IR 变为高电平 等 { delay(1); } while(IRIN)//计算 IR 高电平时长 计算 { delay(1); Num++; if(Num>=15) { EX0=1;//0.14 计数过长自动离开 14ms 0 14 return; } }//高电平计数完毕 高电平计数完毕 IRCOM[j]=IRCOM[j]>>1;//数据最高位补“0” 数据最高位补“ 数据最高位补 if(Num>=8) IRCOM[j]=IRCOM[j]|0x80;//数据最高位补“1” 数据最高位补“ 数据最高位补 Num=0; } } if(IRCOM[0]!=0x00)//比较用户码 比较用户码 {EX0=1; //开 INT0 中断 开 return;//退出 退出 }

if(IRCOM[2]!=~IRCOM[3])//接收数据是否正确 接收数据是否正确 { EX0=1;//开 INT0 中断 开 return;//退出 退出 } else beep(); flag=1; if(IRCOM[2]==0x09)//“+”键 “ ” { if(rate>4) rate--; else rate=4; } if(IRCOM[2]==0x15) { if(rate<15) rate++; else rate=15; } EX0=1;//重新开 INT0 中断 重新开 } /****************************************************** ************* 定时器0 定时器0中断服务子函数 ******************************************************* ************/ void motor_onoff() interrupt 1 { TL0=0xcc;//2ms 定时常数 2 TH0=0xf8; count1++; if(count1<rate) { return; } else

{ count1=0; if(direction==1) //运行方向标志 运行方向标志 { if(count2<8) P0=FFW[count2]&0x1f; //取数据,正转 取数据, 取数据 count2++; //取数据次数加1 取数据次数加1 取数据次数加 if(count2==8) count2=0; } else { if(count2<8) P0=REV[count2]&0x1f; //取数据,反转 取数据, 取数据 count2++; //取数据次数加1 取数据次数加1 取数据次数加 if(count2==8) count2=0; } } } 十、毕业作品实物照

十一、 十一、毕业设计总结 这次毕业设计的作品从设计到产品制作完成, 这次毕业设计的作品从设计到产品制作完成,每个步骤都 由整个团队跟进, 因此整个项目下来, 由整个团队跟进, 因此整个项目下来,团队的成员都学习到以及 熟练掌握一些知识及经验。整个过程中,从需求分析到设计、 熟练掌握一些知识及经验。整个过程中,从需求分析到设计、编 测试,我都力求规范化和文档化, 码、测试,我都力求规范化和文档化,努力让自己学得知识运用 到毕业设计当中。在这次的设计中,我们团队通过配合搜索、 通过配合搜索 到毕业设计当中。在这次的设计中,我们团队通过配合搜索、查 阅单片机、步进电机驱动的相关资料、电路原理图的设计、元器 阅单片机、步进电机驱动的相关资料、电路原理图的设计、 件的领取及购买、焊接、程序的编写等,使得我们在不知不觉中 件的领取及购买、焊接、程序的编写等,使得我们在不知不觉中 学到很多以及提高了自身的能力。 在团队共同努力下, 学到很多以及提高了自身的能力。在团队共同努力下, 这次毕业 设计顺利完成了,为自己的大学生涯画上一个完美的句号。 设计顺利完成了,为自己的大学生涯画上一个完美的句号。


相关文章:
基于STC89C52单片机的步进电机控制系统设计与实现毕业...
毕业设计 设计题目:基于 STC89C52 单片机步进电机控制系统设计与实现 毕业论文...本设计以载波为 38KHZ 的红外遥控器作为用户的控制端,它的功能是把用户 的...
基于STC89C52单片机的步进电机控制技术研究与实现
基于STC89C52 单片机步进电机控制技术研究与实现 【摘要】 本文采用以 STC89C52 单片机为核心,进行了步进电机控制系统的 软硬设计,实现了步进电机的起停、正...
基于STC89C52的步进电机调速系统_图文
基于STC89C52步进电机调速系统 - 目录 摘要...
STC89C52RC步进电机控制程序
STC89C52RC步进电机控制程序 - 四相五线步进电机控制程序。 #include<reg52.h> unsigned char code ZZ[]= {0x0E, 0x0C, 0x0D, ...
STC89C52单片机控制28byj-48步进电机正反转变速_图文
STC89C52单片机控制28byj-48步进电机正反转变速_IT/计算机_专业资料。STC89C52单片机控制28byj-48步进电机正反转、变速、暂停。 STC89C52 单片机控制 28byj-48 ...
自动化工程训练报告_图文
自动化工程训练报告 - 基于STC89C52RC单片机实验系统的综合实验应用开发与设计:在掌握相关基础性实验项目的基础上,完成综合性实验项目,并在此基础上增加键盘输入功能...
更多相关标签: