
题 目: 智能电脑钟的设计
专 业: 07自动化(2)班
学 号: 200710320234
姓 名: 杨琳琳
完成日期: 2010-6-27
指导教师: 张老师
景德镇陶瓷学院
单片机原理及应用课程设计任务书
班级: 07自动化(2)班 姓名:杨琳琳 指导老师:张 玲 2010年06月21 日
| 设计题目:智能电脑钟的设计 | |
| " 设 计 任 务 | 要求以单片机为主控制器设计一个功能强的电脑钟,能实现如下功能: 1.能将用户提供的作息时间表存入存储器,按作息时间的要求进行定时打铃。 2.能实现计时的清零、启动和停止,显示出累计时间。 3.设置功能选择开关和相应的操作按键。 4.具有定时功能。 |
| c 设 计 要 求 | 1.调研、查找并收集资料。 2.总体设计。 3.硬件设计::用A4纸画出硬件的接线图。 4.软件设计:画流程图及编写程序。 5.撰写设计说明书(字数约2000字左右)。 6.参考资料目录 |
| " 参 考 资 料 | 《单片机原理及接口技术》 胡汉才 清华大学出版社 《单片机中级教程》 张俊谟 北航出版社 《单片机原理及接口技术》 李全利 高等教育出版社 |
目录
1总体设计 4
2 单元电路设计 5
2.1 主控制电路设计 5
2.2 显示电路设计 6
2.3 按键电路设计 6
3硬件电路设计及原理说明 7
3.1硬件电路介绍 7
3.2电路工作原理说明 7
4软件设计 8
4.1智能电脑钟的软件设计流程图 8
4.2 智能电脑钟的汇编语言源程序 8
5元器件清单 15
6设计小结 16
7总电路图 17
8参考文献 18
1总体设计
时钟是人们生产和生活的基本设备。构成时钟电路的方法很多,根据任务书的要求,设计出的智能电脑钟需满足下列条件:
1能将用户提供的作息时间表存入存储器,按作息时间的要求进行定时打铃;
2能实现计时的清零、启动和停止,显示出累计时间;
3设置功能选择开关和相应的操作按键。
4具有定时功能;
5要求以单片机为主控制器。
所以设计出的智能电脑钟必须要满足上述条件。根据上述条件,选用8031作主控制器,扩展一片程序存储器,如存储容量为8K×8的EPROM27,扩展6位LED显示接口,以用于时钟显示,设置两路输出信号,用于推动外部定时控制设备或音响报时电路。扩展一个包括0一9的十个数字键和若干功能键的键盘。这些功能键的作用是:作时钟时,设置报时、校时;作定时时,设置定时时间的启动;作跑表时,设置清零、启动和停止。
输出设备分为两个方面,一是由6位数码管组成的时间显示器,可利用8031的串行口,经移位寄存器74LSl送出显示器的段控制信号,其位控制信号分别由P1.0~P1.5输出。报时信号由P3.5输出,定时信号由P3.6输出,这个输出信号可控制各种外部设备。
时钟信号的产生可利用8031片内的定时器。产生定时中断,进行时、分、秒的计时,并将信号送到显示电路。
根据上述分析可知,智能电脑钟的总体电路应主要包括主控制电路(以8031为控制芯片),显示电路和按键电路。总体连接框图如下图1所示。
图1 智能电脑钟总体连接框图
2 单元电路设计
根据上述分析可知,智能电脑钟总体电路主要包括主控制电路(以8031为控制芯片),显示电路和按键电路。
2.1 主控制电路设计
如下图2所示,选用单片机8031作主控制器,并用存储容量为8K×8的EPROM27扩展一片程序存储器。选用地址锁存器74LS373连接8031和27,74LS373 是一种带三态门的8D锁存器,连接方式如下图2所示。晶振电路由两1.5P电容C1,C2和11.000MHZ晶体振荡器连接在XTAL1和XTAL2上。RESET管脚接复位信号如下图2所示。报时信号由P3.5输出,定时信号由P3.6输出,输出信号通过固态继电器去控制被控对象。
图2 智能电脑钟主控制电路图
2.2 显示电路设计
LED数码管能够显示数字和部分字符,价格便宜,硬件电路,软件编程均非常简单,而且使用动态扫描技术可节省大量硬件成本。所以显示电路选用LED数码管作为显示器件 。由于系统要求显示小时,分钟和秒,所以选用6位LED数码管即可。并用反相器7406与按键电路连接,用反相器7404与单片机8031的PI口连接。具体连接方式如下图3所示。
图3 智能电脑钟LED显示电路
2.3 按键电路设计
按键电路用移位寄存器74LS1与键盘电路连接,键盘包括0~9十个数字键和REG、NEXT两个命令键。数字键0、6、1、7和命令键NEST设置为双功能键,分别为跑表启动、停止、报时、定时和跑表清零,用以选择电脑钟的不同功能。74LS1与8031P2口连接。按键电路具体连接方式如下图4所示。
图4 智能电脑钟按键电路
3硬件电路设计及原理说明
3.1硬件电路介绍
智能电脑钟总体连接图如图6所示。该电脑钟主要由8031单片机,地址锁存器74LS373,EPROM2746组成。而且扩展了6位LED显示器和12键盘。
显示器显示电脑钟的走时时间,从左至右时、分、秒各占两位;用于跑表时,显示器从左至右为分、十秒、秒、百毫秒、十毫秒、1毫秒。键盘包括0~9十个数字键和REG、NEXT两个命令键。数字键0、6、1、7和命令键NEST设置为双功能键,分别为跑表启动、停止、报时、定时和跑表清零,用以选择电脑钟的不同功能。
要显示的时间数据从8031的串行口送出,经移位寄存器74LS1送至LED显示器进行断选。从8031的P1 .0~1.5送出位选信号。开关S1和S2 用于选择报时时间表。输出信号通过固态继电器去控制被控对象。
3.2电路工作原理说明
报时和定时控制的原理是利用8031片内的定时器0,定时发出中断,进行秒、分、时计时,并把计时时间送至显示器。为能按照时间表发出相应的控制信号,采用了查表的方法。电脑钟在每次分计时和小时计时之后去查时间表,并与电脑钟的走时进行比较,查到相等的值时就发出相应的控制信号。报时与定时控制的区别在于,定时控制是定点开、停,交替发出开、停控制信号。而报时控制在于到点发出报时控制信号,经较短时间(比如10秒),就需要关掉报时信号。为此目的,电脑在秒计时之后,把秒时单元的数值与给定发报时信号时间进行比较,相等时就发出关报时的控制信号。
跑表功能的原理是利用8031片内的定时器1,定时1毫秒发出中断,进行毫秒、秒和分秒时。电脑钟测试I/O口上相应位的输入信号,决定计时的启、停。
4软件设计
4.1智能电脑钟的软件设计流程图
图5 智能电脑钟软件设计流程图
4.2 智能电脑钟的汇编语言源程序
ORG 0000H
LJMP MAIN
ORG 0003H
SETB PSE.5
RET1
ORG 000BH
LJMP CLOCK
ORG 0013H
SETB 7FH
RET1
ORG 0030H
MAIN:MOV SP,#60H
MOV TMOD,#01H
MOV IE,#87H
SETB PT0
MOV TL0,#0B7H
MOV TH0,#3CH
MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV 50H,#06H
MOV 51H,#28H
MOV 52H,#00H
CLR PSW.5
CLR 7FH
SETB TR0
SETB IT0
SETB IT1
CLR P3.0
SS:LCALL CUTIN0
LCALL SSCAN
JNB PSW.5,LK
LCALL KEY0
LK:JNB 7FH,SS
LCALL KEY1
SJMP SS
CUTIN0:PUSH PSW
PUSH ACC
MOV 25H,R0
MOV R0,#79H
MOV A,22H
ACALL BCD
MOV A,21H
ACALL BCD
MOV A,20H
ACALL BCD
MOV R0,25H
POP ACC
POP PSW
RET
CUTIN1:PUSH PSW
PUSH ACC
MOV 25H,R0
MOV R0,#79H
MOV A,42H
ACALL BCD
MOV A,41H
ACALL BCD
MOV A,40H
ACALL BCD
MOV R0,25H
POP ACC
POP PSW
RET
BCD:MOV B,#0AH
DIV AB
MOV @R0,B
INC R0
MOV @R0,A
INC R0
RET
CLOCK:JNB PSW.5,ZC
LJMP FH
ZC:MOV TL0,#OB7H
MOV TH0,#3CH
PUSH PSW
PUSH ACC
INC 23H
MOV A,23H
CJNE A,#0AH,RET0
MOV 23H,#00H
INC 22H
MOV A,22H
CJNE A,#3CH,RET0
MOV 22H,#00H
SETB P1.0
CLR P3.0
INC 21H
MOV A,21H
CJNE A,#3CH,RET0
MOV 21H,#00H
CLR P1.0
INC 20H
MOV A,20H
CJNE A,#18H,RET0
MOV 20H,#00H
AJMP RET0
RET0:MOV A,21H
CJNE A,51H,B0
MOV A,20H
CJNE A,50H,B0
SETB P3.0
B0:POP ACC
POP PSW
FH:RET1
SSCAN:MOV R6,#05H
SS2:MOV 30H,#20H
MOV 31H,#7EH
MOV R7,#06H
SS1:MOV R1,#21H
MOV A,30H
MOVX @R1,A
MOV R0,31H
MOV A,@R0
MOV DPTR,#SC
MOVC A,@A+DPTR
MOV R1,#22H
MOVX @R1,A
LCALL D1
MOV A,30H
RR A
MOV 30H,A
DEC 31H
DJNZ R7,SS1
DJNZ R6,SS2
RET
SC:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
KEY:MOV 42H,#00H
A0:MOV P1,#0FFH
MOV A,P1
ANL A,38H
MOV R3,A
LCALL DELAY
MOV P1,#0FFH
MOV A,P1
ANL A,#38H
CLR C
SUBB A,R3
JNZ A0
MOV A,R3
CJNE A,#38H,A00
SJMP A0
A00:CJNE A,#30H,T0K2
INC 41H
MOV R2,41H
CJNE R2,#3CH,A1
MOV 41H,#00H
A1:MOV P1,#0FFH
MOV A,P1
ANL A,#08H
JNZ A0
LCALL DELAY
SJMP A1
T0K2:CJNE A,#28H,T0K3
DEC 41H
MOV R2,41H
CJNE R2,#0FFH,A2
MOV 41H,#3BH
A2: MOV P1,#0FFH
MOV A,P1
ANL A,#10H
JNZ A0
LCALL DELAY
SJMP A2
TOK3: CJNE A,#18H,A0
AA: MOV P1,#0FFH
MOV A,P1
ANL A,#20H
JNZ A3
LCALL DELAY
SJMP AA
A3: MOV P1,#0FFH
MOV A,P1
ANL A,#38H
MOV R3,A
LCALL DELAY
MOV P1,#0FFH
MOV A,P1
ANL A,#38H
CLR C
SUBB A,R3
JNZ A3
MOV A,R3
CJNE A,#38H,A33
SJMP A3
A33: CJNE A,#30H,TO2
INC 40H
MOV R2,40H
CJNE R2,#18H,A4
MOV 40H,#00H
A4: MOV P1,#0FFH
MOV A,P1
ANL A,#08H
JNZ A3
LCALL DELAY
SJMP A4
TO2: CJNE A,#28H,TO3
DEC 40H
MOV R2,40H
CJNE R2,#0FFH,A5
MOV 40H,#17H
A5: MOV P1,#0FFH
MOV A,P1
ANL A,#10H
JNZ A3
LCALL DELAY
SJMP A5
TO3: CJNE A,#18H,A3
RET
KEY0: MOV 41H,21H
MOV 40H,20H
CLR TR0
ACALL KEY
CLR PSW.5
MOV 22H,42H
MOV 21H,41H
MOV 20H,40H
MOV TL0,#0B7H
MOV TH0,#3CH
SETB TR0
RET
KEY1: MOV 41H,51H
MOV 40H,50H
LCALL KEY
CLR 7FH
MOV 51H,41H
MOV 50H,40H
RET
D1: MOV R4,#02H
D11: MOV R5,#0FFH
DJNZ R5,$
DJNZ R4,D11
RET
DELAY: PUSH ACC
LCALL CUTIN1
LCALL SSCAN
POP ACC
RET
程序中的一些存储单元的定义如下:
◇ 20H~22H:时、分、秒单元;
◇ 40H~42H:校时或闹钟校时期间的时、分、秒单元;
◇ 50H~51H:起闹时间的时、分单元;
◇ 79H~7EH:显示缓冲区;
◇ 用户标志位F0:校时标志,当F0=1时,表示校时;
◇ 位7FH:闹钟校时标志,当7FH=1时,表示闹钟校时;
5元器件清单
| 名称 | 数量 |
| 8031 | 1 |
| 74LS373 (地址锁存器) | 1 |
| 74LS1 (移位寄存器) | 1 |
| 27 | 1 |
| 7406 | 9 |
| 7404 | 6 |
| RES(10欧姆) | 13 |
| 6位LED显示器 | 1 |
| 12位键盘 | 1 |
| CAP(1.5P) | 2 |
| SW-PB(开关) | 1 |
| SW-SPST(开光) | 2 |
| CRYSTAL.LIB (11.000MHz 晶体振荡器) | 1 |
| ELECTR01 (10uf) | 1 |
短短的一个星期就快过去了,终于完成单片机课程设计了。从开始的一头雾水到现在的完成设计,感觉真的过了很久。
在课程设计的过程中,开始一看到题目“智能电脑钟”感觉无从下手,便在图书馆,网上查有关智能电脑钟的各种资料。发现自己对所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,对以前所学过的知识不仅温习了一遍,更加深了理解。
设计智能电脑钟所用的8031、74LS373、74LS1、2746在单片机课上都学过,不过到了真的要把它们连接在一起用的时候却有好多东西不会,才发现理论与实践相差真的太多了。有很多知识也忘了,通过这次设计对8031、74LS373、74LS1、2746的接口和性质有了更深的理解。智能电脑钟还要设置键盘,这个刚开始也不知道,在网上查了很多资料终于学会了。
硬件电路好了,还要设计相应的软件。软件当然是要用汇编语言了。在单片机课上所学的都是设计一个小小的程序,一个智能电脑钟有那么多功能都需要程序来实现,所以需要设计一个既复杂又长的程序。开始的时候也是无从下手,查了好多别人设计的程序,看看他们怎么设计的,最后才根据智能电脑钟硬件电路的特点设计好了程序。
一个星期的课程设计真的学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和思考的能力。
7总电路图
8参考文献
◇ 郝迷振,王冠华.智能电脑钟.天津轻工业学院.5-6页.
◇ 胡汉才.单片机原理及接口技术.清华大学出版社.
◇ 张俊谟.单片机中级教程.北航出版社.
◇ 李全利.单片机原理及接口技术.高等教育出版社.
◇ http://wenku.baidu.com/view/ca9a3d86bceb19e8b8f6ba49.html
