校园打铃系统的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统综合设计实训报告
——校园打铃系统的设计
校园打铃系统的设计
一、实训目的
1、设计一个校园打铃系统,使用的是24小时计时制,能够设置多个打铃时
间,同时要求能够在系统掉电时,时间能够继续,打铃时间的数据能够保持。
2、掌握LCD1602、DS1302、DS18b20、AT24C02等相关知识
3、进一步了解时钟电路、复位电路、工作电源电路、程序存储器选择电路
二、实训内容
1、时钟功能:能显示年、月、日、星期、时、分、秒、温度等信息
2、调整功能:能校正年、月、日、时、分、秒、星期等信息
3、打铃功能:按指定的时间发出声音,并且闪光
4、设置的作息时间数据在单片机掉电后不会丢失 三、实训整体框图
中央处理单元STC89C52
时钟模块DS1302
存储模块AT24C02
液晶显示模块LCD1602
打铃模块
蜂鸣器、LED 指示灯
输入模块4X4矩阵键盘
时钟电路、复位电路、工作电源电
路、程序存储器选择电路
温度采集模块DS18B20
图1 系统总体设计图
四、各功能模块介绍 1、最小系统
单片机最小系统包括单片机(STC89C52)、时钟电路、复位电路、工作电源电路、程序存储器选择电路五个部分。 2、时钟模块DS1302
DS1302是美国DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM ,采用SPI 三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM 数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V 。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。 3、存储模块AT24C02
AT24C02提供2k 位的串行电可擦写可编程只读存储器(EEPROM),组织形式为256字×8位字长,采用IIC 总线接口。 4、温度采集模块DS18B20
DS18B20数字温度计是DALLAS 公司生产的1-Wire ,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。 5、打铃模块
采用蜂鸣器和LED 指示灯作为系统打铃的声光报警器。 6、液晶显示模块LCD1602
LCD1602液晶显示器可以显示2行16列,共32个字符。
7、键盘输入模块
采用16键的矩阵式键盘,分别定义为0-9的数字键与其他的功能键。
图2 矩阵式键盘
8、LCD1602
2 0 1 1 - 0 8 - 2 2 S u n
2 3 :1 2 :4 9 ♫±2 6 . 7 º C
2 0 1 1 - 0 8 - 2 2 S u n
2 3 :1 2 :4 9 ±2 6 . 7 º C
S e t u p r i n g b e l l
t i m e r 0 1 2 3 :1 2 :4 9
9、矩阵键盘功能划分
●“15”键:界面切换功能,能够依次显示主界面、修改时间界面、打铃
时间界面
●“14”键:保存修改后的时间
●“12”键:关闭响铃
10、系统流程图
修改当前时间函数
五、程序代码
以下代码实现的功能是:
◆能够显示年月日、时分秒、星期、温度
◆能够修改小时、分钟、秒钟并且保存修改的时间
能够设置打铃时间,到设置的时间时蜂鸣器发出响声,设定为响10s,小灯亮。
1、zdy.h
int a,b,T;//自定义的变量
2、ds18b20.h
#include
sbit DQ=P2^2; //DQ的控制位
void delay5us(void) //延时5微秒
{
_nop_();
}
void delay1(int x) //x=(1. 20us,2. 28us,3. 36us,5. 52us,50. 412us,60. 492us,65. 535us)
{
unsigned int i;
for(i=0;i } //初始化,主机发送复位脉冲,从机如果存在则发送存在的应答脉冲 bit rst1bus(void) { bit f; DQ=1;//准备阶段 DQ=0 ;//将DQ线拉低 delay1(65);//延时500us,主机发送复位脉冲:480us至960us的低电平 DQ=1 ;//将DQ线拉高 delay1(3); //延时40us;//主机释放总线:15us至60us的高电平 f=DQ;//从机如果存在则60us至240us内回复低电平 delay1(10);// 延时100us; DQ=1; delay1(40);// 延时350us;//结束阶段 return(f);//f=0:从设备存在;f=1:从设备不存在 } //位写入函数:每次写1位数据 void writebit(bit x) { DQ=1;//准备阶段 DQ=0; _nop_();//延时2us,主机发送15us的低电平 _nop_(); DQ=x; delay1(6);//延时60us,从机DS18B20在至少60us内完成采样 DQ=1;//结束阶段 _nop_();//延时1us;