基于51单片机的电子时钟的设计Word文件下载.docx

上传人:b****2 文档编号:1052363 上传时间:2023-04-30 格式:DOCX 页数:18 大小:343.19KB
下载 相关 举报
基于51单片机的电子时钟的设计Word文件下载.docx_第1页
第1页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第2页
第2页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第3页
第3页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第4页
第4页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第5页
第5页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第6页
第6页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第7页
第7页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第8页
第8页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第9页
第9页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第10页
第10页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第11页
第11页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第12页
第12页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第13页
第13页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第14页
第14页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第15页
第15页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第16页
第16页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第17页
第17页 / 共18页
基于51单片机的电子时钟的设计Word文件下载.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的电子时钟的设计Word文件下载.docx

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

基于51单片机的电子时钟的设计Word文件下载.docx

00开始计时。

没有按键按键按下时,时钟正常运行,当按下调剂时钟按键K1,就会关闭时钟,当按下闹钟按键K3不时钟就会进入设置时刻界面,可是时钟可不能停止工作,按K2键,,就能够够对时钟和闹钟要设置的时刻进行调整。

2硬件电路设计

(1)时钟电路设计

单片机利用外部12MHZ晶振组成振荡电路作为时钟源,时钟电路的原理如下图。

图2时钟电路图

(2)独立按键输入电路

按键处置设置为:

当有没键按下时,时钟正常运行;

当按一次K1,时钟停止走动,按K2对秒进行调整;

当K1按2次时,按K2对分进行调整;

当K1按下3次时,按K2对小时进行调整,当按下4次K1时,校时完毕,时钟按设定的时刻进行正常走时。

当按1次K3进入闹钟设置界面,时钟继续进行走时,按K2对秒进行设置;

当按2次K3,按K2对分进行设置;

当按3次K3,按K2对秒进行设置;

当按下4次K3时,闹钟设置完毕进入时钟显示界面。

电路图如下图

图3独立按键电路

(3)单片机系统

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处置器,俗称单片机。

外形及引脚排列如下图

图4单片机系统图

(4)LCD液晶显示

LCD1602采纳标准的16脚接口,第1脚:

VSS为电源地;

第2脚:

VDD接5V电源正极;

第3脚:

V0为液晶显示器对照度调整端,接正电源时对照度最弱,接地电源时对照度最高;

第4脚:

RS为寄放器选择,高电平1时选择数据寄放器、低电平0时选择指令寄放器;

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作;

第6脚:

E(或EN)端为使能(enable)端。

第7~14脚:

D0~D7为8位双向数据端;

第15~16脚:

空脚或背灯电源。

电路如下图

图5LCD液晶显示图

3软件设计

本系统的软件系统要紧可分为主程序、按时计数中断程序、时刻调整程序、延时程序四大模块。

系统的流程图如下图

设计思路:

本系统要紧可分为主程序、按时计数中断程序、时刻调整程序、延时程序和LCD液晶驱动程序。

按时中断程序是利用单片机内部按时器0实现1秒的按时,然后利用软件延时实现分小时,时刻调整程序是利用单片机的内部存贮器,把调整好的时刻写到显示时刻的存贮单元,然后启动按时器开始计时并显示,延时程序是利用软件实现延时达到去抖的目的。

液晶启动程序是为了把单片机的数据送到显示器的同时让显示器的第6脚使能断的电平实现由1到0的跳变,使显示器执行显示的命令。

主程序确实是利用这些子程序中断程序实现显示、按时、闹钟等功能。

4调试分析及说明

(1)时钟正常运行调试仿真图

图6正常运行仿真图

(2)闹钟调试仿真图

图7对闹钟时刻进行设置

图8设置好的闹钟时刻

图9闹钟响铃

(3)时刻调整仿真

图10对时分秒的调整

5结论

本次电子时钟的设计大体完成:

当没有键按下时,时钟正长运行;

当K1按下3次时,按K2对分进行调整,当按下4次K1时,校时完毕,时钟按设定的时刻进行正常走时。

参考文献

一、《单片机原理及应用》李建忠编西安电子科技大学出版社。

二、《单片微型运算机原理与接口技术》顶峰编电子工业出版社。

3、《单片机应用新技术教程》邹逢兴编高等教育出版社。

4、《16位微型运算机原理接口及其应用》朱宇光编电子工业出版社。

五、《微型运算机原理与接口技术》吴秀清编中国科学技术出版社。

六、《微型运算机接口技术》邓亚平编清华大学出版社。

7、《单片机原理及及应用》王迎旭编机械工业出版社。

课设体会

两周的课程设计到目前为止能够说是告一段落了,我也顺利的完成了自己的课题简易电子时钟的设计,由于自己一心预备考研在这次课程设计上除那些必要的时刻其余也么有花太多的时刻,本想改良的第三个跑表功能由于在程序上出了点问题就没花时刻去做了,因此这次设计还不算很完美

刚开始被拿到那个课题的,感觉挺迷茫的,那时就只明白软件编程要用到按时器,自己也就在这方面懂一点,其余的关于硬件电路,液晶显示电路的驱动的什么都不明白,后来回来以后就看了一下51单片机课程设计那本书,在网上找了一些资料对硬件电路的设计有了必然的了解。

在大脑里面有了一个大致的思路了,于是就把仿真软件装好开始了我的课设。

本次课设让我对单片机有了更深切的熟悉,现代社会中几乎处处都有单片机的影子,电子产品离不开它。

课设提高了我的单片机实际运用能力,也发觉了自己以前学习的不扎实,对问题不求甚解。

此刻才明白“书到历时方少”啊!

学习仍是得扎实。

本次课设能顺利完成,甚是感激指导老师的帮忙。

[2012年7月16日完成]

附录1电路原理

附录2程序清单

#include<

>

#defineucharunsignedchar

#defineuintunsignedint

uchartable[]="

TIME"

;

sbitlcden=P3^4;

sbitlcdrs=P3^5;

sbitbeep=P3^6;

externvoidkey1();

externvoidkey2();

externvoidkey3();

ucharnum,hour=12,minite,second,

ahour,aminite,asecond,a,F_k1,F_k2,F_k3;

voiddelay(uintz)

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

voidwrite_com(ucharcom)

lcdrs=0;

P0=com;

delay(5);

lcden=1;

lcden=0;

voidwrite_data(uchardate)

lcdrs=1;

P0=date;

voidwrite_add(ucharadd,uchardate)

ucharaa,bb;

aa=date/10;

bb=date%10;

write_com(0x80+add);

write_data(0x30+aa);

write_data(0x30+bb);

voidinit()

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

voiddisplay(ucharh,ucharm,uchars)

write_com(0x80+0x04);

write_data('

:

'

);

write_data(0x30+(h/10));

write_data(0x30+(h%10));

write_data('

write_data(0x30+(m/10));

write_data(0x30+(m%10));

write_data(0x30+(s/10));

write_data(0x30+(s%10));

'

voidmain()

init();

TMOD=0X01;

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

EA=1;

TR0=1;

ET0=1;

for(num=0;

num<

4;

num++)

write_data(table[num]);

while

(1)

key1();

key2();

key3();

if(ahour==hour&

&

aminite==minite&

second<

10)

beep=~beep;

if(F_k1==0&

F_k3==0)

display(hour,minite,second);

voidtimer0()interrupt1

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

a++;

if(a==20)

a=0;

second++;

if(second==60)

second=0;

minite++;

if(minite==60)

minite=0;

hour++;

if(hour==24)

hour=0;

#include"

"

sbitk1=P1^0;

sbitk2=P1^1;

sbitk3=P1^2;

externucharF_k1,F_k3,second,minite,hour,ahour,aminite,asecond;

externvoidwrite_com(ucharcom);

externvoidwrite_add(ucharadd,uchardate);

externvoiddisplay(ucharh,ucharm,uchars);

voiddelay_key(inti)

{while(i--);

voidkey1()

if(k1==0)

delay_key(100);

if(k1==0)

TR0=0;

while(!

k1);

F_k1++;

if(F_k1==4)

F_k1=0;

if(F_k1==1|F_k3==1)

write_com(0x80+0x0c);

write_com(0x0f);

if(F_k1==2|F_k3==2)

write_com(0x80+0x09);

if(F_k1==3|F_k3==3)

write_com(0x80+0x06);

voidkey2()

if(k2==0)

k2);

if(F_k1==1)

write_add(0x0b,second);

if(F_k1==2)

write_add(0x08,minite);

if(F_k1==3)

write_add(0x05,hour);

if(F_k3==1)

asecond++;

if(asecond==60)

asecond=0;

write_add(0x0b,asecond);

if(F_k3==2)

aminite++;

if(aminite==60)

aminite=0;

write_add(0x08,aminite);

if(F_k3==3)

ahour++;

if(ahour==24)

ahour=0;

write_add(0x05,ahour);

voidkey3()

if(k3==0)

k3);

F_k3++;

if(F_k3==4)

F_k3=0;

display(ahour,aminite,asecond);

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

当前位置:首页 > 工程科技 > 能源化工

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

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