基于AT89C51单片机控制的EDA设计.docx
- 文档编号:7452037
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:18
- 大小:229.78KB
基于AT89C51单片机控制的EDA设计.docx
《基于AT89C51单片机控制的EDA设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机控制的EDA设计.docx(18页珍藏版)》请在冰豆网上搜索。
基于AT89C51单片机控制的EDA设计
摘要
本设计成功的设计出一个用单片机实现的电子钟,按24小时制显示时间,能方便的校准时间。
本文先阐述了电子钟的方案选择、然后从软硬件两个方面来实现系统。
硬件方面按由上而下的和由下而上两种方法混合使用来设计出电路原理图。
然后着重从软件方面来实现输出显示,准确计时和时间校准。
本设计的电子钟只有一个按键,用它按不同的按键时间可完成时间的设定。
关键词:
电子钟;AT89C51;DS18B20;晶振
Abstract
ThedesignofasuccessfuldesignofelectronicMCUclockby24hoursofshowtime,canmakeiteasierforthecalibrationtime.
Thispaperfirstontheelectronicbelloptions,thentwoaspectstoachievehardwareandsoftwaresystem.Hardwareonbothtop-downandbottom-upapproachtodesignamixed-usecircuitschematics.Then,fromthesoftwaretoachievetheoutput,accuratetimingandcalibrationtime.Thedesignoftheelectronicbellonlyonebuttontouseitindifferentkeystimesettobecompletedintime.
Keywords :
Clock、AT89C2051、CrystalOscillator
不要删除行尾的分节符,此行不会被打印
千万不要删除行尾的分节符,此行不会被打印。
在目录上点右键“更新域”,然后“更新整个目录”。
打印前,不要忘记把上面“Abstract”这一行后加一空行
一、引言
1.1课题的背景及目的
随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一个独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,所以得到越来越广泛的应用,特别是在工业控制和仪表仪器智能化中起极其重要的作用.本文利用单片机强大的控制功能和内部定时器重要部件,设计了一款自行设定时间倒计时控制通断的电子定时器。
1.2课题的内容要求及研究方法
本文先按照设计的一般步骤,先选定用单片机实现的方案,了解设计要求,再分别从硬件系统设计和软件系统设计两个宏观方面着手.然后大量阅读相关资料,硬件方面,熟练单片机工作基本原理,查出相关元器件的参数,主要是2051单片机,八个八段数码管,继电器等性能.然后画出系统框图和单元电路原理图,再对系统工作原理按照单元电路作简单的说明。
软件方面,熟悉编程语言,查找相关子程序.熟悉PROTELDXP及WAVE仿真软件.用PROTELDXP设计出功能电路,电源电路,控制电路,温度采集电路,再制出整个PCB板.把原器件按电路原理图安装.最后再对硬件和软件系统进行调试和仿真。
课题的内容是要求设计一款电子钟,而且要求计时准确,显示直观,清晰,时能够精确到秒。
最后设计出来的产品,要求电路简洁,稳定性好。
二、软硬件简介
2.1硬件系统的设计
2.1.1核心器件简介
AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1.主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
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口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器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)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
数码显示管
LED数码管(图2.2)分为共阴LED和共阳LED两种,但是它们的工作原理大同小异。
基本原理就是每一段的点亮与否就相当于一个发光二极管的点亮情况。
而发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。
八段发光数码管就相当于八个发光二极管。
本设计是用共阳LED数码管实现,共阳LED就是7段的显示字码共用一个电源的正。
原理示意图2.2可以看出,要使数码显示管显示数字,有两个条件:
1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。
这样才能显示的。
图2.2八段数码显示管
而用单片机来驱动数码管时,在能驱动的前提下还须考虑数码显示字段和编码的关系,一般来说是要看硬件的电路的组成的,假如数码显示是用P0口驱动的,那么与之对应的计算的方法如下:
dp
g
f
e
d
c
b
a
显示
编码
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
1
1
0
0
0
0
0
0
0
C0H
1
1
1
1
0
0
1
1
1
F3H
1
0
1
0
0
1
0
0
2
A4H
1
0
1
1
0
0
0
0
3
B0H
1
0
0
1
1
0
0
1
4
99H
1
0
0
1
0
0
1
0
5
92H
1
0
0
0
0
0
1
0
6
82H
1
1
1
1
1
0
0
0
7
F8H
1
0
0
0
0
0
0
0
8
80H
1
0
0
1
0
0
0
0
9
90H
1
0
0
0
1
0
0
0
A
88H
1
0
0
0
1
1
1
0
F
8EH
表2.1数码显示字段与编码关系表
在编程时,只需将显示数字所对应的编码送P0口,然后接通相应的数码管显示位的电源控制即可显示相应的字符。
2.1.2系统原理图及功能模块
系统原理图:
图2.3电子定时器电路原理图
图2.4为生成的PCB板图。
尺寸3300milx2000mil。
图2.4PCB版图
核心电路
本设计核心是温度显示及时间的显示和设定。
在许多方案中之所以选择单片机实现是因为它的外围电路简单,硬件容易实现,而且产品容易调试。
单片机有很多种类,如果此设计用一般的40脚单片机的话,则在接口和软件实现方面比较容易实现。
但是考虑到ATMEL公司的AT89C2051,它有20只脚,有着体积小,工作电压范围宽(2.7-6V)等特点,所以最终还是选择了20脚单片机。
用AT89C2051的2,3脚作为输入来实现时间的设定,P3.0,P3.1,P3.2作为输出。
其中6-9脚4只脚作为数码管的片选,12-18脚这7只脚经过电阻分流后直接驱动数码管。
19脚来接报警电路。
11脚来接控制电路。
显示电路
显示电路采用LED数码管。
为了在定时精度达到分钟的时候能显示出时钟在计时,用了其中数码管的一段来闪烁来代表秒走动;为了使硬件显示电路简单,采用单片机直接驱动LED数码管(AT89C2051输出口能吸收20mA电流).用动态扫描法实现LED显示.
电源电路
电源电路采用普通三端集成稳压电路,交流经过变压器后降压到12V,再经过桥式整流(即有四个二极管首尾连接而成)使交流变成直流。
然后,经过一个极性电容滤掉剩余交流分量,最后由三端稳压器7806整成+5V的直流稳定容易受到电压。
由于单片机干扰,出于硬件抗干扰效果好,在电源输出端再接上一个极性电容和一个非极性电容。
这样一个很稳定的+5V直流电源就构成了。
下图为电源的电路原理图:
图2.5直流电源电路原理图
2.2软件系统的设计
2.2.1基本原理
我们知道计算机系统是由硬件和软件两大部分组成的。
硬件指的是各种机器设配,而软件则是人们为解决各种问题而编写的程序编写计算机程序需要使用计算机编程语言。
计算机编程语言是人和计算机“对话”的桥梁。
就像人类的语言一样,计算机编程语言也有很多。
最基本的机器语言,无论什么高级语言都是要编译为机器语言计算机才能执行。
单片机作为计算机的一个分支可以认为是一种微型的计算机,它的语言就是最简单的机器语言,但是我们一般用的都是汇编语言。
汇编语言实际是一种助记符,用他们去代替机器码来表示指令,既有简单明了的词意,一目了然,又便于理解和记忆.我们可以用指令助记符和表示地址或数据等的各种符号,按照规定的格式,来编制程序,这样的程序,称为汇编语言程序.这些表示指令,地址,数据等的符号以及有关规定,是计算机进行:
“思想”的工具,亦即计算机汇编语言.本文的设计就是用汇编语言编写来实现系统的定时,倒计时等功能。
程序的设计方面采用模块化,结构化设计,自顶向下、逐步细化、的思想方法。
并采用了软件抗干扰技术即编写出个出错处理程序,使得程序跑飞时能被软件捕获,被抗干扰程序处理,返回复位状态,重新启动系统。
其软件的可靠性较好,可维护性强。
2.2.2程序模块
主程序
主程序分为三个状态:
正常显示状态、闹钟及时间调整状态。
序编写及注释如下:
设置及运行程序
完成定时方式和定时时间的设定,复位键的作用是重起单片机,一切回到初始状态。
功能键实现进入模式的选择状态,选定当前模式及使系统开始工作的作用。
调时键主要是实现模式的加减,时间的设定。
时间设定后进入倒计时。
显示子程序
用八段数码管显示计时的剩余时间,用查表的方式使数码管显示相应的时间。
考虑到秒和分钟之间的进位,用了低位和高位分别显示。
三、使用介绍
本课程设计的是一款电子钟,它的使用就是对系统设置时的按键的操作。
该电子钟设有两个按键:
S1和S2键。
按S1键进行复位。
按S2可以对时钟进行设置,使其校正到标准时间,校时时需要校正哪一位哪一位就闪烁。
经测试该电子钟在一天的累计误差约为0.1秒。
该电子钟的误差主要由晶振自身的误差所造成,晶振的误差约为0.0001~0.000001。
在软件的编程过程中所产生的误差比较小,在重装初值的过程中大概需要约8个机器周期,但在程序开始对定时器赋初值时,多加了8个机器周期,减小了这方面的误差。
另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。
该电子钟设有三个按键:
S1,S2和S3键。
按S1键进行校时,可以分别对时及分进行单独校时,使其校正到标准时间,校时时需要校正哪一位哪一位就闪烁。
按S2键是对闪烁位进行加一或返回的操作。
按S3键调整定时时间和定时组数,需要调整哪一位哪一位就闪烁,该电子钟最多可定时20组闹钟。
经测试该电子钟在一天的累计误差约为0.1秒。
该电子钟的误差主要由晶振自身的误差所造成,晶振的误差约为0.0001~0.000001。
在软件的编程过程中所产生的误差比较小,在重装初值的过程中大概需要约8个机器周期,但在程序开始对定时器赋初值时,多加了8个机器周期,减小了这方面的误差。
另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。
该电子钟设有三个按键:
S1,S2和S3键。
按S1键进行校时,可以分别对时及分进行单独校时,使其校正到标准时间,校时时需要校正哪一位哪一位就闪烁。
按S2键是对闪烁位进行加一或返回的操作。
按S3键调整定时时间和定时组数,需要调整哪一位哪一位就闪烁,该电子钟最多可定时20组闹钟。
经测试该电子钟在一天的累计误差约为0.1秒。
该电子钟的误差主要由晶振自身的误差所造成,晶振的误差约为0.0001~0.000001。
在软件的编程过程中所产生的误差比较小,在重装初值的过程中大概需要约8个机器周期,但在程序开始对定时器赋初值时,多加了8个机器周期,减小了这方面的误差。
另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。
千万不要删除行尾的分节符,此行不会被打印。
“结论”以前的所有正文内容都要编写在此行之前。
结论
电子定时器是很多电子产品中的一个重要组成部分,有着非常广阔的前景。
本次设计以“全”(功能齐全)和“省”(底成本)的思想成功的实现了一款符合设计要求的电子定时器。
仅仅用两个按键就实现了时间的设定,最长设定时间长达24小时,能够按设定的是给电器供电或断电,并且能作出相应的报警。
电路简洁,资源利用率高,只用了只有两输出口的AT89C2051和就完成了系统的核心部分。
设计中也含有自己的创新,首先用四联体数码管取代四个单独的数码管,不仅使成本降低了还使电路的布线得到很大的简化。
其次,用软件编写两个工作模式(分和时的显示,秒和分的显示)。
这样省去了两位数码管。
最后,由于条件的限制,我用刀直接在敷铜板上面刻出系统的电源部分电路,也是一种创新。
虽然本设计相对来说比较成功,但是硬件系统相对比较简单,对单片机的应用还属于简单的应用阶段。
面对着自动化智能化发展的今天,社会快速发展的新时代,只用更加努力加强基础知识和综合能力的培养,才能跟得上时代的步伐。
参考文献
[1]孙涵芳等.单片机原理及应用.北京:
北京出版社;2001
[2]钱晓捷,陈涛.微型计算机原理及接口技术.机械工业出版社2002
[3]韩广兴等.电子元器件与使用电路基础.电子工业出版社2002
[4]谢自美等.电子线路设计.实验.测试.华中科技大学出版社2003
[5]绕庆和.MCS-51单片机实用技术[M].北京:
电子工业出版社,2OO3.
[6]沈红卫.单片机应用系统设计实例与分析[M].北京:
航空航天大学出版社,2OO3
[7]杨佩昆等编.交通管理与控制北京:
人民文通出版社.1992
[8]馀吉万等编.城市文通的计算机控制和管理.北京t测绘出社.1985
[9]余锡存曹国华编。
单片机原理及接口技术。
西安电子科技大学出版社。
2000
附录程序
;;AT89C51时钟程序;;
;定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用,
;P3.7为调整按钮,P1口为字符输出口,采用共阳显示管。
;;中断入口程序;;
ORG0000H;程序执行开始地址
LJMPSTART;跳到标号START执行
ORG0003H;外中断0中断程序入口
RETI;外中断0中断返回
ORG000BH;定时器T0中断程序入口
LJMPINTT0;跳至INTTO执行
ORG0013H;外中断1中断程序入口
RETI;外中断1中断返回
ORG001BH;定时器T1中断程序入口
LJMPINTT1;跳至INTT1执行
ORG0023H;串行中断程序入口地址
RETI;串行中断程序返回
;;主程序;;
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;50MS定时初值
SETBEA;总中断开放
SETBET0;允许T0中断
SETBTR0;开启T0定时器
MOVR4,#14H;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位修正值)
SETBTR0;开启定时器T0
DJNZR4,OUTT0;20次中断未到中断退出
ADDSS:
MOVR4,#14H;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)
ACALLADD1;分计时单元加1分钟
MOVA,R3;分数据放入A
CLRC;清进位标志
CJNEA,#60H,ADDHH
ADDHH:
JCOUTT0;小于60分时中断退出
ACALLCLR0;大于或等于60分时分计时单元清0
MOVR0,#79H;指向小时计时单元(78H-79H)
ACALLADD1;小时计时单元加1小时
MOVA,R3;时数据放入A
CLRC;清进位标志
CJNEA,#24H,HOUR
HOUR:
JCOUTT0;小于24小时中断退出
ACALLCLR0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 单片机 控制 EDA 设计