单片机电子钟的设计Word下载.docx
- 文档编号:18685677
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:17
- 大小:90.35KB
单片机电子钟的设计Word下载.docx
《单片机电子钟的设计Word下载.docx》由会员分享,可在线阅读,更多相关《单片机电子钟的设计Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
第一章绪论
1.1单片机的特点
20世纪末,单片机技术获得了飞速的发展,在其在推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使得现代电子产品性能进一步提高。
单片机有以下特点:
1.单片机的存储器ROM和RAM是严格区分的。
ROM称为程序存储器,只存放程序、固定常数及数据表格。
RAM则为数据存储器,用作工作区及存放用户数据[1]
2.采用面向控制的指令系统。
为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力;
3.单片机的I/O口通常是多功能的。
由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或机器状态来区分;
4.单片机的外部扩展能力很强。
在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。
1.2单片机应用简述
目前,单片机正朝着高性能和多品种方向发展趋势是进一步向着CMOS化、低功耗、小体积,大容量、高性能、低价格和外围电路内装化等几个方面发展。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
在以前,是必须由模拟或是数字电路实现的大部分功能的,而现在已经能用单片机通过软件的方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
1.3电子时钟简介
时间对于人们来说总是那么宝贵,工作的忙碌性和繁杂性容易是人忘记当前时间。
忘记了要做的事情,当事情不是很重要的时候这种遗忘无伤大雅。
但是,一旦是重要的事情,一时的耽误可能酿成大祸。
1957年,Ventura发明了世界上第一只电子表,从而奠定了电子时钟的基础,电子时钟也飞速的发展起来。
现代的电子时钟的基于单片机的一种计时工具采用延时程序产生一定的时间中断,用于一秒定义,通过计数方式进行六十秒分钟进一,满六十分小时进一,满二十四小时清零,从而达到计时的功能,是人们日常生活不可缺少的工具。
1.4电子时钟的基本特点
现在高精度的计时工具大多数采用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此,走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LCD显示器或数码管代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好[3]。
第二章控制系统的硬件设计
2.1芯片的选择
经过多种单片机性能的分析及现有实验设备的限制,在本设计中单片机芯片采用了AT89S51单片机芯片。
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程既通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
2.1.1AT89S51的功能概述
AT89S51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时、计数器,一个5向量两级中断结构,一个全双工通信口,片内振荡器及时钟电路。
同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时、计数器,串行通信口及中断系统继续工作。
掉电方式RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
2.1.2AT89S51引脚功能说明(附引脚图)
Vcc:
电源电压
GND:
接地
P0口:
P0口是一组8位漏极开路型双向I/O口,即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
图2-1AT89S51引脚图
P1口:
P1口是一个带有内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
Flash编程和程序校验期间,P1接收低8地址。
P2口:
P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(例如执行MOVX@Ri指令)时,P2口线上的内容(即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程和程序校验期间,P2亦接收高位地址和其他控制信号。
P3口:
P3口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
端口引脚
第二功能
信号名称
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读选通
表2-1P3口第二功能
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。
DIRT0位缺省为RESET输出高电平打开状态。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此可对外输出时钟或用以定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于出入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,单片机执行外部程序时,应设置ALE无效。
/PSEN:
程序储存允许(/PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)使,每个机器周期两次/PSEN有效,即输出两个脉冲。
当访问外部数据存储器。
没有两次有效的/PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程电压VPP。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
2.2电子时钟电路设计框图
电路设计框图图2-2
2.2.1按键电路
设计用了4个按键K1/K2/K3/S1,分别用于调时、调分、调秒及用作复位按钮,达到了时间调节的目的。
图2.3按键电路
2.2.2LED数码管显示电路
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳极,一种是共阴极。
共阳极就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极连接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。
数码管的显示方法可分为静态显示和动态显示,在本设计中采用的是动态显示,其原理:
各个数码管的相同端连接在一起,共同占用8位段引管线:
每位数码管的阳极连接在一起组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来[6]。
本设计由两个LED四位一体阴极数码管、8个9012(PNP)三极管、8个510欧上拉电阻等组成,由于LED数码管的位电流较大,故采用三极管来驱动。
8个电阻一端接到单片机的P1口,另一端分别接到三极管的基极,发射极接地,集电极与所述数码管芯片的位控制端相连。
此驱动电路采用主芯片的通用IO口并配合三极管来实现四位数码管的动态扫描和显示驱动,具有电路结构简单、占用电路板空间小、驱动能力强、成本低等优点,其缺点是共阴极的数码管采用PNP三极管驱动,这样三极管的损耗比较大。
位码由P1口输出,段码由P3口输出,P1口线与LED之间5.1K的限流电阻和PNP三极管,显示的方式为动态显示方式。
显示字符
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
表2-2字型与字段关系
数码管驱动的意义:
第一:
假如不驱动的话,单片机的高低电平仍然可以控制数码管的亮度,形在动态显示,但这时细心的你会发现这时的数码的亮度会比较暗,并且扫描频率很高,仍然有微小的闪动现象,因为单片机的输出的电流本身就很弱;
第二:
三极管的作用是:
1、起到开关的作用,即某一时刻打开或关闭数码管,形成动态显示;
2、驱动数码管,静态显示可以不明显,动态显示的时候,效果就出来了。
具体电路图如下:
图2-4数码管显示电路
电子钟硬件总电路图如下:
第三章控制系统的软件设计
软件系统主要分为以下几个部分:
主程序、显示子程序及中断服务子程序。
以动态显示作为主程序,主要是初始化部分和不断调用动态显示子程序。
动态显示子程序,它被主程序不断调用,以保证稳定可靠的显示;
按键查询采用中断方式;
秒定时采用定时器T0中断方式进行,定时时间为50MS,每50MS溢出一次,中断两次达100MS。
然后通过显示子程序将单元里面的十六进制数拆开为BCD码,送到显示缓冲区。
3.1主程序部分
a)程序的起始地址:
MCS-51单片机复位后,(PC)=0000H,而0003H-002BH分别是各中断源的入口地址。
所以,编程时应在0000H处写一条跳转指令。
b)主程序的初始化:
将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作设定。
流程图如下:
图3-1主程序流程图
程序如下:
SECONDEQU30H;
秒单元
MINITEEQU31H;
分单元
HOUREQU32H;
时单元
HOURKBITP2.0;
时按键
MINITEKBITP2.1;
分按键
SECONDKBITP2.2;
秒按键
DISPBUFEQU40H;
显示缓冲区
DISPBITEQU48H
T2SCNTAEQU49H
T2SCNTBEQU4AH
TEMPEQU4BH
ORG0000H
LJMPSTART
ORG000BH;
定时器T0中断入口地址
LJMPINT_T0
;
主程序
START:
MOVSECOND,#00H;
秒单元清0
MOVMINITE,#00H;
分单元清0
MOVHOUR,#12;
上电时单元显示12
MOVDISPBIT,#00H
MOVT2SCNTA,#00H
MOVT2SCNTB,#00H
MOVTEMP,#0FEH
LCALLDISP;
调用显示子程序
MOVTMOD,#01H;
设定时器T0工作方式为方式1
MOVTH0,#3CH;
T0置初值
MOVTL0,#0B0H
SETBTR0;
启动定时器T0
SETBET0;
启动定时器T0中断允许
SETBEA;
总中断允许
3.2显示子程序
功能:
扫描8个数码管,数值。
流程图如下
显示程序如下:
显示子程序
WT:
JBSECONDK,NK1;
位转移
LCALLDELY10MS;
延时1s
JBSECONDK,NK1
INCSECOND;
s+1
MOVA,SECOND
CJNEA,#60,NS60;
判断是否到60m?
判断是否到60s?
若未到,则返回;
到了则跳转NM60
MOVSECOND,#00H
NS60:
LCALLDISP
JNBSECONDK,$
NK1:
JBMINITEK,NK2
LCALLDELY10MS
JBMINITEK,NK2
INCMINITE;
m+1
MOVA,MINITE
CJNEA,#60,NM60;
60分到,则分单元清0
NM60:
LCALLDISP
JNBMINITEK,$
NK2:
JBHOURK,NK3
INCHOUR;
h+1
MOVA,HOUR
CJNEA,#24,NH24;
MOVHOUR,#00H
NH24:
JNBHOURK,$
NK3:
LJMPWT
DISP:
MOVA,#DISPBUF;
显示小时十位值
ADDA,#8
DECA
MOVR1,A
MOVB,#10
DIVAB;
除以10.,得到时间值的各位和十位
MOV@R1,A;
十位送相应的显示缓冲区
DECR1;
指向显示缓冲区的个位
MOVA,B;
各位给ACC
个位置送缓冲区的相应位置
DECR1
MOVA,#10
MOV@R1,A
MOVA,MINITE;
显示分钟十位值
MOVB,#10
DIVAB
MOV@R1,A
MOVA,B;
显示分钟个位值
MOVB,#10;
显示秒十位值
MOVA,B
RET
3.3中断服务子程序
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:
机器周期=12÷
11.0592MHz=1.0857μS
程序中,定时器T0采用方式1=65536,因要求每50MS溢出一次,计数值=(50×
1000)/1=5000,所以计数器的初值为X=65536-50000=15536=3CB0H
初值寄存器的初值TH0=3CH,TL0=B0H
置T0方式1定时,所以TMOD=01H
50MS执行一次完成显示数据的刷新并拆开放到显示缓冲区.程序如下:
中断服务子程序
INT_T0:
MOVTH0,#3CH
MOVA,#DISPBUF
ADDA,DISPBIT
MOVR0,A
MOVA,@R0
MOVDPTR,#TABLE;
查表
MOVCA,@A+DPTR
MOVP3,A;
段码送P3口
MOVA,DISPBIT
MOVDPTR,#TAB
MOVP1,A;
位码送P1口
INCDISPBIT
CJNEA,#08H,KNA
第四章电路测试
4.1硬件测试
由于在硬件电路是用通用板做的,所以在电路焊接方面是不可忽视的,只要有一处的错误,则会对检测造成很大的不便,而且电路的交线很多,对于各种锋利的引脚要注意处理,否则刺破带有封皮的导线,使得电路造成短路现象。
另外还要对元器件先进行检测,如果有坏的器件要进行更换,还有就是要注意元器件的正确放置与安装以及布线的合理,便于成品电路的检测和维护[7]。
在本设计中的调试过程遇到了很多的问题,回想这些问题,其实只要认真点、仔细点、思考多一点大部分是可以避免的,以下为主要问题:
电路做成后,数码管的正常显示应为12-00-00,却显示成了00-00-12,就是前四位和后四位调换了。
解决:
查出P1口的8个电阻低4位和高4位接反了,拆了重新接之后,显示却变为正常显示数值12-00-00的反面,就像一张纸的正面和反面反了下,后来想到从硬件中修改的话,改动的比较大也比较麻烦,后来决定从软件中修改,把共阴极后面代码改了,问题就得到了解决。
4.2软件测试
该电子钟的功能虽少,但是程序也比较为复杂,所以在编写程序和调试程序时出现了相对较多的问题。
最后,鉴于以前学过的单片机知识,一步一步的完成各个子程序,终于得到了最后的程序。
解决了软件问题。
在写中断程序和显示程序时遇到了很多的问题,如调试时显示乱码等等。
但是经过努力,程序还是成功了。
4.3测试结果分析与结论
4.3.1测试结果分析
1.在测试中遇到LED数码管为不显示时,首先要仔细观察电路板是否存在漏焊、虚焊、或者元件损坏。
2.LED数码管显示不正常,还有亮度不够,要注意观察电路是否存在短路现象。
若硬件无误后,再查看烧写的程序是否正确,并对程序进行认真修改。
4.3.2测试结论
经过了多次的反复测试与分析,可以对电路原理及功能更加熟悉,同时提高了设计能力以及对电路的分析能力,同时在软件的编程方面得到更高的提高,对编程能力也得到了加强,同时对所学的只是得到了很到的提高与巩固。
对于初学者来说,更是有更大的益处,能理论联系实际运用,学到更多的知识,真正将这门课程所包含的知识用于实际生活中的具体创造和设计中。
第五章作品总结与感想
通过这次单片机课程设计,发现了自身所学知识存在许多的不足和问题,同时也学到了不少东西,提高了动手能力。
在整个设计过程中,从设计方案的确定,到具体电路的设计,最后到总体电路的联接构建以及程序的编写烧写,整个设计工程量的比较大的,单靠个人能力,很多方面考虑不周,有的地方甚至毫无头绪,想不出具体方案,因此,绝对不能心急,不明白的地方和其他的同学讨教,毕竟群策
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子钟 设计