《基于51单片机的步进电机控制系统单片机课程设计报告(22页).doc》由会员分享,可在线阅读,更多相关《基于51单片机的步进电机控制系统单片机课程设计报告(22页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于51单片机的步进电机控制系统单片机课程设计报告-第 20 页微机原理与接口技术课程设计报告基于51单片机的步进电机控制系统毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存
2、、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期:
3、 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正
4、文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课
5、题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?
6、 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(
7、包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩
8、过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日摘要步进电机是将电脉冲信号变换成
9、角位移或直线位移的执行部件。步进电机可以直接用数字信号驱动,使用非常方便。步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态。因此非常适合于单片机控制。它的运行速度和步距不受电源电压波动及负载的影响, 因而被广泛应用于数模转换、速度控制和位置控制系统。本课程设计以STC89C52单片机作为微控制器,使用混合式步进电机驱动芯片ULN2003AN进行驱动,实现了对步进电机运行状态的简单控制,并将其运行状态用LC
10、D1602液晶显示。本次设计能实现的功能有电机运行、停止,设置运行圈数,调节转速,电机正反转,点动等。关键词:STC89C52单片机,28BYJ-48步进电机,ULN2003AN驱动芯片,LCD1602显示,电机控制,点动第一章 总体设计方案本次课程设计本课程设计以STC89C52单片机作为微控制器,使用混合式步进电机驱动芯片ULN2003AN进行驱动,实现了对步进电机运行状态的简单控制,并将其运行状态用LCD1602液晶显示。本次设计能实现的功能有电机运行、停止,设置运行圈数,调节转速,电机正反转,点动等。系统流程图如下:第二章 硬件原理一、 STC89c52单片机2.1、STC89c52芯
11、片简介STC89C52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及STC89C52引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。STC89C52具有如下特点:40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/
12、O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。2.2、STC89c52芯片引脚功能说明STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指
13、令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流()。P2端口(P2.0P2.7,2128引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输
14、入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流()。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。P3端口(P3.0P3.7,1017引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上
15、拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流()。在对Flash ROM编程或程序校验时,P3还接收一些控制信号。,如下表所示:引脚号复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3 (外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个
16、晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚()也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位
17、(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。注意加密方式1时,将内部锁定位RESET。为了执行内部程序指令,应该接VCC。在Flash编程期间,也接收12伏VPP电压。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放
18、大器的输入端。二、 28BYJ-48步进电机2.2.1步进电机的工作原理步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。本次设计是采用步进电机28BYJ48型四相八拍电机,电压为DC5VDC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角
19、)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)其相序分配表如下:2.2.2 步进电机24BYJ48的相关电气参数1.额定电压:12VDC(另有电压:5V、6V、24V)2.相数:43.减速比:1/64(另有减速比:1/16、1/32)4.步距角:5.625/645.驱动方式:4相8拍6.直流电阻:2007%(25)(按客户要求而定:80、130欧姆)7.空载牵入频率:600
20、Hz8.空载牵出频率:1000Hz9.牵入转矩:34.3mN.m(120Hz)10.自定位转矩:34.3mN.m11.绝缘电阻:10M(500V)12.绝缘介电强度:600VAC/1mA/1S13.绝缘等级:A14.温升:50K(120Hz)15.噪音:40dB(120Hz)16.重量:大约40g17.未注公差按:GB1804-m18.转向:CCW2.2.3 步进电机的基本术语2.2.3.1 相数产生不同对极N、S磁场的激磁线圈对数,常用m表示。2.2.3.2 拍数完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,比如说本次设计中使用的24BYJ48有单(单
21、相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)2.2.3.3 步距角对应一个脉冲信号,电机转子转过的角位移用表示。=360度(转子齿数J*运行拍数),以常规二相,转子齿为50齿电机为例。四拍运行时步距角为=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为=360度/(50*8)=0.9度(俗称半步)。2.2.3.4 信号分配四相步进电机按照其通电方式的不同,可以分为单四拍,双四拍和双八拍三种工作方式。单四拍与双四拍的步距角相等,均为11.25度,而八拍的步距角则是单四拍与
22、双四拍的一半,5.625度。单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍 (A-AB-B-BC-C-CD-D-DA-A。)。这里选取的是双相八拍的工作方式。三、 ULN2003达林顿陈列芯片步进电机的驱动采用ULN2003芯片。ULN2003 是高耐压、大电流达林顿陈列, 由七个硅 NPN 达林顿管组成。 ULN2003 的每一对达林顿都串联一个 2.7K 的基极电阻 , 在 5V 的工作电压下它能与 TTL 和 CMOS 电路直接相连, 可以直接处理原先需要标准逻辑缓冲器来处理的数据。 ULN2003 工作电压高, 工作电流
23、大, 灌电流可达 500mA , 并且能够在关态时承受 50V 的电压, 输出还可以在高负载电流并行运行。 其引脚及内部原理图如下:本设计中实验1、2、3、4脚做输入端,16、15、14、13做相对应的输出端,起到放大的作用,以驱动电机。四、 LCD1602液晶1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。其各引脚
24、功能见下图:其典型接口电路如下图:其基本操作时序为:读状态 输入:RS=L,RW=H,E=H 输出:DB0DB7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据 写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无第三章 电路设计一、单片机最小系统与LCD1602接口电路本电路模块包括单片机最小系统,即51单片机、时钟电路、复位电路、上电开关等,和1602液晶接口电路。模块电路原理图如下:各子模块电路如下:(1) 时钟产生电路用于产生单片机的控制时钟,实际使用
25、时采用11.0592M晶振。(2) 复位电路用于单片机手动复位。(3) 1602液晶接口电路用于连接1602液晶,P2.0P2.2分别接RS、RW、EN,P0口接数据指令输入口。二、步进电机驱动及接口电路本电路模块用于单片机对步进电机的控制及使用ULN2003芯片对步进电机进行驱动。原理图如下:由于所选24BYJ48步进电机为四相步进电机,故只需4个单片机IO口控制,此处使用单片机的IO口P1.0-P1.3,使用ULN2003的引脚1-4做输入,16-13引脚做输出口。三、按键电路本次设计为了便于今后功能扩展使用了8个按键。原理图如下:第四章 程序设计进入主程序后首先进行LCD初始化和定时器中
26、断初始化,之后进行依次对按键进行扫描,当检测到相应的按键按下时,即执行相应的功能。系统流程图如下:第五章 系统调试经过对程序的反复修改,调试之后,系统可以实现电机运行、停止,设置运行圈数,调节转速,电机正反转,点动等功能,同时液晶显示相应的状态。第六章 心得体会为其近一个月的单片机课程设计结束了,在这一个月中我收获了很多,感到很有意义。早在大二自学单片机时我就注意到步进电机这种器件,但当时只是略作了解,没有学习它的原理与编程控制,这次借课程设计的机会,我得以对步进电机进行了较为深入的了解和学习。在课设的前期我通过查阅了许多资料,学习了步进电机的工作原理。之后我开始考虑整体硬件电路的设计,显示、
27、驱动电路的设计,最终选择使用28BYJ48型步进电机、ULN2003驱动芯片、1602液晶显示。在这之后我开始考虑要实现的电机功能,最后决定实现电机运行、停止,设置运行圈数,调节转速,电机正反转,点动等功能。在完成了原理图与PCB图绘制、电路元件焊接后,我开始着手进行程序设计。通过查阅资料我了解到控制步进电机的关键是利用定时器中断控制脉冲的快慢、顺序来调节电机转速、正反转等状态。以此为基础我开始了程序设计与调试,在这个过程中我遇到过一些困难,最后通过深入的学习、不断修改程序和同学的帮助终于得到解决。最终,本次课程设计完成了预想的对步进电机的几项基本控制功能。步进电机调速系统适用各种现场自动化控
28、制,特别应用于小功率负载的控制;具有成本底,性能稳定,可靠性高等优点。我觉得通过这次课程设计我对步进电机的基本控制得到了掌握,这对今后我在学习、工作的诸多应用场合中很可能会有用武之地。另外,在这次课设过程中涉及的LCD1602控制等内容也对我很有帮助。通过本次课设我对51单片机的编程控制、定时器中断等知识也得到了充分的复习巩固。总之,这次课设让我受益匪浅,感谢邱应强老师一学期来单片机课程的悉心教导,这些是我完成本次课设的基础和关键。附件一、 电路原理图二、 电路PCB图三、 电路实物图四、 源程序#include #include /内部包含延时函数 _nop_();#define uchar
29、 unsigned char#define uint unsigned int#define delayNOP(); _nop_();_nop_();_nop_();_nop_();uchar code FFW8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9;/正转相序编码uchar code REV8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1;sbit K1 = P30; /运行与停止sbit K2 = P31; /设圈数sbit K3 = P32; /方向转换sbit K4 = P33; /转速加sbit K5 = P
30、34; /点动sbit K6 = P35;sbit K7 = P36;sbit K8 = P37;sbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EN = P22;bit on_off=0,on_off1=0; /运行与停止标志bit direction=1; /方向标志bit rate_dr=1; /速率标志bit snum_dr=1; /圈数标志uchar code cdis1 = STEPPING MOTOR ;uchar code cdis2 = CONTROL PROCESS;uchar code cdis3 = STOP ;uchar c
31、ode cdis4 = NUM: RATE: ;uchar code cdis5 = RUNNING ;uchar code cdis6 = DIAN DONG ;uchar m,v=0,q=0,q1;uint number=0,number1=0; uchar snum=10,snum1=10,number2=0; /预设定圈数uchar rate=2,rate_ctr; /预设定速率uchar data_temp,data_temP1,data_temp2; /* 延时t毫秒 /* 11.0592MHz时钟,延时约1ms void delay(uint t)/tms uchar k; wh
32、ile(t-) for(k=0; k125; k+)void delayB(uchar x) /x*0.14MS uchar i; while(x-) for (i=0; i13; i+)/*检查LCD忙状态 /*lcd_busy为1时,忙,等待。为0时,闲,可写指令与数据。 bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*写指令数据到LCD /*RS=L,RW=L,E=高脉冲,D0-
33、D7=指令码。 void lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*写显示数据到LCD /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 void lcd_wdat(uchar dat) while(lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP
34、(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /* LCD初始化设定 void lcd_init() delay(30); lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据 delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x0c); /显示开,关光标 delay(5); lcd_wcmd(0x06); /写入新数据后光标右移 delay(5); lcd_wcmd(0x01); /清除LCD的显示内容 delay(5);/* 设定显示位置 void
35、 lcd_pos(uchar pos) lcd_wcmd(pos | 0x80); /数据指针=80+地址变量/* LCD1602初始显示子程序 void LCD_init_DIS() delay(10); /延时 lcd_init(); /初始化LCD lcd_pos(0); /设置显示位置为第一行的第1个字符 m = 0; while(cdis1m != 0) /显示字符 lcd_wdat(cdis1m); m+; lcd_pos(0x40); /设置显示位置为第二行第1个字符 m = 0; while(cdis2m != 0) lcd_wdat(cdis2m); /显示字符 m+; de
36、lay(3000); /延时 lcd_pos(0); /设置显示位置为第一行的第1个字符 m = 0; while(cdis3m != 0) /显示字符 lcd_wdat(cdis3m); m+; lcd_pos(0x40); /设置显示位置为第二行第1个字符 m = 0; while(cdis4m != 0) lcd_wdat(cdis4m); /显示字符 m+; for(m=0;m2;m+) lcd_pos(0x0c+m); /显示方向符号 lcd_wdat(0x3e);/*数据转换子程序void data_conv() data_temP1=data_temp/10; /高位 if(da
37、ta_temP1=0) data_temP1=0x20; /高位为0不显示 else data_temP1=data_temP1+0x30; data_temp2=data_temp%10; /低位 data_temp2=data_temp2+0x30;/*数据显示子程序void data_dis() data_temp = snum; /显示圈数 data_conv(); lcd_pos(0x44); lcd_wdat(data_temP1); lcd_pos(0x45); lcd_wdat(data_temp2); data_temp = rate; /显示速率 data_conv();
38、lcd_pos(0x4d); lcd_wdat(data_temP1); lcd_pos(0x4e); lcd_wdat(data_temp2);/* 显示运行方向符号void motor_DR() if(direction=1) /正转方向标志 for(m=0;m2;m+) lcd_pos(0x0c+m); /显示方向符号 lcd_wdat(0x3e); else for(m=0;m2;m+) /反转方向标志 lcd_pos(0x0c+m); /显示方向符号 lcd_wdat(0x3c);/* 显示运行状态void motor_RUN() if(on_off=1) TR0=1; lcd_pos(0); /设置显示位置为第一行的第1个字符 m = 0; while(cd