51单片机实现电子时钟设计.docx
《51单片机实现电子时钟设计.docx》由会员分享,可在线阅读,更多相关《51单片机实现电子时钟设计.docx(18页珍藏版)》请在冰豆网上搜索。
51单片机实现电子时钟设计
昆明工业职业技术学院
课程设计任务书
设计题目:
电子时钟电路
班级:
2010级电气自动控制技术3班
学生姓名:
胡再兴
学号:
2010219944
指导教师:
莫丽薇职称:
讲师
指导小组组长:
杨云英
教学班负责人:
吕姝宜
设计时间:
2012年6月18日至2012年7月1日
一、设计目的及设计要求
(一)设计目的:
按要求完成单片机实现电子时钟系统
(二)设计要求及技术指标
1、采用MCS—51系列单片机设计一个嫩而过显示时、分、秒的电子时钟。
2、刚打开电源是,显示的数据为12:
00:
00,然后电路会自动开始计时。
电路中应有时、分、秒的各自单独的时间调整按钮。
当显示数据变为23:
59:
59时,接下来的显示数据应变为00:
00:
00.时间调整按钮每按一次,应使相应调整的显示时间值家1.
3、位码采用P1口通过3—8译码器实现,段码采用P1口通过74LS47芯片实现。
(二)课程设计说明书应包含的内容
1、目录
2、系统工作原理
3、电子时钟设计总体电路图
4、程序流程图
5、程序模块设计
6、设计分析总结
7、参考文献
(三)课程设计应完成的图纸
(1)时钟电路设计电路图A4一张
(2)时钟电路设计程序流程图A4一张
(四)其它要求:
设计说明书采用A4纸打印,要求采用宋体小四,并标上页码。
(五)课程设计(论文)的期限:
自2012年6月18日至2012年7月1日
(六)课程设计(论文)进度计划:
起讫日期
工作内容
备注
6月18日
6月18日-6月19日6月20日-6月23日
6月24日-6月26日
6月27日-6月30日
7月1日
下达《课程设计任务书》
收集设计资料
拟定设计初稿
修改设计方案、绘制设计草图
编制设计说明书、正式绘图
交设计资料,进行质疑。
课程设计(论文)成绩评定
指导教师评语:
指导教师
2012年月日
成绩评定等级
2012年月日
目录
一、课程设计名称
1、单片机简介…………………………………………………()
2、设计意义……………………………………………………()
二、设计方案
1、电子时钟应用方向…………………………………………()
2、时钟芯片的重要性…………………………………………()
3、构成电子时钟的设计思路…………………………………()
三、设计内容
8051单片机实现的控制及时钟调整…………………………()
四、硬件与软件部分
1电子时钟的概述……………………………………………()
2,电子时钟的硬件电路设计………………………………()
2.1选用单片机………………………………………………()
2.28051单片机引脚…………………………………………()
2.3单片机各接口功能:
………………………………………()
2.4单片机工作原理……………………………………………()
2.5,发光二级管8字数码管的显示……………………………()
2.5.1数码管有共阴极、共阳极两种接法………………()
2.5.2LED显示分为静态显示和动态显示两种方式……()
2.6定时器/计数器T0中断服务程序…………………………()
2.774LS138译码器……………………………………………()
2.874LS47芯片…………………………………………………()
2.9电子时钟校时………………………………………………()
五、电子时钟的软件部分
1、程序流程图…………………………………………………()
2、时钟电路工作工作原理……………………………………()
六、总结
七、参考文献
八、附录
附录一时钟电路设计电路图
附录二时钟电路控制程序图
一、课程设计名称:
51单片机电子时钟
1、单片机简介
单片机全称,单片机微型计算机,从应用领域来看,单片机主要用来控制系统运行,所以又称微控制器或嵌入式控制器,单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
2、设计意义
本课程设计主要掌握数码管显示电路的动态显示原理,了解74LS138芯片和74LS47芯片运行方式,掌握扫描工作原理,掌握MCS-51单片机定时器、中断工作原理以及处理程序编程方法,利用MCS-51单片机的功能与74LS138芯片、74LS47芯片、数码管等部件组合构成一个用于显示时间的数字电路,时、分、秒都可调整。
单片机技术在计算机中作为独立的分支,有着性价比高、集成度高、体积少、可靠性高、控制功能强大、低功耗、低电压、便于生产、便于携带等特点,越来越广泛的被应用于实际生活中。
二、设计方案:
1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。
2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。
3、通过应用8051单片机、74LS47芯片、74LS138芯片和数码管来组成一个完整的时钟控制电路,应用各自的功能,相互组合,通过汇编语言实现各自原件相互联系在一起,掌握一些数字电路的逻辑控制,时序控制
三、设计内容:
使用8051单片机作为时钟控制芯片,应用单片机内部的定时/计数器T0实现软时钟的目的。
首先将T0设定工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。
最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。
还要实现对时间的调整功能,8051的P0.0、P0.1、P0.2外接三个独立按键,当按下P0.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下P0.1按键时,对显示的数码管进行加一的功能;当按下P0.2按键时,对显示的数码管进行减一的功能,达到调整时间的目的。
四、硬件与软件部分
1,电子时钟的概述
概述电子时钟功用,利用MCS—51单片机定时、中断功能完成时间的定时工作。
整个系统具有参数设定和时间运行,显示时、分、秒的电子时钟。
开机时显示时间为12:
00:
00,然后电路会自动开始计时,电路中时、分、秒各自有单独的时间调整按钮,当时间到23:
59:
59时,接下来显示时间变为00:
00:
00参数设定完后,电子时钟显示由6个LED数码显示器显示时、分、秒
2,电子时钟的硬件电路设计
2.1选用单片机
1、选用单片机MCS—51系统选用8051单片机,8051单片机内有4KROM、256字节RAM,程序存放在4KROM。
系统组成有:
2.28051单片机引脚
①VCC-芯片电源,接+5V
②VSS-接地端
③XTAL1、XTAL2-晶体振荡电路反相输入端和输出端
④ALE/PROG:
地址锁存允许/片内EPROM编程脉冲ALE功能:
用来锁存P0口送出的低8位地址,PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑤PSEN:
外ROM读选通信号。
⑥RST/VPD:
复位/备用电源,RST(Reset)功能:
复位信号输入端,VPD功能:
在VCC掉电情况下,接备用电源。
⑦EA/VPP:
内外ROM选择/片内EPROM编程电源,EA功能:
内外ROM选择端,VPP功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源VPP。
⑧单片机I/O接口扩展
当单片机构成系统时,常常I/O接口不够用,此时可以用MCS-51单片机的扩展接口,根据相应的需求扩展接口吗,利用MCS-51单片机的串行接口扩展并行I/O接口
2.3单片机各接口功能:
①、时钟电路,用8051单片机的内部有一个高增益的反相放大器,其输入端XTAL1,输出端XTAL2,用输入端XTAL1引脚和输出端XTAL2引脚指教接入一个晶振,工作时钟采用12MHz的晶振频率产生一个精确的周期性脉冲信号的自激振荡器
②、RAM,51单片机有片内存储器RAM还有特殊寄存器SFR,可以存放数据但是不能用来当做数据寄存器使用,也就是说用户不能随意的使用,特殊功能寄存器是可以随意读写的,属于RAM,RAM的主要功能用于存放程序运行中的数据和结果的存储。
③、ROM,用于存储预先编写的程序,属于只读程序存储器
④、I/O接口,8051单片机有四组接口,分别是P0、P1、P2、P3。
P0:
系统不进行扩展时作为通用I/O接口,P0口有输出数据、读引脚、读锁存器的功能;
P1口除了能做通用的I/O接口外,是专用的用户数据通讯端,P1端口是具有输出锁存的静态;
P2口增加了实现功能转换的多路开关MUX,所以P2端口在功能上兼有P0
端口和P1端口的特点。
这主要表现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。
此外P2口不能输出静态的数据,自身输出外部程序存储器的高8
位地址,执行MOVX指令时,还输出外部RAM的高位地址,故称P2端口为动态地址端口
P3口除了作为通用I/O端口使用外,每个端口线都具有第二功能,当处于第二功能时,锁存器输出1,通过第二输出功能线输出特定的内含信号,在输入
方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功能读入片内的特
定第二功能信号。
由于输出信号锁存并且有双重功能,故P3端口为静态双功能端口。
2.4单片机工作原理
单片机运行时,单片机本身自带的上电复位电路自动向单片机输入有效的复位信号,使单片机内各寄存器及端口复位到初始化状态,使程序计数器PC复位到0000H,然条后复位信号自动去除掉,CPU开始从0000H地址读取指令,暂存到指令寄存器,由指令译码器译码,译码结果送入定时与控制电路,产生各种定时与控制信号,控制CPU执行指令要求的控制、运算、读/写数据等操作
程序计数器具有加1功能,当执行完一条指令时,PC会自动跳转指向下一条指令实现顺序控制,当执行完后没有循环指令时,直到程序运行完成后,PC不在执行加1指令,从而使程序不在顺序执行,实现程序终止。
2.5,发光二级管8字数码管的显示
2.5.1数码管有共阴极、共阳极两种接法。
①共阴极接法:
将多只LED的阳极连接在一起即为共阴式,,数码管各段dp,g,f,e,d,c,b,a从高到低顺序排列连接到并行接口各位相连,当作为共阴极接法时高电平有效。
②共阳极接法:
将多只LED的阳极连接在一起即为共阳式,共阳式与共阴极不同共阳极低电平有效,但是在显示时对于共阳极接法,会是数码管在不需要工作时
依然工作,所以在使用数码管时,一般采用共阴极接法
2.5.2LED显示分为静态显示和动态显示两种方式
①静态显示:
静态显示占用CPU时间短,显示简单、稳定,但当显示位数较多时,占用接口资源多。
动态显示接口电路较简单,但占用CPU时间,显示亮度较静态显示差,一般说,显示位数较多时,采用动态或串并转换;显示位数较少时,采用静态显示方式。
选用共阴极LED,将共阴极点连接在一起接地,每一位的段选线与一个8位并行口相连,只要将要显示的字符的字型码送至并行口锁存,LED显示器上便立即显示出该字符,直到CPU送来一个新的字型码为止,由于静态显示每位数码管均有独立的段选码,耗电量大,硬件多。
②动态显示:
将各位数码管的段并联接在一起,由P1口控制(字型口),每一个数码管的共阴极(共阳极)接到P2.0、P2.1作为位选信号。
虽说要显示的字型码通过P1口同时送到了每一个数码管,但它们不会同时显示同一个字符,只有控制共阴极(共阳极)的位选信号有效时,对应的数码管才会显示相应字符。
这种由字型口控制要显示字符的字形码,依此循环选通每位数码管的位选信号就得到了动态显示效果。
它主要是利用人眼的视觉暂留特性及数码管得余光特性,看上去似乎是多位数码管同时显示。
是当显示位数较多时,节省硬件,接口电路简单,但显示占用CPU时间。
2.6定时器/计数器T0中断服务程序
T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。
秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把他们的值放到存储器单元的指定位置。
2.774LS138译码器
对3个输入信号进行译码。
得到8个输出状态。
G1,G2A,G2B,为数据允许输出端,G2A,G2B低电平有效。
G1高电平有效。
A,B,C为译码信号输出端,Y0~Y7
为译码输出端,低电平有效。
本实验中用作位码译码器选择通过A、B、C的输入来选择输出Y0~Y7,从而使得在数码管上显示出相应的时间。
2.874LS47芯片
74LS47芯片主要作为段码译码器,把用于将BCD码转化成数码块中的数字,然后我们就能看到从0-9的数字,通过A、B、C、D四个选择输入端来组合相应的BCD码,来使输出0-9的数字显示于数码管。
2.9电子时钟校时
定义三个按键时按键,分按键,加1键,用8051单片机的P0.0、P0.1、P0.2相连接,保证芯片的正常工作,同时加上了限流电阻。
每个按键都是相互独立的,在使用按键进行调时间时,由于每个按键占用了一条I/O接口线,按键之间不会相互影响,按键工作以高、低电平状态,通过采用8051单片机汇编语言的编程,软件控制操作,在按键控制时,没有按键按下
则时钟正常走下去,当时按下时加1到24时时进行清零,分按下时加1到60时进行清零,正常工作时,分和秒运行到59时自动跳转为00,然后在顺序执行。
五、电子时钟的软件部分
将程序以模块方式分割成具有相应功能的子程序,根据系统功能,合理安排主程序任务,中断服务程序任务,程序有两个分支:
参数整定及时钟运行。
1、程序流程图:
2、时钟电路工作工作原理:
电子时钟各部分连接完毕后,接通电源,整个电路进入复位状态,然后对时钟进行调试状态,通过按键操作和软件程序的配合使用,达到时间的调整和设定,
硬件电路完成后,通过汇编语言编写的应用程序,存储于8051单片机的ROM中,通过对CPU的调用,读取数据,实现中断,计时,加1等指令。
晶振产生一个频率脉冲,系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
在整个电子时钟电路中单片机主要分配各部分的运行,实现位码段码的选择,以及数码管显示出相应的数据值,达到一个微型计算机的控制要求,控制时、分、秒各自的加1与程序循环达到一天24小时的计时。
六、总结
经过一段时间整理资料,把课程设计分成了硬件和软件两大模块来完成
电子时钟电路。
硬件部分主要涉及的是简单的按键、电容、电阻、晶振和数码管。
在软件部分,细分为了按键模块、显示模块、定时/计数模块,最后把几个模块整合在主程序模块中,使得程序简单明了。
整个设计过程中遇到的最大问题是软件的编写,由于采用的是汇编语言其间
使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。
通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了解。
通过对电子时钟的设计,使本组同学把单片机应用于实际生活当中,让我们感觉到单片机的应用广泛,经过这次课程设计,让我们更加清晰的了解单片机,同时也锻炼了我们的团队合作精神,也是让我们能力的一种提升。
七、参考文献
[1]《单片机原理与应用技术》王丰栾学德,北京航空航天大学出版社,2007。
[3]《电子技术》刘阿玲北京理工大学出版社,2009
八、附录
附录一时钟电路设计电路图
附录二时钟电路控制程序图
ORG00H主程序起始地址
JMPSTART主程序START
ORG0BH定时器T0中断起始地址
JMPTIM0定时器T0中断子程序TIM0
START:
MOVSP,#70H设置堆栈指针
MOV28H,#00设置显示位数扫描指针初值为0
MOV2AH,#12H设置时钟显示寄存器初值为12H
MOV2BH,#00设置分钟显示寄存器初值为00H
MOV2CH,#00设置秒钟显示寄存器初值为00H
MOVTM0D,#01H设置定时器T0工作方式为1
MOVTH0,#0F0H定时4ms的初值,即0F060H
MOVTL0,#60H初值的低位
MOVIE,#82H定时器T0中断允许
MOVR4,#250保证后面实现中断250次,即1s的延时
SETBTR0启动定时器T0
LOOP:
JBP0.0,N2若秒没有按键,就转去下一步检查分
CALLDELAY延时5ms,消除抖动
MOVA,2CH将秒寄存器的值载入累加器A
ADDA,#01HA的内容加1
DAA十进制调整
MOV2CH,AA的值存入秒寄存器
CJNEA,#60H,N1看是否已经是60s,若不是就继续检查
MOV2CH,#00已经是60s,就清空秒寄存器的值
N1:
JNBP0.0,$秒按键还没有放开就循环等待
CALLDELAY延时5ms,消除抖动
N2:
JBP0.1,N4若分没有按键,就转去下一步检查时钟
CALLDELAY延时5ms,消除抖动
MOVA,2BH将分寄存器的值载入累加器A
ADDA,#01HA的内容加1
DAA十进制调整
MOV2BH,AA的值存入分寄存器
CJNEA,#60H,N3看是否已经是60分,若不是就继续检查
MOV2BH,#00已经是60分,就清空分寄存器的值
N3:
JNBP0.1,$分按键还没有放开就循环等待
CALLDELAY延时5ms,消除抖动
N4:
JBP0.2,LOOP若时没有按键,就转回去检查看是否秒有按键
CALLDELAY延时5ms,消除抖动
MOVA,2AH将时寄存器的值载入累加器A
ADDA,#01HA的内容加1
DAA十进制调整
MOV2AH,AA的值存入时寄存器
CJNEA,#24H,N5看是否已经是24时,若不是就继续检查
MOV2AH,#00已经是24时,就清空时寄存器的值
N5:
JNBP0.2,$时钟按键还没有放开就循环等待
CALLDELAY延时5ms,消除抖动
JMPLOOP返回重新检查看是否有按键
……定时器T0中断子程序……
TIM0:
MOVTH0,#OFOH定时初值重设
MOVTL0#60H
PUSHACC将累加器的A值暂存于堆栈
PUSHPSW将PSW的值暂存于堆栈
DJNZR4,X2计时中断不满1s就退出继续中断
MOVR4,#250计时1s
CALLCLOCK调用计时子程序CLOCK
CALLDISP调用显示子程序DISP
X2:
CALLSCAN调用扫描子程序SCAN
POPPSW到堆栈取出PSW的值
POPACC到堆栈取回累加器ACC的值
RETI返回主程序
……扫描子程序……
SCANMOVR0,#28H
INC@R0显示位数扫描值加1
CJNE@R0,#6,X3扫描位数不为6就准备控制输出
MOV@R0,#0扫描位数为6,就令其值为0
X3:
MOVA,@R0扫描位数载入A
ADDA,#20HA加上20H(显示寄存器地址)=各时间显示区地址
MOVR1,A各时间显示区地址存入A
MOVA,@R0扫描位数存入A
SWAPA将A的高低4位交换(其高4位为扫描的位数,低4位为
显示数据值)
ORLA,@R1将扫描值于显示数据组合
MOVP1,A显示输出
RET
……计时子程序……
CLOCK:
MOVA,2CH秒寄存器值载入A
ADDA,#1加1s
DAA十进制调整
MOV2CH,AA的值存入秒寄存器
CJNEA,#60H,X4A不等于60s,就跳出程序去显示
MOV2CH,#00已经是60s,就清0
MOVA,2BH分寄存器值载入A
ADDA,#1加1分
DAA十进制调整
MOV2BH,AA的值存入分寄存器
CJNEA,#60H,X4A不等于60分,就跳出程序去显示
MOV2BH,#00已经是60分,就清0
MOVA,2AH时寄存器值载入A
ADDA,#1加1小时
DAA十进制调整
MOV2AH,AA的值存入时寄存器
CJNEA,#24H,X4A不等于24时,就跳出程序去显示
MOV2AH,#00已经是24时,就清0
X4:
RET
……显示子程序……
DISP:
MOVR1,#20H20H为显示寄存器单元
MOVA,2CH将秒寄存器的内容存取A
MOVB,#10H设B累加器的内容为10H
DINABA/B,商存入A(十位数),余数存入(个位数)
MOV@R1,B将显示的个位数存入20H显示寄存器单元
INCR1
MOV@R1,A将显示的十位数存入21H显示寄存器单元
INCR1
MOVA,2BH将分寄存器的内容存入A
MOVB,#10H设B累加器的值为10H
DIVABA/B,商存入A(十位数),余数存入(个位数)
MOV@R1,B将显示的个位数存入22H显示寄存器单元
INCR1
MOV@R1,A将显示的十位数存入23H显示寄存器单元
INCR1
MOVA,2AH将时寄存器的内容存入A
MOVB,#10H设B累加器的内容为10H
DIVABA/B,商存入A(十位数),余数存入(个位数)
MOV@R1,B将显示个位数存入24H显示寄存器单元
INCR1
MOV@R1,A将显示十位数存入25H显示寄存器单元
RET
……延时5ms消除抖动……
DELAY:
MOVR6,#60
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
END