版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于红外遥控步进电机的设计班级: B140415LCD显示晶振电路AT89C51红外发射摘要:随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗 器械等机电产品中,其在各个国民经济领域都有应用。研究步进电机的控 制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件, 步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。采 用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可 靠性大大增加。软件编程可灵活产生不同类型步进电机励磁序列来控
2、制各 种步进电机的运行方式。介绍了一种基于 AT89C51单片机的红外遥控步进电机的设计,系统分为红外遥控编解码、LCD显示和驱动步进电机三个模块,设计的系统能通过遥控器来控制步进电机,并且步进电机的状态能通过LCD液晶模块实时显示出来,使人们直观的看出步进电机的运行状态。本报告对该系统的工作原理、硬件电路和软件进行了详细介绍。关键词:红外遥控、LCD显示、步进电机、单片机一、引言本系统是基于单片机控制的综合系统,单片机通过对红外信号的解码 来实现步进电机的变速及LCD实时显示步进电机的转速。它综合了电子技术和单片机软硬件技术,本设计采用AT89c51单片机为核心包含红外接收电路、LCD显示电
3、路和步进电机驱动电路。通过红外遥控器发射不同的码 值来控制步进电机的正转反转、加速减速以及启动停止并通过LCD显示出步进电机的状态。二、系统功能分析根据系统要求设计各个模块。本设计中控制芯片采用 AT89c51单片机,各个功能通过不同模块来得以实现,主要有:红外接收模块、步进电机驱 动和LCD显示模块。系统基本架构原理如图1所示红外接收步进驱动复位电路图一基本架构原理图各个模块具体实现方式如下:红外发射模块:本设计采用的是通过遥控器发射不同的码值,红外接收电路将接收到 得信号送给单片机的外部中断0,单片机接收到信号后通过解码程序对接收到得信号进行处理,使得这些信号成为相应的码值。经过处理后这些
4、信 号就可以去控制步进电机的正转反转、加速减速以及启动停止并在LCD上显示出来。遥控发射器采用士兰半导体的TC9012编码芯片进行红外遥控发射电路的搭建。TC9012是一块用于红外遥控系统中的专用发射集成电路, 采用CMOS工艺制造。它可外接32个按键,其中有三组双重按键。工作电压在2。其编码方式采用一帧码中含有一个引导码,16位的用户码和 8位的键数据码。键数据码的反码也同时被传送,数据反码的传送可以大大减 小系统的误码率。引导码由一个9ms的载波波形和4.5ms的关断时间构成, 编码采用脉冲位置调制方式(PPM。利用脉冲之间的时间间隔来区分“ 0”和“ 1”。具体的遥控发射应用电路图如图2
5、-1.图2-2所示扌旨令信号寻氏SEL月户玛13週玄 屯晤定时址出淒沖芻(助 vVdeM3-Cm3mS-S-h_rXD-ECO KOI EC3 KOI KD5 KO6 M(T AcC DCJ砂虫图2-1TC9012结构框图K2J图2-2发射器结构原理图红外接收模块:本系统采用的接收模块其核心是与TC9012相对应的1308红外接收头。1308是一颗集接收电路、调制解调电路、低通滤波、放大电路和控制电路为一体的集成接收头,一共有三个引脚输出其中一个是电源一个是接地另 一个则是输出,这样就大大方便了我们的使用。1308内部结构如图3所示 由于1308内部集成了强大的信号处理功能, 所以在本系统中使
6、用这个 1308 的接收头的时候我们只需要在外部加上一个滤波电路就可以了, 这个RC滤 波电路是为了滤除电源端的干扰信号。具体应用电路图如图 4所示图3图4液晶显示模块在本系统中我们采用 1602字符型液晶显示模块来显示步进电机的转速、起停以及正反转等步进电机的状态。字符型液晶显示模块是专门用于显示字 母、数字、符号等的点阵型液晶显示模块。分4位和8位数据传输方式。提供5*7点阵+光标和5*10点阵+光标的显示模式。 可以显示两行每行 8个 字符。提供内部自动上电复位电路,+5V工作电压。一共有 16个引脚,其中一对电源引脚、一对LED背光电源引脚、LCD驱动电压引脚、一个模式选择引脚、一个读
7、写操作引脚、一个使能引脚以及 7个数据引脚。其中LCD驱动电压 V0可通过滑动变阻器进行调节,一般V0为零伏。具体应用电路图如图5所示LCD110K W2图5步进电机驱动模块本系统采用额定电压为5VDC,相数为4相的步进电机,驱动方式为4相8拍。一共有5跟线连接,其中红色的为电源线。采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。由于单片机P 口输出的电流比较弱不能驱动步进电机,所以要加一个ULN2003芯片来放大电流使之能驱动步进电机工作。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003的每一对达林顿都串联一个2.
8、7K的基极电阻,在5V的工作电压下它能与 TTL和CMOS电 路。ULN2003工作电压高,工作电流大,灌电流可达500mA并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。步进电机驱 动电路如图6所示1TL劭孟亞謂一、硬件电路设计本系统采用的核心器件是AT89C51单片机,有4个P口,其中 P1 P2 P3内部含有上拉电阻, 统中用P0 口来控制LCD液晶显示模块,P0 口内部不含上拉电阻。在本系 pl 口来控制步进电机的驱动,外部中断0( P3.2 )来接3收红外控制信号AT89C51单片机引脚图如图 7所J22Ul?vccJ23P11P12P13P14MOSI P15MI
9、SO P16SCK Fl/RESETRXD P3QTXD P31P32P孙P34P35P36P37XIX2P10o 12345GP-&Q9OTx -SJ 0- T/ 00 OH- 11 IX 1X 1A 1i IX - 11 111 lx 3 4 5 66-780-01L- - - -讥-0987 6 543 7-1 09876543 2 1P02P03P04P05五TaPJ7P26P25P23234$7g91011121314151017181920 |_JT2 POO1 3_ P014P02,5P036P041 P058 POG9P07KP2 VCC10KVCCWKT-CONSCONS图7
10、单片机复位电路的设计。当AT89C51单片机的复位引脚 RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。89C51单片机提供了上电复位和按键复位两种方式,本系统中采用按键复位电路。具体复位电路如图8所示,其中C4是104陶瓷电容,C3是22uf/25V的电解电容,R1的阻值为 10K欧。单片机时钟电路的设计。89C51提供了外部时钟电路和内部时钟电路两种方式,本系统采用11.0592MHz晶振的外部时钟电路方式,在晶振两端接2个30pf的陶瓷电容。这两个电容成为晶振的负载电容,它会影 响晶振的谐振频率和输出幅度。具
11、体晶振电路如图9所示C130 pf图9四、系统软件设计本系统的软件设计分 LCD显示子程序、红外解码判断子程序、步进电机控制程序和主程序组成。整个系统采用 C语言进行编写。主程序主程序包括系统的初始化、LCD子程序的调用以及定时器中断函数和步进电机控制函数组成。系统初始化包括对LCD显示模块数据位、命令位,红外解码标志位以及步进电机停止转动的等级的定义与初始化,定时器中断 函数主要设定定时器中断间隔和步进电机转动的等级,步进电机控制函数 由步进电机索引函数和对索引值的加减函数组成。系统的主程序流程图如 图10所示开始图10LCD子程序LCD子程序主要实现的功能是显示步进电机的状态。LCD第一行
12、显示静态的“ B140415 08 09 23 ”,这个是我组三同学的学号,第二行动态的显示静 态的“ RANK”和不同速度步进电机转动的等级以及正反转的标志,正反转 的标志为正转为“ +”,反转为“-”。系统LCD显示子程序流程图如图11所示写命令函数-L 一写数据函数r显示静态字符函数I-一-一Jr显示动态字符函数3rLCD显示Jr结束图11红外解码判断子程序红外解码判断子程序包括对码值的判断程序和外部中断0程序,红外接收电路将接收到的信号送到外部中断0,然后红外解码程序对收到的信号进行解码,若解码失败则重新进行解码,若解码成功则判断器码值,然后调 用步进电机控制和LCD显示程序实现步进电
13、机的运转和显示。从而实现红外遥控对步进电机的控制及显示。系统红外解码判断子程序流程图如图12所示红外解码函数N1解码成功Y4判断码值1T启动停止加速1!调用显示函数调用显示函数调用显示函数五:总结图12该红外遥控步进电机的制作让我学会了怎样去设计一个系统,对一个系统 的基本架构有了一定的认识,在通过对红外编解码电路的设计也让我对红 外遥控的基本知识有了新的认识,知道了红外发码的原理掌握了红外解码 程序的编写,对 LCD现实模块的使用也让我对LCD有了新的认识,交接了要调节LCD的驱动电压使其达到 0V左右才能让字符显示出来,通过对步进电机驱动电路的设计也让我认识到要在步进电机的P 口加上拉电阻
14、才能驱动步进电机。总之,这次实训让我收获了很多也为我以后的工作奠定了一 定的基础。源代码:#in elude 定义数据端口程序中遇到 DataPort则用P0替#i nclude vintrin s.h #defi ne DataPort P0 / 换sbit IR=P3A2; /红外接口标志sbit RS = P2A4; /定义端口sbit IR=P3A2; /红外接口标志sbit RS = P2A4; /定义端口unsigned char TempData8; / 存储显示值的全局变量 char code Tab16=0123456789ABCDEF,zf2=-+;unsigned cha
15、r irtime;/红外用全局变量bit irpro_ok,irok,f; unsigned char IRcord4; unsigned char irdata33;定义步进电机连接端口sbit A1=P1A0; /sbit B1=P1A1;sbit C1=P1A2;相通电,其他相断电相通电,其他相断电相通电,其他相断电相通电,其他相断电 相通电,其他相断电 相通电,其他相断电 相通电,其他相断电 相通电,其他相断电 全部断电sbit D1=P1A3;#define Coil_AB1 A1=1;B1=1;C1=0;D1=0;/AB #define Coil_BC1 A1=0;B1=1;C1=
16、1;D1=0;/BC #define Coil_CD1 A1=0;B1=0;C1=1;D1=1;/CD #define Coil_DA1 A1=1;B1=0;C1=0;D1=1;/D #define Coil_A1 A1=1;B1=0;C1=0;D1=0;/A #define Coil_B1 A1=0;B1=1;C1=0;D1=0;/B #define Coil_C1 A1=0;B1=0;C1=1;D1=0;/C #define Coil_D1 A1=0;B1=0;C1=0;D1=1;/D #define Coil_OFF A1=0;B1=0;C1=0;D1=0;/ #define RS_CL
17、R RS=0#define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1#define EN_CLR EN=0 #define EN_SET EN=1 #define CHECK_BUSY #define DataPort P0 unsigned char Speed=1; bit StartFlag,zfFlag;sbit RW = P2A5; sbit EN =卩2八6;void DelayUs2x(unsigned char t); void DelayMs(unsigned char t); void Ir_work(void)
18、;void Ircordpro(void);void TIM0init(void);void Init_Timer1(void);void EX0init(void);/*判忙函数-*/bit LCD_Check_Busy(void)#ifdef CHECK_BUSYDataPort= 0 xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(DataPort & 0 x80);#elsereturn 0;#endif/*写入命令函数-*/void LCD_Write_Com(unsigned char com)/ while(LCD_Che
19、ck_Busy(); /忙则等待DelayMs(5);RS_CLR;RW_CLR;EN_SET;DataPort= com;_nop_();EN_CLR;/*写入数据函数*/ void LCD_Write_Data(unsigned char Data) /while(LCD_Check_Busy(); / 忙则等待 DelayMs(5);RS_SET;RW_CLR;EN_SET;DataPort= Data;_nop_();EN_CLR;/*清屏函数*/ void LCD_Clear(void)LCD_Write_Com(0 x01); DelayMs(5);/*写入字符串函数*/void
20、LCD_Write_String(unsigned char *s) if (y = 0)LCD_Write_Com(0 x80 + x); /elseLCD_Write_Com(0 xC0 + x); / while (*s)LCD_Write_Data( *s);s +;char x,unsigned char表示第一行表示第二行y,unsigned/*写入字符函数*/y,unsigned/* void LCD_Write_Char(unsigned char x,unsigned char char Data)if (y = 0)LCD_Write_Com(0 x80 + x);else
21、LCD_Write_Com(0 xC0 + x);LCD_Write_Data( Data);*/*初始化函数*/void LCD_Init(void)LCD_Write_Com(0 x38); /*DelayMs(5);LCD_Write_Com(0 x38);DelayMs(5);LCD_Write_Com(0 x38);DelayMs(5);LCD_Write_Com(0 x38);LCD_Write_Com(0 x08); /*LCD_Write_Com(0 x01); /*LCD_Write_Com(0 x06); /*DelayMs(5);LCD_Write_Com(0 x0C);
22、 /*显示模式设置 */显示关闭 */显示清屏 */ 显示光标移动设置 */显示开及光标设置 */*void speed1(void)if(Speed1)Speed-;TempData0=zff;TempData1=TabSpeed/10;TempData2=TabSpeed%10; */*主函数*/ main()unsigned int i=512;/ 旋转一周时间EX0init(); / 初始化外部中断 TIM0init();Init_Timer1();LCD_Init(); /DelayMs(20);/LCD_Clear();/初始化液晶 延时有助于稳定 清屏LCD_Write_Stri
23、ng(0,0,B140415 08 09 23);LCD_Write_String(0,1,RANK:);Coil_OFF; while(1)/ 主循环if(irok) / Ircordpro(); irok=0;如果接收好了进行红外处理if(irpro_ok) /如按对应的按键后显示对应的数字等如果处理好后进行工作处理,Ir_work();/*定时器 0 初始化 */ void TIM0init(void)/ 定时器 0 初始化 TMOD=0 x02;/TH0=0 x00; / TL0=0 x00; / ET0=1; /TR0=1;/*定时器0工作方式2, THO是重装值,TLO是初值 重载
24、值初始化值 256 微秒开中断定时器初始化子程序*/void Init_Timer1(void)TMOD |= 0 x01;/用多个定时器时不受影响 /TH1=0 x00;/TL1=0 x00;EA=1; /ET1=1;/TR1=1;/使用模式 1, 16 位定时器,使用给定初值总中断打开定时器中断打开定时器开关打开| 符号可以在使/*外部中断 0 初始化*/void EX0init(void)IT0 = 1; / 指定外部中断 0 下降沿触发, INT0 (P3.2)EX0 = 1; /使能外部中断EA = 1; /开总中断/*定时器 0 中断处理*/void tim0_isr (void)
25、 interrupt 1 irtime+; / 用于计数 2 个下降沿之间的时间 /*定时器中断子程序*/ void Timer1_isr(void) interrupt 3 static unsigned char times,i;TH1=(65536-500)/256; / 重新赋值 1ms TL1=(65536-500)%256;if(StartFlag) if(zfFlag=0) if(times=(20-Speed) times=0; switch(i) case 0:Coil_A1;i+;break;case 1:Coil_B1;i+;break;case 2:Coil_C1;i+
26、;break;case 3:Coil_D1;i+;break;case 4:i=0;break; default:break; times+;else if(times=(20-Speed) times=0;switch(i)case 0:Coil_D1;i+;break;case 1:Coil_C1;i+;break;case 2:Coil_B1;i+;break;case 3:Coil_A1;i+;break;case 4:i=0;break; default:break; times+;/ 调用数码管扫描 /*外部中断 0 中断处理作用:接收信号,并存储到数组中void EX0_ISR
27、(void) interrupt 0 / static unsigned char i; / static bit startflag; /*/外部中断 0 服务函数接收红外信号处理是否开始处理标志位if(startflag)引导码 TC9012 的头码, 9ms+4.5ms存储每个电平的持续时间,用于以后判断if(irtime=33)/ i=0;irdatai=irtime;/是 0 还是 1irtime=0;i+;if(i=33)/ 存储 33 位 2 个字节的用户码, 1 个字节数据码, 一个字节数据码反码 ,一位同步位 irok=1;/ 处理完毕标志为 1 i=0;elseirtime
28、=0; startflag=1;/*键值处理*/void Ir_work(void)/ 红外键值散转程序 switch(IRcord2)/ 判断第三个数码值 case 0 x40: if(Speed1) Speed-;TempData0=zff;TempData1=TabSpeed/10;TempData2=TabSpeed%10;break;case 0 x43: Coil_OFF;TempData0 = zff;TempData1 = Tab0;TempData2 = Tab0; StartFlag=0;LCD_Write_String(5,1,TempData); break; case 0 x09:TempData0 = zff;TempData1 = TabSpeed/10; TempData2 = TabSpeed%10;StartFlag=1;break;case 0 x07: if(f=1) DelayMs(200);Coil_OFF; f=0;TempData0=zff; zfFlag=0;break;case 0 x15: if(f=0) DelayMs(200);Coil_OFF; f=1;TempData0=zff; zfFlag=1;break; default:break;if(StartFlag) LCD_Write_Str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南昆明市西山区人才资源运营管理有限公司招募高校毕业见习人员6人考试参考试题及答案解析
- 2026广西南宁市良庆区大塘镇政府招聘3人考试备考试题及答案解析
- 2026广东广州开发区第二幼儿园(中心园)招聘考试参考题库及答案解析
- 2026山东青岛事业单位统考总工会所属事业单位招聘卫生类岗位2人考试备考试题及答案解析
- 2026河南安阳北关区永兴学校高中专任教师招聘考试参考试题及答案解析
- 2026广东湛江太平镇中心幼儿园招聘教师2人考试参考题库及答案解析
- 2026广东梅州市梅县区大坪镇招聘村(社区)公共服务站政务服务专职工作人员2人考试参考题库及答案解析
- 2026年阜阳市大数据资产运营有限公司招聘考试参考题库及答案解析
- 2026浙江宁波市海曙区动物卫生监督所招聘屠宰检疫辅助员1人考试备考题库及答案解析
- 2026河南信阳衡水高级中学、罗山县衡水高级中学招聘高中教师考试参考试题及答案解析
- 2025-2026学年江苏省苏州市八校高三(上)联考英语试卷(12月份)
- 高危药品知识培训课件
- 小区安装电梯协议书
- 2025至2030中国轮胎硫化机行业项目调研及市场前景预测评估报告
- 控脑技术发展及军事应用预测研究
- 《腹部手术围手术期疼痛管理指南(2025版)》解读
- 烟草局员工合同(标准版)
- 七氟丙烷气体及灭火系统培训
- 2025年6年广西南宁市邕宁区民族中学中考数学素养测试卷
- 国有商业银行中间业务发展:现状、挑战与突破路径
- 2025年1师兵团职工考试试题及答案
评论
0/150
提交评论