基于stc51单片机的LCD1602显示时间的电子万年历显示.docx
《基于stc51单片机的LCD1602显示时间的电子万年历显示.docx》由会员分享,可在线阅读,更多相关《基于stc51单片机的LCD1602显示时间的电子万年历显示.docx(29页珍藏版)》请在冰豆网上搜索。
基于stc51单片机的LCD1602显示时间的电子万年历显示
基于stc51单片机的LCD1602显示时间的电子万年历(显示
1.1KeiluVision4的简要介绍
2020年2月公布KeilμVision4,KeilμVision4引入灵活的窗口治理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全操纵的任何地点。
新的用户界面能够更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
2020年3月ARM公司公布最新集成开发环境RealViewMDK开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
KeilC51开发系统差不多知识KeilC51开发系统差不多知识
1.系统概述
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率专门之高,多数语句生成的汇编代码专门紧凑,容易明白得。
在开发大型软件时更能表达高级语言的优势。
下面详细介绍KeilC51开发系统各部分功能和使用。
2.KeilC51单片机软件开发系统的整体结构
C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),能够完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也能够与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直截了当对目标板进行调试,也能够直截了当写入程序存贮器如EPROM中。
使用独立的Keil仿真器时,本卷须知:
*仿真器标配11.0592MHz的晶振,但用户能够在仿真器上的晶振插孔中换插其他频率的晶振。
*仿真器上的复位按钮只复位仿真芯片,不复位目标系统。
*仿真芯片的31脚〔/EA〕已接至高电平,因此仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM〔其CPU的/EA引脚接至低电平〕的目标系统中使用。
优点:
1.KeilC51生成的目标代码效率专门之高,多数语句生成的汇编代码专门紧凑,容易明白得。
在开发大型软件时更能表达高级语言的优势。
2.与汇编相比,C语言在功能上、结构性、可读性、可爱护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
图1.1KEIL操作界面
1.2STC-ISP的简要介绍
STC-ISP是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。
操作说明如下:
(1)打开STC-ISP,如以下图界面,在MCUType栏目下选中单片机,如STC89C52RC。
图1.2ISP操作界面
(2)依照您的9针数据线连接情形选中COM端口,波特率一样保持默认,假如遇到下载问题,能够适当下调一些。
(3)先确认硬件连接正确,点击〝打开文件〞并在对话框内找到您要下载的HEX文件。
图1.3选择HEX文件
(4)选择所要下载的文件,如此能够使您在每次编译KEIL时HEX代码能自动加载到STC-ISP,点击〝Download/下载〞。
(5)手动按下电源开关便即可把可执行文件HEX写入到单片机内,如图是正在写入程序截图。
(6)程序写入完毕,目标板开始运行程序结果。
2方案分析与确定
2.1方案思路分析
由题目要求,依照设置的年份日的显示全年的年月公历、星期等信息。
由于需要显示去年的日期以及星期等信息,一般的LED数码管明显差不多不能胜任,为此,我们能够选择LCD1602液晶显示器完成课设要求。
目前所具备的设备只有一块以STC89C52为内核的单片机,PC机。
课设要求显示日期等信息,我们能够充分利用单片机上面集成的DS1302时钟芯片。
该芯片能够产生年份,月份,日期,星期,时,分,秒的数据,因此,完全能够完成实验的各项要求。
基于以上分析,我们能够利用DS1302产生的各种时钟数据,由CPU完成对数据的读取,然后通过CPU将数据写至LCD1602,以显示数据,达到可视化的成效。
关于课程设计的拓展部分,我们能够利用单片机开发板上面集成的DS18B20温度传感器来测试周围环境的温度,同样通过LCD1602来显示。
此外能够通过测试按键是否闭合来改变各种时刻数据,已达到校准的目的。
图2.1整体设计框架图
2.2方案流程图
依照以上分析,以及使用各种芯片的操作流程,我们能够大致确定课程设计的软件设计方案方案,其大致流程如下:
图2.2设计流程图
3单元芯片电路的设置及总体设计
3.1DS1302芯片引脚功能
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它能够对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采纳三线接口与CPU进行同步通信,并可采纳突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情形下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
第一,RST接通操纵逻辑,承诺地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平常,所有的数据传送被初始化,承诺对DS1302进行操作。
假如在传送过程中RST置为低电平,那么会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>2.0V之前,RST必须保持低电平。
只有在SCLK为低电平常,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK为时钟输入端。
以下图为DS1302的引脚功能图:
图3.1DS1302引脚图
管脚描述:
X1X232.768KHz晶振管脚
GND地
RST复位脚
I/O数据输入/输出引脚
SCLK串行时钟
Vcc1,Vcc2电源供电管脚
此外,拓展中用到了DS18B20温度传感器,其使用与DS1302比较类似,因此那个地点不再赘述。
3.2DS1302的使用方法
使用DS1302时,要对其引脚和寄存器进行专门设置,以实现所需功能。
引脚设置后面会提及,那个地点不做说明,要紧讲一下程序的编写。
DS1302的的工作过程中包过读写一个字节数据等过程,下面做相应的说明。
/********************************
功能:
往DS1302写入数据
*********************************/
voidW1302(ucharucAddr,ucharucDa)
{
T_RST=0;
T_CLK=0;
T_RST=1;
RTInputByte(ucAddr);/*地址,命令*/
RTInputByte(ucDa);/*写1Byte数据*/
T_CLK=1;
T_RST=0;
}
/********************************
功能:
读取DS1302某地址的数据
*********************************/
ucharR1302(ucharucAddr)
{
ucharucData;
T_RST=0;
T_CLK=0;
T_RST=1;
RTInputByte(ucAddr);/*地址,命令*/
ucData=RTOutputByte();/*读1Byte数据*/
T_CLK=1;
T_RST=0;
return(ucData);
}
/***********************************
功能:
设置初始时刻
************************************/
voidSet1302(uchar*pClock)
{
uchari;
ucharucAddr=0x80;
EA=0;
W1302(0x8e,0x00);/*操纵命令,WP=0,写操作?
*/
for(i=7;i>0;i--)
{
W1302(ucAddr,*pClock);/*秒分时日月星期年*/
pClock++;
ucAddr+=2;
}
W1302(0x8e,0x80);/*操纵命令,WP=1,写爱护?
*/
EA=1;
}
/******************************
功能:
读取DS1302当前时刻
*******************************/
voidGet1302(ucharucCurtime[])
{
uchari;
ucharucAddr=0x81;
EA=0;
for(i=0;i<7;i++)
{
ucCurtime[i]=R1302(ucAddr);/*格式为:
秒分时日月星期年*/
ucAddr+=2;
}
EA=1;
}
3.3LCD1602引脚功能
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有假设干个5X7或者5X11等点阵字符位组成,每个点阵字符位都能够显示一个字符。
每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此因此他不能显示图形
n1602LCD是指显示的内容为16X2,即能够显示两行,每行16个字符液晶模块〔显示字符和数字〕。
图3.2LCD1602引脚图
1602采纳标准的16脚接口,其中:
第1脚:
VSS为电源地
第2脚:
VDD接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高〔对比度过高时会产生〝鬼影〞,使用时能够通过一个10K的电位器调整对比度〕。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。