西安石油大学课程设计.docx

上传人:b****8 文档编号:9524320 上传时间:2023-02-05 格式:DOCX 页数:46 大小:244.53KB
下载 相关 举报
西安石油大学课程设计.docx_第1页
第1页 / 共46页
西安石油大学课程设计.docx_第2页
第2页 / 共46页
西安石油大学课程设计.docx_第3页
第3页 / 共46页
西安石油大学课程设计.docx_第4页
第4页 / 共46页
西安石油大学课程设计.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

西安石油大学课程设计.docx

《西安石油大学课程设计.docx》由会员分享,可在线阅读,更多相关《西安石油大学课程设计.docx(46页珍藏版)》请在冰豆网上搜索。

西安石油大学课程设计.docx

西安石油大学课程设计

西安石油大学课程设计

课程单片机原理及应用课程设计

题目电子时钟设计

专业姓名学号

主要内容、基本要求、主要参考资料等

1、主要内容:

根据单片机课程所学内容,结合其他相关课程知识,设计电子时钟,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。

2、基本要求:

本设计以MCS-51系列单片机为核心,采用常用电子器件设计。

要求能显示出秒、分、时、天,可调整各个时间,可以采用LED显示,也可以采用液晶显示。

3、主要参考资料:

[1]张毅坤,陈善久.单片微型计算机原理及应用.西安电子科技大学出版社,2002.

[2]张友德,赵志英,徐时亮.单片微机原理应用与实验.复旦大学出版社,2000.

[3]张毅刚,彭善元,董继承.单片机原理及应用.高等教育出版社,2003.

完成期限2011年7月13日

指导教师

专业负责人

2011年7月4日

摘要

近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

本次设计中以单片机的发展过程和发展方向为背景,介绍了单片机的输入输出的工作原理和操作方法,中断的工作原理和操作方法,74LS245译码器的工作原理和与,LED连接的方法。

本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED数码显示器、BCD-锁存/7段译码/驱动器74LS245等),再配以相应的软件,是它具有时,分,秒显示的功能,并且时,分,秒还可以调整。

此次设计电子数字钟是为了了解电子数字钟的原理,从而学会制作电子数字钟。

而且通过电子数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。

通过它可以进一步学习与掌握单片机原理与使用方法。

 

关键词:

单片机AT89C51共阴极LED数码显示器74LS245译码器

 

MCS-51的引脚说明:

MCS-52系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。

现在我们对这些引脚的功能加以说明:

MCS-51的引脚说明:

MCS-52系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。

现在我们对这些引脚的功能加以说明:

图3-2单片机的引脚

Pin9:

RESET/Vpd复位信号复用脚,当8052通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。

初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。

RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。

然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8052的初始态。

3.2七段数码管的引脚图及使用:

数码管使用条件:

a、段及小数点上加限流电阻。

b、使用电压:

段:

根据发光颜色决定;小数点:

根据发光颜色决定。

c、使用电流:

静态:

总电流80mA(每段10mA);动态:

平均电流4-5mA峰值电流100mA

上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。

  LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。

将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。

以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。

当然,LED的电流通常较小,一般均需在回路中接上限流电阻。

假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。

而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。

其它字符的显示原理类同。

3.3硬件电路的设计原则

在性价比满足应用系统要求的情况下,选择更可靠,更熟悉的单片机缩短研制周期。

尽可能选择自己较为熟悉的应用电路,以提高系统的可靠性。

单片机内部的资源与外部的扩展资源应在满足系统设计的基础上留有余地,为进一步的升级和扩展提供方便。

应充分的结合软件方案考虑硬件的结构,通常硬件功能较完善,其相应的软件程序就简单,但硬件的成本较高,而功能较低,其相应的软件就复杂,其实际常用软件代替硬件来降低成本。

整个系统相关的器件尽可能的做到性能相匹配。

充分的考虑系统的抗干扰性,如具有抗干扰的单片机并充分的帅选芯片与器件,在电路中采取隔离或屏蔽的措施等。

更具以上的原则我们选择我们较为熟悉的80c51单片机;为了LED数码管的显示和和键盘的控制,我们也选择了74LS245的译码器和#1,#2,#3号按键作为时钟的参数修改加一键

#1键修改时,按一下时加一

#2键修改分,按一下分加一

#3键修改秒,按一下秒加一

时钟硬件连接图如下图所示

 

四软件程序的设计

4.1软件流程内容

本设计的软件程序包括主程序、中断子程序、打铃子程序、时钟显示子程序、查询时间表切换程序和延时子程序等等。

另外由于电路中有四个按键,还另外设计了防抖动程序来防止干扰。

4.2软件流程图

4.2.1系统软件设计流程图

这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。

主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。

 

 

图4-1主程序流程图

按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。

 

图4-2按键处理流程图

定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就检测1天是否到,1议案如果到,天单元就加1,如果没到,就显示时间。

 

 

 

图4-3定时器中断流程图

时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,然后是时十位显示,最后是天的显示。

4.3定时程序设计

单片机的定时功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。

如果MCS-52采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1。

这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。

MCS-51单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/计数器两种工作模式和4种工作方式。

定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。

TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX.

当定时器/计数器工作于方式1,为16位的计数器。

本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1。

4.3.1实时时钟实现的基本方法:

时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。

我们可把定时器的定时时间定为50ms。

这样,计数溢出20次即可得到时钟的最小计时单位:

秒。

而计数20次可以用软件实现。

秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。

从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。

要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。

4.3.2实时时钟程序设计步骤:

(1)选择工作方式,计算初值;

(2)采用中断方式进行溢出次数累计;

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

(4)时钟显示缓冲区:

时钟时间在方位数码管上进行显示,为此在内部

RAM中要设置显示缓冲区,共6个地址单元。

显示缓冲区从左到右依次存放时、分、秒数值;

(5)主程序:

主要进行定时器/计数器的初始化编程,然后反复调用显示

子程序的方法等待中断的到来。

(6)中断服务程序:

进行计时操作

(7)加1子程序:

用于完成对时、分、秒的加操作,中断服务程序在秒、

分、时加1时共有三种条调用加1子程序,包括三项内容:

合字、加1并进行十进制调整、分字。

 

源程序如下:

S_SETBITP1.0;数字钟秒控制位

M_SETBITP1.1;分钟控制位

H_SETBITP1.2;小时控制位

D_SETBITP1.3;天控制位

SECONDEQU30H

MINUTEEQU31H

HOUREQU32H

DAYEQU33H

TCNTEQU34H

ORG00H

SJMPSTART

ORG0BH

LJMPINT_T0

START:

MOVDPTR,#TABLE

MOVHOUR,#0;初始化

MOVMINUTE,#0

MOVSECOND,#0

MOVDAY,#0

MOVTCNT,#0

MOVTMOD,#01H

MOVTH0,#(65536-50000)/256;定时50毫秒

MOVTL0,#(65536-50000)MOD256

MOVIE,#82H

SETBTR0

;****************************************************

;判断是否有控制键按下,是哪一个键按下

A1:

LCALLDISPLAY

JNBS_SET,S1

JNBM_SET,S2

JNBH_SET,S3

LJMPA1

S1:

LCALLDELAY;去抖动

JBS_SET,A1

INCSECOND;秒值加1

MOVA,SECOND

CJNEA,#60,J0;判断是否加到60秒

MOVSECOND,#0

LJMPK1

S2:

LCALLDELAY

JBM_SET,A1

K1:

INCMINUTE;分钟值加1

MOVA,MINUTE

CJNEA,#60,J1;判断是否加到60分

MOVMINUTE,#0

LJMPK2

S3:

LCALLDELAY

JBH_SET,A1

K2:

INCHOUR;小时值加1

MOVA,HOUR

CJNEA,#24,J2;判断是否加到24小时

MOVHOUR,#0

LJMPK3

K3:

INCDAY;天值加1

MOVMINUTE,#0

MOVSECOND,#0

LJMPA1

;****************************************************

;等待按键抬起

J0:

JBS_SET,A1

LCALLDISPLAY

SJMPJ0

J1:

JBM_SET,A1

LCALLDISPLAY

SJMPJ1

J2:

JBH_SET,A1

LCALLDISPLAY

SJMPJ2

;***********************************************

;定时器中断服务程序,对秒,分钟和小时的计数

INT_T0:

MOVTH0,#(65536-50000)/256

MOVTL0,#(65536-50000)MOD256

INCTCNT

MOVA,TCNT

CJNEA,#20,RETUNE;计时1秒

INCSECOND

MOVTCNT,#0

MOVA,SECOND

CJNEA,#60,RETUNE

INCMINUTE

MOVSECOND,#0

MOVA,MINUTE

CJNEA,#60,RETUNE

INCHOUR

MOVMINUTE,#0

MOVA,HOUR

CJNEA,#24,RETUNE

MOVHOUR,#0

MOVMINUTE,#0

MOVSECOND,#0

MOVTCNT,#0

RETUNE:

RETI

;******************************************

;显示控制子程序

DISPLAY:

MOVA,SECOND;显示秒

MOVB,#10

DIVAB

CLRP3.6

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY

SETBP3.6

MOVA,B

CLRP3.7

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY

SETBP3.7

CLRP3.5

MOVP0,#40H;显示分隔符

LCALLDELAY

SETBP3.5

MOVA,MINUTE;显示分钟

MOVB,#10

DIVAB

CLRP3.3

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY

SETBP3.3

MOVA,B

CLRP3.4

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY

SETBP3.4

CLRP3.2

MOVP0,#40H;显示分隔符

LCALLDELAY

SETBP3.2

MOVA,HOUR;显示小时

MOVB,#10

DIVAB

CLRP3.0

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY

SETBP3.0

MOVA,B

CLRP3.1

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY

SETBP3.1

RET

TABLE:

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH

DELAY:

MOVR6,#10

D1:

MOVR7,#250

DJNZR7,$

DJNZR6,D1

RET

END

 

五设计体会

通过本次课程设计的制作,总结如下:

设计一个电路,首先要深刻理解其原理,并根据其原理进行电路的设计。

用理论指导实践可以达到事倍功半的效果,有坚实的理论做基础将会使设计变得得心应手。

在设计电路的过程中应注意充分利用并扩展所学过的基础知识,设计的过程就是学习的过程,在设计过程中验证理论的正确性,弥补知识的漏洞。

正确对待设计过程中遇到的错误,遇到错误与问题要敢于面对并设法找到解决的办法。

通过对该电路的设计过程,我实现了从一个没学过PROTEL的人到掌握基本的操作的转化,而且我还查阅了不少相关资料,更深刻地认识和巩固了平时所学的知识,使理论与实践有机结合,提高了我对所学专业的兴趣并积累了一些相关经验。

我认为这就是一种很好的提高自身能力的方法。

这个设计的大部分内容都是在网上找的内容,自己做了一点点小小的改动,在上网找资料的同时也学到了许多东西,找到了很多学习单片机的网站,里面的内容都比较适合我初学者去学,有些网站还专门介绍这种单片机的类型、用法、功能等等。

其实我平时不懂就应该自己去学习去弄明白,只是平时我都太懒。

通过这个课程设计,使我发现,原来小小的一片单片机有这么强大的功能,能应用于各种领域。

都是觉得很神奇,人类真是聪明啊。

我应该在自己以后的学习中,不仅要有刻苦努力,要有钻研精神,还要有创新,对自己感兴趣的一定要用心去学。

虽然自己尽了很大的努力,但是还有很多不尽人意的地方,我想大概是由于开展独立开发经验不足的缘故吧,作为一个学应用物理学的学生,我想我有必要通过这次课更多的了解自己的不足,从而在以后的学习工作中不断增强自己的动手能力,争取在电路设计方面取进步。

该电路还有很多缺陷。

今后我要加强学习,去认识更深层的科学知识,使我设计出来的东西更加完美。

要严格要求自己,就像严格要求设计的每一个细节一样。

一种端正的态度是一个系统设计成功的保障。

一摘要

单片计算机即单片微型计算机。

(Single-ChipMicrocomputer),是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。

他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。

而51单片机是各单片机中最为典型和最有代表性的一种。

这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

二说明

系统由AT89C51、LED数码管、按键、发光二极管等部分构成,能实现时间的调整、定

时时间的设定,输出等功能。

系统的功能选择由SB0、SB1、SB2、SB3、SB4完成。

其中SB0为时间校对,定时器调整功能键,按SB0进入调整状态。

SB1为功能切换键。

第一轮按动SB1依次进入一路、二路、三路定时时间设置提示程序,按SB3进入各路定时调整状态。

定时时间到,二极管发亮。

到了关断时间后灭掉。

如果不进入继续按SB1键,依次进入时间年¡位校对、¡月¡位校对、¡日¡位校对、¡时¡位校对、¡分¡位校对、¡秒¡位

校对状态。

不管是进入那种状态,按动SB2皆可以使被调整位进行不进位增量加1变化。

各预置量设置完成后,系统将所有的设置存入RAM中,按SB1退出调整状态。

上电后,系统自动进入计时状态,起始于¡00¡时¡00¡分。

SB4为年月日显示转换键,可使原来显示时分秒转换显示年月日。

三、电路原理分析

1.显示原理

电原理图见附图1。

由6个共阴极的数码管组成时、分、秒的显示。

P0口的8条数据线

P0.0至P0.7分别与两个CD4511译码的ABCD口相接,P2口的P2.0至P2.2分别通过电阻

R10至R13与VT1至VT3的基极相连接。

这样通过P0口送出一个存储单元的高位、低位BCD显示代码,通过P2口送出扫描选通代码轮流点亮LED1至LED6,就会将要显示的数据在数码管中显示出来。

从P0口输出的代码是BCD码,从P2口输出的就是位选码。

这是扫描显示原理。

2键盘及读数原理

键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。

可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms.

3连击功能的实现

按下某键时,对应的功能键解释程序得到执行,如操作者没有释放按键,则对应的功能会反复执行,好象连续执行,在这里我们采用软件延时250ms,当按键没释放则执行下一条对应程序。

利用连击功能,能实现快速调时操作。

四、程序设计思想和相关指令介绍

本系统的主程序主要完成时间显示和定时输出判断功能。

而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。

1.数据与代码转换。

由前述可知,从P2口输出位选码,从P0口输出段选码,LED就会显示出数字来。

但P0

口的输出的数据是要BCD码,各存储单元存储的是二进制数,也就是和要显示出的字符表达

的含义是不一致的。

可见,将要显示的存储单元的数据直接送到P0口去驱动LED数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD码行转换后,将各个单元数据的段选代码送入P0口,给CD4511译码后去驱动数码管显示。

具体转换过程如下:

我们先将要显示的数据装入累加器A中,再将A中的数据转换成高低两位的BCD码,

再放回A中,然后将A中的值输出。

如:

有一个单元存储了45这样一位数,则需转换成四

位的BCD码:

(0100)(0101)然后放入A中。

A中BCD码,高位四位代表¡4¡低四位代

表¡5¡同时送给两个译码器中,译码后¡45¡字就在两个LED中显示出来。

2.计时功能的实现与中断服务程序

时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。

计数器T0打开后,

进入计时,满100毫秒后,重装定时。

中断一次,满一秒后秒进位,满60秒后即为1分钟,

分钟单元进位,60分到了后,时单元进位,24小时满后,天单元进位。

这样然后根据进率,

得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送LED中显示出来,实现时钟计时功能。

累加是用指令INC来实现的。

进入中断服务程序以后,执行PUSHPSW和PUSHA将程序状态寄存器PSW的内容和累加器A中的数据保存起来,这便是所谓的¡保护现场¡.以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。

在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈的数据存取与一般的RAM存取又有区别,对它的操作,要遵循¡后进先出¡的原则。

3时间控制功能与比较指令

系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:

将执行设备开启的时间和关闭时间置入RAM某一单元,在计时主程序当中执行几条比较指

令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条CLR指令,将对应的

那路P3置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB

对应的P3置低电位,二极管截止,。

实现此控制功能用到的比较指令为CJNEA,#direct,rel,其转移条件是累加器A中的值与立即数不等则转移。

参考文献

1、谢自美,《电子线路设计、实验、测试》武汉:

华中理工大学出版社,2000

2、何书森、何华斌《实用数字电路原理与设计速成》福州:

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

当前位置:首页 > 总结汇报 > 学习总结

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

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