欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    LCD显示的定时闹钟.doc

    • 资源ID:4146528       资源大小:2.11MB        全文页数:26页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    LCD显示的定时闹钟.doc

    西南科技大学单片机原理及接口技术课程设计报告课题名称LCD显示的定时闹钟姓 名刘XX学 号2011XXXX学 院制造科学与工程学院班 级机械11XX指导教师张XX 2014年 06 月 12 日 目录 1.设计要求.1 2.设计方案.1 2.1原理12.2系统总框图22.3原理及工作过程说明23.元器件介绍23.1AT89C5123.2 1602LCD液晶显示器53.3 其他重要元件64.软件设计84.1系统流程图84.2 源代码105.系统仿真205.1系统总图205.2设定时间时LCD显示20 5.3设定闹钟时LCD显示.215.4显示闹钟时LCD显示215.5待机时LCD显示21 6.实物图.227.实验总结及心得体会23 8.参考资料.241.设计要求 使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。定时闹钟的基本功能如下:n 显示格式为“时时:分分”。n 由LED闪动来做秒计数表示。n 一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。n 程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00”, 按下操作键K1K4动作如下: (1) K1设置现在的时间。 (2) K2显示闹钟设置的时间。 (3) K3设置闹铃的时间。 (4) K4闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。 设置当前时间或闹铃时间如下。 (1) K1时调整。 (2) K2分调整。 (3) K3设置完成。 (4) K4闹铃时间到时,发出一阵声响,按下本键可以停止声响。本项目的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。2. 设计方案2.1原理本LCD定时闹钟,是以单片机及外围接口电路为核心硬件,辅以其他外围硬件电路,用汇编语言设计的程序来实现的。根据C51单片机的外围接口特点扩展相应的硬件电路,然后根据单片机的指令设计出数字钟相应的软件,再利用软件执行一定的程序来实现数字钟的功能。由于采用集成芯片性的单片机来制作电子钟,这样设计制作简单而且功能多、精确度高,也可方便扩充其他功能,实现也十分简单。本设计是利用AT89C51单片机为主控芯片,由LCD、晶振、电阻、电容、发光二极管、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和控制的数字定时闹钟2.2系统总框图2.3原理及工作过程说明(1)定时闹钟的基本功能如下 :(a)启动仿真软件,使用LCD液晶显示器来显示现在的时间 。(b)程序执行之后显示“00:00”,并且LED闪烁,表示开始已经计时。(c)由LED闪动来做秒计数表示。(d)当设定的闹钟时间到达后,闹铃开始发出声音。并且继电器导通。(2)按键功能如下 :按键K1设置现在的时间和时调整;按键K2显示闹钟设置的时间和分调整;按键K3设置闹铃的时间和设置完成;按键K4闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声和闹钟时间到时,发出一阵声响,按下本键可以停止声响。(3)调整计时器时间如下 :按下K1键,然后按K1调整小时,K2调整分钟,按下K3表示时间设置完成。(4)调整闹钟时间设置如下 :按下K3键,然后按K1调整小时,K2调整分钟,按下K3表示闹钟设置完成。3.元器件介绍3.1AT89C51本设计的核心硬件就是89C51芯片,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.1引脚图3.1.2引脚功能介绍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口管脚 备选功能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:ALE为CPU访问外部程序存储器或外部数据存储器提供一个地址锁存信号,将低8位地址锁存在片外的地址锁存器中。PROG为该引脚第二功能,在对片内FLASH存储器编程时,此引脚作为编程脉冲输入端。 PSEN:片外程序存储器的读选通信号。低电平有效。 EA/VPP:当EA为低电平时,只读取外部的程序存储器中的内容;当EA为高电平时,在PC值不超过0FFFH时,单片机读片内程序存储器的程序,但PC超过时,自动转向片外60KB程序存储器中的程序。 XTAL1:片内振荡器反向放大器和时钟发生器电路的输入端。 XTAL2:片内振荡器反向放大器的输出端。3.2 1602LCD液晶显示器3.2.1引脚图3.2.2引脚功能第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7,数据总线,与单片机的数据总线相连,三态。第15脚:背光板电源,通常+5V。第16脚:背光板电源地。3.3 其他重要元件3.3.1独立式键盘的接口电路在单片机应用系统中,有时只需要几个简单的按键向系统输入信息。这时,可将每个按键接在一根I/O接口线上,这种方式的连接称为独立式键盘。每个独立式按键单独占有一根 I/O接口线,每根I/O接口线的工作状态不 会影响到其他 I/O接口线 。这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O接口线,I/O接口线浪费较大。故只在按键数量不多时采用这种按键电路。在此电路中,按键输入都采用低电平有效。上拉电阻保证了按键断开时,I/O接口线有确定的高电平。当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻。3.3.2电磁继电器电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。具有动作快、工作稳定、使用寿命长、体积小等优点。3.3.2 PNP三极管 PNP型三极管由2块P型半导体中间夹着1块N型半导体所组成,电流从发射极E流入的三极管.PNP型三极管发射极电位最高,集电极电位最低,UBE<0.4.软件设计4.1系统流程图4.2 源代码#include <reg52.h>#define uint unsigned int#define uchar unsigned charuchar code table1="NOW TIME" uchar code table2="SHOW ALRAM" uchar code table3="SET TIME" uchar code table4="SET ALRAM"sbit lcden=P34;sbit lcdrs=P35;sbit lcdrw=P36;sbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit be=P25;sbit dula=P26;sbit wala=P27;sbit jdq=P23;sbit LED =P24;uchar flag,num,count,k1num,k2num,k3num,k4num;char miao,shi,fen,ashi,afen;/延时函数void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=100;y>0;y-);/蜂鸣器子程序void di()be=0;delay(100);be=1;/写命令函数void write_com(uchar com)lcdrs=0;lcdrw=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;/写数据函数void write_date(uchar date)lcdrs=1;lcdrw=0;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;/写时间函数void write_sfm(uchar add,uchar date)uchar dateshi,datege;dateshi=date/10;datege=date%10;write_com(0x80+0x40+add);write_date(0x30+dateshi);write_date(0x30+datege); /显示时间函数void TimeInit() write_com(0x01);write_com(0x80+2);for(num=0;num<8;num+)write_date(table1num);delay(5); write_com(0x80+0x40+4);write_date(':');delay(5);write_sfm(2,shi);write_com(0x80+0x40+2);write_sfm(5,fen);write_com(0x80+0x40+5); /显示闹钟函数void DisplayAlarmTime()write_com(0x01);write_com(0x80+2); for(num=0;num<10;num+)write_date(table2num);delay(5);write_com(0x80+0x40+4);write_date(':');delay(5);write_sfm(2,ashi);write_com(0x80+0x40+2);write_sfm(5,afen);write_com(0x80+0x40+5);/设置当前时间void SetNowTime() write_com(0x80+2);for(num=0;num<8;num+)write_date(table3num);delay(5);write_com(0x80+0x40+4);write_date(':'); delay(5);write_sfm(2,shi);write_com(0x80+0x40+2);write_sfm(5,fen);write_com(0x80+0x40+5);if(K1=0)delay(5);if(K1=0)while(!K1);di();shi+;if(shi=24)shi=0; write_sfm(2,shi);write_com(0x80+0x40+2);if(K2=0)delay(5);if(K2=0)while(!K2);di();fen+;if(fen=60)fen=0;write_sfm(5,fen);write_com(0x80+0x40+5);if(K3=0)delay(5);if(K3=0)while(!K3);di();k1num=0;TR0=1;TimeInit(); /设置闹钟时间void SetAlarmTime() write_com(0x80+2);for(num=0;num<9;num+)write_date(table4num);delay(5);write_com(0x80+0x40+4);write_date(':'); delay(5);write_sfm(2,ashi);write_com(0x80+0x40+2);write_sfm(5,afen);write_com(0x80+0x40+5);if(K1=0)delay(5);if(K1=0)while(!K1);di();ashi+;if(ashi=24)ashi=0;write_sfm(2,ashi);write_com(0x80+0x40+2);if(K2=0)delay(5);if(K2=0)while(!K2);di();afen+;if(afen=60)afen=0;write_sfm(5,afen);write_com(0x80+0x40+5);if(K3=0)delay(5);if(K3=0)while(!K3);di();k3num=0;EA=1;flag=1;TimeInit();/键盘扫描函数void keyscan()if(K1=0)delay(5);if(K1=0)TR0=0;while(!K1);di();k1num+;if(k1num!=0)SetNowTime();elseif(K2=0)delay(5);if(K2=0)while(!K2);di();k2num+;if(k2num=1)DisplayAlarmTime();k2num=2;if(k2num=3)k2num=0;EA=1;TimeInit();elseif(K3=0)delay(5);if(K3=0)while(!K3);di();k3num+;if(k3num=1)write_com(0x80+0x40+2); write_date(' ');delay(100); write_com(0x80+0x40+3); write_date(' '); delay(100); write_com(0x80+0x40+5); write_date(' '); delay(100); write_com(0x80+0x40+6); write_date(' '); SetAlarmTime();elseif(K4=0)delay(5);if(K4=0)while(!K4);di();k4num+;if(k4num=1)di();k4num=2;flag=0;if(k4num=3)k4num=0;di();delay(500);di();delay(500);di();flag=1; if(flag=1&&shi=ashi&&fen=afen)jdq=0;be=be;delay(500);if(K4=0&&flag=1)delay(5);if(K4=0&&flag=1)while(!K4);di();flag=0;k4num=0;/lcd1602初始化void init()lcden=0;shi=00;fen=00;miao=0;ashi=12;afen=00;count=0;k1num=0;dula=0;wala=0; /write_com(0x38);/设置16X2显示,5X7点阵,8位数据接口write_com(0x08);write_com(0x01); /显示清0,数据指针清0write_com(0x06);/写一个字符后地址指针加1write_com(0x0c);/设置开显示,不显示光标 TimeInit();TMOD=0x01;TH0=0x4c;TL0=0x00;EA=1;ET0=1;TR0=1;/主函数void main()init();write_com(0x80);while(1)keyscan();/中断服务子程序void timer0() interrupt 1TH0=0x4c;TL0=0x00;count+;LED=0;if(count=20)count=0;miao+;LED=LED;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;write_sfm(2,shi);write_sfm(5,fen);5.系统仿真5.1系统总图5.2设定时间时LCD显示5.3设定闹钟时LCD显示5.4显示闹钟时LCD显示5.5待机时LCD显示6. 实物图7.实验总结及心得体会这次课程设计历时一周,在这一周的课程设计中,感受很多,收获很很多,主要在一下几个方面:(1)由于时间紧迫,因此指导老师布置课题后,我就开始制定整个课程设计的时间安排表。在计划表中,我确定了整个课程设计的步骤和时间安排,这也使我在接下来的设计过程中更有效率,忙而不乱。(2)在设计过程中,需要用到keil和protues这两款软件进行调试和仿真,通过这次课程设计,我从不了解这两款软件到对他们的基本功能有了掌握,这对我以后对这两种软件的使用有很大帮助。(3)课程设计过程中,程序的调试和仿真并不是很顺利,但是经过多次调试和修改后,程序满足了设计要求,后来经过不断的改进,使程序有条理,简洁易读。(4)在设计过程中,遇到了自己无法解决的问题,我会查阅相关的资料和同学们互相讨论,在这个过程中不仅使问题得到解决,有时还会产生一些新的想法和灵感,更重要的是,在讨论的过程中,我学会了团队协作,知道了团队精神的重要性,这对我以后的工作有着重要的意义。(5)虽然这是个看似简单的课程设计,但是它包含了在设计过程中的完整步骤,我们也要对它重视,以严谨的态度来对待,熟悉产品的开发和生产过程。当进行多次尝试仍然没有得到预期的效果时,不能失去信心,更不能轻易放弃。总而言之,这一次的课设对我的帮助很大,是我真正的认识到了理论与实际的区别,这将成为我学习目标和动力,更进一步的挖掘自己的能力,是自己获得进一步的提高。8.参考资料1单片机原理及应用(第二版) 张毅刚 彭喜元 彭宇 高等教育出版社2单片机原理及应用技术 余发山 中国矿业大学出版社3单片机编程与入门 刘和平 重庆大学出版社4单片机原理及接口技术(C51编程)张毅刚 彭宇 赵光权 人民邮电出版社551单片机学习视频教程:

    注意事项

    本文(LCD显示的定时闹钟.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开