单片机数字时钟张斌.docx

上传人:b****4 文档编号:3444969 上传时间:2022-11-23 格式:DOCX 页数:23 大小:379.54KB
下载 相关 举报
单片机数字时钟张斌.docx_第1页
第1页 / 共23页
单片机数字时钟张斌.docx_第2页
第2页 / 共23页
单片机数字时钟张斌.docx_第3页
第3页 / 共23页
单片机数字时钟张斌.docx_第4页
第4页 / 共23页
单片机数字时钟张斌.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

单片机数字时钟张斌.docx

《单片机数字时钟张斌.docx》由会员分享,可在线阅读,更多相关《单片机数字时钟张斌.docx(23页珍藏版)》请在冰豆网上搜索。

单片机数字时钟张斌.docx

单片机数字时钟张斌

摘要

单片微型计算机简称单片机,它是把微型计算机的各个功能部件:

中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及串行通信接口等待集成在一块芯片上,构成一个完整的微型计算机,故又把它称为单片微型计算机。

当今信息科技高速发展,使用方便、低成本电子设备已逐步成为我们日常生活中电子产品的主力军。

用软件代替硬件的电子设备能大大地节省成本,且有利于资源的节约,因此,以软代硬的设计必将成为我们现代设计的主流。

本设计是利用MCS-51系列单片机内部的定时器/计数器进行中数年定时,配合软件延时实现时、分、秒的计时。

该方案节省硬件成本,且能够使设计者在定时/计数器的使用、中数年及程序设计方面得到锻炼和提高,因此本系统将采用软件方法实现计时。

关键词:

单片机数码管程序设计

目录

摘要I

目录II

第1章绪论1

1.1数字时钟的发展史1

1.2设计的目的与意义1

1.3设计的基本思路与主要内容2

第2章数字时钟系统的整体设计3

2.1系统功能要求3

2.2整体方案3

第3章硬件设计与分析5

3.1硬件设计原理5

3.2各单元电路介绍5

3.2.1AT89C51单片机介绍5

3.2.2单片机最小应用系统5

3.2.3显示电路7

3.2.4键盘及其接口8

3.3系统原理图9

第4章软件设计11

4.1主程序的设计11

4.2键输入程序12

4.3显示程序12

2.4中断程序15

第5章调试与运行18

5.1电路仿真18

5.2调试和运行18

结束语19

参考文献20

致谢21

附录程序清单22

第1章绪论

1.1数字时钟的发展史

电子钟有着很长的历史,从民国19年的电钟,研制始於60年代中期的国内电晶体、半导体管钟,到研制始於70年代末的石英电子钟,再到今天我们所用的智能电子钟。

以前的电子钟存在着很多缺点,其外观体积庞大,在功能上有死摆、走时时间不长、走时精确度不高等缺点。

如今无论是外观,还是在功能上,电子钟都有了很大的改进。

虽然世界绝大多数钟表都是中国制造,但钟表对于国内市场来说只是个小行业,2003年总盘子不过才100多亿,但不是没有前景。

近年来,市场在急剧膨胀。

根据国外的统计数据显示,发达国家人均一生拥有手表23块,发展中国家12块,而目前中国的城镇人口人均拥有量不多于6块,空间很大。

比如彩电一般是一个家庭一台,手表则是每人一块,但从销售量来看,光TCL一家公司两个月的彩电销量可以接近300万台,而我们手表每年总共才卖200多万只。

所以绝对不是市场潜力不够的问题,而是我们应该如何去做的问题。

1.2设计的目的与意义

人类的生活包括:

工作、学习、休息以及参与社会的多种实践活动,环环有条理,更加丰富多彩。

应该说时钟的计时功能与人类的各种行为和活动有着密切的联系,于是时钟的作用便体现出来,生活中有许多人,因为只顾工作而忘记时间,从而耽误了重要的安排或者计划,造成不可挽回的损失,使之后悔莫及。

我们要养成良好的时间观念,就需要电子钟时刻提醒我们。

因此,电子钟已成为人们日常生活中必不可少,它的应用非常广泛,应用于家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

现在投入生产的大多是智能时钟,它的功能很全面,但价格有点昂贵,大多数学生或者经济条件较差的人,想要拥有它,都有点困难。

因此,在这里设计一个较简单的电子钟,它能完成计时和校时的功能。

这个时钟系统很简单,投入生产的成本很低,因此,它的价格比较便宜,对于学生很实用。

1.3设计的基本思路与主要内容

设计一个电子产品,首先了解它能实现的功能,时钟系统最基本的功能就是实现计时,在这里设计的数字电子时钟,它能实现计时和校时的功能,给电子钟加上电自动计时,设计三个按键对时间进行调整。

硬件设计很简单,主要包括:

单片机、按键电路、驱动显示电路,以及LED显示器四个部分。

单片机选用AT89C51芯片,它无须外扩程序存储器,设计电路很简单。

由于只用了三个按键,所以采用独立式按键使设计更简单。

显示时、分、秒加两个分隔符,采用两个四位的数码管,用上拉电阻来驱动LED数码管显示字符。

简易数字时钟可实现校时功能,该软件采用汇编语言来实现,主要包括主程序、键输入程序、显示程序、定时程序和中断程序等软件模块。

把源程序加入原理图,做出电子钟的仿真,以秒计数并显示时、分、秒。

其中秒和分为60进制,小时为24进制计数。

可通过按键实现时钟时、分、秒的校正。

第2章数字时钟系统的整体设计

2.1系统功能要求

以单片机技术为核心,充分应用各种外围电路元器件,设计一个通过数码管显示时间(时、分、秒)的电子钟。

要求如下:

1、系统初次上电,显示00时、00分、00秒,并以秒为单位开始计时;

2、运行状态下,按动控制按扭S-SET,对秒进行调整;

3、运行状态下,按动控制按扭M-SET,对分进行调整;

4、运行状态下,按动控制按扭H-SET,对小时进行调整。

2.2整体方案

电子钟的电路图主要由单片机(AT89C51)、键盘电路、驱动显示电路和LED显示器四部分组成,它主要实现时钟的显示,以及对时、分、秒进行调整,即实现调时的功能。

其数字钟系统整体结构如图2-1所示。

图2-1电子钟系统整体结构

(1)显示方案

方案一:

静态显示就是当CPU将要显示的字或字段码送到输出口,显示器就可以显示出所要显示的字符,如果CPU不去改写它,它将一直保持下去;静态显示硬件开销大,电路复杂,信息刷新速度慢。

方案二:

动态显示则是一位一位地轮流点亮显示器地各个位(扫描)。

对于显示器的每一位而言,每隔一段时间点亮一次;动态显示耗能较小,但编写程序较复杂。

动态显示硬件连接简单,信息刷新速度快。

由于本次设计是对时间进行显示,如采用静态显示,则所占用的I/O口较多,电路较复杂,所以在此选择的是方案二,采用动态显示。

(2)键盘方案

方案一:

独立式键盘。

独立式键盘的各个按键相互独立,每个按键独立地与一根数据输入线(单片机并行接口或其他芯片的并行接口)连接。

独立式键盘配置灵活,软件结构简单,但每个按键必须占用一根接口线,在按键数量不多时,接口线占用多。

所以,独立式按键常用于按键数量不多的场合。

方案二:

矩阵式键盘。

矩阵式键盘采用的是行列式结构,按键设置在行列的交点上.(当接口线数量为8时,可以将4根接口线定义为行线,另4根接口线定义为列线,形成4*4键盘,可以配置16个按键。

由于本设计只用了三个按键,不需要采用矩阵式键盘,所以选用第一种方案,采用独立式键盘。

(3)计时方案

采用软件控制:

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

该方案能够使设计者,在设计的过程中容易实现,且节省硬件成本,因此本系统将采用软件方法实现计时。

第3章硬件设计与分析

3.1硬件设计原理

时钟电路的核心是AT89C51单片机,其内部带有2KB的可反复擦写的只读Flash程序存储器和128bytes的随机存取数据存储器(RAM),无须外扩程序存储器。

电脑时钟没有大量的运算和暂存数据,现有的128B片内RAM已能满足要求,也不必外扩片RAM。

系统配备两个四位LED数码管显示和3个独立式按键,用P0口作为键盘接口电路,P1口和P3口作为段码和位码输出口,并在字段码输出口接上拉电阻来驱动LED数码管显示。

利用P0.0、P0.1和P0.2作为功能按键输入口。

3.2各单元电路介绍

3.2.1AT89C51单片机介绍

AT89C51是一个低电压,高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读Flash程序存储器和128bytes的随机存取数据存储器(RAM),器件采用STCMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,所以说AT89C51是一个功能强大的单片机。

AT89C51是一个低功耗高性能单片机,它有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

同时AT89C51的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时/计数器、串行口和外中断口,系统唤醒后即进入继续工作状态。

省电模式中,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。

3.2.2单片机最小应用系统

时钟电路和复位电路是单片机最小应用系统中必不可少的。

单片机时钟电路图,如图3-1所示:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

图3-1单片机时钟电路图

复位是使单片机或系统中的其他部件处于某种确定的初始状态。

单片机的工作就是从复位开始的,当在单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。

实际应用中,复位操作有两种基本的形式:

一种是上电复位,另一种是上电与按键均有效的复位。

由于本次设计采用的是上电复位,所以这里只介绍上电复位,如下图3-3所示:

图3-3上电复位电路

上电复位要求接通电源后,单片机自动实现复位操作。

常用的上电复位如上图所示。

上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。

3.2.3显示电路

一、七段LED显示器的原理

显示器是单片机应用系统常用的设备,包括LED、LCD等。

LED显示器由若干个发光二极管组成。

七段LED通常构成字型“8”,还有一个发光二极管用来显示小数点。

每段LED分别引出一个电极,电极的名为A、B、C、D、E、F、G、DP,其中DP是小数点段的引出电极。

当发光二极管导通时,相应的一个笔画或一个点就发光。

控制相应的二极管导通,就能显示出对应字符。

说明:

在该设计中,没有用到电极(DP),而是用单位的数码管来显示分隔符,其

七段LED显示器如图3-4所示

图3-4七段LED显示器

二、动态显示

本设计共用了两个四位LED显示器,因此采用动态显示方式。

所谓动态显示就是一位一位的轮流点亮显示器的各个位。

对于显示器的每一位而言,每隔一段时间点亮一次。

虽然在同一时刻只有一位显示器在工作,但由于人眼的视觉暂留效应和发光二极管熄灭时的余晖,我们看到的却是多个字符“同时“显示。

显示器亮度既与点亮时的导通电流有关,也与点亮时间长短和时间间隔有关。

显示器的位数不大于8位,则控制显示器公共极电位只需要一个I/O接口,称为扫描口或字位口,控制各位LED显示器所显示的字型也需要一个8位接口,称为段数据口或字型口。

3.2.4键盘及其接口

键盘是由若干个按键组成的,它是单片机最简单的输入设备。

通过键盘输入数据或命令,就可实现简单的人机对话。

一、按键的抖动现象

按键就是一个简单的开关。

当按键按下时,相当于开关闭合;当按键松开时,相当于开关断开。

按键在闭合和断开时,触点会存在抖动现象。

按键抖动时间一般为5ms~10ms,抖动可能造成一次按键的多次处理问题。

应采取措施消除抖动的影响。

消除的方法很多,本设计采用软件延时的方法来消除抖动。

当单片机检测到有按键按下时先定时,然后再检测按键的状态,若仍是闭合状态则认为真的有键按下。

当检测到按键释放时,亦需要做同样的处理。

二、按键电路

独立式键盘的各个按键相互独立,每个按键独立地与一根数据输入线(单片机并行接口或其他芯片的并行接口)连接。

独立式键盘配置灵活,软件结构简单,但每个按键必须占用一根接口线,在按键数量不多时,接口线占用多。

所以,独立式按键常用于按键数量不多的场合。

该设计只用了三个按键,来实现功能控制。

在运行状态下,按动控制按扭S-SET,可对秒进行调整;按动控制按扭M-SET,可对分进行调整;按动控制按扭H-SET,可对时进行调整;因此采用独立式键盘方式,设计起来比较简单。

如图3-5所示

图3-5键盘电路

3.3系统原理图

AT89C51的P1口接入三个按键,对时、分、秒进行调整。

P0口输出字段码,控制要显示的字符,外接上拉电阻,驱动LED显示。

P3口输出字位码,去控制要显示的位,其原理图如图3-6所示。

图3-6电子钟原理图

当接入电源时,数字电子钟以秒为单位开始计时。

运行状态下,按下控制按键S-SET,对秒进行调整;按下M-SET调整分钟;按下H-SET对小时进行调整。

这样通过三个按键,分别对时、分、秒进行调整,从而实现调时。

第4章软件设计

在软件设计中,整个程序的主框架是以定时1s计算的方式来实现电子钟。

定时1s的程序段,使用动态显示程序实现延时,既完成了延时,也完成了数字的显示。

在计算程序中,使对应于时、分、秒的变化量按照60进制和24进制进行计算,动态显示程序直接引用这些变量,达到显示的数字也随之不断变化,即完成了电子钟的功能。

其软件功能模块主要有键输入程序、中断程序、显示程序,以及延时程序。

需要说明的是,这里设计的是简易的电子钟,主要是用程序运行来计算时间,这样用程序来确定出1s的时间精度是很有限的,所以整个时钟的精度不太高。

4.1主程序的设计

初始化将时、分、秒各单元的内容清空,置T0为计数器方式1,分别给计数器的高8位和低8位赋计数初值,启动T0工作。

键入一个按键,如执行此动作,秒值加1,否则重新键如按键。

主程序模块:

主程序流程图,如图4-1所示

图4-1主程序流程图

4.2键输入程序

键输入程序用于调整时间。

以秒为例,按下按键S-SET,判断S-SET是否真的被按下,若没有键按下,转到A1程序段,再次键入按键,重新判断。

若按键按下了,则调用延时程序,消除抖动现象秒值加1,当秒值大于60时,秒清零,进行下一次计时,同时分加一,并转到J0显示。

此过程循环执行,其程序流程图如图4-2所示:

图4-2键输入程序流程图

按键子程序如下:

if(k1==0){_delay_ms(40);if(k1==0)h=(h+1)%24;}

if(k2==0){_delay_ms(40);if(k2==0)min=(min+1)%60;}

if(k3==0){_delay_ms(40);if(k3==0)miao=(miao+1)%60;}

 

4.3显示程序

显示其时、分、秒的数值,和两个分隔符。

以显示秒为例,当P3.7输入高电

平时,秒的个位所对应的字段码点亮,显示其秒的个位;当秒有十位输入时,P3.6输入高电平,秒所十位对应的字段码点亮,显示其秒十位。

其程序流程图如图4-3所示:

图4-3显示程序流程图

数码管显示子程序如下:

voiddispaly()

{

//------------------------------------------

//显示时间

//------------------------------------------

//载入第12345678个数码管显示缓冲-

num[0]=SEG7[h%100/10];

num[1]=SEG7[h%10];

num[2]=dian;

num[3]=SEG7[min%100/10];

num[4]=SEG7[min%10];

num[5]=dian;

num[6]=SEG7[miao%100/10];

num[7]=SEG7[miao%10];

PP=~num[0];

//送位码

q1=0;

//延时后关闭位码

_delay_ms

(2);

q1=1;

//送段码---------------

PP=~num[1];

//送位码

q2=0;

//延时后关闭位码

_delay_ms

(2);

q2=1;

//送段码---------------

PP=~num[2];

//送位码

q3=0;

//延时后关闭位码

_delay_ms

(2);

q3=1;

//送段码---------------

PP=~num[3];

//送位码

q4=0;

//延时后关闭位码

_delay_ms

(2);

q4=1;

//送段码---------------

PP=~num[4];

//送位码

q5=0;

//延时后关闭位码

_delay_ms

(2);

q5=1;

//送段码---------------

PP=~num[5];

//送位码

q6=0;

//延时后关闭位码

_delay_ms

(2);

q6=1;

PP=~num[6];

//送位码

q7=0;

//延时后关闭位码

_delay_ms

(2);

q7=1;

//送段码---------------

PP=~num[7];

//送位码

q8=0;

//延时后关闭位码

_delay_ms

(2);

q8=1;

}

4.4中断程序

中断程序主要用于控制显示的字符。

当秒值大于60时,秒清零,重新计数,分值加1,秒、分同时显示;当分值大于60时,分清零,重新计数,小时加1,秒、分、时同时显示,当小时大于23时,一天的计时完毕,秒、分、时均清零,进行第二天的计时。

此任务循环执行。

其程序流程图如图4-5所示:

图4-5中断程序流程图

子程序如下:

voidTime0()interrupt1

{

//重装初值50ms;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

//时间缓冲+1;

jishu1=jishu1+1;

if(jishu1>=20)

{

jishu1=0;

miao++;

if(miao>59)

{

min++;

miao=0;

if(min>59){h=h+1;min=0;}

if(h==24)h=0;

}

}

}

第5章调试与运行

5.1电路仿真

本设计的电路在单片机仿真软件Proteus中进行仿真,仿真电路如图5-1所示:

图5-1电子钟仿真电路图

5.2调试和运行

在KEIL(单片机编程软件)C51软件中编写好程序,将程序放入单片机仿真软件中,结合硬件电路进行调试与运行。

通过按键对时间进行调整。

如显示时间为05-02-12,既是05点02分12秒,通过以下调整则可实现。

(1)按动S-SET键,将秒调到12;

(2)按动M-SET键,将分调到02;

(3)按动H-SET键,将时调到05。

则将时间调到了所要显示的时间05-02-12,通过此方法可将时间调整到任何需要显示的时间。

结束语

因为单片机的种类多,而型号杂,也是我们学习中的困难,所以就MCS—51系列的产品来说,就是一个典型的学习方法。

对于类似c语言的单片机编程过程,也是一个十分有趣的过程。

为了更好的说明,我以上介绍先从应用电路切入,同时介绍它们的使用方法,以便能快速掌握它们的应用。

通过本次的课程设计,我学会了单片机的一般设计过程,通常都要进行系统扩展与配置,因此,要完成一个单片机的设计工作,必须依次做到下述工作:

1、硬件电路的设计、组装与调试;2、应用软件的编写、调试;3、完整应用软件的调试、固化和脱机运行。

而在进行硬件系统设计时我们应当尽量做到:

1、尽可能的选择典型电路,并符合单片机的常规使用方法;2、在充分满足系统功能要求前提下,留余地以便于二次开发;3、硬件结构设计应与软件设计方案一并考虑;4、整个系统相关器件要力求性能的匹配;5、硬件上要有可靠性与抗干扰设计;6、充分考虑单片机的带载驱动能力。

所以我用单片机编写了上面的程序,因为基础知识学的不怎么好,如有错误之处,还望老师理解,并加以批改。

通过这次设计使我对单片机有了更深入的了解。

培养了我的动手实践能力。

参考文献

[1].朱永金等主编,《单片机应用技术》,中国劳动社会保障出版社。

[2].彭冬明.韦友春主编,《单片机实验教程》,理工大学出版社。

[3].朱家建主编,《单片机原理及应用》,机械工业出版社。

[4].胡汉才主编,《单片机原理及接口技术》,清华大学出版社。

[5].张伟主编,《单片机原理及应用》,机械工业出版社。

致谢

本文从拟定题目到定稿,经历了很长一段时间。

在本论文完成之际,首先要向我的导师*老师致以诚挚的谢意。

在论文的写作过程中,老师不厌其烦地为我讲解毕业设计中繁琐的问题,并且多次提出宝贵意见,使我的毕业设计能够更完整,更充实。

同时,还要感谢这几年中孜孜不倦的为我们讲课的老师们,是他们毫无保留地将他们的知识传授给我们,才使得今天的我能够顺利的完成我的毕业设计,感谢揭阳职业技术学院,是这里给我提供了良好的学习环境和生活环境,让我的大学生活丰富多彩,让我对今后的生活更加充满了信心。

另外,衷心感谢我的同窗同学们,在我毕业论文写作中,与他们的探讨交流使我受益颇多;同时,他们也给了我很多无私的帮助和支持,我在此深表谢意!

最后,向我亲爱的家人和朋友表示深深的谢意,他们给予我的爱、理解、关心和支持是我不断前进的动力。

 

附录程序清单

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#definePPP0

ucharcodeSEG7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

//显示缓冲

ucharnum[]={1,2,3,4,5,6,7,8};

uchardian=0xbf;

//定义数码管显示位码的端口P20--P25

sbitq1=P2^7;

sbitq2=P2^6;

sbitq3=P2^5;

sbitq4=P2^4;

sbitq5=P2^3;

sbitq6=P2^2;

sbitq7=P2^1;

sbitq8=P2^0;

//按键123456

sbitk1=P1^3;

sbitk2=P1^2;

sbitk3=P1^0;

//显示时间

uinth=0;

uintmin=0;

uintmiao=0;

//计数器计时变量

uintjishu1=0;

//时分秒变量

uinth1=18;//

uintm1=0;//

uints1=20;//

 

//延时函数ms

void_delay_ms(uintt)

{

uinti,j;

for(i=0;i

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

}

//延时函数us

void_delay_us(uchart)

{

while(t>0)t--;

}

//显示子函数

voiddispaly()

{

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

当前位置:首页 > 表格模板 > 合同协议

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

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