LCD电子钟的设计单片机课程设计Word格式文档下载.docx

上传人:b****3 文档编号:7854450 上传时间:2023-05-09 格式:DOCX 页数:20 大小:1.46MB
下载 相关 举报
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第1页
第1页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第2页
第2页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第3页
第3页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第4页
第4页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第5页
第5页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第6页
第6页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第7页
第7页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第8页
第8页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第9页
第9页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第10页
第10页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第11页
第11页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第12页
第12页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第13页
第13页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第14页
第14页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第15页
第15页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第16页
第16页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第17页
第17页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第18页
第18页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第19页
第19页 / 共20页
LCD电子钟的设计单片机课程设计Word格式文档下载.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

LCD电子钟的设计单片机课程设计Word格式文档下载.docx

《LCD电子钟的设计单片机课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《LCD电子钟的设计单片机课程设计Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。

LCD电子钟的设计单片机课程设计Word格式文档下载.docx

DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。

可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31×

8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

1.4本设计任务

本系统以单片机芯片为核心部件,利用合理的程序控制,在液晶显示屏上实现各个功能并且显示等功能,使其显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

第2章总体方案论证与设计

本设计采用AT89C51单片机作为本系统的控制模块。

单片机可把DS1302中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。

以LCD液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化。

在显示电路中,主要靠按键来实现各种显示要求的选择与切换。

下面对各模块的设计逐一进行论证比较。

2.1显示部分

显示部分是本次设计的重要部分,一般有以下两种方案:

方案一:

采用LED显示,分静态显示和动态显示。

对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,且可靠性也较低。

而对于动态显示方式,虽可以避免静态显示的问题,但设计上如果处理不当,易造成亮度低,有闪烁等问题。

方案二:

采用LCD显示。

LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。

鉴于上述原因,我们采用方案二。

2.2数字时钟

数字时钟是本设计的核心的部分。

根据需要可采用以下两种方案实现:

方案完全用软件实现数字时钟。

原理为:

在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。

利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;

若秒值达到60,则将其清零,并将相应的分字节值加1;

若分值达到60,则清零分字节,并将时字节值加1;

若时值达到24,则将时字节清零。

该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。

而且由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。

方案采用Dallas公司的专用时钟芯片DS1302。

该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。

为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。

当电网电压不足或突然掉电时,可使系统自动转换到内部锂电池供电系统。

而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。

基于时钟芯片的上述优点,本设计采用方案二完成数字时钟的功能。

2.3总体硬件组成框图

本系统的电路系统框图如图2-1所示。

AT89C51单片机对DS1302写入控制字并读取相应的数据,继而控制LCD1602作出对应的显示。

AT89C51

主控模块

图2-1总体硬件组成框图

第3章系统硬件设计

3.1AT89C51单片机最小系统

最小系统包括晶体振荡电路、复位开关和电源部分。

图3-1为AT89C51单片机的最小系统。

图3-1最小系统电路

3.2时钟模块

时钟模块采用DS1302芯片,DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:

RST复位、I/O数据线、SCLK串行时钟。

时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。

DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW,其接线电路如图3-2。

图3-2时钟电路

3.3LCD液晶显示模块

LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作时电流仅2.0mA/5.0V。

通过编程实现自动关闭屏幕能够更有效的降低功耗。

LCD1602分两行显示,每行可显示多达16个字符。

LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制,并且还能利用空余的空间自定义字符。

其接线如图3-3。

图3-3LCD显示电路

3.4按键模块

它是整个系统中最简单的部分,根据功能要求,本系统共需四个按键:

进入设定、时设定、分设定、确认设式键采用独立式按键。

如图3-4所示。

图3-4按键电路

3.5整体电路

系统整体电路如图3-5所示:

图3-5系统总体电路图

第4章系统的软件设计

4.1主程序设计

主流程图说明:

程序开始运行时先初始化时钟控制器件DS1302、显示器件LCD1602,然后打开LCD1602,再读取时间,把读取的数据送入LCD1602进行显示,时间进行调整。

其主程序流程如图4-1所示。

图4-1主程序流程图

4.2时间设定程序流程

时间设定流程图说明:

程序开始后初始化DS1302,然后从DS1302中读出数据,放入RAM中,然后调用显示子程序,使LCD1602相应的模块显示温度,其间也可对温度进行设置,设置完成后把数据重新送入RAM中,再由LCD1602相应模块显示,整个过程由此反复进行。

图4-2显示时间子程序流程

第5章系统调试与测试结果分析

5.1使用的仪器仪表

数字万用表、秒表、电源

5.2系统调试

根据系统设计方案,本系统的调试共分为三大部分:

硬件调试,软件调试和软硬件联调。

由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:

温度测量模块的调试,时钟模块的调试,LCD液晶显示模块的调试等,最后将各模块组合后进行整体测试。

5.2.1硬件调试

对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。

5.2.2软件调试

软件调试采用单片机仿真器WAVE6000L及微机,将编好的程序进行调试,主要是检查语法错误。

5.2.3硬件软件联调

将调试好的硬件和软件进行联调,主要调试系统的实现功能。

5.3测试结果

此次系统设计结果较好,能动态显示实时时钟的时、分、秒,数据显示,能够实现时钟的定时,并且具有调整时间的功能。

过了一段时间,仿真显示如图5-2所示。

图5-2

(1)

图5-2

(2)

设计心得体会

在这个一个星期的时间里我学到了很多宝贵的知识和单片编程的经验,在这次课程设计过程中我遇到了许多困难和问题,其中一些我通过自己上网找资料和询问同学的方式找到了解决的方法,就是在这个过程中我学会了许多书本上学不到的东西,还有一些是我自己解决不了的问题,这些问题都是需要靠我以后的经验积累和不断的学习才能得到解决的,从这次课程设计中我体会到了自己用汗水换来的成果的喜悦。

我在刚开始设计这个东西时是一头雾水,没有一个方向和目标,后来从网上找到一些有关的资料通过相似的题目我一步一步的完成我自己的课程设计的功能,尤其是在编写程序的时候,每一个模块都要经过非常仔细的考虑后在写,因为程序的运行过程中需要考虑各个模块之间的影响和互助,有一些模块是我们没有学习过的我从网上找到相似的然后经过修改变成我能用的,在这之间我锻炼了我的变成能力。

电路的设计相对编程来说要容易一些,总体来说电路图都是大同小异的,只是他们中的分支做一些修改来。

最重要的学习就是一个课程设计的过程的整体思路,先做什么后做什么最后来一个总结经验的过程,这给我以后的设计过程打下了基础,这次设计中,我深刻体会到专研的重要性,一个看似简单的系统,却需要着大量的知识储备和很强的专研精神,理论和实践往往是两回事,理论上很简单的事情在实际操作中往往会遇到很多意想不到的困难,学科的知识不光来自于书本知识,更来自于实践。

由于水平和经验的有限,系统可能仍存在一些缺点或者有更多更好的功能或方法可以加进去,望各位老师、同学指正。

参考文献

[1]求是科技.单片机典型模块设计实例导航.北京:

人民邮电出版社.2005.8

[2]徐淑华,程退安等.单片微型机原理及应用.哈尔滨:

哈尔滨工业大学出版社.2005.1

[3]孙余凯.精选实用电子电路260例.北京:

电子工业出版社.2007.6

[4]殷春浩,崔亦飞.电磁测量原理及应用.徐州:

中国矿业大学出版社.2003.7

[5]《LCD1602A数据手册》

[6]《DS1302数据手册》

[7]张义和.例说51单片机[M].北京:

人民邮电出版社,2010年

[8]阎石编著数字电子技术基础(第五版)北京高等教育出版社]2006.1~550

[9]蔡明文冯先成主编单片机课程设计华中科技大学出版社2007.3

[10]陈明萤编著8051单片机课程设计实训教材清华大学出版社2004

[11]黄智伟编著全国大学生电子设计竞赛电路(第一版)航空航天大学出版社2006.36

附录程序

#include<

REG51.H>

intrins.h>

//#include"

LCD1602.h"

DS1302.h"

#defineuintunsignedint

#defineucharunsignedchar

sbitDS1302_CLK=P1^7;

//实时时钟时钟线引脚

sbitDS1302_IO=P1^6;

//实时时钟数据线引脚

sbitDS1302_RST=P1^5;

//实时时钟复位线引脚

sbitwireless_1=P3^0;

sbitwireless_2=P3^1;

sbitwireless_3=P3^2;

sbitwireless_4=P3^3;

sbitACC0=ACC^0;

sbitACC7=ACC^7;

charhide_sec,hide_min,hide_hour,;

//秒,分,时位闪的计数

sbitSet=P2^0;

//进入设置时间键

sbitHour=P2^1;

//设置小时键

sbitMin=P2^2;

//设置分钟键

sbitout=P2^3;

//立刻跳出调整模式按钮

chardone,count,temp,flag,up_flag,down_flag;

ucharTempBuffer[5],week_value[2];

voidshow_time();

//液晶显示程序

/***********液晶显示部分子程序****************/

//PortDefinitions

sbitLcdRs=P2^5;

sbitLcdRw=P2^6;

sbitLcdEn=P2^7;

sfrDBPort=0x80;

//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口

//内部等待函数**************************************************************************

unsignedcharLCD_Wait(void)

{

LcdRs=0;

LcdRw=1;

_nop_();

LcdEn=1;

LcdEn=0;

returnDBPort;

}

//初始化LCD

voidLCD_Initial()

LCD_Write(LCD_COMMAND,0x38);

//8位数据端口,2行显示,5*7点阵

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);

//开启显示,无光标

LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);

//清屏

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);

//AC递增,画面不动

voidPrint(unsignedchar*str)

while(*str!

='

\0'

{

LCD_Write(LCD_DATA,*str);

str++;

}

/***********DS1302时钟部分子程序******************/

typedefstruct__SYSTEMTIME__

unsignedcharSecond;

unsignedcharMinute;

unsignedcharHour;

}SYSTEMTIME;

//定义的时间类型

SYSTEMTIMECurrentTime;

#defineAM(X)X

#definePM(X)(X+12)//转成24小时制

#defineDS1302_SECOND0x80//时钟芯片的寄存器位置,存放时间

#defineDS1302_MINUTE0x82

#defineDS1302_HOUR0x84

voidDS1302InputByte(unsignedchard)//实时时钟写入一字节(内部函数)

{

unsignedchari;

ACC=d;

for(i=8;

i>

0;

i--)

DS1302_IO=ACC0;

//相当于汇编中的RRC

DS1302_CLK=1;

DS1302_CLK=0;

ACC=ACC>

>

1;

}

unsignedcharDS1302OutputByte(void)//实时时钟读取一字节(内部函数)

1;

//相当于汇编中的RRC

ACC7=DS1302_IO;

return(ACC);

voidWrite1302(unsignedcharucAddr,unsignedcharucDa)//ucAddr:

DS1302地址,ucData:

要写的数据

DS1302_RST=0;

//Write1302(0x8e,0x00);

DS1302_RST=1;

DS1302InputByte(ucAddr);

//地址,命令

DS1302InputByte(ucDa);

//写1Byte数据

}

unsignedcharRead1302(unsignedcharucAddr)//读取DS1302某地址的数据

unsignedcharucData;

DS1302InputByte(ucAddr|0x01);

//地址,命令

ucData=DS1302OutputByte();

//读1Byte数据

return(ucData);

voidDS1302_GetTime(SYSTEMTIME*Time)//获取时钟芯片的时钟数据到自定义的结构型数组

voidTimeToStr(SYSTEMTIME*Time)//将时,分,秒数据转换成液晶显示字符放到数组TimeString[];

if(hide_hour<

2)

Time->

TimeString[0]=Time->

Hour/10+'

0'

;

TimeString[1]=Time->

Hour%10+'

else

TimeString[0]='

'

TimeString[1]='

}

TimeString[2]='

:

'

if(hide_min<

TimeString[3]=Time->

Minute/10+'

TimeString[4]=Time->

Minute%10+'

TimeString[3]='

TimeString[4]='

TimeString[5]='

if(hide_sec<

TimeString[6]=Time->

Second/10+'

TimeString[7]=Time->

Second%10+'

TimeString[6]='

TimeString[7]='

DateString[8]='

voidInitial_DS1302(void)//时钟芯片初始化

unsignedcharSecond=Read1302(DS1302_SECOND);

if(Second&

0x80)//判断时钟芯片是否关闭

Write1302(0x8e,0x00);

//写入允许

Write1302(0x8c,0x07);

//以下写入初始化时间

Write1302(0x88,0x07);

Write1302(0x86,0x25);

Write1302(0x8a,0x07);

Write1302(0x84,0x23);

Write1302(0x82,0x59);

Write1302(0x80,0x55);

Write1302(0x8e,0x80);

//禁止写入

答辩记录及评分表

课题名称

LCD电子钟的设计

答辩教师(职称)

臧大进宋洪儒

答辩时间

2013~2014学年第2学期第15周

评分表

学生姓名

学号

评分

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2