基于protues的电子钟设计

上传人:aa****6 文档编号:39165979 上传时间:2018-05-12 格式:DOCX 页数:8 大小:81.28KB
返回 下载 相关 举报
基于protues的电子钟设计_第1页
第1页 / 共8页
基于protues的电子钟设计_第2页
第2页 / 共8页
基于protues的电子钟设计_第3页
第3页 / 共8页
基于protues的电子钟设计_第4页
第4页 / 共8页
基于protues的电子钟设计_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《基于protues的电子钟设计》由会员分享,可在线阅读,更多相关《基于protues的电子钟设计(8页珍藏版)》请在金锄头文库上搜索。

1、第一章第一章 AT89C51 简介简介AT89C51 是一种带 4K 字节 FLASH 存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称 单片机。AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。 单片机的可擦除只读存储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度 非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。 由于将多功能 8 位 CPU 和闪速存储器组合在单个芯片中,ATMEL 的 AT89C51 是

2、 一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C51 单片机为很多 嵌入式控制系统提供了一种灵活性高且价廉的方案主要特性: 与 MCS-51 兼容 4K 字节可编程 FLASH 存储器 寿命:1000 写/擦循环 数据保留时间:10 年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288 位内部 RAM 32 可编程 I/O 线 两个 16 位定时器/计数器 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路特性概述: AT89C51 提供以下标准功能:4k 字节 Flash 闪速存储器,128 字节内部 RAM,32 个 I/O 口线,

3、两个 16 位定时/计数器,一个 5 向量两级中断结构,一 个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51 可降至 0Hz 的 静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工 作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式 保存 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬 件复位。第第二章二章 电子钟仿真运行电路图电子钟仿真运行电路图第三章第三章 源代码源代码RST BIT P2.0;定义端口 SCLK BIT P2.1 IOBIT P2.2 RS BIT P3.5 ;LCD RS=P3.5 RW

4、BIT P3.6;R/W=P3.6 E BIT P3.7;E=P3.7 yearEQU 30H weekEQU 31H monthEQU 32H dayEQU 33H hourEQU 34H mintue EQU 35H second EQU 36HDS1302_ADDR EQU 70H DS1302_DATA EQU 71HORG 0000H LJMPMAIN ORG0030H MAIN:MOV P1,#01H;清除屏幕CALL ENABLE;写到指定寄存器MOV P1,#38H;功能设定(8 位,2 行,5*7 点矩阵)CALL ENABLE MOV P1,#0CH;显示器 ON,光标 O

5、FF,闪烁 OFFCALL ENABLEMOV P1,#06H;加 1CALL ENABLE MOV DS1302_ADDR,#8EH MOV DS1302_DATA,#00H ;允许写 1302 LCALL WRITE MOV DS1302_ADDR,#90H MOV DS1302_DATA,#0A6H ;1302 充电 LCALLWRITE MOV 40H,#2;显示缓存区,显冒号,及分号 MOV 41H,#0 MOV 44H,#12 MOV 47H,#12 MOV 4AH,#11 MOV 4BH,#11 MOV 4CH,#11 MOV 52H,#10 MOV 55H,#10 LOOP:

6、MOVR7,#7 MOVR0,#year MOV DS1302_ADDR,#8DH ;读出寄存器 LOOP1:CALLREAD MOVR0,DS1302_DATA;读出数据 INC R0 MOVA,DS1302_ADDR CLR C SUBBA,#2 MOVDS1302_ADDR,A DJNZR7,LOOP1MOV R6,year;对年数值进行处理 LCALL DIVIDE;年分离,送显示缓存 MOV 42H,R3 MOV 43H,R2MOV 4DH,week;对周数据进行处理 DEC 4DHMOV R6,month;对月数据进行处理 LCALL DIVIDE;月分离,送显示缓存 MOV 45

7、H,R3 MOV 46H,R2MOV R6,day;对日数据进行处理 LCALL DIVIDE;日分离,送显示缓存 MOV 48H,R3 MOV 49H,R2MOV R6,hour;对小时数据进行处理 LCALL DIVIDE ;小时分离,送显示缓存 MOV 50H,R3 MOV 51H,R2MOV R6,mintue;对分钟数据进行处理 LCALL DIVIDE;分钟分离,送显示缓存 MOV 53H,R3 MOV 54H,R2MOV R6,second;对秒数据进行处理 LCALL DIVIDE;秒分离,送显示缓存 MOV 56H,R3 MOV 57H,R2/*MOVR7,#3 MOVR1,

8、#50H MOVR0,#hour LOOP2:MOV A,R0 MOV R6,A CALLDIVIDE MOVA,R3 MOVR1,A INC R1 MOVA,R2 MOVR1,A INC R1 INC R1 INC R0 DJNZR7,LOOP2*/ LCALL DISPLAYLJMP LOOP ;* ; 分离程序 ;* DIVIDE: MOVA,R6 MOVB,#10H DIV AB MOVR2,B MOVR3,A RET ;* ; 写 DS1302 程序 ;* WRITE: CLR SCLK NOP SETB RST NOP MOV A,DS1302_ADDR;送地址给 1302 MOV

9、 R4,#8 WRITE1:RRC ANOP NOP CLR SCLK NOP NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4 ,WRITE1 CLR SCLK NOP MOV A,DS1302_DATA;送数据给 1302 MOV R4,#8 WRITE2:RRC ANOP CLR SCLKNOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE2 CLR RST RET ;* ; 读 DS1302 程序 ;* READ: CLR SCLKNOP NOP SETB R

10、ST NOP MOV A,DS1302_ADDR;送地址给 1302 MOV R4,#8 READ1:RRC ANOP NOP CLR SCLK NOP NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,READ1 MOV R4,#8 READ2:CLR SCLK;从 1302 读出数据NOP NOP NOP MOV C,IO NOPNOP NOP RRC A NOP NOP SETB SCLK NOP DJNZ R4,READ2 MOV DS1302_DATA,A CLR RST RET ;* ; 显示程序 ;* DISPLAY:M

11、OVR2,#14MOV P1,#80H;第一行起始地址CALL ENABLEMOV R1,#40H A1:MOV A,R1MOV DPTR,#TABLE;到 TABLE 取段码MOVC A,A+DPTR;从左至右显示 CALL WRITE3 INC R1 DJNZ R2, A1 MOV R2,#8MOV P1,#0C0H;第二行起始地址CALL ENABLEMOV R1,#50H A2:MOV A,R1MOV DPTR,#TABLE;到 TABLE 取段码MOVC A,A+DPTR;从左至右显示 CALL WRITE3 INC R1 DJNZ R2, A2 RET WRITE3:MOV P1,

12、A SETB RS ;RS=0,写到指令寄存器 CLR RW;RW=0 CLR E;E 1-0 使能动作 CALL DELAY SETB E;E=1,禁止 RET ENABLE:CLR RS;RS=0,写到指令寄存器CLR RW;RW=0CLR E;E 1-0 使能动作 CALL DELAY SETB E;E=1,禁止 RET DELAY:MOV R3,#05 D4: MOV R4,#0FFHDJNZ R4,$ DJNZ R3,D4 RET TABLE:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,3AH,00H,2EH END 第四章第四章 对本次开放

13、实验的总结对本次开放实验的总结以前总是对单片机这方面很感兴趣,但是只是停留在感兴趣的层面,因为 没有老师指导,虽然很想学,却无从下手。后来,我们通信工程专业成立了一 个创新团队,出于对单片机的兴趣及想学好本专业的初衷,我报名参加了该团 队。在这个团队里面我学会了使用 Proteus 7 Professional,会利用该软件画一些 简单的电路图。 但是通过这次学习,我发现了自己还有很多的不足,我以前的知识可以说 是连基础都算不上。 举个例子,我以前学的用 Proteus 7 Professiona 来画电路图,只是单纯的把 硬件连接好,这种简单电路只适合于没有控制芯片的电路,作用十分局限。要

14、想玩个更高端的电路,让它实现更多的功能,仅仅凭我的那点经验还远远不够。 因此,在本次学习中我学会了怎样让这个电路的“心”跳动起来,即把程序写 到固定的元器件中,让它实现诸如自动控制的高端功能。 那么,怎样把代码烧到元器件中去呢?通过本次学习,我总结出了一点小 经验。要将代码烧到器件中去就得利用 Keil2 软件。具体步骤是:首先得新建一 个工程并根据需要选择 CPU,然后利用该软件将源代码写好并且根据语言的种 类选择对应的扩展名, (当然,这个东西是很考验编程能力的,如果编程语言例 如 C 学得好,编一些简单的程序代码不是问题。 )接着将写好的代码添加到工程 中去。因为 Proteus 7 Professional 只能识别十六进制的文件,所以一定要将写好 的文件转换成十六进制。最后调试一下程序看有没有错误,如有错误仔细修改, 直到没有错误为止,保存就成功了一半。接着选择需要写代码的元器件,将通 过 Keil2 生成的文件烧到其中即可,这样就大功告成了。 在本次的学习过程中,老师很耐心的讲为我们解答,告诉我们该怎样去做

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号