数字定时器设计.docx
- 文档编号:24664265
- 上传时间:2023-05-30
- 格式:DOCX
- 页数:23
- 大小:232.07KB
数字定时器设计.docx
《数字定时器设计.docx》由会员分享,可在线阅读,更多相关《数字定时器设计.docx(23页珍藏版)》请在冰豆网上搜索。
数字定时器设计
设计任务
设计一个数字定时器
设计要求
设计基本理论
本设计将采用89C51单片机,89C51单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能
CMOS位微处理器,俗称单片机。
单片机自带5个中断,两个16位定时器32个I/O口,可
擦除只读存储器可以反复擦除多次,功能相当强大。
该器件采用ATMEL高密度非易失存储器
制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和
闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。
89C单片机为很多嵌
入式控制系统提供了一种灵活性高且价廉的方案。
主体模块设计
数字定时器系统的基本组成如下图所示
禺振电路
显示电路
单片机
控制器
扌艮警电路
数字定时系统电路的原理框图根据设计任务与要求,可初步将系统分为五大功能模块:
主电路、按键电路、显示电路、继电器电路。
进一步细说,主电路选用
AT89C51作为中央处
理器,系统采用12MHZ勺晶振;按键控制电路由两个个按键(启动键(start)、时间设定键
(set))组成,采用三个独立开关,按键按下产生一个脉冲信号;显示电路由二位
8段共阴
极数码管和一个9位100欧姆上拉排阻组成,位选,个位和十位由P0输出,段选由P1输出;
继电器电路由一个继电器和一个用电器(灯泡)组成,通过电路与
P3.0相连。
当P3.0输出
高电平时,继电器不吸合,灯亮。
各部件具体设计
1单片机最小系统的设计模块
硬件连接说明:
本系统以AT89C51单片机为核心。
单片机采用内部振荡的方式。
通过
200欧姆电阻与一个6位8段LED数码显示管相连。
从P0口输出LED数码管的字形码,从
P2口输出LED数码管的位选码,高电平有效。
4个功能按键和P1口相连,中间通过10K的
电阻与+5V电源相连,按键另一端接地,P1口低电平时表示按键被按下。
报警电路则与P3.0
口相连,当P3.0口输出高电平时,蜂鸣器响。
2晶振电路设计
由于单片机内部振荡方式电路简单,时钟信号比较稳定,是独立的单片机应用系统的首
选,故本设计采用内部振荡方式,采用12MHZ勺晶振。
数字定时系统电路的晶振电路图如下
图所示。
2£00-5
Cl訂Btt
HI-7
匹_L
TE!
T匸
33p
XI
CRYSW
TF.iT
JI
»fTAk1
打心
3定时中断
本设计电路采用定时器TO产生定时中断,由于本设计需要0.1s的基本时间,故选择其
工作在定时方式1下。
这时定时器TO是一个16位的计时器,由它产生50ms的基本定时中
断,两次中断后将得到0.1s的时间。
4键盘电路
键盘电路有独立式键盘和矩阵式两种。
独立式键盘占用I/O口线较多,适用于按键较少
的情况。
矩阵式键盘占用的I/O口相对较少,适用于按键很多的情况。
共设置4个按键,每
个按键分别完成复位、开始/暂停、设置、调整的功能。
其电路连接图如下图所示。
5报警电路
报警电路将采用p3.0口驱动,当数码管显示00.00.0时p3.0口输出高电平,驱动蜂鸣器达到报警的目的,只有当复位键按下后,蜂鸣器才会停止报警。
其电路连接图如下图所示
F3.(WRXI>
F3UTXDP32ZINT0F3.3/jNTT
阳即TO
P3空
IP3倆
6显示电路
对于显示电路,本设计采用6位8段共阴极LED数码管显示。
上电显示最大倒计时时间
99.00.00-。
其中“-”位为系统状态标志位,当显示“-”时,表示系统处于等待状态,按
F开始键后将开始计数,开始计数后此数码管将关闭显示,以达到省电的目的,当显示“E”
时,表示系统正处于调时状态,此时只用两个调时键有用,按下开始键或复位键将没有用。
其显示电路图如下图所示。
系统的调试与结果测试
电后LED数码管显示最大倒计时值99.00.0-,程序处于等待状态
3900.0-
-KWI
当检测到有键按下后,转到
此时,主程序不断调用显示子程序以及扫描键盘按键情况,相应的程序执行。
1.开始/暂停键按下后程序开始减1计数直到0,同时状态显示管熄灭,计数值到0后
报警器响。
若中途遇到开始/暂停键按下则,暂停倒计时。
2.若中途遇到复位键按下则将倒计时器的倒计时值设置为最大值,并处于等待状态。
53535
nnnnnlUUUUUhVEH田
3.复位键按下后,程序复位,系统处于等待状态,状态显示管显示“
4.
E”设置状态的
当设置键被按下后,程序进入调时设置状态,同时状态显示管显示“
初始值位00.00.0E,按下+1调整键,可以将当前的计数单位值加1,再次按下设置键后,
即进入了下个计数单位的调时状态,当按下5次设置键后将退出调时状态,若分钟十位被设
置为6并再次按下设置键后程序直接退出调时状态。
设置状态时开始/暂停键和复位键无效,
等退出调时状态后,设置状态时开始/暂停键和复位键恢复功能
结果分析
本设计是一个采用了由内部振荡的时钟方式、程控扫描方式的独立式键盘、动态显示
LED数码管和蜂鸣器式报警器组成的系统。
因此该系统使用的电子器件少、外围电路简单,
定时精准,使用的I/O少,系统消耗的功耗小,剩余的I/O口多便于扩展其他功能。
但是另
对较高。
导致在没有按键按下的情况下
开始在主程序的循环中没有添加调用显示子程序的语句,
LED数码管没有显示。
当在主程序循环检测按键的过程中添加了调用显示子程序的语句后就
解决了这一问题。
由于键盘需要消抖延时和等待按键释放,所以相似的情况又出现了一一按
LED数码管没有显
下按键后有一段时间LED数码管断续显示或者按下按键后不释放按键时
示。
仔细分析后发现,问题出现的原因还是一样的,由于本设计的LED数码管采用了动态显示,故需要不断调用显示子程序,否则会导致LED数码管没有显示。
所以最终做了以下改进:
1.按键的消抖延时选择调用两次显示子程序(每次显示子程序大约用时5ms,两次即为10ms
左右)来取代原来的10ms软件延时。
2.在等待按键释放时,使用循环调用显示子程序来替
了彻底的解决。
心得体会
初次看到本次的课程设计的题目时,感觉设计的难度不大,但是由于是第一次运用
单片机设计,在设计过程中又遇到了种种困难,又感觉到要完成此次设计还需要花费很大的时间和精力。
但是经过不断的努力,运用科学的分析方法,最终完成了本次计算机课程设计。
经过三个星期的课设,过程曲折可谓一语难尽。
在此期间我也失落过,也曾一度热情高涨。
从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。
生活也是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
通过这次课设,我才真正领略到“艰苦奋斗”这一词的真正含义,只有亲自动手才能体会其中的内涵。
我想说,设计确实有些辛苦,但苦中也有乐。
每当遇到困难的时候,老师和同学给了我很大的帮助,让我学到了很多东西。
在此,我对帮助过我的同学及老师深表感谢。
我感觉
通过课设我和同学们之间的距离更加近了;我想说,设计确实很累,但当我们的设计出现成果时,心中也不免产生喜悦,正所谓“三百六十行,行行出状元”我认为无论干什么,只要人生活的有意义就可以。
时刻巩固所学知识,通过
另外,课堂上也有部分知识不太清楚,于是我又不得不边学边用,课设把以前不了解的东西能够学习一下,更深的体会其中的含义,使我收获颇多。
整个设计我基本上还满意,由于水平有限,难免会有错误,所以还请老师批评指正。
附录:
所使用的
VB程序
ORG0000H
JC12:
MOVP1,#0FFH
;判断设置键是否按
AJMPMAIN
ORG000BH
;T0中断程序入口地
JBP1.2,JC11
LCALLXDYS
AJMPT0ZD
JBP1.2,JC11
ORG00100H
PP12:
JNBP1.2,DP12
;调整设置键按下后转到
MAIN:
CLRTR0
;主程序开
调时子程(TSCX)
ACALLTSCX
CLRP3.0
;关闭蜂鸣器
JC11:
MOVP1,#0FFH
;判断开始/暂停键是否
SETB20H.1
;使显示管状态标志位有效
按下
CLR20H.0
;开始/暂停标志位,使程
JBP1.1,JPJC
序处于等待开始
LCALLXDYS
MOV40H,#00H
;0.1S位查表码
JBP1.1,JPJC
MOV41H,#00H
;秒钟个位位查表码
PP11:
JNBP1.1,DP11
MOV42H,#00H
;秒钟十位位查表
CPL20H.0
;将标志位取反
JB20H.0,KSJS
;开始/暂停标志为1则开始计
MOV43H,#00H
;分钟个位位查表
(KSJS)
CLRTR0
MOV44H,#06H
;分钟十位位查表
SETB20H.1
AJMPJPJC
继续检测键盘按键情况(JPJC)
MOV45H,#00H
;状态显示管查表
DP10:
LCALLXSCX
等待按键按下时,调用显示程序,
防止显示管没显示
MOV46H,#02H
;定时器定时次
AJMPPP10DP11:
LCALLXSCX
AJMPPP11DP12:
LCALLXSCX
SETBEA
;开总中断
AJMPPP12
KSJS:
CLR20H.1
清除状态显示管
SETBET0
;开定时器T0中断
SETBP2.5
JBP3.0,JPJC
若蜂鸣器响,则不启
MOVTMOD,#01H
;定时器工作方式
动计时器
SETBTR0
启动计时器TO(KSJS)
MOVTL0,#0B0H
;定时初值,采用50MS
AJMPJPJC
显示子程序
XSCX:
MOVDPTR,#TAB;显示子程序(XSCX)
MOVTH0,#3CH
MOVA,40HMOVCA,@A+DPTR
JPJC:
LCALLXSCX
;显示倒计时初值60.00.0(XSCX),
MOVP2,#0FFH
关闭显示.
进入键盘检测程
MOVP0,A
输出0.1S位的显示段码.
MOVP1,#0FFH
;判断复位键是否按
CLRP2.0
P2.0=0
JBP1.0,JC12
ACALLXSYS
LCALLXDYS
;调用消抖延时程序
MOVDPTR,#TAB1
XDYS)
MOVA,41H
JBP1.0,JC12
MOVCA,@A+DPTR
PP10:
JNB
MOVP2,#0FFH
关闭显示.
P1.0,DP10
;等待按键按下
MOVP0,A
输出秒钟个位的显示码.
AJMPMAIN
;复位键按下后转到主程
CLRP2.1
序(MAIN)重新开始
P2.1=0
ACALLXSYS
SETB20H.1
;使状态显示管的位选
MOVDPTR,#TAB
码有效
MOVA,42H
MOV45H,#01H
;将状态显示码更改为E(调
MOVCA,@A+DPTR
时状态)
MOVP2,#0FFH
关闭显示.
MOVR0,#44H
MOVP0,A
输出秒钟十位位的显示段码.
JCTZ:
ACALLXSCX
;先调用显示程序,
CLRP2.2
扫描时间调整键
P2.2=0
MOVP1,#0FFH
ACALLXSYS
JBP1.3,NEXT
;+1键盘没有按
MOVDPTR,#TAB1
MOVA,43H
ACALLXDYS
;键盘按下,消抖延
MOVCA,@A+DPTR
MOVP2,#0FFH
关闭显示.
JBP1.3,NEXT
MOVP0,A
输出分钟个位的显示段码.
DEN0:
JNBP1.3,DEN1
;等待按键释放
CLRP2.3
AJMPJYCX
;+1键按下后,跳转到+1
P2.3=0
程序
ACALLXSYS
NEXT:
MOVP1,#0FFH
MOVDPTR,#TAB
JBP1.2,JCTZ
MOVA,44H
ACALLXDYS
;键盘按下,消抖延
MOVCA,@A+DPTR
MOVP2,#0FFH
关闭显示.
JBP1.2,JCTZ
MOVP0,A
输出分钟十位的显示段码
DEN2:
JNBP1.2,DEN3
;等待按键释
CLRP2.4
P2.4=0
MOVA,44H
ACALLXSYS
CJNEA,#06H,DEC4
;设置键再次按下,将调整指
JNB20H.1,ZBTC
针指向下一位
20H.1为1则显示计时器状态
AJMP
TCTSDEC4:
DECR0
MOVDPTR,#TAB2
CJNE
R0,#3FH,JCTZ
;若R0为3FH则退出调时程
MOVA,45H
MOVCA,@A+DPTR
AJMP
TCTS
;若@R0P为#06H,但R0为
MOVP2,#0FFH
关闭显示.
#3FH,
则跳出调时程序
MOVP0,A
输出段码.
JYCX:
CJNER0,#44H,XIA1
;加1调时部分
CLRP2.5
CJNE@R0,#06H,INCR
;调整分钟十位
P2.5=0
AJMPSET0XIA1:
CJNER0,#43H,XIA2
ACALLXSYS
AJMPTZ09
;调整分钟个
ZBTC:
RET
位XIA2:
CJNER0,#42H,XIA3
TSCX:
CLRTR0
;调时子程序(TSCX)
CJNE@R0,#05H,INCR
;调整秒钟十位
CLR20H.0
;使时间调整时处于暂停状
AJMPSET0XIA3:
CJNER0,#41H,XIA4
AJMPTZ09
;调整秒钟个
MOV40H,#00H
位XIA4:
CJNER0,#40H,TCTS
MOV41H,#00H
TZ09:
CJNE@R0,#09H,INCR
;调整0.1秒位
MOV42H,#00H
SET0:
MOV@R0,#00H
MOV43H,#00H
AJMPJCTZINCR:
INC@R0
MOV44H,#00H
AJMPJCTZDEN1:
ACALLXSCX
AJMPDEN0DEN3:
ACALLXSCX
DEC43H
AJMPDEN2
AJMPTCZD
TCTS:
MOVTH0,#3CH
;退出调时
R044:
MOV40H,#09H
程序
MOV41H,#09H
MOVTL0,#0B0H
MOV42H,#05H
MOV45H,#00H
;将状态显示码更
MOV43H,#09H
改为D(等待状态)
DEC44H
RET
TO中断子程序
AJMPTCZD
TOZD:
CLREA
;TO中
DEC1:
DEC4OH
断子程序,关中断
TOZD)
TCZD:
MOVTHO,#3CH
退出中断子程序
CLRETO
MOVTLO,#OBOH
CLRTRO
SETBEA
DJNZ46H,TCZD
SETBETO
MOV46H,#O2H
;当定时两次后重新
SETBTRO
给计时次数赋值为
AJMPZZFHJYFH:
DEC4OH
MOVRO,#4OH
减1计数,RO为4OH
ZJFH:
SETBP3.O
启动蜂鸣器ZZFH:
RETI
CJNE@RO,#O1H,RO4O
XDYS:
ACALLXSCX;消抖延时程序,延时1Oms(2*5ms)
INCRO
;RO
为41H
ACALLXSCX;采用调用显示子程序延时以改善LED显示效
CJNE@RO,#OOH,DEC1
INCRO
;RO
为42H
RETXSYS:
MOV55H,#2O;显示延时程序,延时1ms
CJNE@RO,#OOH,DEC1
INCRO
;RO
DEL2:
MOV56H,#25DEL1:
DJNZ56H,DEL1
为43H
DJNZ55H,DEL2
CJNE@RO,#OOH,DEC1
INCRO
;RO
RET
为44H
TAB:
DB3FH,O6H,5BH,4FH,66H,6DH,7DH,O7H,7FH,6FH
CJNE@RO,#OOH,DEC1
TAB1:
DB
AJMPJYFHRO4O:
CJNE@RO,#OOH,DEC1
;RO为4OH
OBFH,86H,ODBH,OCFH,OE6H,OEDH,OFDH,87H,OFFH,OEFH
INCRO
;RO
为41H
TAB2:
DB040H,79H;D等待状态,E调时状态
CJNE@RO,#OOH,RO41
END
INCRO
;RO
为42H
CJNE@RO,#OOH,RO42
INCRO
;RO
为43H
CJNE@RO,#OOH,RO43
INCRO
;RO
为44H
CJNE@RO,#OOH,RO44
AJMPZJFHRO41:
MOV4OH,#O9H
DEC41H
AJMPTCZDRO42:
MOV4OH,#O9H
MOV41H,#O9H
DEC42HAJMPTCZDR043:
MOV4OH,#O9H
MOV41H,#O9H
MOV42H,#O5H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 定时器 设计