打铃器.docx

上传人:b****0 文档编号:18396234 上传时间:2023-08-16 格式:DOCX 页数:53 大小:1.25MB
下载 相关 举报
打铃器.docx_第1页
第1页 / 共53页
打铃器.docx_第2页
第2页 / 共53页
打铃器.docx_第3页
第3页 / 共53页
打铃器.docx_第4页
第4页 / 共53页
打铃器.docx_第5页
第5页 / 共53页
打铃器.docx_第6页
第6页 / 共53页
打铃器.docx_第7页
第7页 / 共53页
打铃器.docx_第8页
第8页 / 共53页
打铃器.docx_第9页
第9页 / 共53页
打铃器.docx_第10页
第10页 / 共53页
打铃器.docx_第11页
第11页 / 共53页
打铃器.docx_第12页
第12页 / 共53页
打铃器.docx_第13页
第13页 / 共53页
打铃器.docx_第14页
第14页 / 共53页
打铃器.docx_第15页
第15页 / 共53页
打铃器.docx_第16页
第16页 / 共53页
打铃器.docx_第17页
第17页 / 共53页
打铃器.docx_第18页
第18页 / 共53页
打铃器.docx_第19页
第19页 / 共53页
打铃器.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

打铃器.docx

《打铃器.docx》由会员分享,可在线阅读,更多相关《打铃器.docx(53页珍藏版)》请在冰点文库上搜索。

打铃器.docx

打铃器

生产实习报告

自动打铃器

 

学号:

姓名:

专业:

指导教师:

 

2011年12月13日

摘要

自动打铃器可设定打铃的时间,性能可靠,外形美观,广泛使用于学校、机关、工厂、部队、医院、车站等单位,是自动化的工具。

打铃最原始是由人来打铃,而随着科技的增长对打铃的准确性和实时性有着越来越高的要求了,对于人工打铃会因为人的主观原因造成许多的误差,而由电子控制代替人工控制即可以节省人力,而且电子没有人的疲劳感,对于一项重复工作电子没有人的厌恶感。

文章介绍了一种以8951单片机为核心片可编程可擦除只读存储器并带有数码LED显示时、分、秒和以指示灯做标志的按键校时自动打铃

 

关键词:

打铃器、自动化、电子、单片机、存储器、数码管

 

一、引言

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。

用单片机控制的自动打铃器,充分发挥单片机体积小,价格便宜,功耗低可靠性好等特点。

可用于学校作息,方便了广大师生。

二、总体设计方案

1.设计思路

利用单片机及定时器设计的一个时钟,在每次秒加1的计时过程中,都与规定的时间作比较,如果相等就进行开关电铃,不等则返回。

2.总体设计框图

图1总体设计框图

三、设计原理分析

1.校时模式

按下K1(模式选择键),将模式选择为校时模式(模式指示灯黄灯亮),K2,K3,K4分别为时钟加1键,分钟加1键,秒钟加1键,K5无用。

2.定时模式

按下K1(模式选择键),将模式选择为定时模式(模式指示灯绿灯亮),K2为定时器组选择(本装置有24组定时器)键,K3,K4分别为定时器时钟加1键和定时器分钟加1键,K5为定时器状态选择键,每按K5一次,此组的定时器状态改变一次,并将此组数据存入内部存储器中。

3.工作模式

按下K1(模式选择键),将模式选择为工作模式(模式指示灯红灯亮),K2,K3,K4,K5无用。

此模式为正常工作模式

4.锁存器74HC573相关介绍

74HC573是一种八进制三态非反转透明锁存器,是一种高性能硅门CMOS器件。

输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。

当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。

当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。

  ×\u36755X出能直接接到CMOS,NMOS和TTL接口上

  ×\u25805X作电压范围:

2.0V~6.0V

  ×\u20302X输入电流:

1.0uA

×CMOS器件的高噪声抵抗特性

5.89C51单片机相关介绍

89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。

89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

  P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

  P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

  P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

  P3口也可作为AT89C51的一些特殊功能口,如下表所示:

  P3.0RXD(串行输入口)

  P3.1TXD(串行输出口)

  P3.2/INT0(外部中断0)

  P3.3/INT1(外部中断1)

  P3.4T0(记时器0外部输入)

  P3.5T1(记时器1外部输入)

  P3.6/WR(外部数据存储器写选通)

  P3.7/RD(外部数据存储器读选通)

  P3口同时为闪烁编程和编程校验接收一些控制信号。

  RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

  ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

  /PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

  /EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

  XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

  XTAL2:

来自反向振荡器的输出。

6.键盘、指示灯模块

利用5个按键控制打铃器的工作状态,K1选择模式,K2选择定时器组和时加1,K3分加1,K4秒加1,K5作为定时器状态存储按键,K1—K5分别接P0.3—P0.7,用红绿黄三个发光二极管做指示灯,分别接P0.0—P0.2,红灯代表正常工作模式,黄灯表示校时模式,绿灯表示定时模式。

图2键盘、指示灯模块

7.时钟和复位模块

图3时钟和复位模块

8.显示模块

根据设计要求系统设置了8个共阳LED,数码管显示电路使用74HC573为锁存器进行数码管动态显示功能。

8个LED八段(a、b、c、d、e、f、g、dp),数码管分别显示:

“时”—“分”—“秒”。

因为该系统采用共阳极数码管,所以其公共端接高电平。

图4显示模块

9.打铃模块

打铃电路(接P3.7)当前时间与程序设定时间相同时,P3.7端输出低电平,则打铃。

每次响铃时间10s。

图5打铃模块

10.总硬件图(附录)

四、程序部分

1.程序分为五部分

1.初始化程序,2.键值处理程序,3.中断程序,4.显示程序,5.计时程序

2.部分寄存器及按键说明

28H:

扫描指针寄存器

20H--25H:

显示缓存寄存器

R6:

时钟寄存器

R5:

分钟寄存器

R4:

秒钟寄存器

K1:

模式选择键

K2:

时加1(定时器组加1)键

K3:

分加1(定时器时加1)键

K4:

秒加1(定时器分加1)键

K5:

定时器状态改变既存储键

3.程序流程图

图6总体软件流程图

图7校时及显示流程图

五、实习实践

1.实际硬件图

图8HY510开发板

2.实际程序

(1)主程

图9主程流程图

;******************赋值******************

K1BITP3.3

K2BITP3.2

K3BITP3.1

K4BITP3.0

FLAG_SBIT00H

FLAG_MBIT01H

FLAG_HBIT02H

IT1_FLAGBIT03H

IO_DATABITP0.1

SCLKBITP0.0

RSTBITP0.2

BitCntDATA41h;数据位计数器

ByteCntDATA42h;数据字节计数器

CommandDATA43h;命令字节地址

RcvDatDATA44H;接收数据缓冲区

XmtDatDATA45H;发送数据缓冲区

D24EQU24H;判断打铃时间比较标志

D23EQU23H;打铃次数存储区

HOUREQU30H

MINUTEEQU31H

SECONDEQU32H

DISPEQU33H

POSITIONEQU34H

HIGH_EQU35H

LOW_EQU36H

ROWEQU37H;"-"字符

IT0TIMESEQU38H;中断次数

IT1TIMESEQU39H

SETVALUEEQU40H;闪灯位置

;***************汇编起始地址********************

ORG0000H

AJMPSTART

ORG000BH

LJMPIT0TIME

ORG001BH

LJMPIT1TIME

ORG0040H

START:

MOVD23,#2CH

MOVD24,#00H

MOVSP,#60H

LCALLRead_time

MOVCommand,#80h;命令字节为80

MOVByteCnt,#1;单字节传送模式

MOVR0,#XmtDat;数据地址覆给R0

MOVXmtDat,#00h;数据内容为0振荡器工作允许

ACALLSend_Byte;调用写入数据子程序

MOVTMOD,#11H

MOVTH0,#3CH

MOVTL0,#0B0H

MOVTH1,#3CH

MOVTL1,#0B0H

MOVIT0TIMES,#20

MOVIT1TIMES,#5

MOVSETVALUE,#0

SETBTR0

SETBEA

SETBET0

;******************主程******************

MAIN:

ACALLKEY

ACALLTIMEFIX

MOVA,HOUR

ACALLHTOLED

MOVPOSITION,#01H

ACALLTIMEDISP

MOVA,MINUTE

ACALLHTOLED

MOVPOSITION,#08H

ACALLTIMEDISP

MOVA,SECOND

ACALLHTOLED

MOVPOSITION,#01000000B

ACALLTIMEDISP

ACALLTIMEDISP_

ACALLDLBJ

ACALLSDDL

AJMPMAIN

(2)校时子程

图10校时显示程序

;******************时间矫正********************

TIMEFIX:

MOVA,SECOND

CJNEA,#60,OK_

MOVSECOND,#00H

AJMPS_OK

OK_:

JCS_OK

MOVSECOND,#00H

S_OK:

MOVA,MINUTE

CJNEA,#60,OK__

MOVMINUTE,#00H

OK__:

JCM_OK

MOVMINUTE,#00H

M_OK:

MOVA,HOUR

CJNEA,#24,OK___

MOVHOUR,#00H

AJMPH_OK

OK___:

JCH_OK

NOP

NOP

NOP

MOVHOUR,#00H

H_OK:

RET

;*****************发送数据程序************************

Send_Byte:

CLRRST;复位引脚为低电平所有数据传送终止

NOP

CLRSCLK;清时钟总线

NOP

SETBRST;复位引脚为高电平逻辑控制有效

NOP

MOVA,Command;准备发送命令字节

MOVBitCnt,#08h;传送位数为8

S_Byte0:

RRCA;将最低位传送给进位位C

MOVIO_DATA,C;位传送至数据总线

NOP

SETBSCLK;时钟上升沿发送数据有效

NOP

CLRSCLK;清时钟总线

DJNZBitCnt,S_Byte0;位传送未完毕则继续

NOP

S_Byte1:

;准备发送数据

MOVA,@R0;传送数据过程与传送命令相同

MOVBitCnt,#08h

S_Byte2:

RRCA

MOVIO_DATA,C

NOP

SETBSCLK

NOP

CLRSCLK

DJNZBitCnt,S_Byte2

INCR0;发送数据的内存地址加1

DJNZByteCnt,S_Byte1;字节传送未完毕则继续

NOP

CLRRST;逻辑操作完毕清RST

RET

;**********************按键处理***************************

KEY:

MOVP3,#0FFH

JBK1,OUT1

LCALLDEL10MS

JBK1,OUT1

nop

nop

nop

JNBK1,$

CLRET0

CLRTR0

SETBET1

SETBTR1

MOVSETVALUE,#0

BUTTON:

LCALLPRESSBUTTON

ACALLTIMEFIX

JBFLAG_H,H_SHAN

MOVA,HOUR

ACALLHTOLED

AJMPHH

H_SHAN:

MOVHIGH_,#0FFH

MOVLOW_,#0FFH

NOP

NOP

NOP

HH:

MOVPOSITION,#01H

ACALLTIMEDISP

NOP

NOP

NOP

JBFLAG_M,M_SHAN

MOVA,MINUTE

ACALLHTOLED

AJMPMM

M_SHAN:

MOVHIGH_,#0FFH

MOVLOW_,#0FFH

NOP

NOP

NOP

MM:

MOVPOSITION,#08H

ACALLTIMEDISP

NOP

NOP

NOP

JBFLAG_S,S_SHAN

MOVA,SECOND

ACALLHTOLED

AJMPSS

S_SHAN:

MOVHIGH_,#0FFH

MOVLOW_,#0FFH

NOP

NOP

NOP

SS:

MOVPOSITION,#40H

ACALLTIMEDISP

NOP

NOP

NOP

ACALLTIMEDISP_

AJMPBUTTON

OUT1:

RET

;****************按键判别子程************

PRESSBUTTON:

MOVP3,#0FFH

JBK1,NEXT

LCALLDEL10MS

nop

nop

nop

JBK1,OUT2

JNBK1,$;应该重新设置显示内容

CLRTR1

CLRET1

SETBTR0

SETBET0

LCALLWRITE_TIME

LJMPMAIN

NEXT:

JBK2,NEXT1

LCALLDEL10MS

JBK2,OUT2

JNBK2,$

LJMPKEYK2;转入K2键处理子程

NEXT1:

JBK3,OUT2

LCALLDEL10MS

JBK3,OUT2

JNBK3,$

LJMPKEYK3;转入K3键处理子程

OUT2:

RET

DEL10MS:

MOVR6,#20

LP1:

MOVR7,#250

DJNZR7,$

DJNZR6,LP1

RET

;***************按键处理子程******************

KEYK2:

MOVA,SETVALUE

INCA

CJNEA,#3H,BOL

SZERO:

MOVSETVALUE,#00H

MOVP3,#0FFH

JNBK2,$

NOP

NOP

NOP

LJMPBUTTON

BOL:

JNCSZERO

ADD1:

MOVSETVALUE,A

MOVP3,#0FFH

JNBK2,$

NOP

NOP

NOP

LJMPBUTTON

KEYK3:

MOVA,SETVALUE

CJNEA,#0,BOL1

INCSECOND

NOP

NOP

NOP

AJMPBUTTON

BOL1:

CJNEA,#1,BOL2

INCMINUTE

NOP

NOP

NOP

AJMPBUTTON

BOL2:

CJNEA,#2,OUTK

INCHOUR

OUTK:

NOP

NOP

NOP

AJMPBUTTON

;********************数码管显示子程**********************

TIMEDISP:

MOVDPTR,#DISPTAB

MOVR7,#2

MOVR0,#HIGH_

HMS:

MOVA,@R0

MOVDISP,A

ACALLDISP573

ACALLDELAYDISP

MOVA,POSITION

RLA

MOVPOSITION,A

INCR0

DJNZR7,HMS

RET

TIMEDISP_:

MOVA,#00000100B

MOVR7,#2

THERR:

MOVDISP,0BFH

MOVPOSITION,A

ACALLDISP573

ACALLDELAYDISP

RLA

RLA

RLA

DJNZR7,THERR

RET

;******************二进制转LED显示**********************

HTOLED:

MOVB,#0AH

DIVAB

MOVR2,A

MOVR3,B

MOVDPTR,#DISPTAB

MOVA,R2

MOVCA,@A+DPTR

MOVHIGH_,A

MOVA,R3

MOVCA,@A+DPTR

MOVLOW_,A

RET

;****************573显示延时子程************************

DELAYDISP:

MOVR5,#2

LP_DISP:

MOVR6,#250

DJNZR6,$

DJNZR5,LP_DISP

RET

;******************573显示子程***************************

DISP573:

MOVP1,DISP

SETBP2.0

NOP

CLRP2.0

MOVP1,POSITION

SETBP2.1

NOP

CLRP2.1

RET

3.STC芯片下载

图11STC芯片下载界面

4.程序清单

;******************赋值******************

K1BITP3.3

K2BITP3.2

K3BITP3.1

K4BITP3.0

FLAG_SBIT00H

FLAG_MBIT01H

FLAG_HBIT02H

IT1_FLAGBIT03H

IO_DATABITP0.1

SCLKBITP0.0

RSTBITP0.2

BitCntDATA41h;数据位计数器

ByteCntDATA42h;数据字节计数器

CommandDATA43h;命令字节地址

RcvDatDATA44H;接收数据缓冲区

XmtDatDATA45H;发送数据缓冲区

D24EQU24H;判断打铃时间比较标志

D23EQU23H;打铃次数存储区

HOUREQU30H

MINUTEEQU31H

SECONDEQU32H

DISPEQU33H

POSITIONEQU34H

HIGH_EQU35H

LOW_EQU36H

ROWEQU37H;"-"字符

IT0TIMESEQU38H;中断次数

IT1TIMESEQU39H

SETVALUEEQU40H;闪灯位置

;***************汇编起始地址********************

ORG0000H

AJMPSTART

ORG000BH

LJMPIT0TIME

ORG001BH

LJMPIT1TIME

ORG0040H

START:

MOVD23,#2CH

MOVD24,#00H

MOVSP,#60H

LCALLRead_time

MOVCommand,#80h;

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2