单片机报告.docx

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

单片机报告.docx

《单片机报告.docx》由会员分享,可在线阅读,更多相关《单片机报告.docx(22页珍藏版)》请在冰点文库上搜索。

单片机报告.docx

单片机报告

 

数字时钟控制电路

设计报告

 

专业:

计算机应用

姓名:

潘龙

学号:

D0*******

指导教师:

任波

完成日期:

2009.5.28

 

摘要

单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。

由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显

数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。

本系统是基于AT89C51单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行时间调整,同时引入一个内部充电电源在停止外部供电时,仍具有内部计时的功能。

该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点

 

关键词:

单片机,AT89S51,电子时钟,数码管

 

目录

第一章前言5

1.1设计意义5

1.  2设计要求5

1.   3设备及工作环境6

第二章本论6

2.1设计目标6

2.2设计思路6

2.3设计方法8

2.3.1整体设计图如下图2-18

8

2.3.289C51的主要功能9

2.3.374LS273的主要功能9

2.3.3时钟电路的主要功能10

2.4硬件工作原理阐述10

2.4.1记时模块10

2.4.2运算模块10

2.4.3显示模块11

2.4.3.1 LED显示结构与原理11

2.4.3.2LED显示器接口及显示方式11

2.5源程序代码12

第三章设计总结19

3.1设计结果19

3.2调试过程及分析20

参考文献21

 

第一章前言

1.1设计意义

 用AT89C51单片机CPU、74LS273以及接口电路设计并实现显示时间的实时时钟。

1.  2设计要求

(1)   在ProteusVersion7.1软件上编写软件完成设计。

(2)   程序的首地址应使目标机可以直接运行,即从0000H开始。

在主程序的开始部分必须设置一个合适的栈底。

程序放置的地址须连续且靠前,不要在中间留下大量的空间地址,以使目标机可以使用较少的硬件资源。

(3)   6位LED数码管从左到右分别显示时.分.秒(各占用2位),采用24小时标准计时制。

开始计时时为000000,到235959后变成000000.

(4)   在XD1—2键盘上选定3个键分别作为小时.分.秒的调校键。

每按一次键,对应的显示值便加1。

分.秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不发生改变).

(5)   软件设计必须使用AT89C51片内定时器,采用定时中断结构,不得使用软件延时法。

(6)   上机调试程序。

(7)   写出设计报告。

1.   3设备及工作环境

(1)硬件:

计算机一台、

(2)软件:

Windows操作系统、ProteusVersion7.1软件。

第二章本论

2.1设计目标

本次设计利用单片机实现数字时钟计时功能的主要内容,其中AT89C51是核心元件同时采用数码管动态显示“年”“时”,“分”,“秒”的现代计时装置。

与传统机械表相比,它具有走时精确,显示直观等特点。

它的计时周期为24小时,显满刻度为“23时59分59秒”,并有记年的功能。

主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。

2.2设计思路

电子时钟主要由显示模块、记时模块和时钟运算模块三大部分组成。

其中记时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1,时计算到24时,要清零。

这样,才能循环记时。

2.3设计方法

2.3.1整体设计图如下图2-1

图2-1总体设计图

程序流程图:

图2-2流程图

2.3.289C51的主要功能

AT89C51是一种带4K字节闪烁可编程可擦除(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图所示。

图2-3AT89C51

2.3.374LS273的主要功能

74ls273中文资料:

是带有清除端的8D触发器,只有在清除端保持高电平时,才具有锁存功能,锁存控制端为11脚CLK,采用上升沿锁存。

CPU的ALE信号必须经过反相器反相之后才能与74LS273的控制端CLK端相连。

74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

图2-474LS273

2.3.3时钟电路的主要功能

AT89C51单片机的时钟信号通常用内部振荡方式得到:

在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。

由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

内部振荡方式的外部电路如下图所示。

2.4硬件工作原理阐述

2.4.1记时模块

电子时钟主要由AT89C51片内定时器定时中断,并取一存储单元作为计数器使用,每中断一次,在中断服务程序中使计数器加1、AT89C51芯片、74LS273锁存器、LED数码显示管组成。

主要用AT89C51片内定时器定时中断服务程序完成秒、分、时的运算即计时功能。

此实时时钟的设计与实现,主要采用了14只LED数码管,AT89C51内部二进制16位定时器/计数器,可编程中断控制器AT89C51等芯片,包括显示模块,运算模块和校正模块三大功能模块。

2.4.2运算模块

该模块的主要功能是对年、时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。

该模块可以细分

为秒定时模块和运算模块。

秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现。

本实验中用AT89C51定时器/计数器,但因为AT89C51供的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。

中断信号是AT89C51工作方式为方式1,产生一个50ms的脉冲信号。

运算模块负责时、分、秒的计算,该模块主要通过AT89C51的IR1号中断来实现,但由于每50ms一次中断请求,所以在中断服务程序必须利用已申请内存单元26H来统计中断请求的次数,只有当26H的值为20时,才能让秒单元内的数值加1。

在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。

当时加到24时,直接清零。

然后转到调用处.

2.4.3显示模块

单片机应用系统中使用的显示器主要有发光二极管显示器,简称LED(LightEmittingDiode);而目前在单片机系统中,通常用LED数码显示器来显示各种数字或符号。

由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。

2.4.3.1 LED显示结构与原理

单片机中通常用七段LED构成字型“8”,另外,还有一个小数点发光二极管以显示小数位!

这种显示器有共阴和共阳两种!

发光二极管的阳极连在一起的(公共端)称为共阳极显示器,阴极连在一起的称为共阴极显示器。

一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划(段)a_g,另一个小数点为dp发光二极管。

当在某段发光二极管上施加一定的正向电压时,该段笔画即亮;不加电压则暗。

为了保护各段LED不被损坏,需外加限流电阻。

由于共阴极连接需加驱动,故在这里我采用的是共阳阳极连接。

以共阳极LED为例,如图(b)所示,各LED公共阳极K0接高电平,若向各控制端a,b, ┄,g,dp顺次送入00011110信号,则该显示器显示“⒎”字型。

共阴极7段LED显示数字0~F、文字、符号及小数点的编码(a段为最地位,dp点为最高位)如(图2-1)所示。

 共阴极7段LED显示字型编码表.

显示字符

共阴极段选码

显示字符

共阴极段选码

0

3FH

5

6DH

1

06H

6

7DH

2

5BH

7

07H

3

4FH 

8

7FH

4

66H 

9

6FH

00H 

图2-5LED显示字型编码表

2.4.3.2LED显示器接口及显示方式

LED显示器有静态显示方式和动态显示方式两种。

静态显示就是当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另一个字符为止。

LED显示器工作于静态显示方式时,各位的共阴极接地;若为共阳极则接+5V电源。

每位的段选线分别与一个8位锁存器的输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。

图2-6LED显示器

正因为如此,静态显示器的亮度较高。

这种显示方式编程容易,管理也较简单,但占用I/O口线资源较多。

因此,在显示位数较多的情况下,一般都采用动态显示方式。

由于所有6位段皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相同的字符。

要想每位显示不同的字符,就必须采用扫描方法流点亮各位LED,即在每一瞬间只使某一位显示字符。

在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示位送入选通电平(因为LED为共阴,故应送低电平),以保证该位显示相应字符。

如此轮流,使每位分时显示该位应显示字符。

例如,要求显示“LL0-20”时,I/O1和I/O2轮流送入段选码、位选码           

数码管的显示功能来设计。

显示部分硬件用十四只LED为显示管,这些LED发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。

通过在这8只发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的数字。

该模块主要是将运算模块和校时模块运算出来并存放在内存单元里的十六进制表示的时位、分位和秒位数值转化为十进制,并通过8只数码管显示出来。

该模块实现的硬件是DVCC-8086JH实验箱中的LED单元,采用软件译码,即在程序中设置一个段选码表。

CPU直接往LED输出八段代码,省去了硬件译码器。

A0~A3作为8段数据输出口,经74LS07驱动后到达各LED。

只要做到每送一次段选码时也送一次位扫描码,并且每送一次位扫描码后,位码中的0右移一位作为下一次的位扫描码,即可实现由左向右使十四只LED依次出现数字显示。

2.5源程序代码

ORG0

SJMPSTAR

ORG0013H

LJMPXW

ORG001BH

LJMPTLSTART

ORG30H

STAR:

CLRRS0;主程序,初始化,等待中断

CLRRS1

MOVSP,#30H

MOVTMOD,#10H

SETBPX1;外中断优先级高

CLRIT1;外中断申请信号;低电平

MOVIE,#8CH

MOVTH1,#3CH

MOVTL1,#0B0H

MOV40H,#2

MOV20H,#80H

MOV70H,#40;秒

MOV71H,#58;分

MOV72H,#23;时

MOV73H,#31;天

MOV74H,#1;月

MOV75H,#00;年

MOV76H,#19;年

SETBP3.3

SETBP3.4

SETBTR1

E01:

SJMPE01;等待溢出

XW:

PUSHACC;外中断

MOVA,20H;移动标志位并修改内容

JBACC.6,E60

RLA

MOV20H,A

SJMPE20

E60:

MOV20H,#1

E20:

JNBP3.4,E20;检测JIA下降沿;等待变成1

E30:

JBP3.4,E30;等待变成0

JBP3.3,E37;JIA下降沿时,若P3.3为退出子程序

MOVA,20H

JB20H.6,E36

JB20H.5,E35

JB20H.4,E34

JB20H.3,E33

JB20H.2,E32

JB20H.1,E31

INC70H;修改秒

MOVA,70H

CJNEA,#60,BTOD

MOV70H,#0

SJMPBTOD

E31:

INC71H;修改分

MOVA,71H

CJNEA,#60,BTOD

MOV71H,#0

SJMPBTOD

E32:

INC72H;修改时

MOVA,72H

CJNEA,#24,BTOD

MOV72H,#0

SJMPBTOD

E33:

SJMPYUE;跳转YUE,修改天

E34:

INC74H;修改月

MOVA,74H

CJNEA,#13,BTOD

MOV74H,#1

SJMPBTOD

E35:

INC75H;修改低年

MOVA,75H

CJNEA,#100,BTOD

MOV74H,#0

SJMPBTOD

E36:

INC76H;修改高年

MOVA,76H

CJNEA,#100,BTOD

MOV76H,#0

BTOD:

ACALLBTOD5

ACALLDISP

SJMPE20

E37:

POPACC

RETI

AA:

MOV73H,#1;中间跳转

SJMPBTOD

SJMPE20

YUE:

MOVA,74H

CJNEA,#2,SS

MOVA,75H

CJNEA,#0,ss1;75H内容是0,向下执行

MOVA,76H;检验能否被400除

MOVB,#4

DIVAB

MOVA,B

JZss2

SJMPss3

ss1:

MOVA,75H;能否被4整除

MOVB,#4

DIVAB

MOVA,B

JZss2

sjmpss3

ss2:

INC73H;闰年时二月

MOVA,73H

CJNEA,#30,BTOD

SJMPAA

ss3:

INC73H;平年时二月

MOVA,73H

CJNEA,#29,BTOD

SJMPAA

SS:

MOVA,74H;除二月其它月

ACALLseg7

INC73H

CJNEA,73H,BTOD

SJMPAA

BTOD5:

MOVR0,#70H;数据转换

MOVR1,#50H

BTOD1:

MOVA,@R0

MOVB,#10

DIVAB

MOV@R1,B

SWAPA

ORLA,@R1

MOV@R1,A

INCR1

INCR0

CJNER0,#77H,BTOD1

RET

DISP:

MOVR1,#50H;显示子程序

MOVA,@R1

MOVP1,A;显示秒

CLRP3.2

SETBP3.2

NOP

INCR1

MOVA,@R1

MOVP1,A;显示分

CLRP3.1

SETBP3.1;产生锁存信号

NOP

INCR1

MOVA,@R1

MOVP1,A;显示时

CLRP3.0

SETBP3.0;产生锁存信号

NOP

INCR1

MOVA,@R1

MOVP1,A;显示天

CLRP2.2

SETBP2.2;产生锁存信号

NOP

INCR1

MOVA,@R1

MOVP1,A;显示月

CLRP2.1

SETBP2.1;产生锁存信号

NOP

INCR1

MOVA,@R1

MOVP1,A;显示年

CLRP2.0

SETBP2.0;产生锁存信号

NOP

INCR1

MOVA,@R1

MOVP1,A;显示年

CLRP2.3

SETBP2.3;产生锁存信号

NOP

RET

TLSTART:

SETBRS1;定时中断

CLRRS0

PUSHACC

MOVTH1,#3CH

MOVTL1,#0B0H

DJNZ40H,E50

MOV40H,#2

ACALLBTOD5

INC70H;够1秒

MOVA,70H

CJNEA,#60,BTOD2

MOV70H,#0

INC71H;够1分

MOVA,71H

CJNEA,#60,BTOD2

MOV71H,#0

INC72H;够1小时

MOVA,72H

CJNEA,#24,BTOD2

MOV72H,#0

SJMPYUEE;跳到YUEE判断修改天

BB:

MOV73H,#1

SJMPCC

CC:

INC74H;够1月

MOVA,74H

CJNEA,#13,BTOD2

MOV74H,#1

INC75H;够1年

MOVA,75H

CJNEA,#100,BTOD2

MOV75H,#0

INC76H;修改年

MOVA,76H

CJNEA,#100,BTOD2

MOV76H,#0

BTOD2:

ACALLBTOD5

ACALLDISP

E50:

CLRRS0

CLRRS1

POPACC

RETI

YUEE:

MOVA,74H

CJNEA,#2,KK

MOVA,75H

CJNEA,#0,kk1;75H为0向下执行

MOVA,76H;看76H,即检验能否被400整除

MOVB,#4

DIVAB

MOVA,B

JZkk2

SJMPkk3

kk1:

MOVA,75H;验证75H能不能被4整除

MOVB,#4

DIVAB

MOVA,B

JZkk2

SJMPkk3

kk2:

INC73H;平年时二月

MOVA,73H

CJNEA,#30,BTOD2

SJMPBB

kk3:

INC73H;闰年时二月

MOVA,73H

CJNEA,#29,BTOD2

SJMPBB

KK:

MOVA,74H;除二月其它月

acallseg7

inc73H

cjneA,73H,BTOD2

SJMPBB

seg7:

movca,@a+pc

ret

TAB:

DB32,28,32,31,32,31,32,32,31,32,31,32

END

第三章设计总结

3.1设计结果

经过编译,运行后,出现如下图

图3.1运行结果

3.2调试过程及分析

 将编写好的源程序输入电脑,编译后出现很多错误,这些错误有许多时平时的实验遇到过的,例如:

输入的分号格式不正确,CJNE写成了CJNZ等等,幸好这些错误在平时的实验中遇到了,所以改错误很容易,但同时也说明了,平时的错误现在还在换,证明错误我还没有完全的改正,这点我以后一定要注意了。

争起错误换了两次就不能在换了。

除了常见的错误外,还有几条错误时我从来没有遇到过的,如:

LJMP跳转指令跳不回指定的位置,是因为跳转的长度大于LJMP跳转的长度,最后,经过几天在机房的努力,终于实现了时钟的全部要求。

 

通过本次设计,我系统的了解了时钟的设计流程,特别是硬、软件的设计方法,掌握了键盘显示电路的基本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了AT80C51定时器的使用和中断处理器程序的编程方法。

让我把理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合、个人作用和集体协作相结合等方面全面的培养学生的全面素质。

这些在我今后的学习和工作当中都会有很大的帮助。

最后,我要感谢我的指导老师,在这次课程设计中给了我许多的帮助。

 

参考文献

[1]丁辉、姚庆文.实用单片机电子钟的设计2003年合订本       

[2]于海生.微型计算机控制技术[M].清华大学出版社.1999-6

[3]孙涵芳.单片机原理及应用[M].北京航空航天大学出版社.1996-4

[4]黄正谨.综合电子设计与实践[M].东南大学出版社.2002-3

[5]杨欣等.电子设计从零开始[M].清华大学出版社.2005-10

[6]谢嘉奎.电子线路[M].高等教育出版社.2003-2

[7]夏路易.电路原理图与电路设计教程Protel99SE[M].北京希望电子出版社.2002

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

当前位置:首页 > 人文社科 > 法律资料

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

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