版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘摘 要要 绕线机是用来绕制线圈的专用设备,而计数器则起到了计数作用。计数器可 以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少 份的折页配页工作。 绕线机计数器的核心控制是单片机。 单片机技术作为一个非常有前途的 计算机技术,其应用非常广泛,已深入到我们日常生活中的方方面面。目前,单片 机正在向稳定可靠、小而廉价的方向发展。本设计选用 at89c51 单片机来制 作,它是一个 40 脚的 8 位单片机,片内含 4kb 的可编程存储器, 有 4 个 8 位并行输入/输出口,可用于多个按键信号的输入及控制信号、数字显示信号、 声音信号的输出。有两个外中断输入端及两个定时器 /计
2、数器,为软件设计 与电路设计相配合提供了方便。 绕线机计数器的控制电路除了单片机电路外还有5v 稳压电源电路、光 电开关、4011 与非门、按键输入电路、数码管显示电路和电动机电路。 关键词关键词:绕线机计数器;单片机;数码管显示;按键输入; abstract winding the coil winding machine is used special equipment, and the counter is counting played a role. counter can be used to display the working status of products in g
3、eneral 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 computer technology, its application is very extensive, has been deep into every aspect of our
4、 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, there are four 8-bit parallel input / output, multiple keys can be used to input signal
5、s 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. winding machine counter control circuit in addition to microcontroller circuit external 5v re
6、gulated 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 1.1 课题的目的与意义.1 1.2 采取的研究方法、技术路线、实验方案及可行性分析.1 1.3 课题的发展现状和前景展望.1 1.4 特色或创新之处.1 2
7、硬件部分设计.2 2.1 系统框图.2 2.2 电源电路.2 2.2.1 整流电路.2 2.2.2 稳压电路.3 2.2.3 滤波电路.3 2.3 传感器驱动电路.4 2.3.1 光电开关.4 2.3.2 cd4011 与非门.5 2.4 主控制电路.6 2.4.1 at89c51 单片机.7 2.4.2 振荡电路.9 2.4.3 复位电路.9 2.5 编码式键盘电路.10 2.6 数码管显示电路.11 2.6.1 数码管介绍.11 2.6.2 七段 led 数码管发光原理.11 2.6.3 数码显示电路原理.11 2.7 直流电动机驱动电路.12 2.7.1 电机工作原理.12 3 软件部分
8、设计.14 3.1 主程序框图.14 3.2 加 1 子程序框图.21 3.3 加 1 子程序源码分析.21 3.4 减 1 子程序框图.22 3.5 减 1 子程序源码分析.22 3.6 显示子程序.23 4 总结.25 致 谢.26 参考文献.27 附 录.28 1 绪论绪论 1.1 课题的目的与意义课题的目的与意义 本课题是绕线机计数器的设计,根据计数器的原理,用 at89c51 单片机把硬件电路 和软件编程进行设计。目前,单片机正朝着高性能和多品种方向发展,发展趋势将是进 一步向着 cmos 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几 个方面发展。单片机应用的重要意
9、义在于它从根本上改变了传统的控制系统设计思想和 设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过 软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术 的一次革命。绕线机计数器电路由单片机作为控制器,加上各种控制电路、显示电路和 电机驱动器电路,控制程序用汇编语言编写。该设计方案能使学生把所学到的电子技术 结合起来,为走上工程技术道路提供很好的练兵机会。 1.2 采取的研究方法、技术路线、实验方案及可行性分析采取的研究方法、技术路线、实验方案及可行性分析 先理解电路图及工作原理,再复习单片机 mcs-51 系列的硬件构成及命令系统,拟采 取硬
10、件电路和软件编程联合研究的方法,根据实际的工作原理及参考电路图改用 at89c51 单片机来重新设计硬件电路;再利用网上以及书本上的控制过程来设计出主程 序流程图及各子程序流程图,然后用汇编语言编制单片机 at89c51 的控制软件。要求控 制软件能使硬件电路正常运行,达到已有产品同样的可编程定时器的各种功能。 1.3 课题的发展现状和前景展望课题的发展现状和前景展望 先研究现成的微电脑控制的绕线机计数器的电路图及工作原理说明,再复习单片机 mcs-51 系列的硬件构成及命令系统,根据绕线机计数器的工作原理及已有电路图,选择 at89c51 单片机做控制电路。设计出主程序流程图及各子程序流程图
11、,然后用汇编语言 编制单片机的控制软件。要求软件能使硬件电路正常运行,达到绕线机计数器的自动计 数功能。 1.4 特色或创新之处特色或创新之处 使用我们比较熟悉 51 系列单片机,而 at89c51 单片机与 mcs-51 单片机的 51 子系 列完全兼容。at89c51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 因此在设计中选择 at89c51 作为控制单片机,结合适当的外围电路,设计绘制电原路图, 再绘制出主程序流程图及各子程序流程图,然后用汇编语言编制控制软件。 2 硬件部分设计硬件部分设计 2.1 系统框图系统框图 该计数器是以 at89c51 单片机为核心的应用系统
12、。整个系统包括几个部分: at89c51 单片机、驱动电路、传感器、数码管显示器、按键电路。 单片机 显示 驱动电路电机 键盘 图 2-1 系统框图 2.2 电源电路电源电路 稳压电源电路作用是为整个系统提供稳定的工作电源。稳压电源一般由变压器、整 流器和稳压器三大部分组成。变压器把市电交流电压变为所需要的低压交流电。整流器 把交流电变为直流电。经滤波后,稳压器再把不稳定的直流电压变为稳定的直流电压输 出。 电源工作原理:220v交流电经变压器t1、桥式整流电路d1和电解电容c1滤波后,再经由 5v 稳压集成电路 u1 稳压后得到+5v 直流电压作为单片机及其它电路的电源vcc。如图2-4所示
13、。 图 2-2 稳压电路原理图 2.2.1 整流电路整流电路 桥式整流电路是使用最多的一种整流电路。这种电路,只要增加两只二极管口连接 成“桥”式结构,便具有全波整流电路的优点,而同时在一定程度上克服了它的缺点。 图 2-3 整流电路引脚图 2.2.2 稳压电路稳压电路 7805 是常用的稳压芯片, 它的使用方便,用很简单的电路即可以输入一个直流稳压 电源,他的输出电压恰好为 5v,刚好是 51 系列单片机运行所需的电压。 图 2-4 7805 芯片引脚图 其中 1 接整流器输出的电压,2 为公共地(也就是负极),3 就是我们需要的+5v 输出 电压了。 2.2.3 滤波电路滤波电路 整流电路
14、的输出电压虽然是单一方向的,但是脉动较大,含有较大的谐波成分,不 能适应大多数电子线路及设备的需求。因此,一般在整流后,还需要利用滤波电路将脉 动的直流电压变为平滑的直流电压。 电容滤波电路是最常见也是最简单的滤波电路,在整流电路的输出端(即负载电阻 两端)并联一个电容即构成电容滤波电路,如图。滤波电容容量较大,因此一般采用电 解电容,在接线时要注意电解电容的正、负极。电容滤波电路利用电容的充、放电作用, 使输出电压趋于平滑。 图 2-5 滤波电路 2.3 传感器驱动电路传感器驱动电路 传感器是能感受规定的被测量并按照一定规律转换成可用输出信号的器件或装置, 通常由敏感元件和转换元件组成。其中
15、,敏感元件是指传感器中直接感受被测量的部分, 转换元件是指传感器能将敏感元件的输出转换为适于传输和测量的电信号部分。 光电式传感器是将光通量转换为电量的一种传感器。光电式传感器的基础是光电转 换元件的光电效应。由于光电测量方法灵活多样,可测参数众多,一般情况下具有非接 触、高精度、高分辨率、高可靠性和反应快等特点。 图 2-6 传感器驱动电路 2.3.1 光电开关光电开关 光电开关是传感器大家族中的成员,它把发射端和接收端之间光的强弱变化转化为 电流的变化以达到探测的目的。由于光电开关输出回路和输入回路是电隔离的,所以它 可以在许多场合得到应用。新型光电开关体积小、功能多、寿命长、精度高、响应
16、速度 快、检测距离远以及抗光、电、磁干扰能力强。新型的光电开关已被用作物位检测、液 位控制、产品计数、宽度判别、速度检测、定长剪切、孔位识别、信号延时、自动门传 感、色标检出、冲床和剪切机以及安全防护等诸多领域。 光电开关的特点:具有自诊断稳定工作区指示功能,可及时告知工作状态是否可靠; 对射式、反射式、镜面反射式光电开关都有防止相互干扰功能,安装方便;响应速度快, 高速光电开关的响应速度可达到 0.1ms,每分钟可进行 30 万次检测操作,能检出高速移 动的微小物体;采用专用集成电路和先进的 smt 表面安装工艺,具有很高的可靠性;体 积小、重量轻,安装调试简单,并具有短路保护功能。 2.3
17、.2 cd4011 与非门与非门 vdd vss 141312111098 1 234567 图 2-7 cd4011 内部逻辑结构图 1 13 12 11 10 9 8 14 2 3 4 5 6 7 vdd 4b 4a 4y 3y 3b 3a 1a 1b 1y 2y 2a 2b vss 图 2-8 cd4011 引脚图 cd4011 功能及真值表: 逻辑表达式:y = a.b a=y.b 表 2-1 真值表 xyq动作 00?禁止 011设定 100重置 11不变无 (1)当 x=0、y=0 时,将使两个 nand 门之输出均为 1,违反触发器之功用,故禁止 使用。如真值表第一列。 (2)当
18、 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 数据
19、输出端 1y 2y 3y 4y 2.4 主控制电路主控制电路 主控制器主要由单片机 at89c51、振荡电路和复位电路三部分组成。由于它是单片 机工作的必要组成部分,所以又称为单片机最小系统。 图 2-9 最小应用系统 2.4.1 at89c51 单片机单片机 at89c51 是一种低功耗、高性能 cmos8 位微控制器,具有 4k 在系统可编程 flash 存储器。使用 atmel 公司高密度非易失性存储器技术制造,与工业 80c51 产品指令和引 脚完全兼容。片上 flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上, 拥有灵巧的 8 位 cpu 和在系统可编程 flash
20、,使得 at89c51 为众多嵌入式控制应用系统 提供高灵活、超有效的解决方案。 at89c51 提供以下标准功能:4k 字节 flash 闪存存储器,128 字节内部 ram,32 个 i/o 口线,两个 16 位定时/计数器;一个 5 向量两级中断结构,一个全双工串行通信口, 片内振荡器及时钟电路。同时,at89c51 可降至 0hz 的静态逻辑操作,并支持两种软件 可选的节电工作模式,空闲方式停止 cpu 的工作,但允许 ram,定时/计数器,串行通信 及中断系统继续工作。掉电方式保存 ram 中的内容,但振荡器停止工作并禁止其他所有 部件工作直到下一个硬件复位。 图 2-10 at89
21、c51 引脚图 vcc : 电源 gnd : 地 p0 口:p0 口是一个 8 位漏极开路的双向 i/o 口。作为输出口,每位能驱动 8 个 ttl 逻辑电平。对 p0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器 时,p0 口也被作为低 8 位地址/数据复用。在这种模式下,p0 具有内部上拉电阻。在 flash 编程时,p0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时, 需要外部上拉电阻。 p1 口:p1 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p1 输出缓冲器能驱动 4 个 ttl 逻辑电平。对 p1 端口写“1”时,内部上拉电阻把端口拉高,
22、此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil) 。 此外,p1.0 和 p1.2 分别作定时器/计数器 2 的外部计数输入(p1.0/t2)和时器/计数器 2 的触发输入(p1.1/t2ex) ,具体如下表 3-1 所示。在 flash 编程和校验时,p1 口接收低 8 位地址字节。 表2-2 p1口的第二功能 引脚号第二功能 p1.0t2(定时器/计数器t2的外部计数输入),时钟输出 p1.1t2ex(定时器/计数器t2的捕捉/重载触发信号和方向控制) p1.5mosi(在系统编程用) p1.6miso(在系统编程用) p1.7sck(在系
23、统编程用) p2 口:p2 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p2 输出缓冲器能驱动 4 个 ttl 逻辑电平。对 p2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil) 。 在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 movx dptr) 时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送 1。在使用 8 位地址(如 movx ri)访问外部数据存储器时,p2 口输出 p2 锁存器的内容。在 flash 编程和校验时,p2 口也接收高 8
24、位地址字节和一些控制信号。 p3 口:p3 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p2 输出缓冲器能驱动 4 个 ttl 逻辑电平。对 p3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil) 。 p3 口亦作为 at89c51 特殊功能(第二功能)使用,如下表 3-2 所示。在 flash 编程和校 验时,p3 口也接收一些控制信号。 引脚号第二功能 p3.0rxd(串行输入) p3.1txd(串行输出) p3.2int0(外部中断0) p3.3int0(外部中断0) p3.4t0(定时器0
25、外部输入) p3.5t1(定时器1外部输入) p3.6wr(外部数据存储器写选通) p3.7rd(外部数据存储器写选通) 表2-3 p3口的第二功能 rst: 复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高电平时间。 xtal1:振荡器反相放大器和内部时钟发生电路的输入端。 xtal2:振荡器反相放大器的输出端。 2.4.2 振荡电路振荡电路 at89c51 单片机有一个用于构成内部振荡器的反相放大器,xtal1 和 xtal2 分 别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器, 自激振荡器与单片机内部的时钟发生器构成单片机的时钟电路。在单片机应
26、用系统中, 常选用晶体振动器作为外接振荡源,简称晶振。晶振的频率越高,则单片机系统的时钟 频率越高,单片机的运行速度越快。 图 2-10 振荡电路 2.4.3 复位电路复位电路 mcs-51 系列单片机的复位是由外部的复位电路实现的。复位电路的目的是产生持续 时间不小于 2 个机器周期的高电平。单片机通常采用 2 种形式的复位电路:上电自动复 位电路和按钮开关复位电路。图为上电自动复位电路。 上电自动复位电路是通过电容充电来实现的。在接通电源(上电)的瞬间,rc 电路 充电,由于电容 c 两端的电压不能突变,在 reset 引脚上电压接近电源电压+5v;随着 充电时间的延长,充电电流减小,re
27、set 引脚的电位也逐渐下降;当电容 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”按键和“清零”按键。当无按键按下时, 单片机的 p1.0p1.7 端读入的应
28、是高电平;若有按键按下时,单片机 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 的阳极连在一起即为共阳式。 以共阴式为例,如把阴极接
30、地,在相应段的阳极接上正电源,该段即会发光。当然,led 的电流通常较小,一般均需在回路中接上限流电阻。 图 2-13 数码管原理图 2.6.3 数码显示电路原理数码显示电路原理 显示电路采用 6 位 led 数码管,6 个数码管的 8 段字符负极与单片机 p1 并口的 8 位 对应相连。6 位数码管有个 6 个正极引线。数码管 8 段字符是用单片机软件来译码的,由 p1 并口输出所需的字符数据,6 个数码管的正极是快速轮流导通的。当第 1 位数码管的 正极导通时(其它数码管的正极处于截止) ,p1 口输出的是第 1 位要显示的数据;过了 2ms,当第 2 位数码管的正极导通时(第 1 位和其
31、它数码管的正极处于截止) ,p1 口输出 的是第 2 位要显示的数据。因此 6 个数码管则快速轮流显示各自的字符,由于人眼有视 觉暂留特性,所以看到的就是 6 个数码管在固定地显示各自的字符。 图 2-14 数码显示电路 2.7 直流电动机驱动电路直流电动机驱动电路 图 2-15 电动机驱动电路 2.7.1 电机工作原理电机工作原理 三极管的两种状态:(1)截止状态:当加在三极管发射结的电压小于 pn 结的导通电压, 基极电流为零,集电极电流和发射极电流都为零,三极管这时失去了电流放大作用,集 电极和发射极之间相当于开关的断开状态,我们称三极管处于截止状态。(2)饱和导通状 态:当加在三极管发
32、射结的电压大于 pn 结的导通电压,并当基极电流增大到一定程度时, 集电极电流不再随着基极电流的增大而增大,而是处于某一定值附近不怎么变化,这时 三极管失去电流放大作用,集电极与发射极之间的电压很小,集电极和发射极之间相当 于开关的导通状态。三极管的这种状态我们称之为饱和导通状态。 当三极管处于截止状态时,电机正常工作;当三极管处于饱和导通状态时,电机被 短路,不能正常工作。 3 软件部分设计软件部分设计 3.1 主程序框图主程序框图 图 3-1 主程序框图 main: mov a,slow4; 判断是否到减速的数值(千位) mov movd,led4 cjne a,movd,loop0 mo
33、v a,slow3; 判断是否到减速的数值(百位) mov movd,led3 cjne a,movd,loop0 mov a,slow2; 判断是否到减速的数值(十位) mov movd,led2 cjne a,movd,loop0 mov a,slow1; 判断是否到减速的数值(个位) 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.7 loop0:m
34、ov a,toend4; 判断是否到预置数了(千位) mov movd,led4 cjne a,movd,loop mov a,toend3; 判断是否到预置数了(百位) mov movd,led3 cjne a,movd,loop mov a,toend2; 判断是否到预置数了(十位) mov 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 p
35、1.7; 控制电机停车 lcalldls3; 延时约 0.5 秒 mov a,#05h; cjne a,l1orl2,loop1; 如标记位不是 07 则跳至 loop1 ajmp action_x; 到预置数时,跳到循环 l1-l2 计数 loop: ajmp action; 跳到停机等待按键处理程序 loop1: acall display; 调用显示程序 mov p1,#0ffh; 置 p1 口为输入状态 mov p3,#0ffh; 置 p3 口为输入状态 jnb p1.0,numnow; 显示当前的预置数并将标志位置数 jnb p1.1,notslow; 不减速 jnb p1.7,al
36、lclr; 如清零键按下跳至清零序清除所有已设定数 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; selod:setb it0; setb ex0; setb it1; setb ex1; setb ea; 开总中断 ajmp main; 返回主程序重复 led_l1: ajmp lookl1; 跳至显示当前键位的预置数是多少 l1 led_l2: ajmp lookl2; 跳至显示
37、当前键位的预置数是多少 l2 led_l3: ajmp lookl3; 跳至显示当前键位的预置数是多少 l3 led_l4: ajmp lookl4; 跳至显示当前键位的预置数是多少 l4 led_l5: ajmp lookl5; allclr: ljmp start0; numnow: ajmp looknow notslow:acall looklx; notslow1:acall display0 lcall dls1 setb p1.1 jnb p1.1,notslow1 lcall clearpx; 调用不减速程序 mov slow4,#0fh mov led4,#0eh; 高位显示
38、 pxxxx ajmp main selsave0:acall looklx; 将当前数寄存在指定单元 selsave:jb p3.7,selod5 lcall dls1 jnb p3.7,selod2; 若按下大于 1 秒则跳 lcall selod3 selod1: ajmp selod5 selod2: acall looklx; 显示“-” mov led4,#013h; mov led3,#013h; mov led2,#013h; mov led1,#013h; mov led0,#013h; selod21:acall display0 setb p3.7 jnb p3.7,se
39、lod21 ljmp selnum; 跳到设置预置数状态 selod3: mov a,led2 mov movd,#011h; 如为 t 则返回避免在显示 set 时出错 cjne a,movd,selod5 ajmp selod selod5: clr p1.7 clr ea; 关总中断 mov led4,#0dh; 设置键按下时显示“set” mov led3,#05h mov led3,#011h mov led3,#012h mov led3,#0dh acall display0 setb p3.7 jnb p3.7,selod5; action: clr p1.7 acall di
40、splay0 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-next jnb p1.5,kbout3; l3 jnb p1.6,kbout11; l1 jnb p3.7,kbset1; set ajmp action; kbset0: ajmp action; k
41、bset1: 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;
42、kbout0: ajmp kbout5; kbout40:ajmp kbout4; kbout11:mov a,#05h; cjne a,l1orl2,kbout1; 如标记为不是 05 则跳 mov runnover,#08h; 建立循环次数 8 次 kbout1: mov led4,#0ah; 当 k1 按下时显示“l1” mov led3,#odh mov led2,#01h mov led1,#0dh mov led0,#0dh acall display0 setb p1.6 jnb p1.6,kbout1; 延时消抖 acall display0 lcall dls3 ljmp c
43、lear1; 如松开键时跳至 clear1 置数程序 kbout22: mov a,#05h; cjne a,l1orl2,kbout2; 如标记位不是 05 则跳(不循环计数) mov runover,#06h; 建立循环次数 6 次 kbout2: mov led4,#oah; l2 mov led3,#0dh; mov led2,#02h; mov led1,#odh; mov led0,#odh; acall display0 setb p1.2 jnb p1.2,kbout2 acall display0 lcall dls3 ljmp clear2 kbout3: mov led4
44、,#0ah; l3 mov led3,#0dh mov led2,#03h mov led1,#0dh mov led0,#0dh acall display0 setb p1.5 jnb p1.5,kbout3 acall display0 lcall dls3 ljmp clear3 kbout4: mov led4,#0ah; l4 mov led3,#0dh mov led2,#04h mov led1,#0dh mov led0,#0dh acall display0 setb p1.3 jnb p1.3,kbout4 acall display0 lcall dls3 ljmp c
45、lear4 kbout5: acall display0 setb p1.4 jnb p1.4,kbout5 ljmp lookl5 kbout6: mov led4,#011h; e解除电机锁定并继续计数,同时高位用 e 显示 acall display0 lcall dl05s setb p1.0 jnb p1.0,kbout6 ljmp clearex action_x:acall display0; 循环数判别 clr c; 清进位标志 lcall dls3; 延时约 1 秒 lcall dls3 djnz runover,next; 是否计完 8/6 次?不是则再继续循环 ljmp
46、action; 跳到停机状态,等待按键处理 next: mov a,#05h; cjne a,l1orl,gol2; 如是 l1 则转 l2,如是 l2 则转 l1 ljmp kbout1; gol2: ljmp kbout2; 3.2 加加1子程序框图子程序框图 显存数加 1 显存数 =10? 置零 结束 y n 图 3-2 加 1 子程序框图 3.3 加加1子程序源码分析子程序源码分析 add1: inc led1; led1 加 1 mov a,led1 cjne a,#0ah,add1out; 显存单元在 0-9 mov led1,#00h; 如是 10 时则置 0 inc led2;
47、 led2 加 1 mov a,led2 cjne a,#0ah,add1out; mov led2,#00h inc led3 mov a,led3 cjne a,#0ah,add1out; mov led3,#00h inc led4 mov a,led4 cjne a,#0ah,add1out; mov led4,#00h add1out: ret 3.4 减减1子程序框图子程序框图 显存数减 1 清进位标志 显存数是 0ffh? 置 9,向前借 1 y 结束 n 图 3-3 减 1 子程序框图 3.5 减减1子程序源码分析子程序源码分析 dec1: dec led1; led1 减 1
48、 mov a,led1 clr c; 清进位标志 cjne a,#0ffh,dec1out; mov led1,#09h; dec led2; mov a,led2 clr c; cjne a,#0ffh,dec1out; mov led2,#09h; dec led3; mov a,led3 clr c; cjne a,#0ffh,dec1out; mov led3,#09h; dec led4; mov a,led4 clr c; cjne a,#0ffh,dec1out; mov led4,#09h; dec1out: ret 3.6 显示子程序显示子程序 开始 指针指向数据 字符码 查表 输出显示 延时 1ms 显示 图 3-4 显示程序框图 display: mov dptr,#numtab; 指针指向数据字符码 mov a,led0 movc a,a+dptr; 查表获得的值送累加器 a mov p1,a 输出显示 setb p1.7 clr p3.0; 选中小数位显示 acall d1ms setb p3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国内衣行业竞争力策略及投资营销模式分析报告版
- 2024-2030年中国六味香连胶囊行业竞争格局及投资价值分析报告
- 2024年企业间关于办公软件开发的合同
- 2024年大型活动场地土方运输合同
- 2024年创业联盟协议书模板
- 2023年珠海市中山大学附属第五医院护理岗位招聘考试真题
- 2023年宜昌市“招才兴业”教育系统事业单位招聘考试真题
- 2023年云南省河海大学选调考试真题
- 2024年工程承包居间合作合同
- 2023年温州地区录用公务员考试真题
- 爱学习爱祖国爱劳动
- 华住集团测评题
- 旅游小程序策划方案
- 医用化学实验
- 呼吸系统疾病学教案:呼吸系统疾病的诊断与治疗
- 员工试用期转正评估问卷调查(360评估)
- 灼烫事故培训课件
- 勇往直前追逐梦想主题班会课件
- 皮肤科护士的皮肤损伤护理技术
- 幼儿园公开课:中班语言《跑跑镇》有声动态课件
- 拘留心理知识讲座
评论
0/150
提交评论