pic单片机课程设计-三位倒计时器(含全部汇编程序清单)

上传人:第*** 文档编号:55315954 上传时间:2018-09-27 格式:DOC 页数:45 大小:4.03MB
返回 下载 相关 举报
pic单片机课程设计-三位倒计时器(含全部汇编程序清单)_第1页
第1页 / 共45页
pic单片机课程设计-三位倒计时器(含全部汇编程序清单)_第2页
第2页 / 共45页
pic单片机课程设计-三位倒计时器(含全部汇编程序清单)_第3页
第3页 / 共45页
pic单片机课程设计-三位倒计时器(含全部汇编程序清单)_第4页
第4页 / 共45页
pic单片机课程设计-三位倒计时器(含全部汇编程序清单)_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《pic单片机课程设计-三位倒计时器(含全部汇编程序清单)》由会员分享,可在线阅读,更多相关《pic单片机课程设计-三位倒计时器(含全部汇编程序清单)(45页珍藏版)》请在金锄头文库上搜索。

1、课程设计报告课程设计报告课程设计报告课程设计报告课程名称:单片机原理与接口技术课程设计 设计题目: 三位倒计时器 院 系: 机电工程学院 班 级: 2012 级电气工程及其自动化专业 姓 名: XXX 学 号: 2012XXXX 指导教师: XXXX 设计时间: 2014 年 X 月 X 日 出勤实物报告总分目录前言1第一章 设计方案11.1 设计内容及要求.11.1.1 设计内容11.1.2 设计要求.11.1.3 功能设计.21.2 硬件设计21.2.1 矩阵键盘电路设计21.2.2 数码管电路设计.31.2.3 LED 及蜂鸣器电路设计.41.2.4 单片机主电路设计.41.2.5 上电

2、电路的设计.51.2.6 总电路图.51.3 总体方案6第二章 软件设计72.1 倒计时部分.72.1.1 键盘扫描子程序82.1.2 0 到 9 按键功能子程序和键盘显示子程序.92.1.3 一位转多位十进制子程序122.1.4 TMR0 中断服务子程序.132.1.5 倒计时显示子程序152.2 附加功能部分.152.2.1 暂停和继续162.2.2 计数功能172.2.3 复位和归零172.3 结束提示部分.182.4 程序部分总结.18第三章 实物照片193.1 实验板照片.193.2 脱机运行照片.19第四章 问题与体会21结论22参考文献23附录:程序清单24前言此次课程设计的内容

3、为三位数的倒计时器的设计。目前倒计时器的发展已经相当先进,我做这次设计的主要目的是想更进一步了解基本电路的设计流程,以提高自己的设计理念,使自己的动手动脑能力有更进一步提高。通过解决现实生活中的问题,巩固和加深单片机课程中所学的理论知识和实验能力,加深对单片机软硬件知识的理解,以获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,能够提高自己的动手能力和设计能力,以培养自己的创新能力,做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式

4、有了更深层次的了解。另外,倒计时器在生活中应用广泛,因此它的功能灵活性和精度的要求就更加显得重要。通过此次练习,我为自己设下了很多要求,力求此倒计时器的功能完美性和精度精细性,以加深自己对电子产品设计的认知。第一章 设计方案1.1 设计内容及要求1.1.1 设计内容本次设计的倒计时器需要由 4*4 矩阵键盘、3 位数码管、LED 小灯和蜂鸣器等有关输入输出器件组成,要求倒计时的初始值和控制按键均由键盘输入,数码管显示倒计时的时间,小灯和蜂鸣器负责终止提示。因此,本次的设计内容包括硬件设计,流程框图及软件的编写与调试。1.1.2 设计要求根据以上设计内容的介绍及我们的设计目的,总结出以下的设计要

5、求:1.能够实现 255 以内数的倒计时;2.倒计时结束,报警提示;3.通过按键设置倒计时的初始值;4.精度为微秒级的计时;5.具有“开始” 、 “暂停” 、 “继续” 、 “加一” 、 “减一” 、 “复位”等功能键;6.计时结束具有重新开始的功能。1.1.3 功能设计为实现使用的灵活性和计数的精准性,我们采用 TMR0 定时器计时,功能键包括计时开始、暂停、继续、加一、减一和复位。实现过程如下:当从键盘输入任意三位以内包括三位数,数码管显示输入数值,按下键 A 倒计时开始,按下键 B 倒计时暂停,按下键 C 倒计时继续;当发现计时过程中需要调整计时时,可以在暂停或非暂停情况下按下键 D 或

6、键 E 实现计数加一和减一的功能。键 F 的主要功能为当计时需要停止和重新再来时,按下它,计时器重新工作。当倒计时到 0 时,小灯立即闪烁,同时蜂鸣器鸣叫,小灯闪烁 3 次以后,倒计时器恢复初始状态,无需复位可以重新使用。按键过程中为确保使用人员知道键是否按下,按下时蜂鸣器应该响起以示提醒。1.2硬件设计我们设计的倒计时器需要由键盘任意输入 255 以内三位数,并显示于数码管上,计时按钮及相关功能均由键盘键入,同时为保证键盘按下的准确性,加入按下蜂鸣器提示功能,计时结束需有小灯和蜂鸣器提醒。因此,设计电路图时必须涉及到键盘,4 位数码管,蜂鸣器,LED 小灯,同时上电电路和单片机控制电路为必须

7、加入的。1.2.1 矩阵键盘电路设计一般键盘控制有 4*4、5*5 等类型方式,考虑到功能所需和单片机引脚的限制,我们采用 4*4 矩阵键盘。该键盘有 4 个输入端,4 个输出端,我们习惯于把它连接在单片机的 RC 端口。因此,我们将 RC 的低四位与键盘的输入相连,高四位与输出相连,以实现键盘的正确扫描。图 1-1 键盘设计电路图1.2.2 数码管电路设计数码管显示需送入位选和段选,我们所需为 3 位显示,采用 4 个数码管,因此需要将 4 个位选联入单片机中,同时还将有 8 条段选联入其中。习惯上,我们将段选接入 RD 的 8 个端口,4 个位选接入 RB 的 1 到 4 位。图 1-2

8、数码管设计电路图1.2.3 LED 及蜂鸣器电路设计蜂鸣器的设计就简单许多,只需将其一端接入高电平,另一端接入单片机,为保证其正常工作,接入 100 欧姆的电阻。接入单片机的一端我们可以设为 RE5。小灯同蜂鸣器相似,只需考虑接入的引脚,实验中我们接入 3 种颜色的小灯,其引脚分别连至单片机的 RE 端口的 0、1、2 位。图 1-3 LED 及蜂鸣器电路连接图1.2.4 单片机主电路设计本次设计采用的单片机为 PIC16F887,其功能强大,应用灵活。在使用它进行工作的前提是对其基本的引脚进行分配,这里我们只考虑 VCC 和 GND 以及晶振的接入,晶振选择 4MHz 的晶振。其具体电路图如

9、下:图 1-4 单片机接线图1.2.5 上电电路的设计上电电路采用已有的设计好的电路,由 USB 接口供电,其电路图如下:图 1-5 上电电路1.2.6 总电路图总电路图如下图 1-6:图 1-6 总电路图1.3总体方案由以上设计可知,系统的硬件原理图如下所示:图 1-7 硬件原理图设计时可采用模块化程序设计方法。模块划分时应遵循下述原则:1每个模块应具有独立的功能,能产生一个明确的结果;2模块之间的控制参数应尽量简单,数据参数应尽量少;3根据模块的划分原则,将该程序划分成 6 个模块,如图 1-8 所示。主程序键盘扫描 模块键盘显示 模块TMR0 定 时模块动态显示 模块倒计时结 束提示模

10、块附加功能 模块图 1-8 程序模块第二章 软件设计基于硬件工作的软件部分的编写是通过汇编语言实现的。由以上分析可知,该部分大致包括键盘扫描,键盘显示,TMR0 定时器,动态显示,结束提示和其他功能模块等六大部分,其中每大部分又包括不等的若干小部分,下面通过总体到局部的过程介绍它的工作原理。2.1 倒计时部分该软件由键入到倒计时的工作过程可由下面框图表示,此处省略了附加功能部分,只体现出其一般工作状态。图 2-1 倒计时器工作流程图该流程图表示了软件工作的大体过程,具体的过程如下子章节。2.1.1 键盘扫描子程序键盘连接有 4 个输入端和 4 个输出端,输入端连在 RC 低四位,输出端连在 R

11、C 高四位,先让低四位赋值低电平,若有键按下,高四位必有低电平出现,之后继续判断具体哪个键被按下。以 RC0 为 0 为例,若令 RC0=0,即判断第一行是否有键按下,依次判断高四位是否为低电平,若为低电平,则该键被按下,转入相应功能子程序。以 RC0=0 为例,框图如下:图 2-2 键盘扫描流程图程序及注释如下:JIANPANMOVLW00H;RC 口低四位输出低电平MOVWFPORTCMOVLW0F0HANDWFPORTC,W;屏蔽低四位SUBLW0F0HBTFSC STATUS,Z;判断高四位是否为全 1RETURN;是,无键输入,返回继续判断CALLDELAY10MS;否,有可能有键输

12、入,延时 20 毫秒CALLDELAY10MSMOVLW0F0H;再判断一次是否键入ANDWFPORTC,WSUBLW0F0HBTFSC STATUS,ZRETURN;虚假输入,返回BCFPORTB,5;确实有键输入,蜂鸣器鸣叫MOVLW0FEH;逐行判断哪个键输入,首先 RC0=0MOVWFPORTCBTFSS PORTC,4;判断键 0GOTO JIAN0;是,跳至键 0 功能子程序BTFSS PORTC,5;判断键 1GOTO JIAN1;是,跳至键 1 功能子程序BTFSS PORTC,6;判断键 2GOTO JIAN2;是,跳至键 2 功能子程序BTFSS PORTC,7;判断键 3

13、GOTO JIAN3;是,跳至键 3 功能子程序2.1.2 0 到 9 按键功能子程序和键盘显示子程序0 到 9 按键的主要作用是输入我们倒计时的初值,当这些按键按下时,会调用键盘显示子程序,将键入的数字通过数码管显示出来。为了判断按下的次数,设置变量KEFLAG,每调用一次键子程序变量左移一位,当需要显示时,只需判断 KEFLAG 的第几位为 1,就可判断该键入的数字在数码管的哪一个位上显示。同时,键入的位数不同会调用不同的键盘显示子程序,我们设计的三位倒计时器有三个键盘显示子程序,当按下一个数时,调用 XIANSHI1,为静态显示;当按下第二个数时,数码管动态扫描,显示两位数,就需要调用

14、XIANSHI2,同理按下 3 位数调用 3 位显示子程序XIANSHI3。0 到 9 按键功能子程序的另一个作用就是将该按键的标号放入指定的变量带回,为之后的动态倒计时显示提供十进制转换所需的数字。该子程序如下,以 0 到 1 为例:;0 到 9 按键,用于键入数字JIAN0CALLSFANG;释放MOVLW00H;将 0 放入 W 寄存器MOVWFNUM8;NUM8 带 0 返回CALLCHABIAO;调用查表子程序MOVWFBIAN;BIAN 带 0 显示码返回RLFKEYFLAG,1;键按下一次,KEYFLAG 左移一位RETURNJIAN1CALLSFANG;释放MOVLW01H;将

15、 1 放入 W 寄存器MOVWFNUM8;NUM8 带 1 返回CALLCHABIAO;调用查表子程序MOVWFBIAN;BIAN 带 1 显示码返回RLFKEYFLAG,1;键按下一次,KEYFLAG 左移一位RETURN该倒计时器将键盘键入数字的显示和倒计时时数字的显示分开,即两者的显示不是在同一个显示子程序里。因此这里需要简要的介绍一下键盘显示子程。左图展示了键的输入在数码管显示的具体流程,其核心便是三个显示子程序。对于显示 1 子程序,由 0 到 9 按键功能子程序知,送到这里的变量为该按键的显示码值,由于为一位显示,只需将第一位位选打开,将码值送入,关闭位选即可。由于多位显示同样需要

16、该位的码值,且新键入的变量相同,所以我们应将该码值备份两份,为多位显示做准备。图 2-3 选择第几个显示子程序显示 2 子程序和显示 3 子程序与显示 1 子程序相似,只是送入两个数进行动态扫描。其程序代码及注释如下,这里以两位显示为例。;键盘显示 2 子程序,用于 2 位数的键入显示XIANSHI2 BCFPORTB,1;个位位选打开MOVF BIAN,W;送入段选MOVWFPORTDMOVWFNUM4;同时复制到 NUM4,为 3 位显示所用CALLDELAY;延时BSFPORTB,1;个位位选关闭BCFPORTB,2;十位位选打开MOVF NUM,W;送入段选MOVWFPORTDCALLDELAY;延时BSFPORTB,2;位选关闭;2 个数组合成十进制两位数MOVF NUM8,W;将 NUM8 放入 NUM6,为送数所用M

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号