51单片机实现电子时钟功能1602液晶显示.docx

上传人:b****7 文档编号:9401536 上传时间:2023-02-04 格式:DOCX 页数:17 大小:417.38KB
下载 相关 举报
51单片机实现电子时钟功能1602液晶显示.docx_第1页
第1页 / 共17页
51单片机实现电子时钟功能1602液晶显示.docx_第2页
第2页 / 共17页
51单片机实现电子时钟功能1602液晶显示.docx_第3页
第3页 / 共17页
51单片机实现电子时钟功能1602液晶显示.docx_第4页
第4页 / 共17页
51单片机实现电子时钟功能1602液晶显示.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

51单片机实现电子时钟功能1602液晶显示.docx

《51单片机实现电子时钟功能1602液晶显示.docx》由会员分享,可在线阅读,更多相关《51单片机实现电子时钟功能1602液晶显示.docx(17页珍藏版)》请在冰豆网上搜索。

51单片机实现电子时钟功能1602液晶显示.docx

51单片机实现电子时钟功能1602液晶显示

第一章设计要求及系统组成

一、基本操作时序:

读状态:

输入:

RS=L,RW=H,E=H输出:

D0~D7=状态字

写指令:

输入:

RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:

读数据:

输入:

RS=H,RW=H,E=高脉冲输出:

D0~D7数据

写数据:

输入:

RS=H,RW=L。

D0~D7=数据,E=高脉冲输出:

二、、、状态字说明:

STA7D7\STA6D6\STA5D5\STA4D4\STA3D3\STA2D2\\STA1D1

STA0-6:

当前数据地址指针的数值

STA7:

读写操作使能1表示禁止,0表示允许

对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0;但是我们可以进行延时进行实现。

RAM地址映射:

LCD16字*2行

00010203040506070808090A0B0C0D0E0F…27

4041424F50…67

指令说明:

1.初始化设置1.显示模式设置指令码:

00111000<0x38)

功能:

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

必须开显示2.显示开、关及光标设置指令码:

00001DCB,功能:

D=1开显示;D=0关显示;C=1显示光标;B=1光标闪烁;B=0光标不显示000001NS:

功能:

N=1当读或写一个字符后地址指针加1,且光标加1;N=0相应的减1;S=1当写一个字符,整屏显示左移

S=0当写一个字符,正屏显示不移动。

数据控制:

控制器内部设有一个数据地址指针,用户可通过它们来访问内部的全部80字节RAM

4.2.1数据指针设置:

指令码:

80H+地址码<0-27H,第二行开始:

40H-67H)4..2.2读数据,写数据

其它设置:

01H:

显示清屏:

1.数据指令清零2所有显示清零02H:

显示回车:

1.数据清零

如何进行连接:

实际操作中,液晶接到,第一管脚是D,第二管脚是VCC,15和16是背光,D0-D7是数据口,接到单片机的P0口,P0口接了两个锁存器,液晶,D/A,具有高阻状态的都可以随便接,没有影响,,第六管脚是LCDEN相当于E,使能信号,它接P3^4,R/W接地,表示低电平,因为我们只进行写操作,RS接2实验板上的P3^5。

只需这两端口便足以控制液晶,2和3是偏压信号,一端接地,

接口信号说明:

编号:

1VSS<符号表示)电源地<引脚说明)2VDD电源正极3VL液晶显示偏压信号4RS数据/命令选择端

实际操作:

先写光标程序;写两个子程序,一个写数据,一个写指令:

先进性两个宏定义,再位申明LCDEN与RS;为了电量充足。

初始化时关断数码管,定义数码管的两个锁存端,dula与wela,P2^6与P2^7,先写主函数<调用初始化函数,在调用数据子函数<’1’),从右向左滚动进来

Code:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

1

S/C

R/L

x

x

S/R

R/L

描述

0

0

光标左移

0

1

光标右移

1

0

显示左移,光标跟着左移

1

1

显示右移,光标跟着右移

),再写初始化函数(先关断数码管,在进行显示模式设置,显示开、关及光标设置,设计数据>,接着写命令子函数writer——com<开始操作时序,写指令,P0口送的指令码,接着需要延时一段时间让E变成高电平,在持续一段时间,E再变低),它由所用的指令直接调用即可。

再写一个写数据的子函数writer_data

Ucharcodetable[]={“”}

注意:

为了使得黑托不出现,应该屏幕全部清零writer_com(0x01>。

xdata:

外部地址空间

1.1设计要求

利用单片机最小系统设计一个电子时钟,显示方式为**:

**:

**,并且可以任意修改时间。

1.2系统组成

原理框图如图1.1

1602显示模块

图1.1系统原理框图

第二章系统设计方案

2.1系统设计方案

电路原理图如图2.1所示

图2.1电路原理图

2.2电路模块组成及其工作原理

2.2.1时钟电路

系统时钟源由内部时钟方式产生,时钟电路由12MH晶振和两个30PF瓷片电容组成,构成自激振荡,形成振荡源提供给单片机。

电容可在5PF到30PF之间选择,电容的大小对振荡频率有微小影响,可起频率微调作用。

时钟电路如图2.2所示

图2.2时钟电路

2.2.2复位电路

单片机复位有上电复位和手动复位两种方式,上电复位是接通电源后利用RC充电来实现复位。

手动复位是通过人为干预,强制系统复位。

复位电路如图2.3所示,可以实现上电复位和手动复位功能。

图2.3复位电路

2.2.3按键电路

在单片机的P1.0、P1.1、P1.2三个I/O口接三个简易按键,通过不断检测按键状态,识别按键的按下顺序和次数即可实现时间的任意修改。

按键电路如图2.4所示。

2.2.41602液晶显示模块电路

本设计是通过对1602液晶显示屏的控制来实现时间的显示。

1602液晶显示模块的驱动如下所述:

图2.41602液晶屏实物图

 1602采用标准的16脚接口,其中:

第1脚:

VSS为地电源

第2脚:

VDD接5V正电源第3脚:

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

第4脚:

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

第5脚:

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

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

第6脚:

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

第7~14脚:

D0~D7为8位双向数据线

第15~16脚:

空脚

1602显示屏的时序图如图2.5。

图2.51602时序图

1602液晶显示屏与单片机的连线图如图2.6所示。

图2.61602与单片机连线图

第三章程序设计及其调试

3.1程序设计

程序设计如下:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitlcdrs=P2^0。

sbitlcswr=P2^1。

sbitlcden=P2^2。

sbits1=P1^0。

sbits2=P1^1。

sbits3=P1^2。

sbitrd=P3^7。

ucharcount,s1num。

charmiao,shi,fen。

ucharcodetable[]="2018-6-14TUN"。

ucharcodetable1[]="00:

00:

00"。

voiddelay(uintz>

{

uintx,y。

for(x=z。

x>0。

x-->

for(y=110。

y>0。

y-->。

}

voidwrite_com(ucharcom>

{

lcdrs=0。

lcswr=0。

P0=com。

delay(5>。

lcden=1。

delay(5>。

lcden=0。

}

voidwrite_date(uchardate>

{

lcdrs=1。

lcden=0。

P0=date。

delay(5>。

lcden=1。

delay(5>。

lcden=0。

}

voidinit(>

{

ucharnum。

lcden=0。

write_com(0x38>。

write_com(0x0c>。

write_com(0x06>。

write_com(0x01>。

write_com(0x80>。

for(num=0。

num<15。

num++>

{

write_date(table[num]>。

delay(5>。

}

write_com(0x80+0x40>。

for(num=0。

num<12。

num++>

{

write_date(table1[num]>。

delay(5>。

}

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>

{

delay(5>。

if(s3==0>

{

while(!

s3>。

if(s1num==1>

miao--。

if(miao==-1>

miao=59。

write_sfm(10,miao>。

write_com(0x80+0x40+10>。

}

if(s1num==2>

{

fen--。

if(fen==-1>

fen=59。

write_sfm(7,fen>。

write_com(0x80+0x40+7>。

}

if(s1num==3>

{

shi--。

if(shi==-1>

shi=23。

write_sfm(4,shi>。

write_com(0x80+0x40+4>。

}

}

}

}

}

voidmain(>

{

init(>。

while(1>

{

keyscan(>。

}

}

voidtimer0(>interrupt1

{

TH0=(65536-50000>/256。

TL0=(65536-50000>%256。

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>。

}

}

3.2实验调试

实验过程中出现了很多的问题,经过反复的程序修改和调试,最终完成了本设计的要求,实现了电子时钟功能。

在电路焊接前,通过protues单片机仿真软件多次调试和仿真,得出了正确的实验结果。

Protues仿真图如图3.1所示。

图3.1protues仿真图

结论

经过两周的课程设计,不断的测试与分析,最终完成了电子时钟的设计与制作。

在实验的设计及仿真测试时,当没有得出正确的实验现象是,必须冷静、沉着的思考问题的来源,切勿太过紧张。

在电路的焊接过程,须仔细再仔细,案部分焊接导线,切勿乱了头绪。

这样才能在电路制作过程中减少许多不必要的错误。

本次设计组要是程序设计部分,在程序设计过程中,出现了很多的问题,经过和组员的多次讨论与研究、,并参阅了一些电子资料,解决的很多难题。

此课程设计主要考察了对单片机技术原理及程序设计基础等知识。

理论结合实践,使得在平时学习的单片机技术知识有了一个新的认识。

此次设计的电子时钟是一个典型的单片机应用实例。

通过本次设计,使得对单片机技术有了进一步的认识,并且对此产生了浓厚的兴趣,为以后的学习打下了坚实基础。

通过和组员的共同努力,成功的完成此次课程设计,在排除问题过程中,体验了程序设计及电路设计制作的艰辛,更能够体会到成功的喜悦。

参考文献

[1]张先庭.单片机原理、接口与C51应用程序设计.国防工出版社.2018

[2]吴立新.实用电子技术手册.机械工业出版社.2003

[3]胡汉才.单片机原理及其接口技术.北京:

清华大学出版社,2004.

附录

图1实验电路PCB图

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

当前位置:首页 > 初中教育 > 英语

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

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