基于单片机制作电子时钟实训报告Word文档格式.docx

上传人:b****5 文档编号:21427417 上传时间:2023-01-30 格式:DOCX 页数:20 大小:305.16KB
下载 相关 举报
基于单片机制作电子时钟实训报告Word文档格式.docx_第1页
第1页 / 共20页
基于单片机制作电子时钟实训报告Word文档格式.docx_第2页
第2页 / 共20页
基于单片机制作电子时钟实训报告Word文档格式.docx_第3页
第3页 / 共20页
基于单片机制作电子时钟实训报告Word文档格式.docx_第4页
第4页 / 共20页
基于单片机制作电子时钟实训报告Word文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于单片机制作电子时钟实训报告Word文档格式.docx

《基于单片机制作电子时钟实训报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机制作电子时钟实训报告Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

基于单片机制作电子时钟实训报告Word文档格式.docx

它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程既通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域[5]。

AT89S51元件简介

本次使用的元件是单片机系统的一个常用元件:

AT89S51。

AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51引脚功能说明(附引脚图)

Vcc:

电源电压

GND:

接地

P0口:

P0口是一组8位漏极开路型双向I/O口,即地址/数据总线复用口。

作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

[5]

图2-1AT89S51引脚图

P1口:

P1口是一个带有内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。

Flash编程和程序校验期间,P1接收低8地址[5]。

P2口:

P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。

在访问8位地址的外部数据存储器(例如执行MOVX@Ri指令)时,P2口线上的内容(即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。

Flash编程和程序校验期间,P2亦接收高位地址和其他控制信号[5]。

P3口:

P3口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“1”,它们被内部上拉电阻拉高并可作为输入端口。

作输入端时,被外部拉低的P3口将用上拉电阻输出电流。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能[5]。

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

表2-1P3口第二功能

端口引脚

第二功能

信号名称

P3.0

RXD

串行数据接收

P3.1

TXD

串行数据发送

P3.2

/INT0

外部中断0请求

P3.3

/INT1

外部中断1请求

P3.4

T0

定时/计数器0的外部输入

P3.5

T1

定时/计数器1的外部输入

P3.6

/WR

外部RAM写选通

P3.7

/RD

外部RAM读选通

RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。

DIRT0位缺省为RESET输出高电平打开状态[5]。

ALE/PROG:

当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此可对外输出时钟或用以定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

对Flash存储器编程期间,该引脚还用于出入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,单片机执行外部程序时,应设置ALE无效[5]。

/PSEN:

程序储存允许(/PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)使,每个机器周期两次/PSEN有效,即输出两个脉冲。

当访问外部数据存储器。

没有两次有效的/PSEN信号[5]。

EA/VPP:

外部访问允许。

欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。

Flash存储器编程时,该引脚加上+12V的编程电压VPP[5]。

XTAL1:

振荡器反相放大器及内部时钟发生器的输入端。

XTAL2:

振荡器反相放大器的输出端。

LED数码管显示电路

数码管是一种把多个LED显示段集成在一起的显示设备。

有两种类型,一种是共阳极,一种是共阴极。

共阳极就是把多个LED显示段的阳极接在一起,又称为公共端。

共阴型就是把多个LED显示段的阴极连接在一起,即为公共商。

阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。

多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。

数码管的显示方法可分为静态显示和动态显示,在本设计中采用的是动态显示,其原理:

各个数码管的相同端连接在一起,共同占用8位段引管线:

每位数码管的阳极连接在一起组成公共端。

利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来[6]。

本设计由两个LED四位一体阴极数码管、8个9012(PNP)三极管、8个510欧上拉电阻等组成,由于LED数码管的位电流较大,故采用三极管来驱动。

8个电阻一端接到单片机的P1口,另一端分别接到三极管的基极,发射极接地,集电极与所述数码管芯片的位控制端相连。

此驱动电路采用主芯片的通用IO口并配合三极管来实现四位数码管的动态扫描和显示驱动,具有电路结构简单、占用电路板空间小、驱动能力强、成本低等优点,其缺点是共阴极的数码管采用PNP三极管驱动,这样三极管的损耗比较大。

位码由P1口输出,段码由P3口输出,P1口线与LED之间5.1K的限流电阻和PNP三极管,显示的方式为动态显示方式。

表2-2字型与字段关系

显示字符

g

f

e

d

c

b

a

字型码

共阴极

共阳极

1

3FH

C0H

06H

F9H

2

5BH

A4H

3

4FH

B0H

4

66H

99H

5

6DH

92H

6

7DH

82H

7

07H

F8H

8

7FH

80H

9

6FH

90H

A

77H

88H

B

7CH

83H

C

39H

C6H

D

5EH

A1H

E

79H

86H

F

71H

8EH

数码管驱动的意义:

第一:

假如不驱动的话,单片机的高低电平仍然可以控制数码管的亮度,形在动态显示,但这时细心的你会发现这时的数码的亮度会比较暗,并且扫描频率很高,仍然有微小的闪动现象,因为单片机的输出的电流本身就很弱;

第二:

三极管的作用是:

1、起到开关的作用,即某一时刻打开或关闭数码管,形成动态显示;

2、驱动数码管,静态显示可以不明显,动态显示的时候,效果就出来了。

硬件设计及元器件技术说明电子元器件技术说明

AT89S51单片机基板电子元件清单:

元件

型号或规格

数量

单片机

AT89S51

LED

Φ3

电阻

510Ω

10KΩ

排阻

A102J

单片机芯片插槽

瓷片电容

30pF

数据线插槽

电解电容

10μF

晶振

12MHz

单排座

20位

万用板

7cm*9cm

免驱动数据线

按钮

电源开关

LED数码管显示电路模块所需电子元件清单:

LED数码管

SR*30361(BS)

三极管

9012

单排针

15位

4.7kΩ

1000Ω

5cm*7cm

硬件电路图

实验板原理图

控制系统的软件设计

软件系统主要分为以下几个部分:

主程序、显示子程序及中断服务子程序。

以动态显示作为主程序,主要是初始化部分和不断调用动态显示子程序。

动态显示子程序,它被主程序不断调用,以保证稳定可靠的显示;

按键查询采用中断方式;

秒定时采用定时器T0中断方式进行,定时时间为50MS,每50MS溢出一次,中断两次达100MS。

然后通过显示子程序将单元里面的十六进制数拆开为BCD码,送到显示缓冲区。

流程图

程序编写

ORG0000H;

程序执行开始地址

LJMPSTART;

跳到标号START执行

ORG0003H;

外中断0中断程序入口

RETI;

外中断0中断返回

ORG000BH;

定时器T0中断程序入口

LJMPINTT0;

跳至INTTO执行

ORG0013H;

外中断1中断程序入口

RETI;

外中断1中断返回

ORG001BH;

定时器T1中断程序入口

LJMPINTT1;

跳至INTT1执行

ORG0023H;

串行中断程序入口地址

串行中断程序返回

;

主程序;

START:

MOVR0,#70H;

清70H-7AH共11个内存单元

MOVR7,#0BH

;

clrP3.3

CLEARDISP:

MOV@R0,#00H;

INCR0;

DJNZR7,CLEARDISP;

MOV20H,#00H;

清20H(标志用)

MOV7AH,#0AH;

放入"

熄灭符"

数据

MOVTMOD,#11H;

设T0、T1为16位定时器

MOVTL0,#0B0H;

50MS定时初值(T0计时用)

MOVTH0,#3CH;

50MS定时初值

MOVTL1,#0B0H;

50MS定时初值(T1闪烁定时用)

MOVTH1,#3CH;

SETBEA;

总中断开放

SETBET0;

允许T0中断

SETBTR0;

开启T0定时器

MOVR4,#14H;

1秒定时用初值(50MS×

20)

START1:

LCALLDISPLAY;

调用显示子程序

JNBP3.3,SETMM1;

P3.7口为0时转时间调整程序

SJMPSTART1;

P3.7口为1时跳回START1

SETMM1:

LJMPSETMM;

转到时间调整程序SETMM

1秒计时程序;

T0中断服务程序

INTT0:

PUSHACC;

累加器入栈保护

PUSHPSW;

状态字入栈保护

CLRET0;

关T0中断允许

CLRTR0;

关闭定时器T0

MOVA,#0B7H;

中断响应时间同步修正

ADDA,TL0;

低8位初值修正

MOVTL0,A;

重装初值(低8位修正值)

MOVA,#3CH;

高8位初值修正

ADDCA,TH0;

MOVTH0,A;

重装初值(高8位修正值)

开启定时器T0

DJNZR4,OUTT0;

20次中断未到中断退出

ADDSS:

20次中断到(1秒)重赋初值

MOVR0,#71H;

指向秒计时单元(71H-72H)

ACALLADD1;

调用加1程序(加1秒操作)

MOVA,R3;

秒数据放入A(R3为2位十进制数组合)

CLRC;

清进位标志

CJNEA,#60H,ADDMM;

ADDMM:

JCOUTT0;

小于60秒时中断退出

ACALLCLR0;

大于或等于60秒时对秒计时单元清0

MOVR0,#77H;

指向分计时单元(76H-77H)

分计时单元加1分钟

MOVA,R3;

分数据放入A

CJNEA,#60H,ADDHH;

ADDHH:

JCOUTT0;

小于60分时中断退出

大于或等于60分时分计时单元清0

MOVR0,#79H;

指向小时计时单(78H-79H)

小时计时单元加1小时

时数据放入A

CJNEA,#24H,HOUR;

HOUR:

小于24小时中断退出

大于或等于24小时小时计时单元清0

OUTT0:

MOV72H,76H;

中断退出时将分、时计时单元数据移

MOV73H,77H;

入对应显示单元

MOV74H,78H;

MOV75H,79H;

POPPSW;

恢复状态字(出栈)

POPACC;

恢复累加器

开放T0中断

RETI;

中断返回

闪动调时程序;

T1中断服务程序,用作时间调整时调整单元闪烁指示

INTT1:

中断现场保护

MOVTL1,#0B0H;

装定时器T1定时初值

MOVTH1,#3CH;

DJNZR2,INTT1OUT;

0.3秒未到退出中断(50MS中断6次)

MOVR2,#06H;

重装0.3秒定时用初值

CPL02H;

0.3秒定时到对闪烁标志取反

JB02H,FLASH1;

02H位为1时显示单元"

熄灭"

02H位为0时正常显示

MOV74H,78H;

INTT1OUT:

POPPSW;

恢复现场

中断退出

FLASH1:

JB01H,FLASH2;

01H位为1时,转小时熄灭控制

MOV72H,7AH;

01H位为0时,"

数据放入分

MOV73H,7AH;

显示单元(72H-73H),将不显示分数据

AJMPINTT1OUT;

转中断退出

FLASH2:

01H位为1时,"

数据放入小时

显示单元(74H-75H),小时数据将不显示

MOV74H,7AH;

MOV75H,7AH;

加1子程序;

ADD1:

MOVA,@R0;

取当前计时单元数据到A

DECR0;

指向前一地址

SWAPA;

A中数据高四位与低四位交换

ORLA,@R0;

前一地址中数据放入A中低四位

ADDA,#01H;

A加1操作

DAA;

十进制调整

MOVR3,A;

移入R3寄存器

ANLA,#0FH;

高四位变0

MOV@R0,A;

放回前一地址单元

取回R3中暂存数据

指向当前地址单元

MOV@R0,A;

数据放入当削地址单元中

RET;

子程序返回

清零程序;

对计时单元复零用

CLR0:

CLRA;

清累加器

清当前地址单元

前一地址单元清0

RET;

时钟调整程序;

当调时按键按下时进入此程序

SETMM:

cLRET0;

关定时器T0中断

CLRTR0;

LCALLDL1S;

调用1

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

当前位置:首页 > 工作范文 > 演讲主持

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

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