自动打铃装置Word文档下载推荐.docx
《自动打铃装置Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《自动打铃装置Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
首先设计出本系统的硬件基本框图,根据框图设计电气原理图,简要概述基本原理,按照设计技术参数设计出各部分程序。
⑵系统软硬件划分
由于要依据最小系统设计,因此,极大地节约系统的硬件成本,所有能用软件实现的功能都用软件完成,如按键的去抖,采用延时,显示部分用动态显示等,这样硬件部分的设计可以采用单片机最小系统,所谓最小系统是仅有程序存储器和时钟及复位电路的为时过早片机系统。
⑶单片机选型
根据课题的具体内容,任务要求,计时,校时,定时,键盘显示等功能,经多方考虑,所以本系统选项用与MCS——51系统单片机完全兼容的AT89C51低功耗单片机。
1.3总体设计框图
整体框图
第2章硬件电路设计
2.1单元电路设计与原理分析
㈠基本原理概述
本系统主要由主控模块,时钟模块,显示模块,键盘接口模块等4部分组成。
通过内部定时产生中断,从而驱动电铃打铃。
设定51单片机工作在定时器工作方式1,每100ms产生一次中断,利用软件将基准100ms单元进行累加,当定时器产生10次中断就产生1S信号,这时秒单元加1。
同理,对分单元和时单元计数,从而产生秒,分,时的值,通过六位七段显示器进行显示。
由于动态显示法需要数据锁存等硬件,接口较复杂,考虑显示只有六位,且系统没有其他复杂的处理任务,所以采用动态扫描实现LED的显示。
本系统采用三个按键,1键为功能键,另外两个做控制键。
按一下1键进入时间设置,然后按2键进行时调整,按3键进行分调整,按两下1键进入打铃时间设定,在分别用2键3键进行调整,调整完后按下1键便退出调整,时钟继续走动。
当时钟时间与设置时间一致时,驱动电路动作进行打铃,每次打铃10秒。
2.2显示电路设计
显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路,数码管分别为十时,时,十分,分,十秒,秒显示,显示时采用串行口输出段码,用74LS373来驱动数码管扫描只需7ms。
74LS373内部为8个D触发器,用以实现数据的串行移位,74LS373为TTL单向8位移位寄存器,可实现串行输入并行输出,CPU为时钟输入端,可连接到串行口TXD端。
每个时钟信号的上升沿加到CP端时,移位寄存器移一位,8个时钟脉冲过后8位二进制数全部移入74LS373中,MR脚为复位端,当该位为低电平时,移位寄存器各位复0。
当它为高电平时时钟脉冲才起作用。
Q1~~Q8并行输出分别接数码管的各段对应脚上,在给出8个脉冲后,最先进入74LS373的第一个字节数据到达最高位,再来1个脉冲,第一个脉冲就会从最高位移出,进入下一个74LS373的第一位。
2.3键盘接口设计
由于按键盘只有3个,采用独立式按钮,分别与89C51的P1.0、P1.1、P1.2相连,用普通按钮1K上拉电阻,用查询法完成读键功能。
2.4打铃电路的设计
本次设计打铃电路如图3.5所示,单片机通过P3.7控制蜂鸣器是否发出声响。
当时间与预定打铃时间相同时,单片机通过P3.7输出为1KHz的方波,使得蜂鸣器发出声响。
图中NPN三极管作用是电流放大,以保证蜂鸣器能正常发出声音。
第3章程序设计
3.1程序流程图
主程序流程图
定时中断程序流程图
显示程序流程图
3.2源程序清单
K-KEYEQUP1.0;
控制按键
M-KEYEQUP1.1;
分按键
H-KEYEQUP1.2;
时按键
S-DATADATA50H;
秒单元数据存储地址
M-DATADATD51H;
分单元数据存储地址
H-DATADATA52H;
时单元数据存储地址
MOVSP,#70H;
堆栈区地址从70H开始
MOVDPTR,#0FB00H
MOVA,#03H;
设8155的PA,PB口为输出方式
MOVX@DPTR,A
START:
LCALLKEY;
调用键盘设置子程序
LCALLDIS;
调用显示子程序
LCALLCONTROL;
调用控制子程序
AJMPSTART;
循环调用
KEY:
JBM-KEY,H-SET;
分设置键压下吗?
如果没压下,则判断时设置键
LCALLDELL;
调用键盘防抖动子程序
JBM-KEY,H-SET
INCM-DATA;
如果分设置健压下,则分单元加1
MOVA,M-DATA
CJNZA,#60,M-DIS;
分单元=60,则清0
MOVM-DATA,#00H
M-DIS:
LCALLHEX-BCD;
调用HEX至BCD码转换子程序
MOV69H,A
MOV6AH,B
M-REP:
JNBM-KEY,M-REP;
等待分设置键释放
H-SET:
JBH-KEY,HEX-BCD;
判断时设置键是否压下?
LCALLDELL;
JBH-KEY,HEX-BCD
INCH-DATA;
如时设置键压下,则时单元加1
MOVA,H-DATA
CJNZA,#24,H-DIS;
时单元=24,则清0
MOVH-DATA,#10H
H-DIS:
MOVA,H-DATA
LACLLHEX-BCD;
MOV79H,A
MOV7AH,B
H-REP:
JNBH-KEY,H-REP;
等待时设置键释放
HEX-BCD:
MOVB,#10
DIVAB
RET
DELL:
MOVR6,#20H;
延迟10ms子程序
DEL1:
MOVR7,#0FFH
DJNZR7,$
DJNZR6,DEL1
RET
CLOCK:
PUSHACC;
参数入栈保护
PUSHPSW
CLRTR0
MOVTL0,#0B0H;
定时参数重新设置
MOVTH0,#03CH
SETBTR0
INC4FH;
100ms单元内容加1
MOVA,4FH
CJNZA,#10,D0;
100ms单元内容=10,则秒单元加1
MOV4FH,#00H;
100ms单元清0
MOVA,S-DATA
ADDA,#01H;
秒单元加1
MOVS-DATA,A
CJNEA,#60,D0;
秒单元内容=60,则清0
MOVS-DATA,#00H
MOVA,M-DATA
分单元加1
MOVM-DATA,A
MOVM-DATA,#00H
MOVA,H-DATA
时单元加1
MOVH-DATA,A
CJNEA,#24,D0;
MOVH-DATA,#00H
D0:
POPPSW;
出栈,出中断程序
POPACC
RETI
DIS:
MOVR0,#4FH;
准备向缓冲区放数
MOVA,27H
ACALLPTDS;
放秒值
MOVA,28H
放分值
MOVA,29H
放时值
MOVR0,#4AH;
指向缓冲区首地址
MOVR2,#0FFH;
左边第一位开始显示
MOVDPTR,#SEGPT;
指向字形码表首
DIS1:
MOVA,#00H
MOV20H,DPL
MOV21H,DPH;
熄灭码
MOVDPTR,#4001H;
取显示缓冲区中的数
MOVA,#0FFH
MOVX@DPTR,A
MOVDPL,20H
MOVDPH,21H
MOVA,@R0
MOVCA,@A+DPTR;
查表,找字形码
CPLA
MOVDPTR,#4002H
MOVX@DPTR,A;
送出字形码
MOVA,R2;
取字位码
MOVDPTR,#4001H;
字位口地址
MOVDPH,21H;
显示一位数
MOVR3,#00H
DIS2:
DJNZR3,DIS2;
延时一段时间
INCR0;
修改显示缓冲区指针
CLR;
为移位作准备
RLA;
右移一位,为显示下一位作准备
MOVR2,A;
存位码
JBACC.7,DIS1;
不到最后一位,则继续
PTOS:
MOVR1,A;
暂存
ACALLDIS1;
低4位先放入缓冲区
MOVA,R1;
取了原数
SWAPA;
高4位放入低4位中
RTDS1:
ANLA,#0FH;
放进显示缓冲区
MOV@R0,A
DELR0;
缓冲区地址指针减1
RET
SEGPT:
DB3FH,06H,5BH,4FH,66H,DB6DH,7DH,07H,7FH,6FH;
时间表
DL:
MOVDPTR,#P0
MOVXA,@DPTR
INCA
MOVCA,@A+PC
TAB:
DB320H,352H,384H,3B6H,
DB3F2H,44CH,47EH,4B0H,
DB532H,58CH,596H,5F0H,
DB604H,65EH,668H,6C2H,
DB76CH,79EH,7B0H,802H,
第4章设计总结
本系统被子广泛用企事业单位,设计比较简单。
经过一学期的学习,使我对单片机有了初步的认识,了解了一些软件编程的技巧。
通过本次课课设,使我学会了课堂上学不到的知识。
对单片机又有了更深的认识,掌握单片机设计步骤,知道这门课程在工作中的重要性。
在课程设计过程中也遇到了许多困难,但在老师和同学们的同共努力下都得到解决,最终看到了成果.我感谢老师这一年来对我们细心的教导,使我熟悉了一些软件方面的知识,相信定会为日后工作打下坚实基础.。
课程设计加深了学生对所学课程理论的理解,扩展了教学中的实验内容和要求,积累了实践体验和经验,让我们提前感受到毕业设计的大致过程,进而能顺利进入毕业设计,提高毕业设计质量和学生实际应用能力。
参考文献
[1]单片机原理及接口技术梅丽凤等编著
[2]单片机课程设计实例李光飞等编著
[3]单片机设计与应用基础教程陆子明