秒表时钟计时器设计2.docx
- 文档编号:9812385
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:29
- 大小:283.01KB
秒表时钟计时器设计2.docx
《秒表时钟计时器设计2.docx》由会员分享,可在线阅读,更多相关《秒表时钟计时器设计2.docx(29页珍藏版)》请在冰点文库上搜索。
秒表时钟计时器设计2
第1章总体方案的设计及方案比较
1.1总体方案设计
总原理图可以包括以下几个单元电路、电源电路、下载口电路、复位电路、振荡电路、键盘及显示电路
..数字钟计时的标准信号应该是频率相当稳定的1HZ脉冲,所以要设置标准时间源。
数字钟计时周期是24小时,因此必须设置24小时计数器,他应由模为60的秒计数器和分计数器及模为24的时计数器组成,秒、分、时由七段数码管显示。
为使数字钟走时与标准时间一致,校时电路是必不可少的。
设计中采用开关控制校时直接用秒脉冲先后对“时”“分”“秒”计数器进行校时操作。
使用按键开关可以实现时年调整、秒表/时钟功能的转换关闭显示等功能
1.2方案比较
方案一:
采用CPLD作为主控制器控制外围电路进行时钟控制、键盘和LED控制。
此方案逻辑电路复杂,且灵活性较低,不利于各种功能的扩展,在测电压时将通过A/D测得的数值转化为电压有效值时有一定的困难。
方案二:
采用AT89S51单片机来实现系统的控制,该芯片可以进行时分秒的计数,用1的总开关来控制电源,用三个按键开关来实现时分的调整、秒表/时钟的转换,并且可以对其方便的进行程序控制,完全能满足题目的要求所以采用方案二。
其总体电路图没见附A
1.3方案论证
为了实现LED显示器的是数字显示,可以采用静态显示法和动态显示法。
由于静态显示法需要数据锁存器等硬件,接口复杂一些。
考虑时钟显示只有六位,而且系统没有其他复杂的处理任务,所以决定才用动态扫描法实现LED的显示。
单片机采用容易购买的AT89S51系列,这样单片机可具有客户足够的余硬件资源实现其他的扩充功能,硬件系统的总体构成框架如下
六位LED显示器
AT89S51
P0
单
片
机
控
制
器
P1
列驱动
图1-2硬件系统总体设计框架
第2章系统硬件电路的设计
秒表/时钟计数器的硬件电路如图8,采用AT89S51单片机,最小化应用设计;采用共阴极七段LED显示器,P0口输出端数据,P20~P25口作为扫描输出,P10、P11、P12口接三个按键开关,用以调时及功能设置。
为了提供共阴极LED数码管的驱动电压,用三极管8550作电源驱动输出。
采用12MHZ晶振,有利于提高秒表计时的精确性。
2.1电源电路:
JP1是电源输入插孔。
S5为电源开关。
电路采用7805三端稳压管,为单片机提供稳定的工作电压(工作电压为5V)其1脚为输入端,2脚为接地端,3脚为输出端。
D1是二极管IN4007,并联在7805上,作用是反接保护电路。
C2是电源滤波电容,其值为200UF。
C1为高频去偶电容其值为0.1UF。
D2是一只发光二极管,作用为电源指示灯
图2-1电源电路
2.2下载口电路:
此下载口为10针型。
2、4脚分别接地,8脚接电源,P15,P16,P17三脚分别接单片机P15,P16,P17三脚。
5脚接单片机的RESET脚。
图2-2下载口电路
2.3复位电路:
此电路由一只10UF的电解电容,一只10K的电阻和一只按键开关组成。
。
图2-3复位电路
2.4振荡电路:
由12KHZ晶振组成时钟产生电路,为单片机提供时钟源。
图2-4振荡电路
2.5显示电路:
此电路由一只9脚和6只共阴极数码管组成。
P00口~PO7口分别接数码管的a~g段。
排组一脚接电源,数码管的G0~G5接单片机的P20~P25口。
图2-5显示电路
2.6键盘电路:
三只电阻为1K,K1,K2,K3是三只控制按键。
此电路作用为对时间的调试和校正。
图2-6键盘
第3章系统程序设计
3.1主程序
本设计中,计时采用定时器T0中断完成,其余状态循环调用显示子程序,当端口开关按下时,转入相应功能.
其主程序执行流程图如下:
图3-1主程序执行流程图
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
主程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START:
LCALLST
MOVR0,#70H
MOVR7,#0BH
CLEARDISP:
MOV@R0,#00H
INCR0
DJNZR7,CLEARDISP
MOV20H,#00H
MOV7AH,#0AH
MOVTMOD,#11H
MOVTL0,#0B0H
MOVTH0,#3CH
MOVTL1,#0B0H
MOVTH1,#3CH
SETBEA
SETBET0
SETBTR0
MOVR4,#14H
3.2显示子程序
数码管显示的数据存放在内存单元70H~75H中。
其中70H~71H存放秒数据,72H~73H存放分数据,74H~75H存放时数据,每一地址单元内均为十进制BCD码。
由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。
显示时,先取出70H~75H中的某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。
如果要显示小数点及“—”、“A”等特殊字符,在显示班级及计时时采用不同的显示子程序。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
显示程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
显示数据在70H-75H单元内,用六位LED共阳数码管显示,P0口输出段数据,P2口作
扫描控制,每个LED数码管亮1ms时间,再逐位循环。
DISPLAY:
MOVR1,#70H
MOVR5,#0FEH
PLAY:
MOVA,R5
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVA,R5
JBACC.2,LOOP5
SETBP0.7
LOOP5:
JBACC.4,LOOP6
SETBP0.7
LOOP6:
LCALLDL1MS
INCR1
MOVA,R5
JNBACC.5,ENDOUT
RLA
MOVR5,A
MOVP0,#00H
AJMPPLAY
ENDOUT:
MOVP2,#0FFH
MOVP0,#00H
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,77H,40H
共阳段码表"0""1""2""3""4""5""6""7""8""9""不亮""A""-"
ST子程序,上电时显示年月班级用,采用移动显示
ST:
MOVR0,#40H
MOVR2,#20H
MOVR3,#00H
CLRA
MOVDPTR,#STAB
SLOOP:
MOVCA,@A+DPTR
MOV@R0,A
MOVA,R3
INCA
MOVR3,A
INCR0
DJNZR2,SLOOP
MOVR1,#5AH
MOVR3,#1BH
SSLOP:
MOVR2,#32H
SSLOOP1:
LCALLSDISPLAY
DJNZR2,SSLOOP11
MOVA,R1
SUBBA,#07H
MOVR1,A
DJNZR3,SSLOP
RET
SSLOOP11:
MOVA,R1
SUBBA,#06H
MOVR1,A
AJMPSSLOOP1
SDISPLAY,上显示程序
不带小数点显示,有"A","-"显示功能
SDISPLAY:
MOVR5,#0FEH
SPLAY:
MOVA,R5
MOVP2,A
MOVA,@R1
MOVDPTR,#TABS
MOVCA,@A+DPTR
MOVP0,A
MOVA,R5
LCALLDL1MS
INCR1
MOVA,R5
JNBACC.5,ENDOUTS
RLA
MOVR5,A
AJMPSPLAY
ENDOUTS:
MOVP2,#0FFH
MOVP0,#00H
RET
TABS:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,77H,40H
STAB表,启动时显示2006-10-19(制作年月日),04-2-80(班级学号)
STAB:
DB0AH,0AH,0AH,0AH,0AH,0AH,00H,08H,0CH,02H,0CH,04H,00H,0AH,0AH,0AH
DB09H,01H,0CH,00H,01H,0CH,06H,00H,00H,02H,0AH,0AH,0AH,0AH,0AH,0AH
注:
0A不亮,0B显示"A".0C显示
3.3定时器T0中断服务程序
定时器T0用于时间计时。
定时溢出中断周期可分别设为50ms和10ms。
中断进入后,先判断是时钟计时还是秒表计时,时钟计时累计中断20次(即1S)时对秒计数单元进行加1操作,秒表计时每10ms进行加1操作。
时钟计数单元地址分别在70H~71H(秒)、76H~77H(分)和78H~79H(时),最大计时植为23时59分59秒。
而秒表计数单元地址也在70H71H(0。
01毫秒)、76H77H(秒)、和78H79H(分),最大计时为99分59.99秒。
7AHD单元内存放“熄灭符”数据(#0AH)。
在计数单元中采用十进制BCD码计数,满60进位,T0中断服务程序
执行流程图如下图:
时钟
图3-2T0中断服务程序
T0中断服务程序
INTT0:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
JB03H,FSS
MOVA,#0B7H
ADDA,TL0
MOVTL0,A
MOVA,#3CH
ADDCA,TH0
MOVTH0,A
SETBTR0
DJNZR4,OUTT0
ADDSS:
MOVR4,#14H
MOVR0,#71H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#60H,ADDMM
ADDMM:
JCOUTT0
ACALLCLR0
MOVR0,#77H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#60H,ADDHH
ADDHH:
JCOUTT0
ACALLCLR0
MOVR0,#79H
ACALLADD1
MOVA,R3
CLRC
JB03H,OUTT0
CJNEA,#24H,HOUR
HOUR:
JCOUTT0
ACALLCLR0
OUTT0:
MOV72H,76H
MOV73H,77H
MOV74H,78H
MOV75H,79H
POPPSW
POPACC
SETBET0
RETI
秒表计时程序(10min加1),低2位为0.10.01秒,中间2位为秒,最高2位为分。
最大计数值为99分59.99秒
FSS:
MOVA,#0F7H
ADDA,TL0
MOVTL0,A
MOVA,#0D8H
ADDCA,TH0
MOVTH0,A
SETBTR0
MOVR0,#71H
ACALLADD1
CLRC
MOVA,R3
JZFSS1
SETBC
FSS1:
AJMPADDMM
3.4T1中断服务程序
T1中断服务程序用于指示调整单元数字的闪亮。
在时间调整状态下,每过0.3S,将对应单元的显示数据换成“熄灭符”数据(#0AH)。
这样在调整时间时,对应调整单元的显示数据会间隔闪亮。
T1中断服务程序,用作时间调整时调整单元闪烁指示
INTT1:
PUSHACC
PUSHPSW
MOVTL1,#0B0H
MOVTH1,#3CH
DJNZR2,INTT1OUT
MOVR2,#06H
CPL02H
JB02H,FLASH1
MOV72H,76H
MOV73H,77H
MOV74H,78H
MOV75H,79H
INTT1OUT:
POPPSW
POPACC
RETI
FLASH1:
JB01H,FLASH2
MOV72H,7AH
MOV73H,7AH
MOV74H,78H
MOV75H,79H
AJMPINTT1OUT
FLASH2:
MOV72H,76H
MOV73H,77H
MOV74H,7AH
MOV75H,7AH
AJMPINTT1OUT
3.5调时功能程序
调时功能程序的设计方法是:
按下P.0口按键,若按下时间短于1S,则进入省电状态(数码管不亮,时钟不停);否则进入调分状态,等待操作,此时计数器停止走动。
当再按下按键时,若按下时间短于0.5S,则时间加1分;若按下时间长于0.5秒,则进入(小)时调整状态。
在(小)时调整状态下,当按键按下的时间长于0.5S时,退出调整状态,时钟继续走动。
P1.1口按键在调时状态下可实现减1功能。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
时钟调整程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
当调时按键下时进入此程序
SETMM:
CLRET0
CLRTR0
LCALLDL1S
JBP1.0,CLOSEDIS
MOVR2,#06H
SETBET1
SETBTR1
SET2:
JNBP1.0,SET1
SETB00H
SET4:
JBP1.0,SET3
LCALLDL05S
JNBP1.0,SETHH
MOVR0,#77H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#60H,HHH
HHH:
JCSET4
LCALLCLR0
CLRC
AJMPSET4
CLOSEDIS:
SETBET0
SETBTR0
CLOSE:
JBP1.0,CLOSE
LCALLDISPLAY
JBP1.0,CLOSE
WAITH:
JNBP1.0,WAITH
LJMPSTART1
SETHH:
CLR00H
SETHH1:
JNBP1.0,SET5
SETB01H
SET6:
JBP1.0,SET7
LCALLDL05S
JNBP1.0,SETOUT
MOVR0,#79H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUU
HOUU:
JCSET6
LCALLCLR0
AJMPSET6
SETOUT:
JNBP1.0,SETOUT1
LCALLDISPLAY
JNBP1.0,SETOUT
CLR01H
CLR00H
CLR02H
CLRTR1
CLRET1
SETBTR0
SETBET0
LJMPSTART1
SET1:
LCALLDISPLAY
AJMPSET2
SET3:
LCALLDISPLAY
JNBP1.1,FUNSUB
AJMPSET4
SET5:
LCALLDISPLAY
AJMPSETHH1
SET7:
LCALLDISPLAY
JNBP1.1,FUNSUBB
AJMPSET6
SETOUT1:
LCALLDISPLAY
AJMPSETOUT
FUNSUB,分减1程序?
FUNSUB:
LCALLDISPLAY
JBP1.1,SET41
FUNSUB1:
JNBP1.1,FUNSUB1
MOVR0,#77H
LCALLSUB1
LJMPSET4
SET41:
LJMPSET4
FUNSUBB,时减1程序
FUNSUBB:
LCALLDISPLAY
JBP1.1,SET61
FUNSUBB1:
JNBP1.1,FUNSUBB1
MOVR0,#79H
LCALLSUBB1
LJMPSET6
SET61:
LJMPSET6
3.6秒表/时钟功能总程序
在正常计时状态下,若按下P1.1口按键,则进行时钟/秒表功能的转换,转换后计时从零开始。
当按下P1.2口的按键时,可实现清0、计时启动、暂停功能。
3.7功能实现情况及按键功能的应用
上电就流动显示年、月、日、班级、学号,然后进入秒表状态,按功能键可进行秒表和时钟的转换,可全天计时。
T0的作用:
按下T0按键,若按下时间短于1s,则进入省电状态,
否则进入调分状态,等待操作、此时计时器停止走动。
当再按下按键时,若按下时间短于0.5s时,则时间加1分;若按下时间长于0.5s,则进入时调整状态。
在时调整状态下,当按键按下的时间长于0.5s时,退出调整状态,时钟继续走动。
T1按键在调时、分状态下可以实现减1功能。
T1的作用:
在正常计时的状态下,若按下T1按键,则进行时钟/秒表功能的转换,转换后计时从零开始。
当按下T2按键时,可以实现清零,计时启动,暂停功能。
T2的作用:
实现清零,计时启动,暂停功能。
第4章调试及功能实现
4.1使用的主要仪器与工具
4.1.1:
仪器
计算机,软件环境:
Keiluvision2、MicrocontrollerIspSoftware
电源(9~16V直流、500mA输出)
4.1.2:
工具
电烙铁,万用表,镊子,焊锡,ISP下载线。
4.2硬件调试的方法步骤
4.2.1:
清点元气件:
将领取后的元气件进行详细的数目、类型清点。
以保障元气件无错漏。
4.2.2:
检查元气件:
将领取后的元气件进行详细的硬件检查,是否有引脚断裂,和制作工艺上的残漏。
参考值是否与电路所需参考值一样。
4.2.3:
安插元气件:
将各类元气件对号入座的安插在电路板上。
集成块要注意各引脚的顺序,在安装时,不要用力过硬,以免损伤引脚。
其他散装元件,在安装时除注意引脚所对应位置外,还要求该元件的摆设造型要美观、大方。
(如:
电阻、电容等)
4.2.4:
焊接元气件:
1无虚焊、漏焊。
2.焊点无毛刺、焊面光滑润圆。
3.焊点大小要适中。
4.2.5:
安装后的清理:
元气件安装焊接完毕后,要对电路板进行清理。
将遗留在电路板上的焊锡清除干净,过长的引脚应用专业钳剪掉,以保证电路板干净、整洁。
4.3软件调试部分
设计一个显示程序,在6只LED数码管上显示
进入工作环境:
4.3.1步骤
1建立工程项目文件:
Project→newProject→命名(后缀.UV2)、保存→SelectDevice(Atmel\AT89S51),确定。
2新建程序文件,输入程序,保存。
3File→New,在TEXT窗口中,输入程序。
File→Save,(后缀asm)。
4添加文件到工程:
选中工程项目窗口中的SourceGroup1,单击右键→AddFilestoGroup‘SourceGroup1’,文件类型选择为AsmSourceFile,选中要添加的程序文件,单击Add→Close.
5设置调试环境:
project→OptionsForTarget‘Target1’,选中Output选项卡,将口Createhexfile处的复选框中打上√。
⑥程序编译和连接:
Project→BuildTarget。
完成后,如果程序有语法错误,根据提示信息修改后重新编译,直到没有错误。
此时,将产生与工程项目名同名,后缀为.hex的文件,该文件即为需要调试的软件的机器码。
其路径与工程项目的路径相同。
软、硬件综合调试
4.3.2:
程序下载
硬件准备:
用ISP下载端的10针端连接电路板上的接口,另一端连接电脑接口(注意;针位要插对)
进入MicrocontrollerIspSoftware的工作环境
1选择目标器件:
●打开AT89文件夹,选中AT89S51;
●Read/WriteMode,将○ByteMode弹出的单选按键选中;
●XTAL(MHZ),设为12,单击OK。
2装载程序代码到缓冲区:
●进入缓冲区窗口(黑底,绿FF…)后,File→LoadBuffer,选中需
●下载的程序代码文件(后缀.hex)单击“打开”。
3写程序(同时起到调试ISP接口电路的作用):
如果程序下载成功,会弹出一个提示框,单击OK。
如果不能正常下载,根据提示信息,从如下几方面入手调试:
●电源电路各点正常否?
●更换保证无误的ISP下载线。
●单片机是否损坏?
●断开上电自动复位电路
4.3.3:
程序运行:
关闭电源,拔掉ISP下载线,接通电源,复位。
第5章方案实现
5.1电路原理:
电路原理图见附A
5.2PCB的设计
5.2.1设计工具:
protel99SE
电路设计使用protel99,其使用方法如下:
首先,应建立一个文件夹,用以存放电路图。
建好后,点击protel99软件后,会弹出DesignExplorer界面。
打开Flie菜单,点击下拉菜单New,会弹出一个叫NewDesignDatabase的界面。
选中Location,在该界面中的Desigestorage中选择MSAccessDatabase,DatabaseFileName窗口中输入文件命(文件名可以自定)后缀为.DDB,然后点击Browse,将文件名保存在新建的文件夹中。
再点击OK,就进入了protel99的界面。
5.2.2添加文件
在protel99的界面中打开Flie点击下拉菜单New。
在NewDocument中打开Documents,在Documents界面选中SchematicDocument菜单。
SchematicDocument就是画电路图的文件。
进入SchematicDocument后,点击
会弹出Placepart窗口,在该窗口中点击Browse,就进入了BrowseLibraries界面。
在Libraries中选中MiscellaneousDevices.lib元件库,Components中就会加入该库的所有元件。
将所需元件单击选中,在单击Close键,该元件就加入了画图界面。
如果元件库中没有所需元件,则需要自画元件,自画元件需要进入界面SchematicLibrary,SchematicLibrary的加入方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 秒表 时钟 计时器 设计