微机原理及应用课程设计带LCD显示的定时闹钟

上传人:仙*** 文档编号:29436226 上传时间:2021-10-07 格式:DOC 页数:42 大小:794.50KB
收藏 版权申诉 举报 下载
微机原理及应用课程设计带LCD显示的定时闹钟_第1页
第1页 / 共42页
微机原理及应用课程设计带LCD显示的定时闹钟_第2页
第2页 / 共42页
微机原理及应用课程设计带LCD显示的定时闹钟_第3页
第3页 / 共42页
资源描述:

《微机原理及应用课程设计带LCD显示的定时闹钟》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计带LCD显示的定时闹钟(42页珍藏版)》请在装配图网上搜索。

1、 微机原理及应用课程设计说明书PCB图,仿真 C语言程序 原理图等全套设计,联系 153893706课程设计说明书课 程 名 称: 微机原理及应用课程设计 课 程 代 码: 题 目: 带LCD显示的定时闹钟 年级/专业/班: 09级汽电三班 学 生 姓 名: 学 号: 开 始 时 间: 2012 年 07 月 02 日完 成 时 间: 2012 年 07 月 06 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名: 年 月 日目 录摘 要21 引 言31.1 问题的提出31.2任务与分析4

2、2 系统方案设计52.1 系统设计方案52.2 系统总体框图63 系统硬件电路设计73.1 89C51单片机73.2 1602LCD93.3 键盘124 系统软件设计134.1 proteus软件环境介绍134.2 Protel软件环境介绍134.3系统软件分析144.3.1 系统时钟电路设计144.3.2系统复位电路的设计144.3.3 闹钟指示电路设计154.3.4 电子闹钟的显示电路设计154.4 程序流程图155.系统调试过程21结 论24致 谢25参考文献26附表(本设计所有程序)38摘 要本设计是基于AT89C51单片机为控制核心的定时闹钟设计。系统采用了美国DALLAS公司的DS

3、1302实时时钟芯片构成了计时电路,实现了时间和日期的显示。T89C51单片机结合七段显示器设计的简易定时闹铃时钟,可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响,进步可以扩充控制电器的启停。本设计说明书对该系统的硬件电路,工作原理进行了详细的介绍。同时给出了软件设计的流程图和主要源代码。关键词: 89C51单片机 DS1302时钟芯片 LED显示器1 引 言1.1 问题的提出随着人类科技文明的发展,人们对于时钟的要求在不断地提高。时钟已不仅仅被看成一种用来显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。高精度、多功能、小体积、低功耗,是现代时钟发展的趋势。而单片

4、机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。定时闹钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能

5、。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。定时闹钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时自动报时及自动控制的领域。因此,研究数字钟及扩大其应用,有着非常现实的意义。本文正是基于这个原因以单片机为控制核心,设计制作一个多功能的数字时钟。本设计基于单片机技术原理

6、,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能定时闹钟系统。该时钟系统主要由秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路组成。系统具有简单清晰的操作界面,可随时进行时间调整。同时,该时钟系统还具有功耗小、成本低的特点,具有很强的实用性。由于系统所用元器件较少,单片机所被占用的I/O口不多,因此系统具有一定的可扩展性。1.2任务与分析本次设计的系统的控制中心是AT89C51单片机。首先,在Protel软件环境中进行硬件电路图的设计。然后在kell软件环境中进行系统的软件编程,并进行程序源文件的编译和调试,最后生成.hex文

7、件。此.hex文件是硬件电路运行实现的源代码来源。把.hex文件加载到AT89C51单片机芯片,然后在Proteus软件环境中运行硬件电路,时钟的日期就可以正常显示了。 本设计的系统主要由:AT89C51为中央处理芯片,用于数据处理,初值设定。时钟芯片DS1302是本例的核心模块,由他提供时钟信息并由LED显示,C语言进行编程。本系统可以分为以下4大模块:1、AT89C51模块:用于数据处理,和外围的时钟芯片通信,并控制时钟传输过程,采集时间信息并予以处理。2、DS1302模块:实时显示可以通过软件编程来实现,但这种方法需要编制的程序复杂,代码多,且单片机软件开销大,时间信息也不容易长期保存。

8、而采用时钟芯片DS1302可以避免这些问题,它可以长期保存此信息,因此本例中我们使用此芯片来实现此系统。3、数码管显示模块:显示模块采用普通的共阳LED数码管,此模块用于实时的显示时间信息。4、程序:包括单片机控制时钟芯片的接口程序(实现单片机和时钟芯片之间的数据传输过程)和数码管显示程序。2 系统方案设计2.1 系统设计方案通过查阅相关资料,设计初期共有3个方案供我选择,分别是:(1)采用89C2051单片机组成的系统;(2)采用AT89C51单片机,8155芯片组成的系统;(3)采用89C51单片机,DS1302实时时钟芯片组成的系统。(1)采用89C2051单片机组成的系统此系统的硬件部

9、分主要是由89C2051单片机,74LS48芯片,ULN2003芯片所组成。该系统硬件结构简单,但是单片机的I/O接口太少,不足以实现多种功能,软件设计部分,程序冗长而复杂,易产生混淆。(2)采用89C51单片机,8155芯片组成的系统 这个方案采用89C51单片机,8155芯片,LED显示器,4*4键盘来组成系统的硬件。该系统采用的是单片机内部的定时/计数器进行中断定时,配合软件延时实现时,分,秒的计时。但这样的话,程序复杂化,时间信息也不容易长期保存。(3)采用89C51单片,DS1302实时时钟芯片组成的系统 此方案在硬件部分采用了89C51单片机,DS13O2时钟芯片,LED显示器,几

10、个按键。该系统的最大特点是采用了新的芯片即DS1302。在功能上进行了扩充,并且使得硬件连线显得较为简单,在软件部分,程序显得层次分明。 最后确定设计采用第3方案,即 系统是由89C51单片机, DS1302时钟芯片,LED显示器组成。2.2 系统总体框图复位、时钟等电路按钮电路CPU数码管显示电路闹铃声指示电路电源系统图2-1 系统总体框图 电子闹钟应包括秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。 电子闹钟的主电路指的是图中虚线框内部分,主要涉及到CPU电路和按键按钮电路。主机的设计具体地说有:1)系统时钟电路设计;2)系统复位电路设计;3)按键与按钮电路设计;

11、4)闹铃声指示电路设计。 3 系统硬件电路设计3.1 89C51单片机 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控

12、制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图3-1 89C51单片机引脚图 89C51单片机与早期Intel的8051/8751/8031芯片的外部引脚和指令系统完全兼容,只不过用Flash ROM 替代了ROM/EPROM而已3。89C51单片机内部结构如图所示。图3-2 89C51单片机内部结构示意图各引脚的功能如下: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为

13、数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高3。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这

14、是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当

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

16、时,这两次有效的/PSEN信号将不出现。 /EA:当/EA保持低电平时,则在此期间CPU只访问外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,则执行内部程序存储器中的程序。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2 1602LCDLCD1602显示方式的方案比较。方案一:采用花样显示,花样显示是指LCD显示某一屏字符时,采取从左到右或者是从右到左的整屏移动的显示方式。在这种显示方式下

17、,给人的感觉就是程序是在执行的,同时如果控制好了移动一屏的时间间隔的话,在整体视觉上可以达到很好的效果。方案二:采用静态显示,静态显示是指LCD显示某一屏字符时,时钟保持当前字符的显示,不使用移屏显示。便于控制,同时能够满足正常的显示效果。由于在显示中存在播放时间的动态变化,这样的话,即使是不产生整屏移动,也能给人动态感,也易于控制。基于以上各种特点,我选择了方案二。1602液晶模块内部的控制器共有11条控制指令,如表2-1所示. 表3-2 1602液晶模块控制指令序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000

18、001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,各引脚符号及其功能表如下表2-1所示。表3-3各引脚及其功能表引脚符号功能说明1VSS一

19、般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0低4位三态、双向数据总线 0位(最低位)8DB1低4位三态、双向数据总线 1位9DB2低4位三态、双向数据总线 2位10DB3

20、低4位三态、双向数据总线 3位11DB4高4位三态、双向数据总线 4位12DB5高4位三态、双向数据总线 5位13DB6高4位三态、双向数据总线 6位14DB7高4位三态、双向数据总线 7位(最高位)(也是busy flag)15BLA背光电源正极16BLK背光电源负极3.3 键盘按键用于控制数码显示、LCD显示、扬声器等模块的工作。通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。设计中使用单个按键实现单个功能,属于较为简单的控制方式。按键采用5个button,分别控制倒计时开始、调分个位、调分十位、调秒个位、调秒十位;另外还加一个总开关用于控制所有电

21、路的通电情况4 系统软件设计4.1 proteus软件环境介绍本系统的硬件设计首先是在Proteus软件环境中仿真实现的。Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,它的电路仿真是互动的。针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试。如果有显示及输出,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,还能看到运行后输入输出的效果。Proteus建立了完备的电子设计

22、开发环境,尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果2。Proteus是目前最好的模拟单片机外围器件的工具。可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件.)。其实Proteus 与 multisim比较类似,只不过它可以仿真MCU,当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是初学者拥有它们的可能性比较小。当然,硬件实践还是必不可少的。在没有硬件的情况下,Proteus能像pspice

23、仿真模拟/数字电路那样仿真MCU及外围电路。另外,即使有硬件,在程序编写早期用软件仿真一下也是很有必要的。Proteus软件主要具有以下几个方面的特点:1、设计和仿真软件Proteus 是一个很有用的工具,它可以帮助学生和专业人士提高他们的模拟和数字电路的设计能力。2、它允许对电路设计采用图形环境,在这种环境中,可以使用一个特定符号来代替元器件,并完成不会对真实电路造成任何损害的电路仿真操作。3、它可以仿真仪表以及可描述在仿真过程中所获得的信号的图表。4、它可以仿真目前流行的单片机,如PICS, ATMEL-AVR, MOTOROLA, 8051 等。5、在设计综合性方案中,还可以利用ARES

24、开发印制电路板。4.2 Protel软件环境介绍Protel印制板设计软件包是澳大利亚protel technology公司与1990年推出的电子CAD产品,具有方便、易学、实用、快速以及高速度、高步通率的特点。它采用了分层次下拉窗口菜单结构形式,用户基本上不需要记背太多的键盘命令,用鼠标点击菜单命令就能操作,protel有着很高的自动布线布通率。布通率是电子产CAD产品的一项重要指标,它反映电子元件在电路图中连接关系有多少能在印刷版图中实现。在设计常用的单、双面印制板时只要选择适当的元件布局和布线策略方法,protel就可以轻易的达到98%-100%的布通率。对于极少数不能布通的定方,pro

25、tel可以用飞线指示出来,引导用户用手工方法连通。另外,protel有强大的宏命令设置功能,利用宏命令功能多定义的热键可以大大提高操作速度1。 Protel对微机的软硬件配置要求很低:cpu在8088以上,dos2.0以上版本,内存640kb以上,双软件(或一个软件一个硬盘),单色显示器(多层板设计时最好用彩色),各种兼容打印机。也能在Windows9X平台的模拟DOS下运行。Protel已成为印制板设计加工方面的工业标准。据初步统计protel在CAD的市场占有率达 95%,成为电子产品制造业界的首选CAD软件。4.3系统软件分析任何一个应用系统,它们都有着自己的硬件系统和软件系统,少了任何

26、一个部分都不可能称之为一个完整的应用系统,它们之间是相互依存的一个整体,硬件系统是软件系统的一个基础和前提,为软件系统提供了一个操作平台;而软件系统是硬件系统的灵魂,它对硬件系统起到扩充和完善的作用。可想而知软件系统与硬件系统同等重要,下面为系统软件设计过程4.3.1 系统时钟电路设计对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于原理图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在本闹钟系统的实际应用中一定要注意正确选择参数(3010 PF),并保证对称性(尽可能匹配),选用正牌厂家生产的瓷片或云母电容,如果可能的话,温度系数要尽可能低。实验表明

27、,这2个电容元件对闹钟的走时误差有较大关系。4.3.2系统复位电路的设计智能系统一般应有手动或上电复位电路。复位电路的实现通常有两种方式:)RC复位电路;)专用监控电路。前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。本次课程设计采用了上电按钮电平复位电路。4.3.3 闹钟指示电路设计闹铃指示可以有声或光两种形式。本系统采用声音指示。关键元件是蜂鸣器。蜂鸣器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得电状

28、态下即起振发声。市场上的有源蜂鸣器分为3、5、6等系列,以适应不同的应用需要。闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。其电路设计参见系统原理图。4.3.4 电子闹钟的显示电路设计本次课程设计采用了6位数码管显示电路。在6位LED显示时,为了简化电路,降低成本,采用动态显示的方式, 6个LED显示器共用一个8位的I/O, 6位LED数码管的位选线分别由相应的P2. 0P2. 5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。译码

29、显示电路将“时”、“分”、计数器的输出状态菁七段显示译码器译码,通过LED显示器显示出来。到达定时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现闹铃。校时电路时用来对“时”、“分”显示数字进行校对调整的。4.4 程序流程图1.主程序流程图 主程序流程图说明:主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。开始CPU系统初始化定时0初始化中断初始化串口初始化显示待机指示符Y设定闹铃时间显示刷新启动走时有关变量初始化判时或分变化否?刷新显示判秒到否?秒

30、指示判是否到闹铃时间?闹铃延时NNNYNY图4-1 主程序流程框图时间设定开始2.时间设定模块流程图N设置键吗?Y设置模块初始化将在编参数送显示缓冲区闪烁标志为真?Y将当前位的显示代码置暗代码N调基本显示模块刷新显示N设置键吗?键吗?N当前编辑的是分各位?结束设定YY根据当前位的性质分别进行处理(含上下限判断)当前编辑位下移(下一位) 图4-2 时间设定模块程序流程图框图 时间设定模块流程图说明:时间设定模块的设计要点是按键的去抖处理与“一键多态”的处理。即只涉及4个键完成了时间参数的设定。软件法去抖动的实质是软件延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是

31、则作为按键处理,否则,视为抖动,不予理睬。去抖中的延时时间一般参考资料多描述为10ms左右,实际应用中,应大于20ms,否则,会导致按一次作多次处理,影响程序正常执行。“一键多态”即多功能键的实现思想是,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。3.闹铃功能的实现流程图N中断开始闹铃判别处理时十位、个位,分十位、个位改变了是否设置了闹铃判当前时间是设定时间设置闹铃标志清除闹铃标志中断返回YYN图4-3闹铃功能的实现流程图框图 闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹

32、铃判别与闹铃处理的关键在于判别何时要进行闹铃。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。译码显示电路将“时”、“分”计数器的输出送到七段显示译码驱动器译码驱动,通过六个七段LED显示器显示出来。闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放电路驱动蜂鸣器发声实现报时。校时电路是直接加一个脉冲信号到时计数器或者分计数或者秒计数器来对“时”、“分”显示数字进行校对调整。 考虑到实用性,在该电子钟的设计中修改定时或调整时间时采用了闪烁,而且以定时20组闹钟。在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序

33、的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。在显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。时,分显示则是用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数。由于定义了定时闹钟组,在这里采用中断组次,每中断一次比较一组闹钟,避免了一次比较中断时间过长,影响下次中断时间。显示之后查询闹铃标志位是否与前面所置数相等,若相等则响铃。为了避免响铃影响显示,采用了每显示几屏以后在显

34、示程序中出现脉冲,驱动喇叭,不会影响显示。之后用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。4.基本显示模块的实现流程图基本显示模块设计的重点是由显示代码取得相应的段码,显示段码数据的并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,

35、分显示时间的功能,还可以进行时和分的校对,片选的灵活性好。程序流程如图所示。显示开始将进制时分秒数据转化为显示代码通过串口将时分秒数据传入数码管打开显示通过串口将时分秒数据传入数码管打开显示图4-4基本显示模块的实现流程图5.系统调试过程通过上面的硬件设计和软件设计过程,设计的工作已经基本完成,接下来的工作就是对所设计好的应用系统进行调试。通过调试可以检查出系统出现的一些错误,从而进行下一步的修改。(1)在Protel 99 SE中,对硬件电路图进行ERC电气规则检查。 图 5-1 protel原理图图5-2 ERC电气规则检查结果 图5-3 PCB图(2)程序调试程序经过调试显示“0错误,0

36、警告”。表示程序调试通过。图5-3 程序调试通过示意图(3)protues调试图5-4 protues仿真图结 论单片机是一门应用性很强的学科,课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。虽然在做课程设计以前已经系统的把单片机课本认真的学习了一下,但是在刚拿到设计任务书时还是有点一头雾水,不知道该从哪里下手。令人欣慰的是经过一周的学习,虽然过程很艰辛,但是总算实现了定时闹钟的功能,所有的努力都很值得。这一周的大部分时间都在研究程序怎么处理,在这个过程中加深了我对汇编语言命令的应用,而且也更加了解到软硬件配

37、套的重要性。通过这次课程设计,使我们对这们功课有了更深刻的认识和了解。首先对于硬件电路的工作原理有了进一步系统的学习,同样就有了进一步的认识,使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。其次软件在这次设计中也有不足之处,比如音乐的响声不连续,但又不知道从哪个地方入手解决这个问题,这要求在以后的学习中,拓宽自己的知识面,解决设计的不足之处。总之,通过这次课程设计不仅使我巩固了本课程所学的基本知识,还使我们具有了撰写科研报告的初步训练能力,我相信这些能力在我们以后的工作或者是再学习中一定会起到不小的

38、作用,一切的辛苦和艰难都是值得的。致 谢在陈飞老师的指导下,我完成了本次设计。本设计从选题到完成,都得到了陈老师细心的指导。另外,本设计的完成也离不开其他老师和各位同学给我的建议和帮助,是他们让我明白了团队合作的精神。当然,这之中也有我自己的努力。这次课程设计最令我高兴的是:遇到困难,翻阅书本解决困难的同时巩固了已学知识,也学到了新知识。在此,我谨向陈飞老师和帮助过我的老师和同学们,表示崇高的敬意和衷心的感谢!参考文献1张毅刚,彭喜元. 单片机原理与应用设计. 北京:电子工业出版社,2008.42徐铮颖,孙海维.Protel 99 se EDA技术及应用.北京:机械工业出版社,2012.2 3

39、谭浩强.C程序设计(第三版).北京:清华大学出版社,20054刘文涛.单片机应用开发实例.北京:清华大学出版社,2005.95高卫东,辛友顺,韩彦征.51单片机原理与实践.北京:北京航空航天大学出版社.2008.1附表(本设计所有程序)#include#define uint unsigned int #define uchar unsigned char uint miao,fen,fen1,shi,shi1,flag1,flag2,flag3,aa,K1num,K2num,K3num,K4num,N;/K1num-K1按键被按下的标记变量,K2num-K2按键被按下的标记变量,K3num=

40、0-K3按键被按下的标记变量uchar code table= TIMING CLOCK;/定义初始上电时液晶默认显示状态sbit K1=P10;/四个按键sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit rs=P20;sbit lcden=P22;sbit led=P23;/发光二极管控制端sbit beep=P24; /蜂鸣器控制端sbit relay=P25;/继电器控制端void delay(uint z)/延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/液晶写命

41、令函数rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/液晶写数据函数rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void write_sfm(uchar add,uchar date)/液晶写时分秒函数uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void i

42、nit()/初始化函数uint num;/写液晶的循环控制变量aa=0;/中断次数标志K1num=0;/K1按键被按下的标记变量K2num=0;/K2按键被按下的标记变量K3num=0;/K3按键被按下的标记变量K4num=0;flag1=1;/控制lcd屏刷新的变量flag2=1;/控制闹钟响闹和继电器开启关闭的标记flag3=1;/控制闹钟响起时,按下K4停止闹钟响闹的标记led=1; /发光二极管初始化relay=0;/继电器初始化N=100;/系统启动时,闹钟时间到发出的声音为连续三次发出“哗”的一声miao=0;/系统初始化时间fen=0;shi=0;fen1=1;/初始化闹钟的时间

43、shi1=0;beep=0;/蜂鸣器初始化lcden=0;/液晶使能端初始化write_com(0x38);/1602液晶初始化,设置16*2显示。5*7点阵,8位数据接口write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址指针自动加1write_com(0x01);/显示清0,数据指针清0write_com(0x80);/将数据指针定位到第一行,第一个字处for(num=0;num15;num+)/显示闹钟标示:TIMING CLOCKwrite_date(tablenum);delay(10);write_com(0x80+0x40+7

44、);/写出时间显示部分的两个冒号write_date(:);write_sfm(8,fen);/送去液晶显示秒,分,时write_sfm(5,shi);TMOD=0x01;/设置定时器0为工作方式1TH0=(65536-50000)/256;/定时器装初值TL0=(65536-50000)%256;EA=1;/开总中断ET0=1;/开定时器0中断TR0=1;/启动定时器0void keyscan()/键盘扫描函数if(K1=0&K3num=0)/判断K1按下,按下前没有按下K3键,则开始修改时间delay(5);if(K1=0&K1num=0)K1num=1;while(!K1)/判断是否松开

45、按键,后同if(K1num=1)TR0=0;/关闭计数器0write_com(0x80+0x40+9);/第一次按下光标定位到分钟位置write_com(0x0f); /光标开始闪烁if(K3=0&K3num=0&K1num=0)/判断K3首次被按下,则设置闹钟delay(5);/延时消抖,后同if(K3=0)flag1=0;write_com(0x80+0x40+9);/第一次按下光标定位到分钟位置while(!K3);K3num=1;write_sfm(8,fen1);/送去液晶显示定时的分,时write_sfm(5,shi1);write_com(0x0f);/光标开始闪烁write_c

46、om(0x80+0x40+9);/显示位置回到调节处if(K1=0&K1num=1)/判断K1按下,修改系统时间的小时delay(5);if(K1=0)write_com(0x80+0x40+6);/光标定位到小时位置K1num=1;/置K1num=1while(!K1);shi+; /则调整时加1if(shi=24) shi=0;/若满24后将清零write_sfm(5,shi);/每调节一次送液晶显示一下write_com(0x80+0x40+6);/显示位置重新回到调节处if(K2=0&K1num=1)/判K2按下,修改系统时间的分钟delay(5);if(K2=0)write_com(

47、0x80+0x40+9);/光标定位到分钟位置K1num=1;while(!K2);fen+; /则调整分加1if(fen=60)fen=0;/若满60后将清零write_sfm(8,fen);/每调节一次送液晶显示一下write_com(0x80+0x40+9);/显示位置重新回到调节处if(K1num=1|K3num=1)/当设置时间或闹钟时,K3被按下设置完成。if(K3=0)/判断K3按下delay(5);if(K3=0)K1num=0;K3num=0;while(!K3);write_com(0x0c);/取消光标闪TR0=1;/启动定时器使时钟开始走flag1=1;/flag=1.

48、则修改系统时间时液晶显示的系统时间值,flag=0,则为修改闹钟时间时,屏幕显示的是修改闹钟时间的值write_sfm(8,fen);/送去液晶显示分,时write_sfm(5,shi);if(K2=0&K1num=0&K3num=0)/K2被按下时显示定时时间delay(5);if(K2=0)write_sfm(8,fen1);/送去液晶显示定时的分,时write_sfm(5,shi1);while(!K2);write_sfm(8,fen);/K2松开显示当前时间write_sfm(5,shi);if(K1=0&K3num=1)/修改小时,判断K1键按下,K3num=1,表示K3按键按下,

49、则此时修改的是闹钟时间的小时delay(5);if(K1=0)write_com(0x80+0x40+6);/光标定位到小时位置K3num=1;while(!K1);shi1+; /则调整定时的时加1if(shi1=24)/若满24后将清零shi1=0;write_sfm(5,shi1);/每调节一次送液晶显示一下write_com(0x80+0x40+6);/显示位置重新回到调节处if(K2=0&K3num=1)/卸螷2按下,修改闹钟时间的分钟delay(5);if(K2=0)write_com(0x80+0x40+9);/光标定位到分钟位置K3num=1;while(!K2);fen1+;

50、 /则调整分加1if(fen1=60)/若满60后将清零fen1=0;write_sfm(8,fen1);/每调节一次送液晶显示一下write_com(0x80+0x40+9);/显示位置重新回到调节处if(K4=0&flag3=0)/当闹钟响起时,按下K4停止响闹,当闹钟响起时候flag3置为1delay(5);if(K4=0)flag2=0;flag3=1;/此处需置flag3为1,否则闹钟没有响起的时候按下K4键,程序会执行此句if(K4=0&flag3=1&K4num=0)/K4按下设置闹钟的状态为ON或OFF,flag3=1,表示闹钟此时没响起。K4num=0,表示此时为ON状态。d

51、elay(5);K4num=1;if(K4=0&flag3=1&K4num=1)/K4按下设置闹钟的状态为ON或OFF,flag3=1,表示闹钟此时没响起。K4num=1,表示此时为OFF状态。delay(5);K4num=0;void clock()/闹钟函数 K4闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一?if(fen=fen1)&(shi=shi1)&(flag2=1)&(K4num=0)/闹钟的响闹控制beep=1;/此时闹钟响起,连续三次发出哗的一声relay=1;/闹钟时间到,则继电器启动flag3=0;/置flag3=0,表示此时

52、闹钟响起,按下K4键执行停止闹钟响闹语句delay(100);/这些语句是为了使闹钟响起时,发出连续三次哗的声音beep=0;delay(100);beep=1;delay(100);beep=0;delay(100);beep=1;delay(100);beep=0;delay(300);else if(fen=fen1)&(shi=shi1)&(flag2=1)&(K4num=1)/闹钟的响闹控制beep=1;/此时闹钟响起,发出哗的一声relay=1;/闹钟时间到,则继电器启动flag3=0;/置flag3=0,表示此时闹钟响起,按下K4键执行停止闹钟响闹语句else beep=0;re

53、lay=0;void main()/主函数init();/初始化子程序while(1)keyscan();clock();void time0() interrupt 1/定时器0中断服务程序TH0=(65536-50000)/256;/定时器重新装入数值TL0=(65536-50000)%256;aa+;/中断次数累加if(aa=20)/20次50毫秒为1秒aa=0;miao+;led=led;if(miao=60)miao=0;fen+;flag2=1;/闹钟响起时按下K4键闹钟关闭,此处应重置该变量,使下一次闹钟时间来到时,闹钟仍然可以响起if(fen=60)fen=0;shi+;if(shi=24)shi=0;if(flag1=1)write_sfm(5,shi);/小时发生变化则立即吸入屏幕显示if(flag1=1)write_sfm(8,fen);/分钟发生变化则立即吸入屏幕显示41

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!