基于单片机的可调电子钟的设计Word下载.docx

上传人:b****1 文档编号:398014 上传时间:2023-04-28 格式:DOCX 页数:27 大小:499.37KB
下载 相关 举报
基于单片机的可调电子钟的设计Word下载.docx_第1页
第1页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第2页
第2页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第3页
第3页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第4页
第4页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第5页
第5页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第6页
第6页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第7页
第7页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第8页
第8页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第9页
第9页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第10页
第10页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第11页
第11页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第12页
第12页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第13页
第13页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第14页
第14页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第15页
第15页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第16页
第16页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第17页
第17页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第18页
第18页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第19页
第19页 / 共27页
基于单片机的可调电子钟的设计Word下载.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的可调电子钟的设计Word下载.docx

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

基于单片机的可调电子钟的设计Word下载.docx

在硬件系统中设有独立按键和LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此电子钟具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

第一章设计说明

1.1设计目的和内容

本系统开机时液晶屏显示00:

O0:

O0开始计时,用三个电位按键来实现对电子时钟的调试工作,当按第一下总控键时进入时钟的调整状态,有两个电位按键分别来调整时钟的时、分、秒加一减一,它的计时周期为24小时,显满刻度为“23时59分59秒”。

本课题所研究的电子钟是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:

(1)选用电子钟芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。

(2)根据选用的芯片设计外围电路。

(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。

(4)根据设计的硬件电路,编写控制STC89C52芯片的单片机程序。

(5)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。

(6)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。

(7)软件设计时必须要有完善的思路,要做到程序简单,调试方便。

1.2设计方案选择

单片机电子钟的制作有多种方法,可供选择的器件和运用的技术也有很多种。

所以,系统的总体设计方案应在满足系统功能的前提下,充分考虑系统使用的环境,所选的结构要简单使用、易于实现,器件的选用着眼于合适的参数、稳定的性能、较低的功耗以及低廉的成本。

单片机模块的选择:

由于STC89C52单片机片内有8K字节的在线编程Flash存储器,可多次擦写,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常实用。

所以选用STC89C52单片机作为可调电子钟芯片的控制单片机。

时钟模块的选择:

直接采用单片机定时计数器提供秒信号,使用程序实现时、分、秒计数。

采用此种方案减少芯片的使用,节约成本。

显示模块的选择:

数码管亮度高、体积小、重量轻,但其显示信息简单、有限,需要驱动,使用复杂,在本题目中应用受到很大的限制。

液晶显示功耗低,轻便防震。

采用液晶显示界面友好清晰,操作方便,显示信息丰富。

按键模块的选择:

为了使系统电路更简单,按键只设计了3个,分别是“设置”、“+”、“-”,用来设置及调整系统的时钟。

1.3设计总体框图

数字电子钟设计框图如图1-1所示:

AT

图1-1系统总统框图

第二章系统主要硬件设计

2.单片机主控模块

2.1.1STC89C52芯片简介

单片机是微型机的一个主要分支,在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。

就其组成和功能而言,一块单片机芯片就是一台计算机。

它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。

8KBFlashROM,可以擦除1000次以上,数据保存10年。

2.1.2封装和引脚说明

STC89C52单片机为双列直插式(DIP)芯片,是最常用的有总线扩展引脚的DIP40封装。

如图2-1所示。

(1).电源及时钟引脚

Vcc:

接入电源

Vss:

接地

XTAL1和XTAL2:

时钟引脚,外接晶体引线端。

当使用芯片内部时钟时,此两引脚端用于外接晶振和微调电容;

当使用外部时钟时,用于接外部时钟脉冲信号。

(2).控制线引脚

RST:

RST是复位信号输入端。

ALE/PROG:

地址锁存允许信号输入端。

在存取外存储器时,用于锁存低8位地址信号。

当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。

此引脚的第2功能PROG是作为编程脉冲输入端。

PSEN:

程序存储器允许输出端。

CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。

EA/Vpp:

程序存储器地址允许输入端。

当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令;

当EA为低电平时,CPU只执行片外程序存储器指令。

(3).并行I/O引脚

P0.0~P0.7:

P0口为8位双向I/O口或地位地址/数据总线复用引脚。

P1.0~P1.7:

P1口为8位双向I/O口。

P2.0~P2.7:

P2口为8位双向I/O口或高位地址总线引脚。

P3.0~P3.7:

P3口为8位双向I/O口或第二功能引脚。

P3口也可以作为一些特殊功能口,如表1所示。

如图2-1是单片机的功能引脚。

图2-1是STC89C52单片机引脚封装

口管脚

备选功能

P3.0RXD

串行输入口

P3.1TXD

串行输出口

P3.2/INT0

外部中断0

P3.3/INT1

外部中断1

P3.4T0

记时器0外部输入

P3.5T1

记时器1外部输入

P3.6/WR

外部数据存储器写选通

P3.7/RD

外部数据存储器读选通

表1P3特殊功能口

2.2液晶显示模块

液晶显示模块由于具有低功耗、寿命长、体积小、显示内容丰富,价格低、接口控制方便等优点,因此在各类电子产品中被极广泛地推广和应用。

字符型液晶显示模块是一类专用于显示字母、数字、符号等点阵式液晶显示模块。

针对目前电子钟常采用LED作为显示电路,造成硬件电路复杂、功耗高、产品体积庞大等特点;

本系统设计采用字符型液晶显示模块1602作为显示器件,这样不仅简化了电路的硬件设计,而且极大地提高了系统的可靠性。

2.2.1LCD1602模块简介

LCD1602可以显示2行16个字符,具有8位数据总线D0-D7,和RS、R/W、E三个控制端口,工作电压为5V,并且带有字符对比度调节和背光设置。

引脚介绍如下:

第1脚:

VSS为电源地,接GND。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10欧的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

RW为读写控制信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:

E端为使能信号端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

BLA背光电源正极(+5V)输入引脚。

第16脚:

BLK背光电源负极,接GND。

2.2.2LCD1602的控制指令及操作流程

1602液晶模块内部的控制器共有11条控制指令,。

它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:

1为高电平、0为低电平),控制命令如表2所示。

表211条控制指令

指令1:

清显示,指令码01H,光标复位到地址00H位置

指令2:

光标复位,光标返回到地址00H

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效。

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标。

指令6:

功能设置命令DL:

高电平时4位总线,低电平为8位总线N:

低电平为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

指令7:

字符发生器RAM地址设置

指令8:

DDRAM地址设置

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:

写数据

指令11:

读数据

LCD1602可以在8根I/O线上读写数据,因此LCD的控制器接口有严格的通信协议来保证读写数据传输的正确性和完整性。

1602字符LCD基本操作有以下四种:

1.读状态:

输入信号:

RS=0,RW=1,E=1输出信号:

D0~D7=状态字

2.读数据:

RS=1,RW=1,E=1 

输出信号:

D0~D7=数据

3.写指令:

RS=0,RW=0,E=1->

0输出信号:

D0~D7=指令

4.写数据:

RS=1,RW=0,E=1->

2.3时钟电路及按键电路

2.3.1时钟电路

时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。

因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。

常用的时钟电路有两种方式:

一种是内部时钟方式,另一种为外部时钟方式。

如图2-2为内部时钟方式的电路图。

图2-2内部时钟方式

本文用的是内部时钟方式(如图2-4所示)。

内部时钟方式只要在单片机的XTAL1和XTAL2引脚外接即可。

图中电容C1和C2的作用是稳定频率和快速起振,电容值为5~30pF,典型值为30pF。

晶振CYS的振荡频率要小于12MHz,典型值为6MHz,12MHz或11.0592MHz。

实际应用中一般采用外接晶振的内接电路。

2.3.2按键电路

按键的开关状态通过一定的电路转换为高、低电平状态。

按键闭合过程在相应的I/O端口形成一个负脉冲。

闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。

抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。

为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。

本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。

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

功能移位键、功能加键、功能减键(如图2-3所示)。

P1.0口表示功能移位键,按键选择要调整的时、分﹑秒。

P1.1口表示数字“+“键,按一下则对应的数字加1。

P1.2口表示数字“-”键,按一下则对应的数字减1。

图2-3三个按键的电路图

第三章系统软件设计

3.1系统程序流程图

用51单片机(STC89C52)通过程序控制来产生时间信号,利用P0端口使之显示于LCD1602液晶显示屏上,程序开始进行标识位初始化,对时钟单元进行初始化,开始读取时间信息,通过读取程序,液晶显示器显示时间,当有按键按下时进行键值的处理,没有按键按下时则程序重新读取时间信息。

系统程序流程图如图3-1所示。

图3-1系统程序流程图

3.2程序设计电子时钟清单:

设计电路所用的原件如图3-2所示。

图3-2原件清单

第四章系统调试

一般调试都是在编写代码完之后用来验证电路的准确与否,通过反复修改程序代码来来使电路尽可能完善,但是单单依靠软件来仿真并不能保证电路能实现想要的功能,因为软件仿真并不像现实的一样。

所以还要依靠硬件电路来实现,不断修改。

4.1软件调试部分

使用ISIS和uVision4软件来仿真,ISIS软件是用来仿真电路图,而uVision4用来编译代码和编写代码的。

调试软件:

用软件来调试查找编程上的错误,可以比较好的修改电路和程序,使得电路能尽可能完善和正确。

如图4-1为电路连接图在Proteus的接法。

图4-1Proteus电路原理图

而uVision4用来检查语法和编译上的错误,用起来比较方便,它是和Proteus软件相结合的,只有编译没有问题、正确后才能导入Proteus中得到正确的结果。

如图4-2是编译检查正确后的结果。

图4-2Uvision4编写程序

其次,用Uvision4编写程序,编译无误后生成HEX文件,通过在网上买的最小系统来烧录程序,最小系统烧录程序很简单,只需插到电脑的USB接口,在网上下载烧录STC系列的单片机的烧录软件,找到生成HEX文件,即可下载。

如图4-3为Proteus仿真出来后正确的结果。

图4-3Proteus仿真结果

4.2源代码:

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitlcdrs=P2^0;

//液晶数据命令选择端

sbitlcswr=P2^1;

//设置写入端口

sbitlcden=P2^2;

//液晶使能端

sbits1=P1^0;

sbits2=P1^1;

sbits3=P1^2;

ucharcount,s1num;

charmiao,shi,fen;

ucharcodetable[]="

1300240119time"

;

//第一行写入

ucharcodetable1[]="

00:

00:

00"

//第二行写入

voiddelay(uintz)

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

voidwrite_com(ucharcom)

lcdrs=0;

lcswr=0;

P0=com;

delay(5);

lcden=1;

lcden=0;

voidwrite_date(uchardate)

lcdrs=1;

P0=date;

voidinit()

ucharnum;

write_com(0x38);

//设置16*2显示,5*7点阵,8位数据接口

write_com(0x0c);

//设置开显示,不显示光标

write_com(0x06);

//写一个字符后的地址指针加1

write_com(0x01);

//显示清零,数据指针清零

write_com(0x80);

for(num=0;

num<

15;

num++)

{

write_date(table[num]);

delay(5);

}

write_com(0x80+0x40);

12;

write_date(table1[num]);

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

voidwrite_sfm(ucharadd,uchardate)

ucharshi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

voidkeyscan()

rd=0;

if(s1==0)

{

delay(5);

if(s1==0)

{s1num++;

while(!

s1);

if(s1num==1)

{

TR0=0;

write_com(0x80+0x40+10);

write_com(0x0f);

}

}

if(s1num==2)

write_com(0x80+0x40+7);

if(s1num==3)

write_com(0x80+0x40+4);

if(s1num==4)

s1num=0;

write_com(0x0c);

TR0=1;

if(s1num!

=0)

if(s2==0)

delay(5);

if(s2==0)

{

while(!

s2);

if(s1num==1)

{

miao++;

if(miao==60)

miao=0;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(s1num==2)

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

write_com(0x80+0x40+7);

if(s1num==3)

shi++;

if(shi==24)

shi=0;

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

if(s3==0)

if(s3==0)

s3);

miao--;

if(miao==-1)

miao=59;

fen--;

if(fen==-1)

fen=59;

shi--;

if(shi==-1)

shi=24;

voidmain()

init();

while

(1)

keyscan();

voidtimer0()interrupt1

count++;

if(count==18)

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);

}

4.3硬件调试

因为PCB用起来比较好看而且好连线,所以选择用PCB来做,不过由于太久不使用DXP来做PCB了。

4.3.1原理图

因为使用PCB板来焊接电路,所以还会用DXP软件,这个软件里面必须先画原理图,如图4-1为所设计的电路在原理图中。

图4-1原理图

4.3.2PCB图

在原理图编译没有错误后就可以直接导入到PCB工程中,生成设计电路的PCB图,然后进行布线排版,调到合适的位置后可以进行自动布

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

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

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

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