单 片 机 课 程 设 计电子时钟.docx

上传人:b****2 文档编号:18018324 上传时间:2023-08-05 格式:DOCX 页数:25 大小:113.70KB
下载 相关 举报
单 片 机 课 程 设 计电子时钟.docx_第1页
第1页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第2页
第2页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第3页
第3页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第4页
第4页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第5页
第5页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第6页
第6页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第7页
第7页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第8页
第8页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第9页
第9页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第10页
第10页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第11页
第11页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第12页
第12页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第13页
第13页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第14页
第14页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第15页
第15页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第16页
第16页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第17页
第17页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第18页
第18页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第19页
第19页 / 共25页
单 片 机 课 程 设 计电子时钟.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单 片 机 课 程 设 计电子时钟.docx

《单 片 机 课 程 设 计电子时钟.docx》由会员分享,可在线阅读,更多相关《单 片 机 课 程 设 计电子时钟.docx(25页珍藏版)》请在冰点文库上搜索。

单 片 机 课 程 设 计电子时钟.docx

单片机课程设计电子时钟

单片机课程设计

 

题目:

电子钟设计

 

系别:

电气与电子工程系

专业:

电气工程及其自动化

姓名:

学号:

指导教师:

 

河南城建学院

2011年12月30日

成绩评定·

一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。

二、成绩评定

成绩等级:

 

指导教师签字:

年月日

一、设计任务与要求

1.1设计背景

数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。

在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

1.2 课程设计目的

(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;

(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;

(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。

1.3设计要求

1、主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成

2、秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。

将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。

“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用24进制计时器,可实现对一天24小时的累计

3、译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过六位LED七段显示器显示出来

4、整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时

5、校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的

二、总体方案设计

2.1电路的总体原理框图

根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:

单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示

图1硬件电路方框图

2.2实现时钟计时的基本方法

利用STC系列单片机的可编程定时/计数器、中断系统来实现时钟计数。

(1)计数初值计算:

把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。

假设使用T/C0,方式1,50ms定时,fosc=12MHz。

则初值X满足(216-X)×1/12MHz×12μs=50000μs

X=15536→0011110010110000→3CB0H

(2)采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);

(3)从秒到分和从分到时的计时是通过累加和数值比较实现。

2.3电子钟的时间显示

电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。

LED8    LED7    LED6   LED5    LED4    LED3  LED2    LED1

37H     36H     35H    34H     33H     32H   31H     30H

时十位  时个位  分隔   分十位  分个位  分隔  秒十位  秒个位

2.4电子钟的时间调整

电子钟设置3个按键通过程序控制来完成电子钟的时间调整。

A键按一次调整时,按第二次调整分钟,第三次推出时间调整;

B键对小时或分钟进行加一;

C键对小时或分钟进行减一;

2.5总体方案介绍

2.5.1计时方案

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

该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。

2.5.2控制方案

STC89C52的P0口和P1口外接由八个LED数码管(LED8~LED1)构成的显示器,用P0口作LED的段码输出口,P1口作八个LED数码管的位控输出线,P3口外接四个按键A、B、C构成键盘电路。

STC89C52是一种低功耗,高性能的CMOS8位微型计算机。

它带有8KFlash可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash集成在一个芯片上,可用与解决复杂的问题,且成本较低。

简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本设计中采用此的设计方案。

2.6元件清单

电子钟元件清单如表2-1所示:

表2-1 电子钟元器件清单

元件名称

规格型号

数量(个)

单片机

STC89C52

1

8位一体的共阴LED显示器

sm420364

1

晶振

12MHz

1

电容

33pF

2

电容

22μF

1

按键

BUTTON

5

电阻

0.2K

1

电阻

1K

1

上拉电阻

10K

4

排阻

RESPACK-8/10K

1

三、数字钟的硬件设计

3.1最小系统

3.1.1芯片分析

STC89C52单片机引脚图如下:

图3-1STC89C52引脚图

MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如下:

VCC:

+5V电源。

VSS:

接地。

RST:

复位信号。

当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。

XTAL1和XTAL2:

外接晶体引线端。

当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

P0口:

P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。

P2口:

P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。

P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。

P3口:

P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。

当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。

当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出,具体第二功能如表3-1所示。

P3引脚

兼用功能

P3.0

串行通讯输入(RXD)

P3.1

串行通讯输出(TXD)

P3.2

外部中断0(INT0)

P3.3

外部中断1(INT1)

P3.4

定时器0输入(T0)

P3.5

定时器1输入(T1)

P3.6

外部数据存储器写选通WR

P3.7

外部数据存储器写选通RD

表3-1 P3端口引脚兼用功能表

3.1.2晶振电路

右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

图3-2晶振电路

3.1.3复位电路

单片机复位的条件是:

必须使RST/VPD或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。

例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。

单片机常见的复位如图所示。

电路为上电复位电路,它是利用电容充电来实现的。

在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。

只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。

该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。

图3-3 单片机复位电路

3.2数码显示模块设计

显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:

发光二极管LED显示器、液晶LCD显示器、CRT显示器等。

LED显示器是现在最常用的显示器之一,如下图所示。

 

图3-4LED显示器的符号图

发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。

分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。

外加正向电压时二极管导通,发出清晰的光。

只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。

LED数码管有共阳、共阴之分。

图是共阳式、共阴式LED数码管的原理图和符号.

图3-5共阳式、共阴式LED数码管的原理图和数码管的符号图

系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。

动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。

图3-6数码显示电路

3.3按键模块

下图为按键模块电路原理图,A为复位键,B为时钟调控键,C为分钟调控键。

图3-6按键模块电路原理图

3.4整点报时模块

整点报时用蜂鸣器响声来代替,当显示整点时,蜂鸣器将响一秒钟,

 

图3-7蜂鸣器电路原理图

四、系统软件设计

4.1软件设计分析

在编程上,首先进行了初始化,定义程序的的入口地址以及中断的入口地址,在主程序开始定义了一组固定单元用来储存计数的时.分.秒,在显示初值之后,进入主循环。

在主程序中,对不同的按键进行扫描,实现秒表,时间调整,复位清零等功能,系统总流程图如下图7:

图4-1系统总体流程图

4.2源程序清单

#include

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};

unsignedchartemp,t0,t1,counter,hou,min,sec;

sbitd1=P2^0;

voiddelay()

{

unsignedcharx,y;

for(x=2;x>0;x--)

for(y=100;y>0;y--);

}

voidinit()

{

t0=0;

d1=0;

counter=0;

hou=12;

min=0;

sec=0;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

voiddisplay(hou,min,sec)

{

P1=0xfe;

P0=table[hou/10];

delay();

P1=0xfd;

P0=table[hou%10];

delay();

P1=0xfb;

P0=table[10];

delay();

P1=0xf7;

P0=table[min/10];

delay();

P1=0xef;

P0=table[min%10];

delay();

P1=0xdf;

P0=table[10];

delay();

P1=0xbf;

P0=table[sec/10];

delay();

P1=0x7f;

P0=table[sec%10];

delay();

P0=table[11];

}

voidmain()

{

init();

while

(1)

{

P3=0xff;

temp=P3;

while(temp==0xfb)

{

delay();

temp=P3;

while(temp==0xfb)

{

counter++;

if(counter==3)

counter=0;

while(temp==0xfb)

{

temp=P3;

display(hou,min,sec);

}

}

}

if(counter==0)

display(hou,min,sec);

else

{

P3=0xff;

temp=P3;

while(temp==0xf7||temp==0xef)

{

delay();

temp=P3;

while(temp==0xf7||temp==0xef)

{

temp=P3;

if(counter==1)

{

switch(temp)

{

case0xf7:

{

hou++;

if(hou==24)

hou=0;

}

break;

case0xef:

{

hou--;

if(hou==-1)

hou=23;

}

break;

}

}

if(counter==2)

{

switch(temp)

{

case0xf7:

{

min++;

if(min==60)

min=0;

}

break;

case0xef:

{

min--;

if(min==-1)

min=59;

}

}

}

while(temp==0xf7||temp==0xef)

{

temp=P3;

display(hou,min,sec);

}

}

}

P1=0xfb;

P0=table[10];

delay();

P1=0xdf;

P0=table[10];

delay();

P1=0xbf;

P0=table[sec/10];

delay();

P1=0x7f;

P0=table[sec%10];

delay();

switch(counter)

{

case1:

{

P1=0xf7;

P0=table[min/10];

delay();

P1=0xef;

P0=table[min%10];

delay();

if(t0<=10)

{

P1=0xfe;

P0=table[hou/10];

delay();

P1=0xfd;

P0=table[hou%10];

delay();

}

else

{

P1=0xfe;

P0=table[11];

delay();

P1=0xfd;

P0=table[11];

delay();

}

}

break;

case2:

{

P1=0xfe;

P0=table[hou/10];

delay();

P1=0xfd;

P0=table[hou%10];

delay();

if(t0<10)

{

P1=0xf7;

P0=table[min/10];

delay();

P1=0xef;

P0=table[min%10];

delay();

}

else

{

P1=0xf7;

P0=table[11];

delay();

P1=0xef;

P0=table[11];

delay();

}

}

break;

}

}

}

}

voidtimer0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0++;

t1++;

if(t0==20)

{

t0=0;

sec++;

if(sec==60)

{

sec=0;

min++;

if(min==60)

{

min=0;

hou++;

d1=1;

t1=0;

if(hou==24)

{

hou=0;

}

}

}

}

if(t1==20)

{

d1=0;

t1=0;

}

}

五、整体电路图

见附录

六、设计总结

1、设计过程中遇到的问题及解决方法

本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。

晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。

2、设计体会

单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。

但当拿到题目时,确实不知道怎么着手,有些迷茫,上网查资料,问老师,在老师的帮助下,历时两个星期,解决一个又一个的困难,终于完成任务。

在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。

另外,要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。

发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。

设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。

在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。

通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。

另外,要非常感谢我的指导老师,是她指引我克服一个由一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。

我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。

3、对设计的建议

单片机电子钟系统误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。

晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;如果使用时钟芯片则可以减少误差。

另外,因为使用的是动态显示,所以数码管不应该是显示的地方可能会出现余光,用锁存器驱动芯片的话,显示效果会更好。

参考文献

[1] 郑君里,应启珩,杨为理.信号与系统(第二版)上册[M].高等教育出版社,2000

[2] 郑君里,应启珩,杨为理.信号与系统(第二版)下册[M].高等教育出版社,2000

[3] 谭浩强.C程序设计(第二版)[M].清华大学出版社,2003

[4] W.RichardStevens,范建华译.TCP/IP详解卷1:

协议[M].机械工业出版社,2000

[5]AndrowS.Tanenbaum.计算机网络(第4版)[M].Pearson,2004

[6] 吴坚,刘高平.基于GPRS网络的点对点图像传输方案[J].计算机应用研究,2004,5:

222-223,231

[7]W.Simpson,Editor.ThePoint-to-PointProtocol,RFC1661[EB/OL].July1994

[8]WAVECOM.ATCommandsInterfaceGuide,Revision002[EB/OL].6thNovember2003

附录:

电路原理图

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

当前位置:首页 > 自然科学 > 物理

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

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