1、毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子
2、版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交
3、论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日摘 要绕线机是用来绕制线圈的专用设备,而计数器则起到了计数作用。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。绕线机计数器的核心控制是单片机。单片机技术作为一个非常有前途的计算机技术,其应用非常广泛,已深入到我们日常生活中的方方面面。目前,单片机正在向稳定可靠、小而廉价的方向发展。本设计选用AT89C
4、51单片机来制作,它是一个40脚的8位单片机,片内含4KB的可编程存储器,有4个8位并行输入/输出口,可用于多个按键信号的输入及控制信号、数字显示信号、声音信号的输出。有两个外中断输入端及两个定时器/计数器,为软件设计与电路设计相配合提供了方便。绕线机计数器的控制电路除了单片机电路外还有5V稳压电源电路、光电开关、4011与非门、按键输入电路、数码管显示电路和电动机电路。关键词:绕线机计数器;单片机;数码管显示;按键输入;AbstractWinding the coil winding machine is used special equipment, and the counter is
5、counting played a role. Counter can be used to display the working status of products in general is mainly used to indicate how many products have completed the page with the work of folding.Winding machine control is the core of counter microcontroller. Microcomputer technology as a promising compu
6、ter technology, its application is very extensive, has been deep into every aspect of our daily life. Currently, SCM is the reliable, small and cheap direction. AT89C51 microcontroller used in this design to production, it is a 40-foot 8-bit microcontroller with a programmable memory containing 4KB,
7、 there are four 8-bit parallel input / output, multiple keys can be used to input signals and control signals digital display signals, sound signals output. There are two interrupt inputs and the two outer timer / counter, for the design and circuit design software provides a convenient match.Windin
8、g machine counter control circuit in addition to microcontroller circuit external 5V regulated power supply circuit also, photoelectric switches, 4011 and non-gate, key input circuit, digital control circuit and motor circuit.Keywords:Winding machine counter; SCM; digital display; key input;目 录1 绪论1
9、1.1 课题的目的与意义11.2 采取的研究方法、技术路线、实验方案及可行性分析11.3 课题的发展现状和前景展望11.4 特色或创新之处12 硬件部分设计22.1 系统框图22.2 电源电路22.2.1 整流电路22.2.2 稳压电路32.2.3 滤波电路32.3 传感器驱动电路42.3.1光电开关42.3.2 CD4011与非门52.4 主控制电路62.4.1 AT89C51单片机72.4.2 振荡电路92.4.3复位电路92.5 编码式键盘电路102.6 数码管显示电路112.6.1数码管介绍112.6.2 七段LED数码管发光原理112.6.3 数码显示电路原理112.7 直流电动机驱
10、动电路122.7.1 电机工作原理123 软件部分设计143.1 主程序框图143.2 加1子程序框图213.3 加1子程序源码分析213.4 减1子程序框图223.5 减1子程序源码分析223.6 显示子程序234 总结25致 谢26参考文献27附 录28绕线机计数器设计1 绪论1.1 课题的目的与意义本课题是绕线机计数器的设计,根据计数器的原理,用AT89C51单片机把硬件电路和软件编程进行设计。目前,单片机正朝着高性能和多品种方向发展,发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。单片机应用的重要意义在于它从根本上改变了传统的控制
11、系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。绕线机计数器电路由单片机作为控制器,加上各种控制电路、显示电路和电机驱动器电路,控制程序用汇编语言编写。该设计方案能使学生把所学到的电子技术结合起来,为走上工程技术道路提供很好的练兵机会。1.2 采取的研究方法、技术路线、实验方案及可行性分析先理解电路图及工作原理,再复习单片机MCS-51系列的硬件构成及命令系统,拟采取硬件电路和软件编程联合研究的方法,根据实际的工作原理及参考电路图改用AT89C51单片机来重新设计硬
12、件电路;再利用网上以及书本上的控制过程来设计出主程序流程图及各子程序流程图,然后用汇编语言编制单片机AT89C51的控制软件。要求控制软件能使硬件电路正常运行,达到已有产品同样的可编程定时器的各种功能。1.3 课题的发展现状和前景展望先研究现成的微电脑控制的绕线机计数器的电路图及工作原理说明,再复习单片机MCS-51系列的硬件构成及命令系统,根据绕线机计数器的工作原理及已有电路图,选择AT89C51单片机做控制电路。设计出主程序流程图及各子程序流程图,然后用汇编语言编制单片机的控制软件。要求软件能使硬件电路正常运行,达到绕线机计数器的自动计数功能。1.4 特色或创新之处使用我们比较熟悉51系列
13、单片机,而AT89C51单片机与MCS-51单片机的51子系列完全兼容。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。因此在设计中选择AT89C51作为控制单片机,结合适当的外围电路,设计绘制电原路图,再绘制出主程序流程图及各子程序流程图,然后用汇编语言编制控制软件。2 硬件部分设计2.1 系统框图该计数器是以AT89C51单片机为核心的应用系统。整个系统包括几个部分:AT89C51单片机、驱动电路、传感器、数码管显示器、按键电路。驱动电路电机键盘图2-1 系统框图2.2 电源电路稳压电源电路作用是为整个系统提供稳定的工作电源。稳压电源一般由变压器、整流器和稳压器三大
14、部分组成。变压器把市电交流电压变为所需要的低压交流电。整流器把交流电变为直流电。经滤波后,稳压器再把不稳定的直流电压变为稳定的直流电压输出。电源工作原理:220V交流电经变压器T1、桥式整流电路D1和电解电容C1滤波后,再经由5V稳压集成电路U1稳压后得到+5V直流电压作为单片机及其它电路的电源VCC。如图2-4所示。图2-2 稳压电路原理图2.2.1 整流电路桥式整流电路是使用最多的一种整流电路。这种电路,只要增加两只二极管口连接成“桥”式结构,便具有全波整流电路的优点,而同时在一定程度上克服了它的缺点。图2-3 整流电路引脚图2.2.2 稳压电路7805是常用的稳压芯片, 它的使用方便,用
15、很简单的电路即可以输入一个直流稳压电源,他的输出电压恰好为5V,刚好是51系列单片机运行所需的电压。图2-4 7805芯片引脚图其中1接整流器输出的电压,2为公共地(也就是负极),3就是我们需要的+5V输出电压了。2.2.3 滤波电路整流电路的输出电压虽然是单一方向的,但是脉动较大,含有较大的谐波成分,不能适应大多数电子线路及设备的需求。因此,一般在整流后,还需要利用滤波电路将脉动的直流电压变为平滑的直流电压。电容滤波电路是最常见也是最简单的滤波电路,在整流电路的输出端(即负载电阻两端)并联一个电容即构成电容滤波电路,如图。滤波电容容量较大,因此一般采用电解电容,在接线时要注意电解电容的正、负
16、极。电容滤波电路利用电容的充、放电作用,使输出电压趋于平滑。图2-5 滤波电路2.3 传感器驱动电路传感器是能感受规定的被测量并按照一定规律转换成可用输出信号的器件或装置,通常由敏感元件和转换元件组成。其中,敏感元件是指传感器中直接感受被测量的部分,转换元件是指传感器能将敏感元件的输出转换为适于传输和测量的电信号部分。光电式传感器是将光通量转换为电量的一种传感器。光电式传感器的基础是光电转换元件的光电效应。由于光电测量方法灵活多样,可测参数众多,一般情况下具有非接触、高精度、高分辨率、高可靠性和反应快等特点。图2-6 传感器驱动电路2.3.1光电开关光电开关是传感器大家族中的成员,它把发射端和
17、接收端之间光的强弱变化转化为电流的变化以达到探测的目的。由于光电开关输出回路和输入回路是电隔离的,所以它可以在许多场合得到应用。新型光电开关体积小、功能多、寿命长、精度高、响应速度快、检测距离远以及抗光、电、磁干扰能力强。新型的光电开关已被用作物位检测、液位控制、产品计数、宽度判别、速度检测、定长剪切、孔位识别、信号延时、自动门传感、色标检出、冲床和剪切机以及安全防护等诸多领域。光电开关的特点:具有自诊断稳定工作区指示功能,可及时告知工作状态是否可靠;对射式、反射式、镜面反射式光电开关都有防止相互干扰功能,安装方便;响应速度快,高速光电开关的响应速度可达到0.1ms,每分钟可进行30万次检测操
18、作,能检出高速移动的微小物体;采用专用集成电路和先进的SMT表面安装工艺,具有很高的可靠性;体积小、重量轻,安装调试简单,并具有短路保护功能。2.3.2 CD4011与非门VDDVSS1413121110981234567图2-7 CD4011内部逻辑结构图1131211109814234567VDD4B4A4Y3Y3B3A1A1B1Y2Y2A2BVSS图2-8 CD4011引脚图CD4011功能及真值表:逻辑表达式:Y = A.BA=Y.B表2-1 真值表XYQ动作00?禁止011设定100重置11不变无 (1)当X=0、Y=0时,将使两个NAND门之输出均为1,违反触发器之功用,故禁止使用
19、。如真值表第一列。 (2)当X=0、Y=1时,由于X=1导致NAND-A的输出为“1”,使得NAND-B的两个输入均为“1”,因此NAND-B的输出为“0”,如真值表第二列。 (3)当X=1、Y=0时,由于Y=0导致NAND-B的输出为“1”,使得NAND-1的两个输入均为“1”,因此NAND-A的输出为“0”,如真值表第三列。 (4)当X=1、Y=1时,因为一个“1”不影响NAND门的输出,所以两个NAND门的输出均不改变状态,如真值表第四列。管脚功能数据输入端 1A 2A 3A 4A数据输入端 1B 2B 3B 4B电源正极 VDD接地 VSS数据输出端 1Y 2Y 3Y 4Y2.4 主控
20、制电路主控制器主要由单片机AT89C51、振荡电路和复位电路三部分组成。由于它是单片机工作的必要组成部分,所以又称为单片机最小系统。图2-9 最小应用系统2.4.1 AT89C51单片机AT89C51是一种低功耗、高性能CMOS8位微控制器,具有4K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C51提供以下标准功能
21、:4K字节Flash闪存存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器;一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式,空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。图2-10 AT89C51引脚图 VCC : 电源 GND : 地P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用
22、作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1口是一个具有内部上拉电阻的8 位双向I/O 口,P1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)
23、,具体如下表3-1所示。在flash编程和校验时,P1口接收低8位地址字节。表2-2 P1口的第二功能引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外
24、部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89C51特殊功能(第二功
25、能)使用,如下表3-2所示。在flash编程和校验时,P3口也接收一些控制信号。引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT0(外部中断0)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)表2-3 P3口的第二功能RST: 复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2.4.2 振荡电路AT89C51 单片机有一个用于构成内
26、部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器,自激振荡器与单片机内部的时钟发生器构成单片机的时钟电路。在单片机应用系统中,常选用晶体振动器作为外接振荡源,简称晶振。晶振的频率越高,则单片机系统的时钟频率越高,单片机的运行速度越快。图2-10 振荡电路2.4.3复位电路MCS-51系列单片机的复位是由外部的复位电路实现的。复位电路的目的是产生持续时间不小于2个机器周期的高电平。单片机通常采用2种形式的复位电路:上电自动复位电路和按钮开关复位电路。图为上电自动复位电路。上电自动复位电路是通过电容充电来实现的。在接通电源
27、(上电)的瞬间,RC电路充电,由于电容C两端的电压不能突变,在RESET引脚上电压接近电源电压+5V;随着充电时间的延长,充电电流减小,RESET引脚的电位也逐渐下降;当电容C两端的电压接近+5V,RESET引脚也被拉成低电平。在电容C充电过程中,只要RESET引脚能够保持10ms的高电平,就能使单片机有效地复位。图2-11 复位电路2.5 编码式键盘电路计数器面板上有9个轻触按键,按键值由单片机的P1.0-P1.7端输入,按键S1、S2、S3、S4、S5、S6、S7、S8、S12分别是“L1”按键、“L2”按键、“L3”按键、“L4”按键、“-rel-”按键、“+/r”按键、“-/p”按键和
28、“清零”按键。当无按键按下时,单片机的P1.0P1.7端读入的应是高电平;若有按键按下时,单片机P1.0P1.7的某位为低电平,并设置电路同时触发单片机的外中断输入端INT0,使控制程序转入中断服务程序,来扫描P1.0P1.7的各位是哪个按键被按下,然后转入相应的按键处理程序。图2-12 编码式键盘电路2.6 数码管显示电路2.6.1数码管介绍最常用的数码管为LED数码管,LED就是light emitting diode ,发光二极管的英文缩写。它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。它的优点:亮度高、工作电压低、
29、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路。2.6.2 七段LED数码管发光原理LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一
30、般均需在回路中接上限流电阻。图2-13 数码管原理图2.6.3 数码显示电路原理显示电路采用6位LED数码管,6个数码管的8段字符负极与单片机P1并口的8位对应相连。6位数码管有个6个正极引线。数码管8段字符是用单片机软件来译码的,由P1并口输出所需的字符数据,6个数码管的正极是快速轮流导通的。当第1位数码管的正极导通时(其它数码管的正极处于截止),P1口输出的是第1位要显示的数据;过了2MS,当第2位数码管的正极导通时(第1位和其它数码管的正极处于截止),P1口输出的是第2位要显示的数据。因此6个数码管则快速轮流显示各自的字符,由于人眼有视觉暂留特性,所以看到的就是6个数码管在固定地显示各自
31、的字符。图2-14 数码显示电路2.7 直流电动机驱动电路图2-15 电动机驱动电路2.7.1 电机工作原理三极管的两种状态:(1)截止状态:当加在三极管发射结的电压小于PN结的导通电压,基极电流为零,集电极电流和发射极电流都为零,三极管这时失去了电流放大作用,集电极和发射极之间相当于开关的断开状态,我们称三极管处于截止状态。(2)饱和导通状态:当加在三极管发射结的电压大于PN结的导通电压,并当基极电流增大到一定程度时,集电极电流不再随着基极电流的增大而增大,而是处于某一定值附近不怎么变化,这时三极管失去电流放大作用,集电极与发射极之间的电压很小,集电极和发射极之间相当于开关的导通状态。三极管
32、的这种状态我们称之为饱和导通状态。当三极管处于截止状态时,电机正常工作;当三极管处于饱和导通状态时,电机被短路,不能正常工作。3 软件部分设计3.1 主程序框图图3-1 主程序框图MAIN: MOV A,SLOW4; 判断是否到减速的数值(千位) MOV MOVD,LED4 CJNE A,MOVD,LOOP0 MOV A,SLOW3; 判断是否到减速的数值(百位) MOV MOVD,LED3 CJNE A,MOVD,LOOP0 MOV A,SLOW2; 判断是否到减速的数值(十位) MOV MOVD,LED2 CJNE A,MOVD,LOOP0 MOV A,SLOW1; 判断是否到减速的数值(
33、个位) MOV MOVD,LED1 CJNE A,MOVD,LOOP0 MOV A,LED0; 减速(使P1.7口电压下降约0.6V) MOVC A,A+DPTR; 递增减速 MOV P1,A CLR P3.5; 高位高亮显示发出提示,并断开慢起动电路 ACALL D1MS SETB P1.7LOOP0:MOV A,TOEND4; 判断是否到预置数了(千位) MOV MOVD,LED4 CJNE A,MOVD,LOOP MOV A,TOEND3; 判断是否到预置数了(百位) MOV MOVD,LED3 CJNE A,MOVD,LOOP MOV A,TOEND2; 判断是否到预置数了(十位) M
34、OV MOVD,LED2 CJNE A,MOVD,LOOP MOV A,TOEND1; 判断是否到预置数了(个位) MOV MOVD,LED1 CJNE A,MOVD,LOOP MOD A,TOEND0; 判断是否到预置数了(小数位) MOV MOVD,LED0 CJNE A,MOVD,LOOP CLR P1.7; 控制电机停车 LCALLDLS3; 延时约0.5秒 MOV A,#05H; CJNE A,L1ORL2,LOOP1; 如标记位不是07则跳至LOOP1 AJMP ACTION_X; 到预置数时,跳到循环L1-L2计数LOOP: AJMP ACTION; 跳到停机等待按键处理程序LO
35、OP1: ACALL DISPLAY; 调用显示程序 MOV P1,#0FFH; 置P1口为输入状态 MOV P3,#0FFH; 置P3口为输入状态 JNB P1.0,NUMNOW; 显示当前的预置数并将标志位置数 JNB P1.1,NOTSLOW; 不减速 JNB P1.7,ALLCLR; 如清零键按下跳至清零序清除所有已设定数 JNB P3.7,SELSAVE0; 如设置键按下跳到到点程序选数 JNB P1.6,LED_L1; 显示相应键位值是多少 JNB P1.2,LED_L2; JNB P1.5,LED_L3; JNB P1.3,LED_L4; JNB P1.4,LED_L5;SELO
36、D:SETB IT0; SETB EX0; SETB IT1; SETB EX1; SETB EA; 开总中断 AJMP MAIN; 返回主程序重复LED_L1: AJMP LOOKL1; 跳至显示当前键位的预置数是多少L1LED_L2: AJMP LOOKL2; 跳至显示当前键位的预置数是多少L2LED_L3: AJMP LOOKL3; 跳至显示当前键位的预置数是多少L3LED_L4: AJMP LOOKL4; 跳至显示当前键位的预置数是多少L4LED_L5: AJMP LOOKL5;ALLCLR: LJMP START0;NUMNOW: AJMP LOOKNOWNOTSLOW:ACALL
37、LOOKLX;NOTSLOW1:ACALL DISPLAY0 LCALL DLS1 SETB P1.1 JNB P1.1,NOTSLOW1 LCALL CLEARPX; 调用不减速程序 MOV SLOW4,#0FH MOV LED4,#0EH; 高位显示PXXXX AJMP MAINSELSAVE0:ACALL LOOKLX; 将当前数寄存在指定单元SELSAVE:JB P3.7,SELOD5 LCALL DLS1 JNB P3.7,SELOD2; 若按下大于1秒则跳 LCALL SELOD3SELOD1: AJMP SELOD5SELOD2: ACALL LOOKLX; 显示“-” MOV
38、LED4,#013H; MOV LED3,#013H; MOV LED2,#013H; MOV LED1,#013H; MOV LED0,#013H;SELOD21:ACALL DISPLAY0 SETB P3.7 JNB P3.7,SELOD21 LJMP SELNUM; 跳到设置预置数状态SELOD3: MOV A,LED2 MOV MOVD,#011H; 如为T则返回避免在显示SET时出错 CJNE A,MOVD,SELOD5 AJMP SELODSELOD5: CLR P1.7 CLR EA; 关总中断 MOV LED4,#0DH; 设置键按下时显示“SET” MOV LED3,#05
39、H MOV LED3,#011H MOV LED3,#012H MOV LED3,#0DH ACALL DISPLAY0 SETB P3.7 JNB P3.7,SELOD5;ACTION: CLR P1.7 ACALL DISPLAY0 MOV P1,#0FFH; 置P1.0至P1.6为输入状态 CLR P1.7 SETB P3.7 JNB P1.0,KBSET3; 执行超程计数 JNB P1.1,KBSET0;RETE: JNB P1.2,KBOUT22; L2 只有L1至L4与SETSEL键输入有效 JNB P1.3,KBOUT40; L4 JNB P1.4,KBOUT0; L-rel-N
40、EXT JNB P1.5,KBOUT3; L3 JNB P1.6,KBOUT11; L1 JNB P3.7,KBSET1; SET AJMP ACTION;KBSET0: AJMP ACTION;KBSET1: MOV A,LED2 MOV MOVD,#011H; 如为E则返回 CJNE A,MOVD,KBSET12; AJMP ACTION;KBSET12:ACALL DISPLAY0 LCALL DLS1 JNB P3.7,KBSET11; 若按下大于1秒则跳 AJMP ACTION;KBSET11: AJMP SELSAVE;KBSET3: MOV A,LED2 MOV MOVD,#011H; 看是否为SET CJNE A,MOVD,KBOUT60; 如不为SET就执行超程计数 AJMP RETF; 是SET则返回KBOUT60:LJMP KBOUT6;KBOUT0: AJMP KBOUT5;KBOUT40:AJMP KBOUT4;KBOUT11:MOV A,#05H; CJNE A,L1ORL2,KBOUT1; 如标记为不是05则跳 MOV RUNNOVE