您好,欢迎来到年旅网。
搜索
您的当前位置:首页自动打铃器设计

自动打铃器设计

来源:年旅网


课程设计说明书 第 1 页

1绪论

在学校生活中,每天上下课都离不开自动打铃电路的使用。自动打铃可以为上下课的学生和 老师们提供时间提醒,同时,也可作为一个提醒学生们作息时间的时间表,让大家有一 个时间意识,形成规律的生物钟,对自身的健康也有很大的好处的。对于那些上课精力 过于集中、知识面拓展比较广的老师的拖堂现象也给了一个下课时间提醒,以免耽误学生们下一节课的上课时间。

随着现代科技的发展,管理水平的完善,具有自动提示功能的打铃器能够为企业节 省人力资源,减少开支,对做到一体化管理具有很大的帮助。而且自动打铃系统不断影 响着我们的学习和生活, 它已被广泛应用于各个学校中, 它能够实现学校的办公自动化,便于学校的管理。用单片机控制的自动打铃器[1],充分发挥了体积小,价格便宜,功耗低 可靠性好等特点,而且具有可改性,用于学校作息,方便了广大师生。目前自动打铃系 统的研究和使用已经非常普及,之所以选这个课题就是看在他的成熟性和普遍性。

现 在各种功能更多、 使用更先进的打铃器层出不穷, 有的还可以以音乐响铃代替传统的 “呤 呤”声,打铃器更多的向着智能型转变。设备的智能化离不开单片机的使用[2]。打铃器作为一个提醒人们时间的设备,自然离不开提供时间的系统,最原始的打铃 器是人工根据时间通过敲钟来提醒,随着技术的发展,开始有了机械时打铃器。随着二 十世纪电子技术的发展和二十一世纪半导体技术和集成电路的发展[2], 电子技术开始渗入 到各行各业。单片机简 单的说就是一款微型的计算机,包含处理器CUP、随机存取存储器RAM、只读存储器ROM、I/O口、串行口等部分[3],可以作为一个系统的主控制器,为控制提供智能化。

因此,该课程设计了一款基于单片机开发的自动打铃系统,使用简单方便、功 能齐全。本次的设计重点在于实现自动打铃系统的基本功能之外,争取设计出亮点,出 新意,对我本身是个不小的挑战,因此对这个课题的研究不管是对于我本身还是对此项目在科技方面的发展都是有很重要的意义。

2自动打铃电路的基本原理

自动打铃系统使用一片微电脑组成一个单片机最小系统完成管理控制工作。输入

课程设计说明书 第 2 页

信号通过键盘输入和红外遥控器两种方法输入,输入的数据储存到储存器中已被在控制过程中调用[4]。一体机有一个显示板,显示板上有5个数码管分别显示时间小时和分钟以及星期,显示板上面有两个状态指示灯和5个数点指示灯分别指示不同的工作状态。一体机上的时钟信号来自专用的时钟IC时钟IC具有万年历功能。在这里仅仅取用其中的部分数据。时钟模块在交流停电状态下由备用电池供电,保证正常的时钟走时。

3设计方案

3.1设计思路

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

打铃控制电路设计如图1所示

+5V 按键 存储器 晶振 VCC P0.0—P0.4 P3.4—P3.7 P0.5—P0.7 P2.0 P1.0—P1.6 P2.1 XTAL1 XTAL2 指示灯 +5V 显示电路 打铃驱动输出TIL113:1/2 光电耦合管 2只双向可控硅4只二极管桥 TLI11:1/2 光电耦合管 220V 电铃

图1总体设计框图

课程设计说明书 第 3 页

4设计原理分析

4.1 校时模式

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

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

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

5硬件设计

5.1时钟与数据储存器

储存器和专用时钟IC均使用IIC通讯方式与单片机通讯,两个IIC器件的地址不同,单片机根据不同的地址分别对不同的器件进行数据传送,储存器AT24C16用来储存键盘或者红外遥控器输入的数据,正常工作时,单片机从储存器中取出数据进行定时比较[8]。DS1307的OUT脚设置成输出1HZ的时钟输出,该输出直接驱动秒点闪烁,同时被单片机的一个输入口检测,当出现输出变化时刷新一次显示屏[9]。 5.2电源供电电路

电源变压器次级是一个双绕组输出,中心抽头为公共端,两个绕组通过桥式整流电路整流后,通过两组对称的滤波电路滤波后,得到正负18V电源为音频功放模块供电,功放模块是本机在功放输出期间的主要耗电器件,12V继电器和内部监听功放的供电通过12V三端稳压器IC7从VDD电源来获得12V电源为继电器供电,IC8再次稳压获取5V电压为单片机供电,IC9再次稳压获得3V电压为语音电路供电,

课程设计说明书 第 4 页

AC220V的交流电源通过35W的电源变压器变压后,经过整流、滤波、稳压后为个部分电路提供电压值不等的电源。供电电路如图2所示。

VDD1IC77812+12VVout31 GNDVinIC878L05Vout3VCC1IC9HT7230+3V3GND225T1112GND2B1AC+3C35104417VX23ACKBP306G-4C36104C282200uC371000u C38103C3322uC39104C401042C31104C272200u GND图4VinVinVoutC3022u VSSGND 图2电源供电电路

5.3键盘显示电路

显示按键电路如图3所示

SM1LGS56PSM2LGS56P显示/按键电路SM3LGS56P SM4LGS56PSM5LGS56PVCCpowpowpowpowpowpowpowpowpowpowR11KoabcdefgoabcdefgoabcdefgoabcdefgoabcdefgVCC835719083571908357190835719083571902121212121R2R3R4R5R6R7R8R91K1K1K1K1K1K1K1KR10R11R12R13R14R15R16R171K1K1K1K1K1K1K1KR18R19R20R21R22R23R24R251K1K1K1K1K1K1K1KR26R27R28R29R30R31R32R331K1K1K1K1K1K1K1KR34R35R36R37R38R39R40R411K1K1K1K1K1K1K1KC1100uLED1 C2104LED2 LG1F1E1D1C1B1A1H1G2F2E2D2C2B2A2H2G3F3E3D3C3B3A3H3G4F4E4D4C4B4A4H4G5F5E5D5C5B5A5H5

345610111213345610111213345610111213345610111213 Q0Q1Q2Q3Q4Q5Q6Q7CLKCLK345610111213P3.2Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7CLKCLKCLKIC1 74HC1ABMRMRMRMRMRABABABABH1G1F1E1D1C1B1A1IC274HC1H2G2F2E2D2C2B2A2H3G3F3E3D3C3B3A3H4G4F4E4D4C4B4A4H5G5F5E5D5C5B5A5VCCR421K321HIC374HC1IC474HC1IC574HC1 C4104C510u63812121212121VCCK1VCCVCC 13K2 K4R461KR471KCZ21234567 8 K5 24K3 K6 K7 22W1J1W123 CZ1123456 7R44VCC1KP3.2VCCR43L1KC61R4512C347u5KCON3Y140W2J2W123104D14148V19014LED3 LED4 5KCON35-2显示/按键电路图 图3显示按键电路 音乐铃声可以通过机内“20W高保真功放”发出音乐铃的声音,也可以通过广播管

课程设计说明书 第 5 页

理通过广播系统发送铃声,此处以通过20W功放来完成打铃、广播和扩音来叙述机内功放的工作过程[10]。

6软件设计

对单片机进行初始化处理,并从时钟模块中读出数据,显示当时的时间。本电

路有两种输入方式,一种是红外遥控器输入,另一种是键盘输入 ,键盘数据采集采用键盘扫描方式进行,红外遥控器输入采用外部中断0中断读出,采用外部中断的目的是能够及时读取红外遥控器信号。对开启定时功能的定时路,微电脑将当前时间与设置储存到储存器中的时间进行比较,当两个时间满足相等的条件后,再从数据中提取对应的开关机数据等根据设置的数据作出相应的管理操作[11]。在设置输入中,当微电脑查询到有键盘数据或者读取到红外遥控器输入数据后,微电脑通过对数据进行鉴别、判断、处理后,根据数据的分类储存到储存器的相应地址中,以备后面的程序从储存器中读出相关的数据使用。 6.1初始化程序:

READ EQU 0 ;读93C46 WRITE EQU 2 ;写入93C46 EWEN EQU 4 ;93C46写入使能 EWDS EQU 6 ;93C46写入禁止 ADR46 EQU 21H ;93C46地址 THIGH EQU 0F8H TLOW EQU 5FH

TIMENEQU 30 ;打铃持续时间(30秒) CS BIT P3.7 ;93C46CS CLK BIT P3.6 ;93C46CLK DI BIT P3.5 ;93C46DI DO BIT P3.4 ;93C46DO ORG 0000H ;主程序起始地址 AJMP START ;跳至主程序

课程设计说明书 第 6 页

ORG 000BH ;TIMER0中断起始地址 AJMP TIM0 ;跳至TIMER0中断子程序 START:MOV SP,#60H ;设置堆栈在60H MOV 28H,#00 ;显示寄存器初值为00 MOV R6,#12H ; “时󰀀寄存器值为12H MOV R5,#00H ;“分”寄存器值为00H MOV R4,#00H ;“秒”寄存器值为00H MOV TMOD,#01H ;设TIMER0为MODE1 MOV TH0,#THIGH ;计时中断为4000微秒 MOV TL0,#TLOW

MOV IE,#82 ;TIMER中断使能 MOV R2,#250 ;中断250次 SETB TR0 ;启动TIMER0 6.2键值处理程序:

LOOP: SETB P0.5 ;工作模式 CLR P0.6 CLR P0.7

JB P0.0,N1 ;K1(模式选择键)按了?不是则跳至N1 ACALL DELAY ;消除抖动

JNB P0.0,$ ;K1(模式选择键)放开了? ACALL DELAY ;消除抖动 AJMP SET ;转到定时模式SET

N1: MOV 2FH,R6 ;将时钟数据载入2FH中 MOV 2EH,R5 ;将分钟数据载入2EH中 MOV ADR46,#00 ;把93C46地址置0 SETB RS0 ;将工作寄存器组选择1区 LOOP1: MOV A,#READ ;读93C46 ACALL TO93c46

课程设计说明书 第 7 页

MOV A,R3 ;取出定时器的状态 ANL A,#01H

CJNE A,#01H,N2 ;定时器为关闭,则跳转至N2 MOV A,R4 ;取出定时器分钟数据

CJNE A,2FH,N2 ;定时器分钟数据与时钟分钟不同则转至N2 MOV A,R5 ;取出定时器时钟数据

CJNE A,2EH,N2 ;定时器时钟数据与时钟时钟不同则转至N2 SETB P2.1 ;定时器时间到,打铃 MOV A,ADR46 ;将93C46地址载入A中

N2: CJNE A,#1EH,N3 ;到定时器数据表表尾?没到转至N3 MOV ADR46,#00 ;到表尾,置93C46地址为表头 AJMP LOOP1 ;转至LOOP1 N3: INC ADR46 ;93C46地址加2 INC ADR46

AJMP LOOP1 ;转至LOOP1 SET: CLR P0.5 ;校时模式 SETB p0.6 CLR P0.7

LOOPS: JB P0.0,N11 ;K1(模式选择键)按了?不是则跳至N11 ACALL DELAY ;消除抖动

JNBP0.0,$ ;K1(模式选择键)放开了? ACALL DELAY ;消除抖动 AJMP SETTIME ;转至SETTIME

N11: JB P0.1,N13 ;K2(时钟加1键)按了?不是则跳至N13 ACALL DELAY ;消除抖动 MOV A,R6 ;将时寄存器的值载入A ADD A,#01H ;A内容加1 DA A ;做十进制调整

MOV R6,A ;将A的值存入时寄存器

课程设计说明书 第 8 页

CJNE A,#24H,N12 ;是否超过24时?不是则跳至N12 MOV R6,#00H ;是则清除时寄存器的值为00 N12: JNB P0.1,$ ;K2(时钟加1键)放开了? ACALL DELAY ;消除抖动

N13: JB P0.2,N15 ;K3(分钟加1键)按了?不是则跳至N15 ACALL DELAY ;消除抖动 MOV A,R5 ;将分寄存器的值载入A ADD A,#01 ;A内容加1 DA A ;做十进制调整

MOV R5,A ;将A的值存入分寄存器

CJNE A,#60H,N14 ;是否超过60分?不是则跳至N14 MOV R5,#00H ;是则清除分寄存器的值为00 N14: JNB P0.2,$ ;K3(分钟加1键)放开了? ACALL DELAY ;消除抖动

N15: JB P0.3,N17 ;K4(秒钟加1键)按了?不是则跳至N17 ACALL DELAY ;消除抖动 MOV A,R4 ;将秒寄存器的值载入A ADD A,#01 ;A内容加1 DA A ;做十进制调整

MOV R4,A ;将A的值存入秒寄存器

CJNE A,#60H,N16 ;是否超过60秒?不是则跳至N16 MOV R4,#00 ;是则清除分寄存器的值为00 N16: JNB P0.3,$ ;K4(秒钟加1键)放开了? ACALL DELAY ;消除抖动 N17: AJMP LOOPS ;转至LOOPS SETTIME:CLR P0.5 ;定时模式 CLR P0.6 SETB P0.7 MOV ADR46,#00H

课程设计说明书 第 9 页

MOV A,#READ ;读93C46地址为ADR46中的数据 ACALL TO9346

LOOPB:ACALL DISP ;调用DISP

JB P0.0,N21 ;K1(模式选择键)按了?不是则跳至N21 ACALL DELAY ;消除抖动

JNB P0.0,$ ;K1(模式选择键)放开了? ACALL DELAY ;消除抖动 AJMP LOOP ;转至LOOP

N21: JB P0.1,N22 ;K2(定时器组加1键)按了?不是则跳至N22 ACALL DELAY ;消除抖动 MOV A,ADR46 ;将地址载入A CLR C ;清除进位位 RRC A ;A右移1位 ADD A,#01H ;地址加1 MOV R6,A ;将A存入R6 CLR C ;清除进位位 RLC A ;A左移1位

MOV ADR46,A ;将A中地址存入ADR46

MOV A,#READ ;读93C46地址为ADR46中的数据 ACALL TO9346

JNB P0.1,$ ;K2(定时器组加1键)放开了? ACALLDELAY ;消除抖动

N22: JB P0.2,N24 ;K3(定时器分钟加1键)按了?不是则跳至N24 ACALLDELAY ;消除抖动

MOV A,R4 ;将定时器分寄存器的值载入A ADD A,#01 ;A内容加1 DA A ;做十进制调整

MOV R4,A ;将A的值存入定时器分寄存器

CJNE A,#60H,N23 ;是否超过60分?不是则跳至N16

课程设计说明书 第 10 页

MOV R4,#00H ;是则清除分寄存器的值为00 N23: JNB P0.2,$ ;K3(定时器分钟加1键)放开了? ACALL DELAY ;消除抖动

N24: JB P0.3,N26 ;K4(定时器时钟加1键)按了?不是则跳至N26 ACALL DELAY ;消除抖动

MOV A,R5 ;将定时器时寄存器的值载入A ADD A,#01H ;A内容加1 DA A ;做十进制调整

MOV R5,A ;将A的值存入定时器时寄存器

CJNE A,#24H,N25 ;是否超过24时?不是则跳至N25 MOV R5,#00 ;是则清除分寄存器的值为00

N25:JNB P0.3,$ ;K4(定时器时钟加1键)放开了? ACALL DELAY ;消除抖动

N26:JB P0.4,N27 ;K5(改变定时器状态存储键)按了?不是则跳至N27 ACALL DELAY ;消除抖动

INC R3 ;改变R3最低位的值(表示定时器的状态,1表示开,0 表示关)

MOV A,#WRITE ;将A的值写入93C46地址为ADR46中 ACALL TO9346

JNB P0.4,$ ;K5(改变定时器状态存储键)放开了? ACALL DELAY ;消除抖动 N27:AJMP LOOPB ;转至LOOPB 6.3读写93C46程序:

TO9346:SETB CS ;CS=1 SETB DI ;DI=1 SETB CLK ;CLK=1 ACALL DELAY CLR CLK ;CLK=0

课程设计说明书 第 11 页

ACALL DELAY MOV DPTR,#JPTBL46 JMP @A+DPTR;

JPTBL46:AJMPSREAD ;读 AJMP SWRITE ;写 AJMP SEWEN ;写使能 AJMP SEWDS ;写禁止

SREAD: MOV A,ADR46 ;地址载入A ADD A,#80H ;10XXXX读指令 ACALL SDT46 ;读入地址

ACALL RDT46 ;读定时器时钟数据 MOV R5,A ;存入R5

ACALL RDT46 ;读定时器分钟数据 MOV R4,A ;存入R4 INC ADR46 ;地址加1 MOV A,ADR46 ;地址载入A ADD A,#80H ;10XXXX读指令 ACALL SDT46 ;读入地址

ACALL RDT46 ;读定时器状态数据 ACALL RDT46 DEC ADR46

MOV R3,A ;存入R3 AJMP EX9346

SWRITE:MOVA,ADR46 ;写入地址载入A ADD A,#40H ;01XXXX写指令 ACALL SDT46 ; 载入地址 MOV A,R5 ;载入定时器时钟数据 ACALL SDT46 ;写入定时器时钟数据 MOV A,R4 ;载入定时器分钟数据

课程设计说明书 第 12 页

ACALL SDT46 ;写入定时器分钟数据 INC ADR46 ;地址加1

MOV A,ADR46 ;写入地址载入A ADD A,#40H ;01XXXX写指令 ACALL SDT46 ;载入地址 MOV A,R3 ;载入定时器状态数据 DEC ADR46 ;地址减1

ACALL ADR46 ;写入定时器状态数据 AJMP EX9346 ;转至EX9346

SEWEN:MOVA,#30H ;0011XXXX写使能指令 ACALL SDT46 AJMP EX9346

SEWDS:CLR A ;0000XXXX写禁止指令 ACALL SDT46

EX9346:CLRCS ;CS=0 RET

SDT46:MOV R2,#8 ;写入8位数据 SD1: RLC A MOV DI,C SETB CLK ACALL DELAY CLR CLK ACALL DELAY DJNZ R2,SD1 RET

RDT46:MOV R2,#8 ;读出8位数据 RD1: SETB CLK ACALL DELAY CLR CLK

课程设计说明书 第 13 页

ACALL DELAY MOV C,DO RLC A DJNZ R2,RD1 RET

DELAY:MOVR7,#0FH ; DJNZ R7,$ RET 6.4中断程序:

TIM0:MOV TH0,#THIGH ;重设计时4000微秒 MOV TL0,#TLOW

PUSH ACC ;将A的值存入堆栈 PUSH PSW ;将PSW的值存入堆栈 CLR RS0 ;设置工作寄存器为0区 DJNZ R2,X2 ;计时1秒 MOV R2,#250

ACALL CLOCK ;调用计时子程序CLOCK ACALL DISP ;调用显示子程序 X2:ACALL SCAN ;调用扫描子程序 POP PSW POP ACC RETI

6.5显示器驱动程序:

SCAN:MOV R0,#28H ;(28H)为扫描指针 INC @R0 ;扫描指针加1

CJNE @R0,#6,X3 ;扫描完6个显示器?不是跳至X3 MOV @R0,#00 ;是则扫描指针为0 X3:MOV A,@R0 ;扫描指针载入A

课程设计说明书 第 14 页

ADD A,#20 ;A加常数20H(显示寄存器地址)=各时间显示区地址 ;存入R1=各时间显示地址 MOV R1,A ;扫描指针存入A

MOV A,@R0 ;将A高低4位交换(P1高4位为扫描值, SWAP A ;低4位为显示数据值) ORL A,@R1 ;扫描值+显示值 MOV R1,A ;输出至P1 RET 6.6显示程序:

DISP:MOVR1,#20 ;(20H)为显示寄存器,R1=20H MOV A,R6 ;将时寄存器的内容存入A MOV B,#01H ;设B累加器的值为10H

DIV AB ;A/B,商(十位数)存入A,余数(个位数)存入B MOV @R1,B ;将B的内容存入(20H) INC R1 ;R1=21H

MOV @R1,A ;将A的内容存入(21H) INC R1 ;R1=22H

MOV A,R5 ;将分寄存器的内容存入A MOV B,#01H ;设B累加器的值为10H

DIV AB ;A/B,商(十位数)存入A,余数(个位数)存入B MOV @R1,B ;将B的内容存入(22H) INC R1 ;R1=23H

MOV @R1,A ;将A的内容存入(23H) INC R1 ;R1=24H

MOV A,R4 ;将秒寄存器的内容存入A MOV B,#01H ;设B累加器的值为10H

DIV AB ;A/B,商(十位数)存入A,余数(个位数)存入B MOV @R1,B ;将B的内容存入(24H)

课程设计说明书 第 15 页

INC R1 ;R1=25H

MOV @R1,A ;将A的内容存入(25H) RET END

课程设计说明书 第 16 页

总 结

此次课程设计是利用单片机设计自动打铃电路,通过单片机控制芯片对键盘和数码管的管理,设计出一个可以任意设置两个打铃时间点,并可以对时间和定时进行校自动打铃电路。当时间走到定时点时,则打铃一分钟,而后自动关闭,实现了定时打铃的目的。

自动打铃控制电路的特点是为一继电器输出接口,信号经耦合后再经过继电器输出,当P1.0为低电平时经过放大后经过耦合使SPEAKER发声。P1.0为低电平时,喇叭响,为高电平时喇叭不响,缺点是继电器的磁铁震动,易造成不稳定。

课程设计说明书 第 17 页

致 谢

自动打铃电路设计可能有许多人都注意过,但是真正要做好,总结好,并不是想像中那样容易。了解有关程序设计问题,在相应资料的搜集上并不是很容易得到,我先是在图书馆搜索了很长时间,最终在栗老师同学的帮助下,克服了许多困难,顺利的进入了课题。通过努力的思考问题,主动的去查阅资料,是可以完成的。栗老师认真负责,及时督促,同时提出了许多宝贵的意见,并对我的课程设计提出了很多有价值的建议,使我在少走了很多弯路。从栗老师身上,我学到了很多课本上学不到的东西,我收获很多。栗老师对我的帮助和我从栗老师那里学到的知识将帮助我在以后的学习中取得更好的成绩。在此,再次向栗老师表示感谢。

课程设计说明书 第 18 页

参考文献

[1] 胡汉才.单片机原理与接口技术[M].北京:清华大学出版社,1995.6.

[2] 楼然苗等.51系列单片机设计实例[M].北京:北京航空航天出版社,2003.3. [3] 何立民. 单片机高级教程[M].北京:北京航空航天大学出版社,2001. [4] 赵晓安. MCS-51单片机原理及应用[M]. 天津:天津大学出版社,2001.3. [5] 肖洪兵. 跟我学用单片机[M]. 北京:北京航空航天大学出版社,2002.8. [6] 夏继强. 单片机实验与实践教程[M]. 北京:北京航空航天大学出版社,

2001.

[7]于凤明.单片机原理及接口技术[M].北京:中国轻工业出版社.1998.

[8]陈伟人.单片微型计算机原理与应用[M].北京:清华大学出版社, 2006.5. [9]李广第. 单片机基础[M]. 第1版.北京:北京航空航天大学出版社,1999. [10] 徐惠民、安德宁. 单片微型计算机原理接口与应用[M]. 第1版. 北京:北京邮电大学出版社,1996.

[11] 何立民.从Cygnal 80C51F看8位单片机发展之路[M]. 单片机与嵌入式系统应用,2002年,第5期:P5~8.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务