1、目录摘要I2 系统设计32.1 设计要求 32.2总设计方案 32.2.1 系统实现43系统硬件电路设计43.1时钟电路设计53.2 LED显示模块的设计53.3LCD显示模块的设计63.3按键模块的设计83.4复位电路设计93.5闹铃的设计93.6 发光二极管闪烁电路设计104 软件设计104.1.0主循环及其程序流程图104.1.1时间走时模块114.1.2时间设置模块124.1.3闹钟设置模块134.1.4闹钟响应模块134.1.5LCD闹钟响应模块144.1.6 LCD显示模块15摘要这个设计时基于AT89S52设计的电子时钟,通过对硬件资源和软件的编写,初步了解设计的思路以及实现过程
2、。电子闹钟是以AT89S52作为核心控制器,通过硬件电路的制作及软件程序的编制,设计制作了一种利用四位LED数码管动态扫描和LCD1602液晶显示时间的电子闹钟系统。整个电子闹钟系统主要由时间显示模块、时间设置模块、闹铃查询及设置模块、闹钟响应模块功能模块。可实现时间显示、时间调整、闹钟设置和闹铃功能,具有制作简单、调整方便、稳定性好、便于扩展等特点。电子时钟还通过对比实际的数字电子时钟,来校正和调整,验证系统可以达到实际数字电子时钟允许的误差范围内。关键词:单片机AT89S52 电子闹钟 LED动态显示 LCD1602Abstract这个设计时基于AT89S52设计的电子时钟,通过对硬件资源
3、和软件的编写,初步了解设计的思路以及实现过程。电子闹钟是以AT89S52作为核心控制器,通过硬件电路的制作及软件程序的编制,设计制作了一种利用四位LED数码管动态扫描和LCD1602液晶显示时间的电子闹钟系统。整个电子闹钟系统主要由时间显示模块、时间设置模块、闹铃查询及设置模块、闹钟响应模块功能模块。可实现时间显示、时间调整、闹钟设置和闹铃功能,具有制作简单、调整方便、稳定性好、便于扩展等特点。电子时钟还通过对比实际的数字电子时钟,来校正和调整,验证系统可以达到实际数字电子时钟允许的误差范围内。AT89S52 electronic clock design based on this desi
4、gn, through the preparation of software and hardware, a preliminary understanding of design ideas and implementation process. The electronic alarm clock is based on AT89S52 as the core controller, through the preparation of the production of the hardware circuits and software programs, designed usin
5、g a four LED digital tube dynamic scanning and LCD1602 LCD electronic clock system time. The whole electronic alarm system is mainly composed of a time display module, time setting module, alarm module, query and set the alarm response module. Can realize time display, time adjustment, alarm and ala
6、rm functions, has the characteristic of easy making, easy adjustment, good stability, easy to expand etc. Digital electronic clock electronic clock also by comparing the actual, to correct and adjust, verification system can achieve the actual digital electronic clock error range permitted.关键词:单片机AT
7、89S52 电子闹钟 LED动态显示 LCD液晶显示Keywords: AT89S52 electronic clock LED LCD1602161.引言本文主要介绍用单片机内部的定时/计数器来实现电子闹钟的方法,本设计由单片机AT89S52芯片和LED数码管及LCD1602液晶为核心,辅以必要的电路,构成了一个单片机电子闹钟。实现以24小时制,同时可以设置闹钟,闹钟到的时候,会播放音乐,由于课程设计要求,这个设计的秒没有用数码管显示,用LED灯二秒闪烁一次以替代,分和时在数码管显示。另外,LCD1602显示拓展了年月日时分秒的显示。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉
8、、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面。单片机就是在半导体硅片上集成了CPU、存储器和各种接口,这样一块集成电路芯片具有一台计算机的属性,主要应用于测控领域。电子闹钟是现代电子技术在时钟领域的具体实现方式。如今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便.2 系统设计2.1 设计要求 本系统设计是基于单片机AT89S52的多功能电子闹钟。1 能实现走时功能,24小时制。 2可设定闹钟时间
9、,定时时间到蜂鸣器响,led闪烁,lcd显示ring。3用四位共阳极LED数码管和LCD1602来显示时间。4二个发光二极管作为秒指示,2S闪烁一次。2.2总设计方案本系统的功能设计目标应该包括以下几个方面:时间走时模块及时间设置模块、闹钟设置模块、闹钟(lcd)响应模块,按键功能模块及数码管动态(lcd)显示模块和蜂鸣器电路模块。电子时钟主要有单片机最小系统,按键,显示电路等。单片机AT89S52按键电路电源电路显示电路复位电路复位电缆蜂鸣器电路时钟晶振 图2-0 系统硬件电路框图2.2.1 系统实现 本设计使用单片机AT89S52作为核心控制器,LED数码管和LCD1602显示时间,按键输
10、入修改值再加上相应的软件设计可实现上电复位、切换模块、调整时间和调整状态等要求及调整相应闹钟、时间和蜂鸣器响。3系统硬件电路设计AT89S52简介 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 系统可编程Flash存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。AT89S52引脚图如下:图3-0 AT89S52引脚图3.1时钟电路设计 振荡器和时
11、钟电路用于产生单片机正常工作时所需要的时钟信号。AT89S52单片机采用CMOS工艺,内部包含一个振荡器,可以用于CPU 的时钟源;也允许采用外部振荡器,由外部振荡器产生的时钟信号来供内部CPU运行使用。3本设计采用内部时钟模式,需在XTAL1和XTAL2端口加晶振电路,单片机工作速度也是由晶振电路决定的。在晶振电路中,电路中电容C1和C2对振荡频率有微调作用,通常的取值范围3010pF;石英晶体选择12MHz。3.2 LED显示模块的设计LED显示有静态扫描和动态扫描两种,由于本系统要显示四位LED,所以选择的动态扫描方式。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每
12、隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。由于AT89S52单片机的I/O口的带载能力不强,故本系统选用共阳型的八段LED数码管。P1口传送的是显示段码,P2.0P2.3口传送的是显示位码。P2.4用于控制两个LED灯的选亮。动态扫描周期的确定,所谓动态驱动实际就是分时点亮不同位置的数码管,由于人眼的惰性,当亮度熄灭的时间小于1/25秒时,给人们感觉是亮度没变。每段LED正常显示是的电流为2mA20mA,此
13、处每段LED接4700的电阻,则每段LED的电流为数码管的电流为(5-1.8)/470=6.8mA,满足要求。5 电路如图3-1所示:图3-1 数码管显示电路3.3LCD显示模块的设计LCD1602简介LCD1602是一种用5x7点阵图形来显示字符的液晶显示器模块,它显示的容量为2行16个字共32个字符。它由若干个57或者511点阵字符位组成,每个点阵字符位都可以显示一个字符。模块采用数字式接口,能够方便地与单片机等控制类芯片进行通信。由于其具有体积小、重量轻、显示质量高、功耗低等诸多优点而被广泛用于智能化仪器仪表的显示器件。 2.4.1 LCD1602引脚及功能 LCD1602的引脚如图所示
14、: (1) 1号脚 GND:地电源。 (2) 2号脚 Vcc:接+5V电源。 (3) 3号脚 VL:液晶显示器对比度调整端。接+5V电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的精密电位器调整对比度,一般对比电压为0.7V左右。 (4) 4号脚 RS:寄存器选择。高电平时选择数据寄存器,否则选择指令寄存器。 (5) 5号脚 RW:读写信号线。高电平时进行读操作,低电平时进行写操作。当RS和 RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读出忙信号,当RS为高电平RW为低电平时可以写入数据。 (6) 6号脚 E:使能端
15、。当E端由高电平跳变成低电平时,液晶模块执行命令。 (7) 714号脚D1D8:8位双向数据线。 (8) 15号脚BLA:背光源正极; (9) 16号脚BLK:背光源负极。 指令1:清显示,指令码01H,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H。 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移。S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标。 B:控制光标是否闪烁,高电平闪烁,低电平
16、不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线。N:低电平时为单行显示,高电平时双行显示。F:低电平时显示5X7的点阵字符,高电平时显示5x10的点阵字符(有些模块是 DL:高电平时为8位总线,低电平时为4位总线)。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。 指令9:读出忙信号和光标地址。BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。 指令10:写数据。 指令11:读数据。 液晶显示模块是一个慢显示
17、器件,所以在执行每条指令之前一定要确认模块的忙标志位是不是为低电平,是低电平则表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。下表为 LCD1602的内部显示地址。(由于置地址发生存储器地址指令8D8引脚要置1,所以送地址时候应该0x80+Address)3.3按键模块的设计 独立式按键是最简单的键盘输入设计,每个键盘单独占用一个I/O口,当按下和释放按键时,输入到I/O口的电平是不一样的。按照端口电平的不同判断是否有按键按下,并执行相应的程序段。本设计中将4个按键分别接P3.1和P2.0P2.3口。设计中按键解释:K0:实现各模块的转换;K1:实验时
18、间设置和闹钟设置时设置的位选;K2:相应数值加一;K3: 打开和关闭lcd1602液晶显示功能;电路如下图: 图3-2 按键部分原理图3.4复位电路设计在理论上复位电路的实质是一阶充放电电路,系统上电时该电路提供有效的复位信号RST(高电平)直至系统电源稳定后撤销复位信号(低电平)。7理论上说,AT89S52单片机复位引脚只要外加2个机器周期的有效信号即可复位,即只要保证tRC2M(机器周期)。由于本系统所用的晶振为12M,则单片机的一个机器周期为1uS,所以可选电解电容为10uf,点电阻为10K,满足要求。单片机运行期间,还可以利用按键完成复位。由于设计的是时钟,故没有设置按键复位,即上电时
19、,时钟就会自动上电复位。 3.5闹铃的设计本块实验板,是通过无源蜂鸣器其基本工资原理: 无源蜂鸣器是靠压电效应的原理来发声的,压电材料,一般常见的是各种压电陶瓷. 这种材料的特别之处在于,当电压作用于压电材料时,就会随电压和频率的变化产生机械变形.另一方面,当振动压电陶瓷时,则会产生电荷.就是说这种材料能把机械变形和电荷相互转化,压电式蜂鸣器里面的起振片,就是一种压电陶瓷.如上所述,要让它振动,除了压电陶瓷本身,还需要适当大小和频率变化的电压作用于压电陶瓷.压电式(有源)蜂鸣器内部带有多谐振荡器,可以产生 1.52.5kHZ 的电压信号. 由此压电式蜂鸣器才能发声。电路原理图如下: 图3-3
20、闹铃电路3.6 发光二极管闪烁电路设计 本系统当时间为走时时间时,两个发光二极管闪烁。在两秒秒钟闪烁一次,(一秒亮一秒灭)代表时钟的秒表;电路如下:图3-4 发光二极管闪烁电路4 软件设计4.1.0主循环及其程序流程图主程序流程图:开始初始化5ms?按键扫描数码管送显走时根据msta进行散转 0 1 2 3 4 5 6LCD闹钟响应按键闹钟判断闹钟响应闹钟设置时间设置按键闹钟判断LCD显示(液晶显示模块是一个慢显示器件,所以在case4设一个变量,每200)图4-0 主循环流程图4.1.1时间走时模块上电后,软件进入时间走时模块,LED数码管示0238,LCD显示“1105000538”和“b
21、y:zpy”,发光二极管LED开始2S闪烁1次,并且开始走时。K0键实现case 0到case 3的循环切换。按下K3对lcd进行开关。闹钟开启状态下,当到达闹时会跳到闹铃相应模块,10s后或者按下K0返回。相对应的程序流程图:走时调用走时子程序走时msta=0K3按下?o?K0按下?打开1cd切换到时间设置闹钟间到转到闹钟响应模块 返回4.1.2时间设置模块当系统工作于时间设置模块:按下K0则切换到闹钟设置模块;按下K1可以对相应闪烁的时间单元快加1;按下K2可以对相应闪烁的时间单元加1。相对应的程序流程图:走时msta=1K2按下?K1按下?K0按下?对闪烁的单元快加1切换调整时和分切换闹
22、钟设置模块将所设定的值赋予走时函数的min,hour 返回4.1.3闹钟设置模块当系统工作于闹钟设置模块:按下K0键则返回case 0模块;按下K1键和按下K2键可以对闹钟进行设置;相对应的程序流程图: 走时msta=2K0按下?K1按下?K2按下?返回case0,闹钟标志位置一对闪烁的单元快加1切换到调整时和分返回 4.1.4闹钟响应模块当系统工作于闹钟响应模块:相对应的程序流程图:走时Msta=3闹钟响应标志位为1蜂鸣器电平取反Ps_num=60Ps_num=0;Ps_300ms=ps_300msynPs_300ms?Cs0=cs1=cs2=cs3=1yLcd_num=200Lcd_num
23、=0;case=6ny nK0?Msta=0;o=0;write_com(0x01);返回4.1.5LCD闹钟响应模块当系统工作于lcd闹钟响应模块:相对应的程序流程图:走时msta=6lcd送显子函数e送“ring”显示,num+;Num=10?Msta=3;num=0;msta=4;o=0;Write_com(0x01)返回4.1.6 LCD显示模块由于闹钟响应和lcd闹钟响应已经涉及到lcd显示模块的流程原理,此处不再提及。心得体会通过这次的课程设计,加强了我们动手、思考和解决问题的能力。在设计过程中让我进一步深刻的学习各种软件的利用以及各种软件给我们带来的便利。该数字钟通过单片机AT8
24、9C52做CPU进行总的控制,利用数码管动态显示和LCD1602进行液晶显示的一个简易的数字钟。LCD1602能够对年、月、日、周、日、时、分、秒进行计时及显示。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,通过资料的查找,老师和同学的帮助终于找出了问题并且解决,在此表示感谢。