毕业论文自动打铃器终稿.docx
- 文档编号:13658441
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:34
- 大小:161.51KB
毕业论文自动打铃器终稿.docx
《毕业论文自动打铃器终稿.docx》由会员分享,可在线阅读,更多相关《毕业论文自动打铃器终稿.docx(34页珍藏版)》请在冰点文库上搜索。
毕业论文自动打铃器终稿
摘要
文章介绍了一种以8031单片机为核心片,外接扩展芯片AT93C46电擦除可编程只读存储器,并带有数码LED显示,时、分、秒和以指示灯做标志的按键校时自动打铃器。
本设计是为了方便广大师生上、下课而设计的。
自动打铃声器不须人工到时打铃,整个操做过程,全是由单片机程序控制,在初次使用时须人工校时。
关键词 :
单片机、存储器、数码管
Abstract
Articlerecommendaregard8031one-chipcomputersascorestretch,outertoexpandelectricity,AT93C46ofchip,wipe,getridofprogrammableread-onlymemory,itmorehaverevealLED,when,minuteorsecondandnotlastbuttonringingbelldeviceautomaticallyatthetimeofschoolofsignwithindicatorlamp.Itdesignstobeforconvenienceatwidemastergrow,classisover,designoriginally.Typeringtonesdeviceneedartificialtoringbellthen,speakcourseofdoingentirely,controlbyone-chipcomputerprocedureallautomatically,mustatbeingartificialtheschoolwhileusingforthefirsttime.
Keyword:
One-chipcomputer、Memory、Thenumberismanaged
中文摘要————————————————————————1
Abstract————————————————————————2
1、引言———————————————————————4
2、总体设计方案———————————————————5
2.1设计思路————————————————————5
2.2总体设计框图——————————————————5
3、设计原理分析———————————————————5
3.1校时模式————————————————————6
3.2定时模式————————————————————6
3.3工作模式————————————————————6
3.4存储器93C46的相关介绍—————————————6
3.4.1引脚功能——————————————————6
3.4.2指令及时序—————————————————8
3.58031信号引脚介绍————————————————8
3.674LS48的芯片说明———————————————9
3.6.1管脚排列图——————————————————9
3.6.2使能端的功能————————————————10
3.774HC138的介绍—————————————————11
3.7.1真值表———————————————————11
3.8电路图—————————————————————12
4、程序部分——————————————————————12
4.1程序分为五部分—————————————————12
4.2部分寄存器及按键说明——————————————12
4.3程序流程图———————————————————13
4.4程序清单————————————————————14
4.4.1初始化程序—————————————————14
4.4.2键值处理程序————————————————15
4.4.3读写93C46程序———————————————18
4.4.4中断程序——————————————————20
4.4.5显示器驱动程序———————————————21
4.4.6计时程序——————————————————21
4.4.7显示程序——————————————————22
总结——————————————————————————23
致谢——————————————————————————24
参考文献————————————————————————25
附录——————————————————————————26
引言
用单片机控制的自动打铃器,充分发挥单片机的体积小、价格便宜、功耗低、可靠性好等特点。
单片机发展速度快,不断地进行更新换代。
它将微机计算机的中央处理器CPU和外围芯片,如程序存储器ROM(或EPROM)数据存储器RAM,并行和串行接口,定时器/计数器,中断控制系统等部件集成在一个芯片之中,通过这些功能就能体现了利用单片机来控制打铃器的优势。
2、总体设计方案
2.1设计思路
利用单片机及定时器设计的一个时钟,在每次秒加1的计时过程中,都与规定的时间作比较,如果相等就进行开关电铃,不等则返回。
2.2总体设计框图
3、设计原理分析
3.1校时模式
按下K1(模式选择键),将模式选择为校时模式(模式指示灯黄灯亮),K2,K3,K4分别为时钟加1键,分钟加1键,秒钟加1键,K5无用。
3.2定时模式
按下K1(模式选择键),将模式选择为定时模式(模式指示灯绿灯亮),K2为定时器组选择(本装置有24组定时器)键,K3,K4分别为定时器时钟加1键和定时器分钟加1键,K5为定时器状态选择键,每按K5一次,此组的定时器状态改变一次,并将此组数据存入93C46中。
3.3工作模式
按下K1(模式选择键),将模式选择为工作模式(模式指示灯红灯亮),K2,K3,K4,K5无用。
此模式为正常工作模式
3.4存储器93C46的相关介绍
存储器AT93C46为SPI接口,1脚为CS,2脚为CLK,3脚为DI,4脚为DO,5脚为GND,6脚为ORG,7脚为NC,8脚为VCC。
单5V电压,DIP8,64*16(ORG为HI)或128*8(ORG为LO),芯片及字的清除,时钟最高为250KHZ。
读(READ)操作:
当下达10XXXX指令后,将地址(XXXXXX)的数据在CLK=HI时由DO输出。
写(WRITE)操作:
在写入之前,必须先下达写使能(EWEN)指令,然后在下达01XXXXXX指令后,当CLK为HI时,在把数据写入指定的地址(XXXXXX),而DO=0时,表示还在烧写,烧写完成后,DO会转为HI,写入动作完成后,必须再下达写禁止(ENDS)指令。
写使能(EWEN):
下达0011XXXX指令后,才可进行写入(WRITE)的数据清除。
写禁止(EWDS):
下达0000XXXX指令后,才可重复进行写入(WRITE)的动作。
3.4.1引脚功能
AT93C46存储器芯片的引脚排列如图1所示。
各引脚的功能如下:
CS:
片选信号。
高电平有效,低电平时进入等待模式。
在连续的指令之间,CS信号必须持续至少250ns的低电平,才能保证芯片正常工作。
CLK:
串行时钟信号。
在CLK的上升沿,操作码、地址和数据位进入器件或从器件输出。
在发送序列时,CLK最好不停止,以防止读/写数据的错误。
DI:
串行数据输入。
可在CLK的同步下输入开始位、操作码、地址位和数据位。
DO:
串行数据输出。
在CLK同步下读周期时,用于输出数据;而在地址擦/写周期或芯片擦/写周期时,该端用于提供忙/闲信息。
VSS:
接地。
VCC:
接+5V电源。
ORG:
存贮器构造配置端。
该端接VCC或悬空时,输出为16位;接GND时,输出为8位。
NC:
空脚,不连接。
表1AT93C46系统指令
指 令
起始位
操作码
地址位
数据位
备 注
*8 *16
空
READ
1
10
AnAo AnAo
空
从指定的单元读数
EWEN
1
00
11xxxxx 11xxxx
空
允许写指令
ERASE
1
11
An~Ao An-1~Ao
空
擦除指定单元
WRITE
1
01
An~Ao An-1~Ao
D7~D0 D15~D0
写入存储单元
ERAL
1
00
10xxxxx 10xxxx
空
擦除存储器所有单元
WRAL
1
00
01xxxx 01xxxx
D7~D0 D15~D0
写入存储器所有单元
EWDS
1
00
00xxxxx 00xxxx
空
禁止写指令
表中,93C46n=6;93C56n=7;93C66n=8
3.4.2指令及时序
AT93C46的指令如表1所列,各指令的具体含义如下:
(1)擦/写允许指令(EWEN)
由于在上电复位后AT93C46首先将处于擦/写不允许状态。
故该指令必须在所有编程模式前执行,一旦该指令执行后,只要外部没有断电就可以对芯片进行编程。
(2)地址擦指令(ERASE)
该指令用于强迫指定地址中所有数据位都为“1”。
一旦信息在DI端上被译码,就需使CS信号保持至少250ns的低电平,然后将CS置为高电平,这时,DO端就会指示“忙”标志。
DO为“0”,表示编程正在进行;DO为“1”,表示该指定地址的寄存器单元已擦完,可以执行下一条指令。
(3)地址写指令(WRITE)
写指令时,先写地址,然后将16位的或8位数据写入到指定地址中。
当DI端输出最后一个数据位后,在CLK时钟的下一个上升沿以前,CS必须为低,且需至少保持250ns,然后将CS置为高电平。
需要说明的是:
写周期时,每写一个字节需耗时4ms。
(4)地址读指令(READ)
读指令用于从指定的单元中把数据从高位到低位输出至DO端,但逻辑“0”位先于数据位输出。
读指令在CLK的上升沿触发,且需经过一段时间方可稳定。
为防止出错,建议在读指令结束后,再输出2~3个CLK脉冲。
(5)芯片擦指令(ERAL)
该指令可将整个存贮器阵列置为1,其它功能与地址擦指令相同。
(6)芯片写指令(WRAL)
该指令可将命令中指定的数据写入整个存贮器阵列,其它功能与地址写指令相同。
该指令周期所花费时间的最大值为30ms。
(7)擦/写禁止指令(EWDS)
使用该指令可对写入的数据进行保护,操作步骤与擦/写允许指令相同。
3.58031信号引脚介绍
P0.0~P0.7:
P0口8位双向口线;
P1.0~P1.7:
P1口8位双向口线;
P2.0~P2.7:
P2口8位双向口线;
P3.0~P3.7:
P3口8位双向口线;
ALE:
地址锁存控制信号。
在系统扩展时ALE用于控制把P0口输出的低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。
此外由于ALE是以晶振1/6的固定频率输出的脉冲,因此可作为外部时钟或外部定时脉冲使用。
PSEN:
外部程序存储器选通信号
在读外部ROM时PSEN有效(低电平),以实现外部ROM单元的读操作。
EA:
访问程序存储器控制信号
当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当EA信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延至外部程序想念器。
RST复位信号
当输入的复位信号延续2个机器周期以上高电平时为有效,用以完成单片机的复位初始化操作。
复位以后,P0~P3口输出高电平,SP指针重新赋值为07h,其他特殊功能寄存器和程序计数器PC被清0。
XTAL1和XTAL2外接晶体引线端
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
Vss:
地线
Vcc:
+5v电源
3.674LS48的芯片说明
74LS48是控制七段显示器显示的集成译码电路之一,其引线排列图如图3.10所示。
A、B、C、D为BCD码输入端,A为最高位,Ya~Yg为输出端,分别驱动七段显示器的a~g输入端,高电平触发显示,可驱动共阴极发光二极管组成的七段显示器显示。
其它端为使能端。
3.6.174LS48的管脚排列图
3.6.274LS48的使能端的功能如下:
(1)消隐输入BI‘/RBO’。
当BI‘=0时,不论其它各使能端和输入端处于何种状态,Ya~Yg均输出低电平,显示器的七个字段全熄灭。
这个端子是个双功能端子,既可作输入端子,也可作输出端子。
作输入端子用时,它是消隐输入BI’;作输出端子用时,它是灭零输出RBO。
(2)灭零输出BI‘/RBO‘。
RBO’为灭零输出。
当RBI‘=0,输入ABCD=0000时,RBO’=0,利用该灭零输出信号可将多位显示中的无用零熄灭。
3.774HC138的介绍
74HC系列的逻辑功能、引出端排列与74LS系列相一致;其工作速度与74LS相似,而功耗仍与CMOS4000系列相一致。
74HC系列的所有输入均有内部保护线路,以减小由于静电感应而损坏器件的可能性。
74HC具有高抗噪声度和驱动负载的能力。
HC138有三个地址输入(A0~A2)、三个选通输入(STA、STB、STC)和八个输出(Y0~Y7)。
当STA为高电平、STB和STC为低电平时器件被选通,A0~A2可确定Y0~Y7中的一个以低电平呈现;对于STA、STB、STC的其它任何组合,均为高电平。
利用STA、STB、STC可级联扩展为24线译码器;若外接一个反向器还可级联扩展为32线译码器。
当将一个选通端作为数据输入而另外两个选通端保持其有效值时,该器件还可作为多路分配器使用。
3.7.1真值表
输入
输出
STA
STB
STC
A2
A1
A0
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
X
H
X
X
X
X
H
H
H
H
H
H
H
H
X
X
H
X
X
X
H
H
H
H
H
H
H
H
X
X
X
X
X
X
H
H
H
H
H
H
H
H
H
L
L
L
L
L
L
H
H
H
H
H
H
H
H
L
L
L
L
H
H
L
H
H
H
H
H
H
H
L
L
L
H
L
H
H
L
H
H
H
H
H
H
L
L
L
H
H
H
H
H
L
H
H
H
H
H
L
L
H
L
L
H
H
H
H
L
H
H
H
H
L
L
H
L
H
H
H
H
H
H
L
H
H
H
L
L
H
H
L
H
H
H
H
H
H
L
H
H
L
L
H
H
H
H
H
H
H
H
H
H
L
注:
H:
高电平、L:
低电平、X:
任意。
引脚功能定义:
A0~A2:
地址输入端;GND:
地;STA:
选通端;STB、STC:
选通端(低电平有效);Y0~Y7:
译码输出端(低电平有效)。
3.8电路图
4、程序部分
4.1程序分为五部分
1.初始化程序,2.键值处理程序,3.中断程序,4.显示程序,5.存储器93C46读写程序
4.2部分寄存器及按键说明
28H:
扫描指针寄存器
20H--25H:
显示缓存寄存器
R6:
时钟寄存器
R5:
分钟寄存器
R4:
秒钟寄存器
K1:
模式选择键
K2:
时加1(定时器组加1)键
K3:
分加1(定时器时加1)键
K4:
秒加1(定时器分加1)键
K5:
定时器状态改变既存储键
4.3程序流程图
4.4程序清单
4.4.1初始化程序:
READEQU0;读93C46
WRITEEQU2;写入93C46
EWENEQU4;93C46写入使能
EWDSEQU6;93C46写入禁止
ADR46EQU21H;93C46地址
THIGHEQU0F8H
TLOWEQU5FH
TIMENEQU30;打铃持续时间(30秒)
CSBITP3.7;93C46CS
CLKBITP3.6;93C46CLK
DIBITP3.5;93C46DI
DOBITP3.4;93C46DO
ORG0000H;主程序起始地址
AJMPSTART;跳至主程序
ORG000BH;TIMER0中断起始地址
AJMPTIM0;跳至TIMER0中断子程序
START:
MOVSP,#60H;设置堆栈在60H
MOV28H,#00;显示寄存器初值为00
MOVR6,#12H;“时”寄存器值为12H
MOVR5,#00H;“分”寄存器值为00H
MOVR4,#00H;“秒”寄存器值为00H
MOVTMOD,#01H;设TIMER0为MODE1
MOVTH0,#THIGH;计时中断为4000微秒
MOVTL0,#TLOW
MOVIE,#82;TIMER中断使能
MOVR2,#250;中断250次
SETBTR0;启动TIMER0
4.4.2键值处理程序:
LOOP:
SETBP0.5;工作模式
CLRP0.6
CLRP0.7
JBP0.0,N1;K1(模式选择键)按了?
不是则跳至N1
ACALLDELAY;消除抖动
JNBP0.0,$;K1(模式选择键)放开了?
ACALLDELAY;消除抖动
AJMPSET;转到定时模式SET
N1:
MOV2FH,R6;将时钟数据载入2FH中
MOV2EH,R5;将分钟数据载入2EH中
MOVADR46,#00;把93C46地址置0
SETBRS0;将工作寄存器组选择1区
LOOP1:
MOVA,#READ;读93C46
ACALLTO93c46
MOVA,R3;取出定时器的状态
ANLA,#01H
CJNEA,#01H,N2;定时器为关闭,则跳转至N2
MOVA,R4;取出定时器分钟数据
CJNEA,2FH,N2;定时器分钟数据与时钟分钟不同则转至N2
MOVA,R5;取出定时器时钟数据
CJNEA,2EH,N2;定时器时钟数据与时钟时钟不同则转至N2
SETBP2.1;定时器时间到,打铃
MOVA,ADR46;将93C46地址载入A中
N2:
CJNEA,#1EH,N3;到定时器数据表表尾?
没到转至N3
MOVADR46,#00;到表尾,置93C46地址为表头
AJMPLOOP1;转至LOOP1
N3:
INCADR46;93C46地址加2
INCADR46
AJMPLOOP1;转至LOOP1
SET:
CLRP0.5;校时模式
SETBp0.6
CLRP0.7
LOOPS:
JBP0.0,N11;K1(模式选择键)按了?
不是则跳至N11
ACALLDELAY;消除抖动
JNBP0.0,$;K1(模式选择键)放开了?
ACALLDELAY;消除抖动
AJMPSETTIME;转至SETTIME
N11:
JBP0.1,N13;K2(时钟加1键)按了?
不是则跳至N13
ACALLDELAY;消除抖动
MOVA,R6;将时寄存器的值载入A
ADDA,#01H;A内容加1
DAA;做十进制调整
MOVR6,A;将A的值存入时寄存器
CJNEA,#24H,N12;是否超过24时?
不是则跳至N12
MOVR6,#00H;是则清除时寄存器的值为00
N12:
JNBP0.1,$;K2(时钟加1键)放开了?
ACALLDELAY;消除抖动
N13:
JBP0.2,N15;K3(分钟加1键)按了?
不是则跳至N15
ACALLDELAY;消除抖动
MOVA,R5;将分寄存器的值载入A
ADDA,#01;A内容加1
DAA;做十进制调整
MOVR5,A;将A的值存入分寄存器
CJNEA,#60H,N14;是否超过60分?
不是则跳至N14
MOVR5,#00H;是则清除分寄存器的值为00
N14:
JNBP0.2,$;K3(分钟加1键)放开了?
ACALLDELAY;消除抖动
N15:
JBP0.3,N17;K4(秒钟加1键)按了?
不是则跳至N17
ACALLDELAY;消除抖动
MOVA,R4;将秒寄存器的值载入A
ADDA,#01;A内容加1
DAA;做十进制调整
MOVR4,A;将A的值存入秒寄存器
CJNEA,#60H,N16;是否超过60秒?
不是则跳至N16
MOVR4,#00;是则清除分寄存器的值为00
N16:
JNBP0.3,$;K4(秒钟加1键)放开了?
ACALLDELAY;消除抖动
N17:
AJMPLOOPS;转至LOOPS
SETTIME:
CLRP0.5;定时模式
CLRP0.6
SETBP0.7
MOVADR46,#00H
MOVA,#READ;读93C46地址为ADR46中的数据
ACALLTO9346
LOOPB:
ACALLDISP;调用DISP
JBP0.0,N21;K1(模式选择键)按了?
不是则跳至N21
ACALLDELAY;消除抖动
JNBP0.0,$;K1(模式选择键)放开了?
ACALLDELAY;消除抖动
AJMPLOOP;转至LOOP
N21:
JBP0.1,N22;K2(定时器组加1键)按了?
不是则跳至N22
ACALLDELAY;消除抖动
MOVA,ADR46;将地址载入A
CLRC;清除进位位
RRCA;A右移1位
ADDA,#01H;地址加1
MOVR6,A;将A存入R6
CLRC;清除进位位
RLCA;A左移1位
MOVADR46,A;将A中地址存入ADR46
MOVA,#READ;读93C46地址为ADR46中的数据
ACALLTO9346
JNBP0.1,$;K2(定时器组加1键)放开了?
ACALLDELAY;消除抖动
N22:
JBP0.2,N24;K3(定时器分钟加1键)按了?
不是则跳至N24
ACALLDELAY;消除抖动
MOVA,R4;将定时器分寄存器的值载入A
ADDA,#01;A内容加1
DAA;做十进制调整
MOVR4,A;将A的值存入定时器分寄存器
CJNEA,#60H,N23;是否超过60分?
不是则跳至N16
MOVR4,#00H;是则清除分寄存器的值为00
N23:
JNBP0.2,$;K3(定时器分钟加1键)放开了?
ACALLDELAY;消除抖动
N24:
JBP0.3,N26;K4(定时器时钟加1键)按了?
不是则跳至N26
ACALLDELAY;消除抖动
MOVA,R5;将定时器时寄存器的值载入A
AD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 自动 打铃 器终稿