单片机电子时钟设计

课程设计(论文)任务书

指导教师(签字):                       学生(签字):


开题报告


目  录

摘要…………………………………………………………1

第一章 电子时钟的设计…………………………………2

1.1电子时钟简介…………………………………………2

1.2电子时钟的基本特点……………………………………2

1.3电子时钟的应用…………………………………………2

1.4电子时钟的工作原理……………………………………2

第二章 单片机识的相关知识……………………………3

2.1单片机的介绍……………………………………………3

2.2单片机的发展史…………………………………………5

2.3 89C51单片机介绍………………………………………7

2.4单片机型号的选择  …………………………………10

2.5数码管显示工作原理……………………………………10

第三章 设计方案…………………………………………11

3.1硬件电路的设计方案……………………………………11

3.2硬件电路的原理图………………………………………11

3.3硬件电路说明…………………………………………12

第四章 控制系统的软件设计…………………………16

4.1程序设计……………………………………………16

4.2 程序流程图……………………………………………20

4.3 仿真结果……………………………………………23

4.4 仿真结果分析…………………………………………24

总结……………………………………………25

参考文献……………………………………………26


摘要

  单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

 本设计主要设计了一个基于AT89C51单片机的电子时钟。并在数码管上显示相应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。该方法仿真效果真实、准确,节省了硬件资源。

关键字:单片机;子时钟;键盘控制。


第一章 电子时钟的设计

1.1电子时钟简介

 电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。

1.2电子时钟的基本特点                                         

 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

1.3电子时钟的应用

LCD数字电子钟除了在城市的主要营业场所、车站、码头等公共场所使用,还可以改装在摩托车和汽车上,LCD显示,带蓝色背光,白天在太阳光下也能非常清楚的看到显示时间,关钥匙可以关闭蓝色背光,时间还能显示也不会清零,因LCD的显示耗电量很省的,所以一直工作也不必担心耗电问题。在骑摩托车时,为了看时间,先要停下车子,取出手机,才能看时间,是否有点麻烦,现在车上改装了一个蓝色背光的液晶电子钟后,不管白天黑夜色,随时可以看时间,非常方便。

1.4电子时钟的工作原理

一般电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。

而该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

第二章 单片机识的相关知识

2.1单片机的介绍

单片机也被称为微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

  早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端[1]的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。

  单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。

  单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

  单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。

  它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。

  

  

单片机芯片

单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!

  由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。

可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。

2.2单片机的发展史

1 . 4位单片机                                                          

 1975年,美国德克萨斯仪器公司首次推出4位单片机TMS-1000;此后,各个计算机公司竞相推出四位单片机。日本松下公司的MN1400系列,美国洛克威尔公司的PPS/1系列等。四位单片机的主要应用领域有:PC机的输入装置,电池充电器,运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,电子玩具,钟表,计算器,多功能电话等。                                                     

2 . 8位单片机                                                         

 1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率先推出MCS-48系列单片机。在这以后,8位单片机纷纷面市。例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。这类单片机的寻址能力达64KB,片内ROM容量达4--8KB,片内除带有并行I\O口外,还有串行I\O口,甚至还有A\D转化器功能。8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。

3 . 16位单片机                                                                              

1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷面市。这一阶段的代表产品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的783XX系列等。16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。

4 . 32位单片机                                                                    

 随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理,复杂实时控制,网络服务器等领域的应用与发展,20世纪80年代末推出了32位单片机,如Motorlora公司的MC683XX系列,Intel的80960系列,以及近年来流行的ARM系列单片机。32位单片机是单片机的发展趋势,随着技术的发展及开发成本和产品价格的下降,将会与8位单片机并驾齐驱。

5 . 64位单片机                                                               

 近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算法密集的实时控制场合已有应用,如英国Inmos公司的Transputer T800是高性能的64位单片机。

2.3 89C51单片机介绍

VCC:电源。

    GND:接地。

    P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

    P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

    P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

                     

图2.1  89C51单片机

    P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚 备选功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通)

P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

    PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

硬件电路设计

2.4单片机型号的选择                                                                

通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。

2.5数码管显示工作原理

LED数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为反映出半导体材料的特性。常见管芯材料有磷化镓(GaP)、砷化镓(GaAs)、磷砷化镓(GaAsP)、氮化镓(GaN)等,其中氮化镓可发蓝光。发光颜色不仅与管芯材料有关,还与所掺杂质有关,因此用同一种管芯材料可以制成发出红、橙、黄、绿等不同颜色的数码管。其他颜色LED数码管的光谱曲线形状与之相似,仅入,值不同。LED数码管的产品中,以发红光、绿光的居多、这两种颜色也比较醒目。
LED数码管等效于多只具有发光性能的PN结。当PN结导通时,依靠少数载流子的注人及随后的复合而辐射发光,其伏安特性与普通二极管相似。在正向导通之前,正向电流近似于零,笔段不发光。当电压超过开启电压时,电流就急剧上升,笔段发光。因此,LED数码管属于电流控制型器件,其发光亮度L(单位是cd/m2)与正向电流IF有关,用公式表示:L=KIF即亮度与正向电流成正比。LED的正向电压U,则与正向电流以及管芯材料有关。使用LED数码管时,工作电流一般选10mA左右/段,既保证亮度适中,又不会损坏器件。

第三章 设计方案

3.1硬件电路的设计方案

根据设计要求和设计思路,硬件电路有两部分组成,即单片机按键电路,LED显示器电路。图1 为硬件电路设计框图。

 

图1  硬件电路设计框图

3.2硬件电路的原理图

设计原理图,如图所示。

      图设计原理图

       本设计电路,硬件部分共由五个模块组成:按键模块、复位电路模块、晶振电路模块、发声指示模块、时间显示模块。晶振电路模块负责给单片机提供时钟周期。复位单路模块负责上电后自动复位,或按键后强制复位。上电后,由单片机内部定时器计时,同时通过动态显示函数自动将时分秒显示到数码管上。与此同时,按键扫描函数,一直扫描按键引脚状态,一旦扫描到按键被按下,即进入相应的功能函数。如果检测到定时时间到,则驱动蜂鸣器发声提示。

3.3硬件电路说明

3.3.1按键模块

按键模块如图所示。

图  按键模块

在该模块中,采用四个按键作为电子时钟的控制输入,通过按键来实现时钟的时间设置、定时、秒表功能。电路中将四个按键的一端接公共地,而单片机的P2口默认为高电平,一旦按键被按下,则该按键对应的额管脚被拉低,通过软件扫描按键即可知道用户所要实现的功能,调用相应的按键子程序来完成该操作。按键的去抖动由软件来实现。

3.3.2单片机的复位电路

单片机的复位电路,如图所示。

图单片机的复位电路

当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。上电后,保持RST一段高电平时间。

3.3.3单片机的晶振电路

单片机的晶振电路,如图所示。

图  单片机的晶振电路

石英晶体也连接在晶振引脚的输入和输出之间,等效为一个并联谐振回路,振荡频率应该是石英晶体的并联谐振频率。晶体旁边的两个电容接地,实际上就是电容三点式电路的分压电容, 接地点就是分压点。以接地点即分压点为参考点,振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看, 形成一个正反馈以保证电路持续振荡。

3.3.4发声指示模块

发声指示模块,如图所示。

图  发声指示模块

       发声指示模块分为发声部分,指示部分两部分。发声部分由电源,380欧限流电阻R1,LED发光二极管三部分组成。正常情况下,Led引脚(P2_0)为高电平,LED两端没有电压差,不发光,一旦按键按下,或定时时间到,Led引脚(P2_0)被拉低,LED被点亮。发生部分由蜂鸣器、电源、9018三极管、限流电阻组成。蜂鸣器由PNP三极管驱动,当BZ管脚(P2_1)为高时,三极管be级没电压差,三极管截止;反之,三极管导通,有电流流经蜂鸣器,蜂鸣器发声。

3.3.5时间显示模块

时间显示模块如图所示。

图  液晶显示电路

时间显示部分的电路也很简单,由三个两位的共阴8段数码管、四盏Led灯,加上一个4511译码驱动电路组成。在显示过程中,单片机将要显示的数字传递给4511芯片,同时通过位选选通要显示的数码管。4511芯片实现将BCD码数字转换为七段数码管段选码通过其输出端输出,同时提供约500mA的电流驱动数码管点亮。

图  数码管译码驱动驱动电路

第四章 控制系统的软件设计

4.1程序设计                                                  

    本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。

定时计数中断程序:

MOV  TMOD,#00H                   ;写控制字

MOV  TH0,#0F0H                   ;写定时常数

MOV  TLO,#0CH

SETB  TR0                         ;启动T0

SETB  ETO                        ;允许T0中断

SETB  EA                      ;开放CPU中断

AJMP  $

时间调整程序:

SETMM:  cLR   ET0             ;关定时器T0中断

CLR   TR0                     ;关闭定时器T0

LCALL   DL1S                  ;调用1秒延时程序

JB    P3.7,CLOSEDIS                ;键按下时间小于1秒,关闭显示(省电)                                                                       MOV   R2,#06H                 ;进入调时状态,赋闪烁定时初值                                                                         SETB  ET1                     ;允许T1中断

SETB  TR1                     ;开启定时器T1

SET2:  JNB   P3.7,SET1          ;P3.7口为0(键未释放),等待

SETB   00H                   ;键释放,分调整闪烁标志置1

SET4:  JB    P3.7,SET3          ;等待键按下

LCALL    DL05S                ;有键按下,延时0.5秒

JNB     P3.7,SETHH             ;按下时间大于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循环

CLOSEDIS:SETB   ET0           ;省电(LED不显示)状态。开T0中断

SETB   TR0                      ;开启T0定时器(开时钟)

CLOSE:     JB     P3.7,CLOSE    ;无按键按下,等待。

LCALL  DISPLAY                 ;有键按下,调显示子程序延时削抖

JB     P3.7,CLOSE                ;是干扰返回CLOSE等待

WAITH:      JNB    P3.7,WAITH     ;等待键释放

LJMP   START1                    ;返回主程序(LED数据显示亮)

SETHH:  CLR    00H              ;分闪烁标志清除(进入调小时状态)

SETHH1:  JNB   P3.7,SET5        ;等待键释放

SETB         01H               ;小时调整标志置1

SET6:  JB    P3.7,SET7             ;等待按键按下

LCALL    DL05S                 ;有键按下延时0.5秒

JNB     P3.7,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    P3.7,SETOUT1              ;调时退出程序。等待键释放

LCALL  DISPLAY                   ;延时削抖

JNB    P3.7,SETOUT               ;是抖动,返回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

SET5:  LCALL    DISPLAY        ;键释放等待时调用显示程序(调小时)

AJMP     SETHH1                 ;防止键按下时无时钟显示

SET7:  LCALL    DISPLAY        ;等待调小时按键时时钟显示用

AJMP     SET6

SETOUT1:  LCALL    DISPLAY    ;退出时钟调整时键释放等待

AJMP    SETOUT                  ;防止键按下时无时钟显示

延时程序:

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

4.2 程序流程图

系统的流程图如图a和图b所示:

              

                             图a  主程序流程图

                   

                               图 b  中断处理流程图

4.3 仿真结果

                        图  开始运行程序仿真图

                    图  运行一段时间后仿真图

 4.4 仿真结果分析

功能太过单调,只能实现时分秒的显示,设计比较简单。电路图的设计过于单调,用的器件太少,实现调节时间的按钮太少,不能很好的实现时间的调节。在测试过程中,六位数码显示管只显示五位数字,有一位数字不亮,通过多次的修改程序并在PROTEUS软件环境中进行仿真,最终解决了这个问题,同时也透露出本人在单片机电路设计和程序设计方面的不足。不过最后的仿真效果非常好,实现了预期的效果,能过通过多功能控制键调节时间和是否进入省电模式,是一个比较令人满意的设计。


总结:


参考文献

 1、李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998

2、THKSCM-1型单片机实验系统实验指导书、KEIL 软件,WAVE 软件

3、数字控制与PLC实验室”THKSCM-1型单片机实验系统”。

4、李光才. 单片机课程设计 实例指导[M]. 北京 北京航空航天大学出版社 2004

相关推荐