




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于51单片机的红外遥控书法小车课程设计题目名称: 基于51单片机的红外遥控书法小车的设计 专业班级: 测控1402班 学生姓名: 学 号: 1 成绩:评语:指导老师签名: 日期: 指导教师: I 单片机系统 课程设计任务书学生姓名赵向前专业班级测控1402班学号201423030211题 目基于51单片机的红外遥控书法小车的设计课题性质单片机系统课程设计课题来源书法艺术的启发指导教师郭广灵主要内容(参数)1.总电源为直流12V,采用5V稳压模块供电2.采用红外遥控作为启动开关3.静止状态下单片机系统处于掉电状态4.采用STC89C52RC为MCU控制芯片5.采用28BYT-48-5VDC永磁式5V直流减速步进电机任务要求(进度)12.01-12.02 设计电路图12.03-12.07上网采购元器件及所需要的工具12.08-12.15 焊接电路并组装硬件12.16-12.18 设计程序让小车动起来12.19-12.29 完成软件设计12.29-01.01 硬件及软件调试01.02-01.03 写设计报告主要参考资料 1单片机原理及应用(第二版)张毅刚 彭喜元 彭宇 编著 2.电子设计从零开始第二版(第二版)清华大学出版社 3.电子技术基础模拟部分康华光 著 4.51单片机C语言教程 郭天祥 著 5.Multisim 12仿真设计审查意见系(教研室)主任签字: 年 月 日 目 录1 系统概述 12 方案论证 22.1 使用普通直流减速电机 22.2 使用四象八拍步进电机 23硬件设计 33.1系统的原理方框图33.1.1. 12V直流电源33.1.2 5V稳压模块43.1.3控制系统模块43.1.4. 红外接收模块53.1.5. 步进电机驱动63.1.6. 步进电机63.2主电路83.3 I/O分配83.3 I/O连线图84软件设计84.1流程图94.2源程序95系统调试 286.使用方法 287.设计心得 28参考文献291 系统概述该小车是我在练字时无意间蹦出的一个想法,于是我就想让小车按照固定的轨迹行走,并使其驱动一杆毛笔,不就能让小车也能写出富有艺术的毛笔字了吗?基于这样的构想,我就设计方案制作一辆智能书法小车,后来设计完成后我又加上了红外遥控,于是就做成了最终的基于STC89C52RC单片机的智能红外遥控书法小车。该作品所要实现的功能如下:1. 按照固定的轨迹行走2. 能够驱动毛笔写字3. 实现红外遥控启动4. 非工作模式下进入掉电模式实现低功耗长待机 5. 使用步进电机控制小车运行速度使其能够平稳稳定运行6. 电流失控报警功能,使用LED灯泡实现对总电流及各个模块电流运转情况进行监控显示,电流平稳时,LED灯常亮,当电流出现异常巨大变动时,LED灯闪烁示警各模块参数:112V直流总电源供电2. 稳压模块使用L7805器件将12V电源转化为直流5V电源为各个模块供电3. 使用STC89C52RC单片机作为控制芯片4. 使用ULN2003芯片作为步进电机驱动5. 使用28BYT-48-5VDC永磁式直流5V四相八拍减速步进电机作为发动机6. 使用28BYT-48-5VDC永磁式直流5V四相八拍减速步进电机作为毛笔驱动2.方案论证2.1方案一:采用普通直流减速电机直流减速电机作为最常用的直流电机又有着控制简单,速度快等特点,但是在我们的智能书法小车上如果使用这种电机的话,就会出现很多的问题,其中,速度过快,很难精确地控制小车的位移,其次,普通直流减速电机的力矩较小,难以实现快速改变其运动轨迹的要求,所以,总的来说,使用普通直流减速电机并不合适,将之摒弃。2.2方案二:采用步进电机2.2.1步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常简单。步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用,我们的智能书法小车刚好满足其要求。2.2.2步进电机的主要特性:1.步进电机必须加驱动才可以运转, 驱动信号必须为脉冲信号,没有脉冲的时候,步进电机静止, 如果加入适当的脉冲信号,就会以一定的角度(称为步角)转动。转动的速度和脉冲的频率成正比。2.28BYJ48电机为5V驱动的4相5 线的步进电机,而且是减速步进电机,减速比为 1:64,步进角为 5.625/64 度。如果需要转动 1 圈,那么需要360/5.625*64=4096 个脉冲信号。3.步进电机具有瞬间启动和急速停止的优越特性。4.改变脉冲的顺序, 可以方便的改变转动的方向综上所述,选用步进电机作为动力模块更加合适,于是我们采用28BYJ-48-5VDC电机为我们的智能书法小车提供动力。3.硬件设计STC89C52RCMCU控制系统3.1.系统的原理方框图:红外接收模块12V电源稳压模块12V转为5V步进电机驱动模块步进电机:控制左右轮胎步进电机:控制毛笔 统总共有如下几个模块组成:12V电源,5V稳压模块,STC89C52RC控制系统模块,红外接收模块,步进电机驱动模块,步进电机。其中12V电源提供总电源, 5V稳压模块将12V电源经整流,滤波,等处理后输出5V直流电流为其它各个模块供电,红外接收模块将接收到的红外信号进行解码转换为二进制数字电平之后送给MCU,STC89C52RC控制模块接受到的红外接收模块传送过来的信号之后,向步进电机驱动模块发送执行指令,驱动电路再将接收到的指令进行转换并输送给步进电机,从而驱动小车运动。 3.1.1 12V直流电源:由装载在电池盒的3节18650充电电池组成,电量充足,可重复充电使用,比普通干电池性能更高更环保,但充电时电池会发热。3.1.2 5V直流稳压模块:输入12V直流电源,输出5V直流电源,经使用电表实际测量为4.94V,在允许范围之内。稳压模块采用L7805芯片实现12V到5V的转化,同时加入了滤波和流电路等和LED指示灯,可以实现指示电路的通断的功能,并可通过灯亮度的变化来判断电流的变化。实物图如下:电路原理图:3.1.3 控制系统模块:采用STC89C52RC作为主控芯片,拥有8K Flash存储器,512B ROM,2K+E2PROM,2个中断优先级,6个中断源,3个定时器/计数器,32个I/O口线,同时控制系统中,还加入了复位电路,外部中断0中断电路,即P3.2口,以及震荡电路,复位电路采用上电复位加手动复位的方式,时钟频率使用内部时钟频率,晶振的频率才用11.0598MHz。实物图如下:电路图如下:3.1.4 红外接收模块:红外接收模块是由红外接收电路、红外解码电路组成。主要用于接收来自红外遥控器的红外线信号,红外遥控接收器将遥控发射器发来的红外光信好转换成电信号,再放大、限幅、检波、整形,形成遥控指令脉冲,输出至遥控微处理器。在这里我们采用成品红外接收头。成品红外接收头的封装大致有两种:一种采用铁皮屏蔽;一种是塑料封装,我采用了铁皮屏蔽型的,铁皮屏蔽型有三只引脚,即电源正(VDD)、电源负(GND)和数据输出(VOUT)。红外接收头,红外遥控器,以及红外解码表如下:3.1.5. 步进电机驱动模块:使用三片ULN2003驱动芯片分别驱动三个步进电机。如下为实物图:如下为电路图:3.1.6. 步进电机:使用3个28BYT-48-5VDC永磁式直流5V四相八拍减速步进电机提供动力,2个装配在轮胎上,1个用于驱动毛笔写字。步进电机接线要根据线的颜色来区分接线,28BYT-48-5VDC共有八个状态:1、在A与B正电压,C与D不给电悬空;2、在A与B正电压,C与D也给正电压;3、A与B不给电压悬空,C与D正电压;4、A与B给负电压,B与C给正电压;5、A与B给负电压,C与D不给悬空;6、A与B给负电压,C与D给负电压;7、A与B不给电悬空,C与D给负电压;8、A与D给正电压,B与C给负电压;按以上八个状态轮流供电,控制一下脉宽应该就可以了。四个引脚各一根控制线:1-8表示各线时序12 3 4 5 67 8A 11 0 0 0 001B 0 0 0 1 1 1 0 0C 01 1 1 0 000D 0 00 0 0 111步进电机实物图以及顺序表如下:完整版的小车:3.2.主电路图:3.3 I/O分配 P1.0P1.7用于输出电机驱动执行指令P2.0P2.3用于输出电机驱动执行指令P3.2用于红外接收及弹性开关手动启动3.4. IO口接线图:P1.0P1.3P1.4P1.7P2.0P2.3P3.2左轮电机左轮电机驱动右轮电机右轮电机驱动毛笔电机毛笔电机驱动红外接收头4 软件设计 4.1主流程进入主函数中断初始化:设置为下降沿触发 等待中断中断服务子程序入口中断服务子程序:控制小车写字中断返回 本程序为本人编写为本小车专门设计,采用外部中断0跳变沿触发,触发信号为红外接收头和中断按键产生的下降沿,中断服务子程序为小车写字流程并调用“前进,后退,下笔,收笔,左拐,右拐等子程序”,同时最后设计了延时子程序,以及TABLE 表,供单片机查询。4.2. 源程序:;*28BYJ-48-5V,28mm外径永磁式四相八拍减速5V步进电机*;前进和后退;Fosc=11.0592MHz;用脉冲驱动信号,转动的速度与脉冲成正比;步进角为5.625/64度,转动一圈需要4096拍;前进式写“I”ORG 0000H LJMP MAINORG 0003HLJMP LOOP ;LCALL GO21cm ;前进21cm;LCALL GO10cm ;前进10.5cm;LCALL GO05cm ;前进05cm ;LCALL GO2p5cm ;前进2.5cm;LCALL GO1p25cm ;前进1.25cm;LCALL BACK21cm ;后退21cm;LCALL BACK10p5cm ;后退10.5cm;LCALL BACK05cm ;后退05cm;LCALL BACK2p5cm;后退2.5cm;LCALL BACK1p25cm ;后退1.25cm;LCALL BACK0p62cm ;后退0.62cm ;LCALL LEFT180 ;左转180;LCALL LEFT90 ;左转90;LCALL LEFT45 ;左转45;LCALL RIGHT180 ;右转180;LCALL RIGHT90 ;右转90;LCALL RIGHT45 ;右转45;LCALL SPIN30 ;下笔;LCALL NSPIN30 ;收笔;转90度之后需要前进10.5+1.25cm;转90度之后需要后退10.5+2.5cmMAIN: SETB EX0CLR IT0SETB EASETB P3.2DP:MOV PCON,#02HHERE: LJMP HERE LOOP: ;-工- LCALL SPIN30 ;下笔-1LCALL GO10P5cm ;前进10.5cmLCALL NSPIN30 ;收笔LCALL GO10p5cm ;前进10.5cmLCALL DELAY2LCALL BACK0p62cm ;后退0.62cm;LCALL BACK1p25cm ;后退1.25cm ;LCALL GO1p25cm ;前进1.25cm;LCALL GO2p5cm ;前进2.5cmLCALL RIGHT90 ;右转90LCALL BACK10p5cm ;后退10.5cmLCALL BACK05cm ;后退05cmLCALL SPIN30 ;下笔-2LCALL GO21cm ;前进21cmLCALL NSPIN30 ;收笔LCALL GO10p5cm ;前进10.5cmLCALL GO2p5cm ;前进2.5cmLCALL GO1p25cm ;前进1.25cmLCALL GO1p25cm ;前进1.25cmLCALL LEFT90 ;左转90LCALL BACK21cm ;后退21cm LCALL SPIN30 ;下笔-3LCALL GO10p5cm ;前进10.5cm LCALL NSPIN30 ;收笔LCALL GO21cm ;前进21cm;-大- LCALL LEFT90 ;左转90LCALL GO10p5cm ;前进10.5cmLCALL GO05cm ;前进05cmLCALL RIGHT90 ;右转90LCALL BACK10p5cm ;后退10.5cmLCALL BACK2p5cm ;后退2.5cmLCALL BACK2p5cm ;后退2.5cmLCALL SPIN30 ;下笔-1LCALL GO21cm ;前进21cmLCALL NSPIN30 ;收笔LCALL GO2p5cm ;前进2.5cmLCALL GO1p25cm ;前进1.25cmLCALL LEFT90 ;左转90LCALL BACK10p5cm ;后退10.5cmLCALL BACK2p5cm ;后退2.5cm LCALL BACK1p25cm ;后退1.25cmLCALL SPIN30 ;下笔-2 LCALL GO05cm ;前进05cmLCALL NSPIN30 ;收笔LCALL GO10P5cm ;前进10.5cmLCALL GO1p25cm ;前进1.25cmLCALL LEFT90 ;左转90;LCALL BACK2p5cm ;后退2.5cmLCALL BACK0p62cm ;后退0.62cm;LCALL BACK1p25cm ;后退1.25cmLCALL LEFT45 ;左转45LCALL BACK10p5cm ;后退10.5cmLCALL BACK2p5cm ;后退2.5cmLCALL SPIN30 ;下笔-3LCALL GO21cm ;前进21cmLCALL NSPIN30 ;收笔LCALL BACK05cm ;后退05cmLCALL LEFT90 ;左转90LCALL BACK10p5cm ;后退10.5cmLCALL BACK2p5cm ;后退2.5cmLCALL BACK1p25cm ;后退1.25cm LCALL SPIN30 ;下笔-4LCALL GO21cm ;前进21cmLCALL NSPIN30 ;收笔LCALL LEFT45 ;左转45LCALL GO21cm ;前进21cmLCALL GO21cm ;前进21cmRETI;前进21cm(暂不准确)-GO21cm: MOVR3,#0FDH;256, 正转一圈 MOVR1,#10H;16, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START1: MOVR0,#00H;第0拍开始START2:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART1;如果一轮MOVP1,A ;输出当前拍MOVP0,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START2 ;如果R3不等于0,则跳转START2MOVR3,#0FDH ;251 256,DJNZR1,START2 ;如果R1不等于0,则跳转START2DJNZR2,START2 ;如果R2不等于0,则跳转START2 ;LCALL DELAY2;正反转之间的间隔; LCALL MAIN MOV P1,#00H;给P1置0 RET;前进10.5cm(暂不准确)-GO10p5cm: MOVR3,#00H;256, 正转一圈 MOVR1,#08H;16, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START15: MOVR0,#00H;第0拍开始START16:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART15;新一轮MOVP1,A ;输出当前拍MOVP0,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START16 ;如果R3不等于0,则跳转START16DJNZR1,START16 ;如果R1不等于0,则跳转START16DJNZR2,START16 ;如果R2不等于0,则跳转START16 ;LCALL DELAY2;正反转之间的间隔; LCALL MAIN MOVP1,#00H;给P1置0 RET;前进05cm(暂不准确)-GO05cm: MOVR3,#0FBH;256, 正转一圈 MOVR1,#04H;04, 256*16*N=4096*N MOVR2,#01H;N-前进圈数 MOVP1,#00H;给P1置0START19: MOVR0,#00H;第0拍开始START20:MOVDPTR,#TABLE;设置指针 MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART19;新一轮MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START20 ;如果R3不等于0,则跳转START20MOVR3,#0FBH;256DJNZR1,START20 ;如果R1不等于0,则跳转START20DJNZR2,START20 ;如果R2不等于0,则跳转START20 ;LCALL DELAY2;正反转之间的间隔; LCALL MAIN MOVP1,#00H;给P1置0 RET;前2.5cm(暂不准确)-GO2p5cm: MOVR3,#00H;256, 正转一圈 MOVR1,#04H;04, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START25: MOVR0,#00H;第0拍开始START26:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART25;新一轮MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START26 ;如果R3不等于0,则跳转START22MOVR3,#7AH;08DJNZR1,START26 ;如果R1不等于0,则跳转START22DJNZR2,START26 ;如果R2不等于0,则跳转START22 ;LCALL DELAY2;正反转之间的间隔; LCALL MAIN MOVP1,#00H;给P1置0 RET;前1.25cm(暂不准确)-GO1p25cm: MOVR3,#40H;256, 正转一圈 MOVR1,#04H;04, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START27: MOVR0,#00H;第0拍开始START28:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART27;新一轮MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START28 ;如果R3不等于0,则跳转START22MOVR3,#40H;08DJNZR1,START28 ;如果R1不等于0,则跳转START22DJNZR2,START28 ;如果R2不等于0,则跳转START22;LCALL DELAY2;正反转之间的间隔 ;LCALL MAIN MOVP1,#00H;给P1置0 RET;后退21cm(暂不准确)-BACK21cm:MOV R3,#0FDH;256, 反转一圈(P=256*16*N=R3*R1*N,N=转的圈数,P=总拍数)MOVR1,#10H;16, 256*16*NMOVR2,#01H;N-倒退圈数MOVP1,#00H;将P1置0START3:MOVR0,#09H;第9拍开始START4:MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART3;如果一轮结束,新一轮开始MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START4 ;如果R3不等于0,则跳转START4MOV R3,#0FDH;256DJNZR1,START4 ;如果R1不等于0,则跳转START4DJNZR2,START4 ;如果R2不等于0,则跳转START4;LCALL DELAY2;正反转之间的间隔;LCALL MAIN;跳转主函数MOVP1,#00H;给P1置0RET;后退10cm(暂不准确)-BACK10p5cm: MOVR3,#00H;256, 正转一圈 MOVR1,#08H;16, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START17: MOVR0,#09H;第0拍开始START18:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART17;新一轮MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START18 ;如果R3不等于0,则跳转START18DJNZR1,START18 ;如果R1不等于0,则跳转START18DJNZR2,START18 ;如果R2不等于0,则跳转START18;LCALL DELAY2;正反转之间的间隔; LCALL MAIN MOVP1,#00H;给P1置0 RET;后退5cm(暂不准确)-BACK05cm: MOV R3,#0FDH;256, 正转一圈 MOVR1,#04H;04, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START21: MOVR0,#09H;第0拍开始START22:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART21;新一轮MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START22 ;如果R3不等于0,则跳转START22MOV R3,#0FDH;256DJNZR1,START22 ;如果R1不等于0,则跳转START22DJNZR2,START22 ;如果R2不等于0,则跳转START22;LCALL DELAY2;正反转之间的间隔; LCALL MAIN MOVP1,#00H;给P1置0 RET;后退2.5cm(暂不准确)-BACK2p5cm:MOVR3,#00H;256, 正转一圈 MOVR1,#04H;04, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START23: MOVR0,#09H;第0拍开始START24:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART23;新一轮MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START24 ;如果R3不等于0,则跳转START22MOVR3,#7AH;08DJNZR1,START24 ;如果R1不等于0,则跳转START22DJNZR2,START24 ;如果R2不等于0,则跳转START22;LCALL DELAY2;正反转之间的间隔; LCALL MAIN MOVP1,#00H;给P1置0 RET;后退1.25cm(暂不准确)-BACK1p25cm: MOVR3,#40H;256, 正转一圈 MOVR1,#04H;04, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START29: MOVR0,#09H;第0拍开始START30:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART29;新一轮MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START30 ;如果R3不等于0,则跳转START22MOVR3,#40H;08DJNZR1,START30 ;如果R1不等于0,则跳转START22DJNZR2,START30 ;如果R2不等于0,则跳转START22;LCALL DELAY2;正反转之间的间隔 ;LCALL MAIN MOVP1,#00H;给P1置0 RET;后退0.62cm(暂不准确)-BACK0p62cm: MOVR3,#20H;256, 正转一圈 MOVR1,#04H;04, 256*16*N=4096*NMOVR2,#01H;N-前进圈数MOVP1,#00H;给P1置0START33: MOVR0,#09H;第0拍开始START34:MOVDPTR,#TABLE;设置指针MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART33;新一轮MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START34 ;如果R3不等于0,则跳转START34MOVR3,#20H;08DJNZR1,START34 ;如果R1不等于0,则跳转START34DJNZR2,START34 ;如果R2不等于0,则跳转START34;LCALL DELAY2;正反转之间的间隔 ;LCALL MAIN MOVP1,#00H;给P1置0 RET;左转180*(暂不准确)-LEFT180: MOV R3,#0F3H;256, 左拐一圈(P=256*16*N=R3*R1*N,N=转的圈数,P=总拍数)MOVR1,#14H;20, 256*16*NMOVR2,#01H;N-左拐圈数MOVP1,#00H;将P1置0START5:MOVR0,#12H;第18拍开始START6:MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART5;如果一轮结束,新一轮开始MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START6 ;如果R3不等于0,则跳转START6MOV R3,#0F3H;256,DJNZR1,START6 ;如果R1不等于0,则跳转START6DJNZR2,START6 ;如果R2不等于0,则跳转START6;LCALL DELAY2;正反转之间的间隔;LCALL MAIN;跳转主函数MOVP1,#00H;给P1置0 RET;左转90*(暂不准确)-LEFT90: MOV R3,#0F3H;224,256, 左拐一圈(P=256*16*N=R3*R1*N,N=转的圈数,P=总拍数)MOVR1,#0AH;16, 256*16*NMOVR2,#01H;N-左拐圈数MOVP1,#00H;将P1置0START9:MOVR0,#12H;第18拍开始START10:MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART9;如果一轮结束,新一轮开始MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START10 ;如果R3不等于0,则跳转START10MOV R3,#0F3HDJNZR1,START10 ;如果R1不等于0,则跳转START10DJNZR2,START10 ;如果R2不等于0,则跳转START10;LCALL DELAY2;正反转之间的间隔;LCALL MAIN;跳转主函数MOVP1,#00H;给P1置0 RET;-左拐45(暂不准确)-LEFT45: MOV R3,#0F3H;244,256, 右拐一圈(P=256*16*N=R3*R1*N,N=转的圈数,P=总拍数)MOVR1,#05H;10, 256*16*NMOVR2,#01H;N-右拐圈数MOVP1,#00H;将P1置0START35:MOVR0,#12H;第27拍开始START36:MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART35;如果一轮结束,新一轮开始MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START36 ;如果R3不等于0,则跳转START36MOV R3,#0F3H;122,256,DJNZR1,START36 ;如果R1不等于0,则跳转START36DJNZR2,START36 ;如果R2不等于0,则跳转START36;LCALL DELAY1;正反转之间的间隔;LCALL MAIN;跳转主函数MOVP1,#00H;给P1置0RET;右拐180*(暂不准确)-RIGHT180: MOV R3,#0F3H;243,256, 右拐一圈(P=256*16*N=R3*R1*N,N=转的圈数,P=总拍数)MOVR1,#14H;20, 256*16*NMOVR2,#01H;N-右拐圈数MOVP1,#00H;将P1置0START7:MOVR0,#1BH;第27拍开始START8:MOVA,R0MOVCA,A+DPTR ;送累加器JZSTART7;如果一轮结束,新一轮开始MOVP1,A ;输出当前拍INCR0;R0加1LCALL DELAY1DJNZR3,START8 ;如果R3不等于0,则跳转START8MOV R3,#0F3H;256, 重新置位DJNZR1,START8 ;如果R1不等于0,则跳转START8DJNZR2,START8 ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省成都市崇庆中学2024-2025学年初三5月阶段性检测试题语文试题含解析
- 内蒙古化工职业学院《生物工程专业综合实验》2023-2024学年第二学期期末试卷
- 浙江宇翔职业技术学院《机器人技术实践创新》2023-2024学年第二学期期末试卷
- 湛江市年模拟数学试题(二)
- 轮胎仓库消防安全培训
- 2025电子商务运营技术外包服务合同(乙方提供)
- 2025大连市家具销售合同范本
- 2025租赁合同-汽车租赁合同
- 2025标准租赁合同范本全新版
- 2025年广州市房屋租赁合同书范本
- 骨科查体-骨科体格检查-四肢(精制医学)
- CT设备维保项目实施方案
- 约克冷水机组年度维护保养方案
- 医院年度文化建设工作方案范文
- 吊装式风机安装作业指导书
- 物资拆装搬运服务方案
- 高一数学分层训练AB卷(人教A版2019必修第二册)第九章统计(知识通关详解)【单元测试卷】(原卷版+解析)
- 培养自我认知能力-心理健康教案
- 第九届全国大学生测井技能大赛备赛试题库-上(单选题)
- 建筑制图与识图教学课件:第八章 结构施工图
- 《全面风险管理报告》模本-模范本
评论
0/150
提交评论