60秒倒计时器-单片机课程设计报告

时间:2024.3.31

机电工程学院

课程设计报告书

题    目:     制作60秒倒计时器    

专    业:     机电一体化                 

班    级:      机电10307                 

学    号:      10023582                  

   学生姓名:       张   洋                  

指导教师:       黎老师                   

       20## 年 12月12


一、  设计要求:

由单片机接收小键盘阵列设定倒计时时间,倒计时的范围最大为60分钟,由LED 显示模块显示剩余时间,显示格式为  XX(分):XX(秒).X,精确到0.1s的整数倍。倒计时到,由蜂鸣器发出报警。绘制系统硬件接线图,并进行系统仿真和实验。画出程序流程图并编写程序实现系统功能。

二、  设计的作用目的:

此次设计是我们更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。通过解决实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,以便今后自己在单片机领域的学习和开发打下基础,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。

三、  具体设计:

1. 问题分析:

在电子技术飞速发展的今天,电子产品的人性化和智能化已经非常成熟,其发展前景仍然不可估量。如今的人们需求的是一种能给自己带来方便的电子产品,当然最好是人性化和智能化的,如何能做到智能化呢?单片机的引入就是一个很好的例子。单片机又称单片微型计算机,也称为微控制器,是微型计算机的一个重要分支,单片机是20世纪70年代中期发展起来的一种大规模集成电路芯片,是集CPU,RAM,ROM,I/O接口和中断系统于同一硅片上的器件。单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。目前单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机已在广阔的计算机应用领域中表现得淋漓尽致电器因此,单片机已成为电子类工作者必须掌握的专业技术之一。单片机就是一个微型中央处理器,通过编程即能完成很多智能化的工作 ,因此它的出现给电子技术智能化和微型化起到了很大的推动作用。

本设计将采用89C51单片机,89C51单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机自带5个中断,两个16位定时器32个I/O口,可擦除只读存储器可以反复擦除多次,功能相当强大。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

面对如此功能强大的单片机,结合本次设计要求,应该要用到单片机的内部时钟电路以及外围的显示接口电路和报警电路。

对与时钟,它有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法。

在显示方面,有着多种选择,但是8段LED数码管足以满足此次设计的要求了。LED数码显示器是一种有LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,一个用于显示小数点,故通常称之为8段发光二极管数码器。

其内部结构如下图(a)所示:

LED数码显示器有如下两种连接方法:

共阳极接法:把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。

共阴极接法:把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口无法直接驱动,所以要利用放大电路来驱动,一般使用三极管来放大电流。本设计采用p3.0口和三极管组成的电路来驱动蜂鸣器。

2. 总体设计思想:

本设计是基于AT89C51单片机的键盘控制及显示电路设计,从系统的设计功能上看,系统可分为两大部分,即键盘输入控制部分和显示部分,对于每一个部分都有不同的设计方案,起初我对键盘和显示每个都拟订了下面两种方案:

键盘部分:

第一种方案:采用扫描键盘,可以用普通按键构成4×4矩阵键盘,直接接到AT89C51单片机的P1口,高四位作为行,低四位作为列,通过软件完成键盘的扫描和定位。这种方式相对下面的独立式键盘节省了很多的I/O口。

第二种方案:键盘控制采用独立式按键,每个按键的一端均接地,另一端直接和P1口相连,在按键和P1口之间通过10K电阻与+5V电源相连。键盘通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,这种方法操作速度高而且软件结构很简单,比较适合按键较少或操作速度较高的场合,这种独立式接口的应用很普遍。

显示部分:

第一种方案:显示部分采用静态显示方法,所谓静态显示,就是每一个显示器都要占用一个独立的具有锁存功能的接口用于存储字形码。这样单片机只要把要显示的字形代码发送到接口电路,从而输送至各数码管显示。被显示的数据只要输出一次,直到要显示新的数据时,再发送新的字形码。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

第二种方案:显示部分采用动态显示。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示是利用人眼视觉暂留特性来实现显示的。事实上,显示器上任何时刻只有一个数码管有显示。由于各数码管轮流显示的时间间隔短、节奏快,人的眼睛反应不过来,因此看到的是连续显示的现象。为防止闪烁延时的时间在1ms左右,不能太长,也不能太短。本设计可采用P0口直接驱动七段数码管显示。此方案成本低,而且单片机的I/O口占用较少,可以节约单片机接口资源,而且功耗更低。

由于本设计要求按键较少,且本次设计只是对所学知识的一次实践,设计要求简单,容易实现,成本低廉。比较以上各种设计方案,采用独立式键盘和动态显示两种方案配合,成本低,占用单片机资源少,且容易实现,这样的设计比较适合本次设计,故最终决定选用这样的一种搭配设计方案。对于蜂鸣器,将采用p3.0口和三极管组成的外围电路驱动,根据定时时间报警。

3.具体实现方法:

根据设计任务与要求,可初步将系统分为五大功能模块:主电路、按键电路、显示电路、报警电路。进一步细说,主电路选用AT89C51作为中央处理器,系统采用12MHZ的晶振;按键停控制电路由四个按键(复位键、启动/暂停键、设置键、+1调时键)组成,键盘采用软件扫描的方式设计,低电平有效;显示电路由六位七段共阴极数码管和一个9位200欧姆上拉电阻组成,显示内容有倒计时器的0.1秒位以及分秒的个、十位,数码管通过P0口直接输出数据;报警电路主要由蜂鸣器组成,通过电路与P3.0口相连。当P3.0口输出高电平时,蜂鸣器响。

对于本次单片机课程设计,根据设计要求可以将功能分成如下4部分:

(1)  由于单片机内部振荡方式电路简单,时钟信号比较稳定,是独立的单片机应用系统的首选,故本设计采用内部振荡方式,采用12MHZ的晶振。

图(1)晶振电路图

(2)  本设计电路采用定时器T0产生定时中断,由于本设计需要0.1s的基本时间,故选择其工作在定时方式1下。这时定时器T0是一个16位的计时器,由它产生50ms的基本定时中断,两次中断后将得到0.1s的时间。

(3)  键盘电路有独立式键盘和矩阵式两种。独立式键盘占用I/O口线较多,适用于按键较少的情况。矩阵式键盘占用的I/O口相对较少,适用于按键很多的情况。

图(2)键盘电路图

(4)  报警电路将采用p3.0口驱动,当数码管显示00.00.0时p3.0口输出高电平,驱动蜂鸣器达到报警的目的,只有当复位键按下后,蜂鸣器才会停止报警。

图(3)蜂鸣器报警电路图

(5)  对于显示电路,本设计采用6位8段共阴极LED数码管显示。上电显示最大倒计时时间60.00.00-。其中“-”位为系统状态标志位,当显示“-”时,表示系统处于等待状态,按下开始键后将开始计数,开始计数后此数码管将关闭显示,以达到省电的目的 ,当显示“E”时,表示系统正处于调时状态,此时只用两个调时键有用,按下开始键或复位键将没有用。

图(4)显示电路图

系统的原理框图如下图:

图(5)系统原理框图

菱形: 调时设置键按下?图(6)硬件连线图

硬件连接说明:本系统以AT89C51单片机为核心。单片机采用内部振荡的方式。通过200欧姆电阻与一个6位8段LED数码显示管相连。从P0口输出LED数码管的字形码,从P2口输出LED数码管的位选码,高电平有效。4个功能按键和P1口相连,中间通过10K的电阻与+5V电源相连,按键另一端接地,P1口低电平时表示按键被按下。报警电路则与P3.0口相连,当P3.0口输出高电平时,蜂鸣器响。

在程序设计方面:将键盘扫描程序置于主程序中,采用扫描方式检测键盘的按键情况,主程序流程图见图(7)。显示部分做成一个子程序,方便调用。各个调时子程序由设置键引倒进入,调时子程序流程图见图(8)。计时方面,利用定时器T0产生的0.5ms基准时间形成0.1s的最小倒计时时间单位并产生“-1”动作,T0中断子程序流程图见图(9)。





四、Proteus调试过程及现象:

上电后LED数码管显示最大倒计时值60.00.0-,程序处于等待状态。

图(10)上电或者复位键被按下时

此时,主程序不断调用显示子程序以及扫描键盘按键情况,当检测到有键按下后,转到相应的程序执行。

1.  开始/暂停键按下后程序开始减1计数直到0,同时状态显示管熄灭,计数值到0后报警器响。若中途遇到开始/暂停键按下则,暂停倒计时。若中途遇到复位键按下则将倒计时器的倒计时值设置为最大值,并处于等待状态。

图(11)计数值到0时

图(12)开始/暂停键按下后

3.  复位键按下后,程序复位,系统处于等待状态,状态显示管显示“-”。

4.  当设置键被按下后,程序进入调时设置状态,同时状态显示管显示“E”。设置状态的初始值位00.00.0E,按下+1调整键,可以将当前的计数单位值加1,再次按下设置键后,即进入了下个计数单位的调时状态,当按下5次设置键后将退出调时状态,若分钟十位被设置为6并再次按下设置键后程序直接退出调时状态。设置状态时开始/暂停键和复位键无效,等退出调时状态后,设置状态时开始/暂停键和复位键恢复功能。

图(13)调时状态时

调试问题及解决方法:

开始在主程序的循环中没有添加调用显示子程序的语句,导致在没有按键按下的情况下LED数码管没有显示。当在主程序循环检测按键的过程中添加了调用显示子程序的语句后就解决了这一问题。由于键盘需要消抖延时和等待按键释放,所以相似的情况又出现了——按下按键后有一段时间LED数码管断续显示或者按下按键后不释放按键时LED数码管没有显示。仔细分析后发现,问题出现的原因还是一样的,由于本设计的LED数码管采用了动态显示,故需要不断调用显示子程序,否则会导致LED数码管没有显示。所以最终做了以下改进:1.按键的消抖延时选择调用两次显示子程序(每次显示子程序大约用时5ms,两次即为10ms左右)来取代原来的10ms软件延时。2.在等待按键释放时,使用循环调用显示子程序来替代原来的循环等待。经过上述两点的改进后,LED数码管无显示或者断续显示的问题就得到了彻底的解决。

六、设计的优缺点分析:

本设计是一个采用了由内部振荡的时钟方式、程控扫描方式的独立式键盘、动态显示LED数码管和蜂鸣器式报警器组成的系统。因此该系统使用的电子器件少、外围电路简单,定时精准,使用的I/O少,系统消耗的功耗小,剩余的I/O口多便于扩展其他功能。但是另一方面,本系统由于使用了程控式的键盘和动态显示的LED数码管,所以对CPU的使用率相对较高。


七、心得体会:

初次看到本次的课程设计的题目时,感觉设计的难度不大,但是由于是第一次运用单片机设计,在设计过程中又遇到了种种困难,又感觉到要完成此次设计还需要花费很大的时间和精力。但是经过本组同学的共同努力,运用科学的分析方法,最终顺利完成了本次单片机课程设计。

经过两个星期的实习,过程曲折可谓一语难尽。在此期间我也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。

生活也是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实习,我才真正领略到“艰苦奋斗”这一词的真正含义,我才意识到老一辈设计员为我们的社会付出。我想说,设计确实有些辛苦,但苦中也有乐,在如今物欲很流的世界,很少有机会能与大自然亲密接触,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的实习,我感觉我和同学们之间的距离更加近了;我想说,设计确实很累,但当我们的设计出现成果时,心中也不免产生兴奋,正所谓“三百六十行,行行出状元”我认为无论干什么,只要人生活的有意义就可以。

同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。某个人的离群都可能导致导致整项工作的失败。实习中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们实习成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

另外,课堂上也有部分知识不太清楚,于是我又不得不边学边用,时刻巩固所学知识,这也是我作本次课程设计的第二大收获。整个设计我基本上还满意,由于水平有限,难免会有错误,还望老师批评指正。

八、参考文献:

[1] 曾屹.单片机原理与应用.湖南:中南大学出版社,2009

[2] 丁元杰.单片微机原理及应用.3版.北京:机械工业出版社,2006

[3] 严天峰.单片机应用系统设计与仿真调试.北京:北京航空航天大学出版社,2005

[4] 杨振江.流行单片实用子程序及应用实例.西安:电子科技大学出版社,2002


第二篇:60秒倒计时器-单片机课程设计报告


倒  计  时  器

一、  设计要求:

由单片机接收小键盘阵列设定倒计时时间,倒计时的范围最大为60分钟,由LED 显示模块显示剩余时间,显示格式为  XX(分):XX(秒).X,精确到0.1s的整数倍。倒计时到,由蜂鸣器发出报警。绘制系统硬件接线图,并进行系统仿真和实验。画出程序流程图并编写程序实现系统功能。

二、  设计的作用目的:

此次设计是我们更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。通过解决实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,以便今后自己在单片机领域的学习和开发打下基础,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。

三、  具体设计:

1. 问题分析:

在电子技术飞速发展的今天,电子产品的人性化和智能化已经非常成熟,其发展前景仍然不可估量。如今的人们需求的是一种能给自己带来方便的电子产品,当然最好是人性化和智能化的,如何能做到智能化呢?单片机的引入就是一个很好的例子。单片机又称单片微型计算机,也称为微控制器,是微型计算机的一个重要分支,单片机是20世纪70年代中期发展起来的一种大规模集成电路芯片,是集CPU,RAM,ROM,I/O接口和中断系统于同一硅片上的器件。单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。目前单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机已在广阔的计算机应用领域中表现得淋漓尽致电器因此,单片机已成为电子类工作者必须掌握的专业技术之一。单片机就是一个微型中央处理器,通过编程即能完成很多智能化的工作 ,因此它的出现给电子技术智能化和微型化起到了很大的推动作用。

本设计将采用89C51单片机,89C51单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机自带5个中断,两个16位定时器32个I/O口,可擦除只读存储器可以反复擦除多次,功能相当强大。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

面对如此功能强大的单片机,结合本次设计要求,应该要用到单片机的内部时钟电路以及外围的显示接口电路和报警电路。

对与时钟,它有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法。

在显示方面,有着多种选择,但是8段LED数码管足以满足此次设计的要求了。LED数码显示器是一种有LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,一个用于显示小数点,故通常称之为8段发光二极管数码器。

其内部结构如下图(a)所示:

LED数码显示器有如下两种连接方法:

共阳极接法:把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。

共阴极接法:把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口无法直接驱动,所以要利用放大电路来驱动,一般使用三极管来放大电流。本设计采用p3.0口和三极管组成的电路来驱动蜂鸣器。

2. 总体设计思想:

本设计是基于AT89C51单片机的键盘控制及显示电路设计,从系统的设计功能上看,系统可分为两大部分,即键盘输入控制部分和显示部分,对于每一个部分都有不同的设计方案,起初我对键盘和显示每个都拟订了下面两种方案:

键盘部分:

第一种方案:采用扫描键盘,可以用普通按键构成4×4矩阵键盘,直接接到AT89C51单片机的P1口,高四位作为行,低四位作为列,通过软件完成键盘的扫描和定位。这种方式相对下面的独立式键盘节省了很多的I/O口。

第二种方案:键盘控制采用独立式按键,每个按键的一端均接地,另一端直接和P1口相连,在按键和P1口之间通过10K电阻与+5V电源相连。键盘通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,这种方法操作速度高而且软件结构很简单,比较适合按键较少或操作速度较高的场合,这种独立式接口的应用很普遍。

显示部分:

第一种方案:显示部分采用静态显示方法,所谓静态显示,就是每一个显示器都要占用一个独立的具有锁存功能的接口用于存储字形码。这样单片机只要把要显示的字形代码发送到接口电路,从而输送至各数码管显示。被显示的数据只要输出一次,直到要显示新的数据时,再发送新的字形码。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

第二种方案:显示部分采用动态显示。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示是利用人眼视觉暂留特性来实现显示的。事实上,显示器上任何时刻只有一个数码管有显示。由于各数码管轮流显示的时间间隔短、节奏快,人的眼睛反应不过来,因此看到的是连续显示的现象。为防止闪烁延时的时间在1ms左右,不能太长,也不能太短。本设计可采用P0口直接驱动七段数码管显示。此方案成本低,而且单片机的I/O口占用较少,可以节约单片机接口资源,而且功耗更低。

由于本设计要求按键较少,且本次设计只是对所学知识的一次实践,设计要求简单,容易实现,成本低廉。比较以上各种设计方案,采用独立式键盘和动态显示两种方案配合,成本低,占用单片机资源少,且容易实现,这样的设计比较适合本次设计,故最终决定选用这样的一种搭配设计方案。对于蜂鸣器,将采用p3.0口和三极管组成的外围电路驱动,根据定时时间报警。

3.具体实现方法:

根据设计任务与要求,可初步将系统分为五大功能模块:主电路、按键电路、显示电路、报警电路。进一步细说,主电路选用AT89C51作为中央处理器,系统采用12MHZ的晶振;按键停控制电路由四个按键(复位键、启动/暂停键、设置键、+1调时键)组成,键盘采用软件扫描的方式设计,低电平有效;显示电路由六位七段共阴极数码管和一个9位200欧姆上拉电阻组成,显示内容有倒计时器的0.1秒位以及分秒的个、十位,数码管通过P0口直接输出数据;报警电路主要由蜂鸣器组成,通过电路与P3.0口相连。当P3.0口输出高电平时,蜂鸣器响。

对于本次单片机课程设计,根据设计要求可以将功能分成如下4部分:

(1)  由于单片机内部振荡方式电路简单,时钟信号比较稳定,是独立的单片机应用系统的首选,故本设计采用内部振荡方式,采用12MHZ的晶振。

图(1)晶振电路图

(2)  本设计电路采用定时器T0产生定时中断,由于本设计需要0.1s的基本时间,故选择其工作在定时方式1下。这时定时器T0是一个16位的计时器,由它产生50ms的基本定时中断,两次中断后将得到0.1s的时间。

(3)  键盘电路有独立式键盘和矩阵式两种。独立式键盘占用I/O口线较多,适用于按键较少的情况。矩阵式键盘占用的I/O口相对较少,适用于按键很多的情况。

图(2)键盘电路图

(4)  报警电路将采用p3.0口驱动,当数码管显示00.00.0时p3.0口输出高电平,驱动蜂鸣器达到报警的目的,只有当复位键按下后,蜂鸣器才会停止报警。

图(3)蜂鸣器报警电路图

(5)  对于显示电路,本设计采用6位8段共阴极LED数码管显示。上电显示最大倒计时时间60.00.00-。其中“-”位为系统状态标志位,当显示“-”时,表示系统处于等待状态,按下开始键后将开始计数,开始计数后此数码管将关闭显示,以达到省电的目的 ,当显示“E”时,表示系统正处于调时状态,此时只用两个调时键有用,按下开始键或复位键将没有用。

图(4)显示电路图

系统的原理框图如下图:

图(5)系统原理框图

菱形: 调时设置键按下?图(6)硬件连线图

硬件连接说明:本系统以AT89C51单片机为核心。单片机采用内部振荡的方式。通过200欧姆电阻与一个6位8段LED数码显示管相连。从P0口输出LED数码管的字形码,从P2口输出LED数码管的位选码,高电平有效。4个功能按键和P1口相连,中间通过10K的电阻与+5V电源相连,按键另一端接地,P1口低电平时表示按键被按下。报警电路则与P3.0口相连,当P3.0口输出高电平时,蜂鸣器响。

在程序设计方面:将键盘扫描程序置于主程序中,采用扫描方式检测键盘的按键情况,主程序流程图见图(7)。显示部分做成一个子程序,方便调用。各个调时子程序由设置键引倒进入,调时子程序流程图见图(8)。计时方面,利用定时器T0产生的0.5ms基准时间形成0.1s的最小倒计时时间单位并产生“-1”动作,T0中断子程序流程图见图(9)。





四、Proteus调试过程及现象:

上电后LED数码管显示最大倒计时值60.00.0-,程序处于等待状态。

图(10)上电或者复位键被按下时

此时,主程序不断调用显示子程序以及扫描键盘按键情况,当检测到有键按下后,转到相应的程序执行。

1.  开始/暂停键按下后程序开始减1计数直到0,同时状态显示管熄灭,计数值到0后报警器响。若中途遇到开始/暂停键按下则,暂停倒计时。若中途遇到复位键按下则将倒计时器的倒计时值设置为最大值,并处于等待状态。

图(11)计数值到0时

图(12)开始/暂停键按下后

3.  复位键按下后,程序复位,系统处于等待状态,状态显示管显示“-”。

4.  当设置键被按下后,程序进入调时设置状态,同时状态显示管显示“E”。设置状态的初始值位00.00.0E,按下+1调整键,可以将当前的计数单位值加1,再次按下设置键后,即进入了下个计数单位的调时状态,当按下5次设置键后将退出调时状态,若分钟十位被设置为6并再次按下设置键后程序直接退出调时状态。设置状态时开始/暂停键和复位键无效,等退出调时状态后,设置状态时开始/暂停键和复位键恢复功能。

图(13)调时状态时

调试问题及解决方法:

开始在主程序的循环中没有添加调用显示子程序的语句,导致在没有按键按下的情况下LED数码管没有显示。当在主程序循环检测按键的过程中添加了调用显示子程序的语句后就解决了这一问题。由于键盘需要消抖延时和等待按键释放,所以相似的情况又出现了——按下按键后有一段时间LED数码管断续显示或者按下按键后不释放按键时LED数码管没有显示。仔细分析后发现,问题出现的原因还是一样的,由于本设计的LED数码管采用了动态显示,故需要不断调用显示子程序,否则会导致LED数码管没有显示。所以最终做了以下改进:1.按键的消抖延时选择调用两次显示子程序(每次显示子程序大约用时5ms,两次即为10ms左右)来取代原来的10ms软件延时。2.在等待按键释放时,使用循环调用显示子程序来替代原来的循环等待。经过上述两点的改进后,LED数码管无显示或者断续显示的问题就得到了彻底的解决。

六、设计的优缺点分析:

本设计是一个采用了由内部振荡的时钟方式、程控扫描方式的独立式键盘、动态显示LED数码管和蜂鸣器式报警器组成的系统。因此该系统使用的电子器件少、外围电路简单,定时精准,使用的I/O少,系统消耗的功耗小,剩余的I/O口多便于扩展其他功能。但是另一方面,本系统由于使用了程控式的键盘和动态显示的LED数码管,所以对CPU的使用率相对较高。


七、心得体会:

初次看到本次的课程设计的题目时,感觉设计的难度不大,但是由于是第一次运用单片机设计,在设计过程中又遇到了种种困难,又感觉到要完成此次设计还需要花费很大的时间和精力。但是经过本组同学的共同努力,运用科学的分析方法,最终顺利完成了本次单片机课程设计。

经过两个星期的实习,过程曲折可谓一语难尽。在此期间我也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。

生活也是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实习,我才真正领略到“艰苦奋斗”这一词的真正含义,我才意识到老一辈设计员为我们的社会付出。我想说,设计确实有些辛苦,但苦中也有乐,在如今物欲很流的世界,很少有机会能与大自然亲密接触,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的实习,我感觉我和同学们之间的距离更加近了;我想说,设计确实很累,但当我们的设计出现成果时,心中也不免产生兴奋,正所谓“三百六十行,行行出状元”我认为无论干什么,只要人生活的有意义就可以。

同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。某个人的离群都可能导致导致整项工作的失败。实习中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们实习成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

另外,课堂上也有部分知识不太清楚,于是我又不得不边学边用,时刻巩固所学知识,这也是我作本次课程设计的第二大收获。整个设计我基本上还满意,由于水平有限,难免会有错误,还望老师批评指正。

八、参考文献:

[1] 曾屹.单片机原理与应用.湖南:中南大学出版社,2009

[2] 丁元杰.单片微机原理及应用.3版.北京:机械工业出版社,2006

[3] 严天峰.单片机应用系统设计与仿真调试.北京:北京航空航天大学出版社,2005

[4] 杨振江.流行单片实用子程序及应用实例.西安:电子科技大学出版社,2002


附:实验源程序

                        ;倒计时器设计源程序

ORG 0000H

     AJMP MAIN

     ORG 000BH          ;T0中断程序入口地址

     AJMP T0ZD

     ORG 00100H

MAIN:CLR TR0            ;主程序开始

     CLR P3.0           ;关闭蜂鸣器

     SETB 20H.1         ;使显示管状态标志位有效

     CLR 20H.0          ;开始/暂停标志位,使程序处于等待开始|暂停键按下

     MOV 40H,#00H       ;0.1S位查表码

     MOV 41H,#00H       ;秒钟个位位查表码

     MOV 42H,#00H       ;秒钟十位位查表码

     MOV 43H,#00H       ;分钟个位位查表码

     MOV 44H,#06H       ;分钟十位位查表码

     MOV 45H,#00H       ;状态显示管查表码

     MOV 46H,#02H       ;定时器定时次数

     SETB EA            ;开总中断

     SETB ET0           ;开定时器T0中断

     MOV TMOD,#01H      ;定时器工作方式0

     MOV TL0,#0B0H      ;定时初值,采用50MS定时

     MOV TH0,#3CH

JPJC:LCALL XSCX         ;显示倒计时初值60.00.0(XSCX),进入键盘检测程序

     MOV P1,#0FFH       ;判断复位键是否按下

     JB P1.0,JC12

     LCALL XDYS         ;调用消抖延时程序(XDYS)

     JB P1.0,JC12

PP10:JNB P1.0,DP10      ;等待按键按下

     AJMP MAIN          ;复位键按下后转到主程序(MAIN)重新开始

JC12:MOV P1,#0FFH       ;判断设置键是否按下

     JB P1.2,JC11

     LCALL XDYS

     JB P1.2,JC11

PP12:JNB P1.2,DP12      ;调整设置键按下后转到调时子程序(TSCX)

     ACALL TSCX

JC11:MOV P1,#0FFH       ;判断开始/暂停键是否按下

     JB P1.1,JPJC

     LCALL XDYS

     JB P1.1,JPJC

PP11:JNB P1.1,DP11

     CPL 20H.0          ;将标志位取反

     JB 20H.0,KSJS      ;开始/暂停标志为1则开始计数(KSJS)

     CLR TR0

     SETB 20H.1

     AJMP JPJC          ;继续检测键盘按键情况(JPJC)

DP10:LCALL XSCX         ;等待按键按下时,调用显示程序,防止显示管没显示

     AJMP PP10

DP11:LCALL XSCX

     AJMP PP11

DP12:LCALL XSCX

     AJMP PP12

KSJS:CLR 20H.1         ;清除状态显示管

     SETB P2.5

     JB P3.0,JPJC      ;若蜂鸣器响,则不启动计时器

     SETB TR0          ;启动计时器TO (KSJS)

     AJMP JPJC

;    显示子程序

XSCX:MOV DPTR,#TAB      ;显示子程序(XSCX)

     MOV A,40H

     MOVC A,@A+DPTR

     MOV  P2, #0FFH     ;关闭显示.

     MOV  P0, A         ;输出0.1S位的显示段码.

     CLR  P2.0          ;P2.0=0

     ACALL XSYS

     MOV DPTR,#TAB1     ;

     MOV A,41H

     MOVC A,@A+DPTR

     MOV  P2, #0FFH      ;关闭显示.

     MOV  P0, A          ;输出秒钟个位的显示码.

     CLR  P2.1           ;P2.1=0

     ACALL XSYS

     MOV DPTR,#TAB

     MOV A,42H

     MOVC A,@A+DPTR

     MOV  P2, #0FFH      ;关闭显示.

     MOV  P0, A          ;输出秒钟十位位的显示段码.

     CLR  P2.2           ;P2.2=0

     ACALL XSYS

     MOV DPTR,#TAB1

     MOV A,43H

     MOVC A,@A+DPTR

     MOV  P2, #0FFH      ;关闭显示.

     MOV  P0, A          ;输出分钟个位的显示段码.

     CLR  P2.3           ;P2.3=0

     ACALL XSYS

     MOV DPTR,#TAB

     MOV A,44H

     MOVC A,@A+DPTR

     MOV  P2, #0FFH      ;关闭显示.

     MOV  P0, A          ;输出分钟十位的显示段码.

     CLR  P2.4           ;P2.4=0

     ACALL XSYS

     JNB 20H.1,ZBTC      ;20H.1为1则显示计时器状态

     MOV DPTR,#TAB2

     MOV A,45H

     MOVC A,@A+DPTR

     MOV  P2, #0FFH      ;关闭显示.

     MOV  P0, A          ;输出段码.

     CLR  P2.5           ;P2.5=0

     ACALL XSYS

ZBTC:RET

;    调时子程序

TSCX:CLR TR0             ;调时子程序(TSCX)

     CLR 20H.0           ;使时间调整时处于暂停状态

     MOV 40H,#00H

     MOV 41H,#00H

     MOV 42H,#00H

     MOV 43H,#00H

     MOV 44H,#00H

     SETB 20H.1           ;使状态显示管的位选码有效

     MOV 45H,#01H        ;将状态显示码更改为E(调时状态)

     MOV R0,#44H

JCTZ:ACALL XSCX          ;先调用显示程序,扫描时间调整键

     MOV P1,#0FFH

     JB P1.3,NEXT        ;+1键盘没有按下

     ACALL XDYS          ;键盘按下,消抖延时

     JB P1.3,NEXT

DEN0:JNB P1.3,DEN1       ;等待按键释放

     AJMP JYCX           ;+1键按下后,跳转到+1程序

NEXT:MOV P1,#0FFH

     JB P1.2,JCTZ

     ACALL XDYS          ;键盘按下,消抖延时

     JB P1.2,JCTZ

DEN2:JNB P1.2,DEN3       ;等待按键释放

     MOV A,44H

     CJNE A,#06H,DEC4     ;设置键再次按下,将调整指针指向下一位

     AJMP TCTS

DEC4:DEC R0

     CJNE R0,#3FH,JCTZ     ;若R0为3FH则退出调时程序

     AJMP TCTS             ;若@R0不为#06H,但R0为#3FH,则跳出调时程序

JYCX:CJNE R0,#44H,XIA1     ;加1调时部分

     CJNE @R0,#06H,INCR    ;调整分钟十位

     AJMP SET0

XIA1:CJNE R0,#43H,XIA2

     AJMP TZ09             ;调整分钟个位

XIA2:CJNE R0,#42H,XIA3

     CJNE @R0,#05H,INCR    ;调整秒钟十位

     AJMP SET0

XIA3:CJNE R0,#41H,XIA4

     AJMP TZ09             ;调整秒钟个位

XIA4:CJNE R0,#40H,TCTS

TZ09:CJNE @R0,#09H,INCR      ;调整0.1秒位

SET0:MOV @R0,#00H

     AJMP JCTZ

INCR:INC @R0

     AJMP JCTZ

DEN1:ACALL XSCX

     AJMP DEN0

DEN3:ACALL XSCX

     AJMP DEN2

TCTS:MOV TH0,#3CH            ;退出调时程序

     MOV TL0,#0B0H

     MOV 45H,#00H            ;将状态显示码更改为D(等待状态)

     RET

;    T0中断子程序

T0ZD:CLR EA                 ;T0中断子程序,关中断 (T0ZD)

     CLR ET0

     CLR TR0

     DJNZ 46H,TCZD

     MOV 46H,#02H           ;当定时两次后重新给计时次数赋值为2

     MOV R0,#40H            ;减1计数,R0为40H

     CJNE @R0,#01H,R040

     INC R0                 ;R0为41H

     CJNE @R0,#00H,DEC1

     INC R0                 ;R0为42H

     CJNE @R0,#00H,DEC1

     INC R0                 ;R0为43H

     CJNE @R0,#00H,DEC1

     INC R0                 ;R0为44H

     CJNE @R0,#00H,DEC1

     AJMP JYFH

R040:CJNE @R0,#00H,DEC1     ;R0为40H

     INC R0                 ;R0为41H

     CJNE @R0,#00H,R041

     INC R0                 ;R0为42H

     CJNE @R0,#00H,R042

     INC R0                 ;R0为43H

     CJNE @R0,#00H,R043

     INC R0                 ;R0为44H

     CJNE @R0,#00H,R044

     AJMP ZJFH

R041:MOV 40H,#09H

     DEC 41H

     AJMP TCZD

R042:MOV 40H,#09H

     MOV 41H,#09H

     DEC 42H

     AJMP TCZD

R043:MOV 40H,#09H

     MOV 41H,#09H

     MOV 42H,#05H

     DEC 43H

     AJMP TCZD

R044:MOV 40H,#09H

     MOV 41H,#09H

     MOV 42H,#05H

     MOV 43H,#09H

     DEC 44H

     AJMP TCZD

DEC1:DEC 40H

TCZD:MOV TH0,#3CH            ;退出中断子程序

     MOV TL0,#0B0H

     SETB EA

     SETB ET0

     SETB TR0

     AJMP ZZFH

JYFH:DEC 40H

ZJFH:SETB P3.0             ;启动蜂鸣器

ZZFH:RETI

XDYS:ACALL XSCX   ;消抖延时程序,延时10ms(2*5ms)

     ACALL XSCX   ;采用调用显示子程序延时以改善LED显示效果

     RET

XSYS:MOV 55H,#20    ;显示延时程序,延时1ms

DEL2:MOV 56H,#25

DEL1:DJNZ 56H,DEL1

     DJNZ 55H,DEL2

     RET

 TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

TAB1:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH

TAB2:DB 040H,79H     ;D等待状态,E调时状态

     END

更多相关推荐:
《单片机课程设计》报告

机械与车辆学院单片机课程设计报告20xx20xx学年第一学期课程设计题目水塔水位控制系统姓名学号班级指导老师职称时间成绩单片机课程设计考查评分表2目录一课程设计性质和目的4二课程设计的内容及要求41硬件设计42...

单片机课程设计报告

物理与机电学院课程设计报告课程名称:单片机课程设计系部:物理与机电工程学院专业班级:07级电子信息工程(1)班完成时间:20XX年5月24日~28日报告成绩:【摘要】单片机自1976年由Intel公司推出MCS…

51单片机课程设计报告。

成绩单片机原理及应用课程设计课程名ltlt单片机原理及应用gtgt学部专业学号姓名指导教师日期20xx年06月一设计任务与要求1任务制作并调试51单片机学习板2要求1了解并能识别学习板上的各种元器件会读元器件标...

流水灯单片机课程设计报告

井冈山大学机电工程学院单片机课程设计报告课程名称单片机设计题目流水灯姓名覃家应陈东阳专业生物医学工程班级10级医工本一班学号100615062指导教师王佑湖20xx年11月10日目录1引言211设计任务212设...

单片机课程设计报告范例

单片机课程设计示例交通灯控制系统设计一总体设计1设计要求交通灯的任务要求为模拟十字路口的交通灯的亮灭及闪烁基本工作原理根据交通灯的亮灭情况可以分为四种状态利用定时计数器每20秒产生一次中断每产生一次中断后由是否...

51单片机电子时钟课程设计报告

JINGCHUUNIVERSITYOFTECHNOLOGY单片机原理及应用课程设计报告题目电子时钟专业电气工程及其自动化班级20xx级电工2班学号20xx401020xx2姓名王贞指导教师邹云峰提交日期20xx...

基于51单片机课程设计报告

课题:基于51单片机的数字温度计设计专业:电气工程及其自动化班级:4学号:***设计日期:20XX/6/3成绩:重庆大学城市科技学院电气学院基于51单片机数字温度计设计报告一、设计目的作用本设计是一款简单实用的…

基于单片机的电子密码锁设计_单片机课程设计报告

单片机密码锁课程设计报告湖南师大本科生课程设计目录1引言12设计要求23硬件电路设计331设计方案的选择332主要元器件简介433硬件系统结构84程序设计135总结15参考文献16附件一电路原理图及作品实物图1...

单片机课程设计数字钟实验报告

单片机课程设计电子钟一实现功能1能够实现准确计时以数字形式显示时分秒的时间2小时以24小时计时形式分秒计时为60进位能够调节时钟时间3闹钟功能一旦走时到该时间能以声或光的形式告警提示4能够实现按键启动与停止功能...

单片机课程设计数字钟报告

单片机课程设计报告基于单片机的数字钟班级姓名学号设计时间单片机课程设计正文一引言现代社会科技飞速发展人们生活节奏加快时间就是金钱时间就是生命时间对人们来说总是那么宝贵工作的忙碌性和繁杂性容易使人忘记当前的时间忘...

单片机课程设计报告

文华学院单片机原理及应用课程设计报告设计题目姓名学号班级指导教师20xx年月日目录一标题二设计内容设计要求三设计思路四工作原理五硬件设计六软件设计含流程图七调试遇到的问题和解决方法八改进意见九收获及体会十源程序...

单片机电子时钟课程设计报告

基于单片机电子时钟的设计绪论单片机自20世纪70年代问世以来以其极高的性能价格比受到人们的重视和关注应用很广发展很快单片机体积小重量轻抗干扰能力强环境要求不高价格低廉可靠性高灵活性好开发较为容易由于具有上述优点...

单片机课程设计报告(45篇)