基于单片机的时钟设计Word文档格式.docx

上传人:b****4 文档编号:18398106 上传时间:2022-12-16 格式:DOCX 页数:16 大小:306.31KB
下载 相关 举报
基于单片机的时钟设计Word文档格式.docx_第1页
第1页 / 共16页
基于单片机的时钟设计Word文档格式.docx_第2页
第2页 / 共16页
基于单片机的时钟设计Word文档格式.docx_第3页
第3页 / 共16页
基于单片机的时钟设计Word文档格式.docx_第4页
第4页 / 共16页
基于单片机的时钟设计Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于单片机的时钟设计Word文档格式.docx

《基于单片机的时钟设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的时钟设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

基于单片机的时钟设计Word文档格式.docx

利用单片机内部的定时计数器进行中端定时,配合软件延时实现时、分、秒的计时。

该方案节省硬件成本,但程序设计较为复杂。

2.显示方案

对于实时时钟而言,显示显然是另一个重要的环节。

通常LED显示有两种方式:

动态显示和静态显示。

静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。

但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂。

需要几个LED就必须占有几个并行口,比较适用于LED数量较少的场合。

当然当LED数量较多的时候,可以使用单片机的串行口通过移位寄存器的方式加以解决,但程序编写比较麻烦。

LED动态显示硬件连接简单,但动态扫描的显示方式需要占有CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。

最终选择方案:

本系统需要采用8位LED数码管来分别显示时、分、秒,因为本实验中我们I/O口线比较多,所以选用动态显示,数码管连接方式为共阴极,键盘中S1键调时,S2键调分。

(三)硬件部分

1、STC89C52单片机介绍

AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

它的部分引脚功能介绍如下。

P0口:

P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。

作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。

P1口:

P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

P2口:

P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

P3口:

P3口是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

2.74HC573芯片:

  74HC573是高性能硅门CMOS器件,八进制3态非反转透明的锁存器,SL74HC573跟LS/AL573的管脚一样。

输入是和标准CMOS输出兼容的;

加上拉电阻,他们能和LS/ALSTTL输出兼容。

当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。

当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。

   

2.KeilC51介绍及使用

本设计中源程序程序的编写与调试是在KeilC51集成环境uVision中进行的。

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,界面友好,操作简单。

另外重要的一点是只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

(1)建立一个新的工程:

:

单击“Ptoject”菜单,在弹出的下拉菜单中选择“NewProject”选项。

然后选择你要保存的路径,输入工程的名字然后点击保存。

这时会弹出一个对话框,要求你选择单片机的型号,根据你所用的单片机来选择,KeilC51几乎支持所有的51内核的单片机,在本设计中选择的是AT89S51。

(2)编写程序:

单击“File”菜单,在下拉菜单中选择“New”,这时编辑窗口会出现一个Text1窗口,光标在该窗口中闪烁,首先保存该空白文档,单击菜单上的“File”,在弹出的下拉菜单中选择“SaveAs”选项,在出现的对话框中键入欲使用的文件名并同时键入正确的后缀名(本设计中为.c),然后保存。

回到编辑界面后,单击“Target1”前面的“+”,然后在“SourceGroup1”上单击右键,在弹出菜单中选择“AddFilestoGroup’SourceGroup1’”,选中设计所需要的源程序文件,然后单击“Add”,这时注意到“SourceGroup1”文件夹中多了若干个子项,子项的多少跟所增加的源程序的多少相同。

这时就可以键入应用程序了。

KeilC51会自动识别关键字,并以不同的颜色提醒用户加以注意,这样会使用户少犯错误,有利于提高编程效率。

(3)编译并生成HEX文件:

程序编写完成以后,单击“Ptoject”菜单,在下拉菜单中选择“BuiltTarget”选项,或者使用快捷键F7。

编译成功后右击“Target1”在弹出菜单中选择“OptionsForTarget’Target1’”,在弹出的对话框中选择“Output”选项中的“CreatHEXFile”选项使程序编译后产生HEX代码,供下载器软件使用。

3.烧录器的使用

本设计中程序是用Easy51Pro编程器烧写的。

Easy51Pro编程器是一款操作简单、容易自制、容易扩充、非常稳定、灵活的ISP编程器。

它支持hex文件,有重载的文件对话框,让你不必到处去找文件而且有热键支持,让我们调试程序时效率更高。

接好编程器的硬件电路后,在最上方选择你要编程的器件后点击“检测器件”,如果检测到了器件,左边的状态栏就会显示“检测到器件”并显示该器件的ROM与编程电压的大小特性。

检测到器件以后单击“操作”中的“自动打开文件”选项,在弹出的对话框中打开要烧录的程序的hex文件,然后单击“自动完成”选项,烧写完毕后如果显示“0个单元不对”就说明程序烧写成功了。

当然在烧录过程中会碰到一些问题,比如检测器件时,时有时无,这是下载线不稳定的表现,如果不能检测到器件,但是却可以正常读写,并且效验无误,这个就是单片机的问题了,可能单片机已经坏了,如果写器件时总是写到某个地址就停顿,然后报告失败;

或者可以顺利写完,但效验时显示有单元不正确,最可能的原因是电源不稳定,电缆太长,线路没焊好,器件质量问题等,也可能与电脑性能有关,特别是开启了很多程序的时候。

4.数码管显示部分

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f代表段码值0~9

时钟显示校正电路

本设计利用按键开关来校正时钟显示的数字。

当按钮按下时,将在相应的端口输入一个低电平,通过相应的程序来改变时钟显示。

其中S1按键开关用来修改时;

S2按键用来修改分。

P3.0,P3.1设置为高电平,LCDEN即连接单片机P3.4的设置为低电平。

如当S1按键按下时,P3.0变成低电平,反馈到单片机,然后通过软件使时单元加1。

9、总电路原理图

(五)软件部分

根据上述电子时钟的工作流程,软件设计可分为以下几个功能模块:

(1)主程序模块。

开始

设定时钟初值

调用键盘扫描程序

数码管显示程序

时钟处理程序

主程序流程图

保护现场

调用键盘设置子程序

调用显示子程序

返回

时间设置流程图

显示模块。

该模块完成时分秒8位LED的动态显示。

当按下S1键后,时加一,当按下S2键后,分加一,显示程序流程图如下图所示。

扫描键盘

调用显示程序有键按下?

调用显示程序

有键按下?

求取键号

键盘扫描程序流程图

程序:

/*------------------------------------------------------*/

#include<

reg52.h>

//头文件

#defineucharunsignedchar

#defineuintunsignedint

#defineweiP0//位码输出口

sbitdula=P2^6;

sbitwela=P2^7;

ucharsecond,minute,hour,j,q,;

//时分秒定义

ucharcodeduanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//显示段码值0~9

display();

delay(uintk);

clear();

chuli();

ucharq;

/*********************************************************************************************

函数名:

主函数

/**********************************************************************************************/

main()

{

second=0;

//初

minute=59;

//始

hour=23;

//值

//////////////////主循环///////////////////////////////

while

(1)

{

display();

//调用显示子函数

chuli();

}

}

/////////////////////////////////////////////////////////////////////////////////////////////////

//函数功能:

在8位数码管上显示时分秒

//输出端口:

P0

display()

{

////////////////////////////////////

//时

wela=1;

wei=0xfe;

wela=0;

wei=duanma[hour/10];

dula=1;

dula=0;

delay(10);

clear();

wei=0xfd;

wei=duanma[hour%10];

///////////////////////////////////

//显示“-”

wei=0xfb;

wei=0x40;

//分

wei=0xf7;

wei=duanma[minute/10];

wei=0xef;

wei=duanma[minute%10];

wei=0xdf;

///////////////////////////////////////

//秒

wei=0xbf;

wei=duanma[second/10];

wei=0x7f;

wei=duanma[second%10];

//////////////////////////////////////////

//时间处理子函数

chuli()

q++;

if(q==5)

{

if(second<

59)//判断秒钟是否加到60

{second++;

else

{second=0;

if(minute<

59)//判断分钟是否加到60

{minute++;

else

{minute=0;

if(hour<

23)//判断时间是否加满一天

{hour++;

else

hour=0;

}}}}

delay(uintk)

{uinti,j,z;

for(z=k;

z>

0;

z--)

{for(i=2;

i>

i--)

{for(j=2;

j>

j--);

}}}

clear()

wei=0xff;

wei=0x00;

三、实验成果:

1、电路仿真效果图:

2、实物拍摄效果图:

四、设计总结

经过短短一周的课程设计,感触颇多。

因为单片机已经很久没复习,刚拿到题目,不知道从哪入手,后来通过对书本的回顾,加深了对单片机的记忆。

本次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。

单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。

实践中获得的知识能让我对单片机的知识有更好的认识和理解。

虽然这次的课程设计我参考了不少资料,没有做到创新应用,但我对C语言的编程有了一个全新的认识,我明白了许多。

这次课程设计的最大收获是:

只有把理论用到实践中我们才能真正掌握好所学知识。

时间是检验真理的唯一标准。

四、参考文献

[1]楼然笛.单片机开发[M].北京:

人民邮电出版社,1994.

[2]付家才.单片机控制工程实践技术[M].北京:

化学工业出版社2004.3.

[3]李光才.单片机课程设计实例指导[M].北京:

北京航空航天大学出版社2004.

[4]朱定华.单片机原理及接口技术实验[M].北京:

北方交通大学出版社2002.11.

[5]刘湘涛.江世明.单片机原理与应用[M].北京:

电子工业出版社,2006.

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

当前位置:首页 > 总结汇报 > 工作总结汇报

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

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