用1602LCD设计地可调式电子钟.docx

上传人:b****6 文档编号:6271030 上传时间:2023-01-05 格式:DOCX 页数:21 大小:335.96KB
下载 相关 举报
用1602LCD设计地可调式电子钟.docx_第1页
第1页 / 共21页
用1602LCD设计地可调式电子钟.docx_第2页
第2页 / 共21页
用1602LCD设计地可调式电子钟.docx_第3页
第3页 / 共21页
用1602LCD设计地可调式电子钟.docx_第4页
第4页 / 共21页
用1602LCD设计地可调式电子钟.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

用1602LCD设计地可调式电子钟.docx

《用1602LCD设计地可调式电子钟.docx》由会员分享,可在线阅读,更多相关《用1602LCD设计地可调式电子钟.docx(21页珍藏版)》请在冰豆网上搜索。

用1602LCD设计地可调式电子钟.docx

用1602LCD设计地可调式电子钟

 

单片机应用

课程设计说明书

用1602LCD设计的可调式电子钟

 

专业

自动化

学生

班级

自动化142

学号

14100

指导教师

完成日期

20年1月23日

 

用1602LCD设计电子钟

1概述

数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

数字钟的精度、稳定度远远超过老式机械钟。

在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。

在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。

数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。

2课题研究背景与意义

2.1课题研究背景

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。

下面是单片机的主要发展趋势。

单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。

从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。

这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

2.2课题研究意义

以单片机作为为电子钟控制器,可实现编程控制,更加灵活方便,而且可以实现更多的功能。

而通过分立器件搭建的驱动电路,不仅降低了设计成本,而且节约了维修成本,提高了用户的经济利益。

控制器的过流保护采用了软件保护和硬件保护相结合的方法,大大提高了其安全性能。

远程控制单元的加入,扩大了无刷电机控制器的应用围,方便了控制与管理。

编写合适的算法程序,将会使电机的控制更加快速、稳定和安全可靠。

3系统方案设计与主要设计工作

3.1设计任务

(一)设计题目:

用1602LCD设计电子钟

(二)设计目的与任务:

1)选取STC89C52单片机作为核心控制芯片,绘制STC89C52单片机最小系统及相应外设单元1602LCD电路原理图;

2)基于电路原理图,选取万用板作为基板制作单片机实物;

3)编写C源程序文件,用1602LCD实现电子钟显示。

3.2功能要求说明

此多功能数字电子钟采用LCD1602显示时间。

电子钟一上电即可显示。

用四个调整按键调整时间,分别为K1、K2、K3、K4,其中K1键为功能选择键,按一下调节秒,两下是调节分钟,三下是调节闹钟小时;K2为数值加一键;K3为数值减一键。

K4为确认键。

4设计课题总体方案

数字电子钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。

它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。

因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。

8个数码管的段选接到单片机的P0口,位选接到单片机的P2口。

数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。

“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。

“时单元”采用24进制计时器,可实现对一天24小时的累计。

显示电路将“时”、“分”、“秒”通过LCD1602显示器显示出来。

图4-1设计总原理图

4.1硬件设计方案

此设计的硬件采用STC89C52芯片及LCD602显示器,独立式按键组成的多功能电子钟。

设计中是采用单片机的部定时器定时,硬件组成框图如图4.1所示:

图4-2程序框图

本文可调时钟设计原理主要利用STC89C52单片机,由单片机的P0口控制数码管的位显示,P2口控制数码管的段显示,P1口与按键相接用于时间的校正。

在设计中引入电源电路,外部电源系统产生+5V电压,用于给CPU及显示电路提供工作电压,这是数字时钟正常工作时的总电压。

整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。

“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用24进制计时器,可实现对一天24小时的累计。

显示电路将“时”、“分”、“秒”计数器的输出,通过LED液晶显示器显示出来。

校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。

该多功能数字电子钟单片机由最小系统、按键模块、LCD显示模块、USB接口电路模块组成,各模块的功能如下:

(1)单片机最小系统

STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。

STC89C52使用经典的MCS-51核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能:

8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。

另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35MHz,6T/12T可选。

(2)LCD显示电路

LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符。

LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

图4-3LCD1602显示仿真电路

(3)USB接口电路

接上一个电容组成的滤波电路和电源显示灯组成一个电源接口,为单片机工作供电。

(4)晶振电路和复位电路

STC89C52引脚XTAL1和XTAL2与晶体振荡器及电容C2、C3按图4-2-3所示方式连接。

晶振、电容C2/C3及片与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C2、C3的容量有关,但主要由晶振频率决定,围在0~33MHz之间,电容C2、C3取值围在5~30pF之间。

根据实际情况,本设计晶振选择频率为12MHZ,电容选择30pF如图(4-2-3)。

经计算得单片机工作胡机器周期为:

12×(1÷12M)=1us。

振荡器的振荡信号从XTAL2端输入到片的时钟发生器上。

时钟发生器是个二分频的触发器,将振荡器的信号频率fosc除以2,向CPU提供两相时的时钟信号。

复位电路

时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片部开始进行初始复位。

图4-4晶振和复位电路

(5)按键模块

用四个调整按键调整时间,分别为K1、K2、K3、K4,其中K1键为功能选择键,按一下调节秒,两下是调节分钟,三下是调节闹钟小时;K2为数值加一键;K3为数值减一键。

K4为确认键。

图4-5按键电路

4.2系统软件设计

本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、校对设置程序、EEPROM读写程序等组成。

主要程序设计流程图如下所示:

图4-6主要程序设计流程图

4.3系统程序流程图

在编程上,首先进行了初始化,定义程序的的入口地址以及中断的入口地址,在主程序开始定义了一组固定单元用来储存计数的时.分.秒,在显示初值之后,进入主循环。

在主程序中,对不同的按键进行扫描,实现时间调整,复位清零等功能,系统总流程图如下图4-3。

图4-7按键处理流程图

时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。

如图4-8所示:

图4-8时钟显示顺序

5.软件仿真及实物设计调试

5.1PROTUES仿真软件介绍

Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。

Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。

通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。

5.1电子钟系统PROTUES仿真

用PROTUES软件,根据数字电子钟的原理图,画出仿真图,得到的所示。

图5.1仿真图

5.2仿真运行结果说明

电子时钟主要的设计要能够实现时钟的一般功能,以及包括时间的调整功能,这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。

打开时的正常显示仿真:

图5.2LCD1602仿真结果图1

图5.3LCD1602仿真结果图2

5.3实物设计结果与调试

图5.4实物调试图1

图5.5实物调试图2

6课程设计实验总结

通过这次设计我发现,只有理论水平提高了;才能够将课本知识与实践相结合,理论知识服务于教学实践,以增强自己的动手能力。

这个设计十分有意义,我获得很深刻的经验。

通过这次设计,我知道了理论和实际的距离,也知道了理论和实际相结合的重要性,,也从中获得了很多书本上无法得知的知识。

我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。

学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。

这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。

这次专业课程设计总体来说还算是成功的,但我也发现了自己许多的错漏和不足之处。

最简单的程序没写好就想着去写复杂的程序,做事还是缺乏耐心和信心,当有时遇到问题时,总是无从下手,总想让老师解决问题,对于课本上的知识不能很好的组织到一起,不会灵活的运用,总是对书本知识有着模糊的记忆,不能掌握扎实。

在编写个功能的程序时,特别是后来增添更复杂的程序时,明显地显示出自己的不足。

通过本次的实训,让我了解到了自己的不足,需要更好的掌握本门课程,书本上的知识是基础,想要更好的掌握就要多动手实践与动脑思考,这样才会达到事半功倍的效果。

此设计是在我敬爱的善超老师的精心指导下完成的。

老师严谨的教学作风和孜孜不倦的工作态度一直激励着我,使我在学习中遇到困难时能尽最大努力克服,不断进步,在理论和实践方面的能力都获得了很大的提高。

四年大学生活中,老师们给了我很多指导和支持。

他们严谨的治学,优良的作风和敬业的态度,为我树立了为人师表的典。

通过这次课程设计,本人不仅加强了自己对所掌握的知识的巩固和进一步理解,同时对自己设计进行了一次全面的检验和提升。

设计过程中丰富了自己的知识,积累了宝贵的设计经验,获得了一定的设计和能力,能承担一些的设计工作;同时也于此,发现自己还存在不少的知识缺陷,懂得自己要想成为一个杰出的人,我就应该不断地努力学习知识,充实自己的头脑。

通过这次课程设计,让我复习了很多学过的旧知识,同时锻炼了自己的动手能力和查阅资料。

尤其是解决在实际中解决排查问题的能力。

由于本次实训考虑到实训时间短,实训的成本低,还有所学的知识不完整等。

这次的设计有很多的不足,和市场上的产品有一定的差距,例如:

电子时钟还可以做到秒表计时,闹钟提示等功能。

参考文献

[1]兰红.单片机原理及应用.:

机械工业,2012.7

[2]牛昱光.单片机原理与接口技术[M].:

电子工业,2008.

[3]力培.单片机微机系统实用教程[M].:

机械工业,2007.

附录

附录1:

程序清单

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitrs=P2^0;//定义液晶显示器控制端口

sbitrw=P2^1;

sbiten=P2^2;

sbits1=P1^4;//定义按键控制

sbits2=P1^5;

sbits3=P1^6;

sbits4=P1^7;

ucharshi,fen,miao,ri,yue,nian;

ucharcodetable[]={"2018:

01:

05"};

ucharcodetable1[]={"00:

00:

00"};

ucharnum,num1,count;

uinti,sh,ge,s,g;

voidDelay(uchartime)//延时

{

uintj;

for(;time>0;time--)

for(j=0;j<125;j++);

}

voidwrite_(uchar)//写指令函数

{

en=0;

rs=0;

Delay(5);

P0=;//

Delay(5);

en=1;//高脉冲

Delay(5);

en=0;

}

voidwrite_data(uchardat)//写数据函数

{

en=0;

rs=1;

Delay(5);

P0=dat;

Delay(5);

en=1;

Delay(5);

en=0;

}

voidinit()//初始化

{

en=0;

rw=0;

write_(0x38);//设置16X2显示,5X7点阵,8位数据接口

write_(0x0c);

//设置开显示,不显示光标D=1:

显示开,D=0:

显示关,C=1:

光标显示,C=0:

//光标不显示。

B=1:

光标闪烁,B=0:

光标不闪烁。

//说明:

这里的设置是显示开,不显示光标,光标不闪烁,设置字为0x0c。

write_(0x06);

//写一个字符后地址指针加1I/D=1:

写入新数据后光标右移。

I/D=0:

//写入新数据后光标左移。

S=1:

显示移动。

S=0:

显示不移动。

write_(0x01);//显示清零,数据指针清零

for(i=0;i<(sizeof(table)-1);i++)

//第一行写sizeof判断数据类型长度符的关键字

{

write_(0x80+i);//找地址

write_data(table[i]);//写数据

}

for(i=0;i<(sizeof(table1)-1);i++)//第二行写

{

write_(0x80+0x40+i);//写指令P0=

write_data(table1[i]);

}

miao=59;

fen=59;

shi=23;

ri=1;

yue=1;

nian=2018;

TMOD=0x01;//time0作为定时器工作在模式1下

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;//中断20次为1s

EA=1;//开启总中断

ET0=1;//开启time0中断

TR0=1;//启动time0

}

voidwrite_sfm(ucharadd,ucharnum)//时分秒函数

{

sh=num/10;//分离出十位

ge=num%10;//分离出个位

write_(0x80+0x40+add);//第二行数据指针位置调整

write_data(0x30+sh);//更改显示数据的十位0

write_data(0x30+ge);//更改显示数据的个位

}

voidtimer0()interrupt1//time0中断

{

TH0=(65536-50000)/256;//重装初始值

TL0=(65536-50000)%256;

count++;

if(count==20)//20次到则满一秒

{

count=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

}

write_sfm(4,shi);

}

write_sfm(7,fen);

}

write_sfm(10,miao);

}

}

voidkeyscan()//键盘扫描

{

if(s1==0)//按下S1

{

Delay(5);

if(s1==0)

{

num1++;

while(!

s1);//等待释放

if(num1==1)

{

TR0=0;//关中断

write_(0x0e);//显示光标,不闪烁

write_(0x80+0x40+0x0b);//数据指针移动到秒的个位处

write_(0x0f);//显示光标,闪烁

}

if(num1==2)

{

write_(0x80+0x40+0x08);//指针移到到分钟的个位处

}

if(num1==3)

{

write_(0x80+0x40+0x05);//指针移到到小时的个位处

}

if(num1==4)

{

num1=0;//清零

write_(0x0c);//重新显示

TR0=1;//重新启动计时

}

}

}

if(num1!

=0)//按下S2则选择时/分/秒加1

{

if(s2==0)

{

Delay(5);

if(s2==0)

{

while(!

s2);

if(num1==1)

{

Delay(20);

miao++;

if(miao==60)

miao=0;

write_sfm(10,miao);

write_(0x80+0x40+0x0a);

}

if(num1==2)

{

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

write_(0x80+0x40+0x07);//分的地址

}

if(num1==3)

{

shi++;

if(shi==24)

shi=0;

write_sfm(4,shi);

write_(0x80+0x40+0x04);

}

}

}

}

if(num1!

=0)

if(s3==0)//按下S3则选择时/分/秒减1

{

Delay(5);

if(s3==0)

{

while(!

s3);

if(num1==1)

{

Delay(20);

miao--;

if(miao==-1)

miao=59;

write_sfm(10,miao);

write_(0x80+0x40+0x0a);

}

if(num1==2)

{

fen--;

if(fen==-1)

fen=59;

write_sfm(7,fen);

write_(0x80+0x40+0x07);

}

if(num1==3)

{

shi--;

if(shi==-1)

shi=23;

write_sfm(4,shi);

write_(0x80+0x40+0x04);

}

}

}

if(num1!

=0)

if(s4==0)//确定按键

{

Delay(5);

if(s4==0)

{

while(!

s4);

num1=0;//清零

write_(0x0c);//重新显示

TR0=1;//重新启动计时

}

}

}

voidmain()

{

init();

while

(1)

{

keyscan();

}

}

 

工学院

专业

自动化

班级

自动化

学号

设计

课题

名称

用1602LCD设计电子钟

比例

审核

图号

A4

日期

图名

系统电路原理图

共1

第1

附录2:

系统电路原理图

附录3:

元器件清单

1.STC89C52单片机1块

2.LCD602显示器1个

5.1K电阻1个

7.102排阻1个

8.12M晶振1个

9.30pF电容2个

10.10μF电解电容1个

11.排针,导线若干

12.轻触按钮4个

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

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1