计算机控制课程设计逐点比较插补原理的实现_第1页
计算机控制课程设计逐点比较插补原理的实现_第2页
计算机控制课程设计逐点比较插补原理的实现_第3页
计算机控制课程设计逐点比较插补原理的实现_第4页
计算机控制课程设计逐点比较插补原理的实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、微型计算机控制技术课程设计报告课题名称:逐点比较插补原理的实现姓 名: 班 级: 学 号: 指导老师: 东华理工大学机械与电子工程学院2016年6月目录目录1一 设计任务和要求3二、任务分析4(1)动态显示4(2)按键功能4(3)硬件系统设计4(4)插补算法实现4三、总体方案设计53.1 硬件总体方案设计53.2 软件总体方案设计5四、硬件系统设计64.1 方案论证64.2 单片机与8255的接口74.3电机硬件接线原理图84.4元件清单94.5、键盘显示硬件设计94.5.1键盘输入电路94.5.2 动态显示电路104.5.3 所用元器件10五 软件系统设计115.1 软件设计原理115.1.

2、1逐点比较法圆弧插补原理115.1.2 步进电机工作原理125.2 8255的初始化编程145.3 步进电机走步控制程序145.3.1 nr1程序流程图155.3.2 走步控制汇编程序代码165.3.3 nr4程序流程图175.4 键盘显示程序设计185.4.1、键盘与i/o接口 表5键盘接口185.4.2、键盘显示程序流程图185.4.3 六个功能键:195.5主程序195.5.1 主程序流程图195.4.2 源程序代码20六 系统调试206.1 系统安装调试206.2 结果验证20七 课程设计总结22八、参考文献22附录一 芯片资料23附录二 源程序24一 设计任务和要求设计一个计算机控制

3、步进电机系统,该系统利用89c51(或89c52、89s52)机的px口输出控制信号,其信号驱动、控制x、y两个方向的三相步进电机转动,利用逐点比较法插补绘制出各种曲线。在第一象限,x(10)、y(10)最大坐标值。其他坐标值任意定,但插补计算不得小于8步。要求:1)在显示器上显示任意四位十进制数;a、定义键盘按键:10个为数字键09;6个功能键:设置set、清零clr、确认、开始start、暂停、停止;b、显示器上第一位显示次数,后三位显示每次行走的角度;c、通过键盘的按键,设置x、y轴插补的起始值;按start键启动步进电机开始转动,按set键进行数据设置、按clr键清零。2)设计硬件系统

4、,画出电路原理框图(要求规范);3)定义步进电机转动的控制字;(不设计步进电机驱动电路与驱动程序)。4)推导出用逐点比较法插补绘制出下面曲线的算法;5)编写算法控制程序;6)撰写设计说明书。选择曲线如下:图1 目标曲线二、任务分析(1)动态显示采用四位共阳极led显示器动态显示,不断扫描显示。采用44键盘作为输入模块,接单片机p1口,采用线反转法进行编程,线反转法的工作原理和查键步骤:求按键的列线值:行线作为输出线,列线作为输入线,即可得到列线值。求按键的行线值:行线作为输入线,列线作为输出线,即可得到行线值。求按键的特征码:把行线值和列线值合并,组合成为按键的特征码。查找键码:通过查表就可以

5、得到与特征码对应的顺序码,就可以得知是哪个按键按下。表中若没有该特征码以无效键处理,并与没有按键(0ff)等同看待。(2)按键功能程序主体要按照,先扫描按键,待设置完成,按下启动按钮,才能进行插补运算,并且,把走过的步数,输出显示。通过数字键,输入起点坐标,暂存数据,待按下启动按钮,把数据输入x,y对应存储单元。(3)硬件系统设计采用at89c51单片机作为主控制器,44键盘作为设置键,p0口作为显示和控制字输出口,在驱动步进电机时,数据通过74ls373进行锁存,通过8255pa口输入,pb、pc口输出,经过驱动电路,驱动步进电机工作。在显示时通过74hct573进行数据锁存,用4位数码管对

6、输出数据进行显示。(4)插补算法实现由图可知,在图像第一象限内为一个半圆,必须进行坐标变换,转化为两个第一、第四象限的逆圆弧插补。然后按照第一、第四象限的插补算法进行插补计算。坐标变换(x-5,y-6)就可以得到相对坐标,第四象限内,起点绝对坐标为(5,2),相对坐标为(0,-4),终点绝对坐标为(9,6),相对坐标为(4,0)。第一象限内起点绝对坐标为(9,6),相对坐标为(4,0),终点绝对坐标为(5,10),相对坐标为(0,4)。插补的圆心为(5,6),半径为4。三、总体方案设计电源模块3.1 硬件总体方案设计数码显示驱动电路 pb0 pb1 pb28255 pc0 pc1 pc2p0口

7、89c51p1口m1驱动电路键盘模块m2电源模块图2 硬件系统方框图3.2 软件总体方案设计首先调键盘输入子程,对按键进行扫描,当设置键有效时,通过数字键对x、y进行赋初值,通过功能键进行清零,通过strat键,开始启动插补程序,进行插补。插补过程中,分别调用不同象限的插补程序,实现不同方向的进给。同时把步进次数,输出显示。四、硬件系统设计4.1 方案论证单片机的接口电路可以是锁存器,也可以是专门的接口芯片,本设计采用可编程接口芯片8255。由于步进电机需要的驱动电流比较大,所以单片机和步进电机的连接还要有驱动电路,如何设计驱动电路成了问题的关键。设计方案一如图3所示,当某相上驱动信号变为高电

8、平时,达林顿管导通,从而使得该相通电。图3 驱动电路方案一设计方案二如图4所示,在单片机与驱动器之间增加一级光电隔离,当驱动信号为高电平时,发光二极管发光,光敏三极管导通,从而使达林顿管截止,该相不通电;当驱动信号为低电平时,则步进电机的该相通电。图4 驱动电路方案二综合比较两种设计方案可知,方案二有抗干扰能力,且可避免一旦驱动电路发生故障,造成高电平信号进入单片机而烧毁器件。所以,本设计选择方案二。4.2 单片机与8255的接口mcs-51单片机可以和8255直接连接而不需要任何外加逻辑器件,接口示意图如图5所示。因为8255的b口和c口具有驱动达林顿管的能力,所以将采用b口和c口输出驱动信

9、号。图5 单片机与8255的接口4.3电机硬件接线原理图图6 系统硬件接线原理图单片机控制步进电机的硬件接线如图6所示。因为8255的片选信号接单片机的地址线p2.7,a1、a0通过地址锁存器接到了8051单片机的地址线p0.1和p0.0,由硬件接线图可以清楚地知道,8255的各口地址为:a口地址: 7ffchb口地址: 7ffdhc口地址: 7ffeh控制口地址:7fffh同时,b口和c口都作为输出口,8255工作在方式0。下面以8255的b口输出端pb0为例说明控制的工作原理。若pb0输出0,经反相器74ls04后变为高电平,发光二极管正向导通发光。在光线的驱动下,光敏三极管导通,+5v

10、的电压经三极管引入地线而不驱动达林顿管。因而,达林顿管截止,x轴上步进电机的c相不通电。若pb0输出1,反相后变为低电平,发光二极管不导通。从而光敏三极管截止,+5v 电压直接驱动达林顿管导通,x轴上步进电机的c相有从电源流向地线的电流回路,即c相得电。4.4元件清单表1 元件清单表名称位号型号数量单片机80511地址锁存器74ls3731并行接口芯片8255a1反相器74ls046电阻r1r241k24光电三极管u1u34n253达林顿管q1q6npn dar6二极管d1d6in400164.5、键盘显示硬件设计4.5.1键盘输入电路图7 键盘输入电路4.5.2 动态显示电路 图8 动态显示

11、电路4.5.3 所用元器件图9 所用器件五 软件系统设计5.1 软件设计原理5.1.1逐点比较法圆弧插补原理(1)加工一个圆弧,很容易令人想到用加工点到圆心的距离与该圆弧的名义半径相比较来反映加工偏差。设要加工图3-1所示的第一象限逆时针走向的圆弧ab,半径为r,以圆点为圆心,起点坐标为a(,),在xy坐标平面第一象限中,点的加工偏差 有以下3种情况。 图10 圆弧插补若加工点正好落在圆弧上,则下式成立,即若加工点落在圆弧外侧,则,即若加工点落在圆弧内侧,则,即将上面各式分别改写为下列形式,即 (在圆弧上) (在圆弧外侧) (在圆弧外侧)取加工偏差判别式为若点在圆弧外侧或圆弧上,则满足的条件时

12、,向轴发出一负向运动的进给脉冲;若点在圆弧内测,即满足条件的条件时,则向轴发出一正向运动的进给脉冲。为了简化偏差判别式的运算,仍用递推法来推算下一步新的加工偏差。设加工点在圆弧外侧或圆弧上,则加工偏差为故轴必须向负方向进给一步,移动到新的加工点,其加工偏差为 (5-1)设加工点在圆弧的内测,则。那么y轴须向正向进给一步,移到新的加工点,其加工偏差为(5-2)根据式(3-)及式(3-)可以看出,新的加工点的偏差值可以用前一点的偏差值递推出来。递推法把圆弧偏差运算式由平方运算化为加法和乘2运算,而对二进制来说,乘2运算是容易实现的。(2)圆弧插补的象限处理表2 xy平面内逆圆插补的进给方向与偏差计

13、算线型偏差偏差计算进给方向与坐标nr1ff+2x+1xx+1nr1nr2ff-2x+1xx-1nr2nr3ff+2y+1yy+1nr3nr4ff-2y+1yyx-15.1.2 步进电机工作原理步进电机有三相、四相、五相、六相等多种,本设计采用三相步进电机的三相六拍工作方式,其通电顺序为:各相通电的电压波形如图8所示。图11 三相六拍工作的电压波形当步进电机的相数和控制方式确定之后,pb0pb2和pc0pc2输出数据变化的规律就确定了,这种输出数据变化规律可用输出字来描述。为了便于寻找,输出字以表的形式存放在计算机指定的存储区域。表3、4给出了三相六拍正反转控制方式的输出字表。表3 三相六拍控制

14、方式正转输出字表控制位工作状态控制字表c相b相a相1001a01h2011ab03h3010b02h4110bc06h5100c04h6101ca05h表4 三相六拍控制方式反转输出字表控制位工作状态控制字表c相b相a相1001a01h2011ca05h3010c04h4110bc06h5100b02h6101ab03h5.2 8255的初始化编程由前面的分析知道,8255工作在方式0,控制口地址为 7fffh,控制字为90h。所以,8255的初始化编程如下。mov dptr, #7fffh ;控制口地址送dptrmov a, #90h ;pa口输入,pb、pc口输出,方式0movx dptr

15、, a ;将控制字写入控制口5.3 步进电机走步控制程序 图12 目标曲线分段为了实现如图所示曲线,我们将坐标原点移到d点,其余坐标进行变换,图示d点为(0,0),a点为(0,-4),b点为(4,0),c点为(0,4),划分为两段圆弧,nr1即bc段,nr4即ab段。5.3.1 nr1程序流程图 开始初始化x0x,y0y,0f,nef=0 n y-x方向走一步+y方向走一步f=f-2x+1f=f+2y+1x=x-1y=y+1e=e-1e=0? n y结束 图13 nr1步进电机走步控制程序流程图5.3.2 走步控制汇编程序代码以下为第一象限x轴上步进电机为例,y轴上步进电机算法类似xcotro

16、l: mov dptr, #adxp /(#adxn) ;将控制字表地址赋给dpth mov a, r2 ;表首偏移量送a movc a, a+dptr ;读取当前步进电机的控制字 mov dptr, #7ffdh ;pb口地址送dptr movx dptr, a ;将步进电机的控制字传送到pb口 cjne a, #05h/(03h), loop3 ;若未到表尾,转loop3 mov r2, #00h ;表首偏移量清零 sjmp delay1loop3: inc r2 ;未到表尾,表首偏移量加1 delay1: mov r0, #ffh ;延时 djnz delay1ret ;返回adxp:

17、db 01h db 03h db 02h db 06h db 04h db 05hadxn: db 01h db 05h db 04h db 06h db 02h db 03h5.3.3 nr4程序流程图 开始初始化x0x,|y0|y,0f,nef=0 n y+y方向走一步+x方向走一步f=f-2y+1f=f+2x+1y=y-1x=x+1e=e-1e=0? n y结束 图14 nr4步进电机走步控制程序流程图值得关注的是第四象限的插补,y要带入y0的绝对值,且n=(xe-x)+(y-ye)其控制算法实现同第一象限类似。5.4 键盘显示程序设计5.4.1、键盘与i/o接口 表5键盘接口0123p

18、10输入4567p1189abp12cdefp13p14p15p16p17输出5.4.2、键盘显示程序流程图 图15 键盘显示5.4.3 六个功能键: 表6 功能键与顺序码、特征码对应表设置set清零clr确认开始start暂停停止abcdef0bbh7bh0e7h0d7h0b7h77h5.5主程序第一、要实现两个象限插补,首先调用nr4子程,然后调用nr1子程。第二、要考虑与键盘显示电路相结合,将走步次数输出显示。开始5.5.1 主程序流程图调用键盘扫描子程判断键盘是否设置完毕 n 调用显示子程调用nr4子程 y调用显示子程调用nr1子程结束图16 主程序流程图5.4.2 源程序代码首先分配

19、各变量的地址,高位存高地址,低位存进低地址。源程序代码见附录二。 表7变量地址分配变量xyxeyefe高位地址51h4fh4dh4bh49h53h低位地址52h50h4eh4ch4ah54h六 系统调试6.1 系统安装调试 按照硬件接线图将系统安装好后,装入程序,执行后查看步进电机的走步轨迹。6.2 结果验证(1)nr4插补:终点坐标(xe,ye)为(4,0),起点坐标(0,0)为(0,-4)插补计算过程如表3所示。表8 nr4插补计算过程步数偏差判别坐标进给偏差计算坐标修正终点判别起点f0=0x=0,y=4e=81f0=0+yf1=0-2*4+1=-7x=0,y=3e=72f10+xf2=-

20、7+0+1=-6x=1,y=3e=63f20+xf3=-6+2*1+1=-3x=2,y=3e=54f30+yf5=2-2*3+1=-3x=3,y=2e=36f50+yf7=4-2*2+1=1x=4,y=1e=18f7=0+yf8=1-2*1+1=0x=4,y=0e=0(2)nr1插补:终点坐标(xe,ye)为(0,4),起点坐标(0,0)为(4,0)插补计算过程如表4所示。表9 nr1插补计算过程步数偏差判别坐标进给偏差计算坐标修正终点判别起点f0=0x=4,y=0e=81f0=0-xf1=0-2*4+1=-7x=3,y=0e=72f10+yf2=-7+0+1=-6x=3,y=1e=63f20

21、+yf3=-6+2*1+1=-3x=3,y=2e=54f30-xf5=2-2*3+1=-3x=2,y=3e=36f50-xf7=4-2*2+1=1x=1,y=4e=18f70-xf8=1-2*1+1=0x=0,y=4e=0 根据上表,可作出步进电机的走步轨迹如图11所示。系统走步轨迹与下图比较,可判断出设计的正确性。图17 步进电机走步轨迹七 课程设计总结通过一个多星期的课程设计,我对这门课有了进一步的了解。学习过程中在老师的耐心指导下,有意识的培养和建立了我的思维能力,使我真正建立数据及信息流的概念,以便在控制应用中,能够使软件和硬件有机地结合。通过单片机对步进电机的控制系统设计,让我真正的

22、掌握了微型计算机软件和硬件相结合的设计方法。工业控制是计算机的一个重要应用领域,计算机控制正是为了适应这一领域的需要而发展起来的一门专门技术,它主要研究如何将计算机技术和自动控制理论应用于工业生产过程,并设计出所需要的计算机控制系统。而当代,随着微型计算机的高度发展。它的应用在人们的工作和日常生活中越来越普遍了。工业过程控制是计算机的一个重要应用领域。现在可以好不夸张的说,没有微型计算机的仪器不能乘为先进的仪器,没有微型计算机的控制系统不能称其为现代控制系统的时代已经到来。微型计算控制技术正为了适应这一领域的需要而发展起来的一门技术。绝大多数自动控制都是使用计算机来实现的;微型计算机控制技术的

23、发展,使得以微型计算机为控制器核心的微机测控装置与系统,渗透到了国民经济的各行各业,已经无时无处不在影响每个现代人的生活。只有态度认真的对待这门学科才能真正掌握其中的精髓,在将来的工作中或许起着至关重要的作用。八、参考文献1贺亚茹.汇编语言程序设计.北京:科学出版社,20052卜艳萍、周伟.汇编语言程序设计教程.北京:清华大学出版社,20043温玉杰.intel汇编语言程序设计(第四版).北京:电子工业出版社,20044郑学坚、周斌.微型计算机原理与应用.北京:清华大学出版社,20005于海生.微型计算机控制技术.北京:清华大学出版社,19986沈美明、温冬婵.ibm-pc汇编语言程序设计.北

24、京:清华大学出版社,2002 7何立民.单片机应用系统设计.北京:北京航空航天大学出版社,2003附录一 芯片资料图18 8051单片机引脚图 图19 可编程芯片8255a引脚图附录二 源程序org 0100hmain:mov dptr, #7fffh ;控制口地址送dptrmov a, #90h ;方式0,pa输入,pb、pc口输出movx dptr, a ;将控制字写入控制口,初始化8255n:acall inputmaincjne a,0d7h,nacall nr4acall nr1endnr1:mov 4eh, ? ;xe的低8位存入4ehmov 4dh, ? ;xe的高8位存入4dh

25、mov 4ch, ? ;ye的低8位存入4chmov 4bh, ? ;ye的高8位存入4bhmov 52h,? ;x的低8位存入52hmov 51h,? ;x的高8位存入51hmov 50h,? ;y的低8位存入50hmov 4fh,? ;y的高8位存入4fhmov 4ah,#00h ;f的低8位清零mov 49h,#00h ;f的高8位清零clr r2 ;表adxn偏移量清零clr r3 ;表adyp偏移量清零mov r6,#02h ;在计算f=f+2*y+1时使用clr c ;计算总步数emov a,52h subb a,4eh ;a=(x-xe)低位mov 54h,a ;(54h)=(x

26、-xe)低位mov a,51hsubb a,4dh ;b=(x-xe)高位mov 53h,aclr cmov 20h,cadd a,54hmov 54h,amov 21h,cmov a,4bhmov c,20hsubb a,4fhmov c,21haddc a,53hmov 53h,arp2: mov a, 49h ;取偏差的高8位 jb acc.7, rp6 ;若fm0,转到rp6 acall xmn ;否则,调xmn acall fmm1 ;计算新偏差:f-2*x+1 acall decx ;x=x-1rp4:clr c mov a,54h subb a,#01h mov 54h,a mo

27、v a,53h subb a,#00h mov 53h,a orl a,54h jnz rp2org 8000hendrp6:acall ymp acall fmm2 acall addy ajmp rp4xmn : mov dptr, #adxn ;将控制字表地址赋给dpth mov a, r2 ;表首偏移量送a movc a, a+dptr ;读取当前步进电机的控制字 mov dptr, #7ffdh ;pb口地址送dptr movx dptr, a ;将步进电机的控制字传送到pb口 cjne a, #03h, loop3 ;若未到表尾,转loop3 mov r2, #00h ;表首偏移量

28、清零 sjmp delay1 loop3: inc r2 ;未到表尾,表首偏移量加1delay1: mov r0, #ffh ;延时 djnz delay1ret ;返回ymp: mov dptr, #adyp ;将控制字表地址赋给dpth mov a, r3 ;ady表首偏移量送a movc a, a+dptr ;读取当前步进电机的控制字 mov dptr, #7ffeh ;pc口地址送dptr movx dptr, a ;将步进电机的控制字传送到pc口 cjne a, #05h, loop4 ;若未到表尾,转loop4 mov r3, #00h ;表首偏移量清零 sjmp delay2 l

29、oop4: inc r3 ;未到表尾,表首偏移量加1 delay2: mov r0, #ffh ;延时 djnz delay2 retadxn: db 01h ;-x方向走一步步进电机控制字表 db 05h db 04h db 06h db 02h db 03hadyp: db 01h ;+y方向走一步步进电机控制字表 db 03h db 02h db 06h db 04h db 05hfmm1:f=f-2*x+1clr cmov a,4ahsubb a,52hxch a,bmov a,49hsubb a,51hxch a,bclr csubb a,52hxch a,bsubb a,51hxc

30、h a,badd a,#01hmov 4ah,axch a,baddc a,#00hmov 49h,aretdecx: x=x-1clr cmov a,52hsubb a,#01hmov 52h,amov a,51hsubb a,#00hmov 51h,aretfmm2:f=f+2y+1 mov a,4ah add a,50hmov 4ah,amov a,49haddc a,4fhmov 49h,adjnz r6,fmm2mov a,4ahadd a,#01hmov 4ah,amov a,49haddc a,#00hmov 49h,aretaddy:mov a,50h add a,#01h m

31、ov 50h,a mov a,4fh addc a,#00h mov 4fh,a retnr4::mov 4eh, ? ;xe的低8位存入4ehmov 4dh, ? ;xe的高8位存入4dhmov 4ch, ? ;ye的低8位存入4chmov 4bh, ? ;ye的高8位存入4bhmov 52h,? ;x的低8位存入52hmov 51h,? ;x的高8位存入51hmov 50h,? ;y的低8位存入50hmov 4fh,? ;y的高8位存入4fhmov 4ah,#00h ;f的低8位清零mov 49h,#00h ;f的高8位清零clr r3 ;表adyp偏移量清零clr r4 ;表adxp偏移

32、量清零mov r6,#02h ;在计算f=f+2*x+1时使用clr c ;计算总步数emov a,4eh subb a,52h ;a=(xe-x)低位mov 54h,a ;(54h)=(xe-x)低位mov a,4dhsubb a,51h ;b=(x-xe)高位mov 53h,a ;(53h)=(xe-x)高位clr cmov a,50h subb a,4ch ;(a)=(y-ye)低位mov 20h,c ;暂存借位位add a,54h ;d=a+cmov 54h,a ;保存e的低位mov 21h,c ;暂存d=a+c,产生的进位位mov a,4fh ;计算y-ye的高位mov c,20h

33、;恢复借位位subb a,4bh ;(a)=(4bh)-(4fh)即(ye-y)高位mov c,21h ;恢复低位相加进位位addc a,53h ;计算(x-xe)高位+(y-ye)高位mov 53h,a ;保存e的高位rp1: mov a, 49h ;取偏差的高8位 jb acc.7, rp5 ;若fm0,转到rp5 acall ymp ;否则,调ymp acall fmm3 ;计算新偏差:f-2*y+1 acall decy ;y=y-1rp3:clr c ;e=e-1 mov a,54h subb a,#01h mov 54h,a mov a,53h subb a,#00h mov 53

34、h,a orl a,54h jnz rp1org 8000hendrp5:acall xmp ;+x方向走一步 acall fmm4 ;f=f+2*x+1 acall addx ;x=x+1 ajmp rp3ymp: mov dptr, #adyp ;将控制字表地址赋给dpth mov a, r3 ;ady表首偏移量送a movc a, a+dptr ;读取当前步进电机的控制字 mov dptr, #7ffeh ;pc口地址送dptr movx dptr, a ;将步进电机的控制字传送到pc口 cjne a, #05h, loop4 ;若未到表尾,转loop4 mov r3, #00h ;表首

35、偏移量清零 sjmp delay2 loop4: inc r3 ;未到表尾,表首偏移量加1 delay2: mov r0, #ffh ;延时 djnz delay2 retxmp : mov dptr, #adxp ;将控制字表地址赋给dpth mov a, r4 ;表首偏移量送a movc a, a+dptr ;读取当前步进电机的控制字 mov dptr, #7ffdh ;pb口地址送dptr movx dptr, a ;将步进电机的控制字传送到pb口 cjne a, #05h, loop5 ;若未到表尾,转loop5 mov r4, #00h ;表首偏移量清零 sjmp delay3 lo

36、op5: inc r2 ;未到表尾,表首偏移量加1delay3: mov r0, #ffh ;延时 djnz r0, delay3ret ;返回adxp: db 01h ;-x方向走一步步进电机控制字表 db 03h db 02h db 06h db 04h db 05hadyp: db 01h ;+y方向走一步步进电机控制字表 db 03h db 02h db 06h db 04h db 05hfmm3:f=f-2*y+1clr cmov a,4ahsubb a,50hxch a,bmov a,49hsubb a,4fhxch a,bclr csubb a,50hxch a,bsubb a,

37、4fhxch a,badd a,#01hmov 4ah,axch a,baddc a,#00hmov 49h,aretdecy: y=y-1clr cmov a,50hsubb a,#01hmov 50h,amov a,4fhsubb a,#00hmov 4fh,aretfmm4:f=f+2x+1 mov a,4ah add a,52hmov 4ah,amov a,49haddc a,51hmov 49h,adjnz r7,fmm4mov a,4ahadd a,#01hmov 4ah,amov a,49haddc a,#00hmov 49h,aretaddx:mov a,52h add a,#

38、01h mov 52h,a mov a,51h addc a,#00h mov 51h,aretinputmain:mov r1,9fh 输入x、y的初值暂存于9fh开始的四个单元main1:mov dptr,#tab;lcall key; 调用键盘扫描程序movc a,a+dptr;查表后将值送入累加器mov p0,a 送p0口显示mov r0,a; 将键盘的数输入x、y对应的单元inc r0cjne a,0d7h, main1retkey: lcall ks; 检测按键子程序 jnz k1; 有键按下继续 ajmp key; 若无按键按下,返回继续检测k1: lcall delay2 lc

39、all delay2;有键按下继续延时去抖动 lcall ks;再一次调用检测按键程序 jnz k2;确认有按下,进行下一步 ajmp key;无按键按下,继续返回检测k2: mov r2,#0efh;将扫描值送入 r2暂存 mov r4,#00h;r4用于存放列值,并将00h暂存k3: mov p1,r2;l6: jb p10,l1;p10等于1跳转到l1 mov a,#00h;将第一行的行值00h送入acc ajmp lk;跳转到键值处理程序l1: jb p11,l2;p1.1等于1跳转到l2 mov a,#04h;将第二行的行值送入acc ajmp lk;跳转到键值处理程序进行键值处理l2: jb p12,l3;p1.2等于1跳转到l3 mov a,#08h;将第三行的行值送入acc ajmp lk;

温馨提示

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

评论

0/150

提交评论