基于51单片机能实现任意时间倒计时。剖析

基于51单片机能实现任意时间倒计时。剖析
基于51单片机能实现任意时间倒计时。剖析

倒计时器

只要修改此文档15页源程序的(如下图)的到计时初值即可实现想要的倒计时。比如30分钟倒计时修改分钟十位和各位即可。

一、设计要求:

由单片机接收小键盘阵列设定倒计时时间,倒计时的范围最大为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

单片机60秒倒计时

目录 1前言 (1) 2工程概况 (2) 3正文 (2) 3.1 设计目的与要求 (2) 3.2 设计方法的目标 (2) 3.3 设计方法和内容 (2) 3.3.1硬件设计方法 (3) 3.3.2软件设计方法 (7) 3.4 软件调试过程 (9) 3.4.1 系统调试工具keil C51 (9) 3.4.2 系统调试工具PROTEUS (9) 3.4.3焊接电路,对各节点测试导通性 (10) 4有关说明 (11) 5设计总结 (11) 6致谢 (11) 7参考文献 (11)

前言 在生活和生产的各领域中,凡是有自动控制要求的地方都会有单片机的身影出现;从简单到复杂,从空中、地面到地下,凡是能想像到的地方几乎都有使用单片的需求。现在尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目,因此,单片机的应用大有想像和拓展空间。 单片机就是微控制器,它是嵌入式系统中的重要且发展迅速的组成部分。单片机接上震荡元件(或震荡源)、复位电路和接口电路,载入软件后,可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,它就成为众多产品、设备的智能化核心。所以,生产企业称单片机为“微电脑”。 单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证安全等。但是,单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。从前必须有模拟电路或数字电路实现的大部分功能,现在已能使用单片机通过软件(编程序)方法实现了。这种以软件取代硬件并提高系统性能的控制系统“软化”技术,称之为微控制技术。微控制技术是一种全新的概念,是对传统控制技术的一次革命。随着单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。 近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。模拟多通道压力系统是利用压力传感器采集当前压力并反映在显示器上,它可以分析压力过量程,并发出报警。并采用电子秤原理可根据输入单价准确的计算出物体的金额。 本篇论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。

51单片机用C语言实现交通灯(红绿灯)源程序

51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。 源程序如下: /* 1、程序目的:使用定时器学习倒计时红绿灯原理主要程序和倒计时一样 2、硬件要求:数码管、晶振12M */ #include bit red,green,yellow,turnred; //定义红、黄、绿及转红标志 code unsigned char tab[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管 0-9 unsigned char Dis_Shiwei;//定义十位 unsigned char Dis_Gewei; //定义个位 void delay(unsigned int cnt) //用于动态扫描数码管的延时程序{ while(--cnt); } main() { TMOD |=0x01;//定时器设置 10ms in 12M crystal定时器0,工作方式1,16位定时器 TH0=0xd8; //65535-10000=55535=D8F0(十六进制) TL0=0xf0; IE= 0x82; //中断控制,EA=1开总中断,ET0=1:定时器0中断允许 TR0=1; //开定时器0中断 P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。 red =1; while(1) { P0=Dis_Shiwei;//显示十位,这里实现用8位数码管,即左1位 P2=0; delay(300);//短暂延时 P0=Dis_Gewei; //显示个位,左数,2位 P2=1;

单片机系统设计-基于proteus的百天倒计时

单片机系统 课程设计 课程设计名称:基于89C51的倒计时牌设计专业班级: 学生姓名: 学号: 指导教师: 课程设计地点: 课程设计时间:2013-12-16~2013-12-27 单片机系统课程设计任务书

目录 1 概述 (1) 1.1 研究背景 (1) 1.2 设计思想及基本功能 (1) 2 总体方案设计 (2) 2.1 方案选取 (2) 2.2 系统框图 (3) 2.3 总体方案设计 (3) 3 硬件电路设计 (4) 3.1 电源电路设计 (4) 3.2 晶振电路 (5) 3.3 复位电路 (6) 3.4 键盘电路 (7) 3.5 显示电路 (7) 3.6 蜂鸣器及LED电路 (12) 4 系统软件设计 (12) 4.1 主程序软件设计 (12) 4.2 键盘程序设计 (13) 4.3 定时程序设计 (13) 4.4 报警程序设计 (15) 5 Proteus仿真 (15) 6 总结 (18) 参考文献 (19) 附录A系统原理图 (19) 附录B程序清单 (181) 附录C机器码清单 (23)

1概述 1.1研究背景 随着2014年新年钟声的临近,一年一度的全球华人文化盛宴春节联欢晚会也正式进入了紧张的倒计时。诚如你所发现的那样,各式各样的倒计时牌开始逐渐的走进人们的视野。我们现实的工作学习中也不可避免的接触到形形色色的倒计时牌,作为学生的我们记忆犹新的恐怕非高考百天倒计时牌莫属了,而最让国人觉得自豪的就是1997年香港回归的倒计时了,当倒计时牌归零的那一刻,冉冉升起的中国国旗再一次点燃国人沸腾的热血。诸如此类的倒计时牌不胜枚举:2008北京奥运会倒计时、2010上海世博会倒计时牌等等。 日常生活中,我们不可避免的接触到各式各样的倒计时牌,当你开车时红路灯的短暂倒计时,当你玩游戏时游戏时间结束的倒计时…..,而这些不同功能不同含义的倒计时牌引起了我极大的兴趣,学完单片机后,让做出一个属于自己的倒计时牌成为可能。 在智能化产品中,单片机的应用已经越来越广泛,单片机以它体积小、质量轻、耗电省、可靠性高、价格低等优点,开始不断发展,AT89C51单片机是一款非常典型且实用的51单片机,网上资源和参考书比较多,所以我此次采用此型号的单片机作为倒计时牌的控制器件。 1.2设计思想及基本功能 该倒计时牌采用廉价可靠的LED数码管显示,能够根据使用者的要求,结合实际情况设置不同时间长度的倒计时,在设定的倒计时时间结束时能够自动启动报警装置,并且显示恢复到初始状态。利用专业的单片机仿真软件Proteus7.8来进行仿真,以验证设计的正确性同时达到降低设计周期的目的。 可设设置倒计时时间的倒计时牌系统具有以下几个基本功能: (1)利用8位数码管能够显示日、时、分、秒倒计时。 (2)通过按键来实现倒计时时间的设定。 (3)倒计时时间到时,蜂鸣器报警并使LED点亮。

AT89C51单片机设计60s倒计时

目录 一、课程设计的目的、要求和设计目标 (1) 1、目的 (1) 2、要求 (1) 3、目标.................................................................. 1二、硬件要求 (2) 1、 AT89C51的芯片 (2) 2、 LED 数码管显示器概述 (3) 3、其他元器件介绍及参数选择.......................................... 6三、软件设计 (7) 1、程序流程图 (7) 2、程序导图 (7) 3、定时 /计数器初值计算 (7) 4、软件程序 (8) 5、软件仿真设计………………………………………………… 9四、软件调试………………………………………………………… 10 1、 <.HEX>文件的生成 (10) 2、PROTEUS …………………………………………………… 10五、心得体会………………………………………………………… 11 一、课程设计的目的、要求和设计目标 1、目的

单片机课程即将结束, 课程的最后一项是单片机的课程设计。通过课程设计, 我们要将在一个学期中所学的东西进行整理、归纳, 要把学到的知识转化成实际的运用,进一步的了解单片机的实质。通过动手设计,深入学习,体验单片机在日常生活中的运用,提升专业知识。 课程设计的总体包括:对单片机的了解、运用,设计思路的解析,报告文字的处理等。通过一系列的实际操作, 完善对课程的学习, 提升自我的学习能力和动手能力。 2、要求 (1用单片机 AT89C51的定时器实现 60s 倒计时。本例中用两位数码管静态显示倒计时秒值。 (2用 PROTEUS 设计,仿真基于 AT89c51单片机的 60s 倒计时实验。 (3通过 Keil uVision2软件,生成 .HEX 格式程序并植入 AT59C51单片机并调试、运行。 3、目标 通过自主完成课程设计内容, 整理学期中所学到的知识, 了解单片机的程序过程和一系列的基础操作,将理论和实践相结合,完善课业。 二、硬件要求 1、 AT89C51的芯片 芯片概述 AT89C51是一个低功耗,高性能 CMOS 8位单片机,片内含 4k Bytes ISP的可反复擦写 1000次的 Flash 只读程序存储器, 器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51指令系统及 80C51引脚结构,芯片内集成了通用

单片机60秒倒计时

摘要 近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具应用对象特点的软件结合,以作完善。模拟多通道压力系统是利用压力传感器采集当前压力并反映在显示器上,它可以分析压力过量程,并发出报警。并采用电子秤原理可根据输入单价准确的计算出物体的金额。 本篇论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。 关键词:单片机,软件,倒计时器,LED数码显示器。

目录 1.设计任务 (1) 2.设计的主要内容和要求 (1) 3.整体设计方案 (1) 4. 软件电路设计 (2) 4.1定时计数器初值运算 (2) 4.2程序框图设计 (2) 4.3程序代码 (3) 5. 硬件设计 (4) 6. 基于Proteus的电路仿真 (6) 6.1 系统调试工具PROTEUS (6) 6.2 总线路图 (6) 6.3运行结果 (7) 总结 (7) 参考文献 (8)

单片机系统课程设计 1.设计任务 设计一个基于单片机MCS-51的显示系统,要求实现以下功能: 1.在单片机系统与硬件开发过程中,与数码管和液晶屏显示器等显示仪器,本课程设采用的采用的显示仪器为数码管。 2.用keil 软件编写一个60秒倒计时时钟程序,且用两位数码管显示时间。 3.用单片机的定时器产生一秒的定时时间,作为秒倒计时间,当一秒产生时,秒计数自动减一,当秒计数到00时,自动又从59开始倒计数。 2.设计的主要内容和要求 1.基于单片机实现对数码管的控制。 2.在开始,数码管是关闭的,什么也不显示,当所编写的源程序下载到单片机中并 开始运行时,两位数码管会显示相应的变化时间。 3.整体设计方案 AT89C51单片机的内部16的内部16位定时器是一个可编程计时器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD ,即可完成方式的选择。计数器何时工作也是通过软件来设定TCON 特殊功能寄存器来完成的。整体设计方框图如图1。 图1 60秒倒计时整体方框图 电源 单片机 复位电路 数码管 时钟电路

根据51单片机能实现任意时间倒计时

倒计时器 只要修改此文档15页源程序的(如下图)的到计时初值即可实现想要的倒计时。比如30分钟倒计时修改分钟十位和各位即可。 一、设计要求: 由单片机接收小键盘阵列设定倒计时时间,倒计时的范围最大为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)所示:

基于单片机的电子倒计时牌设计与实现

基于单片机的电子倒计时牌的设计与实现 摘要 近年来随着计算机在社会领域的渗透,单片机的应用正在不断的走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以做完善。生活中单片机的应用很广,如电子倒计时牌就能够帮你记住一些重要的日子叫你不会忘记。它可以用于奥运会的倒计时、世界博览会的倒计时、高考的倒计时等重要的日子的计时,使你的生活变的简单而有规律。制作一些大的电子倒计时牌也能方便大众,如2008年奥运会在中国举办,在北京的那个大的奥运会倒计时牌就很好的给大众一个提醒的作用。 现在日常生活中时间对人们的重要性,越来越高了。时间伴随我们的每一天,每一时刻,所以我们由于各种原因会忘记各种重要的日子,这就是我们做这个电子倒计时牌的原因,它能够很好提醒人们重要的日子,保重我们不能忘记,也减少了人们不必要的损失。计时的方法也得到了发展,由最初人们用看系扣来记录重要的事情和天数,到看太阳的影子,来看时间的变化,再到出了发条表,人们用翻纸来看时间和天数,到现在人们有使用电子表,人们的生活再不断的提高和发展,电子倒计时牌是时代的发展的产物,也是人们智慧的产物。 本篇论文讨论了倒计时的设计和制作,单片机与外部温度采集芯片、液晶屏显示的电路连接,和使用Protel99进行原理图的绘制和PCB的制作,使用汇编和C语言进行软件的设计,并对系统硬件和软件进行了验证。 关键词:单片机;汇编;电子倒计时牌;Protel99

Electronic countdown board based on single chip design and implementation Abstract In recent years, with the penetration of computers in the social sphere, SCM applications are continually deepening, while the traditional control and test drive the rapidly growing update. In real-time detection and control of the microcomputer application system, the microcontroller is often used as a core component, only the SCM knowledge is inadequate and should be based on specific hardware architecture, and application-specific features of the software objects are combined to make perfect . Life of a very wide application of SCM, such as electronic countdown board will be able to help you remember some important call you will not forget the day. It can be used for the Olympic Games countdown, countdown to the Expo, and other important college entrance examination in the countdown to the days of the time, make your life more simple and regular. Produce large electronic countdown board and make it easier public, such as the 2008 Olympic Games held in China, in Beijing Olympics countdown board that big on a good reminder to the public a role. Now in daily life, the importance of time for people increasingly high. Time with us every day, every minute, so we can forget all due to various reasons, this is an important day we do this electronic countdown card, it is important to remind people of the day, we cannot forget yourself, also reduced the people to avoid unnecessary loss. Timing method is developed by using buttons at first people to record important things to see the sun, and the number of shadow, the change of time and again to the wind, people use double perspective, time and number of paper to use electronic, people are the life of people more continuous improvement and development, electronic countdown card is the product of the development of The Times, the wisdom of people. This paper discusses the design and manufacture, the countdown MCU and external temperature gathering chip, LCD display, and use of the circuit principle diagram Protel99 draw and PCB manufacture, assembly and C language used in the design of software and hardware and software is validated. Key words: Single-Chip computer, Compilation, Electronic countdown board, Protel99

51单片机输入数字并数码管倒计时典型C语言代码

51单片机输入数字并数码管倒计时典型C语言代码 使用STC89C52RC单片机,外接数码管、蜂鸣器。改代码非常适合初学者学习借鉴。 #include #define uchar unsigned char #define uint unsigned int sbit dula=P0^0; sbit wela=P0^1; sbit p17=P0^3; sbit p02=P0^2; sbit p32=P3^2; sbit p04=P0^4; uchar count; uint Sumnum; uint circle,circle1; uint time; float top;//定义top为浮点型变量 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar temp,count; uint bian,num,e,d,c,b,a; void delay(uchar x) { uchar a1,b1; for(a1=x;a1>0;a1--) for(b1=200;b1>0;b1--); } void chaishu(uint sum1) { uint e1,b1,c1,d1; e=sum1/10000;////e=6* e1=sum1%10000;///e1=5535 d=e1/1000;///////d=5* d1=e1%1000;//////d1=535 c=d1/100;////////c=5* c1=d1%100;///////c1=35 b=c1/10;/////////b=3* b1=c1%10;////////b1=5 a=b1;////////////a=5* }

单片机30秒倒计时

天津工业大学 电子CAD课程设计 报告书 三、总体方案 本设计由硬件设计和软件设计两部分组成,总电路如图1所示,硬件设计主要包括单片机芯片选择,数码管选择及晶振,电容,电阻等元器件的选择及其参数的确定;软件设计主要是实现30秒倒计时程序的编写,包括利用中断实现1秒的定时及30秒的倒计时。 具体设计:通过AT89C51型号单片机,由P0 I/O引脚分别控制7SEG–MPX2–CA型号数码管,通过单片机的p2.0和p2.1控制选通数码管控制十位和个位,达到显示30秒倒计时的目的。。30秒倒计时,到0时P1.0 1KHZ 声音报警,P1.1 LED 2 秒闪烁一次。4 秒后声光停

图1 30秒倒计时总体电路设计 3.3.1硬件设计方法 AT89C51的芯片概述 AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其工作电压在4.5-5V,一般我们选用+5V电压。外形及引脚排列如图2所示: AT89C51主要特性

图2:AT89C51的核心电路框图 LED数码管显示器概述 本设计中采用的是7SEG–MPX2 –CA型号7段共阳数码管,它是一种半导体发光器件,其基本单元是发光二极管。实物如图3所示: 图3 7SEG–MPX2–CA型号数码管 图5 程序框图

51单片机实现数码管99秒倒计时

51单片机实现数码管99秒倒计时,其实很简单,就是使用定时器中断来实现。 目的就是学习怎样用单片机实现倒计时,从而实现一些延时控制类的东西,99秒只是一个例子,你完全可以做出任意倒计时如10秒倒计时程序。 定时器定时时间计算公式:初值X=M(最大计时)-计数值。 初值,换算成十六进制,高位给TH0,低位给TL0,如果用定时器0的话。 M(最大计时)如果是16位的,就是2的16次方,最大定时,65535 微秒,实现1秒定时,可以通过定时10毫秒,然后100次改变一次秒值即可。10*100毫秒=1S 计数值:你要定时多长时间,如果定时1毫秒,就是1000微秒,(单位为微秒),如果定时10毫秒,就是10000(微秒),当然,最大定时被定时器本身位数限制了,最大2的16次方(16位定时计数器),只能定时65.535毫秒。定时1S当然不可能1S定时器中断。 下面为实现99秒倒计时C语言源程序 /*了解定时器,这样的话,就可以做一些基本的实验了,如定时炸弹~~,10秒后打开关闭继电器*/ /*数码管,12M晶振*/ #include #define uchar unsigned char sbit p11=P1^1; //连的是继电器。。 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar shiwei; uchar gewei; void delay(unsigned int cnt) { while(--cnt); } void main() { TMOD|=0x01; /*定时器0 16位定时器X=65535-10000(10毫秒)=55535=D8F0(十六进制)定时10ms */ TH0=0xd8; TL0=0xf0; IE=0x82; //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时

基于51单片机的篮球24秒倒计时器

基于51单片机的篮球24秒倒计时器 #include #define uchar unsigned char sbit wei0=P1^0; sbit wei1=P1^1; sbit wei2=P1^2; sbit gnd=P2^5; sbit key2=P2^0; uchar count;//用于记录发生了多少次中断的计数器 uchar sec=240; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //注:用code是把后面的数据存在程序存贮器中,如果不用code,数据就会存在随机存贮器中。 void delayms(int x) { int y,z; for(y=x;y>0;y--) for(z=110;z>0;z--); } void display(int dat) { uchar bai,shi,ge; bai=dat/100; shi=dat%100/10; ge=dat%10; wei0=0; P0=table[bai]; delayms(1); wei0=1; wei1=0; P0=table[shi]&0x7f; delayms(1); wei1=1; wei2=0; P0=table[ge]; delayms(1); wei2=1; P0=0xff; //这一句和下一句是为了降低数码管亮度,同学们不必写。 delayms(20);

} void keyscan() { if(key2==0) { delayms(5);//延时消抖 while(!key2);//松手检测 TR0=~TR0; } } void main() { gnd=0; TMOD=0x01;//启用定时器0的工作方式1 TH0=(65536-50000)/256;//装初值 TL0=(65536-50000)%256;//装初值 EA=1;//打开总中断 ET0=1;//打开定时器0; TR0=0;//启动定时器0; while(1) { keyscan(); /*if(count==2) { count=0; sec--; if(sec==0) sec=240; } */ display(sec); } } void timer0 () interrupt 1//定时器0的中断优先等级是1 { TH0=(65536-50000)/256;//重新装初值 TL0=(65536-50000)%256;//重新装初值 count++; if(count==2) { count=0;

单片机课程设计倒计时秒表

此次设计是我们更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。通过解决实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验以后从事生产和科研工作打下一定的基础。本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,以便今后自己在单片机领域的学习和开发打下基础,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。掌握单片机应用系统的软硬件设计过程、方法及实现,强化单片机应用电路的设计与分析能力。提高学生在单片机应用方面的实践技能和科学作风;培育学生综合运用理论知识解决问题的能力,实现理论结合实际,学以至用的原则。用所学的知识和自身课外的拓展学习加深对专业课的理解和学习;锻炼综合运用电路设计及相关电子仪器、单片机软硬件结合的理论,结合生产实际分析和解决工作工程实际问题的能力,加固、加深和扩展有关电子类,汇编语言,相关电子电路和仿真软件方面的知识和能力。通过本次课程设计,应加强培养如下能力: (1)加强自身独立的动手能力和思考解决问题的能力,提高创造能力; (2)学会使用软件Proteus画原理图和仿真调试。 (3)学会基本焊接电路板的技能 通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。 二、设计要求 } 1、可以以实现正常秒表的所有功能,包括启动、暂停、复位等; 2、可以自由设定倒计时时间(10s、20s、30s···),并进行倒计时; 3、显示方式自选; 4、任选一款51单片机; 5、扩展功能:在秒表的基础上增加时钟功能,倒计时完成时加入报警单元,如声音、灯光等。

AT89C51单片机LED数字倒计时器—课程设计

课题: AT89C51单片机LED数字倒计时器专业: 班级: 学号: 姓名: 指导教师: 设计日期: 成绩: 重庆大学城市科技学院电气学院

目录 一、设计目的作用 (3) 二、设计要求 (3) 三、设计的具体实现 (3) 1、设计原理 (3) (1)系统设计方案 (3) (2)功能模块 (4) (3)工作原理: (4) 2、系统设计 (4) (1)显示模块 (4) (2)晶振模块 (5) (3)复位电路: (5) (4)按键模块: (6) (5)报警模块: (7) 3、系统实现 (7) (1)实物图 (7) (2)分析 (8) 四、总结 (8) 五、附录 (9) 附录1: (9) 附录2: (10) 附录3: (10) 六、参考文献 (17)

LED数字倒计时器设计报告 一、设计目的作用 1、掌握51单片机最小系统的设计; 2、掌握按键电路设计、LED数码管的使用; 3、掌握C51的编程方式。 二、设计要求 基于AT89C51单片机的LED数字倒计时器主要具有如下功能,具体要求如下: 1、LED数码管显示倒计时时间。 2、倒计时过程中能设置多个闹钟,当倒计时值倒计到设定值时会发出2s 的报警声音。(K1设置小时,K2设置分钟,K3设置秒钟,K4完成退出) 3、通过按键可以对倒计时设定处置。倒计时初值范围在24:00:00~00:00:60之间,设置成功后复位初始值为成功设定值。 三、设计的具体实现 1、设计原理 (1)系统设计方案: 基于AT89C51单片机的数码管显示模块显示的倒计时器。主要是以单片机来控制,用按键来设定倒计时初始时刻的值,数码管作为显示模块来显示剩余的时间。此电路对于倒计时器中的LED数码管示器来说,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。 晶振模块

基于51单片机的篮球24秒倒计时器.doc

基于 51 单片机的篮球24 秒倒计时器 #include <> #define uchar unsigned char sbit wei0=P1^0; sbit wei1=P1^1; sbit wei2=P1^2; sbit gnd=P2^5; sbit key2=P2^0; uchar count;//用于记录发生了多少次中断的计数器 uchar sec=240; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; // 注:用 code 是把后面的数据存在程序存贮器中,如果不用code,数据就会存在随机存贮器中。 void delayms(int x) { int y,z; for(y=x;y>0;y--) for(z=110;z>0;z--); } void display(int dat) { uchar bai,shi,ge; bai=dat/100; shi=dat%100/10; ge=dat%10; wei0=0; P0=table[bai]; delayms(1); wei0=1; wei1=0; P0=table[shi]&0x7f; delayms(1); wei1=1; wei2=0; P0=table[ge]; delayms(1); wei2=1; P0=0xff; //这一句和下一句是为了降低数码管亮度,同学们不必写。 delayms(20);

} void keyscan() { if(key2==0) { delayms(5);//延时消抖 while(!key2);//松手检测 TR0=~TR0; } } void main() { gnd=0; TMOD=0x01;// 启用定时器0 的工作方式 1 TH0=(65536-50000)/256;//装初值 TL0=(65536-50000)%256;//装初值 EA=1;//打开总中断 ET0=1;//打开定时器0; TR0=0;//启动定时器0; while(1) { keyscan(); /*if(count==2) { count=0; sec--; if(sec==0) sec=240; } */ display(sec); } } void timer0 () interrupt 1// 定时器0 的中断优先等级是 1 { TH0=(65536-50000)/256;// TL0=(65536-50000)%256;// 重新装初值重新装初值 count++; if(count==2) { count=0;

30秒倒计时 c语言51单片机实现

原理图: 程序: #include #define uchar unsigned char #define uint unsigned int

sbit dula=P2^6; sbit wela=P2^7; sbit D=P2^3; uint tt,temp,shi,ge,a; uchar code shuma[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uint z); void chushi(); void xianshi(uint temp); void main() { chushi(); while(1) { if(tt==20) { tt=0; if(temp<=0)

{ temp=30; D=0; while(1) { xianshi(0); } } temp--; } xianshi(temp); } } void delay(uint z) //延时子程序 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void chushi() //设置定时器1为工作方式1

{ temp=30; TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } void zhongduan() interrupt 1 //中断函数子程序不需要声明 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; } void xianshi(uint temp) //显示子程序{ uint shi,ge; shi=temp/10;

基于80C51单片机的倒计时器

基于80C51单片机的倒计时器 摘要 ------------------------------------------------------------------------------------------------------ 1前言 -------------------------------------------------------------------------------------------------------- 2第一章倒计时系统简介 ------------------------------------------------------------------------------ 3第一节功能说明---------------------------------------------------------------------------------- 3 一、设计要求 ------------------------------------------------------------------------------ 3 二、方案说明 ------------------------------------------------------------------------------ 3 三、系统功能 ------------------------------------------------------------------------------ 4第二章80C51 单片机组成 -------------------------------------------------------------------------- 4第一节80C51 单片机结构-------------------------------------------------------------------- 4第二节、80C51芯片介绍-------------------------------------------------------------------- 4第三节、80C51单片机的引脚功能----------------------------------------------------- 5第四节、80C51单片机的中断------------------------------------------------------------- 7 一、中断源---------------------------------------------------------------------------------- 7 二、中断控制 ------------------------------------------------------------------------------ 8 三、中断源优先级 ------------------------------------------------------------------------ 8 四、串行口中断RI 或TI --------------------------------------------------------------- 9第三章硬件设计 ---------------------------------------------------------------------------------------- 9第一节硬件设计------------------------------------------------------------------------------- 9第二节硬件电路设计及电路图 ------------------------------------------------------------ 10第三节LED 数码显示器的结构 ---------------------------------------------------------- 10第四节流程图 ----------------------------------------------------------------------------------- 11第五节总体接线图 ---------------------------------------------------------------------------- 12第五章程序仿真 -------------------------------------------------------------------------------------- 13第六节本章小结 -------------------------------------------------------------------------------------- 15参考文献------------------------------------------------------------------------------------------------ 15附件 1 程序 ------------------------------------------------------------------------------------------- 16

相关文档
最新文档