罗凯.docx
《罗凯.docx》由会员分享,可在线阅读,更多相关《罗凯.docx(32页珍藏版)》请在冰豆网上搜索。
罗凯
济源职业技术学院
毕业设计
题目
单片机作息时间控制系统
系别
电气工程系
专业
电气自动化
班级
电气0801
姓名
罗凯
学号
08040138
指导教师
任艳艳
日期
2010年12月21日
设计任务书
设计题目:
作息时间的控制
设计要求:
1、作息时间能控制电铃。
2、作息时间能启动和关闭放音机,同时用6位七段显示器来显示现在的时间.
3、显示格式为"时分秒"从左到右依次显示。
4、带有设置功能的按键,可以设置现在的时间以及显示定时设置时间,一旦设置时间到则运行相应的程序发出声响,同时继电器启动,可以控制放音机开。
设计进度要求:
第一周:
领取题目,分析设计题目原理及设计思路
第二周:
去图书倌查阅资料,制定大纲
第三周:
编写程序,拟定论文
第四周:
上机调试,验证实验效果
第五周:
根据设计要求进行编排电子稿
第六周:
由指导老师审核,进行更改指正
第七周:
交正规电子稿,由指导老师评阅
第八周:
进行毕业论文答辩
指导教师(签名):
_____________
摘要
MCS-51系列的单片机是现实生活用到最广泛的。
本作息时间控制器系统以AT89C51单片机为核心,通过软件设计基本能够实现对学校作息时间的控制的一个模型。
通过改变单片机程序能够灵活改变冬、夏季作息时间,同时能够实时显示时间。
此控制器模型设置了手动按扭,可以方便对实时显示时间的整分、时、进行校准及对定时时间(作息时间)的调整。
该作息时间控制系统主要用于学校,对于以24小时为周期的开关量进行自动控制。
根据预先设定好的作息表,当作息时间到达时能进行到自动启停控制电路,完成对外部设备的控制如:
蜂鸣器、闪烁灯等。
作息时间控制器包括硬件设计和软件设计,硬件设计包括继电器、存储器和显示接口芯片.软件部分主要是主程序设计和软硬件结合在一起,先调试子程序,然后逐级叠加调试,最后系统调试,最后系统调试通过,时间控制系统可以准确的显示时间并准确的实现闹铃的控制。
关键词:
AT89C51,时间控制器,段码,显示
目录
摘要3
目录4
1总设计方案5
1.1系统总体方案5
1.2系统设计方框图5
2硬件设计6
2.1单片机及程序存储器选择6
2.2复位电路的设计7
2.3蜂鸣器电路设计7
2.4晶振电路的设计8
3软件设计9
3.1划分模块9
3.2程序流程图9
3.3汇编程序11
4proteus软件仿真22
4.1进入ProteusISIS22
4.2基本操作22
4.3仿真效果29
致谢31
参考文献32
1总设计方案
1.1系统总体方案
(1)系统分析:
基于单片机系统的作息时间控制器的基本结构框图如图1.1所示。
该系统主要包含输入控制电路、晶振复位电路、LED显示电路等外围电路组成。
(2)统的功能划分:
硬件功能:
按键输入控制电路、晶振、复位电路、LED显示器段码驱动电路、LED显示器位码驱动电路、4位LED显示电路、蜂鸣器电路都是有硬件功能来实现。
软件功能:
LED动态显示、时钟计时、按键判断和处理都是有软件功能来实现。
(3)机型器件选择:
单片机采用AT89C51型号、轻触按键、发光二极管、4位七段LED数码管(共阴极)、蜂鸣器。
1.2系统设计方框图
基于单片机的作息时间控制器其系统方框图如图1.1所示。
由图1.1可知,硬件电路有8个部分组成,即单片机、按键输入电路、单片机时钟电路、复位电路、LED显示器段码驱动电路、LED显示器位码驱动电路、4位LED显示电路、蜂鸣器电路。
图1.1系统方框图
2硬件设计
2.1单片机及程序存储器选择
在本设计中由于只是一个简单的作息时间控制系统,所要的程序不是很复杂,故程序的所占的容量不是很大,只有几个KB的程序,所以我们不需要选取很大程序存储器的单片机,更不用说开扩展外部程序存储器了。
这里我们选用AT89C51的单片机来作为我们的核心器件,是因为它内部有4KB的FLASH存储器,可供我们应用及反复擦写,其可供我们反复擦写1000次,因此它内部的资源已完全可以够我们本次的设计应用,故最终我们选择了该芯片作为本设计的核心器件。
引脚如图2.1所示,各引脚功能如下:
图2.1AT89C51引脚功能介绍
VCC+5V
GND地
ALE地址锁存允许
/PSEN程序存储器允许
EA/VPP为0-访问外部程序存储器为1-访问内部程序存储器
RST复位信号输入
XTAL1、XTAL2外部晶振
P0.0~P0.7I/O端口(P0口)
P1.0~P1.7I/O端口(P1口)
P2.0~P2.7I/O端口(P2口)
P3.0~P3.7I/O端口(P3口)
2.2复位电路的设计
单片机在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循环状态,在这种情况下都需要复位。
复位的作用是使中央处理器CPU以及其他功能部件都恢复到一个确定的初始状态,并从这个状态重新开始工作。
AT89C51单片机的复位靠外部电路实现,信号由RESET(RST)引脚输入,高电平有效,在振荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位。
复位后,PC程序计数器的内容为0000H,片内RAM中内容不变。
复位电路一般有上电复位、手动开关复位和自动复位电路3种,如图2.2所示。
而本设计采用的是手动复位方式,如图2.2所示:
图2.2单片机复位电路
2.3蜂鸣器电路设计
设计要求定时时间到,要有到时提示。
可以选择一只蜂鸣器(HA)作为三极管VT1的集电极负载,当VT1导通时,蜂鸣器发出呜叫声;VT1截止时,蜂鸣器不发声。
R5是限流电阻。
图2.3为蜂鸣器驱动电路。
图2.3蜂鸣器驱动电路
蜂鸣器用三极管VT1的基极接到单片机的P1.7管脚。
当P1.7=0时,VT1导通,使蜂鸣器的两个管脚间获得将近5V的直流电压,蜂鸣器中有电流通过,而产生蜂鸣声;当P1.7=1时,VT1截止,蜂鸣器的两个管脚间的直流电压接近于0,蜂鸣器不发声。
驱动电路如图2.3所示:
图2.3蜂鸣器驱动电路
2.4晶振电路的设计
单片机的晶振电路,如图2.4所示
图2.4晶振电路
石英晶体也连接在晶振引脚的输入和输出之间,等效为一个并联谐振回路,振荡频率应该是石英晶体的并联谐振频率。
晶体旁边的两个电容接地,实际上就是电容三点式电路的分压电容,接地点就是分压点。
以接地点即分压点为参考点,振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看,形成一个正反馈以保证电路持续振荡。
3软件设计
3.1划分模块
根据设计要求,定时闹钟程序可分为以下几个模块:
1)显示时间的设置;
2)闹钟时间的设置:
4)定时时间的响应。
3.2程序流程图
如下图3.1所示
图3.1程序流程图
3.3汇编程序
ORG0000H
LJMPSTART
ORG000BH
LJMPTIME
;;;;;;;;初始化;;;;;;;;
START:
MOVSP,#50H
MOV20H,#00H;定义秒
MOV21H,#00H;定义分
MOV22H,#00H;定义时
MOV23H,#01H;定义闹钟分钟
MOV24H,#01H;定义闹钟小时
MOV25H,#00H
MOV26H,#01H
MOV30H,#00H;BCDSECOND
MOV31H,#00H
MOV32H,#00H;BCDMINUTE
MOV33H,#00H
MOV34H,#00H;BCDHOUR
MOV35H,#00H
MOV36H,#01H
MOV37H,#00H
MOV38H,#01H
MOV39H,#00H
MOV50H,#00H;按键次数
MOVTMOD,#01H;16位计数器
MOVTH0,#03CH;赋初值
MOVTL0,#0B0H
MOVIE,#87H;中断允许
SETBTR0;启动T0
MOVR2,#14H
MOVP2,#0FFH
CLRP3.7
;;;;;;;;主程序;;;;;;;;;
MAIN:
LCALLTIMEPRO;调用闹钟判断
GB:
LCALLDISPLAY1;调用时间显示
JBP1.3,M1;P1.3=1时转移S4没有按下
LCALLSETTIME;调用SETTIME调时子程序
LJMPMAIN
M1:
JBP1.2,M2;P1g.2=1时转移 S3
LCALLSETATIME;调用SETATIME子程序
LJMPMAIN
M2:
JBP1.0,M4;P1.0=1时转移S1
LCALLLOOKATIME;调用LOOKATIME显示闹钟子程序
M4:
LJMPMAIN
;;;;;;;;延时子程序;;;;;;
DELAY:
MOVR4,#030H
DL00:
MOVR5,#0FFH
DL11:
MOVR6,#9H
DL12:
DJNZR6,DL12
DJNZR5,DL11
DJNZR4,DL00
RET
;;;;;;;时间调整;;;;;;;
SETTIME:
;设置时间
L0:
LCALLDISPLAY1
MM1:
JBP1.3,L1;P1.3=1时转移
MOVC,P1.3
JCMM1
LCALLDELAY1;延时
JCMM1
MSTOP1:
MOVC,P1.3;P1.3为0时转移
JNCMSTOP1
LCALLDELAY1;延时
MOVA,50H
INC50H
CJNEA,#00H,HJ1
LJMPL0
HJ1:
MOVC,P1.3
JNCMSTOP1
INC22H;小时自加一
MOVA,22H
CJNEA,#18H,GO12;小时计数循环
MOV22H,#00H;复位
MOV34H,#00H
MOV35H,#00H
LJMPL0
L1:
JBP1.1,L2;P1.1=1时转移
MOVC,P1.1
JCL1
LCALLDELAY1;延时
JCL1
MSTOP2:
MOVC,P1.1;P1.1=0时转移
JNCMSTOP2
LCALLDELAY1;延时
MOVC,P1.1
JNCMSTOP2
INC21H;分钟加一
MOVA,21H
CJNEA,#3CH,GO11;分钟计数循环
MOV21H,#00H;复位
MOV32H,#00H
MOV33H,#00H
LJMPL0
GO11:
MOVB,#0AH
DIVAB
MOV32H,B;将A的低4位存入32单元
MOV33H,A;将A的高4位存入33单元
LJMPL0
GO12:
MOVB,#0AH
DIVAB
MOV34H,B;将A的低4位存入34单元
MOV35H,A;将A的高4位存入35单元
LJMPL0
L2:
JBP1.0,L0;P1.0=1时转移
MOVC,P1.0
JCL2
LCALLDELAY1;延时
MOVC,P1.0
JCL2
STOP1:
MOVC,P1.0;P1.0=0时转移
JNCSTOP1
LCALLDELAY1;延时
MOVC,P1.0
JNCSTOP1
MOV50H,#00H
LJMPMAIN
;;;;;;设置闹钟;;;;;;;;
SETATIME:
LCALLDISPLAY2;调用DISPLAY2显示闹钟
N0:
LCALLDISPLAY2
MM2:
JBP1.2,N1;P1.2=1时转移
MOVC,P1.2
JCMM2
LCALLDELAY1;延时
JCMM2
MSTOP3:
MOVC,P1.2;P1.2=0时转移
JNCMSTOP3
LCALLDELAY1;延时
MOVA,50H
INC50H
CJNEA,#00H,HJ2
LJMPN0
HJ2:
MOVC,P1.2
JNCMSTOP3
INC24H;小时加一
MOVA,24H
CJNEA,#24,GO22;小时计数循环
MOV24H,#00H;复位
MOV38H,#00H
MOV39H,#00H
LJMPN0
N1:
JBP1.1,N2;P1.1=1时转移
MOVC,P1.1
JCN1
LCALLDELAY1;延时
JCN1
MSTOP4:
MOVC,P1.1;P1.1=0时转移
JNCMSTOP4
LCALLDELAY1;延时
MOVC,P1.1
JNCMSTOP4
INC23H;分钟加一
MOVA,23H
CJNEA,#60,GO21;分钟计数循环
MOV23H,#00H;复位
MOV36H,#00H
MOV37H,#00H
LJMPN0
GO21:
MOVB,#0AH
DIVAB
MOV36H,B;将A的低4位存入36单元
MOV37H,A;将A的高4位存入37单元
LJMPN0
GO22:
MOVB,#0AH
DIVAB
MOV38H,B;将A的低4位存入38单元
MOV39H,A;将A的高4位存入39单元
LJMPN0
N2:
JBP1.0,N0;P1.0=1时转移
MOVC,P1.0
JCN2
LCALLDELAY1;延时
MOVC,P1.0
JCN2
STOP2:
MOVC,P1.0
JNCSTOP2
LCALLDELAY1
MOVC,P1.0
JNCSTOP2
MOV50H,#00H
LJMPMAIN
TIMEPRO:
MOVA,21H
MOVB,23H
CJNEA,B,BK;判断定时闹钟的分钟
MOVA,22H
MOVB,24H
CJNEA,B,BK;判断定时闹钟的小时
SETB25H.0
MOVC,25H.0
LCALLTIMEOUT;调用TIMEOUT
BK:
RET
TIMEOUT:
X1:
LCALLBZ;调用喇叭响应程序
LCALLDISPLAY2;延时
CLR25H.0;调用喇叭响应程序结束
JBP1.0,X1;P1.0=1时转移
LCALLDELAY;延时
CLR25H.0
LJMPDISPLAY1
BZ:
CLRP3.7
MOVR7,#250;喇叭响应时间
T2:
MOVR6,#124
T3:
DJNZR6,T3
DJNZR7,T2
SETBP3.7
RET
LOOKATIME:
LCALLDISPLAY2
MM:
JNBP1.0,LOOKATIME
LCALLDELAY1
LJMPMAIN
DELAY1:
MOVR4,#14H;时间延时
DL001:
MOVR5,#0FFH
DL111:
DJNZR5,DL111
DJNZR4,DL001
RET
;***********定时**************
TIME:
PUSHACC;保护现场
PUSHPSW
MOVTH0,#03CH;初值
MOVTL0,#0B0H
DJNZR2,RET0
MOVR2,#14H
MOVA,20H
CLRC
INCA;秒自加一
CJNEA,#3CH,GO1;秒计数循环
MOV20H,#0;复位
MOV30H,#0
MOV31H,#0
MOVA,21H
INCA;分钟自加一
CJNEA,#3CH,GO2;分钟计数循环
MOV21H,#0H;复位
MOV32H,#0
MOV33H,#0
MOVA,22H
INCA;小时自加一
CJNEA,#18H,GO3;小时计数循环
MOV22H,#00H;复位
MOV34H,#0
MOV35H,#0
AJMPRET0
GO1:
MOV20H,A
MOVB,#0AH
DIVAB
MOV31H,A;将A的低4位存入31单元
MOV30H,B;将A的高4位存入30单元
AJMPRET0
GO2:
MOV21H,A
MOVB,#0AH
DIVAB
MOV33H,A;将A的低4位存入33单元
MOV32H,B;将A的高4位存入32单元
AJMPRET0
GO3:
MOV22H,A
MOVB,#0AH
DIVAB
MOV35H,A;将A的低4位存入35单元
MOV34H,B;将A的高4位存入34单元
AJMPRET0
RET0:
POPPSW;恢复现场
POPACC
RETI
;;;******显示子程序**********
DISPLAY1:
MOVR0,#30H
MOVR3,#0FEH
MOVA,R3
PLAY1:
MOVP2,A
MOVA,@R0;取要显示的数据
MOVDPTR,#DSEG1;指向字形段码首地址
MOVCA,@A+DPTR
CPLA;查表取字形段码
MOVP0,A;指向P0口
LCALLDL1
MOVP2,#0FFH
MOVA,R3;判断是否显示到最低位
RLA;左移一位
JNBACC.6,LD1
INCR0;缓冲器地址加一
MOVR3,A
LJMPPLAY1
LD1:
RET
DISPLAY2:
PUSHACC;保护现场
PUSHPSW
MOVR0,#36H
MOVR3,#0FBH
MOVA,R3
PLAY2:
MOVP2,A
MOVA,@R0;取要显示的数据
MOVDPTR,#DSEG1;指向字形段码首地址
MOVCA,@A+DPTR
CPLA;查表取字形段码
MOVP0,A;指向P0口
LCALLDL1;调用DL1
MOVP2,#0FFH
MOVA,R3;判断是否显示到最低位
RLA;左移一位
JNBACC.6,LD2
INCR0;缓冲器地址加一
MOVR3,A
LJMPPLAY2;调用PLAY2
LD2:
POPPSW
POPACC;恢复现场
RET
;;;;;;;DELAY;;;;;;;;
DL1:
MOVR7,#20H
DL:
MOVR6,#20H
DL6:
DJNZR6,$
DJNZR7,DL
RET
DSEG1:
DB3FH,06H,5BH,4FH,66H;七段码表
DB6DH,7DH,07H,7FH,6FH
END
4proteus软件仿真
4.1进入ProteusISIS
双击桌面上的ISIS6Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus6Professional”→“ISIS6Professional”,出现如图4.1所示屏幕,表明进入ProteusISIS集成环境。
图4.1启动时的画面
4.2基本操作
1.图形编辑窗口
在图形编辑窗口内完成电路原理图的编辑和绘制。
为了方便作图
坐标系统(CO-ORDINATESYSTEM)ISIS中坐标系统的基本单位是10nm,主要是为了和ProteusARES保持一致。
但坐标系统的识别(read-out)单位被限制在1th。
坐标原点默认在图形编辑区的中间,图形的坐标值能够显示在屏幕的右下角的状态栏中。
点状栅格(TheDotGrid)与捕捉到栅格(SnappingtoaGrid)编辑窗口内有点状的栅格,可以通过View菜单的Grid命令在打开和关闭间切换。
点与点之间的间距由当前捕捉的设置决定。
捕捉的尺度可以由View菜单的Snap命令设置,或者直接使用快捷键F4、F3、F2和CTRL+F1。
如图4.2所示。
若键入F3或者通过View菜单的选中Snap100th,
图4.2选项图
你会注意到鼠标在图形编辑窗口内移动时,坐标值是以固定的步长100th变化,这称为捕捉,如果你想要确切地看到捕捉位置,可以使用View菜单的X-Cursor命令,选中后将会在捕捉点显示一个小的或大的交叉十字。
实时捕捉(RealTimeSnap)当鼠标指针指向管脚末端或者导线时,鼠标指针将会被捕捉到这些物体,这种功能被称为实时捕捉,该功能可以使你方便的实现导线和管脚的连接。
可以通过Tools菜单的RealTimeSnap命令或者是CTRL+S切换该功能。
可以通过View菜单的Redraw命令来刷新显示内容,同时预览窗口中的内容也将被刷新。
当执行其它命令导致显示错乱时可以使用该特性恢复显示。
2.视图的缩放与移动
可以通过如下几种方式:
(1)用鼠标左键点击预览窗口中想要显示的位置,这将使编辑窗口显示以鼠标点击处为中心的内容。
(2)在编辑窗口内移动鼠标,按下SHIFT键,用鼠标“撞击”边框,这会使显示平移。
我们把这称为Shift-Pan。
(3)用鼠标指向编辑窗口并按?
缩放键或者操作鼠标的滚动键,会以鼠标指针位置为中心重新显示。
3.预览窗口
该窗口通常显示整个电路图的缩略图。
在预览窗口上点击鼠标左键,将会有一个矩形蓝绿框标示出在编辑窗口的中显示的区域。
其他情况下,预览窗口显示将要放置的对象的预览。
这种PlacePreview特性在下列情况下被激活:
● 当一个对象在选择器中被选中
● 当使用旋转或镜像按钮时
● 当为一个可以设定朝向的对象选择类型图标时(例如:
Componenticon,DevicePinicon等等)
● 当放置对象或者执行其他非以上操作时,placepreview会自动消除
● 对象选择器(ObjectSelector)根据由图标决定的当前状态显示不同的内容。
显示对象的类型包括:
设备,终端,管脚,图形符号,标注和图形。
● 在某些状态下,对象选择器有一个Pick切换按钮,点击该按钮可以弹出库元件选取窗体。
通过该窗体可以选择元件并置入对象选择器,在今后绘图时使用。
4.对象选择器窗口
通过对象选择按钮,从元