PIC单片机课程设计 - 三位倒计时器(含全部汇编程序清单)
- 格式:doc
- 大小:4.06 MB
- 文档页数:45
目录第一章系统概述 (1)1.1 背景知识 (1)1.2 设计内容 (2)1.3 设计要求 (2)1.4 设计意义 (2)第二章系统方案 (3)2.1 总体方案 (3)2.2 方案组成 (4)第三章硬件设计 (5)3.1 AT89C51的介绍 (5)3.2 复位电路 (5)3.3 按键电路 (6)3.4 显示电路 (6)3.5 蜂鸣器电路 (8)第四章软件设计 (9)4.1 主程序设计 (9)4.1.1 倒计时模块 (10)4.1.2 键盘扫描模块 (10)4.2 时间调整子程序设计 (11)4.3 显示子程序设计 (12)4.4 复位程序设计 (12)第五章系统调试 (14)5.1 软件仿真 (14)5.2 硬件调试 (17)第六章总结 (18)6.1 设计心得及体会 (18)6.2 参考文献 (19)附录 (20)附录A 程序清单 (20)附录B 总电路图 (26)倒计时第一章系统概述1.1背景知识近年来随着计算机在社会领域的渗透,单片机的应用正在不断的走向深入,同时带动传统控制检测日新月异更新。
在实时控制和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
单片机因将其主要组成部分集成在一个芯片上而得名,具体说就是把中央处理器CPU(Central processing unit)。
随机存储器RAM(Random access memory)。
只读存储器ROM(Read only memory)。
中断系统、定时器/计数器以及I\O(Input/output)接口电路等主要微型机部件集成在一个芯片上。
虽然单片机只是一个芯片,但从组成和功能上看,它已具有了计算机系统的属性。
为此,称它为单片微型计算机SCMC(Single chip micro computer),简称单片机。
单片机主要应用与控制领域,用以实现各种测试和控制功能,为了强调起控制属性,也可以把单片机称为微控制器MCU(Micro controller unit)。
课程设计报告课程设计名称:三位数字显示计时定时器设计专业班级:学生姓名:学号:同组人员:指导教师:课程设计时间: 2周目录1 设计任务、要求以及文献综述 (1)2 原理叙述和设计方案 (1)2.1 设计方案选择和论证 (1)2.2 电路的功能框图及其说明 (1)2.3 功能块及单元电路的设计、计算与说明 (2)2.4 总体电路原理图 (4)3 电路的仿真与调试 (4)3.1 电路仿真 (4)3.2 调试中出现的问题及解决方法 (5)4 制作与调试 (6)4.1元件清单、实物照片 (6)4.2制作与调试过程中遇到的问题及解决办法 (7)5心得体会 (7)6 参考文献 (8)附录 (9)三位数字显示计时定时器设计1 设计任务、要求以及文献综述3位数字显示计时定时器是一个典型的利用数字系统的例子。
所谓数字系统,是指由若干数字电路及逻辑部件组成并且能够进行采集、加工、处理及传送数字信号的设备。
一个完整的数字系统通常由输入电路、输出电路、控制电路、若干个子系统和时基电路等部分组成。
设计要求如下:1、计时功能。
能任意启停,保持计时结果;2、开机自动复位;3、最大计时显示为9分59秒;4、定时报警。
2 原理叙述和设计方案2.1 设计方案选择和论证方案一:设计的3位数字显示计时定时器则分别有4个子系统组成:秒脉冲时间标准产生电路、计数器、译码器和显示器、开机自动清零电路、计时启停控制电路方案二:实现一个三位数字显示的秒表系统,单片机,lcd1602显示屏,矩阵键盘等组成部分。
秒计数电路满60向分计数电路进位(显示00~59s),分计数电路满足10(显示0~9)后停止并且灯亮,等待重新复位计时。
论证:方案二比方案一好。
理由一:方案二显示的最终结果比较直观。
理由二:方案二可更改性好,方便日后的改进。
2.2 电路的功能框图及其说明根据原理正确、易于实现、且实验室有条件实现的原则确定设计方案,画出总体设计功能框图,如图1所示。
plc倒计时课程设计一、课程目标知识目标:1. 学生能理解PLC(可编程逻辑控制器)的基本原理和功能。
2. 学生能掌握倒计时程序在PLC中的应用及其逻辑设计。
3. 学生能描述倒计时过程中涉及的输入输出信号及其作用。
技能目标:1. 学生能够操作PLC编程软件,编写并调试简单的倒计时程序。
2. 学生能够运用逻辑思维和问题解决技巧,分析并优化倒计时程序。
3. 学生能够通过小组合作,共同完成倒计时PLC程序的调试和运行。
情感态度价值观目标:1. 学生培养对自动化控制技术的兴趣,激发学习PLC技术的热情。
2. 学生在小组合作中学会沟通、协作,培养团队精神。
3. 学生认识到PLC技术在生产生活中的重要性,增强实践操作能力和创新意识。
课程性质:本课程为实践操作课,以学生动手实践为主,结合理论知识,培养学生的实际操作能力。
学生特点:学生处于高年级阶段,已具备一定的PLC基础知识和操作能力,具备较强的逻辑思维和分析能力。
教学要求:教师应充分引导学生参与实践,关注学生的个体差异,提高学生的动手能力和问题解决能力。
在教学过程中,注重理论与实践相结合,培养学生的创新意识和团队合作精神。
通过本课程的学习,使学生能够将所学知识应用于实际工程案例中,提高综合应用能力。
二、教学内容本节教学内容主要包括:1. PLC基本原理回顾:使学生巩固PLC的工作原理、结构组成以及其在工业控制中的应用。
2. 倒计时程序设计:学习PLC编程中倒计时功能的实现,包括计数器的使用、程序逻辑设计等。
- 教材章节:第三章“PLC程序设计基础”,第五节“计数器与定时器”。
- 内容列举:倒计时原理、计数器操作指令、程序流程图绘制。
3. PLC编程软件操作:教授学生如何使用PLC编程软件进行程序编写、调试和运行。
- 教材章节:第四章“PLC编程软件的使用”,第一节“软件界面及功能介绍”。
- 内容列举:软件基本操作、程序输入与下载、调试与监控。
4. 倒计时程序实践:指导学生分组进行倒计时程序的设计、编程和调试。
课程设计说明书课程名称:单片机技术设计题目:倒计时数字秒表设计院系:学生姓名:张三学号:*********专业班级:***********指导教师:李四年月日课程设计任务书倒计时秒表摘要:本次课程设计以AT89S52单片机为核心设计一个倒计时数字秒表,计数初值为59并开始每秒自动减1,当按键1按下时记录当前时间值,当按键2按下时显示当前记录值,显示过之后再次按下按键1时秒表复位为59。
本设计硬件部分包括电源电路、复位电路、按键电路、振荡电路、数码管显示电路五部分电路,软件程序部分有定时中断程序、外部中断程序、显示子程序和延时子程序等。
软件Proteus画出原理图并进行仿真,依照仿真成功的原理图接线,在万能版上把个个器件焊接好从而实现预期的功能。
关键词:倒计时AT89S52 74LS47 数码管目录1.设计背景 (5)1.1、设计课题的提出 (5)1.2、设计作用及意义 (5)2.设计方案 (6)2.1、可行方案选择 (6)2.2、可行方案比较 (6)3.方案实施 (7)3.1、硬件电路的实施 (7)3.2、软件程序的实施 (11)4.结果与结论 (13)4.1、Proteus仿真运行结果 (13)4.2、结论 (14)5.收获与致谢 (14)6.参考文献 (14)7.附件 (15)7.1、附件一(整体电路图) (15)7.1、附件二(元件清单图) (16)7.1、附件三(程序) (17)7.1、附件四(运行实物图) (22)1. 设计背景1.1设计课题的提出计时器日常生活中随处可见,我们手上的电子表,手机上的时间显示等,这些利用数字电路实现的装置,与机械时钟相比具有更高的准确性与直观性,且无机械装置,具有更长的使用寿命。
其中重要的组成部分就是计数器模块,是单片机中常见的模块,以计时器为基础还可以设计更多对日常生活密切相关的设备,诸如定时报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、甚至各种定时电器的自动启用等,都是以计时器为基础的。
单片机设计倒计时器在我们的日常生活中,倒计时器有着广泛的应用,比如体育比赛、烹饪、考试等等。
通过单片机来设计倒计时器,不仅能够实现精准的计时功能,还能根据不同的需求进行灵活的定制和扩展。
接下来,让我们一起深入了解一下如何用单片机设计一个实用的倒计时器。
首先,我们需要明确倒计时器的基本功能和要求。
一般来说,倒计时器应该具备以下几个主要功能:1、设定倒计时的时间,时间范围可以根据实际需求进行调整,比如从几分钟到几小时。
2、能够清晰地显示剩余的时间。
3、具有启动、暂停和复位等操作按钮。
4、在倒计时结束时,能够发出提示信号,比如声音或者灯光提示。
为了实现这些功能,我们选择合适的单片机作为核心控制单元。
常见的单片机如 51 系列、STM32 系列等都可以满足需求。
以 51 单片机为例,它具有价格低廉、编程简单、资源丰富等优点。
在硬件设计方面,我们需要以下几个主要的组件:1、单片机最小系统:包括单片机芯片、晶振电路、复位电路等,为单片机的正常运行提供必要的条件。
2、显示模块:可以选择数码管或者液晶显示屏(LCD)来显示倒计时的时间。
数码管显示简单直观,适用于对显示效果要求不高的场合;LCD 显示屏则能够提供更丰富的信息显示,比如同时显示时间、日期等。
3、按键模块:用于输入操作指令,如设置时间、启动、暂停、复位等。
4、报警模块:可以使用蜂鸣器或者发光二极管(LED)在倒计时结束时发出提示信号。
下面我们来详细介绍一下各个模块的设计和实现。
单片机最小系统的设计是整个硬件系统的基础。
晶振电路为单片机提供时钟信号,保证其正常运行的时序。
复位电路则在系统出现异常时,能够将单片机恢复到初始状态。
对于显示模块,如果选择数码管,需要通过驱动芯片(如74HC595)来控制数码管的显示。
如果选择 LCD 显示屏,则需要根据显示屏的接口类型(如并行接口或串行接口)来进行相应的连接和编程。
按键模块可以采用独立按键或者矩阵按键的方式。
课程设计报告课程设计名称:三位数字显示计时定时器设计专业班级: 0212112****:**学号: ********* 同组人员:****:***课程设计时间: 2周目录1 设计任务、要求以及文献综述 (1)2 原理叙述和设计方案 (1)2.1 设计方案选择和论证 (1)2.2 电路的功能框图及其说明 (1)2.3 功能块及单元电路的设计、计算与说明 (2)2.4 总体电路原理图 (4)3 电路的仿真与调试 (4)3.1 电路仿真 (4)3.2 调试中出现的问题及解决方法 (5)4 制作与调试 (6)4.1元件清单、实物照片 (6)4.2制作与调试过程中遇到的问题及解决办法 (7)5心得体会 (8)6 参考文献 (8)附录 (8)三位数字显示计时定时器设计1 设计任务、要求以及文献综述3位数字显示计时定时器是一个典型的利用数字系统的例子。
所谓数字系统,是指由若干数字电路及逻辑部件组成并且能够进行采集、加工、处理及传送数字信号的设备。
一个完整的数字系统通常由输入电路、输出电路、控制电路、若干个子系统和时基电路等部分组成。
设计要求如下:1、计时功能。
能任意启停,保持计时结果;2、开机自动复位;3、最大计时显示为9分59秒;4、定时报警。
2 原理叙述和设计方案2.1 设计方案选择和论证方案一:设计的3位数字显示计时定时器则分别有4个子系统组成:秒脉冲时间标准产生电路、计数器、译码器和显示器、开机自动清零电路、计时启停控制电路方案二:实现一个三位数字显示的秒表系统,单片机,lcd1602显示屏,矩阵键盘等组成部分。
秒计数电路满60向分计数电路进位(显示00~59s),分计数电路满足10(显示0~9)后停止并且灯亮,等待重新复位计时。
论证:方案二比方案一好。
理由一:方案二显示的最终结果比较直观。
理由二:方案二可更改性好,方便日后的改进。
2.2 电路的功能框图及其说明根据原理正确、易于实现、且实验室有条件实现的原则确定设计方案,画出总体设计功能框图,如图2.1所示。
单片机课程设计倒计时秒表-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN一、设计目的此次设计是我们更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。
通过解决实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验以后从事生产和科研工作打下一定的基础。
本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,以便今后自己在单片机领域的学习和开发打下基础,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。
本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。
掌握单片机应用系统的软硬件设计过程、方法及实现,强化单片机应用电路的设计与分析能力。
提高学生在单片机应用方面的实践技能和科学作风;培育学生综合运用理论知识解决问题的能力,实现理论结合实际,学以至用的原则。
用所学的知识和自身课外的拓展学习加深对专业课的理解和学习;锻炼综合运用电路设计及相关电子仪器、单片机软硬件结合的理论,结合生产实际分析和解决工作工程实际问题的能力,加固、加深和扩展有关电子类,汇编语言,相关电子电路和仿真软件方面的知识和能力。
通过本次课程设计,应加强培养如下能力:(1)加强自身独立的动手能力和思考解决问题的能力,提高创造能力;(2)学会使用软件Proteus画原理图和仿真调试。
(3)学会基本焊接电路板的技能通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。
二、设计要求1、可以以实现正常秒表的所有功能,包括启动、暂停、复位等;2、可以自由设定倒计时时间(10s、20s、30s···),并进行倒计时;3、显示方式自选;4、任选一款51单片机;5、扩展功能:在秒表的基础上增加时钟功能,倒计时完成时加入报警单元,如声音、灯光等。
单片机倒计时课程设计一、课程目标知识目标:1. 理解单片机的基本原理,掌握其内部结构和功能。
2. 学会编写简单的C语言程序,实现对单片机的控制。
3. 掌握倒计时功能的实现方法,理解其工作原理。
技能目标:1. 能够运用所学知识,设计并实现一个具有倒计时功能的小程序。
2. 培养学生的动手实践能力,提高问题解决和团队协作能力。
3. 提高学生编程和调试程序的能力,培养良好的编程习惯。
情感态度价值观目标:1. 激发学生对单片机及编程的兴趣,培养自主学习、持续探究的热情。
2. 培养学生面对问题时的耐心、细心和信心,形成积极向上的学习态度。
3. 增强学生的团队协作意识,培养尊重他人、共同进步的价值观。
课程性质分析:本课程为实践性较强的课程,结合单片机原理和编程技巧,培养学生动手实践能力和问题解决能力。
学生特点分析:本课程针对的是初中或高中年级的学生,他们对单片机有一定的基础认识,具备基本的编程知识,但实践能力有待提高。
教学要求:1. 课程内容要紧密结合课本,确保学生能够将所学知识应用到实际操作中。
2. 教学过程中注重启发式教学,引导学生主动思考、发现问题、解决问题。
3. 重视团队协作,培养学生的沟通能力和合作精神。
4. 教学评估关注学生的实际操作能力、编程技巧和团队协作表现。
二、教学内容1. 单片机基础理论:回顾单片机的内部结构、工作原理及功能,重点掌握时钟电路、I/O口控制、中断系统等基础知识。
相关教材章节:第一章 单片机概述,第三章 单片机内部结构及工作原理。
2. C语言编程:学习单片机编程基础,掌握C语言的基本语法和编程技巧,能编写简单的控制程序。
相关教材章节:第二章 单片机编程语言,第六章 C语言编程实例。
3. 倒计时程序设计:学习倒计时程序的设计方法,掌握定时器/计数器的工作原理,学会编写倒计时程序。
相关教材章节:第五章 定时器/计数器,第七章 常用程序设计实例。
4. 实践操作:结合所学知识,设计并实现一个具有倒计时功能的小程序,包括硬件连接、程序编写、调试与优化。
单片机课程设计秒倒计时概述在单片机课程设计中,秒倒计时是一个常见的实践项目。
本文将介绍如何使用单片机设计一个简单的秒倒计时电路,并使用Markdown文本格式进行说明。
硬件设备•单片机(例如STC89C52)•七段数码管•按钮•电阻、电容等基础元器件功能设计本文设计的秒倒计时电路具有以下功能: 1. 系统上电后,自动开始倒计时; 2. 使用按钮控制启动/暂停倒计时; 3. 使用按钮控制归零操作; 4. 显示倒计时的秒数。
硬件连接七段数码管将7个IO口分别连接到七段数码管的对应引脚,使用共阳极数码管时,将数码管的共阳极引脚连接到VCC,使用共阴极数码管时,将数码管的共阴极引脚连接到GND。
按钮使用一个按钮作为启动/暂停倒计时的按键,使用另一个按钮作为归零操作的按键。
将按钮引脚连接到单片机的GPIO口,并通过上拉电阻将按钮引脚连接到VCC。
软件设计引脚定义首先,需要定义单片机的输入输出引脚。
根据硬件连接,假设七段数码管的引脚分别连接到P0口,启动/暂停按钮连接到P1.0口,归零按钮连接到P1.1口。
可以使用以下代码进行引脚定义:// 引脚定义sbit LED = P0; // 七段数码管连接到P0口sbit KEY1 = P1^0; // 启动/暂停按钮连接到P1.0口sbit KEY2 = P1^1; // 归零按钮连接到P1.1口然后,需要设计倒计时的逻辑。
在每个时钟周期,需要判断是否需要启动/暂停倒计时,以及是否需要进行归零操作。
具体的倒计时逻辑可以使用以下代码实现:// 秒倒计时逻辑void countdown() {static unsigned int seconds = 60; // 倒计时的秒数,默认为60秒static bit running = 0; // 表示倒计时是否运行中,默认为停止状态if (running) {if (seconds > 0) {seconds--;} else {running = 0;}}if (KEY1 == 0) { // 按下启动/暂停按钮running = !running;delay(10); // 延时去抖动}if (KEY2 == 0) { // 按下归零按钮seconds = 60;running = 0;delay(10); // 延时去抖动}}最后,需要设计显示倒计时的逻辑。
摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
而51单片机是各单片机中最为典型和最有代表性的一种。
本实验是基于MCS51系列单片机所设计的,可以实现键盘按键与数字动态显示并可以用音乐倒数的计数器。
本设计基于单片机技术原理,以单片机芯片STC89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。
当倒计数为0时,蜂鸣器就发出音乐声响等等。
该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。
关键词:STC89C52、键盘、LCD1602显示、蜂鸣器目录摘要............................................................... I 1 项目概述和要求 (2)1.1 单片机基础知识 (2)1.2 单片机的发展趋势 (2)1.3 项目设计任务与要求 (3)2 系统设计 (4)2.1 框图设计 (4)2.2部分硬件方案论述 (5)2.3电路原理图 (5)2.4元件清单 (6)2.4.1STC89C52芯片 (6)2.4.2字符型LCD1602 ......................... 错误!未定义书签。
2.4.3按键控制模块 (8)2.4.4其它元件 (10)3软件设计 (11)3.1 程序流程图 (11)4 系统的仿真与调试 (12)4.1 硬件调试 (12)4.2 软件调试 (12)4.3 软硬件调试 (12)5总结 (13)参考文献 (14)附录程序 (25)1 项目概述和要求1.1 单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。
课程设计报告课程名称:单片机原理与接口技术课程设计设计题目:三位倒计时器院系:机电工程学院班级:2012级电气工程及其自动化专业姓名:XXX学号:2012XXXX指导教师:XXXX设计时间:2014年X月X日出勤实物报告总分目录前言 (1)第一章设计方案 (1)1.1 设计内容及要求 (1)1.1.1 设计内容 (1)1.1.2设计要求 (1)1.1.3功能设计 (2)1.2硬件设计 (2)1.2.1 矩阵键盘电路设计 (2)1.2.2数码管电路设计 (3)1.2.3 LED及蜂鸣器电路设计 (4)1.2.4单片机主电路设计 (4)1.2.5上电电路的设计 (5)1.2.6总电路图 (5)1.3总体方案 (6)第二章软件设计 (7)2.1 倒计时部分 (7)2.1.1 键盘扫描子程序 (8)2.1.2 0到9按键功能子程序和键盘显示子程序 (9)2.1.3 一位转多位十进制子程序 (12)2.1.4 TMR0中断服务子程序 (13)2.1.5 倒计时显示子程序 (15)2.2 附加功能部分 (15)2.2.1 暂停和继续 (16)2.2.2 计数功能 (17)2.2.3 复位和归零 (17)2.3 结束提示部分 (18)2.4 程序部分总结 (18)第三章实物照片 (19)3.1 实验板照片 (19)3.2 脱机运行照片 (19)第四章问题与体会 (21)结论 (22)参考文献 (23)附录:程序清单 (24)前言此次课程设计的内容为三位数的倒计时器的设计。
目前倒计时器的发展已经相当先进,我做这次设计的主要目的是想更进一步了解基本电路的设计流程,以提高自己的设计理念,使自己的动手动脑能力有更进一步提高。
通过解决现实生活中的问题,巩固和加深单片机课程中所学的理论知识和实验能力,加深对单片机软硬件知识的理解,以获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。
本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,能够提高自己的动手能力和设计能力,以培养自己的创新能力,做到理论和实践相结合。
本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式有了更深层次的了解。
另外,倒计时器在生活中应用广泛,因此它的功能灵活性和精度的要求就更加显得重要。
通过此次练习,我为自己设下了很多要求,力求此倒计时器的功能完美性和精度精细性,以加深自己对电子产品设计的认知。
第一章设计方案1.1 设计内容及要求1.1.1 设计内容本次设计的倒计时器需要由4*4矩阵键盘、3位数码管、LED小灯和蜂鸣器等有关输入输出器件组成,要求倒计时的初始值和控制按键均由键盘输入,数码管显示倒计时的时间,小灯和蜂鸣器负责终止提示。
因此,本次的设计内容包括硬件设计,流程框图及软件的编写与调试。
1.1.2设计要求根据以上设计内容的介绍及我们的设计目的,总结出以下的设计要求:1.能够实现255以内数的倒计时;2.倒计时结束,报警提示;3.通过按键设置倒计时的初始值;4.精度为微秒级的计时;5.具有“开始”、“暂停”、“继续”、“加一”、“减一”、“复位”等功能键;6.计时结束具有重新开始的功能。
1.1.3功能设计为实现使用的灵活性和计数的精准性,我们采用TMR0定时器计时,功能键包括计时开始、暂停、继续、加一、减一和复位。
实现过程如下:当从键盘输入任意三位以内包括三位数,数码管显示输入数值,按下键A倒计时开始,按下键B倒计时暂停,按下键C倒计时继续;当发现计时过程中需要调整计时时,可以在暂停或非暂停情况下按下键D或键E实现计数加一和减一的功能。
键F的主要功能为当计时需要停止和重新再来时,按下它,计时器重新工作。
当倒计时到0时,小灯立即闪烁,同时蜂鸣器鸣叫,小灯闪烁3次以后,倒计时器恢复初始状态,无需复位可以重新使用。
按键过程中为确保使用人员知道键是否按下,按下时蜂鸣器应该响起以示提醒。
1.2硬件设计我们设计的倒计时器需要由键盘任意输入255以内三位数,并显示于数码管上,计时按钮及相关功能均由键盘键入,同时为保证键盘按下的准确性,加入按下蜂鸣器提示功能,计时结束需有小灯和蜂鸣器提醒。
因此,设计电路图时必须涉及到键盘,4位数码管,蜂鸣器,LED小灯,同时上电电路和单片机控制电路为必须加入的。
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 数码管设计电路图1.2.3 LED及蜂鸣器电路设计蜂鸣器的设计就简单许多,只需将其一端接入高电平,另一端接入单片机,为保证其正常工作,接入100欧姆的电阻。
接入单片机的一端我们可以设为RE5。
小灯同蜂鸣器相似,只需考虑接入的引脚,实验中我们接入3种颜色的小灯,其引脚分别连至单片机的RE端口的0、1、2位。
图1-3 LED及蜂鸣器电路连接图1.2.4单片机主电路设计本次设计采用的单片机为PIC16F887,其功能强大,应用灵活。
在使用它进行工作的前提是对其基本的引脚进行分配,这里我们只考虑VCC和GND以及晶振的接入,晶振选择4MHz的晶振。
其具体电路图如下:图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所示。
图1-8 程序模块主程序键盘扫描模块 键盘显示模块 TMR0定时模块 动态显示模块 倒计时结束提示模块 附加功能模块第二章软件设计基于硬件工作的软件部分的编写是通过汇编语言实现的。
由以上分析可知,该部分大致包括键盘扫描,键盘显示,TMR0定时器,动态显示,结束提示和其他功能模块等六大部分,其中每大部分又包括不等的若干小部分,下面通过总体到局部的过程介绍它的工作原理。
2.1 倒计时部分该软件由键入到倒计时的工作过程可由下面框图表示,此处省略了附加功能部分,只体现出其一般工作状态。
图2-1 倒计时器工作流程图该流程图表示了软件工作的大体过程,具体的过程如下子章节。
2.1.1 键盘扫描子程序键盘连接有4个输入端和4个输出端,输入端连在RC低四位,输出端连在RC高四位,先让低四位赋值低电平,若有键按下,高四位必有低电平出现,之后继续判断具体哪个键被按下。
以RC0为0为例,若令RC0=0,即判断第一行是否有键按下,依次判断高四位是否为低电平,若为低电平,则该键被按下,转入相应功能子程序。
以RC0=0为例,框图如下:图2-2 键盘扫描流程图程序及注释如下:JIANPAN MOVLW 00H ;RC口低四位输出低电平MOVWF PORTCMOVLW 0F0HANDWF PORTC,W ;屏蔽低四位SUBLW 0F0HBTFSC STATUS,Z ;判断高四位是否为全1RETURN ;是,无键输入,返回继续判断CALL DELAY10MS ;否,有可能有键输入,延时20毫秒CALL DELAY10MSMOVLW 0F0H ;再判断一次是否键入ANDWF PORTC,WSUBLW 0F0HBTFSC STATUS,ZRETURN ;虚假输入,返回BCF PORTB,5 ;确实有键输入,蜂鸣器鸣叫MOVLW 0FEH ;逐行判断哪个键输入,首先RC0=0MOVWF PORTCBTFSS PORTC,4 ;判断键0GOTO JIAN0 ;是,跳至键0功能子程序BTFSS PORTC,5 ;判断键1GOTO JIAN1 ;是,跳至键1功能子程序BTFSS PORTC,6 ;判断键2GOTO JIAN2 ;是,跳至键2功能子程序BTFSS PORTC,7 ;判断键3GOTO JIAN3 ;是,跳至键3功能子程序2.1.2 0到9按键功能子程序和键盘显示子程序0到9按键的主要作用是输入我们倒计时的初值,当这些按键按下时,会调用键盘显示子程序,将键入的数字通过数码管显示出来。
为了判断按下的次数,设置变量KEFLAG,每调用一次键子程序变量左移一位,当需要显示时,只需判断KEFLAG的第几位为1,就可判断该键入的数字在数码管的哪一个位上显示。
同时,键入的位数不同会调用不同的键盘显示子程序,我们设计的三位倒计时器有三个键盘显示子程序,当按下一个数时,调用XIANSHI1,为静态显示;当按下第二个数时,数码管动态扫描,显示两位数,就需要调用XIANSHI2,同理按下3位数调用3位显示子程序XIANSHI3。
0到9按键功能子程序的另一个作用就是将该按键的标号放入指定的变量带回,为之后的动态倒计时显示提供十进制转换所需的数字。
该子程序如下,以0到1为例:;0到9按键,用于键入数字JIAN0 CALL SFANG ;释放MOVLW 00H ;将0放入W寄存器MOVWF NUM8 ;NUM8带0返回CALL CHABIAO ;调用查表子程序MOVWF BIAN ;BIAN带0显示码返回RLF KEYFLAG,1 ;键按下一次,KEYFLAG左移一位RETURNJIAN1 CALL SFANG ;释放MOVLW 01H ;将1放入W寄存器MOVWF NUM8 ;NUM8带1返回CALL CHABIAO ;调用查表子程序MOVWF BIAN ;BIAN带1显示码返回RLF KEYFLAG,1 ;键按下一次,KEYFLAG左移一位RETURN该倒计时器将键盘键入数字的显示和倒计时时数字的显示分开,即两者的显示不是在同一个显示子程序里。
因此这里需要简要的介绍一下键盘显示子程。
左图展示了键的输入在数码管显示的具体流程,其核心便是三个显示子程序。
对于显示1子程序,由0到9按键功能子程序知,送到这里的变量为该按键的显示码值,由于为一位显示,只需将第一位位选打开,将码值送入,关闭位选即可。
由于多位显示同样需要该位的码值,且新键入的变量相同,所以我们应将该码值备份两份,为多位显示做准备。