第1章 设计任务书
1.1目的与目标在学校生活中,每一天和下一堂课都离不开打铃器的使用。铃声可以为在校学生和老师提供提醒,同时也可以作为提醒学生日程安排,让我们有时间感,形成一个规律的时钟,对自己的健康也有很大的好处。对于那些上课拖堂现象,广大教师知识的发展也给一个班的时间提醒学生,以免耽误下一节课的上课时间。
随着现代科学技术的发展,提高管理水平,已使钟装置自动提示节省人力资源,降低成本,对实现综合管理有很大帮助。而自动打铃系统继续影响着我们的生活和学习,它已广泛应用于各个学校,它可以实现学校的办公自动化,为学校管理服务。自动打铃器配有微电脑,充分发挥了体积小、价格便宜、功耗低、可靠性好等优点,而且还可以修改为学校课表,方便广大师生。自动打铃系统的研究和应用已经非常普及,选择这一课题的原因是看其成熟性和通用性。
在第二十世纪和第二十一世纪的半导体和集成电路技术的电子技术的发展,电子技术已渗透到各行各业,具有更快的林格电子表格为自然主要依据时间和更新提供参考,现在各种功能,层出不穷的贝尔更先进使用智能设备的使用,离不开供应链管理。单片机只是一个微型计算机,包括中央处理器杯、随机存取存储器ram、只读存储器ROM、I/O口、串口等部件,可作为系统的主控制器,其他部分电路将集成在一起构成一个智能控制系统。
基于以上原因,本课题设计了一款基于单片机的自动打铃系统,使用简单方便、功能齐全。
1.2软硬件环境1.硬件清单:
2、软件
Proteus7.5sp3
记事本
第2章 设计、制作2.1 总体设计系统设计框图如下:(见附件)
系统软件设计流程图如图所示。
程序设计过程:首先要定义单片机的引脚,然后初始化器件,再利用DS1307的读写时序读取时间数据。再利用按键进入时间设定状态,设定完时间后单片机通过比较时间是否到达设定的时间来确定是否到打铃时间,如果达到打铃时间,则控制蜂鸣器响LED灯亮。
2.2各部分的电路设计2.2.1时钟电路设计
时钟芯片的SCL引脚和SDA引脚分别由单片机的P3.1和P3.2引脚控制,单片机只需按照DS1302的工作时序来控制即可实现时间的写入和读取,其中DS1302的时钟端与数据端需外接上拉电阻,本设计选用5针排阻来充当上拉电阻。
2.2.2按键电路
由单片机的P1口控制按键电路。本设计中按键用于设定定时时间、打铃时间间隔,所以只需4路按键即可实现所需功能,采用独立式按键即可。由于按键是机械式触点,所以在断开或闭合时,一般都有抖动产生,虽然这个抖动时间在我们看来非常短,但是单片机执行指令的速度为微秒级别,很容易会读取这个时间而将其判断为真正的工作状态,从而引起误判。因此,在设计中必须考虑到按键抖动的影响。常用的去抖动的方法有两种:硬件方法和软件方法。硬件方法一般是加电容或者RS触发器;软件方法是在单片机在检测引脚所连接的按键的工作状态时加一个延时程序再次确认,通过2次的确认就可以确保按键的工作状态不受机械抖动的影响了。
2.2.3单片机电路
晶振电路用于产生单片机工作时所需要的时钟信号,单片机的指令必须在时钟信号下按照时序执行。晶振电路通常用两种设计方式:内部振荡方式和外部振荡方式。内部振荡方式是在单片机的XTAL1和XTAL2引脚外接一个晶体振荡器,与单片机内部的振荡器组成时钟信号;外部振荡方式是在外部将已有的脉冲信号引入单片机内,一般用于使单片机的时钟与外部信号保持同步。本设计选用内部振荡方式,在XTAL1和XTAL2引脚之间连接一个12MHz的晶振,再分别外接30p的对地电容。
单片机在启动时需要复位,使系统各器件处于初始状态。复位引脚为RST,当系统上电后晶振电路稳定后,RST引脚有一个高电平且持续2个机器周期以上,单片机系统就可以实现复位功能。复位一般有手动复位和上电复位功能。手动复位是在RST引脚设置按键,当按键按下时,RST引脚会有高电平,即可实现复位功能;上电复位是在RST引脚连接一个电解电容接至电源,再接一个电阻接地,系统上电时,电容充电,只要电源的上升时间不超过1ms,就可以实现复位功能。本设计选用按键复位。
2.2.4显示电路
单片机的P2口作为LCD1602的数据线端口,P3口控制LCD1602的使能端。单片机读取数据后,通过控制LCD1602的读写端、复位端和使能端将其设置为写入数据状态,再将数据通过P2口送入LCD1602实现显示功能。
2.2.5打铃电路
打铃电路一般用声音或音乐作为提醒,本设计选用蜂鸣器和LED灯实现声光双重打铃功能,电路如图3-7所示。打铃时间到时,单片机P3.3引脚置高,三极管9013导通,继而蜂鸣器和LED灯导通,实现蜂鸣和灯亮打铃功能。
系统蜂鸣器的工作原理如下:当单片机端口输出高电平时,三极管B极(三极管的各个参数如3.6节所示)处于高电平,三极管不导通,蜂鸣器不响。当单片机端口输出低电平时,三极管B极处于低电平,三极管导通,蜂鸣器鸣响。在本系统中如果要运用到实际中的话本来是要把单片机端口P3.4口接上继电器再控制220V电源的电铃的,但由于各种原因,在这次设计中我是用蜂鸣器来显示出打铃的效果的,蜂鸣器与单片机的连接图如图所示。
2.3 硬件连接2.4 程序设计(见附件)第3章 调试3.1源程序的编辑一、使用的工具:记事本
二、编辑的具体操作步骤
1、ds1302 内部RAM RAM0 1100 000R/W 1读 0写
RAM1 1100 001R/W
.......
RAM30 1111 110R/W
定义ds1302时钟线、数据线和复位线。
2、写一个数据到对应的地址里
3、从对应的地址读一个数据出来
4、把要的时间 年月日 都读出来
5、把要写的时间 年月日 都写入ds1302里
6、把数据保存到ds1302 RAM中**0-31
7、设置ds1302时间函数
8、把数据从ds1302 RAM读出来**0-31
9、初始化ds1302时间
10、AT89C51扇区分布
第一扇区:1000H--11FF
第二扇区:1200H--13FF
第三扇区:1400H--15FF
第四扇区:1600H--17FF
第五扇区:1800H--19FF
第六扇区:1A00H--1BFF
第七扇区:1C00H--1DFF
第八扇区:1E00H--1FFF
11、AT89C52扇区分布
第一扇区:2000H--21FF
第二扇区:2200H--23FF
第三扇区:2400H--25FF
第四扇区:2600H--27FF
第五扇区:2800H--29FF
第六扇区:2A00H--2BFF
第七扇区:2C00H--2DFF
第八扇区:2E00H--2FFF
12、打开 ISP,IAP 功能
13、关闭 ISP,IAP 功能
14、触发代码
15、字节读
16、扇区擦除
17、字节写
18、延时函数
19、lcd1602写命令函数
20、lcd1602写数据函数
21、lcd1602初始化设置
22、lcd1602上显示两位十进制数
23、lcd1602上显示两位十进制数
24、lcd1602上显示这字符函数
25、控制光标函数
26、开机液晶显示函数 初始化液晶的内容
三、编辑时注意的问题
1、写一个数据到对应的地址里时要低位在前
2、从对应的地址读一个数据出来时要注意最后返回读出来的数据
3、把要写的时间 年月日 都写入ds1302里要记得开始时打开写保护,结束时关闭写保护
4、把数据保存到ds1302 RAM中**0-31时地址是从第二位开始的
5、初始化ds1302时间第一次读写数据时要把IO品拿低
四、给出过程中的截图。
3.2 编译一、使用的工具Proteus7.5sp3
二、编译的过程(主要步骤,要有截图)
三、编译后的结果
3.3 烧写烧写工具的名称
烧写的过程(主要步骤,要有截图)
3.4 调试调试的主要过程(或调试的主要内容)
出现问题的原因是什么,如何解决?
最终的调试结果
第4章 总结本设计是一种为上课时间设计的自动打铃系统,可在工厂、工厂车间、学生等场所使用,能起到很好的时钟功能,方便人们的日常生活。在硬件设计部分,LCD对LCD进行监控,具有功耗低、工作电压低的特点,显示质量高、可视面积大,能很好地实现设计要求,减少了软件编程的难度。
自动打铃系统还存在不足和缺点,主要表现在这些方面:虽然系统能够很好的实现打铃的要求,但是能够设定的打铃时间只有六个,这是因为想降低编程时的难度,在不影响其功能的前提下,降低了要求;还有就是其扩展性不强,后续的发展比较困难,制约了系统的升级,在商品竞争中没什么优势,需要进一步的研究和开发。
通过此次期末设计,我对所学专业的知识有了很好的回顾和实践,提高了自己的动手和思考能力,这对我自身的发展有很大的帮助,同时在此期间我查阅了很多的书籍和资料,从中学到了很多课本上没有的知识,拓展了自己的知识面,如果没有前期的准备工作是没法很好的完成此次设计的,所以想了解更多,看到更多更想做的,是学习知识的必备素质,这对我未来的发展和进步有着至关重要的作用。