罗凯.docx

上传人:b****8 文档编号:28505212 上传时间:2023-07-16 格式:DOCX 页数:32 大小:368.62KB
下载 相关 举报
罗凯.docx_第1页
第1页 / 共32页
罗凯.docx_第2页
第2页 / 共32页
罗凯.docx_第3页
第3页 / 共32页
罗凯.docx_第4页
第4页 / 共32页
罗凯.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

罗凯.docx

《罗凯.docx》由会员分享,可在线阅读,更多相关《罗凯.docx(32页珍藏版)》请在冰豆网上搜索。

罗凯.docx

罗凯

 

济源职业技术学院

毕业设计

 

题目

单片机作息时间控制系统

系别

电气工程系 

专业

  电气自动化         

班级

电气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.对象选择器窗口

通过对象选择按钮,从元

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1