单片机作息时间课程设计正文.doc

湖南工学院单片机作息时间课程设计

收藏

压缩包内文档预览:(预览前20页/共34页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:512583    类型:共享资源    大小:268.93KB    格式:RAR    上传时间:2015-11-11 上传人:QQ28****1120 IP属地:辽宁
6
积分
关 键 词:
毕业设计
资源描述:
湖南工学院单片机作息时间课程设计,毕业设计
内容简介:
湖南工程学院课程设计 第 1 页 共 34 页 第 1 章 系统设计要求与方案确定 1.1 设计要求 以单片机为核心, 设计一个具有定时和计数功能的智能化作息时间控制器。该控制器要求的 功能 有 :按作息时间接通 /断开电铃;课间接通 /断开播放音乐设备;时钟显示。 作息时间控制器常用于学校教学楼的时间控制,利用单片机内部定时器实现时间基准定时,并配合“启动”、“复位”等按键的操作完成铃声、音乐的开 /停控制,显示的内容要求有时、分、秒各两位。 1.2 设计思路 根据设计要求,初步思路如下: 1) 计时单元由单片机内部的定时器 /计数器 T1来实现。 2) 时间显示功能通过 LED数码管动态 扫描来实现。动态扫描的定时时间由单片机内部的定时器 /计数器 T0实现。 3) LED 数码管的段码输入和位码输入 由 8051 的 P0 口、 P1 口 产生。 4) 时间调整通过接入按钮电路来实现。系统共设 三 个键,分别定义为: SET 功能: 设置当前时间,即当电子时钟的时间有误差时,需要随时对它进行调整,使用 SET键与 +1键、 RET键配合来完成这一功能。 +1调整键功能 : 分别对时间值的小时十位、小时个位、分的十位、分的个位进行 +1调整,即该按键每按下一次,对应的时间调整位 +1。 RET 确认键功能:确认,即对 +1 调整位进行确认,该键 按下时,说明被调整位的值已经确定,转去调整下一位。 5) 打铃是用 P1 口输出来控制继电器的闭合,从而控制打铃和放音乐。为了方便观察,用发光二极管来代替继电器,即 P1.7 对应的发光二极管亮代表电铃 接通 , 若 不亮 代表 电铃 断开 , P1.6 对应的发光二极管亮代表放音机 接通 , 若 不亮 代表放音机 断开 。 nts作息时间控制系统 第 2 页 共 34 页 第 2 章 控制系统 硬件电路设计 2.1 硬件电路的设计方案及框图 根据设计要求与设计思路,确定该系统的控制方案,图 1 所示为开系统设计方案的硬件电路的设计框图。硬件电路由 8 个部分组成,即单片机按键输入电路、单片机时钟电路、单片机复位电 路、 6 位 LED 动态扫描电路、 语音输出与打铃电路 。下面将分别对硬件电路的设计和器件的选择做详细介绍。 图 1 硬件电路设计框图 2.2 单片机的选择 当今单片机厂商琳琅满目,产品性能各异。 常用的单片机有很多种:Intel8051 系列、 Motorola 和 M68HC 系列、 Atmel 的 AT89 系列、台湾Winbond(华邦 )W78系列、荷兰 Pilips 的 PCF80C51系列、 Microchip公司的 PIC 系列、 Zilog 的 Z86 系列、 Atmel 的 AT90S 系列、韩国三星公司的KS57C系列 4 位单片机、台湾义隆的 EM-78系列等 。 根据初步设计方案的分析,设计这样一个简单的应用系统,可以选择带有 EPROM 的单片机,应用程序直接存储在片内,不用在外部扩展程序存储器,电路可以简化。该系统的设计我们采用 8051 芯片。 3 个按键 输入电路 时钟电路 复位电路 单片机 6 位 LED 动态扫描电路 语音输出与打铃电路 nts湖南工程学院课程设计 第 3 页 共 34 页 图 2 所示为采用双列直插式封装的 8051AH 芯片管脚图。各管脚的功能如下。 1. 电源管脚 VCC( 40 脚 ) :接 +5V; VSS( 20 脚) : 接地。(注:管脚 未 画出) 2时钟信号管脚 X1( 19 脚), X2( 18 脚):外部时钟信号的两个管脚 3控制线 1) RESET( 9 脚) :用作复位输入端。 2) EA/VP( 31 脚): EA为访问内部或外部程序存储器 的选择信号。对片内 EPROM 编程市时,此管脚(作 VP)接入 21V 编程电压。 3) ALE/P( 30 脚):当访问外部存储器时,ALE信号的负跳变将 P0口上的低 8位地址送入锁存器。当对内 EPROM 编程时,该管脚( P) 图 2 8051AH 管脚图 用于输入编程脉冲。 4) PSEN( 29 脚):外部程序存储器读选通控制信号。 4输入 /输出口线 1) P0 口( 32 39 脚): 8 路漏极开路型双向并行 I/O 口。在访问外部 存储器时, P0 口作为低 8 位地址 /数据总线复用口,通过分时操作,先传送低 8 位地址,利用 ALE 信号 的下降沿将地址锁存,然后作为 8位数据总线使用,用来传送 8 位数据。在对片内 EPROM 编程时, P0口接受指令代码;而在内部程序校验时,则输出指令代码,并要求外接上拉电阻。外部不扩展而单片应用时,则 作双向 I/O 口用, P0 口能以吸收电流的方式驱动 8 个 LSTTL 负载。 2) P1 口( 1 8 脚):具有内部上拉电阻的 8 位准双向 I/O 口。在nts作息时间控制系统 第 4 页 共 34 页 对 片内 EPROM 编程及校验时,它接收低 8 位地址。 P1 口 能驱动 4 个LSTTL 负载。 3) P2 口( 21 28 脚):具有内部上拉电阻的 8 位准双向 I/O 口。在外接存储器时, P2 口作为高 8 位地址总 线。在对片内 EPROM 编程及校验时,它接收高 8 位地址。 P2 口驱动 4 个 LSTTL 负载。 4) P3 口( 10 17 脚): 8 位带有内部上拉电阻的准双向 I/O 口。每一位又具有如下的特殊功能(或称第二功能): P3.0( RXD): 串 行输入端。 P3.1( TXD): 串 行输出端。 P3.2( INT0):外部中断 0 输入端,低电平有效。 P3.3( INT1):外部中断 1 输入端,低电平有效。 P3.4( T0):定时 /计数器 0 外部事件计数输入端。 P3.4( T0):定时 /计数器 0 外部事件计数输入端。 P3.5( T1):定时 /计数器 1 外部事件计数输入端。 P3.6( WR):外部数据存储器写选通信号,低电平有效。 P3.7( RD):外部数据存储器 读 选通信号,低电平有效。 2.3 时钟与复位电路的设计 单片机 工作的时间基准是由时钟电路提供的。在单片机的 X1 和X2 两个管脚,接一只晶振及两个电容就构成了单片机的时钟电路,如图 3( a)所示。 电路中,电容器 C1 和 C2 对振荡频率有微调作用,通常的取值范围为( 30 10pF) 。石英晶体选择 6MHz 或 12MHz 都可以,其结果只是机械周期时间不同,影响计数器的计数初值。 单片机的 RST 管脚为主机提供一 个外部复位信号输入端口。复位信号是高电平有效,高电平有效的持续时间应为 2 个机器周期以上。 单片机的复位方式有上电复位和手动复位两种。图 3( b)所示是51 系列单片机常用的上电复位和手动复位 组合电路,只要 VCC 上升时nts湖南工程学院课程设计 第 5 页 共 34 页 间不超过 1ms,它们都能很好地工作。复位以后,单片机内部各部件恢复到初始状态。 (a)时钟电路 (b)复位电路 图 3 时钟与复位电路 2.4 六位 LED 动态扫描电路 2.4.1 数码管电路 数码管是 单片机系统中常用的显示界面, 可以显示 “1 、 2、 3、 4、 5、 6、 7、 8、 9、 0” 和十六进制中的 “A 、 B、 C、 D、 E、 F” 及小数 点 “.” , 数码管怎样来显示 1, 2, 3, 4 呢?数码管实际 上是由 7个发光管组成 8字形构成的,加上小数点就是 8个。分别被命名为 A,B,C,D,E,F,G,H 和 DP。如果要显示一个数字 2, 那么 A、 B、 G、 E、 D这 5个段的发光管亮 ,B、 E、 H(小数点)不亮 ,就可以了。 nts作息时间控制系统 第 6 页 共 34 页 图 5 六位 LED 显示器内部结构原理 图 由图 4 可知:要使数码管发光必须满足两个条件,一、 COM 端为高电平。二、在 A-G端的对应部分输入低电平。这样电流流过 相应的字段,数码管就会显示相应的字符了! 图 5所示, 由于数码管的 A、 B、 C.DP端都并在一起 , 要 使 每个数码管显示各自的内容, 所以必须使用动态扫描方式 。 表一 字符代码 表 显示数字 A B C D E F G DP 16进制 代码 0 0 0 0 0 0 0 1 1 03H 1 1 0 0 1 1 1 1 1 9FH 2 0 0 1 0 0 1 0 1 25H 3 0 0 0 0 1 1 0 1 0DH 4 1 0 0 1 1 0 0 1 99H nts湖南工程学院课程设计 第 7 页 共 34 页 5 0 1 0 0 1 0 0 1 49H 6 0 1 0 0 0 0 0 1 41H 7 0 0 0 1 1 1 1 1 1FH 8 0 0 0 0 0 0 0 1 01H 9 0 0 0 0 1 0 0 1 09H A 0 0 0 1 0 0 0 1 11H B 1 1 0 0 0 0 0 1 C1H C 0 1 1 0 0 0 1 1 63H D 1 0 0 0 0 0 0 1 85H E 0 1 1 0 0 0 0 1 61H F 0 1 1 1 0 0 0 1 71H . 1 1 1 1 1 1 1 0 FEH 注: 对于想显示的字符只要查表的代码送 段码输入 口显示即可。 我们可以先点亮左边(右边亦可)第一位,其它的都熄灭,延时一定时间后,再点亮第二位,其它都熄灭 当点亮完最后一位时再从头开始下一循环。虽然在每一瞬间只有一只发光管被点亮,但由于人的眼睛具有视觉残留效应,只要所设定的延时时间恰当,所看到的所有发光管显示的都是稳定的字符,这就是动态显示方式。为了编程方便,对于上面的电路图,我们将可以显示的字符代码编制成表格 如表一所示。 2.4.2LED 的段码和位码驱动芯片的选择 由于选用动态显示,每一位数据的显示 是由段和位选信号共同配合完成的,因此,要同时考虑段和位的驱动能力, 而且 端 的驱动能力决定位的驱动能力。 选用 74LS273芯片 作为显示电路的 段码输出锁存,选用 74LS06芯片来进行反相和提高驱动能力,然后再接各 LED显示器的位控端 。 2.4.3LED 驱动电路与单片机的连接 nts作息时间控制系统 第 8 页 共 34 页 图 6 六位 LED显示接口电路 采用单片机的 P1口作为位码输出口,通过 74LS06 芯片驱动数码管的位控端。 74LS273 作为输出接口由 WR 及 A15组合信号控制,单片机的P0口作为数据线与 I/O数据线相连( 74LS273的口地址为 CFA0H)。 如图 6 所示为六位 LED显示接口电路 ,该电路的工作原理是:从 字符代码表格 中取出显示 字符 ,通过 74LS273芯片锁存、译码和驱动作用,输出具有一定驱动能力的七段字型码,由于六位 LED的端码输入管脚是并联在一起的 ,所以每位 LED都获得这个段码。若要控制在每一时刻只有一位 LED被点亮,必须由位码信号控制。 P1口的低 6位输出位码信号经反相后接 LED的位码控制端,因此 P1 口的位码信号在每一时刻只有一位是“ 1”,其它为位为“ 0”,然后按时间顺序改变输出“ 1”的位置。详细的 LED动态扫描显示程序请参见软件设计部 分 T0_ SEV子程序的设计。 nts湖南工程学院课程设计 第 9 页 共 34 页 2.5 按键电路设计与器件选择 该控制系统要用到时钟电路,所以要求能随时对当前时间进行调整。要实现这一功能,可以接入键盘电路。 图 7 按键电路 本系统只需要 3个按键,因此选用独立式键盘。如图 7所示,电路由按键和 3个电阻组成,按键可以才哟功能轻触开关,按键分别命名为 SET、+1和 RET键,电阻阻值都为 1K。将键盘直接与单片机的 P3口相接,用 P3.2口线通过按键 SET接入一个外部中断的请求信号 INT0; P3.0、 P3.1管脚作为 I/O 口使用。三个按键功能的设计思路如下 : 1) SET 键功能:设置当前时间,即当电子时钟的时间有误差时,需要随时对它进行调整,使用 SET 键与 +1键、 RET键配合来完成这一功能。 当 SET 键被按下时,在单片机的 INT0管脚产生一个低电平触发中断请求信号 , CPU响应中断请求时,就转移到 INT0 中断服务程序的入口地址,执行中断服务程序。 nts作息时间控制系统 第 10 页 共 34 页 设计 INT0的中断服务程序的功能是调整当前时间,程序的标号地址是 INTA。 2) +1调整键功能:分别对时间值的小时十位、小时个位、分的十位、分的个位进行 +1调整,即该按键每按下一次,对应的时间调整位 +1。 该信号与 P3.0管脚连接,当 P3.0工作在 I/O接口方式时,为 了保证能正确输入外部信息,在初始化程序中用指令“ SETB P3.0”对它进行编程,即将 P3.0 管脚作为输入口使用。 3) RET 确认键功能:确认,即对 +1调整位进行确认,该键按下时,说明被调整位的值已经确定,转去调整下一位。 该信号与 P3.1管脚连接,与 P3.0类似,用于 I/O 接口方式时,在初始化程序中用指令“ SETB P3.1”对它进行编程, 即将 P3.1管脚作为输入口使用。 键盘的硬件电路设计只是完成 3个按键信号可靠输入,要想实现键盘的输入功能,还要靠软 件编程来具体实现。设置当前时间的中断服务程序,请参见软件设计一章中的 INTA 子程序设计。 2.6 语音输出与打铃电路 设计要求到某一作息时间电铃或语音有输出。我们用发光二极管代替语音输出设备, 用代替电铃。电路设计如图 8所示。蜂鸣器作为三极管VT的集电极负载,当 VT导通时,蜂鸣器发出鸣叫声音; VT截止,蜂鸣器不发声 。 R是限流电阻。 蜂鸣器电路与单片机的接口: VT的基极接到单片机的 P1.7管脚, P1.7口作为输出口使用。当 P1.7=0时, VT导通,是蜂鸣器的两管脚获得将近5V的直流电压,蜂鸣器中有电流通过,而产生 蜂鸣音;当 P1.7=1时, VT截止,蜂鸣器的两管脚间的直流电压接近于 0V,蜂鸣器不发声。发光二极管与单片机的接口:发光二极管的阴极与单片机的 P1.6 管脚相连 。当P1.6=0时,发光二极管亮,表示有语音输出,当 P1.6=1 时,发光二极管灭,此时无语音输出。 nts湖南工程学院课程设计 第 11 页 共 34 页 图 8 语音输出与打铃电路 通过前面的设计过程,可设计出作息时间控制系统的硬件 总 电路如附录 A所示。 nts作息时间控制系统 第 12 页 共 34 页 第 3 章 控制系统软件 设计 3.1 软件设计方案确定 根据设计要求,我们将软件设计分成 6 个功能模块 ,分别是主程序模块、 数码管动态扫描模块 、 当前时间计时模块、当前时间调整模块、闹铃与语音、输出模块、数制转换模块 (如图 所示 )。 各功能模块都具有独立的功能,产生相应的结果 , 模块的具体设计 请 见后 面章节。 图 9 作息时间系统软件设计模块 3.2 内存空间分配 一般在程序设计前要对内存进行合理的分配,这样既可使得编程时心中有数,又可充分利用单片机内部 RAM 有限的存储空间。作息时间系统程序设计内存分配见表 2。 表二 内存空间分配 表 地 址 分 配 作 用 60H 7FH 堆栈区 40H 45H LED 段码显示缓冲区,存储显示字符 BCD 码,低四位有效 48H 4DH LED 位码显示缓冲区,存储 LED 位码信号,低六位有效 32H 34H 当前时间的二进制存储单元, 32H 存储小时, 33H 存储分, 34H主程序模块 数码管动态扫描模块 当前时间计时模块 当前时间调整模块 闹铃与语音输出模块 数制转换模块 nts湖南工程学院课程设计 第 13 页 共 34 页 存储秒。 29H 输入键值存储单元 30H 当 前调整位标志 31H LED 显示位数存储单元 02H 05H 计时用工作寄存器( 0 区 R2 R5) 18H 1AH 动态扫描用工作寄存器( 3 区 R0 R2) 2EH 控制字存储区地址指针暂存单元 6AH 控制字 开关操作码暂存单元 6BH 6DH 依次存控制字的秒值、分值和小时值 3.3 主程序设计 主程序的内容一般包括:主程序起始地址、中断服务程序入口地址、有关内存单元及相关部件的初始化和一些子程序调用等。主程序设计框图如图所示 。 1) 程序的起始地址: MCS-51 系列单片机复位后,( PC) =0000H,而 0003H 002BH 分别为各中断源的入口地址。所以,编程是应在0000H 处写一跳转指令。 2)主程序初始化内容:所谓初始化,是对将要用到的 MCS-51 系列单片机内部部件或扩展芯片进行初始工作状态设定。 MCS-51 系列单片机复位后,特殊功能寄存器 IE、 IP 的内容均为 00H,所以应对 IE、IP 进行初始化编程。 同时还要对一些存储单元进行初始化,这些内容都应在初始化程序中完成。参见 MAIN 标号地址到 LOOP 标号地址之间的内容。 3)代码转化程序:由于人们习惯使用十进制数,而计算机的键盘输入、输出以及显示常采用二进制编码的十进制数(即 BCD 码)。因此,在程序中经常要进行代码转换。其程序见 LOOP 标号地址到 LOP 标号地址间的内容。这段程序的功能是完成将当前时间的二进制数转化为BCD 代码,并送显示缓冲区。 nts作息时间控制系统 第 14 页 共 34 页 图 10 主程序设计框图 nts湖南工程学院课程设计 第 15 页 共 34 页 3.4 各子模块设计 3.4.1LED 动态扫描程序模块设计 在 采用动态扫描显示方式时,要是 LED 显示比较均匀,又有足够亮度,需要设置适当的扫描频率。当扫描频率在 70Hz 左右时,能够产生足够的图形和较好的显示效果。一般可以采用间隔 20ms 对LED 进行动态扫描一次,每一位 LED 的显示时间为 2ms。程序流程如图所示。 本系统设计中 ,采用硬件定时和软件定时并用的方式,即 T0 溢出中断功能实现20ms 定时,通过软件延时程序实现 1ms 定时。 1) T0 定时器中断服务程序的功能 从显示缓冲区分别取出显示数据的位码和段码,分别送 P1 口和数据输出P0 口,依次显示每一位,每一位能显示时间为 2ms,显示 6位需要 12ms 的时间; LED 显示器显示每一位时间为 2ms,延时 2ms 子程序是典型的软 图 11 LED 动态扫描程序流程图 件定时程序(程序见 DELAY1 标号地址到 DELAY 标号地址)。 nts作息时间控制系统 第 16 页 共 34 页 2)定时器 T0 的计数初值 X=09F0H,即有 TH0=09H TL0=0F0H 工作方式寄存器 TMOD=0000 0001B=01H, T0 定时器以工作方式 1 完成定时。 3.4.2 时钟计时程序模块设计 作息时间控制系统必须设计一个时钟程序来实现 24h 的定时功能。本系统中单片机的时钟频率为 6MHz,则定时器最长的定时时间是 131。72ms,以此来产生 24 小时的时间值,可采用硬件定时与软件定时想结合的方法来实现。 1) 24 小时时间的产生。选择定时器 T1,用工作方式 1,定时 100ms。T1 定时 100ms 中断一次,利用 R2 累加器加 1,当 R2=10 时,时间正好是 1s;再利用 R3 计数 60s,依次类推,累计 24h 的时间值,需要设置以下几个寄存器: R2:累 计 1s 时间寄存器。 T1 中断一次 R2=R2+1,计数十次向R3 进位,并将 R2 清零。 R3:累计 60s 时间寄存器。当 R3=60s 向 R4 进位,并 使 R3=0。 R4:累计 60min 时间寄存器。当 R4=60min 向 R5 进位,并将 R4 清零。 R5:累计 24h 时间寄存器。当 R5=24h,正好是 一 昼夜,并使 R5=0。 R2 R5 按二进制计数,程序设计的思路和方法,如图程序框图和程序清单。 2)定时器 T1 的计算初值 X=3CB0H。初值寄存器的初值 TH1=3CH,TL1=0B0H,工作方式寄存器 TMOD=0001 0000B=10H。 T1 定时器每中断一次,中断 10 次为 1s。程序流程图如图 12 所示 nts湖南工程学院课程设计 第 17 页 共 34 页 图 12 T1 定时器程序设计流程图 nts作息时间控制系统 第 18 页 共 34 页 3.4.3 键盘接受子程序设计 由于机械触点的弹性作用,在闭合及断开的瞬间均伴随有一连串的抖动,而按键稳定闭合时间的长短则是由操作人员的按键动作决定的,为了确保 CPU对键的一次闭合仅作一次处理,键抖动可用硬件或软件两种方法消除。这里采用软件去抖动的方法,程序流程图如图 13 所示,程序见INTA中断服务程序 。 ( 4) 闹铃与语音输出模块设计 作息时间的主要功能就是实 现自动打铃和放语音。该模块的设计流程如图 14 所示。在主程序的每一个扫描周期都调用该子程序,当作息时间与计时时间相等时,就进行相关功能的选择执行。具体程序见 RING子程序。 nts湖南工程学院课程设计 第 19 页 共 34 页 图 14 打铃程序流程 图 3.5 程序清单 见附录 B nts作息时间控制系统 第 20 页 共 34 页 第四章 调试步骤与结果 1 输入源程序 输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。 2对源程序进行汇编和纠错 根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示无误。 3确定调试方案 在调试程序前认真分析源 程序,确定各功能程序运行的预期结果。然后结合源程序应达到的结果,通过某些关键参数和实验现象检验程序运行结果正确与否。并针对具体的分析和观察对象选择较合适的调试方法。如单步运行、跟踪运行、连续运行、快速运行至光标处、设置断点等调试方法。 4调试程序 1) 调试子程序。由于程序比较多,整体调试不容易发现和改正错误,故采取子程序调试的方法,但要明确子程序的具体功能。例如:调试显示子程序时,只将显示子程序进行汇编,确认无误后单步执行,观察 CPU窗口和 DATA窗口以及 CODE窗口相应单元的变化是否跟预期的一样。如 果有问题找出问题所在。采取各个击破的方法调试好各个子程序。 2)确定各子程序无误后,再调试完整的程序,要注意各子程序之间的衔接以及和主程序之间的调用和返回。运行后,观察有无显示,时钟是否工作,其时、分、秒显示的变化过程是否正确。若运行结果不正确,首先应根据程序运行的实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的预期目的。 5、调试结果 运行主程序后,可看到六位 LED 显示器全亮,并且每过一秒,最低nts湖南工程学院课程设计 第 21 页 共 34 页 位显示器加一,当加到 59 后,返回 0。改变时间初值,显示相应的时间,分钟到 59 后,也能返回 0,小时到 23 后能返回 0。若设定初始时间为 7:59:59 则过 1 秒后 P1.7 对应的发光二极管亮,过 10 秒后 P1.7对应的发光二极管 灭 ;若设定初始时间为 9:40:59,则过 1 秒后 P1.6 所对应的发光二极管亮,若设定初始时间为 9:58:59,过 1 秒后 P1.6 所对应的发光二极管 灭 说明调试正确。 第五章 总 结 在这两周的学习和设计中,使我充分认识到理论联系实际的重要。安装和调试自始至终要有严谨的科学作风,不能抱有侥幸心理。理论固然重要 ,但是在实际应用中遇到的很多问题是不容忽视的。 在第一周,我们通过找大量的资料和同学们一起研究和讨论,认识设计的内容,将其分为两大部分(硬件设计部分和软件设计部分),终于设计出一套完整的方案。但是将这些具体的方案落实到实际设计中,出现很多错误,而那些错误在原则上是 可以避免的 ,这就需要我们在调试过程中利用所掌握的知识认真检查,发现不足。然后在讨论如何解决不足之 处,如此 一次次的改,一次次的查,直到完全符合我们的功能要求。 无数次的尝试总算是把设计搞好了,电路调试成功。真是难以去形容那种愉悦的心情。自己的付出总算 是有了回报。我也得到了自己知识不足的教训。感觉在知识不牢固的时候是多么无助。自己要反复的去查阅以前的课本和书籍是多烦琐的事情。这也就坚定了我在以后的学习中要认真学好基础知识的决心。 总体来说,这次实习使我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。 通过这次课程设计,我认识到单片机设计中应注意的几个问题 : nts作息时间控制系统 第 22 页 共 34 页 ( 1)采用模块化、子程序化的优点是便于连接和移植,特别是重复使用时尤为方便。 但使用者必须预先明确各子程序的入口参数、出口参数和所占用的资源,合理利用堆栈,避免主程序与子程序之间、子程序与子程序之间所占用的资源发生冲突。 ( 2)在调试程序前,一定要预先将源程序分析透彻,在此基础上训练如何通过实验现象分析和判断产生故障的原因及故障可能存在的大致范围;灵活运用开发系统所提供的各种调试方法,快速有效地排查和缩小故障范围。通过反复调试,不断地分析和排除故障,调试软件和硬件的能力及速度。 ( 3)调试程序时,要结合能反映故障存 在与否的参数变化、运行路径变化、显示内容变化等,选择合适的观测点和观测对象,再运用适当的调试方法,快速地检验调试结果,由此分析和判断故障点。 致 谢 两周的课程设计结束了,在此我想对我的指导老师 王迎旭 老师表达我衷心的谢意。在 她 耐心的指导下, 使这次 课程设计 取得了较满意的结果 。这次设计过程中得到了 其他 老师的指导和帮助 ,在此一并表示衷心的感谢。 在设计中,我查了不少参考资料,在此向其作者表示敬意! 参考文献 : 1王迎旭 .单片机原理与应用 .机械工业出版社 .2005.8 2李全利、迟荣强 .单片机原理及接口技术 .高等教育社 .2004.1 3谭浩强 . MCS-51 单片机应用教程 .清华大学出版社 .2004.3 nts湖南工程学院课程设计 第 23 页 共 34 页 附录 A:程序清单 SEC EQU 32H MIN EQU 33H HOUR EQU 34H ORG 0000H LJMP MAIN ;转主程序 ORG 0003H ;外部中断 0 中断服务程序入口地址 LJMP INTA ;转外部 中断 0 中断服务程序 ORG 000BH ;T0 定时服务程序入口地址 LJMP T0_SEV ;转 T0 定时服务程序 ORG 001BH ;T1 定时服务程序入口地址 LJMP T1_SEV ;转 T0 定时服务程序 ORG 0030H ;设置主程序起始地址 =0030H MAIN: MOV SP,#60H ;设堆栈区 MOV 48H,#0DFH ;LED 位选择码 MOV 49H,#0EFH MOV 4AH,#0F7H MOV 4BH,#0FBH MOV 4CH,#0FDH MOV 4DH,#0FEH MOV SEC,#10 MOV MIN,#30 MOV HOUR,#06 ;设置时间初值为 12: 00: 00 MOV TMOD,#99H 设置 T1,T0 定时器,工作方式一 MOV TH1,#3CH ;T1 定时 100MS MOV TL1,#0B0H nts作息时间控制系统 第 24 页 共 34 页 MOV TH0,#0D9H MOV TL0,#0F0H ;T0 定时 20MS 定时 MOV IP, #08H ;设置优先级 MOV TCON,#50H ;启动 T1,T0 定时 MOV IE,#9FH ;开中断 LOOP: MOV B,#10 ;将二进制数转换为十进 ;制数( BCD 码) MOV A,HOUR ;并送到显示缓冲区 40H 到 45H DIV AB MOV 40H,A MOV 41H,B MOV B,#10 MOV A,MIN DIV AB MOV 42H,A MOV 43H,B MOV B,#10 MOV A,SEC DIV AB MOV 44H,A MOV 45H,B LCALL RING ;调用打铃子程序 NOP SJMP LOOP ;T0 中断服务程序 T0_SEV: PUSH A PUSH PSW nts湖南工程学院课程设计 第 25 页 共 34 页 SETB RS1 SETB RS0 CLR TR0 MOV R2,#06H ;设置显示器位数 MOV R0,#40H ;设置段码首地址 MOV R1,#48H ;设置位码首地址 GO_ON: MOV A,R2 ;送显示位数 A MOV A,R1 ;送位码到 A 累加器 MOV P1,A ;将位码送 P1 口 MOV A,R0 ;送段码到 A 累加器 MOV DPTR,#WorldTab MOVC A,A+DPTR MOV DPTR,#0CFA0H ;将段码输出 MOVX DPTR,A LCALL DELAY1 ;调用延时子程序,延时 2MS INC R0 ;段码地址 +1 INC R1 ;位码地址 +1 DJNZ R2,GO_ON ;判断 6 位是否显示完, ;没完继续显示下一位 MOV TH0,#0D9H MOV TL0,#0F0H POP A SETB ET0 SETB TR0 SETB EA RETI nts作息时间控制系统 第 26 页 共 34 页 DELAY1: MOV R3,#10H ;延时 2MS 子程序 AGAIN: MOV R4,#48H DELAY: NOP NOP DJNZ R4,DELAY DJNZ R3,AGAIN RET ;T1 定时器每 100ms 中断一次,中断 10 次为 1S。程序如下 : T1_SEV: MOV TH1,#3CH ;重置 T1 计数初值 MOV TL1,#0B0H PUSH A ;保护现场 PUSH B PUSH PSW CLR EA CLR RS1 CLR RS0 ;选择 0 区工作寄存器 INC R2 CJNE R2,#0AH,EN MOV R2,#0 INC R3 ;秒计时单元 R3 加 1 MOV SEC,R3 ;秒值送 32H 单元 CJNE R3,#3CH,EN ;判断 R3=60S 否,否则转 EN MOV R3,#0 ;60S 时间到, R3=0 MOV SEC,R3 ;秒值送 32H 单元 INC R4 ;分计时单元 R4 加 1 MOV MIN,R4 ;分值送 33H 单元 nts湖南工程学院课程设计 第 27 页 共 34 页 CJNE R4,#3CH,EN ;判断 R3=60MIN 否,否则转 EN MOV R4,#0 ;60MIN 时间到, R4=0 MOV MIN,R4 ;分值送 33H 单元 INC R5 ;小时单元 R5 加 1 MOV HOUR,R5 ;小时值送 34H 单元 CJNE R5,#18H,EN ;判断 R5=24H 否, ;否则转 EN 标号地址 MOV R5,#0 ;24H 时间到, R5=0 MOV HOUR,R5 ;小时值送 34H 单元 EN: POP PSW ;恢复现场 POP B POP A SETB EA ;开中断 RETI ;中断返回 ;打铃子程序如下: RING: MOV R3,#04H MOV DPTR,#2FFCH LOOP3: MOV R1,#35H MOV A,#0H INC DPTR DJNZ R3,LOOP3 MOVC A,A+DPTR ;读取控制码 JZ LOOP2 ;控制码为 0 则返回 MOV 6AH,A ;存控制字 MOV R3,#03H LOOP1: INC DPTR ;地址指针增量 nts作息时间控制系统 第 28 页 共 34 页 DEC R1 ;计时单元地址减量 MOV A,#0H MOVC A,A+DPTR ;读作息时间 (秒 ,分 ,时 ) MOV 6BH,A ;存作息时间 MOV A,R1 ;读计时时间 CJNE A,6BH,LOOP3 ;计时时间与作息时间比较 ;不等则转 ,继续读下面的控制码 DJNZ R3,LOOP1 ;共读取 3 次 MOV A,6AH ;开关操作码送 A MOV R3,#04H CJNE A,#0FEH,BB ;判断是否打 铃定时时间到 CLR P1.7 ;打铃 SJMP LOOP3 BB: CJNE A,#7FH,CC ;判断是否播音时间到 CLR P1.6 ;放音乐 SJMP LOOP3 CC: CJNE A,#0FDH,DD SETB P1.7 SJMP LOOP3 DD: CJNE A,#0BFH,LOOP2 SETB P1.6 LOOP2: ret ;返回 ;设置当前时间 程序 如下 : INTA:SETB P3.0 ;输入键值前,先将 P3.0、 P3.1 置 1 SETB P3.1 CLR TR1 ;T1 停止定时 CLR ET1 ;T1 禁止中断 nts湖南工程学院课程设计 第 29 页 共 34 页 CLR EX0 ;INT0禁止中断 SETB EA ;开中断 SETB PT0 ;允许 T0 中断 PUSH A ;保护现场 PUSH B PUSH PSW MOV 31H,#06H ;( 31H=06H( LED 位数) MOV 29H,#00H ;( 29H) =00H LP0: MOV A,P3 ANL A,#01H CJNE A,#0,NEXT0 ;判断 P3.0 键( +1 键)按下否, ; 否则转 NEXT0 LCALL DELAY1 ;有键按下,延时 1MS MOV A,P3 ANL A,#01H CJNE A,#0,LP0 ;判断是否松开,否则转 LP0 LP1: MOV A,P3 ANL A,#01H CJNE A,#01H,LP1 ;等待键松开 INC 29H ;键松开后,( 29H) +1 MOV 30H,#1H SJMP LP1 NEXT0:MOV A,P3 ANL A,#02H CJNE A,#0,LL1 ;判断 P3.1 是否按下,否则转 L1 LCALL DELAY1 MOV A,P3 nts作息时间控制系统 第 30 页 共 34 页 ANL A,#01H CJNE A,#0,NEXT0 ;是否松开,否则转 NEXT0 LD1:MOV A,P3 ANL A,#02H CJNE A,#02H,LD1 ;是否松开,否则转 LD1 MOV 29H,#0 MOV 30H,#1 DJNZ 31H,LO1 SJMP LL LO1:MOV A,31H CJNE A,#06H,LO2 ;是时钟十位吗?否则转 LO2 MOV A,29H CJNE A,#03H,LA1 ;十位等于 3 吗?否则转 LA1 MOV 29H,#00H ;是的,清零 LA1:MOV 40H,29H ;( 29H) -( 40H) SJMP LL1 ;转 L1 LPP0:SJMP LP0 LO2:MOV A,31H CJNE A,#05H,LO3 ;是时钟个位吗?否则转 LO3 MOV A,40H CJNE A,#2,A1 MOV A,29H CJNE A,#4,LA2 MOV 29H,#0 SJMP LA2 A1:MOV A,29H CJNE A,#0AH,LA2 nts湖南工程学院课程设计 第 31 页 共 34 页 MOV 29H,#00H LA2:MOV 41H,29H SJMP LL1 LO3:MOV A,31H CJNE A,#04H,LO4 ;是分钟是十位吗?否则转 LO4 MOV A,29H CJNE A,#06H,LA3 ;大于 5 吗?否则转 LA3 MOV 29H,#00H LA3:MOV 42H,29H SJMP LL1 LL1:SJMP L1 LO4:MOV A,31H CJNE A,#03H,LO5 ;是分钟是个位吗?否则转 LO5 MOV A,29H CJNE A,#0AH,LA4 ;大于 9 吗?否则转
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:湖南工学院单片机作息时间课程设计
链接地址:https://www.renrendoc.com/p-512583.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!