资源描述
目录
第一章 绪论 2
1.1 WAVE的简单介绍 3
1.2 Protues简介 3
第二章 元器件介绍 5
2.1 AT89C51单片机的介绍 5
2.1.1 主要特性 5
2.1.2 管脚说明 6
第三章 电子时钟硬件设计 9
3.1 原理图 9
3.2 原理图的分析 9
3.3 元器件清单 10
第四章 电子时钟软件设计 11
4.1 软件程序 12
第五章 实验心得 18
参考文献 19
第一章 绪论
数字电子时钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历 、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89S51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
1.1 WAVE的简单介绍
编辑、编译、下载、调试全部集中在一个环境下。
多种仿真器,多类CPU仿真全部集成在一个环境下。可仿真51系列,196系列,PIC
系列,飞利蒲公司的552、LPC764、DALLAS320,华邦438等51增强型CPU。为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。他们由不同的厂家开发,相互不兼容,使用不同的界面。学习使用都很吃力。伟福 WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build和调试工具并提供一个与第三方编译器的接口。
1.2 Protues简介
Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS软件的工作环境和一些基本操作。
第二章 元器件介绍
2.1 AT89C51单片机的介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.1.1 主要特性
·与MCS-51 兼容
·4K字节可编程闪烁存储器
·寿命:1000写/擦循环
·数据保留时间:10年
·全静态工作:0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
2.1.2 管脚说明
VCC:供电电压
GND:接地
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口:
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(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
TAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
第三章 电子时钟硬件设计
3.1 原理图
电子时钟的protues原理图如下:
3.2 原理图的分析
实训使用AT89C51控制,其中使用p2做输出,p3口做控制信号,使用外部中断1作调节小时,外部中断0作调节分钟,定时器1在计数模式作调节秒,定时器1在定时模式用于计数,而p0.0做总控开关的入口。
软时钟是利用单片机内部的定时器\计数器来实现的,它的处理过程如下:首先设定单片机内部的一个定时器\计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器\计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后通过数码管把它们的内容在相应位置显示出来即可。
数码管显示一般采用动态显示方式。动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定。译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。
在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。在主程序中只需对定时器计数器初始化、调用显示子程序和控制子程序。另外,为了使用方便,设计了简单的按键,可以通过按键实现时、分的调整,这样在主程序中就加入了键盘设置子程序。
3.3 元器件清单
单片机
TA89C51
按键
BUTTON
电阻
RES
电容
CAP
晶振
CRYSTAL
LED数码管
7SEG-MPX8-CA-BLUE(CA:共阳,CC:共阴)
地
GROUND
电源
POWER
第四章 电子时钟软件设计
·主程序:
先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。
·数码管显示模块:
本实验有8个数码管,从右到左为妙、横线、分、横线、时。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。
·定时器/计数器T0中断服务程序:
T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。
·流程图如下:
4.1 软件程序
ORG 0000H
LJMP START
ORG 000BH
LJMP INIT0
START: MOV R0,#70H ;主程序开始
MOV R7,#0CH
INIT: MOV @R0,#00H
INC R0
DJN Z R7,INIT
MOV 72H,#10 ;对连字符进行装值
MOV 75H,#10
MOV TMOD,#01H ;选择定时器/计数器T0的方式1
MOV TL0,#0B0H ;对低位赋初值
MOV TH0,#03CH ;高位赋初值
SETB EA
SETB ET0
SETB TR0
START1: LCALL SCAN
LCALL KEYSCAN
SJMP START1
DL1MS: MOV R6,#14H ;延时1子程序
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
DL20MS: ACALL SCAN ;延时20ms子程序
ACALL SCAN
ACALL SCAN
RET ;数码管显示程序开始
SCAN: MOV A,78H
MOV B,#0AH
DIV AB ;时间秒的十位送给A,时间秒的个位送B
MOV 71H,A ;时间秒要显示的十位
MOV 70H,B ;时间秒要显示的个位
MOV A,79H
MOV B,#0AH
DIV AB ;时间分的十位送给A,时间分的个位送B
MOV 74H,A ;时间分要显示的十位送地址
MOV 73H,B ;时间分要显示的个位送地址
MOV A,7AH
MOV B,#0AH
DIV AB ;时间时的十位送给A,时间时的个位送B
MOV 77H,A ;时间时显示的十位送地址
MOV 76H,B ;时间时要显示的个位送地址
MOV R1,#70H
MOV R5,#0FEH
MOV R3,#08H
SCAN1: MOV A,R5 ;数码管的显示程序
MOV P2,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR ;对字段表取值显示
MOV P0,A
MOV A,R5
LCALL DL1MS
INC R1
MOV A,R5
RL A
MOV R5,A
DJNZ R3,SCAN1
MOV P2,#0FFH
MOV P0,#0FFH
RET ;"0~9"和"-"的字段表
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
;定时/计数器T0中断程序
INIT0: PUSH ACC
PUSH PSW
CLR ET0
CLR TR0
MOV TL0,#0B0H
MOV TH0,#03CH
SETB TR0
INC 7BH
MOV A,7BH
CJNE A,#14H,OUTT0 ;50ms是否到20次,没有到就继续执行50ms的延时
MOV 7BH,#00
INC 78H
MOV A,78H
CJNE A,#3CH,OUTT0 ;一秒的延时是否计到60次,没有就继续执行
MOV 78H,#00
INC 79H
MOV A,79H
CJNE A,#3CH,OUTT0
MOV 79H,#00
INC 7AH
MOV A,7AH
CJNE A,#18H,OUTT0 ;60分钟的延时是否计到24次,没有就继续执行程序
MOV 7AH,#00
OUTT0:SETB ET0 ;启动定时器T0
POP PSW
POP ACC
RETI
;按键处理程序
KEYSCAN:CLR EA
JNB P1.0,KEYSCAN0 ;P1.0有按键按下则跳转到子程序
JNB P1.1,KEYSCAN1 ;P1.1有按键按下则跳转到子程序
JNB P1.2,KEYSCAN2 ;P1.2有按键按下则跳转到子程序
KEYOUT: SETB EA
RET
KEYSCAN0:LCALL DL20MS ;20ms的延时消抖
JB P1.0,KEYOUT
WAIT0: JNB P1.0,WAIT0 ;判断按键是否松手, 松手就往下执行程序
INC 7CH
MOV A,7CH
CLR ET0
CLR TR0
CJNE A,#03H,KEYOUT;按下第一次和第二次对时、分选定
MOV 7CH,#00 ;按下第三次时就启动计时
SETB ET0
SETB TR0
SJMP KEYOUT
KEYSCAN1:LCALL DL20MS ;按键加一的程序
JB P1.1,KEYOUT
WAIT1: JNB P1.1,WAIT1
MOV A,7CH
CJNE A,#02H,KSCAN11 ;如果功能键按下则对时加一调整
INC 79H
CJNE A,#3CH,KEYOUT ;如果加到60则清零
MOV 79H,#00
SJMP KEYOUT
KSCAN11:INC 7AH ;如果功能键是按下第二次则对分进行加一调整
MOV A,7AH
CJNE A,#18H,KEYOUT
MOV 7AH,#00
SJMP KEYOUT
KEYSCAN2:LCALL DL20MS ;延时消抖程序
JB P1.2,KEYOUT
WAIT2: JNB P1.2,WAIT2 ;判断是否放开按键
MOV A,7CH
CJNE A,#02H,KSCAN21 ;如果功能键是按下第一次对时进行减一
DEC 79H
MOV A,79H
CJNE A,#0FFH,KEYOUT
MOV 79H,#3BH
SJMP KEYOUT
KSCAN21:DEC 7AH ;如果功能键是按下第二次则对分进行减一
CJNE A,#0FFH,KEYOUT
MOV 7AH,#17H
SJMP KEYOUT
END
第五章 实验心得
经过一周的课程设计,我发现对于书本上很多知识还不能灵活运用,有很多知识还要我去学习。
此次的电子时钟设计给我奠定了一个实践基础。在本次的设计中,非常感谢老师的指导,在老师的讲解下,我成功的解决了编程中的问题。也使我明白了编程也好,做事也罢,小小的细节马虎不得,必须要认认真真得做好一件事。
另外,通过这次的课程设计,我了解了PROTEUS仿真软件的使用,用此软件练习电子时钟的设计,不仅能够掌握此软件的使用方法,而且复习了原来的汇编语言,对电子时钟的原理和电子时钟的汇编程序有了更进一步的理解。仿真实现了把抽象的东西具体化,把理论和实际结合起来,更利于对单片机程序的理解掌握。并且,在这次的课程设计中,我知道了,要自己熟练地掌握一个软件,得自己去学习这个软件,自己逐步的亲手去进行演示,这样才能变成自己的知识来熟练应用,而不是一知半解就认为会了,这样是不能真正学会这门课程的。同时以后要想在实际工作中应用的更加熟练,还要做跟多的联系。
参考文献
[1]《单片机原理与应用》 谢维成 杨加国 编著
[2]《单片机应用与仿真调试》 严天峰 编著
[3]《单片机原理及其串口技巧》 胡汉才 编著
[4]《单片机原理及应用》 张迎新 编著
18
第 18 页 共 19 页
展开阅读全文