基于单片机的电子钟设计毕业论文_第1页
基于单片机的电子钟设计毕业论文_第2页
基于单片机的电子钟设计毕业论文_第3页
基于单片机的电子钟设计毕业论文_第4页
基于单片机的电子钟设计毕业论文_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的电子时钟设计基于单片机的电子时钟设计 摘 要 20 世纪末 电子技术获得了飞速的发展 在其推动下 现代电子产品几乎渗透了社会 的 各个领域 有力地推动了社会生产力的发展和社会信息化程度的提高 同时也使现代电子 产 品性能进一步提高 产品更新换代的节奏也越来越快 现代生活的人们越来越重视起了时间观念 可以说是时间和金钱划上了等号 对于那 些 对时间把握非常严格和准确的人或事来说 时间的不准确会带来非常大的麻烦 所以以数 码 管为显示器的时钟比指针式的时钟表现出了很大的优势 数码管显示的时间简单明了而且 读 数快 时间准确显示到秒 而机械式的依赖于晶体震荡器 可能会导致误差 数字钟是采用数字电路实现对 时 分 秒 数字显示的计时装置 数字钟的精 度 稳定度远远超过老式机械钟 在这次设计中 我们采用 LED 数码管显示时 分 秒 以 24 小时计时方式 根据数码管动态显示原理来进行显示 用 12MHz 的晶振产生振荡脉冲 定 时器计数 在此次设计中 电路具有显示时间的其本功能 还可以实现对时间的调整 数 字 钟是其小巧 价格低廉 走时精度高 使用方便 功能多 便于集成化而受广大消费的喜 爱 因此得到了广泛的使用 关键字 数字电子钟 单片机 1 1 数字电子钟的背景 20 世纪末 电子技术获得了飞速的发展 在其推动下 现代电子产品几乎渗透了社会 的各个领域 有力地推动了社会生产力的发展和社会信息化程度的提高 同时也使现代电子 产品性能进一步提高 产品更新换代的节奏也越来越快 时间对人们来说总是那么宝贵 工作的忙碌性和繁杂性容易使人忘记当前的时间 忘记了要做的事情 当事情不是很重要的 时候 这种遗忘无伤大雅 但是 一旦重要事情 一时的耽误可能酿成大祸 目前 单片机正朝着高性能和多品种方向发展趋势将是进一步向着 CMOS 化 低功耗 小体积 大容量 高性能 低价格和外围电路内装化等几个方面发展 下面是单片机的主要 发展趋势 单片机应用的重要意义还在于 它从根本上改变了传统的控制系统设计思想和设 计方法 从前必须由模拟电路或数字电路实现的大部分功能 现在已能用单片机通过软件方 法来实现了 这种软件代替硬件的控制技术也称为微控制技术 是传统控制技术的一次革命 单片机模块中最常见的是数字钟 数字钟是一种用数字电路技术实现时 分 秒计时的 装置 与机械式时钟相比具有更高的准确性和直观性 且无机械装置 具有更更长的使用寿 命 因此得到了广泛的使用 1 2 数字电子钟的意义 数字钟是采用数字电路实现对 时 分 秒 数字显示的计时装置 广泛用于个人家庭 车站 码头办公室等公共场所 成为人们日常生活中不可少的必需品 由于数字集成电路的发展和石 英晶体振荡器的广泛应用 使得数字钟的精度 远远超过老式钟表 钟表的数字化给人们生产 生活带来了极大的方便 而且大大地扩展了钟表原先的报时功能 诸如定时自动报警 按时 自动打铃 时间程序自动控制 定时广播 自动起闭路灯 定时开关烘箱 通断动力设备 甚至各种定时电气的自动启用等 所有这些 都是以钟表数字化为基础的 因此 研究数字 钟及扩大其应用 有着非常现实的意义 1 3 数字电子钟的应用 数字钟已成为人们日常生活中 必不可少的必需品 广泛用于个人家庭以及车站 码头 剧场 办公室等公共场所 给人们的生活 学习 工作 娱乐带来极大的方便 由于数字集 成电路技术的发展和采用了先进的石英技术 使数字钟具有走时准确 性能稳定 携带方便 等优点 它还用于计时 自动报时及自动控制等各个领域 1 4 电路及功能说明 电路及功能说明 电路图如图所示 图 A 图 B 图 C 该数字钟是用一片 AT89C51A 单片机通过编程去驱动 8 个数码管实现的 通过 6 个开关控制 从上到 下 6 个开关 KEY1 KEY6 的功能分别为 KEY1 切换至秒表 KEY2 调节时间 每调一次时加 1 KEY3 调节时间 每调一次分加 1 KEY4 从其它状态切换至时钟状态 KEY5 切换至闹钟设置状 态 也可以对秒表清零 KEY6 秒表暂停 控制键分别与 P1 0 P1 5 口连接 其中 A 通过 P2 口和 P3 口去控制数码管的显示如图所示 P2 口接数码管的 a g 端 是控制输出编码 P3 口接数码管的 1 8 端 是控制动态扫描输出 B 从 P0 0 输出一个信号使二极管发光 二极管在设置的闹钟时间到了时候发光 若有乐曲可以去驱 动扬声器实现 图 A 是时钟运行状态 图 B 是闹钟运行状态 图 C 是秒表运行状态 功能说明 1 各个控制键的功能 可对时间进行校准调节 只能加 按下设置键数字时钟进入闹钟设置 状态 设置闹钟的时间 时加 分加 键是在校准时间时或设置闹钟时间对小时数或分钟数 调节而设置的 按下秒切换键就可以进入秒表模式 同时秒表也开始计时 按下秒表暂停 复 位键就暂停 归零 如果要重新对秒计时则可以按秒表开始 复位 清零键可以对闹钟清零 2 AT89C51 单片机 通过编写程序对数码显示进行控制 3 八个 7 段数码管显示时钟和秒表信号 二 二 实验程序流程图 实验程序流程图 1 主程序流程图 开始 定时器及中断寄存器初使化 是否设定参数 执行显示程序 执行时钟 秒表 闹 钟设定程序 N Y 2 中断程序流程图 恢复初值保护 tcount 100 tcount加1 秒数值time1 second加 1 tcount归零 分数值time1 minute加 1 time1 second归零 Y N time1 second 60 Y N time1 minute 60 时数值time1 hour加 1 time1 minute归零 Y N 时数值time1 hour归零 time1 hour 23 Y N 判断时间与闹钟 时间是否相同 执行闹钟程序 P0 0 1 闹钟程序是否 执行完 返回主程序 Y Y NN 2 秒表中断程序流程图 恢复初值保护 ms 100 秒计数器加1 10ms计数器归零 即sec ms 0 sec 60 10ms计数器加1 分计数器加1 秒计数器归 零 即minit sec 0 输出字码 中断结 束 返回上级主程序 Y Y N N 3 按键程序流程图 第一图为时钟和闹钟的调节 程序初使化 判断时加键 thour是否按下 P1 2 0 判断标志flag是 否为0 flag 0 输出闹钟时个位加 1 alarms 6 延时 Y 判断分加键盘 tminute是否按 下 P1 1 0 输出时钟时个位加 1 dat1 6 延时 Ydat1 6 9 输出时钟时十位加 1 dat1 7 延时 dat1 7 2 时十位归 零 dat1 7 0 NNY Y N N alarms 6 9 输出闹钟时十位加 1 alarms 7 延时 alarms 7 2 时十位归 零 alarms 7 0 Y Y N N 判断标志flag是 否为0 flag 0 输出时钟分个位加 1 dat1 3 延时 dat1 3 9 输出时钟分十位加 1 dat1 4 延时 dat1 4 2 分十位归 零 dat1 4 0 输出闹钟分个位加 1 alarms 3 延时 alarms 3 9 输出闹钟分十位加 1 alarms 4 延时 alarms 4 2 分十位归 零 alarms 4 0 Y Y Y N Y N N Y Y N N 第二图为进入中断和清零 判断分加键tminute是 否按下 P1 1 0 N 判断秒表miaobiao1是否按 下 P1 0 0 进入秒表中断 执行 秒表中断程序 判断清零键miaobiao2是否按 下 P1 3 0 清零所有的计数器 各个显示的字码 返加上级主程序 N Y Y N 第三章 数字钟的硬件设计 3 1 最小系统设计 图 3 1 单片机最小系统的结构图 单片机的最小系统是由电源 复位 晶振 EA 1 组成 下面介绍一下每一个组成部分 1 电源引脚 Vcc 40 电源端 GND 20 接地端 工作电压为 5V 另有 AT89LV51 工作电压则是 2 7 6V 引脚功能一样 2 外接晶体引脚 图 3 2 晶振连接的内部 外部方式图 XTAL1 19 XTAL2 18 XTAL1 是片内振荡器的反相放大器输入端 XTAL2 则是输出端 使用外部振荡器时 外 部振荡信号应直接加到 XTAL1 而 XTAL2 悬空 内部方式时 时钟发生器对振荡脉冲二分频 如晶振为 12MHz 时钟频率就为 6MHz 晶振的频率可以在 1MHz 24MHz 内选择 电容取 30PF 左右 系统的时钟电路设计是采用的内部方式 即利用芯片内部的振荡电路 AT89 单片机 内部有一个用于构成振荡器的高增益反相放大器 引脚 XTAL1 和 XTAL2 分别是此放大器的输 入端和输出端 这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器 外 接晶体谐振器以及电容 C1 和 C2 构成并联谐振电路 接在放大器的反馈回路中 对外接电容 的值虽然没有严格的要求 但电容的大小会影响震荡器频率的高低 震荡器的稳定性 起振 的快速性和温度的稳定性 因此 此系统电路的晶体振荡器的值为 12MHz 电容应尽可能的 选择陶瓷电容 电容值约为 22 F 在焊接刷电路板时 晶体振荡器和电容应尽可能安装得 与单片机芯片靠近 以减少寄生电容 更好地保证震荡器稳定和可靠地工作 3 复位 RST 9 在振荡器运行时 有两个机器周期 24 个振荡周期 以上的高电平出现在此引腿时 将使单片机复位 只要这个脚保持高电平 51 芯片便循环复位 复位后 P0 P3 口均置 1 引 脚表现为高电平 程序计数器和特殊功能寄存器 SFR 全部清零 当复位脚由高电平变为低电 平时 芯片为 ROM 的 00H 处开始运行程序 复位是由外部的复位电路来实现的 片内复位电 路是复位引脚 RST 通过一个斯密特触发器与复位电路相连 斯密特触发器用来抑制噪声 它 的输出在每个机器周期的 S5P2 由复位电路采样一次 复位电路通常采用上电自动复位和 按钮复位两种方式 此电路系统采用的是上电与按钮复位电路 当时钟频率选用 6MHz 时 C 取 22 F Rs 约为 200 Rk 约为 1K 复位操作不会对内部 RAM 有所影响 常用的复位电路如下图所示 图 3 3 常用复位电路图 4 输入输出引脚 1 P0 端口 P0 0 P0 7 P0 是一个 8 位漏极开路型双向 I O 端口 端口置 1 对端口 写 1 时作高阻抗输入端 作为输出口时能驱动 8 个 TTL 对内部 Flash 程序存储器编程时 接收指令字节 校验程序时输出指令字节 要求外接 上拉电阻 在访问外部程序和外部数据存储器时 P0 口是分时转换的地址 低 8 位 数据总线 访 问期间内部的上拉电阻起作用 2 P1 端口 P1 0 P1 7 P1 是一个带有内部上拉电阻的 8 位双向 I 0 端口 输出时可 驱动 4 个 TTL 端口置 1 时 内部上拉电阻将端口拉到高电平 作输入用 对内部 Flash 程序存储器编程时 接收低 8 位地址信息 3 P2 端口 P2 0 P2 7 P2 是一个带有内部上拉电阻的 8 位双向 I 0 端口 输出时可 驱动 4 个 TTL 端口置 1 时 内部上拉电阻将端口拉到高电平 作输入用 对内部 Flash 程 序存储器编程时 接收高 8 位地址和控制信息 在访问外部程序和 16 位外部数据存储器时 P2 口送出高 8 位地址 而在访问 8 位地址 的外部数据存储器时其引脚上的内容在此期间不会改变 4 P3 端口 P3 0 P3 7 P2 是一个带有内部上拉电阻的 8 位双向 I 0 端口 输出时可 驱动 4 个 TTL 端口置 1 时 内部上拉电阻将端口拉到高电平 作输入用 对内部 Flash 程序存储器编程时 接控制信息 除此之外 P3 端口还用于一些专门功能 具体请看下表 P3 引脚兼用功能 P3 0 串行通讯输入 RXD P3 1 串行通讯输出 TXD P3 2 外部中断 0 INT0 P3 3 外部中断 1 INT1 P3 4 定时器 0 输入 T0 P3 5 定时器 1 输入 T1 P3 6 外部数据存储器写选通 WR P3 7 外部数据存储器写选通 RD 表 3 1 P3 端口引脚兼用功能表 3 2 LED 显示电路 显示器普遍地用于直观地显示数字系统的运行状态和工作数据 按照材料及产品工艺 单片机应用系统中常用的显示器有 发光二极管 LED 显示器 液晶 LCD 显示器 CRT 显示 器等 LED 显示器是现在最常用的显示器之一 如下图所示 图 3 4 LED 显示器的符号图 发光二极管 LED 由特殊的半导体材料砷化镓 磷砷化镓等制成 可以单独使用 也 可以组装成分段式或点阵式 LED 显示器件 半导体显示器 分段式显示器 LED 数码管 由 7 条线段围成 8 字型 每一段包含一个发光二极管 外加正向电压时二极管导通 发出清 晰的光 只要按规律控制各发光段亮 灭 就可以显示各种字形或符号 LED 数码管有共阳 共阴之分 图是共阳式 共阴式 LED 数码管的原理图和符号 图 3 5 共阳式 共阴式 LED 数码管的原理图和数码管的符号图 显示电路显示模块需要实时显示当前的时间 即时 分 秒 因此需要 6 个数码管 另 需两个数码管来显示横 采用动态显示方式显示时间 硬件连接如下图所示 时的十位和个 位分别显示在第一个和第二个数码管 分的十位和个位分别显示在第四个和第五个数码管 秒的十位和个位分别显示在第七个和第八个数码管 其余数码管显示横线 LED 显示器的显 示控制方式按驱动方式可分成静态显示方式和动态显示方式两种 对于多位 LED 显示器 通 常 都是采用动态扫描的方法进行显示 其硬件连接方式如下图所示 图 3 6 数码管的硬件连接示意图 数码管使用条件 a 段及小数点上加限流电阻 b 使用电压 段 根据发光颜色决定 小数点 根据发光颜色决定 c 使用电流 静态 总电流 80mA 每段 10mA 动态 平均电流 4 5mA 峰值电流 100mA 数码管使用注意事项说明 数码管表面不要用手触摸 不要用手去弄引角 焊接温度 度 焊接时间 表面有保护膜的产品 可以在使用前撕下来 第四章 数字钟的软件设计 系统的软件设计也是工具系统功能的设计 单片机软件的设计主要包括执行软件 完成 各种实质性功能 的设计和监控软件的设计 单片机的软件设计通常要考虑以下几个方面的 问题 1 根据软件功能要求 将系统软件划分为若干个相对独立的部分 设计出合理的总 体结构 使软件开发清晰 简洁和流程合理 2 培养良好的编程风格 如考虑结构化程序设计 实行模块化 子程序化 既便于 调试 链接 又便于移植和修改 3 建立正确的数学模型 通过仿真提高系统的性能 并选取合适的参数 4 绘制程序流程图 5 合理分配系统资源 6 为程序加入注释 提高可读性 实施软件工程 7 注意软件的抗干扰设计 提高系统的可靠性 4 1 系统软件设计流程图 这次的数字电子钟设计用到很多子程序 它们的流程图如下所示 主程序是先开始 然后启动定时器 定时器启动后在进行按键检测 检测完后 就可以 显示时间 图 4 1 主程序流程图 开始 启动定时器 按键检测 时间显示 按键处理是先检测秒按键是否按下 秒按键如果按下 秒就加 1 如果没有按下 就检 测分按键是否按下 分按键如果按下 分就加 1 如果没有按下 就检测时按键是否按下 时按键如果按下 时就加 1 如果没有按下 就把时间显示出来 图 4 2 按键处理流程图 定时器中断时是先检测 1 秒是否到 1 秒如果到 秒单元就加 1 如果没到 就检测 1 分钟是否到 1 分钟如果到 分单元就加 1 如果没到 就检测 1 小时是否到 1 小时如果 到 时单元就加 1 如果没到 就显示时间 N Y N Y N Y 时加 1 显示时间 结束 开始 秒按键按下 秒加 1 分按键按下 分加 1 时按键按下 N 24 小时到 分单元清零 时单元加 1 N N N Y Y 时单元清零 时间显示 中断返回 开始 一秒时间到 60 秒时间到 60 分钟到 秒单元加 1 秒单元清零 分单元加 1 Y Y 图 4 3 定时器中断流程图 时间显示是先秒个位计算显示 然后是秒十位计算显示 再是分个位计算显示 再然后 是分十位显示 再就是时个位计算显示 最后是时十位显示 时十位计算显 示 结束 开始 秒个位计算显 示 秒十位计算显 示 分个位计算显 示 分十位计算显 示 时个位计算显 示 图 4 4 时间显示流程图 4 2 数字钟的原理图 用 PROTUES 软件 根据要求画出数字电子钟的原理图如下所示 图 4 5 数字钟的原理图 在此有必要介绍一下数字电子钟的工作原理 工作原理 数字电子钟是一个将 时 分 秒 显示于人的视觉器官的计时装置 它的计时 周期为 24 小时 显示满刻度为 23 时 59 分 59 秒 另外还有校时功能 因此 一个基本的数 字钟电路主要由显示器 时 分 秒 和单片机 还有校时电路组成 8 个数码管的段 选接到单片机的 P0 口 位选接到单片机的 P2 口 数码管按照数码管动态显示的工作原理工 作 将标准秒信号送入 秒单元 秒单元 采用 60 进制计数器 每累计 60 秒发出一个 分脉冲 信号 该信号将作为 分单元 的时钟脉冲 分单元 也采用 60 进制计数器 每累计 60 分钟 发出一个 时脉冲 信号 该信号将被送到 时单元 时单元 采用 24 进制计时器 可实现对一天 24 小时的累计 显示电路将 时 分 秒 通过七段显示 器显示出来 4 3 设计主程序 本次设计我们采用汇编语言编写程序简单明了 P0 0 7 口 为数码管段选 采用共阳显示管 P2 1 6 为数码管位选 70 71H 秒计时和显示单元 72 73H 分显示单元 注意 72H 放个位数 73H 放十位数 74 75H 小时显示单元 76 77H 分计时单元 78 79H 小时计时单元 中断入口程序 ORG 0000H 程序执行开始地址 LJMP START 跳到标号 START 执行 ORG 0003H 外中断 0 中断程序入口 RETI 外中断 0 中断返回 ORG 000BH 定时器 T0 中断程序入口 LJMP INTT0 跳至 INTTO 执行 ORG 0013H 外中断 1 中断程序入口 RETI 外中断 1 中断返回 ORG 001BH 定时器 T1 中断程序入口 LJMP INTT1 跳至 INTT1 执行 ORG 0023H 串行中断程序入口地址 RETI 串行中断程序返回 主 程 序 START MOV R0 70H 清 70H 7AH 共 11 个内存单元 MOV R7 0BH CLEARDISP MOV R0 00H INC R0 DJNZ R7 CLEARDISP MOV 20H 00H 清 20H 标志用 MOV 7AH 0AH 放入 熄灭符 数据 MOV TMOD 11H 设 T0 T1 为 16 位定时器 用 11 0592M 初值是 4C00H 用 12M 初值是 3CB0H MOV TL0 00H 50MS 定时初值 T0 计时用 MOV TH0 4cH 50MS 定时初值 MOV TL1 00H 50MS 定时初值 T1 闪烁定时用 MOV TH1 4cH 50MS 定时初值 SETB EA 总中断开放 SETB ET0 允许 T0 中断 SETB TR0 开启 T0 定时器 MOV R4 14H 1 秒定时用初值 50MS 20 START1 LCALL DISPLAY 调用显示子程序 jnb P1 1 set h 此按键是小时加 1 jnb P1 2 set M 此按键是分钟加 1 SJMP START1 P1 0 口为 1 时跳回 START1 set h ljmp set hh set m ljmp set mm 1 秒计时程序 T0 中断服务程序 INTT0 PUSH ACC 累加器入栈保护 PUSH PSW 状态字入栈保护 CLR ET0 关 T0 中断允许 CLR TR0 关闭定时器 T0 用 11 0592M 初值是 4C00H 用 12M 初值是 3CB0H MOV A 00H 中断响应时间同步修正 要精确调整在这里 ADD A TL0 低 8 位初值修正 MOV TL0 A 重装初值 低 8 位修正值 MOV A 4CH 高 8 位初值修正 ADDC A TH0 MOV TH0 A 重装初值 高 8 位修正值 SETB TR0 开启定时器 T0 DJNZ R4 OUTT0 20 次中断未到中断退出 ADDSS MOV R4 014H 20 次中断到 1 秒 重赋初值 14h MOV R0 71H 指向秒计时单元 70H 71H ACALL ADD1 调用加 1 程序 加 1 秒操作 MOV A R3 秒数据放入 A R3 为 2 位十进制数组合 CLR C 清进位标志 CJNE A 60H ADDMM ADDMM JC OUTT0 小于 60 秒时中断退出 ACALL CLR0 大于或等于 60 秒时对秒计时单元清 0 MOV R0 77H 指向分计时单元 76H 77H ACALL ADD1 分计时单元加 1 分钟 MOV A R3 分数据放入 A CLR C 清进位标志 CJNE A 60H ADDHH ADDHH JC OUTT0 小于 60 分时中断退出 ACALL CLR0 大于或等于 60 分时分计时单元清 0 MOV R0 79H 指向小时计时单元 78H 79H ACALL ADD1 小时计时单元加 1 小时 MOV A R3 时数据放入 A CLR C 清进位标志 CJNE A 24H HOUR HOUR JC OUTT0 小于 24 小时中断退出 ACALL CLR0 大于或等于 24 小时小时计时单元清 0 OUTT0 MOV 72H 76H 中断退出时将分 时计时单元数据移 MOV 73H 77H 入对应显示单元 MOV 74H 78H MOV 75H 79H POP PSW 恢复状态字 出栈 POP ACC 恢复累加器 SETB ET0 开放 T0 中断 RETI 中断返回 加 1 子 程 序 ADD1 MOV A R0 取当前计时单元数据到 A DEC R0 指向前一地址 SWAP A A 中数据高四位与低四位交换 ORL A R0 前一地址中数据放入 A 中低四位 ADD A 01H A 加 1 操作 DA A 十进制调整 MOV R3 A 移入 R3 寄存器 ANL A 0FH 高四位变 0 MOV R0 A 放回前一地址单元 MOV A R3 取回 R3 中暂存数据 INC R0 指向当前地址单元 SWAP A A 中数据高四位与低四位交换 ANL A 0FH 高四位变 0 MOV R0 A 数据放入当削地址单元中 RET 子程序返回 清零程序 对计时单元复零用 CLR0 CLR A 清累加器 MOV R0 A 清当前地址单元 DEC R0 指向前一地址 MOV R0 A 前一地址单元清 0 RET 子程序返回 显示程序 显示数据在 70H 75H 单元内 用六位 LED 共阳数码管显示 P1 口输出段码数据 P2 口作 扫描控制 每个 LED 数码管亮 1MS 时间再逐位循环 DISPLAY MOV R1 70H 指向显示数据首址 MOV R5 11011111B 扫描控制字初值 PLAY MOV a r5 MOV P2 A 从 P2 口输出 MOV A R1 取显示数据到 A MOV DPTR TAB 取段码表地址 MOVC A A DPTR 查显示数据对应段码 CJNE R5 0FEH PLAY 1 不是秒低位则转移 PLAY 1 ANL A 7FH 是 则点亮 AJMP PLAY 3 PLAY 1 CJNE R5 0FBH PLAY 2 分低位 ANL A 7FH AJMP PLAY 3 PLAY 2 CJNE R5 0EFH PLAY 3 时低位 ANL A 7FH PLAY 3 MOV dptr 00ffh 将要显示的字型码送 74LS273 MOVX dptr a 段码放入 P0 口 LCALL DL1MS 显示 1MS INC R1 指向下一地址 MOV A R5 扫描控制字放入 A JNB ACC 0 ENDOUT ACC 5 0 时一次显示结束 RR A A 中数据循环左移 MOV R5 A 放回 R5 内 AJMP PLAY 跳回 PLAY 循环 ENDOUT SETB P2 0 一次显示结束 P2 口复位 MOV P1 0FFH P1 口复位 RET 子程序返回 TAB DB 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80H 90H 0FFH 共阳段码表 0 1 2 3 4 5 6 7 8 9 不亮 延时程序 1MS 延时程序 LED 显示程序用 DL1MS MOV R6 14H DL1 MOV R7 19H DL2 DJNZ R7 DL2 DJNZ R6 DL1 RET 20MS 延时程序 采用调用显示子程序以改善 LED 的显示闪烁现象 DS20MS ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY RET 延时程序 用作按键时间的长短判断 DL1S LCALL DL05S LCALL DL05S RET DL05S MOV R3 20H 8 毫秒 32 0 256 秒 DL05S1 LCALL DISPLAY DJNZ R3 DL05S1 RET 闪动调时 程 序 T1 中断服务程序 用作时间调整时调整单元闪烁指示 INTT1 PUSH ACC 中断现场保护 PUSH PSW MOV TL1 00H 装定时器 T1 定时初值 MOV TH1 4CH DJNZ R2 INTT1OUT 0 3 秒未到退出中断 50MS 中断 6 次 MOV R2 06H 重装 0 3 秒定时用初值 CPL 02H 0 3 秒定时到对闪烁标志取反 JB 02H FLASH1 02H 位为 1 时显示单元 熄灭 MOV 72H 76H 02H 位为 0 时正常显示 MOV 73H 77H MOV 74H 78H MOV 75H 79H INTT1OUT POP PSW 恢复现场 POP ACC RETI 中断退出 FLASH1 JB 01H FLASH2 01H 位为 1 时 转小时熄灭控制 MOV 72H 7AH 01H 位为 0 时 熄灭符 数据放入分 MOV 73H 7AH 显示单元 72H 73H 将不显示分数据 MOV 74H 78H MOV 75H 79H AJMP INTT1OUT 转中断退出 FLASH2 MOV 72H 76H 01H 位为 1 时 熄灭符 数据放入小时 MOV 73H 77H 显示单元 74H 75H 小时数据将不显示 MOV 74H 7AH MOV 75H 7AH AJMP INTT1OUT 转中断退出 P1 1 小时加 1 调整程序 当调小时时 P1 1 按键按下时进入此程序 SET hh CLR ET0 关定时器 T0 中断 CLR TR0 关闭定时器 T0 MOV R2 06H 进入调时间的状态 赋闪烁定时初值 SETB ET1 允许 T1 中断 SETB TR1 开启定时器 T1 SETHH1 JNB P1 1 SET5 等待键释放 CLR 00H 清调分标志 SETB 01H 小时调整标志置 1 SET6 JB P1 1 SET7 等待按键按下 LCALL DL05S 有键按下延时 0 5 秒 JNB P1 1 SETOUT 按下时间大于 0 5 秒退出时间调整 MOV R0 79H 按下时间小于 0 5 秒加 1 小时操作 LCALL ADD1 调加 1 子程序 MOV A R3 取调整单元数据 CLR C 清进位标志 CJNE A 24H HOUU 计时单元数据与 24 比较 HOUU JC SET6 小于 24 转 SET6 循环 LCALL CLR0 大于或等于 24 时清 0 操作 AJMP SET6 跳转到 SET6 循环 SETOUT JNB P1 0 SETOUT1 调时退出程序 等待键释放 LCALL DISPLAY 延时削抖 JNB P1 1 SETOUT 是抖动 返回 SETOUT 再等待 CLR 01H 清调小时标志 CLR 00H 清调分标志 CLR 02H 清闪烁标志 CLR TR1 关闭定时器 T1 CLR ET1 关定时器 T1 中断 SETB TR0 开启定时器 T0 SETB ET0 开定时器 T0 中断 计时开始 LJMP START1 跳回主程序 SET5 LCALL DISPLAY 键释放等待时调用显示程序 调小时 AJMP SETHH1 防止键按下时无时钟显示 SET7 LCALL DISPLAY 等待调小时按键时时钟显示用 AJMP SET6 SETOUT1 LCALL DISPLAY 退出时钟调整时键释放等待 AJMP SETOUT 防止键按下时无时钟显示 P1 2 分钟加 1 调整程序 当调分钟时 P1 2 按键按下时进入此程序 SET MM CLR ET0 关定时器 T0 中断 CLR TR0 关闭定时器 T0 MOV R2 06H 进入调时间的状态 赋闪烁定时初值 SETB ET1 允许 T1 中断 SETB TR1 开启定时器 T1 SET2 JNB P1 2 SET1 P1 2 口为 0 键未释放 等待 SETB 00H 键释放 分调整闪烁标志置 1 SET4 JB P1 2 SET3 等待键按下 LCALL DL05S 有键按下 延时 0 5 秒 JNB P1 2 SETout m 按下时间大于 0 5 秒转退出程序 MOV R0 77H 按下时间小于 0 5 秒加 1 分钟操作 LCALL ADD1 调用加 1 子程序 MOV A R3 取调整单元数据 CLR C 清进位标志 CJNE A 60H HHH 调整单元数据与 60 比较 HHH JC SET4 调整单元数据小于 60 转 SET4 循环 LCALL CLR0 调整单元数据大于或等于 60 时清 0 CLR C 清进位标志 AJMP SET4 跳转到 SET4 循环 SETOUT m JNB P1 2 SETOUT1 m 调时退出程序 等待键释放 LCALL DISPLAY 延时削抖 JNB P1 2 SETOUT m 是抖动 返回 SETOUT 再等待 CLR 01H 清调小时标志 CLR 00H 清调分标志 CLR 02H 清闪烁标志 CLR TR1 关闭定时器 T1 CLR ET1 关定时器 T1 中断 SETB TR0 开启定时器 T0 SETB ET0 开定时器 T0 中断 计时开始 LJMP START1 跳回主程序 SET1 LCALL DISPLAY 键释放等待时调用显示程序 调分 AJMP SET2 防止键按下时无时钟显示 SET3 LCALL DISPLAY 等待调分按键时时钟显示用 AJMP SET4 SETOUT1 m LCALL DISPLAY 退出分钟调整时键释放等待 AJMP SETOUT m 防止键按下时无时钟显示 END 程序结束 在这里 我们有必要介绍一下单片机的中断系统 以利于我们的学习 中断技术在单片系统中有着十分重要的作用 它不仅可以提高单片机 CPU 的效率 也可 以对突发事件处理 所谓中断就是当 CPU 正在执行程序 A 时 发生了另一个急需处理的事件 B 这是 CPU 暂停当前执行的程序 A 立即转去执行处理事件 B 的程序 处理完事件 B 后 再返回到程序 A 继续执行 这个过程被叫做中断 关于中断的概念有下列几个名词 1 程序 A 称为主程序 2 处理事件 B 的程序称为中断服务程序 3 主程序中转向中断服 务程序的地方称为断点 4 引起中断的原因即事件 B 称为中断源 5 转去执行中断服 务程序称为中断响应 关于中断的概念可以打个如下的比喻 领导 CPU 在自己的房间办 公 执行主程序 下属 外设 有问题打电话来请示 中断源 领导停下正在进行的工 作 通过电话给下属做指示 执行中断服务程序 指示完后 领导挂断电话 继续做自己 的工作 返回主程序继续执行 中断是一个过程 当中央处理器 CPU 在处理某件事情时 外部又发生了另一紧急事件 请求 CPU 暂停当前的工作而去迅速处理该紧急事件 处理结束后 再回到原来被中断的地方 继续原来的工作 引起中断的原因或发出中断请求的来源 称为中断源 单片机一般允许有多个中断源 当几个中断源同时向 CPU 请求中断时 就存在 CPU 优先响应 哪一个中断请求源的问题 优先级问题 一般根据中断源的轻重缓急排队 优先处理最紧 急事件的中断请求 于是便规定每一个中断源都有一个中断优先级别 并且 CPU 总是响应级 别最高的中断请求 当 CPU 正在处理一个中断源请求的时候 又发生了另一个优先级比它高的中断源请求 如果 CPU 能够暂时中止对原来中断处理程序的执行 转而去处理优先级更高的中断源请求 待处理完以后 再继续执行原来的低级中断处理程序 这样的过程称为中断嵌套 第五章 系统仿真 5 1 PROTUES 软件介绍 Proteus 软件是 Labcenter Electronics 公司的一款电路设计与仿真软件 它包括 ISIS ARES 等软件模块 ARES 模块主要用来完成 PCB 的设计 而 ISIS 模块用来完成电路原 理图的布图与仿真 Proteus 的软件仿真基于 VSM 技术 它与其他软件最大的不同也是最大 的优势就在于它能仿真大量的单片机芯片 比如 MCS 51 系列 PIC 系列等等 以及单片机 外围电路 比如键盘 LED LCD 等等 通过 Proteus 软件的使用我们能够轻易地获得一个 功能齐全 实用方便的单片机实验室 5 2 电子钟系统 PROTUES 仿真 用 PROTUES 软件 根据数字电子钟的原理图 画出仿真图 得到的图如下所示 图 5 1 数字钟的 PROTES 仿真 第六章调试与功能说明 单片机应用系统的调试包括硬件和软件两部分 但是他们并不能完全分开 一般的方法 是排除明显的硬件故障 再进行综合调试 排除可能的软 硬件故障 6 1 硬盘调试 拿到电路板后 首先要检查加工质量 并确保没有任何方面的错误 如短路和断路 尤 其要避免电源短路 元器件在安装前要逐一检查 用万用表测其数值 看是否与所用相同 完成焊接后 应先空载上电 芯片座上不插芯片 并检查各引脚的电位是否正确 若一切 正常 方可在断电的情况下将芯片插入 再次检查各引脚的电位及其逻辑关系 将万用表的 探针放到单片机接电源的引脚上检测一下 看是否符合要求 6 2 系统性能测试与功能说明 走时 默认为走时状态 按 24 小时制分别显示 时时 分分 秒秒 有 2 个 动态 显示 时间会按实际时间以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论