




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2013 届本科毕业设计(论文)目 录毕业设计任务书 I摘要 II绪论 1第 1 章 控制器的总体设计1.1 控制器的选型 21.2 软件程序的设计思想结构图 3第 2 章主程序的设计说明2.1 主程序说明 4第 3 章 系统信号处理接口的软件设计3.1 测速算法 63.1.1 测频法测速的工作原理 63.1.2 测频法测速的方法 63.1.3 转速传感器的简介 73.1.4 频率法测速的误差比较及精度分析 73.2 速度检测电路的软件设计 7第四章 LED 显示电路的软件设计4.1 显示接口电路的程序设计 104.2 显示器的显示方式 114.3 十进制数码管显示程序设计 11第五章 主程序设计5.1 键盘扫描程序的设计 135.2 键盘的工作原理简介 145.3 键盘扫描方式和接口电路 165.4 键盘键值分配及按键功能设定 16第 6 章报警电路的软件设计6.1 报警电路的功能介绍 186.2 报警电路的软件设计 18结论 19致谢 20参考文献 21附录 122附录 2291绪 论目前单片机技术在智能仪器、工业测控等领域应用越来越广泛。Intel 公司于 1976 年推出了 MCS-48 系列单片机。于 1980 年推出了 MCS-51 系列单片机,于1983 年推出了 MCS-96 系列单片机。MCS-51 系列单片机是一种高性能的 8 位单片机,它创立 HMOS 工艺的高速度和 CMOS 工艺的低功耗特点。运用它可以完成智能仪器仪表和工业测控系统的前端装制。电动机是人们日常生活中所接触到的一种常见电器。在电动机的使用过程中,常遇到电动机的转速高低变化问题,因此要实施对电动机的转速进行控制,为了使我们在使用电动机的过程中更容易测得电动机的转速,并能对电动机的转速上下值进行检测,并给使用人以指示,我们就有了使用 MCS-51 单片机解决这个问题的想法。当电动机转速测量范围在 09999r/min 时,我们的测试系统可以正常工作,并可以通过键盘输入电动机旋转最高和最低转速参数(高低限报警值) 。并能准确显示转速值,精确到个位(每分钟 1 转) 。本设计通过主程序中调用输入子程序完成高低限报警参数的设定,然后通过功能键退出输入子程序,结束参数设定,并开始测速,通过循环检测对转速进行监控。2第 1 章 控制器总体设计思想根据设计任务书要求,测速系统应具备的功能模块有:键盘输入,LED 显示,转速的测定,信号处理和报警等。所有电路都是围绕 MCS-51 单片机进行设计。初步设计硬件系统结构如下图 1.1 所示。测速传感器 信号处理控制器LED 显示键盘报警图 1.1 硬件系统结构框图键盘输入模块完成参数输入设定的功能;LED 显示模块完成转速值输出显示;转速测定模块完成转速信号的采集;信号处理和报警模块计算出每分钟电机的转速,并根据设定的参数与测得的转速比较,判断是否输出报警。测试系统可以正常工作,并可以通过键盘输入电动机旋转最高和最低转速参数(高低限报警值) 。并能准确显示转速值,精确到个位(每分钟 1 转) 。1.1 控制器的选型AT89C5 1 系列单片机是美国 ATMEL 公司的 8 位 Flash 单片机产品。它以MCS-51 为内核与 MCS-51 系列的软硬件兼容。和 8051 单片机比较有成本低、体积小,运算速度快,损耗低,采用精简指令,性能稳定.本设计采用 AT89C51 单片机进行设计。直接应用 AT89C51 的 I/O 口进行设计无需扩展其 I/O 口。其 P1 口作键盘输入、P0 和 P2 口低四位作 LED 显示输出、 P3.5 输入转速采样信号、P3.0输出报警信号。时钟采用内部振荡方式获得,时钟频率范围 0-16MHz,采用上电和按键均有效的复位方式。32 个可编程双向 I/O 口 128x8bit 内部 RAM(可扩充64kB 外部存储器) 2 个 16 位可编程定时/计数器,5.0V 工作电压,可编程全双工串行通信口,PDIP 和 PLCC 封装形式 兼容 TTL 和 CMOS 逻辑电平。1.2 软件程序的设计思想结构图3本设计的软件部分程序较复杂,对其进行编程和仿真有一定难度,因此也将其模块化。本设计的软件程序在设计时分多个模块,每个模块实现的功能又由多个子程序来实现。设计中主程序与子程序,子程序与子程序之间的调用关系如图 1.2 所示。输入设定转速范围子程序import主程序报警 BJLED 显示 十进制调整HTX返回主程序TON 中断键盘扫描延时NYojing YN是否报警图 1.2 软件程序的结构框图设计工作过程简介,先根据实际需要先用键盘设置好最低转速和最高转速,电动机开始工作的时间,每转一圈测速传感器就记录一次,每 5S 显示更新一下转速,这个有数码显示管来体现并显示。工作的时间当电动机的转速超过了实际设定的数值,程序就会跳转到报警程序,开始报警提示,这样保护了电机,还可以知道电机的转速,如果没有超过这个设定的转速范围。则进行下一轮的循环测试。4第 2 章 主程序的设计说明2.1 主程序说明程序开始首先调用输入子程序 import 输入高低限参数。然后退出输入子程序开始测速,循环测速时间为 5S。每次测得转速分别与上下限值比较,然后调用HTX 子程序将转速值转换为 BCD 码形式的显示数,再调用 LED 显示子程序将转速输出显示。结束后进行下一次测速,不停的对转速进行检测下面的设计将其分为电动机转速检测信号处理接口设计、测速算法,测频法测速的工作原理,测频法测速的方法设计、频率法测速的误差比较及精度分析, LED 显示电路的软件设计,此程序完成数字的显示功能,从 P0 口输出段选信号控制 LED 显示器各段点亮, P2 口低四位输出位选信号,同一时刻只有一位被选中。此程序设计 P2 口输出依次从高到低选中其每一位,选中某一位时从 P0 口输出显示代码显示相应位的数字。四位输出完毕后结束此程序。接口电路的程序设计,十进制数码管显示程序设, 键盘扫描程序的设计,键盘原理简介, 键盘扫描方式和接口电路,键盘键值分配及按键功能设定,警电路的软件设计,报警电路的功能等介绍.主程序设计流程图如图 2.1 所示。5N开始设置定时器初始化中断计算转速值存入30H,31H 中LED 显示返回主程序报警键盘扫描调用输入子程序设置转速高低限值是否是否报警图 2.1 主程序设计流程图6第 3 章 系统信号处理接口的软件设计3.1 测速算法随着电子技术的发展,已经制造出精确度较高的晶体管数字测速仪。这种仪器通过适当的传感器,将转速信号转变为电信号,以测量转速。通常,它采用两种方法,即测频法(测出转速信号的频率,得知转速)和测周法(测出转速信号的周期,得知转速)进行测量。本设计也就是用测频法对电动机的转速进行测量,下边重点分析测频法。3.1.1 测频法测速的工作原理频率是单位时间内电信号变化的次数,测量频率,实质上就是在标准时间内如实地记录电信号变化的次数。转速传感器将转速信号转变成电脉冲信号,将其从输入端送入放大整形器,经过放大整形后在送至计数的输入端。同时,为了测量频率,除了输入转速信号(次数)外,还必须有一个标准时间信号,它是由石英晶体振荡器产生,并经过多级分频得到的。例如,JSNS-2 型振荡器,共分为0.1S、1S、2S、3S、6S、10S、20S、30S、60S、共 9 个标准时间基准信号(“S”代表秒) 。标准时间信号是石英晶体振荡器和时基分频产生的。 “时基”信号脉冲经测量时间选择开关送到控制电路,它作为控制指令,控制计数门的开、闭,使被测转速脉冲在选定的“测量时间”内进行计数器,进行计数和显示。在完成一次测量后,控制器发出复位信号,使分频器复位为“9” ,使计数器复位为“0”,然后接着进行下一次测量。3.1.2 测频法测速的方法为了使测频法测速是数码管显示数 N 既为电机转速,应取测量时间为 Tt60式中 t 的单位为 S。因为当 NT t =60 时,测速仪显示的读数 N 即为时间 t 内电机的平均转速 n。因此,NT 越大,测量时间 t 就可选得越短,所测转速也越接近瞬时速度。73.1.3 转速传感器的简介转速传感器有光电式、磁电式等多种型式。本设计应用光电传感器,对转速信号的进行采集,它的结构很简单,由光源(聚光灯) 、光栅圆盘和光电三极管组成。根据测量方法(如测频法、测周期法)不同,选取不同的光栅孔数。例如,在测频法中,为了使测速仪显示的读数 N 即为 t 时间内电机的平均转速 n ,光栅圆盘上的圆孔数 NT 应满足下列关系: 60T即孔数 NT 与“测量时间”t 之乘积等于 60。3.1.4 频率法测速的误差比较及精度分析在采用频率法测量转速的脉冲频率信号时,由于控制计数启止闸门信号的开启时间和停止时间与转速脉冲信号之间的时间关系是不相关的,故它们在时间轴上的相对位置完全是随机的,因此在相同的闸门启止时间内,计数器计得的数据可能不同,造成计数值的误差一个采样周期内在-1+1 之间分布,极端情况为-1和+1,形成所谓的1 误差。3.2 速度检测电路的软件设计本测速系统是通过栅格圆盘和光敏管组成测速系统。当直流电机通过传动部分带动栅格圆盘旋转时,测速光敏管获得一系列脉冲信号。在与单片机的接口应用 TLP521-1 光耦进行隔离。光电式传感器与单片机连接原理框图如图 3.1 所示。图 3.1 光电式传感器与单片机连接原理框图8这些脉冲信号通过单片机定时/计数器 T1 计数,定时/计数器 T0 定时。定时器 T0 完成 100 次溢出中断的时间 T 除以测得的脉冲数 m,经过单位换算,就可以算得直流电机旋转的速度。直流电机转速计算公式: )(601rpNmnT其中:n 为直流电机转速, NT 为栅格数,N 1 为 T0 中断次数,m 为定时器 T1在规定时间内测得的脉冲数,T 为定时器 T0 定时溢出时间本系统圆盘上孔数定为 12,即 2T由上一节的公式可计算出测量时间: st5160测量时间为: sTN51下边的程序定义 T0 定时溢出时间为 50ms ,中断次数为 100 次,转换为 16进制数为#64H,加起来测量时间正好是 5S。溢出时间由寄存器 TH0、TL0 初值决定,中断次数由工作寄存器 R0 进行计数,到一百次时,计算计数器 T1 计数值即为转速值。T0 中断程序名:T0_INT占用资源:工作寄存器 R0、RAM 30H 、31H 、35H 累加器 A 、B出口参数:当 R0 计数到 100 次时,将转速值存入 30H、31H 中,同时置位20.0,否则无出口参数 程序存放地址:内部 ROM 0100H光电式传感器与单片机连接软件框图如图 3.2 所示。检测电路光电耦合控制器中断显示电路图 3.2 光电式传感器与单片机连接软件框图9T0 中断程序框图如图 3.3 所示。TO 中断置 TO 始数值开 TO 中断中断 R0 等于 64H 吗?值存入30H、31H置位 20.0中断返回TO 中断入口NY图 3.3 T0 中断程序框图10第 4 章 LED 显示电路的软件设计4.1 显示接口电路的程序设计此程序完成数字的显示功能,从 P0 口输出段选信号控制 LED 显示器各段点亮,P2 口低四位输出位选信号,同一时刻只有一位被选中。此程序设计 P2 口输出依次从高到低选中其每一位,选中某一位时从 P0 口输出显示代码显示相应位的数字。四位输出完毕后结束此程序。LED 显示子程序名: LED 程序存放地址:0200H占用资源: P0 口 ,P2 口底四位 ,寄存器 R0 ,R1 累加器 A 片内 RAM 45H48H入口参数:45H48H 分别存入 显示数据的千位,百位,十位和个位以 BCD码形式存放LED 显示程序框图如 4.1 所示。表首址存入 DPTR片选码送 R1取值放入 A 中四位是否显示完毕R0-1,R1 的值左移中断返回开始NYA 值从 P1输出显示图 4.1 LED 显示程序框图114.2 显示器的显示方式4.2.1 静态显示所谓静态显示,是指显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。若七段 LED 显示器的 a、b、c、d、e、 f 段导通, G 段截止,则显示0。这种显示方法每一位都需要有一个 8 位输出口控制。采用多片 74LS373 扩展并行 I/O 口,各片 74LS373 的口地址是由 AT89C51 的 P2 口的输出决定的。可以直接由 P2 口作位选,也可以通过硬件译码如:74LS138 译码后得到位选信号。静态显示时,较小的驱动电流就可以得到较高的显示亮度,所以可由接口芯片直接驱动。显然,并行输出显示位数越多需要 I/O 口就越多。4.2.2 动态显示当显示位数较多时,可以采用动态显示。所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描) 。对于显示器的每一位而言,每隔一段时间点亮一次。虽然在同一时刻只有一位显示器在工作(点亮) ,但由于人眼的视觉暂流效应和发光二极管熄灭时的余辉,我们看到的却是多个字符“同时”显示。显示器亮度即与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。若显示器的位数不大与 8 位,则控制显示器公共极电位只需一个 I/O 口(称为扫描口或字位口) ,控制各位 LED显示器的字型也需要一个 8 位口(称为段数据口或字型口) 。4.3 十进制数码管显示程序设计由于静态显示电路所需驱动电流小并且无需对 LED 显示器循环输出显示,占用 CPU 时间少,易于编程所以该电路采用并行输出的静态显示方式。本设计用 89C51 的 P0 口输出作为 LED 显示的段选码,P2 口底四位输出四位 LED 显示的位选控制信号。用 4 片 74LS373 作数据锁存,LED 显示器采用共阳极接法。P2 口的底四位同时只有一位输出为 1,其余三位锁定。算法分析:所测转速值为 16 进制数据,显示数据为 BCD 码形式的十进制数,所以要将其进行转换。首先以四位十进制数,为例来分析其各位数字如何获得。有如下算法:定义转速的千、百、十、个位用 a、b、c 、d 表示转速的四位十进制数为 n12则 :a=n/1000 ; b=(n%1000)/100; c=(n%100)/10; d=n%10其中“/”为整除符号, “%”为求余数符号式中的 n 也为十进制数。下边把以上式子右边的数都转换为 16 进制数得:a=n(H) / 3e8(H); b=( n(H) % 3e8(H) )/64(H); c=( n(H) % 64(H) ) / 0a(H) ; d=n(H) % 0a(H) ;有以上的式子可以直接由测得的 16 进制表示的转速值进行计算得到所要显示的千、百、十、个位的数据。子程序名: HTX占用资源: RAM 30H ,31H ,35H 累加器 A ,B 入口参数: 31H ,30H 分别存放测得转速的高位和底位数据出口参数: 45H48H 显示的十进制数。 程序存放地址:0150H硬件结构图如图 4.2 所示。图 4.2 硬件结构图13第 5 章 键盘电路的软件设计5.1 键盘扫描程序的设计 本键盘采用中断扫描工作方式,当有键按下时外部中断 T0 产生中断执行中断程序 INT0 在中断程序中首先调用键盘扫描子程序 SCAN 对键盘进行扫描获得键值,其次调用延时子程序作去抖动处理后再次执行键盘扫描程序获得一个新值并与上次测得键值进行比较相等证明确有键按下,最后制按键有效位 F0 按键值存入 R3 后返回。程序说明:INT0 中断程序存放地址:0250H 占用资源:累加器 A 、R2 、R3 、R6 、R7出口参数:返回所按键的键值存入 R3 中键盘扫描程序子程序名: SCAN 程序存放地址: 0300H占用资源:累加器 A 寄存器 R2 R3 P0 口出口参数:扫描键值送 R3延时子程序的子程序名: DELAY 存放地址: 0380H功能:延时 12MS 占用资源: R6 ,R7键盘扫描框图如图 5.1 所示。14键盘扫描有键闭合延时去抖动键盘扫描找到闭合键计算键值闭合键释放建立有效标志返回建立无效标志NYNY图 5.1 键盘扫描框图5.2 键盘的工作原理简介按其结构不同键盘可分为独立式键盘和行列式键盘,它们都有各自的特点,下面对其进行介绍。1. 独立式键盘是指直接用 I/O 口线构成的单个按键电路。每个独立式按键单独占有一根 I/O 口线,每根 I/O 口线上的按键工作状态不会影响其他 I/O 口线的工作状态。独立式按键电路配置灵活,软件结构简单,但每个键必须占用一根I/O 口线,在按键数量较多,I/O 口线浪费较大。故在按键数不多时,常采用这种按键电路。2. 矩阵式键盘的结构与工作原理:在键盘中按键数量较多时,为了减少 I/O 口的占用,通常将按键排列成矩阵15形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。3.键盘具体的识别及编程方法如下所述。 确定矩阵式键盘上某个键被按下介绍一种“行扫描法” 。行扫描法(行扫描法又称为逐或列) ,扫描查询法,是一种最常用的按键识别方法,如图 3 所示键盘,AT89C51 单片机的 P1 口用作键盘 I/O 口,键盘的列线接到 P1 口的低 4 位,键盘的行线接到 P1 口的高 4 位。列线 P1.0-P1.3 分别接有 4 个上拉电阻到正电源+5V,并把列线 P1.0-P1.3 设置为输入线,行线 P1.4-P.17 设置为输出线。4 根行线和 4 根列线形成 16 个相交点。(1)检测当前是否有键被按下。检测的方法是 P1.4-P1.7 输出全“0” ,读取 P1.0-P1.3 的状态,若 P1.0-P1.3 为全“1” ,则无键闭合,否则有键闭合。 (2)去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。 (3)若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7 按图 5.2 所示。 P1.7 P1.6 P1.5 P1.41 1 1 01 1 0 11 0 1 10 1 1 1图 5.2 键盘组合框图4. 在每组行输出时读取 P1.0-P1.3,若全为“1” ,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值 5. 为了保证键每闭合一次 CPU 仅作一次处理,必须却除键释放时的抖动。6. 键盘上的每个键都有一个键值。键值赋值的最直接办法是将行,列线按二进制顺序排列,当某一键按下时,键盘扫描程序执行到给该列置 0 电平,读出各行状态为非全 1 状态,这时的行、列数据组合成键值。如图 2 中键盘值从左到右、从下到上依次是0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15。165.3 键盘扫描方式和接口电路单片机应用系统中,键盘扫描只是 CPU 工作的一个内容之一。CPU 在忙于各项工作任务时,如何兼顾键盘扫描。即既保证不失时机的影响键操作,又不过多占用 CPU 的时间。因此,要根据应用系统中 CPU 的忙、闲情况,选择好键盘的工作方式。键盘的工作方式有编程扫描方式、定时扫描方式和中断扫描方式三种。由于本设计应用按键较多采用矩阵式键盘可直接用单片机 I/O 口进行设计,并且采用中断扫描工作方式可提高 CPU 工作效率。本键盘设计应用单片机 P1 口高四位作输出扫描低四位输入组成 44 中断扫描工作方式键盘。接口电路如图 5.3 所示:VCC0# 1# 2# 3#7#6#5#4#8# 9# 10# 11#15#14#13#12#&R R R RAT89C51INT0P1.2P1.3P1.4P1.0P1.1P1.5P1.6P1.7图 5.3 接口电路5.4 键盘键值分配及按键功能设定根据图 5.3 和相应的键的键值定义各个键的功能如下:09 号键 为数字键分别代表相应的数字10 号键 无定义11 号键 确定并保存设定参数12 号键 显示报警下限参数13 号键 显示报警上限参数1714 号键 退出输入子程序开始测速15 号键 清除设定高低报警参数根据以上按键功能设定编写输入子程序 import输入子程序完成高低限报警参数设定及一些功能键。在此程序开始允许 T0中断,清 F0 然后判断 F0 位为 1 时向下执行,否则等待有键按下。有键按下后采用多条 CJNE 指令进行判断所按键是否是指令中所指的功能键值,是则执行相应的功能程序,不是则进行下一次判断。若不是功能键执行数字键相应程序,将显示数据左移显示。在按下 14 号功能键时退回到主程序。占用内存地址空间: 0450H占用资源:工作寄存器 R0、R1、R2、R3 、6 累加器 A18第 6 章 报警电路的软件设计6.1 报警电路功能的介绍电动机开始工作的时间,每转一圈测速传感器就记录一次,每 5S 显示更新一下转速,这个有数码显示管来体现并显示。工作的时间当电动机的转速超过了实际设定的数值,程序就会跳转到报警程序,开始报警提示,这样保护了电机,还可以知道电机的转速,如果没有超过这个设定的转速范围。则进行下一轮的循环测试。6.2 报警电路软件设计该报警电路,采用 NE555 集成电路为核心组成报警音频信号振荡器,通过一个与门和单片机 P3.0 口输出相与控制扬声器发声。在单片机复位后 P3.0 输出为1,经过非门后为 0 送到与门和音频信号相与与门锁定无输出。在转速超出设定值是,通过软件将 P3.0 口输出为 0,情况与上边所述相反扬声器发声报警。报警电路框图如图 6.1 所示。软件设计子程序名:BJ 程序功能:将 R6 和 R7 所指定的四个字节的 BCD 码数比较,前者小于后者时报警。占用资源:工作寄存器 R5、R6、R7 及累加器 A入口参数:两个四字节比较数首地址分别放入 R6、R7 中 初始化调用程序是否报警返回主程序报警开始NY6.1 报警电路框图19总 结本设计通过主程序中调用输入子程序完成高低限报警参数的设定,然后通过功能键退出输入子程序,结束参数设定,并开始测速,通过循环检测对转速进行监控。但开始测速后,就失去了人机交互的,也不能对所测的数据进行分析,作相应的处理如计算一段时间内的平均转速,也没有再返回的功能,一旦开始测速所设定的参数不能在改变。对于报警的设计,一但报警将一直持续下去,没有清除报警功能。根据以上缺点提出改进意见如下:在测速的同时还能够扫描键盘,并对相应的功能键执行的相应的程序,使得测速的同时也可以对测得的数据进行分析。20致 谢将近两个月的毕业设计在杜志勇教授的指导下很快的完成了,通过此次设计,使我受益非浅,学到了许多书上没有的知识,同时也锻炼了自己独立思考的能力。论文完成的前提是董老师给我提供了方便的学习环境,并给予我悉心的关怀与毕业设计上的指导。在此表示衷心地感谢。董老师认真负责的工作态度、严谨的治学风格,使我深受启发;开发的同时,和同学们之间的相互探讨也使我获益匪浅。两个月时间内,我除基本学会系统的设计电子产品外更重要的是学到了兢兢业业,奋发向上的精神,这种精神是我今后人生前进道路上的一种力量。所以我再次感谢帮助过我的董老师和我的同学们。我愿借此机会向各位老师表示衷心的感谢! 回顾三年学习期间的一千余个日日夜夜,自己为有机会摆脱学习的烦恼与浮躁,静心钻研,潜心研究,并取得初步研究成果而感到欣慰。最后,我非常庆幸在三年的学习、生活中认识了很多可敬的老师和可亲的同学,并感激师友的教诲和帮助!21参考文献1李全利.单片机原理及应用.高等教育出版社.19992胡宴如.模拟电子技术.高等教育出版社.20003杨志忠.数字电子技术.高等教育出版社.20003杨宁.微机原理.高等教育出版社.19984朱守光.单片机应用新技术教程.北京电子工业出版社.19995李华.MCS5 系列单片机实用接口技术 北京航空航天大学出版社.19986房小翠.单片机实用系统设计技术.北京国防工业出版社.20017胡宴如.高频电子线路.高等教育出版社.20028李华.MCS-51 系列单片机实用接口技术.高等教育出版社.1993.69张迎新.单片微型计算机原理及接口技术.国防科技技术大学.199310余锡存.曹国华.单片机原理及接口技术.西安电子科技大学出版社.200022附录 1:程序清单: ORG 0000H SJMP STARTORG 0003H SJMP INT0ORG 000BHLJMP T0_INTORG 0040HSTART: ACALL importCLR EALOOP: MOV TH0,#9EH ;定时器 T0 50ms 溢出中断一次MOV TL0,#57HMOV TH1,#00H ;清计数器 T1MOV TL1,#00HMOV TMOD,#51H ;设置 T0 和 T1 工作方式MOV R0,#00H ;设定 R0 从 0 开始计数SETB ET0 ;允许 T0 中断SETB EASETB TR0SETB TR1CLR 20.0 ;清 20.0 位 JNB 20.0, $ ;等待 T0 计时 5sACALL HTX ;计算每分钟电机转数MOV R6 ,#45H ;设定报警子程序入口参数MOV R7 ,#50H ACALL BJ ; 调用子程序判断转速是否正常MOV R6 ,#54HMOV R7 ,#45HACALL BJAC ALL LED SJMP LOOPORG 0100H T0_INT: PUSH DPH ;保存现场 23PUSH DPLPUSH ACCCLR TR0 ;关 T0 中断MOV TH0,#9EH ;置 T0 初值MOV TL0,#57HSETB TR0 ;T0 开始计数INC R0 ;中断次数加 1CJNE R0,#64H,ENDINT ;未到 100 次中断立即返回CLR TR0 ;测 5s 时间到关闭所有中断CLR TR1 CLR EAMOV 30H,TL1 ;测得的脉冲数送 30H、31HMOV 31H,TH1SETB 20.0 ;置 20.0 标志计时中断,计时到 5S ENDINT: POP ACCPOP DPLPOP DPHRETI ORG 0400HBJ: MOV R5 , #04H ;比较次数设定b1: MOV A , R6 ;取数进行比较SUBB A , R7JC b3 ;不够减跳转MOV A ,R6 ;高位相等继续判断CJNE R7 ,A ,b2INC R6 ;分别加一取下一操作数INC R7DJNZ R5 , b1 b3: CLR P3.0 ;从 P3.0 口输出报警b2: RETORG 0150HHTX: MOV 45H , #00H ;将 45H48H 清零,计算所测数据各位的值MOV 46H , #00H ;分别存入四个存储单元中 24MOV 47H , #00HMOV 48H , #00HCLR CHTX1: MOV A , 30H ;计算四位显示数据的千位值SUBB A , #0E8H ;存在 45H 中,将后三位作为 MOV 35H , A ;余数,放入 31H、30H 中MOV A , 31HSUBB A , 03HJC HTX2MOV 31H , AMOV 30H , 35HINC 45HSJMP HTX1HTX2: CLR C ;用所得余数计算百位的值,结果存入MOV A , 30H ;46H 中,SUBB A , #64HMOV 35H , AMOV A , 31HSUBB A , #00HJC HTX3MOV 31H , AMOV 30H , 35HINC 46HSJMP HTX2HTX3: MOV A , 30H ;用所测数据的后两位除十MOV B , #0AH ;得到显示数据的十位和个位DIV AB ;分别存入 47H、48H 中MOV 47H , AMOV 48H , BRETORG 0450Himport: MOV R0 , #50H ;高低限报警参数存放,初始单元import1: SETB IT0 ;设定外部中断 0 的中断触发方式SETB EA ;允许中断25SETB EX0 ;允许外部中断 0 中断CLR F0 ;清按键有效位JNB F0 , $ ;等待有键按下CLR EA ;关中断CJNE R3 , #0FH ,j14 ; 按下 15 号键将#50H 送给 R0,从新输入MOV R0 , #50H 高低限报警值MOV 45H , #00HMOV 46H , #00HMOV 47H , #00HMOV 48H , #00HSJMP CCj14: CJNE R3 , #0EH ,j13 ;按 14 号键退出,开始测速SJMP j7j13: CJNE R3 , #0DH , j12 ;按 13 号键显示设定的上限值MOV R6 , #54HSJMP j5j12: CJNE R3 , #0CH , j11 ;按 12 号键显示设定的下限值MOV R6 , #50Hj5: MOV R1 , #04HMOV R2 , #45Hj6: MOV A , R6MOV R2 , AINC R6INC R2DJNZ R1 , j6SJMP CCj11: CJNE R3 , #0B , j10 ;按 11 号键保存,高低限报警参数CJNE R0 , #58H , JSSJMP j0MOV R0, 45HJs: INC R0MOV R0, 46HINC R0 MOV R0 , 47HINC R0 26MOV R0 , 48HINC R0SJMP CCj10: CJNE R3 , #0A ,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绵阳三诊试题英语及答案
- 漳州校聘面试题及答案
- 系统架构设计师考试文化适应能力的培养试题及答案
- 育婴师科学知识考试试题及答案
- 药剂学考生必知试题及答案
- 医学基础知识科研能力题目与答案
- 电力交易员试题及答案
- 药动学与药效学基本知识试题及答案
- 把握光电工程师证书考试的评估标准试题及答案
- 公基法律试题及答案
- x-y数控工作台机电系统设计
- 北京中医药大学个人自荐信
- 工程交付使用表
- 电子物证专业考试复习题库(含答案)
- 公司清算报告计划工商局版
- 欣赏 牧童短笛
- T∕CADERM 3035-2020 严重创伤院内救治流程和规范
- 脐血分血及CIK细胞培养流程
- LNG站、槽车事故案例
- (完整版)螺丝分类命名及编码
- 水利水电工程毕业设计---水闸设计
评论
0/150
提交评论