基于单片机的lcd1602电子时钟设计说明Word格式.docx
- 文档编号:15238423
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:28
- 大小:939.78KB
基于单片机的lcd1602电子时钟设计说明Word格式.docx
《基于单片机的lcd1602电子时钟设计说明Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的lcd1602电子时钟设计说明Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
熟练掌握KEIL软件的使用方法;
熟练掌握PROTEUS软件的使用方法;
掌握单片机I/O接口的工作原理;
掌握LCD显示器的工作原理及编程方法;
掌握独立式键盘的工作原理及编程使用方法;
掌握单片机的下载使用方法。
二、设计思路和方案论证
2.1、设计思路
电路总体上分为控制和显示部分。
以单片机最小系统作为核心控制电路,控制LCD显示,具体显示容及方式由软件来完成;
由于有时钟和日期的调节功能需要校准电路和基本的复位电路,复位电路采用按键复位,调节键、加1键、减1键三个按键完成,共需四个按键;
计时功能由固定频率的晶振完成(采用11.0592MHz);
显示部分主要采用LCD1602作为显示。
2.2、方案论证
时钟芯片的选择和论证
方案一:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、月、年以及闰年补偿的年进行计数,精度也较高,工作电压2.5V~5.5V围,功耗也较低,但价格比较贵。
方案二:
直接采用单片机定时计数器提供秒信号,使用程序实现秒、分、时、日、月、年计数。
采用此方案实现虽然有一定的时间误差,但可减少芯片的使用,节约成本,易于实现,符合现实选用,所以采用此种作为时钟信号发生器。
(2):
显示模块选择方案和论证:
方案一:
采用点阵式图形LCD12864液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用点阵式图形LCD12864液晶显示屏。
采用点阵式字符型LCD1602液晶显示屏,LCD1602是专门用于显示字母、数字、符号等的点阵型液晶显示模块,分4位和8位数据传输方式。
提供“5×
7点阵+光标”和“5×
10点阵+光标”的显示模式。
价格现对便宜,所以用此种作为显示。
三、系统的硬件设计与实现
3.1电路设计框图
图1:
整体设计方框图
3.2单片机最小系统的设计
以AT89C51为核心组成的单片机的最小系统,主要包括时钟振荡电路,复位电路等。
正5V电源直接接到89C51的40脚(VCC),20脚(GND)接地。
时钟振荡电路的18脚(XTAL1)和19脚(XTAL2)外接11.0592MHZ的晶振和二个30PF的电容,振荡频率就是晶振的固有频率,经过一定的电路连接实现计时的功能。
复位电路采用上电自动复位和手动复位相结合的方式接到89C51的9端(RST)。
单片机最小系统原理图如图2所示:
图2:
单片机最小系统原理图
3.3显示电路设计
采用LCD1602液晶显示,LCD1602的D0~D7与单片机的P0口相连,P0口作为I/O口输出时必须外接10KΩ的上拉电阻。
分别用P.0、P1.1、P1.2作为LCD1602的RS、RW、E控制线。
显示电路如图3所示:
图3:
液晶显示电路
3.4时间调整电路
该电路设计有三个轻触式按键,分别命名为:
模式设定键S1、加调整键S2、减调整键S3。
由P2.0口外接S1,P2.1外接S2,P2.2外接S3,P2.3作为公共端。
按一下S1,调整光标开始出现在秒位,再按一下S1光标移动到分,按一下光标移动一个校准位直到年位。
S2实现调整加1功能,S3实现调整减1功能。
时间调整电路如图4所示:
图4:
键盘电路
3.5复位电路及晶振电路
该电路采用按键复位,有一个22uF的电容、一个按键S4、一个10K的电阻和一个220Ω的电阻构成。
在产品工作期间出现错误或死机现象可采用手动复位,即按下S4,此时无论电路处于何种状态,电路都会恢复到初始状态的显示。
晶振电路可以给单片机提供所需要的时钟频率,主要由晶振这个元件固定的精确的频率来实现。
复位电路及晶振电路如图5所示:
图5复位电路及晶振电路
四、系统软件设计
软件系统分四个部分:
主函数程序部分,键盘扫描部分,定时器中断部分,LCD初始化部分。
各部分程序流程图如下所示:
4.1主函数程序流程图
图6主函数流程图
4.2键盘扫描子程序流程图
NO
YES
NONO
YESYES
图7键盘扫描程序流程图
4.3定时器中断子程序流程图
YES
4.3LCD初始化程序流程图
图9LCD初始化流程图
五、设计结果分析
5.1硬件分析
该设计电路系统较大,电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多。
另外,买来的元器件要先进行检测,如果有坏的器件要进行更换,还有就是要注意元器件的正确放置与安装以及布线的合理,便于成品电路的检测与维护。
为了减少复杂度,可用Proteus软件进行仿真,按照电路原理图在Proteus中选择元器件并连接,把生产的HEX文件烧入到单片机部进行仿真,若出现错误及时更改。
在本设计中遇到了很多的问题。
回想这些问题,其实只要认真思考许多都是可以避免的,以下为主要的问题:
在Proteus仿真中提示出错,没有仿真结果。
在Proteus中仿真中,提示出现了R1(R2)错误,经过仔细排查,发现有两个电阻命名,是R1,两个电阻命名是R2。
修改后就没有出现错误。
在Proteus仿真中,LCD不显示
在硬件设计上需要用P0口来对LCD进行指令的读写和数据的输入,由于没有在P0口接上拉电阻,LCD屏就一直不显示。
最终将在查阅课本时想起P0做输出口使用时外部必须接10KΩ的上拉电阻,接上后LCD就正常显示了。
5.2软件分析
该设计的功能虽然比较简单,但程序也较为复杂,所以在编写程序和调试时出现了许多问题。
最后经过多次的模块子程序的修改,一步一步的完成,最终在KEIL调试成功,解决了软件问题。
在软件的调试过程中主要遇到的问题如下:
烧入程序后,秒、分、时、年能正常工作,但是日、月出错
当秒等于60时显示为00,围是0~59;
当分等于60时显示00,围是0~59;
当时等于24时显示00,围是0~23;
年等于100是显示00,围是00~99;
日和月的显示都不包括0,当由于软件出错,显示时出现了,经过改写最终全能正常显示。
(2:
):
不能正常区分闰年和平年,每月都是31天
闰年和平年的2月份分别是29天和28天,1、3、5、7、8、10、12月份显示围是0~31,4、6、9、11月份显示围是0~30。
刚开始不能区分,最后经过修改能区分显示。
六、设计体会
通过这次单片机课程设计,发现了自身所学知识存在许多的不足和问题,同时也学到了不少东西,提高了动手实践的能力。
在整个设计过程中,从设计方案的确定,到具体电路在Proteus中的设计,最后到总体电路的联接构建以及程序的编写烧制,特别是程序的编写,要求对LCD1602的初始化操作、指令和数据的操作都需要很熟悉。
在设计过程中碰到实在不能解决的问题,就问老师或是和同学交流,把问题彻底搞清楚并加以掌握。
尽管在这次设计中遇到了许多难题,但也都一一得以解决。
比如程序编写中,由于思路不清晰,开始时遇到了许多的问题,经过静下心来思考,和同学们的共同讨论,理清了思路,反而得心应手;
在硬件方面虽然没有遇到什么大问题,但从中也学到了许多知识。
通过此次设计,也使我知道了做任何事都要有一颗平常心,不要想着走捷径,一步一个脚印,把每一步都认认真真做好了,才能取得最后的成功,同时也锻炼了我的耐心,做什么事都要有耐心,不要遇到困难就退缩,而是要静下心来去寻找解决的办法否则很难有最后的成功。
在此过程中更要注重自主学习,发挥自己的主观能动性。
总之,这次课设是我的又一次全新的尝试,也是一个小小的成功,更是一次很好的锻炼,让我有了全方位的提高和进步。
七、proteus仿真图
图(10)仿真主界面
图(11)调节分界面
图(12)调节月界面
图(13)调节年界面
八、参考文献
[1]周国运。
单片机原理及应用(C语言版)。
:
中国水利水电,2009
[2]齐、朱宁西。
单片机应用系统设计技术。
电子工业,2009
[3]汪道辉。
单片机系统设计与实践。
电子工业,2006
[4]子文。
单片机原理及应用。
电子科技大学,2006
九、程序附录:
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
#definedatasendP0
sbitlcden=P1^2;
//LCD使能端
sbitlcdrs=P1^0;
//LCD数据/指令(H/L)选择端
sbitlcdrw=P1^1;
ucharmytable0[]="
Nanyangligong"
;
ucharmytable1[]="
liuhaiyanDIY!
!
"
ucharcodeline0[]="
2010-12-01"
//初始化显示
ucharcodeline1[]="
00:
00:
00"
ucharcodemonth0[]={31,28,31,30,31,30,31,31,30,31,30,31};
//平年月
ucharcodemonth1[]={31,29,31,30,31,30,31,31,30,31,30,31};
//闰年月
ucharcount,hour,minute,second,year=1,month=1,date=1;
uchars1num;
//s1num:
定义功能键按下次数变量
voiddelay(unsignedintz)//延时子函数z*1ms
{
unsignedintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voidwrite_(unsignedcharc)//写命令子函数
lcdrs=0;
//低电平选择为写指令
lcden=0;
datasend=c;
//把指令写入P0口
delay(5);
lcden=1;
//开使能
//读取指令
//关闭使能
}
voidwrite_data(unsignedchard)//写数据子函数
lcdrs=1;
//高电平选择为写数据
data
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 lcd1602 电子 时钟 设计 说明