当前位置:文档之家› 51数字时钟参考资料 单片机毕业设计资料

51数字时钟参考资料 单片机毕业设计资料

51数字时钟参考资料 单片机毕业设计资料
51数字时钟参考资料 单片机毕业设计资料

51数字时钟参考资料单片机毕业设计资料

单片机引脚图和结果框图如下图1和图2所示:

图1 AT89C51引脚图

图2 内部结构图3、硬件模块设计

3.1系统硬件框图

其核心部件是89C51单片机,由89C51单片机内部定时器及循环延时确定时间,并且通过扫描驱动8位数码管来显示计数器时间,还可以通过外部中断校对时间和设置闹钟,并且检测闹钟开关,如果闹钟时间到,则驱动蜂鸣器。

3.2数据流图

4、硬件电路设计

4.1晶体振荡器电路

晶体振荡器电路给数字钟提供一个频率稳定准确的12MHz的方波信号,可保证数字钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。给单片机提供时钟的电路图有如下两种:

由于我本次设计主要是针对数字钟的设计,并且外部时钟源不好加到电路中,精度又不是特别高,所以我选用内部时钟方式。

4.2蜂鸣器驱动电路

为了能在设置的闹钟时间很方便的提示我们,需要通过蜂鸣器的报警来提醒,由于单片机输出的方波驱动能力太弱,要使蜂鸣器发出的声音更亮些,需要加上驱动电路。驱动电路我采用PNP管9012,具体电路图如下所示:

4.3复位电路设计

复位电路分两种方式,分别是上电自动复位和按键手动复位。

上电自动复位电路是在加电瞬间电容通过充电来实现的,其电路图如下所示。在通电瞬间,电容C通过电阻R充电,RST端出现正脉冲,用以复位。只要电源VCC的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。

手动复位是指通过一按钮开关,使单片机进入复位状态。系统上电运行后,若需要复位,一般是通过手动复位来实现的。通常采用手动复位和上电自动复位组合,其电路如下图所示。

a.上电复位

b.按键电平复位

由于设计的数字钟无需上电复位,所以采用按键电平复位,如上b 图所示。 4.4位选及数码管驱动电路

为了让数码管的显示更清晰,我选用74HC573锁存器来驱动数码管。由于8位数码管的显示是经过一位一位显示的,当它的扫描频率在50Hz~100Hz 之间时,我们就不会看出它的位显示,并且显示的亮度正好合适,数码管的位选我通过3-8译码器74HC138,具体连接关系如下图所示:

4.5单片机最小系统

单片机的最小系统由4部分构成,分别是:单片机、振荡电路、复位电路、RAM 和ROM 。具体组成如下所示:

位选

锁存驱动

单片机最小系统图

4.6电源电路

单片机正常工作是+5V电压,本次设计不做电源部分,采用USB供电,由于USB供电较为稳定,所以不需要稳压部分,直接给单片机供电,这样就减少了7805稳压模快。具体电路如下所示:

USB供电

5、PCB板的制作

本次设计的数字钟系统中由于频率不是特别高,所以在设计PCB板时不存在考虑走线之间频率干扰问题,但由于设计规定了PCB板的大小为7*9cM,并且是单面板,所以对我们的设计带来了一定的难度,在设计中不得不通过走飞线的方式完成PCB板的制作。

5.1 PCB板的制作规则

我在数字钟设计中采用Orcad软件平台,完成了PCB的制作,在PCB的设计中需注意以下的一些规则:

(1)在Orcad中制作PCB时一定要注意板层的设置,我们本次设计的是单面板,所以需将Bottom层设为走线层,TOP层设为丝印层(DOC层),别的板层全部设为不走线层。

(2)由于本次设计的单面板大小规定为7*9Cm,所以在开始制定板框大小时,在Global层画边框时,将其设置为规定的大小,然后根据一定的规则放

置元件,放置元件时应让元件间的走线距离最小。

(3)放置元件时须注意一些规则,例如将单片机的晶振和电容靠近单片机放置,将电源供电的USB接口靠近板框放置等。

(4)在放置完元件之后,进行布线时需注意一些走线时的设置,最重要的是元件过孔的孔径设置,为了制作方便,本次制作设为0.6mm、0.8mm、

1.2mm,当然,设置了孔径,还需注意焊盘的大小,软件默认的焊盘大

小一般太小,焊接时不太方便;其次是走线的安全间距设置,走线间距

一般默认为软件的设置,即0.3mm;下来就是走线的一些规则设置,如

果是自动布线,则可设置布线时的一些规则,如果是手工布线,则可根

据需要进行布线。

(5)在走线时一定要注意电源走线的设置,电源的走线一定要宽,这样承载的电流会更大,电流的大小与走线的宽度之间有一定的计算公式,可以

作参考。为了使单面板的布线方便,飞线更少,我们将地线设为敷铜种

子,在敷铜时与大面积的铜相接。

5.2 飞线的处理

由于制作的是单面板,难免有很多的飞线,在制作完PCB板之后,需处理飞线。经常选取的办法是打过孔,这样在加工之后可以采用飞线将其连接。当然,飞线的多少取决于布线的水平高低。有时为了减少飞线而走很远的路,这样带来高频的影响,我觉得这种方法应该避免。

5.3 PCB制作中的注意事项

(1)要注意焊盘的大小、过孔的大小、走线的安全间距及走线的宽带,在适当的时候应该用游标卡尺进行测量,保证元器件能够合适的插进去。(2)对于一些自己制作的原件封装,一定要测量使之合理。

(3)电源走线一定要宽,实际上是越宽越好,但过宽会影响布线的效率。适当的时候我们可以大概的计算一下,使之更加合理。

(4)在布线时我们一定要弄清楚板层,有时一个放错了板层的字符,会带来制作时的困难,要想合理的完成制作,必须清楚板层。

(5)首次在PCB板上放置USB接口,一定要注意正负极不能接反。

(6)如果有必要,可以在每个芯片的VCC极和GND极之间跨接一个

0.01~0.1uF之间的瓷片电容。为了使电源电压稳定,可以在电源电压与地

之间接一个滤波电容,如果电源电压波动较大,则可以使用稳压芯片来

稳压。

(7)在敷完铜之后,需要观察敷铜区域,避免有些接地的敷铜区域形成孤岛。

如果存在孤岛,则需要与最近敷铜区连接起来,经常采用打过孔走飞线

的方式使其连接起来。

(8)在放置元件时,由于设置了安全间距,元件放置较近时会出现报错提示,但这对PCB板的制作是没影响的。

6、软件模块的设计

本次设计单片机数字钟,供可选择的语言有汇编语言和C语言两种选择,从总体角度考虑,两种语言各有其优缺点。汇编语言在编写过程中可以较容易的计算出机器周期,这样可以计算出相应的延时与误差,并且在编译过程中精度较高,执行效率也较高,是各种语言中执行效率最高的一种。相反,汇编语

言又是一种较为低级的语言,编写起来难度较大,程序量也较大,不易编写大规模的系统。C语言它的灵活性较强,语法功能也比较强大,对于同一个设计,与汇编语言相比,工作量较小,完全可以实现汇编无法实现的一些功能。虽然C 语言具有强大的功能,但也有不足之处,比如在循环延时时不易计算出相应的机器周期,还有,采用不同的编译器,可能以不同的方式编译出不同的机器码。

由于本次设计的单片机数字钟编程量较大,又考虑到后面的工作过程中将大量使用C语言编程,所以本次编写过程采用C语言,基于Kiel C3软件来完成软件模块的设计工作。

6.1数字钟总体设计框图

编程设计数字钟大家可能最常用的就是采用单片机中的定时器定时的方法,由于定时器不能一次定时1s,所以需采用定时一定的时间,循环叠加的方法,加到一秒后,将其显示的秒加一,然后判断分和时是否加一,这样就完成了数字钟的最基本制作。

我在此次设计中采用的方法完全不同于上面的常规方法,主要是受到了EDA中并行的影响,当然,单片机中是不可能实现并行的,但我们可以用串行的方式模拟并行,实现数码管的扫描及采用延时粗略计算出1s的延时,这样很多人可能认为不准确,但我们可以分好多的延时,这样在校时时不会出现改一个数字出现大的变化的情况。

程序设计框图如下:

6.2源程序

源程序见附件Ⅰ。

7、设计中的问题分析与解决

由于这是我第一次系统地进行设计,难免会遇到很多的问题。当然,作为我们初学者来说,遇到问题越多收获也就也多,这就要看我们解决问题能力及方案了。下面是我在这次设计中所遇到的一些问题总结。

(1)由于此次设计数字钟,主要是由软件来完成的,所以硬件中的问题相对来说较少。当我们将PCB板设计完之后,焊接上元件之后,如果出现不正常工作的情况,我们可以确定是硬件问题。

解决方案:①检查单片机是否正常工作,我们可以使用示波器进行观察单片机ALE(第30引脚)的输出波形,如果输出波形的频率是晶

振频率的6分频,则证明单片机是正常工作的。

②如果单片机第31引脚没有输出波形,首先应检查晶

振的好坏,我们可以更换晶振看其是否能正常工作。

③如果还不正常工作,说明是硬件电路的设计有问题,

首先我们应该检查的是所有芯片的电源是否正常。(2)我们采用C语言,利用单片机中的优点中断和定时器,完成数字钟其实很容易实现,但要完成精度相当高的数字钟设计,加上实现校时和闹钟功能之后,我们会遇到很多的问题。首先是怎么避免由按键造成的延时误差,我们总结的方案有4种,分别是:

①计算出按键延时的具体时间,按键一次则给定时器加上相应的按键延时时间,这样虽然可以大大的减小按键延时带来的时间误差,但还是有一定量的机器周期的延时。例如使用这种方法又需在定时器中添加一些判断语句,当符合条件时,将会增加一定的机器周期。

②通过采用设置优先级的方式可以清除按键防抖延时,在主程序中我们需要将定时器的中断优先级设为最高,别的中断优先级设为低,这样我们在按键中断时,如果定时器还未中断,则响应外部中断,这样对定时器的定时没有影响;如果在响应外部中断的时候,有定时中断,则优先响应定时中断,这样又对定时器的定时没有影响;如果在响应定时中断时,则别的中断不会影响到定时器的正常定时。

(3)在设定闹钟时间时,我们要确保定时器的正常工作,如何既要让数码管显示闹钟设置的相应时间,并且定时器的正常计数不能受到影响,我们应该如何解决这个矛盾呢?

解决方案:为了使编程更加方便,我们专门设置了一个启动设置闹钟的开关,当开关设为高电平时,则为闹钟设置,首先数码管上全部显示零,即清零。然后按相应的校时按钮,则数码管显示被设置的相应时间,在设置闹钟的这期间,是如何确保相应时间的准确性呢?我是这样解决的,当启动设置闹钟开关之后,在程序中同时启动另一个定时器开始定时工作,当定到50ms时,发生中断,相应的变量加一,这样我们就可以计算出在设置闹钟时所花费的时间。当设置闹钟开关置到相应的低电平时,说明设置闹钟结束,在这同时,我们将变量所记的数与50ms相乘,计算出与之对应的秒数,加到闹钟设置之前保存到静态变量中的数上。这种方法有一定的缺陷,会造成一定的延时,经过软件处理,延时将在0~0.5s之间随机产生。

(4)在测量数字钟精度时,我们发现了一个问题,在数字钟正常工作时,会出现秒与秒之间不相等的情况,比如在10分钟之内我们与标准时间进行比较会发现,有时发现时间走的快,有时时间走的慢。

解决方案:后面在程序中发现,原因是由于程序中的if判断语句,在判断过程中当满足条件时,会执行更多的语句,这样会有相应的机器周期的延时,所以会出现时间一会走的快一会走的慢的情况。这种情况只有通过减少if语句,怎么减少if语句呢?我们可以充分利用单片机的自身条件,充分利用单片机中的定时器,定时器不够用时我们可以选用89c52系列。

8、设计总结与心得

单片机数字钟可以说是一个较小的系统,开始时我们觉得通过C语言较容易实现,确实,只实现一个能够正常走时并且能够校时的数字钟是比较容易的。但我们想错了,毕竟是第一次从总体角度来考虑地完成一个小系统,好多的实际性的问题我们没有考虑,所以造成我们最终设计的数字钟精度不高,并且存在好多问题,当然问题多了对我们来说是好事,这样我们在解决更多问题时学会更多解决问题的方法,对我们也算是长长经验吧。

最开始我们需要总体设计,这就是常常说的算法。平时的编程实现的都是小功能,我们按照自己的想法直接写下去就可以实现,但这次不一样,我们不但要实现数字钟的正常工作,而且需要加上设置闹钟及闹钟到报警和是否已经设置了闹钟的指示灯提示,这在我们设计时会遇到好多的矛盾,当然矛盾我们可以一个个的解决,当然更重要的是在解决矛盾时我们要确保时间的准确性,这又需要我们计算机器周期和处理一些延时程序的延时,这可能是我们本次设计中最困难的问题,我们在解决这个问题中更深入的理解了单片机的内部结构,也学会了合理利用单片机中的定时器和中断处理。

除了在编写程序中遇到的问题之外,我对程序又有了更深一层的认识,就像王老师经常说的那样,人类只是现在还没有弄清楚人类的思维方式,如果有一天生物科技真正研究通了人类自己的思维方式,机器人将真的会有自己的思维方式,可能真的就会战胜人类了。在这次设计中,让我真的明白了,只要我们想明白的事情,我们一定会用程序将其描述出来,不管它有多么的复杂。

接下来就是PCB的制作,这次可算是经历了全部过程,从画原理图到PCB 的导出,最后到生产加工出成品,尤其是PCB板的加工生产过程尤为重要,从生产加工中我们可以学到很多在画PCB时的注意事项,也理解了我们在软件中的各种设置的重要性及0.2mm的差距。看着加工机床的机械臂在那儿来回着工作,就像拉鞋垫一样,一针一线地完成了整个版图。非常震撼的是自动化的强大。

这次数字钟的设计主要是用单片机来完成的,虽然我们也花了很多时间来完成它的总体设计,但就像老师说的那样,这只是个开始。从这次设计中我也觉得自己还对单片机的功能了解只是个皮毛,单片机强大的功能还等着我们去开发。

在这些天大家总结报告时我发现,我们大家的意识还太低,就像写个报告,大家总在意的是看谁写了多少页了,看谁的程序多,所占用的页数多,一切似乎和页数联系上了。我觉得我们更应该去关注一下大家所写的程序,看谁的程序在完成同样功能的同时,他采用方法新颖,程序占用的内存少,并且精度高。看来我们大家总被一种错误的观念领导着,面对内存有限的单片机而言,编写一个数字钟,我们无论采用的哪种方法都不可能用完单片机内部的程序存储器,

我觉得我们现在所做的事都是为我们后面做铺垫的,所以我们现在就应该去关心程序所占用的内存和采用的优于别人的算法。所以我们在程序中减少冗余量,在此我举几个例子,比如在程序中比较是否闹钟时间到时,我们完全可以采用单片机没有用的标志位F0,当闹钟时间和当前时间相同时,将F0置1,然后判断F0是否为1,如果是1则响闹钟,这样我们可以减少变量的定义。利用C语言写时,难免会定义一些静态变量,这些静态变量相当于一些寄存器,我们可以重复利用这些静态变量,这样会减少更多静态变量的定义,即可以节约内存。

最后我觉得系统的设计需要我们全面着去考虑好多的问题,这对我们的成长会有更大的帮助。程序的实现不只是功能的实现,还要有可靠的稳定性,占用的内存也要较小。

附录Ⅰ

/*********************************************** *文件名:计数器1.c

*描述:本次设计一个数字钟,能够较准确的计时,并能对时,还附有闹钟的功能

*创建人:张满归

*时间:20110101-20110120

***********************************************/ #include

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit s0=P2^0;

sbit s1=P2^1;

sbit s2=P2^2;

sbit d1=P3^2;

sbit d2=P3^3;

sbit sclk=P1^0; //设置闹钟

sbit cclk=P1^1; //关闭闹铃

sbit bell=P1^2;

sbit lclk=P1^3;

static int k1=0;

static int k2=0; //秒高位

static int k3=0;

static int k4=0; //分高位

static int k5=0;

static int k6=0; //时高位

//static int F; //k2*10+k1

static int c2=0; //k4*10+k3

static int c3=0; //k6*10+k5

static int j1,j2,j3,j4,j5,j6;

static int c=0;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f };

/*********************************************** *名称:void delay2()

*功能:去抖动延时

*输入:无

*输出:无

***********************************************/ void delay2(void) //去抖动

{

uint i,j;

for(i=0; i<3; i++)

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

;

}

/*********************************************** *名称:void delay1()

*功能:数码管显示动态扫面延时

*输入:无

*输出:无

***********************************************/ void delay1(void)

{ uint n;

for(n=50;n>0;n--)

;

}

/*********************************************** *名称:void delay()

*功能:主程序延时,方便计数精确

*输入:无

*输出:无

***********************************************/ void delay(void)

{ uint m;

for(m=9;m>0;m--);

}

/*********************************************** *名称:void EX0_time()

*功能:外部中断0服务程序

*输入:无

*输出:无

***********************************************/ void EX0_time() interrupt 0

{

delay2();

if(d1==0)

{if(k6==0 || k6==1)

{if(k5==9)

{k5=-1;

k6++;}

}

else if(k6==2)

{if(k5==3)

{k6=0;

k5=-1;}

}

k5++;

}

}

/*********************************************** *名称:void EX1_time()

*功能:外部中断1服务程序

*输入:无

*输出:无

***********************************************/ void EX1_time() interrupt 2

{ delay2();

if(d2==0)

{if(k3==9)

{k3=-1;

if(k4==5)

k4=-1;

k4++;

}

k3++;

}

}

/*********************************************** *名称:void bell_call()

*功能:闹钟服务程序

*输入:无

*输出:无

***********************************************/ /*void bell_call(void)

{ TMOD=0x10;

TH0=0xFF; //1ms

TL0=0xFF;

TR1=1;

ET1=1;

EA=1;} */

/*********************************************** *名称:void T1_bell()

*功能:T1中断服务程序,输出方波驱动蜂鸣器

*输入:无

*输出:无

***********************************************/ /*void T1_bell() interrupt 3

{

TR1=0;

bell=~bell;

} */

/*********************************************** *名称:void shaomiao()

*功能:8位数码管扫面显示

*输入:无

*输出:无

***********************************************/ void shaomiao(void)

{

if(F0==1)

bell=~bell;

while(s0==0 && s1==0 && s2==0)

{

P0=table[k6];

delay1();

P0=0x00;

s0=1;s1=0;s2=0;}

while(s0==1 && s1==0 && s2==0)

{

P0=table[k5];

delay1();

P0=0x00;

s0=0;s1=1;s2=0;}

while(s0==0 && s1==1 && s2==0)

{

P0=0x40;

delay1();

P0=0x00;

s0=1;s1=1;s2=0;}

while(s0==1 && s1==1 && s2==0)

{

P0=table[k4];

delay1();

P0=0x00;

s0=0;s1=0;s2=1;}

while(s0==0 && s1==0 && s2==1)

{if(F0==1)

bell=~bell;

P0=table[k3];

delay1();

P0=0x00;

s0=1;s1=0;s2=1;}

while(s0==1 && s1==0 && s2==1)

{

P0=0x40;

delay1();

P0=0x00;

s0=0;s1=1;s2=1;}

while(s0==0 && s1==1 && s2==1)

{

P0=table[k2];

delay1();

P0=0x00;

s0=1;s1=1;s2=1;}

while(s0==1 && s1==1 && s2==1)

{

P0=table[k1];

delay1();

P0=0x00;

s0=0;s1=0;s2=0;}

if(F0==1)

bell=~bell;

}

/*********************************************** *名称:void set_clk()

*功能:设置闹钟时开定时

器0和类压栈

*输入:无

*输出:无

***********************************************/ void set_clk(void)

{

TMOD=0x01;

TH0=0x3C; //50ms

TL0=0xB0;

TR0=1;

ET0=1;

EA=1;

j1=k1;j2=k2;j3=k3; //相当于压栈

j4=k4;j5=k5;j6=k6;

k1=0;k2=0;k3=0;k4=0;k5=0;k6=0;

}

/*********************************************** *名称:void TO_count()

*功能:T0定时器中断服务程序

*输入:无

*输出:无

***********************************************/ void TO_count() interrupt 1

{ c++;

if(sclk==1)

{ TR0=0; }

if(sclk==0)

{ TH0=0x3C;

TL0=0xB0;

TR0=1;}

}

/*********************************************** *名称:void add_clk()

*功能:闹钟设置结束,计数开始,确定需显示时间*输入:无

*输出:无

***********************************************/ void add_clk(void)

{ int c4,c5;

TR0=0;

// F0=1; //闹钟已设置

// c1=k2*10+k1;

c2=k4*10+k3;

c3=k6*10+k5;

c4=(c*50)/1000; //设置闹钟耗费时间(S)

c5=(c*50)%1000;

if(c5>500)

c4++;

k1=j1;k2=j2;k3=j3; //出栈

k4=j4;k5=j5;k6=j6;

j1=(k2*10+k1+c4)/60; //分进位

j2=(k2*10+k1+c4)%60; //秒位数

k2=j2/10;

k1=j2%10;

j3=k4*10+k3+j1;

if(j3>=60)

{k5++;

k4=j4/60;

k3=j4%60;

if(k5==9)

k6++;}

}

/*********************************************** *名称:void main()

*功能:数字钟主程序

*输入:无

*输出:无

***********************************************/ void main(void)

{ int i=0;

PT0=1; //中断优先级

PX0=0;

PX1=0;

while(1)

{ EA=0xFF;

IT0=1;

EX0=1;

IT1=1;

EX1=1;

P0=0x00;

P1=0xff;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

if(sclk==0) //设置闹钟

{ delay2();

if(sclk==0)

{ set_clk();

while(1)

{

C51单片机定时器及数码管控制实验报告

理工大学信息工程与自动化学院学生实验报告 (201 — 201学年第1 学期) 课程名称:单片机技术

一、实验目的 1.掌握定时器T0、T1 的方式选择和编程方法,了解中断服务程序的设计方法,学会实时程序的调试技巧。 2.掌握LED 数码管动态显示程序设计方法。 二、实验原理 1.89C51 单片机有五个中断源(89C52 有六个),分别是外部中断请求0、外部中断请求1、定时器/计数器0 溢出中断请求、定时器/计数器0 溢出中断请求及串行口中断请求。每个中断源都对应一个中断请求位,它们设置在特殊功能寄存器TCON 和SCON 中。当中断源请求中断时,相应标志分别由TCON 和SCON 的相应位来锁寄。五个中断源有二个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序嵌套。在

同一优先级别中,靠部的查询逻辑来确定响应顺序。不同的中断源有不同的中断矢量地址。 中断的控制用四个特殊功能寄存器IE、IP、TCON (用六位)和SCON(用二位),分别用于控制中断的类型、中断的开/关和各种中断源的优先级别。中断程序由中断控制程序(主程序)和中断服务程序两部分组成: 1)中断控制程序用于实现对中断的控制; 2)中断服务程序用于完成中断源所要求的中断处理的各种操作。 C51 的中断函数必须通过interrupt m 进行修饰。在C51 程序设计中,当函数定义时用了interrupt m 修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按MCS-51 系统中断的处理方式自动把它安排在程序存储器中的相应位置。 在该修饰符中,m 的取值为0~31,对应的中断情况如下: 0——外部中断0 1——定时/计数器T0 2——外部中断1 3——定时/计数器T1 4——串行口中断 5——定时/计数器T2 其它值预留。 89C51 单片机设置了两个可编程的16 位定时器T0 和T1,通过编程,可以设定为定时器和外部计数方式。T1 还可以作为其串行口的波特率发生器。

简单51单片机数字时钟设计

题目:简单51单片机数字时钟设计 院系: 物理与电气工程学院 专业:自动化专业 班级:10级自动化 姓名:苏吉振 学号:2 老师:李艾华

引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。 单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个 人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

基于51单片机的数字钟

专业课程设计报告 专业班级 课程 题目基于51单片机的数字钟的设计报告学号 学生姓名 指导教师 成绩 2013年6月20日

基于A T89C51的数字钟总体设计说明书 目录 1. 51单片机设计数字钟设计的现实意义 (2) 2. 总体设计 (2) 2.1.开发与运行环境 (2) 2.2.硬件功能描述 (2) 2.3.硬件结构 (3) 3. 硬件模块设计 (3) 3.1.描述 (3) 3.1.1. AT89C51单片机简介 (3) 3.1.2. 键盘电路的设计 (4) 3.1.3. 显示器的选择 (5) 3.1.4. 蜂鸣器驱动电路 (5) 3.1.5. 各部分功能 (6) 4. 嵌入式软件设计 (7) 4.1.流程逻辑 (7) 4.2.算法 (7) 4.2.1. 中断定时器的设置 (27) 4.2.2. 闹钟子函数 (28) 4.2.3. 计时函数 (29) 4.2.4. 键盘扫描函数 (31) 4.2.5. 时间和闹钟的设置 (32) 5. 实验器材清单 (33) 6. 测试与性能分析 (33) 6.1.测试结果 (33) 6.2.优点 (33) 6.3.结论 (34) 7. 心得体会 (36) 8. 致谢 (36) 9. 参考文献 (37)

1.51单片机设计数字钟设计的现实意义 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间等造成的。而钟表的数字化给人们生产生活带来了极大的方便。数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 2.总体设计 2.1.开发与运行环境 在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 2.2.硬件功能描述 硬件部分设置了的三个按键S1、S2、S3、S4。当按键S1第一次按下时,停止计时进

51单片机数字时钟

计算机硬件综合课程 设计报告 课目: 学院: 班级: 姓名: 指导教师: 目录 1 设计要求 功能需求 设计要求

2 硬件设计及描述 总体描述 系统总体框图 Proteus仿真电路图 3 软件设计流程及描述 程序流程图 函数模块及功能 4 心得体会 附:源程序 设计要求 功能需求 实现数字时钟准确实时的计时与显示功能; 实现闹钟功能,即系统时间到达闹钟时间时闹铃响; 实现时间和闹钟时间的调时功能; 刚启动系统的时候在数码管上滚动显示数字串(学号)。设计要求 应用MCS-51单片机设计实现数字时钟电路; 使用定时器/计数器中断实现计时; 选用8个数码管显示时间;

使用3个按钮实现调时间和闹钟时间的功能。按钮1:更换模式(模式0:正常显示时间;模式1:调当前时间的小时;模式2;调当前时间的分钟;模式3:调闹钟时间的小时;模式4:调闹钟时间的分钟);按钮2:在非模式0下给需要调节的时间数加一,但不溢出;按钮3:在非模式0下给需要调节的时间数减一,但不小于零; 在非0模式下,给正在调节的时间闪烁提示; 使用扬声器实现闹钟功能; 采用C语言编写程序并调试。 2 硬件设计及描述 总体描述 单片机采用AT89C51型; 时间显示电路:采用8个共阴极数码管,P1口驱动显示数字,P2口作为扫描信号; 时间设置电路:、、分别连接3个按键,实现调模式,时间加和时间减; 闹钟:口接扬声器。 系统总体框图 Proteus仿真电路图

3 软件设计流程及描述 程序流程图

函数模块及功能 void display_led() 学号的滚动显示函数; void display() 显示时间以及显示调节时间和闹钟时间的闪烁; void key_prc() 键盘功能函数,实现3个按键有关的模式转换以及数字加一减一; void init() 初始化设置中断;

51单片机电子时钟课程设计报告

第一部分设计任务和要求 1.1 单片机课程设计内容 利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。 1.2 单片机课程设计要求 1.能实现年、月、日、星期、时、分、秒的显示; 2.能实现调时功能; 3.能实现12/24小时制切换; 4.能实现8:00—22:00整点报时功能。 1.3 系统运行流程 程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。若没到则循环执行。计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。调时闪烁中断服务程序用于被调单元的闪烁显示。调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。实现了对时间的设置和修改、LCD显示数值等主要功能。相关的调整是靠对功能键的判断来实现的。 第二部分设计方案 2.1 总体设计方案说明 1.程序设计及调试 根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。 2.硬件焊接及调试 根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。

3.后期处理 对设计过程进行总结,完成设计报告。 2.2 单片机系统方框图 2.2 单片机系统流程图 主流程图键盘扫描流程图

时钟流程图 第三部分主要器件及简介 3.1 主要器件 1. STC89C51单片机; 2.LCD1602液晶显示屏; 3.2 主要器件简介 1.STC89C51单片机简介 STC89C51是采用8051核的ISP(In System Programming)在系统可编程芯片,最高工作时钟频率 为80MHz,片内含8K Bytes的可反复擦写1000次的 Flash只读程序存储器,器件兼容标准MCS-51指令系 统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。 2.LCD1602液晶显示屏简介

51单片机实现数码管99秒倒计时

51单片机实现数码管99秒倒计时,其实很简单,就是使用定时器中断来实现。 目的就是学习怎样用单片机实现倒计时,从而实现一些延时控制类的东西,99秒只是一个例子,你完全可以做出任意倒计时如10秒倒计时程序。 定时器定时时间计算公式:初值X=M(最大计时)-计数值。 初值,换算成十六进制,高位给TH0,低位给TL0,如果用定时器0的话。 M(最大计时)如果是16位的,就是2的16次方,最大定时,65535 微秒,实现1秒定时,可以通过定时10毫秒,然后100次改变一次秒值即可。10*100毫秒=1S 计数值:你要定时多长时间,如果定时1毫秒,就是1000微秒,(单位为微秒),如果定时10毫秒,就是10000(微秒),当然,最大定时被定时器本身位数限制了,最大2的16次方(16位定时计数器),只能定时65.535毫秒。定时1S当然不可能1S定时器中断。 下面为实现99秒倒计时C语言源程序 /*了解定时器,这样的话,就可以做一些基本的实验了,如定时炸弹~~,10秒后打开关闭继电器*/ /*数码管,12M晶振*/ #include #define uchar unsigned char sbit p11=P1^1; //连的是继电器。。 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar shiwei; uchar gewei; void delay(unsigned int cnt) { while(--cnt); } void main() { TMOD|=0x01; /*定时器0 16位定时器X=65535-10000(10毫秒)=55535=D8F0(十六进制)定时10ms */ TH0=0xd8; TL0=0xf0; IE=0x82; //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时

基于51单片机的LCD1602简单数字时钟

原理图: 源程序: /*************************************************************** 标题:LCD1602时钟 效果:在LCD1602屏上显示时分秒,能调节时间 作者:皖绩小挺 说明:RS:P1.0 RW:P1.1 E:P1.3 数据端口:P0 key1:P3.7 key2:P3.6 key3:P3.5 key4:P3.6 key5;P3.3 ******************************************************************/ #include #define uchar unsigned char //宏定义 #define uint unsigned int sbit lcdrs=P1^0; //定义LCD1602端口 sbit lcdrw=P1^1; sbit lcden=P1^2; sbit key1=P3^7; //定义按键端口 sbit key2=P3^6; sbit key3=P3^5; sbit key4=P3^4;

sbit key5=P3^3; uchar tt; //设置全局变量 uchar hour,minute,second; uchar table[]="HELLO WORLD" ; //第一行字符(11个) uchar table1[]="00:00:00"; //第二行字符(8个) /******************************************************* 延时函数 *******************************************************/ void delay(uint z) //delay(1)约1ms { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /******************************************************* LCD1602写命令 *******************************************************/ void write_lcdcom(uchar lcd_com) { lcdrs=0; //rs低电平为选择指令寄存器 lcdrw=0; //rw低电平进行写操作 P0=lcd_com; delay(5); lcden=1; delay(5); lcden=0; } /******************************************************* LCD1602写数据 *******************************************************/ void write_lcddata(uchar lcd_data) { lcdrs=1; //rs高电平为选择数据寄存器 lcdrw=0; P0=lcd_data; delay(5); lcden=1; delay(5); lcden=0; } /*******************************************************

AT89C51单片机电子时钟设计

AT89C51单片机电子时钟设计 学院: 专业: 学号: 学生:

目录 1 电子时钟 (4) 1.1 电子时钟简介 (4) 1.2 电子时钟的基本特点 (4) 1.3 电子时钟的原理 (4) 2 单片机识的相关知识 (4) 2.1单片机简介 (4) 2.2 单片机的特点 (5) 2.3 AT89C51单片机介绍 (5) 3 设计方案的选择 (7) 3.1计时方案 (7) 3.2 显示方案 (7) 3.3 数码管显示工作原理 (8) 3.4 键盘电路设计 (9) 3.5 主控模块AT89C51 (9) 4 系统软件设计 (9) 附录 (12)

摘要:单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 关键词:单片机;电子时钟;AT89C51

1 电子时钟 1.1 电子时钟简介 本设计采用AT89C51单片机,以汇编语言为程序设计的基础,设计一个用六位数码管显示时、分、秒的时钟。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零,从而达到计时的功能,是人民日常生活不可缺少的工具。 1.2 电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 1.3 电子时钟的原理 该电子时钟由AT89C51,键盘,八段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。 2 单片机识的相关知识 2.1单片机简介 单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

基于51单片机控制的简易时钟(内部定时器)

若需要仿真图+程序(Q:409975690)附程序:#include #define uint unsigned int #define uchar unsigned char uchar n,fen,miao,shi,ri ,yue; uint a; sbit lcden=P2^1; sbit lcdrs=P2^0; sbit k1=P1^0; sbit k2=P1^2; sbit k3=P1^5; sbit k4=P1^6; sbit k5=P1^7; void keyscan(); void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_comd(uchar com) { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;

void write_date (uchar date) { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void start() { write_comd(0x38); write_comd(0x0c); write_comd(0x06); write_comd(0x01); } void write_sfm() { write_comd(0x80+0x44); write_date(0x30+shi/10); write_comd(0x80+0x45); write_date(0x30+shi%10); write_comd(0x80+0x46); write_date(0x3A); write_comd(0x80+0x47); write_date(0x30+fen/10); write_comd(0x80+0x48); write_date(0x30+fen%10); write_comd(0x80+0x49); write_date(0x3A); write_comd(0x80+0x4a); write_date(0x30+miao/10); write_comd(0x80+0x4b); write_date(0x30+miao%10); } void write_nyr() { write_comd(0x80); write_date('M'); write_comd(0x80+0x01); write_date('T'); write_comd(0x80+0x02); write_date('Z');

基于51单片机的数字时钟设计的毕业设计概要

摘要 (2) Abstract .......................................................................................................................... 错误!未定义书签。第一章绪论 .. (2) 1.1多功能数字钟设计的背景 (2) 第二章AT89C51单片机简介 (2) 2.1 单片机介绍 (2) 2.2 单片机的应用特点 (3) 2.3 单片机的应用领域 (3) 2.4 单片机的中断与定时系统.............................................................................. 错误!未定义书签。 2.4.1 MCS-51单片机中断系统................................................................... 错误!未定义书签。 2.4.2 MCS-51 单片机的定时器/计数器.................................................... 错误!未定义书签。 2.4.3 MCS-51定时器/计数器的四种工作方式........................................... 错误!未定义书签。 2.5 AT89C51引脚功能介绍 (3) 第三章设计方案 (4) 3.1 主程序 (4) 3.2 数码管显示模块 (5) 3.3 定时器计数器T0中断服务程序.................................................................... 错误!未定义书签。 3.4按键处理模块 (5) 第四章硬件电路设计 (5) 4.1 复位电路 (5) 4.2 时钟电路 (6) 4.3 按键电路 (6) 4.4 数码管显示电路 (7) 4.5 电源电路设计.................................................................................................. 错误!未定义书签。第五章软件设计与程序代码 . (8) 5.1 软件选择与介绍 (8) 5.1.1 软件介绍.............................................................................................. 错误!未定义书签。 5.1.2 Proteus7.8的特点............................................................................. 错误!未定义书签。 5.2 软件仿真电路全图 (9) 5.3 源程序代码 (9) 第六章结论 (16) 参考文献 (17) 致谢 (18)

基于AT89C51单片机的电子时钟设计

科学技术学院 SCIENCE & TECHNOLOGY COLLEGE OF NANCHANG UNIVERSITY 《工程训练》报告 REPORT ON ENGINEERING TRAINING 题目基于AT89C51单片机的电子时钟设计 学科部、系: 专业班级: 学号: 学生姓名: 指导教师: 起讫日期:

目录 前言 (2) 第一章基于AT89C51单片机的电子时钟设计的概述 (3) 第二章各硬件介绍 (4) 2.1 AT89S51的引脚说明 (4) 2.2 发光二极管指示电路设计 (5) 2.3 LCD1602简介 (5) 2.4 DS1302 简介 (6) 2.4.1 引脚功能表及内部结构图 (6) 2.4.2 DS1302 的控制字节说明 (6) 2.4.3 复位 (7) 2.4.4 数据输入输出 (7) 2.4.5 DS1302 的寄存器 (7) 2.5 DS1302 简介 (8) 2.5.1.温度传感器DS18B20 (8) 2.5.2 DS18B20时序 (11) 第三章系统原理 (12) 系统设计 (12) 3.1 晶体振荡器电路 (12) 3.2分频器电路 (13) 3.3 时间计数器电路 (13) 3.4 时钟电路 (13) 3.5 复位电路 3.6复位电路的可靠性设计 (14) 3.7 按键部分 (14) 第四章PCB制作与性能测试分析 (16) 第五章总结 (17) 参考文献 (18)

前言 电子时钟是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的电子时钟精度高,功能易于扩展。可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用有着非常现实的意义。本设计就是数字时钟简单的扩展应用。

基于51单片机制作电子时钟实训报告

绪论 单片机使用简述.................................... 电子时钟简介...................................... 电子时钟的基本特点................................ 任务要求......................................... 设计方案......................................... 控制系统的硬件设计................................ 芯片的选择....................................... AT89S51的功能概述............................... AT89S51引脚功能说明(附引脚图)................... LED数码管显示电路................................ 硬件设计及元器件技术说明电子元器件技术说明………. 控制系统的软件设计................................ 程序编程......................................... 流程图........................................... 测试调试........................................... 总结............................................... 单片机使用简述 目前,单片机正朝着高性能和多品种方向发展趋势是进一步向着CMOS化、低功耗、小体积,大容量、高性能、低价格和外围电路内装化等几个方面发展。 单片机使用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。在以前,是必须由模拟或是数字电路实现的大部分功能的,而现在

51单片机定时器设置

51单片机定时器设置入门(STC89C52RC) STC单片机定时器设置 STC单片机定时器的使用可以说非常简单,只要掌握原理,有一点的C语言基础就行了。要点有以下几个: 1. 一定要知道英文缩写的原形,这样寄存器的名字就不用记了。 理解是最好的记忆方法。好的教材一定会给出所有英文缩写的原形。 2. 尽量用形像的方法记忆 比如TCON和TMOD两个寄存器各位上的功能,教程一般有个图表,你就在学习中不断回忆那个图表的形像 TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER) 定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。 其格式为: 其中低四位定义定时器/计数器C/T0,高四位定义定时器/计数器C/T1,各位的说明: GA TE——门控制。 GA TE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。 当INT0引脚为高电平时TR0置位,启动定时器T0; 当INT1引脚为高电平时TR1置位,启动定时器T1。 GA TE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。 C/T——功能选择位 C/T=0时为定时功能,C/T=1时为计数功能。 置位时选择计数功能,清零时选择定时功能。

M0、M1——方式选择功能 由于有2位,因此有4种工作方式: M1M0 工作方式计数器模式TMOD(设置定时器模式) 0 0 方式0 13位计数器TMOD=0x00 0 1 方式1 16位计数器TMOD=0x01 1 0 方式 2 自动重装8位计数器TMOD=0x02 1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器TMOD=0x03 单片机定时器0设置为工作方式1为TMOD=0x01 这里我们一定要知道,TMOD的T是TIMER/COUNTER的意思,MOD是MODE的意思。至于每位上的功能,你只要记住图表,并知道每个英文缩写的原型就可以了。 在程序中用到TMOD时,先立即回忆图表,并根据缩写的单词原形理出每位的意义,如果意义不是很清楚,就查下手册,几次下来,TMOD的图表就已经在脑子里了。 8位GA TE位,本身是门的意思。 7位C/T Counter/Timer 6位M1 Mode 1 5位M0 Mode 0 TCON: 定时器/计数器控制寄存器(TIMER/COUNTER CONTROL REGISTER) TMOD分成2段,TCON控制更加精细,分成四段,在本文中只要用到高四段。 TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。 TR0(TR1)——定时器运行控制位 当TR0(TR1)=0 停止定时器/计数器工作 当TR0(TR1)=1 启动定时器/计数器工作 IE0(IE1)——外中断请求标志位 当CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。 IT0(IT1)——外中断请求信号方式控制位 当IT0(IT1)=1 脉冲方式(后沿负跳有效) 当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。 TF0(TF1)——计数溢出标志位

单片机课程设计 (51单片机实现电子时钟)

湖北文理学院 单片机课程设计 题目:用51单片机实现电子时钟 院部物理与电子信息工程学院 专业名称电子信息科学与技术 班级 1111 姓名杨庆月 学号 2011111136 指导教师李刚 2013年12月09日

目录 摘要-------------------------------------------------------------1 1 单片机的相关知识-------------------------------------------1 1.1 单片机的简介---------------------------------------------------1 1.2 单片机的特点---------------------------------------------------1 1.3 89C52单片机的基本特点-------------------------------------------2 2 电子时钟--------------------------------------------------- 3 2.1电子时钟的基本特点-----------------------------------------------3 2.2电子时钟的原理--------------------------------------------------4 3 控制系统的硬件设计----------------------------------------4 3.1单片机型号的选择------------------------------------------------4 3.2 lcd1602工作的原理----------------------------------------------4 3.3 键盘电路的设计-------------------------------------------------6 3.4 复位电路设计--------------------------------------------------------6 3.5 时钟电路设计--------------------------------------------------7 3.6 整体电路原理图------------------------------------------------7 4 控制系统的软件的设计-------------------------------------8 4.1程序的设计-----------------------------------------------------8 4.2程序源代码-----------------------------------------------------8 5 仿真结果和实物图----------------------------------------------19 5.1仿真结果-------------------------------------------------------------19 5.2实物图---------------------------------------------------------------19 6 总结-----------------------------------------------------------------------------------------------20 参考文献-------------------------------------------------------21

51单片机数字时钟(带闹钟)(优选.)

最新文件---------------- 仅供参考--------------------已改成-----------word文本 --------------------- 方便更改 赠人玫瑰,手留余香。 计算机硬件综合课程 设计报告 课目: 学院: 班级: 姓名: 指导教师:

目录1 设计要求 1.1 功能需求 1.2 设计要求 2 硬件设计及描述 2.1 总体描述 2.2 系统总体框图 2.3 Proteus仿真电路图

3 软件设计流程及描述 3.1 程序流程图 3.2 函数模块及功能 4 心得体会 附:源程序

1设计要求 1.1功能需求 (1)实现数字时钟准确实时的计时与显示功能; (2)实现闹钟功能,即系统时间到达闹钟时间时闹铃响; (3)实现时间和闹钟时间的调时功能; (4)刚启动系统的时候在数码管上滚动显示数字串(学号)。 1.2设计要求 (1)应用MCS-51单片机设计实现数字时钟电路; (2)使用定时器/计数器中断实现计时; (3)选用8个数码管显示时间; (4)使用3个按钮实现调时间和闹钟时间的功能。按钮1:更换模式(模式0:正常显示时间;模式1:调当前时间的小时;模式2;调 当前时间的分钟;模式3:调闹钟时间的小时;模式4:调闹钟时 间的分钟);按钮2:在非模式0下给需要调节的时间数加一,但

不溢出;按钮3:在非模式0下给需要调节的时间数减一,但不小 于零; (5)在非0模式下,给正在调节的时间闪烁提示; (6)使用扬声器实现闹钟功能; (7)采用C语言编写程序并调试。 2 硬件设计及描述 2.1总体描述 (1)单片机采用AT89C51型; (2)时间显示电路:采用8个共阴极数码管,P1口驱动显示数字,P2口作为扫描信号; (3)时间设置电路:P3.0、P3.1、P3.2分别连接3个按键,实现调模式,时间加和时间减; (4)闹钟:P3.3口接扬声器。 2.2系统总体框图

51单片机电子时钟设计报告

电子时钟实验报告 全部代码在文档末尾:51单片机,LCD1602液晶显示屏平台下编程实现,可直接编译运行 目录: 一,实验目的 (1) 二,实验要求 (2) 三,实验基本原理 (2) 四,实验设计分析 (2) 五,实验要现 (3) A.电路设计 (3) 1. 整体设计 (3) 2. 分块设计 (4) 2.1 输入部分 (4) 2.2 输出部分 (5) 2.3 晶振与复位电路 (6) B.程序设计 (6) B.1 程序总体设计 (6) B.2 程序主要模块 (7) 五.实验总结及感想 (9) 一,实验目的 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来

非常大的麻烦,所以电子钟是以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,得到了广泛的使用。 1. 学习8051定时器时间计时处理、按键扫描及LCD液晶显示的设计方法。 2. 设计任务及要求利用实验平台上LCD1602液晶显示屏,设计带有闹铃功能的数字时钟 二,实验要求 A.基本要求: 1. 在LCD1602液晶显示屏上显示当前日期,时间。 2. 利用按键可对时间及闹玲进行设置,并可显示设置闹玲的时间。闹玲时间到蜂鸣器发出 声响,一分钟后闹铃停止。 B.扩展部分: 1.日历功能(能对年,月,日,星期进行显示,分辨平年,闰年以及各月天数,并调整)实现年月日时分秒的调整,星期准确的随着日期改变而改变进行显示。 2.定时功能(设定一段时间长度,定时到后,闹铃提示) C.可扩展部分: 1.闹铃重响功能(闹铃被停止后,以停止时刻开始,一段时间后闹铃重响,且重响时间的间隔可调) 2.可进行备忘录提示,按照年月日,可在设定的某年某月进行闹铃提示。 三,实验基本原理 利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为20,每中断一次中断计数初值加1,当减到20时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了,是否一天到了,是否一个月到了,是否一年到了。 将时间在LCD液晶屏上显示,降低了程序的编写难度。LCD的固定显示特性是我们省去了数码管的动态扫描显示。 四,实验设计分析 针对要实现的功能,采用AT89S52单片机进行设计,AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,片含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储

单片机数字时钟设计_时分

河南交通职业技术学院 交通信息工程系 单片机数字时钟设计 专业电子11301姓名单德过学号1104060115 专业电子11301姓名楚洋坪学号1104060121

目录 摘要 (2) 第一章电子时钟的设计 (3) 1.1电子时钟简介 (3) 1.2电子时钟的工作原理 (3) 第二章硬件设计方案 (4) 2.1硬件电路的设计方案 (4) 2.2硬件电路的原理图 (4) 2.3硬件电路说明 (5) 第三章电子时钟的程序设计 (8) 3.1程序流程图 (8) 3.2程序设计 (11) 总结 (15)

摘要 随着现代生活的推进,电子时钟在人们的生活中已经普及,本课题的主要内容就是结合单片机的强大功能,在一块普通的电子时钟集成多种功能,方便人们的日常生活,该功能是通过单片机、8段数码管以及一些简单辅助电路实现的。由于之前没有独立做过单片机实现多功能电子时钟方面的内容,所以在做设计时总会遇见很多问题,本次设计是在结合老师的指导及同学的帮助下完成的,并通过本人在网上所查的大量资料及单片机设计中常见的电路而构思出来的。单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本设计主要设计了一个基于AT89C51单片机的电子时钟。并在数码管上显示相应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。该方法仿真效果真实、准确,节省了硬件资源。 关键字:单片机、电子时钟、程序

相关主题
文本预览
相关文档 最新文档