AT89C智能时钟设计Word文档下载推荐.docx

上传人:b****6 文档编号:19077973 上传时间:2023-01-03 格式:DOCX 页数:19 大小:196.85KB
下载 相关 举报
AT89C智能时钟设计Word文档下载推荐.docx_第1页
第1页 / 共19页
AT89C智能时钟设计Word文档下载推荐.docx_第2页
第2页 / 共19页
AT89C智能时钟设计Word文档下载推荐.docx_第3页
第3页 / 共19页
AT89C智能时钟设计Word文档下载推荐.docx_第4页
第4页 / 共19页
AT89C智能时钟设计Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

AT89C智能时钟设计Word文档下载推荐.docx

《AT89C智能时钟设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《AT89C智能时钟设计Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

AT89C智能时钟设计Word文档下载推荐.docx

-23-

四、使用说明书:

五、结论:

-24-

六、附录:

-25-

(元件清单)-25-

参考文献-25-

单片机是20世纪70年代中期发展起来的一种将CPU、RAM、ROM、I/O接口和中断系统集成于一块硅片上的大规模集成电路芯片,又称微控制器。

单片机的开发应用已经成为高科技领域的一项重要技术。

“单片机原理及应用”是电子信息、机电专业课程之一。

学生应通过学习、熟悉单片机应用系统的设计与调试,掌握单片机在工业、经济和日常生活中的应用,为将来踏上工作岗位后进行电子产品的设计、生产、检测和维护奠定坚实的基础。

本报告对以ATC2051-24PC为核心的单片机展开研究。

以汇编语言为基础,制作了“六位数字时钟”。

学习了集排线、安装、焊接和编程为一体的课程设计

在本次实习中参考了授课老师及同学们的建议,针对现代企业选用人才特点,培养学生在掌握必须、够用的基础知识的前提下,加入了自己对本次实习的见解。

本报告由王革老师策划,硬件部分由郑庄编写,软件部分由于天龙编写,由李海涛整合而成。

在本报告编写的过程中王革老师提出了很多宝贵意见和建议,在此表示衷心感谢。

同时编者参考了很多文献资料,在此向各位文献资料作者表示感谢。

鉴于编者水平有限,书中难免有不妥之处,敬请批阅本报告的老师和同学们批评和指正。

(一)、设计目的

通过学习基于ATC2051-24PC单片机设计6位电子数字时钟:

可以实现时间的精确显示和进位,以及手动调时。

继而学习单片机的中端系统,定时/计数器,以及基本的汇编语言。

(二)、设计设备

PC机、ATC2051烧录器、6位数字电子时钟套件、KeilμVision2集成开发环境

(三)、设计原理

显示部分主要器件为2位共阳红色数码管,驱动采用PNP型三极管驱动,各端口配有限流电阻,驱动方式为扫描,占用P1.0~P1.6端口。

冒号部分采用4个Φ3.0的红色发光,驱动方式为独立端口驱动,占用P1.7端口。

2、键盘原理:

按键S1采用独立式按键。

其工作方式为,在P3.7端口输入低电平时读取按键的状态并由单片机赋予相应的键值。

采用P1口输出P3口控制

4、单片机系统:

本产品采用AT89C2051为核心器件,并配合所有的必须的电路,只具有上电复位的功能,无手动复位功能。

(一)、电路原理及特点

89C2051数字钟套件,控制芯片采用AT89C2051,数码管采用3只两位红色的共阳型LED数码管,显示清晰亮度高,因为是扫描的显示方式,所以各个数码管的abcdefg各脚采用了总线并联,改动R1-R7的电阻值可以改变显示亮度。

S1按纽用于校准时间,按住2秒以上进入校准时间状态及换档和退出,快速点触用于调节时间数值。

本电路又增加了一个3V的备用电池,停电时AT89C2051采用备用电池供电,时钟不会停止,但数码管不显示,来电后备用电池失去作用,AT89C2051采用外部电源供电,数码管正常显示。

注意:

数码管如显示不正常,请断开电源,拿掉备用电池,再重新装上后,通电即恢复正常。

AT89C2051芯片介绍

AT89C2051是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C2051单片机在电子类产品中有广泛的应用。

内部结构

AT89C2051是一带有2K字节闪速可编程可擦除只读存储器(EEPROM)的低电压,高性能8位CMOS微处理器。

它采用ATMEL的高密非易失存储技术制造并和工业标准MCS-51指令集和引脚结构兼容。

通过在单块芯片上组合通用的CPLI和闪速存储器,ATMEL的AT89C2051是一强劲的微型处理器,它对许多嵌入式控制应用提供一定高度灵活和成本低的解决办法。

AT89C2051提供以下标准功能:

2K字节闪速存储器,128字节RAM,15根I/O口,两个16位定时器,一个五向量两级中断结构,一个全双工串行口,一个精密模拟比较器以及两种可选的软件节电工作方式。

空闲方停止CPU工作但允许RAM、定时器/计数器、串行工作口和中断系统继续工作。

掉电方式保存RAM内容但振荡器停止工作并禁止有其它部件的工作到下一个硬件复位。

程序保密

AT89C2051设计有2个程序保密位,保密位1被编程之后,程序存储器不能再被编程除非做一次擦除,保密位2被编程之后,程序不能被读出。

软硬件的开发

AT89C2051可以采用下面两种方法开发应用系统。

1、由于89C2051内部程序存贮器为Flash,所以修改它内部的程序十分方便快捷,只要配备一个可以编程89C2051的编程器即可。

调试人员可以采用程序编辑-编译-固化-插到电路板中试验这样反复循环的方法,对于熟练的MCS-51程序员来说,这种调试方法并不十分困难。

但是做这种调试不能够了解片内RAM的内容和程序的走向等有关信息。

2、将普通8031/80C31仿真器的仿真插头中P1.0~P1.7和P3.0~P3.6引出来仿真2051,这种方法可以运用单步、断点的调试方法,但是仿真不够真实,比如,2051的内部模拟比较器功能,P1口、P3口的增强下拉能力等等。

引脚说明

1、VCC:

电源电压。

2、GND:

地。

3、P1口:

P1口是一个8位双向I/O口。

口引脚P1.2~P1.7提供内部上拉电阻,P1.0和P1.1要求外部上拉电阻。

P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(ANI0)和反相输入(AIN1)。

P1口输出缓冲器可吸收20mA电流并能直接驱动LED显示。

当P1口引脚写入“1”时,其可用作输入端,当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其可用作输入端。

当引脚P1.2-P1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流。

4、P3口:

P3口的P3.0~P3.5、P3.7是带有内部上拉电阻的七个双向I/O口引脚。

P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。

P3口缓冲器可吸收20mA电流。

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

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

P3口还用于实现AT89C2051的各种第二功能,如下表所列:

  

引脚口

功能

P3.0

RXD串行输入端口

P3.1

TXD串行输出端口

P3.2

INT0 外中断0

P3.3

INT1 外中断1

P3.4

T0定时器0外部输入

P3.5

T1定时器1外部输入

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

5、RST:

复位输入。

RST一旦变成高电平所有的I/O引脚就复位到“1”。

当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。

每一个机器周期需12个振荡器或时钟周期。

6、XTAL1:

作为振荡器反相器的输入和内部时钟发生器的输入。

7、XTAL2:

作为振荡器反相放大器的输出。

主要性能

1、和MCS-51产品兼容;

2、2KB可重编程FLASH存储器(10000次);

3、2.7-6V电压范围;

4、全静态工作:

0Hz-24MHz;

5、2级程序存储器保密锁定;

6、128*8位内部RAM;

7、15条可编程I/O线;

8、两个16位定时器/计数器;

9、6个中断源;

10、可编程串行通道;

11、高精度电压比较器(P1.0,P1.1,P3.6);

12、直接驱动LED的输出端口

电路原理图

Pcb图

软件设计

程序清单

;

AT89C2051时钟程序;

定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用,

P3.7为调整按钮,P1口为字符输出口,采用共阳显示管。

;

中断入口程序;

ORG0000H;

程序执行开始地址

LJMPSTART;

跳到标号START执行

ORG0003H;

外中断0中断程序入口

RETI;

外中断0中断返回

ORG000BH;

定时器T0中断程序入口

LJMPINTT0;

跳至INTTO执行

ORG0013H;

外中断1中断程序入口

外中断1中断返回

ORG001BH;

定时器T1中断程序入口

LJMPINTT1;

跳至INTT1执行

ORG0023H;

串行中断程序入口地址

串行中断程序返回

主程序;

START:

MOVR0,#70H;

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

MOVR7,#0BH;

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,#5H;

1秒定时用初值(50MS×

20)

START1:

LCALLDISPLAY;

调用显示子程序

JNBP3.7,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,#30H,ADDMM;

ADDMM:

JCOUTT0;

小于60秒时中断退出

ACALLCLR0;

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

MOVR0,#77H;

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

分计时单元加1分钟

分数据放入A

CJNEA,#60H,ADDHH;

ADDHH:

小于60分时中断退出

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

MOVR0,#79H;

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

小时计时单元加1小时

时数据放入A

CJNEA,#12H,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时正常显示

INTT1OUT:

恢复现场

中断退出

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,#05H;

A加1操作

DAA;

十进制调整

MOVR3,A;

移入R3寄存器

ANLA,#0FH;

高四位变0

MOV@R0,A;

放回前一地址单元

取回R3中暂存数据

指向当前地址单元

数据放入当削地址单元中

RET;

子程序返回

清零程序;

对计时单元复零用

CLR0:

CLRA;

清累加器

清当前地址单元

前一地址单元清0

时钟调整程序;

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

SETMM:

cLRET0;

关定时器T0中断

LCALLDL1S;

调用1秒延时程序

JBP3.7,CLOSEDIS;

键按下时间小于1秒,关闭显示(省电)

进入调时状态,赋闪烁定时初值

SETBET1;

允许T1中断

SETBTR1;

开启定时器T1

SET2:

JNBP3.7,SET1;

P3.7口为0(键未释放),等待

SETB00H;

键释放,分调整闪烁标志置1

SET4:

JBP3.7,SET3;

等待键按下

LCALLDL05S;

有键按下,延时0.5秒

JNBP3.7,SETHH;

按下时间大于0.5秒转调小时状态

按下时间小于0.5秒加1分钟操作

LCALLADD1;

调用加1子程序

取调整单元数据

CJNEA,#30H,HHH;

调整单元数据与60比较

HHH:

JCSET4;

调整单元数据小于60转SET4循环

LCALLCLR0;

调整单元数据大于或等于60时清0

AJMPSET4;

跳转到SET4循环

CLOSEDIS:

省电(LED不显示)状态。

开T0中断

开启T0定时器(开时钟)

CLOSE:

JBP3.7,CLOSE;

无按键按下,等待。

有键按下,调显示子程序延时削抖

是干扰返回CLOSE等待

WAITH:

JNBP3.7,WAITH;

等待键释放

LJMPSTART1;

返回主程序(LED数据显示亮)

SETHH:

CLR00H;

分闪烁标志清除(进入调小时状态)

SETHH1:

JNBP3.7,SET5;

SETB01H;

小时调整标志置1

SET6:

JBP3.7,SET7;

等待按键按下

有键按下延时0.5秒

JNBP3.7,SETOUT;

按下时间大于0.5秒退出时间调整

按下时间小于0.5秒加1小时操作

调加1子程序

CJNEA,#12H,HOUU;

计时单元数据与24比较

HOUU:

JCSET6;

小于24转SET6循环

大于或等于24时清0操作

AJMPSET6;

跳转到SET6循环

SETOUT:

JNBP3.7,SETOUT1;

调时退出程序。

延时削抖

是抖动,返回SETOUT再等待

CLR01H;

清调小时标志

清调分标志

CLR02H;

清闪烁标志

CLRTR1;

关闭定时器T1

CLRET1;

关定时器T1中断

开定时器T0中断(计时开始)

跳回主程序

SET1:

键释放等待时调用显示程序(调分)

AJMPSET2;

防止键按下时无时钟显示

SET3:

等待调分按键时时钟显示用

AJMPSET4

SET5:

键释放等待时调用显示程序(调小时)

AJMPSETHH1;

SET7:

等待调小时按键时时钟显示用

AJMPSET6

SETOUT1:

退出时钟调整时键释放等待

AJMPSETOUT;

显示程序;

显示数据在70H-75H单元内,用六位LED共阳数码管显示,P1口输出段码数据,P3口作

扫描控制,每个LED数码管亮1MS时间再逐位循环。

DISPLAY:

MOVR1,#70H;

指向显示数据首址

MOVR5,#0FEH;

扫描控制字初值

PLAY:

MOVA,R5;

扫描字放入A

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

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

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

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