自动打铃控制系统设计.docx
- 文档编号:29876278
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:22
- 大小:366.60KB
自动打铃控制系统设计.docx
《自动打铃控制系统设计.docx》由会员分享,可在线阅读,更多相关《自动打铃控制系统设计.docx(22页珍藏版)》请在冰豆网上搜索。
自动打铃控制系统设计
目录
前言1
1、设计方案论证2
1.1设计方案选择2
1.1.1设计课题简要概述2
1.1.2系统软硬件划分2
1.1.3单片机选型2
1.2总体设计框图3
2、硬件电路设计3
2.1基本原理概述3
2.2元件参数及功能简介4
2.2.1主控器AT89C514
2.2.2时钟电路DS13024
2.2.3显示电路设计6
2.2.4键盘接口电路设计6
3、系统程序流程图及程序编写7
3.1系统程序流程图7
3.2系统程序设计11
4、元器件清单13
5、课程设计总结14
附录15
附录1、设计中所用到的子程序15
附录2、自动打铃机硬件电路图:
26
参考文献:
27
前言
随着科技的不断发展,各种新片都得到了很好的发展,80C51同样如此,从开始的无人问津到现在的随处可见,红绿灯,记分牌,电子秒表,遥控器,电饭煲,电视等只要是电子产品,都会和芯片有关,其实芯片并不是什么神秘的高科技,它只是里面装了一些已编好的程序而已.而这里要介绍的是用汇编语言来编程,它能够让一个学校或企业集团,总之,一个需要时间系统的机构实现自动提醒功能.
单片机与接口技术课程是在教学及实验基础上,对课程所学理论知识的深入和提高。
因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的小型单片机系统,并在实践的基本技能方面进行一次系统的训练。
能够较全面地巩固和应用单片机课程中所学到基本理论和基本方法,并初步掌握小型单片机系统设计的基本方法。
培养独立思考、独立收集资料、独立设计规定功能的单片机系统的能力;培养分析、总结及撰写技术报告的能力。
1、设计方案论证
1.1设计方案选择
1.1.1设计课题简要概述
自动打铃装置用于工厂、学校等地的时间控制,本设计是按照学校作息时间设定的,模拟了电子钟显示时、分、秒。
还根据学校的作息时间按时打铃,本系统有4个按钮,分别用来调时、调分、秒和强制大龄及强制关铃,以保证始终与标准时间相吻合。
首先设计出本系统的硬件基本框图,根据框图设计电气原理图,简要概述基本原理,按照设计技术参数设计出各部分程序。
1.1.2系统软硬件划分
由于要一句最小系统设计,因此,极大地介于系统的硬件成本,所有能用软件实现的功能都用软件完成,如按键的去抖,采用延时,显示部分用动态显示等,这样硬件部分的设计可以采用单片机最小系统,所谓最小系统时仅有程序存储器和时钟及复位电路的单片机系统。
1.1.3单片机选型
根据课题的具体内容,任务要求,计时、校时、定时、键盘显示等功能,经多方面考虑,所选系统选项用与MSC-51单片机完全兼容的AT89C51低功耗单片机。
1.2总体设计框图
图一整体框图
2、硬件电路设计
2.1基本原理概述
本系统主要由主控模块,时钟模块,显示模块,键盘接口模块等4部分构成。
通过内部定时产生中断,从而使驱动电铃打铃。
设定51单片机工作在定时器工作方式1,每100ms产生一次中断,利用软件将基准100ms单元进行累加,当定时器产生10次中断就产生1S信号,这是秒单元加1。
同理,对分单元和时单元计数从而产生秒,分,时的值,通过六位七段显示器进行显示。
由于动态显示法需要数据所存等硬件,接口较复杂,考虑显示只有六位,且系统没有其他浮躁的处理程序,所有采用动态扫描LED的显示。
本系统采用四个按键,当时钟时间与设置时间一直时,驱动程序动作,进行打铃,每次打铃30S。
2.2元件参数及功能简介
2.2.1主控器AT89C51
AT89C51公司生产的AT89C51单片机用高性能的静态89C51设计,由先进工艺制造,并带有非易失性FLASH程序存储器,它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多,主要特点有:
有4K的FLASH程序存储器,256字节内部RAM。
电源控制模式:
时钟可停止和恢复,空闲模式,掉电模式。
6个中断源。
4个中断优先级。
4个8位I/O口。
全双工增强型UART.
2个16位定时、计数器。
2.2.2时钟电路DS1302
1)性能特性
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:
1RES复位,2I/O数据线,3SCLK串行时钟.时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信.DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。
提供秒分时日日期.月年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式
2)管脚描述
X1X232.768KHz晶振管脚
GND地
RST复位脚
I/O数据输入/输出引脚
SCLK串行时钟
Vcc1,Vcc2电源供电管脚
DS1302串行时钟芯片8脚DIP
DS1302S串行时钟芯片8脚SOIC200mil
DS1302Z串行时钟芯片8脚SOIC150mil
8051通过串口向DS1302写数据的程序框图如下:
图二80C51与DS1302的连接
其中,Px科研室8051单片机的任何一位I/O口,注意因为DS1302的数据发送或接受时序和8051的串行口不完全一致,因此,需要在TXD的输出端加反相器,另外,接收数据时,不能以串行口的接受方式接收,必须将串行口当作普通I/O口进行数据接收。
DS1302的晶振选用32.768KHZ,电容选用6PF,因为振荡频率较低也可以不接电容,对计时精度影响不大。
2.2.3显示电路设计
显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路,数码管分别为十时,时,十分,分,十秒,秒显示,显示时采用串行口输出段码,用74LS164来驱动数码管扫描只需7ms。
74LS164内部位8个D触发器,用以实现数据的串行移位,74LS164位TTL单向8位移位寄存器,可实现串行输入并行输出,CPU位时钟输入端,可接到串行口TXD端。
每个时钟信号的上升沿加到CP端时,移位寄存器移一位,8个时钟脉冲过后,8为二进制数全部移入74LS164中,MR为复位端,当该位为低电平时,移位寄存器各位复0。
当它为高电平时时钟脉冲才起作用。
2.2.4键盘接口电路设计
由于键盘只有四个,采用独立式按钮,分别与8051的P1.0,P1.1,P1.2相连,用普通按钮10K上拉电阻,用查询法完成读健功能。
3、系统程序流程图及程序编写
3.1系统程序流程图
程序名称:
51单片机自动打铃机控制系统
要说明:
实现24小时制电子钟,8位数码管显示,显示时分秒
显示格式:
23-59-59(小时十位如果为0则不显示)
到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:
P3.7
打铃方式分起床、熄灯铃和上、下课铃两种
系统使用4只按键,3只按键用来调整时间,另一只为闹钟按钮即定时打铃
键SET_KEY:
P1.0;通过选择键选择调整位,选中位闪烁
增加键ADD_KEY:
P1.1;按一次使选中位加1
减少键DEC_KEY;P1.2;按一次使选中位减1
如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁
如果选中位是秒,则按增加键或减少键都是将秒清零
定时打铃键DALING_KEY:
P1.3;用来强制打铃或强制关闭铃声
P0口输出数码管段选信号,P2口输出数码管位选信号。
晶振12M
系统主程序流程图如下所示:
系统定时中断流程图如下所示:
3.2系统程序设计
根据以上流程图思想,现设计系统程序思路描写如下
系统的主程序如下所示:
BEEPEQUP3.7 ;定义蜂鸣器(电铃)控制信号输出口
ORG0000H ;程序入口地址
LJMPSTART
ORG000BH ;定时器0中断入口地址
LJMPTIMER_0
ORG0300H
/*****程序开始,初始化*****/
START:
SETBBEEP ;关闭蜂鸣器(电铃)
SETB48H ;使用一个bit位用于调时闪烁标志
SETB47H ;使用一个bit位用于产生脉冲用于调时快进时基
CLR 45H ;关闭响铃方式标志
MOVR1,#0 ;调整选择键功能标志:
0正常走时、1调时、2调分、3调秒
MOV20H,#00H ;用于控制秒基准时钟源的产生
MOV21H,#00H ;清零秒寄存器
MOV22H,#00H ;清零分寄存器
MOV23H,#00H ;清零时寄存器
MOV24H,#00H ;用于控制调时闪烁的基准时钟的产生
MOVIP,#02H ;IP,IE初始化
MOVIE,#82H
MOVTMOD,#01H ;设定定时器0工作方式1
MOVTH0,#3CH
MOVTL0,#0B0H ;赋定时初值,定时50ms
SETBTR0 ;启动定时器0
MOVSP,#40H ;重设堆栈指针
/*****主程序*****/
MAIN:
CJNER1,#00H,MAIN1 ;是否为正常走时状态
LCALLBIJIAO1 ;调用起床、熄灯打铃比较子程序
LCALLBIJIAO2 ;调用上、下课打铃比较子程序
LCALLDALING ;调用响铃方式执行子程序
MAIN1:
LCALLDISPLAY ;调用显示子程序
LCALLKEY_SCAN ;调用按键检测子程序
JZMAIN ;无键按下则返回重新循环
LCALLSET_KEY ;调用选择键处理子程序
JB46H,MAIN ;如果已进行长按调整(调时快进),则不再执行下面的单步调整
LCALLADD_KEY ;调用增加键处理子程序
LCALLDEC_KEY ;调用减少键处理子程序
LCALLDALING_KEY ;处理强制打铃/强制关闭铃声键
LJMPMAIN ;重新循环
;程序结束
(主程序中应用到的子程序如附录1所示)
4、元器件清单
AT89C51芯片
1片
DS1302
1片
74LS164
1片
数码显示管
8个
晶振
12M
按键
4个
电阻
5个10K
8个0.33K
9个1K
共计22个
电容
2个30p
1个100u
三极管
9个
5、课程设计总结
学习单片机技术这门实训课程,我能综合运用电子技术课程中的所学到的理论知识来完成自动打铃机的设计和分析电路,学会了在虚拟的环境下创建电路,计算和调整参数,我能灵活的应用protel99se软件画图,并且掌握了一定的单片机知识,通过这门课的设计我还有以下几点收获:
1、有利于基础知识的掌握
通过这次设计我亲手做,自己思考,将理论知识上升到实践的高度,从而进一步打破了单片机的神秘面纱。
2、有利于逻辑思维的锻炼。
在许多常规可生的日常学习中,我们不难发现这样一个现象,不少学生的思维常处于混乱的状态,写作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果,程序设计是公认的,最能直接有效的训练学生的床在思维,培养分析问题解决问题的能力的学科之一。
即使一个见到你程序,从任务分析,确定算法界面布局,缩写代码到调试运行,整个过程学生的需要有条理的构思,这之间有猜测设计,判断思维的抽象思维训练,又有分析问题解决问题,预测目标等能力的培养。
附录
附录1、设计中所用到的子程序
/*****定时中断服务程序*****/
TIMER_0:
PUSHACC
PUSHPSW ;保护现场
MOVTH0,#3CH
MOVTL0,#0B0H ;重新赋定时初值
CPL47H ;产生脉冲用于调时快进时基
INC24H
MOVA,24H
CJNEA,#10,ADD_TIME ;产生0.5秒基准时钟,用于调时闪烁
CPL48H ;取反调时闪烁标志位
MOV24H,#00H
ADD_TIME:
INC20H
MOVA,20H
CJNEA,#20,RETI1 ;产生1秒基准时钟
MOV20H,#00H ;一秒钟时间到,清零20H
MOVA,21H
ADDA,#01H
DAA ;作十进制调整
MOV21H,A
CJNEA,#60H,RETI1
MOV21H,#00H ;一分钟到
MOVA,22H
ADDA,#01H
DAA
MOV22H,A
CJNEA,#60H,RETI1
MOV22H,#00H ;一小时到
MOVA,23H
ADDA,#01H
DAA
MOV23H,A
CJNEA,#24H,RETI1
MOV23H,#00H ;到24点,清零小时
RETI1:
POPPSW
POPACC ;恢复现场
RETI ;中断返回
/*****显示处理*****/
DISPLAY:
MOVA,21H ;秒
ANLA,#0FH
MOV2FH,A ;转换出秒个位,存入2FH
MOVA,21H
ANLA,#0F0H
SWAPA
MOV2EH,A ;转换出秒十位,存入2EH
JB46H,MIN ;如果长按按键(调时快进),则跳过闪烁处理
CJNER1,#3,MIN ;如果R1为3,闪烁秒位待调整
JB48H,MIN
MOV2FH,#0AH ;使该位为10,查表得到使该位不显示的输出
MOV2EH,#0AH
MIN:
MOVA,22H ;分
ANLA,#0FH
MOV2DH,A ;转换出分个位,存入2DH
MOVA,22H
ANLA,#0F0H
SWAPA
MOV2CH,A ;转换出分十位,存入2CH
JB46H,HOUR ;如果长按按键(调时快进),则跳过闪烁处理
CJNER1,#2,HOUR ;如果R1为2,闪烁分位待调整
JB48H,HOUR
MOV2DH,#0AH ;使该位为10,查表得到使该位不显示的输出
MOV2CH,#0AH
HOUR:
MOVA,23H ;时
ANLA,#0FH
MOV2BH,A ;转换出时个位,存入2BH
MOVA,23H
ANLA,#0F0H
SWAPA
MOV2AH,A ;转换出时十位,存入2AH
JB46H,DISP ;如果长按按键(调时快进),则跳过闪烁处理
CJNER1,#1,DISP ;如果R1为1,闪烁时位待调整
JB48H,DISP
MOV2BH,#0AH ;使该位为10,查表得到使该位不显示的输出
MOV2AH,#0AH
/*****数码管动态扫描显示*****/
DISP:
MOVDPTR,#TABLE
MOVA,2FH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.7
LCALLDELAY
SETBP2.7 ;显示秒个位
MOVA,2EH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.6
LCALLDELAY
SETBP2.6 ;显示秒十位
MOVA,#0BFH
MOVP0,A
CLRP2.5
LCALLDELAY
SETBP2.5 ;显示“-”
MOVA,2DH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.4
LCALLDELAY
SETBP2.4 ;显示分个位
MOVA,2CH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.3
LCALLDELAY
SETBP2.3 ;显示分十位
MOVA,#0BFH
MOVP0,A
CLRP2.2
LCALLDELAY
SETBP2.2 ;显示“-”
MOVA,2BH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.1
LCALLDELAY
SETBP2.1 ;显示时个位
MOVDPTR,#TABLE1 ;该位使用TABLE1以消除前置0
MOVA,2AH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.0
LCALLDELAY
SETBP2.0 ;显示时十位
RET
/*****按键检测子程序*****/
KEY_SCAN:
CLR46H ;关闭长按调整(调时快进)标志
MOVP1,#0FFH ;将P1口设置成输入状态
MOVA,P1
CPLA
ANLA,#0FH ;P1口低4位连接4个按键,只判断该4位
JZEXIT_KEY ;无键按下则返回
LCALLDELAY ;延时去抖动
MOVA,P1 ;重新判断
CPLA
ANLA,#0FH
JZEXIT_KEY ;键盘去抖动
MOVR5,A ;临时将键值存入R5
MOVR4,#00H ;用于控制调时快进速度
;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进
LOOP:
;进入长按处理
LCALLDISPLAY ;使长按时显示正常
MOVA,P1
CPLA
ANLA,#0FH
JB47H,LOOP1
INCR4 ;调时快进间隔时间基准加1
LOOP1:
CJNER1,#03H,LOOP2 ;如果调秒时长按,则不处理
LJMPLOOP3
LOOP2:
CJNER4,#99H,LOOP3
MOVR4,#70H ;确认用户长按后,重新设定起始值,加快调时快进速度
SETB46H ;长按调整(调时快进)标志
LCALLADD_KEY
LCALLDEC_KEY
LOOP3:
JNZLOOP ;等待键释放
MOVA,R5 ;输出键值
RET
EXIT_KEY:
RET
/*****延时子程序*****/
DELAY:
MOVR7,#150
DJNZR7,$
RET
/*****选择键处理子程序*****/
SET_KEY:
CJNER5,#01H,EXIT ;选择键键值
INCR1 ;调整选择功能标志加一
SETBBEEP
CJNER1,#4,EXIT
MOVR1,#0
MOV24H,#00H ;调时闪烁基准清零
RET
/*****增加键处理子程序*****/
ADD_KEY:
CJNER5,#02H,EXIT ;增加键键值
CJNER1,#01H,NEXT1 ;选择键功能标志为1,调时,否则跳出
MOVA,23H
ADDA,#01H
DAA
MOV23H,A
CJNEA,#24H,EXIT
MOV23H,#00H
NEXT1:
CJNER1,#02H,NEXT2 ;选择键功能标志为2,调分,否则跳出
MOVA,22H
ADDA,#01H
DAA
MOV22H,A
CJNEA,#60H,EXIT
MOV22H,#00H
NEXT2:
CJNER1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出
MOV21H,#00H ;如增加键按下直接清零秒
RET
/*****减少键处理子程序*****/
DEC_KEY:
CJNER5,#04H,EXIT ;减少键键值
CJNER1,#01H,NEXT3 ;选择键功能标志为1,调时,否则跳出
MOVA,23H
ADDA,#99H
DAA
MOV23H,A
CJNEA,#99H,EXIT
MOV23H,#23H
NEXT3:
CJNER1,#02H,NEXT4 ;选择键功能标志为2,调分,否则跳出
MOVA,22H
ADDA,#99H
DAA
MOV22H,A
CJNEA,#99H,EXIT
MOV22H,#59H
NEXT4:
CJNER1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出
MOV21H,#00H ;如较少键按下直接清零秒
RET
/*****强制响铃键处理子程序*****/
DALING_KEY:
CJNER5,#08H,EXIT ;选择键键值
CPLBEEP
RET
/*****万用返回程序*****/
EXIT:
RET
/*****数码管字形编码表*****/
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;字形显示编码
TABLE1:
DB0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;小时位的十位数编码,该位如果为0则不显示
/*****打铃时间对比程序(起床、熄灯)*****/
BIJIAO1:
MOVA,23H
CJNEA,#06H,B0
MOVA,22H
CJNEA,#00H,B0 ;6:
00到
SETB45H ;开启响铃方式1
RET
B0:
MOVA,23H
CJNEA,#22H,EXIT_1
MOVA,22H
CJNEA,#30H,EXIT_1 ;22:
30到
SETB45H ;开启响铃方式1
RET
EXIT_1:
CLR45H
RET
/*****打铃时间对比程序(上、下课)*****/
BIJIAO2:
MOVA,23H
CJNEA,#07H,B1
MOVA,22H
CJNEA,#30H,B1 ;7:
30
SETB44H ;开启响铃方式2
RET
B1:
MOVA,23H
CJNEA,#08H,B2
MOVA,22H
CJ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动 打铃 控制系统 设计