为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

微电脑时控开关的控制程序设计

2017-09-27 33页 doc 64KB 42阅读

用户头像

is_882336

暂无简介

举报
微电脑时控开关的控制程序设计微电脑时控开关的控制程序设计 《微机原理及接口技术》课程设计 目 录 一(设计任务与功能要求.................................................................................................. 1 设计课题:.................................................................................................................
微电脑时控开关的控制程序设计
微电脑时控开关的控制程序设计 《微机原理及接口技术》课程设计 目 录 一(设计任务与功能要求.................................................................................................. 1 设计课题:................................................................................................................ 1 设计目的:................................................................................................................ 1 设计任务:................................................................................................................ 1 基本设计要求:......................................................................................................... 2 二、总体设计与方案论证........................................................................................... 5 设计方案论证:......................................................................................................... 5 开关用PB0到PB7独立式按键方法论证:................................................................. 5 锁键功能方法论证:.................................................................................................. 5 输出指示灯方法论证: .............................................................................................. 6 设置一个“界面进程码”存放单元............................................................................. 6 控制负载开关自动方法论证:.................................................................................... 6 通常时钟模式下校时、校分、校星期方法论证: .......................................................... 7 定时模式下校时、校分、校星期方法论证:............................................................... 7 控制开关负载时间论证方法论证 ................................................................................ 8 按键音实现方法论证: .............................................................................................. 8 三( 资源分配 ................................................................................................................. 9 1.系统资源分配 ......................................................................................................... 9 2.硬件资源具体分配 ................................................................................................ 10 3.微处理器内部存储器单元分配及数据定义 ............................................................. 10 四(总程序流程.............................................................................................................. 12 五(数据初值说明 .......................................................................................................... 13 六.局部程序说明............................................................................................................. 16 1. 开关量输入及消抖动(XDPB): ....................................................................... 16 2. 锁键功能处理子模块程序(SJ): ...................................................................... 16 3.三个功能键:取消/恢复 定时 时钟: ................................................................... 16 4.开、自动、关三中运行方式处理子程序: ............................................................. 17 5.负载驱动子程序: ................................................................................................ 17 6.定时模式下校时、校分、校星期处理子程序: ...................................................... 18 《微机原理及接口技术》课程设计 7.通常模式下调时间子程序: .................................................................................. 18 8.拆字子模块程序: ................................................................................................ 18 9.普通模式下的星期显示子程序: ........................................................................... 19 10.显示更新子程序:判断是否定时界面................................................................... 19 11.按键提示音处理子程序: .................................................................................... 19 12.中断服务子程序:............................................................................................... 19 13.自检总初始化程序子模块:................................................................................. 19 七.系统功能与用户操作使用说明 .................................................................................... 21 八(课程设计 .......................................................................................................... 23 《微机原理及接口技术》课程设计 一(设计任务与功能要求 设计课题: 微电脑时控开关的控制程序设计 设计目的: 运用《微机原理及接口技术》课程所学的基本知识,在微电脑时控开关的控制程序设计中加以应用,进而理解单片机的运行原理,指令代码,各指令之间相互联系所发生的连锁反应,把这种反应用实际的硬件展示出来。真正地把理论联系到实际,实际联系到产品规划、研发、逐步满足用户的要求,以及更为深入的模块拓展。提高自己的动手操作能力,在实践里检验自己的知识掌握运用程度,不断完善自己,不断提高自己,向上拔高,更上一个台阶。, 设计任务: 微电脑时控开关是一个以单片微处理器为核心配合电子电路等组成一个电源开关控制装置,它在用户自行设定下能以天或星期循环且多时段的控制用电设备的开闭。时间设定以分钟为单位,每日可设置八组打开和关闭的时刻,其中有四组是打开时刻,四组是关闭时刻,在根据用户要求设定下的打开和关闭时刻随时可以根据用户的需求更改或者是取消,以满足适应跟多复杂设备的工作需求,在更改设定时间时也可以随时跳转到时钟模式,方便查看现在时刻,使得在设定工作时刻时减少或者避免人为错误而导致微电脑开关误指令,致使控制设备发生误动作,所造成的可避免损失。在时钟模式下,用户可以自行设定调节当前时刻,每按下一次调时键,时钟走一小时,每按一次调分键,分钟夺走一分钟,与此同时秒钟会清零,也就是说,每调节一次分钟走时,秒种从零开始走时。如果时钟被加到24时,会跳到00,也就是说,设备的时间控制是二十四小时制的,如果分钟被加到60时,会跳到00,同时时钟加一,当秒钟加到60时,秒钟清零,分钟加一。在时钟模式下调节星期键来选择当前星期,每按下一次星期键,当前星期的指示灯会右移一位,当移位到星期天时再按下星期键跳转到星期一。结合当前时钟,如果现在时刻是:23::59:59,星期天,那么在下一秒来到时,时钟变为:00:00:00,当前星期为星期一。这样整个时间的工作系统就联系了实际时间走势来设计,使整个设计的工作方式更加准确,更加人性化。在定时模式下调节星期时,要根据用户要求,预先设置好所要求的每天的工作模式,这种以天为单位的工作模式四组不同的工作模式,例如本设计中,预先设计好的:“一二三四五六七”、“一二三四五六 ”、“一二三四五 ”、“ 六七”等四种模式, 1 《微机原理及接口技术》课程设计 在按下调星期键时,可以按照用户需求进行切换设定,在设定过程中根据星期指示灯的亮暗来判断是哪一个模式,或者来设定工作的天数。在整个控制工作过程中必须是在解锁状态下完成,如果超过解锁状态的15S以后,那么所有按键失效,设备按照未上锁之前的设定进行工作,如果此时要对空是系统进行调节,那么要先解锁,按下四次调时键,且每一次按下的时间不超过1S,那么就进入解锁状态,可以对设备控制进行再一次的设定或者是操作,如果不满足以上的解锁要求,就不能进入到解锁状态,设备将一直保持未解锁状态。数码管显示有四种显示情况,第一种,在通常模式下时钟模式显示:时分秒。第二种,在定时模式下显示:组数、时、分。第三种,在定时模式下,取消定时,仅显示组数以及定时时间初始情况。 微电脑时控开关适用于路灯、霓虹灯、广告招牌灯、生产设备、广播电视设备等各种工业、家用电器的自动定时控制,既安全又经济方便。输出电流可10-25A,既可正常控制2200W至更大功率的电器工作。也可与继电器、接触器等结合控制其它各种大功率照明或动力设备。 根据以AT89S51单片机为核心的微电脑时控开关的功能需求,参照KG316T时控开关产品的界面及控制模式,设计实现时控开关功能的AT89S51单片机控制程序并在单板机上模拟调试。 基本设计要求: 1、开机进行适当的有关接口部件及数码显示器、指示灯、讯响器等自检。 2、按键输入及处理:面板设置“取消/恢复”、“校时”、“校分”、“校星期”、 “自动/手动”、“定时”、“时钟”等7个键,可以用独立按键方式也可以用行列式 键盘方式实现。采用独立按键方式应当由专门的开关量输入并消抖动处理子模块程序 统一对开关量输入信号进行检测输入并采用动态滚存滤波进行软件消抖动处理,记存 开关信号的前态与新态;采用行列式键盘方式应当由专门的键盘扫描子模块程序对行 列式键盘电路进行扫描识别,记存前一次扫描到的键号与新扫描到的键号,也可以加 入动态滚存滤波进行消抖动。 3、八位LED 七段数码显示器作为时钟、控制时刻及其他界面信息显示,应均衡且清 晰地驱动每一位数码显示器。7个星期指示灯在印有“一”、“二”、„“日”位置 相应点亮来示星期一、星期二、„星期日。三个运行方式指示灯在印有“开”、“自 动”、“关”位置相应点亮来表示手动开启、自动定时控制、手动关闭三种运行方式。 此外还有一个指示灯在印有“锁键”位置上点亮表示当前处于锁键状态。面板上的“电 源”指示灯直接由电路的直流工作电源点亮,“工作”指示灯直接由驱动负载的功率 2 《微机原理及接口技术》课程设计 继电器电路点亮。 4、开关量输出驱动:本时控开关对外具有一路开关量输出驱动负载,输出的逻辑电平放大后驱动功率继电器,其触点接通开启或切断关闭外接的用电负载设备。时控开关内部有11个开关量输出驱动指示灯。对于开关量输出驱动,应当对各输出端口的控制信息建立输出缓存,即安排同样数目的单元存储相应各输出端口的输出信息,程序中需要改变输出量只修改缓存单元的值,主流程中统一由输出驱动子模块程序根据输出缓存内容执行实质的输出驱动,以防止程序运算决策的中途反复更动未确定的输出值对外部设备及系统运行产生不良或危险后果。 5、基本显示界面:按照24小时制动态显示实时钟的时、分、秒以及星期信息,实时钟的走时精度仅受晶体振荡器元件的影响。此外还有“开”、“自动”、“关”及“锁键”指示。 6、锁键功能:非锁键状态下,持续15秒无操作则自动进入锁键状态,“锁键”指示灯亮,维持或切换到显示时钟的基本显示界面。在锁键状态下,所有按键功能均操作无效,以防止时控开关的时钟及定时时刻信息被不经意的操作而误改。在锁键状态下,以不超过1秒的间隔连续按动“取消/恢复”键4次则退出锁键状态,“锁键”指示灯灭。 7、时钟校调功能:在显示时钟的基本显示界面且非锁键状态下,按下“校时”键则小时数以24小时制循环加1,分钟与秒钟不变;按下“校分”键则以60分钟制循环加1,同时秒清0且其前级计数置为初值;按下“校星期”键则星期数以一周7天制循环调整。 8、设置定时时刻:在显示时钟的基本显示界面且非锁键状态下,按下“定时”键则进入显示定时时刻并供调整的界面,首先显示第一组开启时刻,左边两位数码管显示“1, ”,随后显示第一组开启时刻的小时、分钟值,星期指示灯显示周工作模式,周工作模式有“一二三四五六七”、“一二三四五六 ”、“一二三四五 ”、“ 六七”等四种;此时可通过“校时”、“校分”键递增循环调整修改小时与分钟时刻值,可通过“校星期”键依序循环改变周工作模式;按“取消/恢复”键则将本时刻设置为空,时与分的位置显示“--.--”,星期指示灯全灭;再按“取消/恢复”键则恢复原来的时刻值。继续按下“定时”键则依次循环切换为“1,„”、“2, „” 、“2,„”、“3,„ ”、 “3,„”、 “4,„ ”、 “4,„”、“1,„”„。设置定时时刻期间若按下“定时”键则切换回显示时钟的基本显示界面。 9、运行方式切换:本时控开关输出驱动负载的运行方式有手动开启、自动定时控制、 3 《微机原理及接口技术》课程设计 手动关闭三种,在显示时钟的基本显示界面且非锁键状态下,按“自动/手动”键使其在“开”——从开转到“自动”——“关”——从关转到“自动”四个运行档位状态间循环切换, “开”、“自动”、“关”指示灯相应点亮标示。在设置定时时刻期间,“开”、“自动”、“关”指示灯均熄灭,“自动/手动”切换键无效,禁止切换运行方式,即运行方式维持不变。 10、输出负载控制:当运行方式切换到“开”的档位时将驱动负载的输出开关量置为有效。当运行方式切换到“关”的档位时将负载驱动输出开关量置为无效。当运行方式处于“自动”的档位时则按照预先设定的控制时刻进行查表及控制,每当时钟走时进入一个新的时、分值的时侯(即从59秒加1回到0秒时),就将新的时、分值依序与控制时刻表中的每一个当天星期数有效的非空时刻进行比较,与开启时刻相等则将驱动负载的输出开关量置为有效,与关闭时刻相等则将驱动负载的输出开关量置为无效。 4 《微机原理及接口技术》课程设计 二、总体设计规划与方案论证 此程序主要实现微电脑时控开关的校时和定时以及自动开关驱动负载的实现,以及手动开关驱动负载的共功能,进程安排如下: 设计方案论证: 课程设计进度安排表 时间 任务 2015.6.8. 听老师讲解设计思路做笔记,并进行初步构思 2015.6.9. 实现时钟模式下校时功能的设计 实现定时模式下校时功能的设计以及时钟模式和定时模式的切换设 2015.6.10. 计 2015.6.11. 对定时的八组状态和四组周模式切换状态惊醒反复测试 2015.6.12. 实现解锁功能以及按键音功能,对一些辅助程序进行编写 2015.6.13. 熟悉程序功能原理 2015.6.14. 复习原理,准备答辩 2015.6.15. 对当前功能再测试确认 2015.6.16. 请老师验收 2015.6.17. 答辩 2015.6.18. 书写课程设计报告 2015.6.19. 书写课程设计报告说明书 2015.6.20. 书写课程设计报告说明书 2015.6.21. 书写课程设计报告说明书 开关用PB0到PB7独立式按键方法论证: 方案:选取滚存单元,以及检测开关量输入单元,读取开关按键的前态和新态,进过滚存消抖后,再判断开关是否被按下,来执行按下后的功能。 锁键功能方法论证: 方案:编写一个锁键的进程码和其他非锁键进程码,在锁键状态下按下取消恢复键,用一个单元存下它按下的次数,每按下一次加一,加到四时清零,再用一个单元设定两次按下的时间间隔不得超过一秒,如果超过一秒就把锁键的进程码调出,再次发送给进程码 5 《微机原理及接口技术》课程设计 存放单元,执行。如果在解锁状态下,计时十五秒没有任何操作,那么,把锁键的进程码调出,再次发送给进程码存放单元,执行。 输出指示灯方法论证: 方案:输出指示灯分别用来输出显示:星期、锁键、开、自动、关、负载。P1口是星期指示灯的输出显示,U5口是开、自动、关、负载指示灯的输出显示。P1.1~P1.7表示星期一~星期天,PA0表示锁键,PA2表示开,PA3表示自动,PA4表示关,PA7表示负载。(“0”有效,驱动LED灯亮) 设置一个“界面进程码”存放单元 方案:设计一个进程码存放单元,通过对进程码的改变来切换当前模式。 界面进程码安排 00H 锁键的基本界面 01H 基本界面 10H 定时时刻1开 11H 定时时刻1关 12H 定时时刻2开 13H 定时时刻2关 14H 定时时刻3开 15H 定时时刻3关 16H 定时时刻4开 17H 定时时刻4关 控制负载开关自动方法论证: 手动|自动档位运行码安排 00H 关 01H 自动 02H 开 03H 自动 设计一个进程码存放单元,通过对进程码的改变来切换当前手动|自动切换模式。根据如下档位运行码的改变来进行档位的切换,用一个单元给来储存这个手动|自动档位运行码,每按下一次切换按键就对这个单元里的立即数加一,加到03H后,再按下按键回到00H,这样就实现了手动|自动档位运行码的切换。 6 《微机原理及接口技术》课程设计 通常时钟模式下校时、校分、校星期方法论证: 方案:首先要把通常模式下的时钟进程码发送给进程码单元,检测按键是否被压下,如果有压下,每按下一次校时键,时钟加一,加到24时跳转到00,每按下一次校分键,分钟加一,加到60时跳转到00,与此同时,秒单元清零。按下星期键,星期的指示灯按照星期一~星期天开始移位,预先设置一个星期表,按照表格对当前星期进行查询,读取到当前星期后发送,驱动点亮指示灯。当星期为星期天时,时钟时刻是:23::59:59,星期天,那么在下一秒来到时,时钟变为:00:00:00,当前星期为星期一。 定时模式下校时、校分、校星期方法论证: 方案:首先要把通常模式下的时钟进程码发送给进程码单元,检测按键是否被压下,如果有压下,每按下一次校时键,时钟加一,加到24时跳转到00,每按下一次校分键,分钟加一,加到60时跳转到00,在定时模式不对秒单元操作。在校星期时,按下校星期键,星期按照预先编写好的四种模式进行切换,四种模式的切换由查表获得。其中定时时刻表里的“开”、“关”模式由星期码的D0位决定,“1”为“关”,“0”为“开”。最后两位为周循环模式码00、01、10、11,四种状态对应预先设定好的四种状态模式。控制时刻表如下图所示: 控制时刻表 40H 星期 41H 分 1开 42H 时 43H 星期 44H 分 1关 45H 时 46H 星期 47H 分 2开 48H 时 49H 星期 50H 分 2关 51H 时 52H 星期 53H 分 3开 7 《微机原理及接口技术》课程设计 54H 时 55H 星期 56H 分 3关 57H 时 58H 星期 59H 分 4开 60H 时 61H 星期 62H 分 4关 63H 时 如果要算出时刻首地址那么编写时刻表首地址转换子程序:核心是(当前值-10H)*3+40H,把计算得到的值回存。如果要计算出当前的组次,右移一位,相当于除以2。“开”和“关”模式则可以通过判断进程码最低位的奇偶性把“开”和“关”的序号发送给存储单元。在设定时刻时,如果按下取消恢复键,就可以对定时时刻进行取消,也就是把星期的D0位置“1”。 控制开关负载时间论证方法论证 方案:在档位码为“开”时负载“常开”,在档位码为“关”时负载“常闭”,在档位码为“自动”时,要把当前的时钟时间与预先设定好的时间作比较,并且是与八个时刻依次作比较,这样避免了在定时时刻,时间交叉,使设备无法完成用户所需要的有效定时工作需求。比如在同一时刻既有开要求又有关要求,造成设备无法获取正确信息,这样把当前的时钟时间与预先设定好的八个时刻依次作比较,这样负载最终的工作状态就可以取决于最后一次设定的工作状态。 按键音实现方法论证: 用一个单元的一位作为按键提示音标志位,根据标志位是否有效来判断有否按下按键,按下按键则提示音响,提示音响的时间通过主流程的时间来配合决定,主流程刷一遍大约是10ms,所以把主流程刷10遍,那么可把按键提示音设定为响0.1s。 8 《微机原理及接口技术》课程设计 三(资源分配 1.系统资源分配 AT89S51的资源分配 端口 资源配置 P0 数据总线和地址总线 P1 LED灯 P2 P2.0(8255-U3片选端) P2.1(8255-U5片选段) P3 IT1P P3.2(蜂鸣器) 其他 电源输入 复位输入 接地 选通信号 晶振 读写端口) 8255-U3的资源分配 端口 资源配置 PA 输出“字段码” PB 输出“字位码” PD 数据总线与AT89S51传送数据 其他 电源端口 复位输入 片选端口 控制端口 读写端口 8255-U5的资源分配 端口 资源分配 PA LED灯(L8~L15) PB PB按键 PD 数据总线和AT89S51传送数据 其他 电源端口 复位输入 片选端口 控制端口 读写端口 9 《微机原理及接口技术》课程设计 2.硬件资源具体分配 名称 作用 名称 作用 PB0 取消/恢复键 L5 开 PB1 校时 L7 负载指示灯 PB2 校分 L9 星期一指示灯 PB3 校星期 L10 星期二指示灯 PB4 自动/手动键 L11 星期三指示灯 PB5 定时键 L12 星期四指示灯 PB6 时钟键 L13 星期五指示灯 L0 锁键指示灯 L14 星期六指示灯 L3 关 L15 星期日指示灯 L4 自动 数码管 显示界面 3.微处理器内部存储器单元分配及数据定义 数据单数据定义 码制 取值范围 对应关系 元 十六10H 15S计数单元 00H-0FH 非锁键状态下持续无操作的时间 进制 十六11H 按键按下次数 00H-04H 锁键状态下“取消恢复”键按下的次数 进制 十六锁键状态下,当前按下“取消恢复”键距12H 1S计数单元 00H-64H 进制 上次按下此键的时间间隔 十六13H 按键按下次数 00H-04H 非锁键状态下“取消恢复”按下的次数 进制 十六非锁键状态下,当前按下“取消恢复”键14H 1S计数单元 00H-64H 进制 距上次按下此键的时间间隔 键音回馈计时十六17H 00H-0AH 有按键按下,蜂鸣器响的时间 单元 进制 十六锁键状态:00H、非锁键状态:01H、定时状20H 进程码 00H\01H\10H-17H 进制 态:10H~17H 十六21H 档位码 00H-03H 关:00H、开:02H、自动:01H\03H 进制 定时模式下的十六22H 10H-17H 对应“1开”......“4关” 进程码 进制 各标志位存储十六23H.0满1秒 23H。1满1分钟 23H。2有23H ... 单元 进制 按键压下(按键提示音) 10 《微机原理及接口技术》课程设计 周循环工作模十六00000001/1000000 00H 1234567 / 01H 24H 00H-03H 式码 进制 123456...... P1口输出缓冲十六P1.0锁键,P1.3关,P1.4自动,P1.525H ... 单元 进制 开,P1.7负载 当前星期八位十六26H ... 点亮相应的指示灯指示当前星期 输出码 进制 PA口输出缓冲十六28H ... 只是当前星期或者周循环工作模式 单元 进制 开关量信号新十六2EH ... 2EH.0对应PB0....... 态 进制 开关量信号旧十六2FH ... 2EH.0对应PB0....... 态 进制 数码显示器输十六30H-37H ... ...... 出缓存单元 进制 十六38H 256TM计数单元 00H-24H 约277.8us加一 进制 百分之一秒计BCD39H 00H-59H 数单元 码 实时时钟秒计BCD3AH 00H-59H 数单元 码 实时时钟分计BCD3BH 00H-23H 数单元 码 实时时钟时计BCD3CH 00H-06H 数单元 码 实时时钟星期十六3DH ... 计数单元 进制 十六40H-57H 定时时刻表 ... 进制 十六P1 驱动L0~L7 ... 进制 十六P3.2 控制蜂鸣器响 0或1 0:蜂鸣器响,1:蜂鸣器不响 进制 11 《微机原理及接口技术》课程设计 四(总程序流程 开始 自检及总初始化 调用按键扫描子模块程序 调用锁键处理子模块 调用定时、时钟、取消/恢复处理子模块 调用通常模式下时钟调校子模块 调用定时下时钟调校子模块 调用通常模式下星期显示子模块 调用拆字子模块 调用显示更新子模块 调用运行方式切换子模块 调用输出负载控制子模块 调用输出子模块 12 《微机原理及接口技术》课程设计 五(数据初值说明 MOV SP,#6FH ;总初始化,设定栈底指针(从70H~7FH共16个单元作为堆栈用) CLR P3.2 ;蜂鸣器响 LCALL D1S ;延时1S SETB P3.2 ;关蜂鸣器 ;U3,A 和B口控制数码管显示 MOV DPTR,#0FEFFH ;对8255A(U3)接口芯片初始化,驱动键盘显示器(数码管),A:字段码,B:字位码 MOV A,#89H ;设定为A输出(驱动字段)、B口输出(驱动字位),C口输入 89H=1000 1001H MOVX @DPTR,A ;写入方式控制字 MOV DPTR,#0FEFCH ;DPTR指向U3-A MOV A,#0FFH ;置八段均不亮的字段码(8255A初始化后送全暗代码) MOVX @DPTR,A ;输出,关数码显示器(段输出口初始驱动全为‘1'无效) MOV DPTR,#0FDFFH ;对8255A(U5)接口芯片初始化,B口控制PB按键输入,A口控制L8-L15灯 MOV A,#8BH ;设定为A口输出(驱L8,15),B口输入(按钮PB0,7),C口输入(开关SW0,7) MOVX @DPTR,A ;写入方式控制字 MOV DPTR,#0FDFCH ;DPTR指向U5-A口 MOV A,#0FFH ;置八位输出均为‘1'无效 MOVX @DPTR,A ;输出,令L8-15初始不亮 MOV P1,#00H ;P1口输出全‘0',所驱动的L0,L7指示灯全亮 LCALL D1S ;延时1S MOV P1,#0FFH ;关闭L0-L7灯 13 《微机原理及接口技术》课程设计 MOV 30H,#10H ;30H-37H为显示缓冲单元,初始值令显示‘- 8951 - MOV 31H,#12H MOV 32H,#01H MOV 33H,#05H MOV 34H,#09H MOV 35H,#08H MOV 36H,#12H MOV 37H,#10H ;37H对应最高位(左边) MOV 38H,#00H ;38H单元为实时钟256TM计数单元,清0 MOV 39H,#00H ;39H单元为10mS计数单元,清0 MOV 3AH,#45H ;秒单元初值 MOV 3BH,#59H ;分单元初值 MOV 3CH,#23H ;时单元初值,时钟初值23:59:45 MOV 3DH,#00H ;3DH单元:存放星期(01H-07H) MOV TMOD,#20H ;初始化T1为定时方式2 MOV TL1,#00H ;置T1计数初值 MOV TH1,#00H ;即每256TM请求中断 SETB EA ;开中断总允许 SETB ET1 ;开T1中断允许 SETB TR1 ;启动T1定时工作 MOV 10H,#00H ;10H单元为 非锁键状态下 无按键操作的计数单元,每秒计数1次,共15次 MOV 11H,#00H ;11H单元为 锁键状态下 计按下“取消/恢复? ,共4次,退出锁键? MOV 12H,#00H ;锁键下,两次按下"取消/恢复"键时间间隔 每循环+1,共10ms*100次,共1s MOV 17H,#00H ;按键提示音时间计数单元 每次少于10ms*10次, 即0.1s MOV 20H,#00H ;界面进程码00H(锁键) 01H(非锁) 10H~17H(定时) MOV 21H,#00H ;运行档位码(开-自动-关) 00H(关)-01H(自动)-02H(开)-03H(自 14 《微机原理及接口技术》课程设计 动) MOV 22H,#10H ;10H~17H界面进程码 MOV 23H,#00H ;23H.0满1秒 23H。1满1分钟 23H。2有按键压下(按键 提示音) MOV 24H,#00H ;周循环模式序号码 00H-03H(4种) MOV 25H,#0FFH ;(L8-L15灯)输出缓存单元 MOV 26H,#0FDH ;通常模式星期显示码 MOV 27H,#00H ;定时界面序号x3 MOV 2EH,#0FFH ;新扫描到的键号 MOV 2FH,#0FFH ;旧扫描到的键号 MOV 28H,#0FFH ;灯L0-L7的显缓单元,p1口缓存单元 MOV R0,#8 ;定时下 共8组开设定时刻 MOV R1,#40H ;对40H~57H单元(控制时刻表地址)给初值 CLOOP:MOV @R1,#01H ;01H=0000 1111 40H最低位置为1无效 15 《微机原理及接口技术》课程设计 六.局部程序说明 1. 开关量输入及消抖动(XDPB): 开关量用PB0~PB7独立式按键,开关量输入要进行消抖动处理,方法是用2FH单元存前态,2EH单元存现态,分别用2DH~29H等五个单元滚存消抖动,从片外把的高低电平亮采集回来到片内,比较近五次输入的电平值不一致则可以对照新旧态,消抖动后把开关信息的结果存到2FH和3FH单元。 2. 锁键功能处理子模块程序(SJ): 利用20H单元存储的进程码判断当前状态,如果进程码为00H为锁键状态,如果进程码为01H为非锁键状态。如果进程码为10H~17H为定时状态。如若进程码为00H为锁键状态,那么判断取消恢复按键是否被按下(PB0),有按下那么11H单元加1,当PB0有两次被按下时那么判断两次之间的间隔是否超过1S,如果超过1S那么两次按下的操作结果视为无效操作,如果没有超过1S那么判断是否有11H单元自减是否有四次借位,这样可以判断按键是否有被按下四次,如果满足以上条件,那么退出锁键状态,进入非锁键状态。在非锁键的状态下,判断是否有按键按下,按下为1,没有按下为0,如果在非锁键状态下没有按键按下,那么判断作标志位的23H.0单元是否被置为1,也就判断是否满1S,如果满1S,就把10H加1即新一秒到,15秒计数单元加1,判断有没有加到15,如果加到了那么把锁键进程码00H发送给20H单元,进入锁键状态,但是在此过程中,有按键按下的话,10H单元,也就是新一秒到,15秒计数单元要清零。 3.三个功能键:取消/恢复 定时 时钟: 1)取消恢复键:要对20H单元是否为锁键状态进行判断,如果是锁键状态则任何操作无 效,如果为非锁键状态那么: 2)定时:定时键(PB5)是否被按下,界面进程码缓存单元22H单元加1(10H~17H),其 初始值为10H,判断22H里的进程码是不是超过18H,如果超过跳转到10H,如果没有 超过则可以选定是哪一种定时状态。此时的定时状态分为8组,“定时”键则依次循 环切换为“1,„”、“2, „” 、“2,„”、“3,„ ”、 “3,„”、 “4,„ ”、 “4,„”、“1,„”。定时的八种状态分别分配40H单元到57H单元作为八组不同 状态的周、分、时的储存,每三个单元组成一种状态:例如:40H单元存储1开(1,) 周模式序号码,41H 存储分钟,42H存储秒钟,以此类推。但如果PB5没有被按下,那 16 《微机原理及接口技术》课程设计 么又分为以下两种情况。 3)时钟:判断PB6是被按下,如果被按下那么把时钟的进程码01H发送给20H单元,这 样就可以切换到时钟模式,在数码管上显示当前时间,星期指示灯上显示当前星期。 再判断20H单元的D4位是否为1,也就是判断是否为定时模式,时钟键按下后再次按 下定时按键,又回到1开状态。如果时钟键没有被按下,判断此时取消恢复键是否有 按下,如果取消恢复键按下,再判断界面是不是定时状态,也就是判断此时(20H)单 元里的进程码的D4位是“0”还是“1”,如果是“1”此时就是定时状态,那么保留 此次进程码的低四位,用当前的进程码或上立即数0FH,这样就保留了进程码的低四位, 把此结果存起来,用存起来的低位*3加上40H,的对应控制时刻表上的地址,此时方 可判断星期的D0位是否为“有效”或是“无效”,这样就能把定时的时刻取消或者恢 复。 4.开、自动、关三中运行方式处理子程序: 判断(20H)单元的界面进程码,来判断是否有锁,再判断“自动|手动”按键是否有按下,如果按下了,那么每一次按下就把存放档位进程码的(21H)单元里的立即数加一,每按下一次就加一次一,以此来切换档位进程码,判断运行档位码有否超过4,如果超过4,则重置回来00H,也就是“关”状态,如果档位进程码不超过4,判断此时是否是定式界面,如果是定式界面,屏蔽L9~L14,把(25H)里的立即数或上立即数7FH,因为L9为锁键,L15为负载,L11为“开”状态、L12为“自动”状态、L13为“关”状态。如果在非定式界面,屏蔽L9~L14,建立运行档位码的表格,通过查表的方式来向P1口的输出缓存单元输出有效的高低电平,来点亮当前档位的LED指示灯。 5.负载驱动子程序: 判断(21H)单元里此时的运行档位码,是不是“关”,如果是“关”,那么把驱动点亮P1口的25H.7置“1”,负载灯不亮,也就不驱动负载点亮。判断(21H)单元里此时的运行档位码,是不是“开”,如果是“开”,那么把驱动点亮P1口的25H.7置“0”,负载灯常亮,也就驱动负载点亮。判断(21H)单元里此时的运行档位码,是不是“自动”,如果是“自动”,那么判断是否满一分钟,也就是判断23H.1的这一位是不是“1”,如果是“1”,那么就判断为满了一分钟,如果满了一分钟才向下执行后面的指令,如果不满一分钟,那么就跳出返回。因为,在定时模式下校时只对校时和校分有作用,而不对秒钟作用,所以判断时间是否超过一分钟,方可动作。如果时间满了一分钟,就把此时的控 17 《微机原理及接口技术》课程设计 制时刻表的首地址计算出来,获取对应的控制时刻表的周循环模式地址,再判断周模式的D0位来判断这个时刻是否有效,将周循环与当前星期八位码比较,首先将它们相或后再异或,得出当前星期是否与预先设定的工作星期吻合,如果相同,那么星期位码为有效,如果为工作,那么取其序号*3,获取对应“控制时刻表”的时钟首地址,获取时钟显示码,把当前的时钟时间与定时的时间定时的时刻作比较,如果符合,那么再把分钟首地址单元取出来,获取到分钟显示码,把当期的分钟时间与定时的分钟时间作比较,如果符合,那么,再把当前时刻下的星期码拿出来,取出它的低位,来判断它的奇偶性,如果为奇数那么就为“开”状态,如果为偶数那么就为“关”状态。如果为“开”则负载点亮,如果为“关”则负载灯灭。如果星期的D0位为无效,转到下一个循环,也就是把一个一个定时时刻拿出来与当前时刻依次比较,比较对照八组“开”、“关”状态,来执行当前的动作。 6.定时模式下校时、校分、校星期处理子程序: 判断此时进程码的是否为定时状态,如果是定时状态,那么判断校时键是否有被按下,前态为“1”,现态是“0”则说明按键有被按下,调用首地址计算程序,计算出当前的星期的D0位是否有效,如果无效,就要把无效置为有效,回存起来。通过计算程序,把计算出来的时钟首地址取出来,按下校时键,在定时模式下的时钟加一,加到23时跳转到00,再把分钟单元的存储首地址取出来,按下校分键,分钟加一,加到59后调到00,再判断校星期键是否有被按下,如果按下了,从建立的周循环模式码表格中读取出预先设置好的周工作状态。周工作模式有“一二三四五六七”、“一二三四五六 ”、“一二三四五 ”、“ 六七”等四种,每次按下校星期键,就可以对这四种模式进行切换,调整。 7.通常模式下调时间子程序: 判断此时的基本界面是不是时钟界面,如果是时钟界面,那么当按下校时键的时候,时钟模式下的时钟加一,一直加到24跳转回00,当按下校分键的时候,时钟模式下的分钟加一,一直加到60跳回到00,与此同时,每按下一次校分键,就要把秒单元清零,再判断校星期键有否被按下,如果被按下,那么对星期的存储单元加一,一直加到7,下一次按下跳转回到1,这样就做到了一周的一个循环。 8.拆字子模块程序: 对拆字模块要分两种情况作讨论,第一种是定时模式,第二种是时钟模式,分别要把它们的时分秒拆字拆出来为后面的显示更新子程序做准备。在定时模式之中,计算出它的分钟地址和时钟地址,分离出它们的高四位和第四位,分别存储在两个缓存单元;在时钟 18 《微机原理及接口技术》课程设计 模式下之中,把它的时、分、秒,分别取出来,分离出它的高四位和第四位,分别把分离出来的送到显缓单元。送到显缓前都要把它们转换成BCD码,再进行存储。 9.普通模式下的星期显示子程序: 判断当前模式是否为通常模式显示,如果是通常模式显示,利用查表,获取星期序号码,查表返回对应星期显示码,把查到的对应星期显示码存到26H单元,同时存到星期输出的缓存单元,为后面的显示更新子程序做准备。 10.显示更新子程序:判断是否定时界面 判断此时的界面是否是定式界面,如果是就把刚才定时模式下拆字拆好的时刻送到数码管显示单元显示出来,如果星期的D0位为有效,那么就把定时时刻显示在数码管上,如果星期的D0位为无效,就把“-”显示在数码管上。在时钟状态下显示,把拆字拆好的时钟、分钟、秒钟,送到数码管上显示出来。判断当前的进程码是不是锁键状态,如果是锁键状态,就把锁键指示灯置“0”,点亮。如果不是锁键状态,就把锁键指示灯置“1”,熄灭。再判断此时是否是定时界面,如果是定时界面,那么星期指示灯按照预先设置好的四种状态驱动星期指示灯点亮,如果此时是时钟界面,那么就把当前星期码驱动点亮星期指示灯点亮。 11.按键提示音处理子程序: 判断按键提示音的标志位23H.2是否为1,来判断按键有无被按下,有按下,蜂鸣器响,提示音的时间计数单元加一,一直加到0AH,也就是加十次,主程序刷一次10ms,刷十次,就用0.1s,蜂鸣器响0.1s,如果超过10次,那么把这个计数单元重置清零,并且把按键提示音的标志位23H.1置为“0”,蜂鸣器响,如果无按键按下,蜂鸣器关闭。 12.中断服务子程序: 在程序中采用T1的定时方式2,置T1初值为00H,则请求一次中断需要256TM,十二个时钟周期等于一个机器周期,每当加到255时,中断标志位溢出,执行中断程序,时钟走到24小时清零,分钟走到60清零,且时钟加一,秒钟加到60时,秒钟清零,分钟加一,星期从1加到7,加到7后又回到1。这样来调整并精确时钟的走时。 13.自检总初始化程序子模块: 对整个程序所用到的各个单元进行总初始化赋值,对各个所用到的显缓单元进行总初始化处理,对开机初始进行设定。设置单片机复位入口地址为 0000H,设置堆栈指针为#6FH。在进行总初始化之前,延时 63MS 保证各芯片均退出复位状态 延时后,系统首先对 8255(U3)接口芯片初始化(A8 线选),设定为 A 口输出(驱动字 19 《微机原理及接口技术》课程设计 段)、B 口输出(驱动字位)、C 口输入。接着写入数码管均不亮字 段码。接着对 8255(U5)接口芯片初始化(A9 线选),设定为设定为 A 口输出(驱动 L8~L15)、B 口输入(按钮 PB0~PB7)、C 口输入(开关 SW0~SW7)。接着置 8 位为 1 输出,令 L8~L15 均不亮。接着使蜂鸣器输出端置低电平,蜂鸣器响,调用 1S 延时子程序后,关蜂鸣器。同样,控制 P1 口,使 L0~L7 均亮 1S。开启中断总允许,初始化定时器 T1 为定时方式 2,同时置计数初值,启动T1 工作。出初始设置 2 组定时开关窗时间和开度值。接下来初始化各进程单元,各输出缓存,时间控制单元等自检后,方便用户知道该产品是否出现功能障碍,确保系统各部分功能正常,以便用户使用。 20 《微机原理及接口技术》课程设计 七.系统功能与用户操作使用说明 微电脑时控开关在用户自行设定下能以天或星期循环且多时段的控制用电设备的开闭。 在开机时,蜂鸣器响,数码管显示为“- 8951 -”,主要是 led 灯 L0~L7,蜂鸣器,数码管,检验是否存在功能障碍。 时间设定以分钟为单位,每日可设置八组打开和关闭的时刻,其中有四组是打开时刻,四组是关闭时刻,在根据用户要求设定下的打开和关闭时刻随时可以根据用户的需求更改或者是取消,以满足适应跟多复杂设备的工作需求,在更改设定时间时也可以随时跳转到时钟模式,方便查看现在时刻,使得在设定工作时刻时减少或者避免人为错误而导致微电脑开关误指令,致使控制设备发生误动作,所造成的可避免损失。在时钟模式下,用户可以自行设定调节当前时刻,每按下一次调时键,时钟走一小时,每按一次调分键,分钟夺走一分钟,与此同时秒钟会清零,也就是说,每调节一次分钟走时,秒种从零开始走时。如果时钟被加到24时,会跳到00,也就是说,设备的时间控制是二十四小时制的,如果分钟被加到60时,会跳到00,同时时钟加一,当秒钟加到60时,秒钟清零,分钟加一。在时钟模式下调节星期键来选择当前星期,每按下一次星期键,当前星期的指示灯会右移一位,当移位到星期天时再按下星期键跳转到星期一。结合当前时钟,如果现在时刻是:23::59:59,星期天,那么在下一秒来到时,时钟变为:00:00:00,当前星期为星期一。这样整个时间的工作系统就联系了实际时间走势来设计,使整个设计的工作方式更加准确,更加人性化。在定时模式下调节星期时,要根据用户要求,预先设置好所要求的每天的工作模式,这种以天为单位的工作模式四组不同的工作模式,例如本设计中,预先设计好的:“一二三四五六七”、“一二三四五六 ”、“一二三四五 ”、“ 六七”等四种模式,在按下调星期键时,可以按照用户需求进行切换设定,在设定过程中根据星期指示灯的亮暗来判断是哪一个模式,或者来设定工作的天数。 在整个控制工作过程中必须是在解锁状态下完成,如果超过解锁状态的15S以后,那么所有按键失效,设备按照未上锁之前的设定进行工作,如果此时要对空是系统进行调节,那么要先解锁,按下四次调时键,且每一次按下的时间不超过1S,那么就进入解锁状态,可以对设备控制进行再一次的设定或者是操作,如果不满足以上的解锁要求,就不能进入到解锁状态,设备将一直保持未解锁状态。 21 《微机原理及接口技术》课程设计 数码管显示有四种显示情况,第一种,在通常模式下时钟模式显示:时分秒。第二种,在定时模式下显示:组数、时、分。第三种,在定时模式下,取消定时,仅显示组数以及定时时间初始界面。 手动开启、自动定时控制、手动关闭三种,在显示时钟的基本显示界面且非锁键状态下,按“自动/手动”键使其在“开”——从开转到“自动”——“关”——从关转到“自动”四个运行档位状态间循环切换, “开”、“自动”、“关”指示灯相应点亮标示。在设置定时时刻期间,“开”、“自动”、“关”指示灯均熄灭,“自动/手动”切换键无效。 22 《微机原理及接口技术》课程设计 八(课程设计总结 两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学相互探讨,相互学习。学会了步步为营,学会了虚心求教,学会了一丝不苟。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。通过这次课程设计,综合运用本专业所学课程的理论和生产实际知识进行设计工作的实际训练从而培养和提高我独立工作能力,巩固与扩充了课程所学的内容,掌握设计的方法和步骤,掌握设计的基本的模具技能懂得了程序运用之间的相互协调配合,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。 在这次设计过程中,体现出自己单独设计程序的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 在刚开始课程设计的第一天,我们在老师的带领下再一次熟悉了设计要求,老师针对各个模块给我们悉心讲解,把各个模块设计的要领讲给我们,我在做笔记的同时,思路也跟随着老师的步伐,把每个子程序模块的编写方法连成一个整体,回到宿舍我把上课的笔记再一次整理出来,对照老师给的任务书,一条一条对照这些实现方法加深理解,我发现原本任务书上枯燥难懂的文字,进过老师的分析之后变得更加明朗了,我自己试着把一些程序的细节自己编写,第二天烧在板上,来观察实验的现象是否与要求一致,我积极与同学讨论,求教一些细心努力的同学,结合上自己的思考,编写程序。但是在编写的过程中,我常常会忽略了程序模块之间的互相配合,从而造成一些功能难以实现,我借鉴同学的程序,来完善自己这些不完善的程序,在这个过程之中我发现了自己的很多问题,有的是计算错误,有的是粗心大意,但是我觉得单单只是基于2013.asm这个程序或者是平时实验中的那些程序来完成课程设计是远远不够的,因为每一个程序都有自己的特征,和每一个程序的特点,当一个产品从零开始设计的时候,我觉得一定要先设计简单的而且是必须的模块,要把主干的程序设计好了就可以把它不断地填充,不断地完善,最后再把自检总初始化程序通过这些子模块给不断地填充补充出来。还有一些附加的,脱离了这个模块程序依然运行无误的,这样的程序也可以后面编写。 在编写大型的程序的时候,我觉得查表是一个简洁,快速的方法,通过查表读取的数据,出错率会减小,而且方便理解,同时也便于查找错漏,可以随时针对它修改,因为这种漏洞往往是由于粗心所造成的,并不是逻辑的错误,所以它并不会影响整个主干程序的逻辑,如果是逻辑错误,那么修改起来可能就会大费周章,甚至可能推翻重来。 另一个好的方法就是设置标志位,可以是抽出一单元用它的八位码里面的某几位来作为标志位,也可以像这次的程序中用周循环码的为来作为周循环模式和表征本组数据有效或者无效,我觉得这是本个程序之中的亮点,是画龙点睛之笔。 23 《微机原理及接口技术》课程设计 在这次程序中,我觉在设计一个产品的时候,它的开机模式没有必要太过与华丽,因为要实现华丽就必须要花时间,那么用户在用起来也不是那么方便。我觉得针对这个产品我有一些自己的改进方法,第一个,就是拓展版块的按键提示音,我觉得每按下一次按键都发出提示音不是很巧妙,我认为可以在一些关键的按键上有提示音,或者是第一次按下时有提示音,按下同一个按键如果期间不超过2s按下,那么就没有提示音。无论是定时模式下还是时钟模式下的校时、校分、校星期只能往上增加,最后置零,如果是可以另设一个按键可以减的话那么在用户校时的时候可以节约大量的时间。 在这次课程设计中,我学习到了很多原来自己不了解的知识,也发现了设计程序所带来的艰难和成就感。我觉得会学不如会做,会做还要可以说的出来,不然就算再厉害的程序员,别人也无法理解你所设计的程序有多厉害,所以我觉得人一定要学会表达自己。这是一个职业人所必须具备的逻辑能力。 我在此感谢我们的余力老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次模具设计的每个实验细节和每个数据,都离不开老师您的细心指导。 同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。 由于学生的设计能力有限,在设计过程中难免出现错误,恳请老师给我点拨,学生必定虚心受教。 24
/
本文档为【微电脑时控开关的控制程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索