简易数字钟电路的设计毕业设计(论文)说明书.doc_第1页
简易数字钟电路的设计毕业设计(论文)说明书.doc_第2页
简易数字钟电路的设计毕业设计(论文)说明书.doc_第3页
简易数字钟电路的设计毕业设计(论文)说明书.doc_第4页
简易数字钟电路的设计毕业设计(论文)说明书.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要数字钟在日常生活中最常见,应用也最广泛。随着科学技术不断地发展,人们对于数字钟的要求也在不断地提高,而传统的数字钟,多数只能显示小时、分钟等信息,功能单一,而且大都采用LED数码管作为显示器件,功耗大,不能令消费者满意。因此有必要对数字钟进行改进。本课题设计是基于数字钟的原理,在经典基本电路上加以改进,设计并制作符合指标要求的多功能数字时钟。该多功能数字钟设计基于单片机技术原理,以单片机芯片AT89S51作为核心控制器,通过硬件电路的制作以及软件程序的编制来完成。本文详细叙述了系统硬件、软件的具体实现过程,重点阐述时钟系统硬件中时钟主控模块、键盘模块、报时模块、液晶显示模块的模块化设计与制作;软件中同样采用模块化的设计,主要包括键盘模块、时钟主控模块、报时模块、时间调整模块设计,并采用简单流通性强的C语言编程实现。本设计实现了显示年、月、日、时、分、秒、星期的功能,按键调整时间,仿电台整点报时功能。该系统功能实用,实现方法简单,具有工作稳定、使用方便等特点,可以广泛应用于人们日常生活中。关键字:单片机AT89S51;数字钟;LCD1602;报时。AbstractThe digital clock is used widely in our daily life. With the development of science and technology, the performance of digital clock has been improving for peoples requirements. However, the most traditional digital clocks can only show some messages such as hours, minutes, etc. For the single functions and high power consumption of the LED digital tube as display device, they cannot make customer satisfaction. There is a need to improve on the digital clock. The subject of design is based on the principle of digital clock, in the classic to be improved on the basic circuit design and production meet the index requirements of multi-functional digital clock.The multi-function digital clock design principles based on microcontroller technology to chip AT89S51 microcontroller as the core controller, through the production of hardware and software to complete the preparation process.This paper describes the system hardware and software realization process, we focus on the design and production of the hardware keyboard module clock system, the clock master module, alarm module, LCD module;in the design of the software,modular design is also adopt , the keyboard module, the clock master module, alarm module, ime adjustment and timing module are all included, and with a simple C language programming,we achieve the function of software control.With the device,the function of display the year, month, day, hour, minute, second, week of features, buttons to adjust time, set the alarm of time, the whole point timekeeping of imitation radio is realized. Considering the system is functional、practical、simple to achieve、stable and easy to use , it can be widely used in our daily life.Key words:Singlechip AT89S52;Digital clock;LCD1602;alarm clock.目 录1 绪论11.1 课题的提出及研究意义11.1.1课题的提出11.1.2课题研究的意义11.2 数字时钟的发展现状21.3 课题研究目的、研究内容及设计方案选择31.3.1课题研究目的31.3.2课题研究内容31.3.3课题设计方案选择42 多功能数字时钟硬件设计42.1 主控制模块设计52.1.1单片机AT89S51的特性概述52.1.2单片机AT89S51管脚说明52.1.3单片机AT89S51最小系统72.2 显示模块设计82.2.1LCD1602显示器的结构82.2.2LCD1602数据原理92.2.3显示模块的数据连接102.3 键盘模块设计112.4 报时电路模块设计122.5 本章小结133 软件设计部分133.1 软件总体框图主函数的设计133.2 LCD1602显示模块程序的编写143.3 键盘模块程序的编写163.4 中断模块程序的编写183.4.1中断初始化函数183.4.2中断程序183.5 报时模块程序的编写193.6 延时模块程序的编写203.7 进位模块程序编写203.8 本章小结204 综合调试215 结论21谢 辞23参考文献24附 录25桂林电子科技大学信息科技学院毕业设计(论文)说明书 第39页 共38页1 绪论人类的生活和工作均离不开时钟。从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进着计时工具。钟表的数字化,大力推动了计时的精确性和可靠性。1.1 课题的提出及研究意义1.1.1课题的提出近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的要求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等 。数字钟成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便。在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品 。随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机多功能数字时钟,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,同时又可以进行时钟校准和定点打铃 。它可以执行不同的时间表(考试时间和日常作息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用LCD数字电子钟已经成为一种时尚。但目前市场上各式各样的LCD数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点,因此有必要对数字电子钟进行改进。1.1.2课题研究的意义多功能数字时钟的用途十分广泛,只要有计时的存在,便要用到数字时钟的原理及结构;同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费者的喜爱。随着人类科技文明的发展,人们对于时钟的要求在不断提高 。时钟已不仅仅被看出一种用来显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。高精度、多功能、小体积、低功耗,是现代时钟发展的趋势。在这种趋势下,时钟的数字化、多功能化已经成为现在时钟生产研究的主导设计方向。1.2 数字时钟的发展现状随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、电子秒表等等,国内外已有多种数字钟设计成果,下面介绍几种常用数字时钟设计方案:(1)基于低成本数字集成电路及配套的LED显示器组成的数字钟设计系统由数字逻辑集成芯片构成纯硬件电路,其电路有以下几个模块电路组成:晶体振荡器电路给数字钟提供一个频率稳定准确的方波信号,可保证数字钟的走时准确及稳定。分频器电路将高频方波信号经分频后得到1Hz的方波信号供秒计数器进行计数。校时电路由按键组成,当按键按下时产生一个脉冲信号来控制计数器的计数。时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器。译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。一般时钟都应具备整点报时电路功能,即在时间出现整点前数秒内,数字钟会自动报时,以示提醒.其作用方式是发出连续的或有节奏的音频声波。其设计框图如图1-1所示。显示器译码器译码器译码器24进制时计数器60进制分计数器60进制秒计数器校时校分晶体振荡器分频器报时系统校秒图1-1 基于微机系统的数字时钟设计框图这种设计只用硬件构成,实现起来比较简单,但由硬件搭建的电路不够稳定,功能不能扩展,数码管显示效果较差,且电路功耗较大。(2)基于VHDL的数字时钟设计基于VHDL语言,用Top_Down的思想进行设计。用CN6无进位六进制计数器选择数码管的亮灭以及对应的数,循环扫描显示,用SEL61六选一选择器选择给定的信号输出对应的数送到七段码译码器。K模块进行复位,设置小时和分,输出整点报时信号和时,分,秒信号。单元模块设计如图1-2所示。K模块对应的数模块CN6信号选择模块SEL61七段码译码器模块DISP图1-2 基于VHDL数字时钟的设计模块单元模块设计部分分三个部分,介绍数字钟选择显示数码管和对应的数模块CN6,信号选择模块SEL61,七段码译码器模块DISP和复位,秒,分,时显示,设置模块。(3)基于单片机数字时钟设计基于单片机的数字时钟设计是模块化设计,以单片机做主控制模块,将数据控制输出到显示模块。通过编程来实现各种需要的时钟功能。基于MCS-51单片机的数字时钟系统具有显示准确、直观、易于调整等特点。单片机自诞生以来给全世界人类的生活和工作起到了剧烈的变化,而MCS-51单片机是我国使用最早、最易掌握和应用的一款单片机。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,录象机、摄象机,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。1.3 课题研究目的、研究内容及设计方案选择1.3.1课题研究目的数字钟是一种利用电子电路来显示秒、分、时的计时装置,从原理上讲是一种典型的数字电路,经典基本设计可用纯硬件电路实现,但电路结构复杂,功率损耗大等缺点,因此有必要对数字数字钟进行改进。本课题设计就是为了研究数字钟的原理,在经典基本电路上加以改进,并添加一些功能模块,制作出一件多功能数字钟。1.3.2课题研究内容(1)查阅和整理关于多功能数字钟电路的资料,确定最佳设计方案。能够根据课题的设计要求参考、应用、改进经典电路;(2)课题的设计方案应本着简洁、实用、高性能和经济的原则,要求对设计的方案进行比较,选择最佳方案;(3)准确计时,以数字形式显示时、分、秒的时间;(4)扩展功能:仿广播电台正点报时;(5)硬件作品达到外表简洁美观大方、性能良好。1.3.3课题设计方案选择在1.2节介绍的几种数字钟设计方案里,其中使用单片机设计的数字钟,功能强大,界面友好,更好的满足了人们对它的智能化要求,这使得单片机在多功能数字钟中的应用非常普遍。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行计时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。由于数码管的显示效果比较差,而液晶显示器的液晶显示范围广,能显示的东西多,显示效果明显,所以输出设备显示器用液晶显示技术。使用单片机系统设计多功能数字时钟成为一项不可回避的良好设计方案。2 多功能数字时钟硬件设计使用单片机设计的数字钟的器件可以确定以下几个方面。微处理器的选择,AT89S51是2003年ATMEL推出的新型品种,除了完全兼容8051外,还多了ISP编程和看门狗功能。显示电路的设计,随着科技的发展,液晶显示的使用越来越方便,已被普遍的使用。由于液晶显示与驱动都集成在一个芯片上,因此使用起来很方便。在这里采用液晶显示;校时和定时电路的设计;实时控制电路是时钟电路的一个重要组成部分,采用的是一个时钟芯片,单片机从中读取数据送到显示器上显示,从而实现数字钟的功能;还有一些其他控制电路如复位电路、时钟电路等。通过这些控制电路的连接构成了完整的电路。按照系统设计功能的要求,初步确定设计系统由主控制模块、显示模块、键盘模块、报时功能模块共4个模块组成,电路系统构成框图如图2-1所示。键盘模块AT89S51主控制模块显示模块报时模块图2-1电路系统构成框图2.1 主控制模块设计主控使用AT89S51,AT89S51提供以下标准功能:4K字节闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中到内容,但振荡器停止工作并禁止其它所有工作部件直到下一个硬件复位。2.1.1单片机AT89S51的特性概述主要特性: 与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24Hz 三级程序存储器锁定 128*8位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路2.1.2单片机AT89S51管脚说明AT89S51引脚如图2-2所示。图2-2 AT89S51引脚图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编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,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)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.1.3单片机AT89S51最小系统主控模块采用的是AT89S51构成的最小系统,原理图如图2-3所示:图2-3单片机AT89S51最小系统AT89S51所用的晶体振荡电路采用内部振荡方式,由一个频率为12MHz的晶振和两个22PF的电容组合而成。AT89S51的复位是使CPU和系统中的其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。无论是在单片机刚接通电源时,还是断电后或者发生故障后都要复位。复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。复位电路由按键复位和上电复位两部分组成:(1)上电复位:AT89系列单片机为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。(2)按键复位:按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。复位按键为K1,当K1按下时给RST复位脚提供高电平。本最小系统还包含有下载口电路和电源接口,下载口电路(即图2-3中的JP)是为单片机提供烧录程序的入口,同时下载口还能作为供电口。对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电,电源模块的稳定可靠是系统平稳运行的前提和基础。为了保证能在普通场合运行数字钟系统,在系统设计中还设计了单独电源接口(即图2-3中的J1),电源接口使用外部稳定的5V电源供电模块供给,电路中接入了电源指示灯LED(即为图2-3中的D1),当接入电源时D1点亮。2.2 显示模块设计随着科技的发展,液晶显示的使用越来越方便,已被普遍的使用,所以本次设计采用液晶显示。液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点。由于液晶显示与驱动都集成在一个芯片上,因此使用起来很方便。数字钟要显示现在的日历时间包括年、月、日、星期、时、分、秒,在这里采用LCD1602液晶显示。2.2.1LCD1602显示器的结构(1)LCD1602主要技术参数显示容量为162个字符;芯片工作电压为4.55.5V;工作电流为2.0mA(5.0V);字符尺寸为2.954.35(WH)mm。(2)接口,LCD1602的引脚是很整齐的SIP单列直插封装,LCD1602采用标准的16引脚(带背光)接口,如表2-1所示:表2-1 LCD1602引脚接口编号符号引脚说明编号符号引脚说明1VSS电源地9D2Date I/O2VDD电源正极10D3Date I/O3VEE液晶显示偏压信号11D4Date I/O4RS数据/命令选择端(V/L)12D5Date I/O5R/W读/写选择端(H/L)13D6Date I/O6E使能信号14D7Date I/O7D0Date I/O15BLA背光源正极8D1Date I/O16BLK背光源负极 2组电源 一组是模块的电源 一组是背光板的电源 均为5V 供电。 VEE是调节对比度的引脚调节此脚上的电压可以改变黑白对比度 RS 是很多液晶上都有的引脚,是命令/数据选择引脚,该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。 RW 也是很多液晶上都有的引脚,是读写选择端,该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。 E 同样很多液晶模块有此引脚,通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化。 D0D7 8位双向并行总线,用来传送命令和数据。 BLA是背光源正极,BLK是背光源负极 。2.2.2LCD1602数据原理(1)LCD1602的基本操作时序操作时序永远使用是任何一片IC芯片的最主要的内容。LCD1602的基本操作时序如表2-2所示。表2-2 LCD1602的基本操作时序读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无在此,可以先不读出它的数据的状态或者数据本身。所以只需要看两个写时序:当要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。当要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。由此可看出写指令和写数据,差别仅仅在于RS的电平不一样而已。(2)LCD1602的指令码(命令码)此液晶上电的时候需要初始化典型的指令码是38H,也就是上电的时候需要 调用 void write_1602cmd(unsigned char com)这个函数写指令码,用法是write_1602cmd(0x38);执行完这个函数可以把液晶初始化成16x2 显示5x7 的点阵8 位总线接口。以下指令码用法相同。此液晶支持的指令码如表2-3所示。表2-3 液晶指令码 指令码功能00111000设置162显示,57点陈,8位数据接口第一行指令主要能完成的功能是控制液晶显示否,光标显示否,光标闪烁否。共有以8 种指令如表2-4所示。表2-4 第一行指令表0000100008H关液晶显示 光标不闪烁 不显示光标位置0000100109H关液晶显示 光标不闪烁 显示光标位置000010100AH关液晶显示 光标不闪烁 不显示光标位置000010110BH关液晶显示 光标不闪烁 显示光标位置000011000CH开液晶显示 光标不闪烁 不显示光标位置000011010DH开液晶显示 光标不闪烁 显示光标位置000011100EH开液晶显示 光标不闪烁 不显示光标位置000011110FH开液晶显示 光标不闪烁 显示光标位置第二行指令主要能完成的功能是写完字符光标或屏幕移动方向如表2-5所示。表2-5 第二行指令指令码功能80H+地址码(0-27H,40H-67H)设置数据地址指针2.2.3显示模块的数据连接LCD1602的D0D7的八位数据线分别接单片机AT89S51的P0.0P0.7。RS复位端接P2.0,读、写信号端接P2.1,EN使能端接P2.2,显示模块连接如图2-6:图2-6 显示模块的数据连接图LCD液晶极板驱动电压调节电阻的确定就稍微麻烦一点。在各数据线,控制线接好关通上电源的前提下在第3脚(VEE)和地之间接一个10K的电位器。3脚VEE为液晶显示器对比度调整端,接正电源时,对比度最弱,接地电源时,对比度最高,对比度过高时会产生“鬼影”, 调节电位器,当3脚电压高时为全亮,电压为0时为全暗(液晶全显示为黑块)。用电位器把屏幕从全暗刚好调到变亮。这时便可调试程序。2.3 键盘模块设计根据设计,要求能够调整时钟时间,键盘可作为控制部分。有以下三种方案:(1)直接加减:使用7按键,1按键切换闹钟,6按键对时分秒分别加减,控制方式相当简单,但需要较多按键与I/O口,功能一般,成本较高。(2)矩阵键盘:使用16按键对时分秒直接设置,能最为灵活的对数字钟进行设置,功能强大,但控制方式相对困难,成本较高,需要较多按键与I/O口。(3)换位加减:使用3按键,1键换位,另两键加减,控制方式相对简单,占用I/O口少,成本低廉,但功能一般。经过反复比较,在3种方案中选取了第3种换位加减,此方案成本低,功能已经足够满足数字钟的需要,而且硬件软件均比较简单。第3种方案为独立式键盘设计。独立式键盘是各按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响到其他输入线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断那个键被按下了。独立式键盘由一组相互独立的按键组成,这些按键直接与单片机的I/O口相连,即每个按键独占一条I/O口线。采用独立式按键具有编程简单,但占用单片机的硬件资源较多的特点,所以不适合在按键应用比较多的场合使用。由于本设计需要用的按键不是很多,故采用独立式按键。在设计时,由于单片机的I/O口足够用,同时为了保证按键够用,在此设计中选用了P30P37八个I/O口连接八个按键,外部要接上一个1K的排阻作为上拉电阻来驱动MOS输入,键盘与单片机接法如图2-7:图2-7键盘电路模块按键未被按下时,I/O口输入为高电平,按键按下闭合后,I/O口输入为低电平。由于按钮是机械触点,当机械触点断开、闭合时,会有抖动动。这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全能感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。前面讲到中断时曾有个问题,就是说按钮有时灵,有时不灵,其实就是这个原因,只按了一次按钮,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如所料,如果执行的次数是偶数次,那就不对了。为使CPU能正确地读出I/O口的状态,对每一次按钮只作一次响应,就必须考虑如何去除抖动,常用的去抖动的办法有两种:硬件办法和软件办法。单片机中常用软件法,因此,对于硬件办法这里不介绍。软件法其实很简单,就是在单片机获得I/O口为低的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长一些时间后再次检测I/O口,如果仍为低,说明按键的确按下了,这实际上是避开了按钮按下时的抖动时间。而在检测到按钮释放后(I/O口为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情况下,常常不对按钮释放的后沿进行处理,实践证明,也能满足一定的要求。当然,实际应用中,对按钮的要求也是千差万别,要根据不一样的需要来编制处理程序,但以上是消除键抖动的原则。2.4 报时电路模块设计根据设计要求,本次设计还要实现一个仿电台的报时扩展功能,这就需要在以上电路的基础上增加一个报时电路模块用来完成扩展功能。报时模块的设计比较简单,主要是使用三极管、蜂鸣器和一些电阻构成的电路模块。蜂鸣器的选择方案一:有源蜂鸣器 即通电就可以发声。方案二: 无源蜂鸣器 即要有驱动的音频电流才能发声。因为此次设计是基于51单片机驱动的,所以选择方案二无源蜂鸣器。 方案二: I/O 口定时翻转电平驱动蜂鸣器。使用I/O 口定时翻转电平 驱动蜂鸣器方式的设置比较简单,只需要对波形分析一下。由于驱动的信号刚好为周期500s,占空比为1/2duty 的方波,只需要每 250s 进行一次电平翻转,就可以得到驱动蜂鸣器的方波信号。接法如图2-8:图2-8 报时电路模块蜂鸣器使用的是PNP三极管进行驱动控制的,此蜂鸣器为电磁式有源蜂鸣器。三极管的发射极通过蜂鸣器接5V电源,基极是控制端,集电极接地,当单片机的P10输出低电平时,三极管导通,蜂鸣器发声。2.5 本章小结本章通过对设计思想的介绍,分别对主控制模块、显示模块、键盘模块、报时模块的设计原理进行分析阐述。对各模块所需的芯片、元器件进行介绍。3 软件设计部分整个系统的功能是由硬件电路和软件相互配合来实现的。当硬件基本定型后,软件的功能也就是基本定下来。单片机的工作就是单片机执行指令的过程。因此,软件的设计思路非常重要。本次设计用Keil编程软件进行软件设计,以及通过progisp软件对目标芯片进行目标代码烧录。Keil软件是目前最流行的开发MCS-51 系列单片机软件,近年来各仿真机厂商纷纷宣布全面支持Keil。Keil提供了包括C 编译器、宏汇编、连接器、库管理和仿真调试器在内的完整开发方案,通过集成开发环境将这些部分组合在一起。Keil支持汇编语言和C语言的程序设计,易学易用。3.1 软件总体框图主函数的设计系统软件主要包含一个主函数C文件、调用函数及头文件,reg52.h为系统库文件。在主程序中,先置初值初始化LCD1602,接着设置定时中断,在中断中实现秒自动计算以及分、时、日、月、年、星期的进位和显示。初始化完成后,进入while(1)循环调用键盘扫描函数和整点报时函数。按键扫描确定按键序号,执行相应键的功能,执行完按键功能或无按键按下后,调用显示当前时间的函数,显示当前时间。调用整点报时函数检查是否到整点,如果到整点就执行报时,否则就继续进行while(1)循环主程序流程图3-1如下:结束置初值初始化LCD1602设置T0定时中断开 始进入while(1)循环调用键盘扫描函数调用整点报时函数 图3-1 主函数流程图主函数程序如下:void main()ri=1;yue=1;week=1;nian=0;/置初值lcd_init(); /调用液晶屏初始化子函数init(); /调用定时计数器的设置子函数while(1) /无限循环下面的语句: keyscan(); /调用键盘扫描子函数 clockz(); /调用整点报时子函数3.2 LCD1602显示模块程序的编写为了取得较好的显示效果,本次设计选用了LCD1602为显示时分秒年月日和星期的显示器件。为了使LCD1602正确显示,需要为LCD1602提供一个显示驱动程序,在此程序中首先用语句#define yh 0x80 定义LCD1602第一行的初始位置(因为LCD1602字符地址首位D7恒定为1即100000000=80),通过语句#define er 0x80+0x40 定义了LCD1602第二行初始位置(因为第二行第一个字符位置地址是0x40),通过sbit rs=P20;sbit en=P22;sbit rw=P21; 定义RS复位端接P2.0,读、写信号端接P2.1,EN使能端接P2.2。在液晶写入指令函数write_1602com(uchar com)中确定P0口为数据接口接液晶的D0D7数据引脚。有关LCD1602显示的主要函数还有:(1)write_1602com(uchar com)是液晶写入指令函数。程序为:write_1602com(uchar com)rs=0;/数据/指令选择置为指令rw=0; /读写选择置为写P0=com;/送入数据delay(1);en=1;/拉高使能端,为制造有效的下降沿做准备delay(1);en=0;/en由高变低,产生下降沿,液晶执行命令当RS和RW均为低电平时,液晶显示器写入指令。(2)write_1602dat(uchar dat)是液晶写入数据函数。程序为:write_1602dat(uchar dat)rs=1;/数据/指令选择置为数据rw=0; /读写选择置为写P0=dat;/送入数据delay(1);en=1; /en置高电平,为制造下降沿做准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令当RS为高电平RW为低电平时,液晶显示器写入数据。(3)lcd_init() 液晶初始化函数。程序为:lcd_init()write_1602com(0x38);/设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);/开显示不显示光标write_1602com(0x06);/整屏不移动,光标自动右移write_1602com(0x01);/清显示write_1602com(yh+1);/日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a14;a+)write_1602dat(tab1a);/向液晶屏写日历显示的固定符号部分/delay(3);write_1602com(er+2);/时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a8;a+)write_1602dat(tab2a);/写显示时间固定符号,两个冒号/delay(3);(4)时分秒显示子函数void write_sfm(uchar add,uchar dat) 向LCD写时分秒,有显

温馨提示

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

评论

0/150

提交评论