打铃器.docx
- 文档编号:18396234
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:53
- 大小:1.25MB
打铃器.docx
《打铃器.docx》由会员分享,可在线阅读,更多相关《打铃器.docx(53页珍藏版)》请在冰点文库上搜索。
打铃器
生产实习报告
自动打铃器
学号:
姓名:
专业:
指导教师:
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 打铃