LCD显示的定时闹钟_第1页
LCD显示的定时闹钟_第2页
LCD显示的定时闹钟_第3页
LCD显示的定时闹钟_第4页
LCD显示的定时闹钟_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、西南科技大学单片机原理及接口技术课程设计报告课题名称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.实

2、物图.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

3、的状态设置,设置为on时连续三次发出“哗”的一声,设置为off发出“哗”的一声。 设置当前时间或闹铃时间如下。 (1) k1时调整。 (2) k2分调整。 (3) k3设置完成。 (4) k4闹铃时间到时,发出一阵声响,按下本键可以停止声响。本项目的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。2. 设计方案2.1原理本lcd定时闹钟,是以单片机及外围接口电路为核心硬件,辅以其他外围硬件电路,用汇编语言设计的程序来实现的。根据c51单片机的外围接口特点扩展相应的硬件电路,然后根据单片机的指令设计出数字钟相应的软件,再利用软件执

4、行一定的程序来实现数字钟的功能。由于采用集成芯片性的单片机来制作电子钟,这样设计制作简单而且功能多、精确度高,也可方便扩充其他功能,实现也十分简单。本设计是利用at89c51单片机为主控芯片,由lcd、晶振、电阻、电容、发光二极管、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和控制的数字定时闹钟2.2系统总框图2.3原理及工作过程说明(1)定时闹钟的基本功能如下 :(a)启动仿真软件,使用lcd液晶显示器来显示现在的时间 。(b)程序执行之后显示“00:00”,并且led闪烁,表示开始已经计时。(c)由led闪动来做秒计数表示。(d)当设定的闹钟时间到达后,闹铃开始发出声音。并且继电器

5、导通。(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字节闪烁可编程可擦

6、除只读存储器(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能够用于外部程序

7、数据存储器,它可以被定义为数据/地址的第八位。在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口的管脚被

8、外部拉低,将输出电流。这是由于内部上拉的缘故。当p2口用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89c51的一些特殊功能口,如下所示:p3口管脚 备选功

9、能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存储器编程时,此引脚作为编程脉冲输入

10、端。 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为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个1

11、0k的电位器调整对比度。第4脚:rs为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:r/w为读写信号线,高电平时进行读操作,低电平时进行写操作。第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。第714脚:d0d7,数据总线,与单片机的数据总线相连,三态。第15脚:背光板电源,通常+5v。第16脚:背光板电源地。3.3 其他重要元件3.3.1独立式键盘的接口电路在单片机应用系统中,有时只需要几个简单的按键向系统输入信息。这时,可将每个按键接在一根i/o接口线上,这种方式的连接称为独立式键盘。每个独立式按键单独占有一根 i/o接口线,每根i/o接口线的工

12、作状态不 会影响到其他 i/o接口线 。这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根i/o接口线,i/o接口线浪费较大。故只在按键数量不多时采用这种按键电路。在此电路中,按键输入都采用低电平有效。上拉电阻保证了按键断开时,i/o接口线有确定的高电平。当i/o接口内部有上拉电阻时,外电路可以不配置上拉电阻。3.3.2电磁继电器电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随

13、之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。具有动作快、工作稳定、使用寿命长、体积小等优点。3.3.2 pnp三极管 pnp型三极管由2块p型半导体中间夹着1块n型半导体所组成,电流从发射极e流入的三极管.pnp型三极管发射极电位最高,集电极电位最低,ube0.4.软件设计4.1系统流程图4.2 源代码#include #define uint unsigned int#define uchar unsigned charuchar code table1=now time; uchar code

14、 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,a

15、shi,afen;/延时函数void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=100;y0;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);lcde

16、n=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;num8;num+)write_date(table1num);delay(5); write_com(0x80+0x4

17、0+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;num10;num+)write_date(table2num);delay(5);write_com(0x80+0x40+4);write_date(:);delay(5);write_sfm(2,ashi);write_com(

18、0x80+0x40+2);write_sfm(5,afen);write_com(0x80+0x40+5);/设置当前时间void setnowtime() write_com(0x80+2);for(num=0;num8;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)

19、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=

20、0;num9;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

21、=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()

22、;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); writ

23、e_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

24、();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,fe

温馨提示

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

评论

0/150

提交评论