基于STM32的教学楼电子打铃器课程设计.docx

上传人:b****3 文档编号:3132652 上传时间:2022-11-17 格式:DOCX 页数:17 大小:347.68KB
下载 相关 举报
基于STM32的教学楼电子打铃器课程设计.docx_第1页
第1页 / 共17页
基于STM32的教学楼电子打铃器课程设计.docx_第2页
第2页 / 共17页
基于STM32的教学楼电子打铃器课程设计.docx_第3页
第3页 / 共17页
基于STM32的教学楼电子打铃器课程设计.docx_第4页
第4页 / 共17页
基于STM32的教学楼电子打铃器课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于STM32的教学楼电子打铃器课程设计.docx

《基于STM32的教学楼电子打铃器课程设计.docx》由会员分享,可在线阅读,更多相关《基于STM32的教学楼电子打铃器课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

基于STM32的教学楼电子打铃器课程设计.docx

基于STM32的教学楼电子打铃器课程设计

工业微控制器

课程设计

 

题目:

教学楼电子打铃器设计

院系名称:

电气工程学院

专业班级:

学生姓名:

学号:

指导教师:

成绩:

 

指导老师签名:

日期:

 

 

 

引言

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。

学习单片机的最有效的方法就是理论与实践并重,本文用STM32单片机设计的一个电子打铃系统。

本次设计中的LED数码管电子时钟电路采用24小时制记时方式,本次设计采用STM32单片机,使用5V电源供电,并且在按键的作用下可以进行调时,调分,复位功能。

计时数据的更新在计算机C语言的驱动下每秒自动进行一次,但不需程序干预其输出状态。

1系统概述

1.1设计任务

用STM32设计一个教学楼电子打铃器。

1.2设计要求

(1)设置至少3种打铃模式,例如正常模式、周末模式、考试模式等;

(2)能够通过按键设置打铃时间和每种模式的打铃次数等参数;

(3)设置的参数能够掉电存储;

(4)具有LED显示接口。

 

2方案设计与论证

2.1单片机芯片选择方案

stm32是一个低功耗,高性能32位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器。

主要性能有:

与MCS-51单片机产品兼容、全静态操作:

0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。

2.2作息时间控制钟系统概述:

本设计是一个具有打铃功能的作息时间控制钟。

它利用STM32单片机的自带的时基计时,进行年历计算,并用的蜂鸣器驱动模块将它打出来;在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。

由七段显示驱动模块、蜂鸣器驱动模块和按钮控制模块三部分组成,四个按键用于报时及校正时间。

现代机关企业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。

本设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。

2.3设计要求:

①利用单片机组成一个电子打铃器。

②按照学校上下课铃声次序设定定时间

③用一个蜂鸣器模拟电铃,正常模式和周末模式响铃1.8s考试模式时响铃3.6s。

④通过LED可以正常显示

2.4单片机总体设计思路

(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘

(2)进行软件设计,利用单片机的系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒;

(3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能;

(4)设计打铃执行机构,完成自动打铃功能。

2.5各功能模块程序实现原理分析

该模块由蜂鸣器驱动模块,LED模块和按钮控制模块组成。

且都通过STM32来实现。

1蜂鸣器驱动模块

采用压电式蜂鸣器,压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。

多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5-15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。

2按钮控制模块

四个按钮的一端分别接地,另一端接单片机一个端口的四个引脚,当某一个按钮按下的时候,其对应的引脚就由高电平变成低电平,然后通过单片机扫描读取引脚的电平来判断按钮是否按下。

3LED模块

题目的要求只需用一个LED灯便可以显示传输是否在运行,故只接两个LED灯,LED0为显示传输是否运行的指示灯,SYS为系统是否有电源进行供电的指示灯。

3STM32性能介绍及硬件设计

3.1STM32单片机性能介绍

STM32它拥有的资源包括:

48KBSRAM、256KBFLASH、2个基本定时器、4个通用定时器、2个高级定时器、2个DMA控制器(共12个通道)、3个SPI、2个IIC、5个串口、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO接口及51个通用IO口,该芯片性价比极高。

各个引脚说明如下

PA0作用1,按键KEY_UP2,可以做待机唤醒脚(WKUP)3,可以接DS18B20传感器接口(P2设置)

PA1作用1,NRF24L01接口IRQ信号2,接HS0038红外接收头(P2设置)

PA2作用作为W25Q64的片选信号

PA3作用作为SD卡接口的片选脚

PA4作用作为NRF24L01接口的CE信号

PA5作用作为W25Q64、SD卡和NRF24L01接口的SCK信号

PA6作用作为W25Q64、SD卡和NRF24L01接口的MISO信号

PA7作用作为W25Q64、SD卡和NRF24L01接口的MOSI信号

PA8作用作为接DS0LED灯(红色)

PA9作用作为串口1TX脚,默认连接CH340的RX(P4设置)

PA10作用作为串口1RX脚,默认连接CH340的TX(P4设置)

PA11作用作为接USBD-引脚

PA12作用作为接USBD+引脚

PA13作用作为JTAG/SWD仿真接口,没接任何外设

PA14作用作为JTAG/SWD仿真接口,没接任何外设

PA15作用作为1,JTAG仿真口(JTDI)2,PS/2接口的CLK信号3,接按键KEY1

3.2电子打铃系统硬件设计

该程序所需要的主电路图,蜂鸣器电路图,电源电路图以及LED电路图以及LCD外部接线图依次如下图所示

 

图1.1主电路图如下图

 

图1.2蜂鸣器电路图如下图

图1.3电源电路图如下图

 

图1.4LED电路图如下图

图1.5LCD外部接线图如下图

4系统程序

4.1主程序设计如下

主程序流程设计图如下图:

YN

NY

图1.5主程序流程设计图

如图1.5所示主程序开始初始化后,如没有按键按下时,则为正常模式,,继续向下执行对打铃时间的比较,时间正确的话则打铃1.8s;若有按键按下;再次判断是否为考试模式,是则向下进行时间比较,时间正确则打铃3.6s;若判断非考试模式则为周末模式,周末模式打铃1.8s。

继而循环,并再次执行主程序。

4.2主程序内容

#include"led.h"

#include"delay.h"

#include"sys.h"

#include"usart.h"

#include"lcd.h"

#include"timer.h"

#include"key.h"

externu8zhou,hour,min,sec;

u8t,i,shijian=0,a=50;

u32zcdlsj[5]={

//30600,36000,37800,43200,52200,57600,59400,64800//´ËΪÕý³£µÄ½Ìѧ¥´òÁåʱ¼ä

1,5,10,20,25//ÒÔ´Ë5¸öʱ¼ä½øÐзÂÕæ

};

u32zmdlsj[3]={

//30600,43200,64800//´ËΪÖÜĩģʽÏ´òÁåʱ¼ä

};

u32zcksdlsj[4]={

//32400,39600,54000,61200//´ËΪ¿¼ÊÔģʽÏ´òÁåʱ¼ä

};

intmain(void)

{delay_init();

LED_Init();

KEY_Init();

LED1=0;

TIM3_Int_Init(10000,7199);

while

(1)

{

t=KEY_Scan(0);

if(t==KEY_ts_PRES)

{a=100;

}

if(t==KEYzc_PRES)

{if(zhou<=5)

{shijian=(hour*60*60+min*60+sec);

for(i=0;i<=4;i++)

{if(shijian==zcdlsj[i])

{

PDout

(2)=1;

delay_ms(a*10);

delay_ms(a*10);

delay_ms(a*10);

PDout

(2)=0;

}}}

else

{shijian=(hour*60*60+min*60+sec);

for(i=0;i<=2;i++)

{if(shijian==zczmdlsj[i])

{

PDout

(2)=1;

delay_ms(a*10);

delay_ms(a*10);

delay_ms(a*10);

PDout

(2)=0;}

}

}}

elseif(t==KEYks_PRES)

{

shijian=(hour*60*60+min*60+sec);

for(i=0;i<=3;i++)

{if(shijian==ksdlsj[i])

{

PDout

(2)=1;

delay_ms(a*10);

delay_ms(a*10);

delay_ms(a*10);

PDout

(2)=0;}

}}

}

4.3定时器中断函数以及按键程序

定时器中断函数程序如下

voidTIM3_IRQHandler(void)//TIM3ÖжÏ

{

if(TIM_GetITStatus(TIM3,TIM_IT_Update)!

=RESET)

{

TIM_ClearITPendingBit(TIM3,TIM_IT_Update);

sec++;

if(sec>=60)

{

sec=0;

min++;

if(min>=60)

{

min=0;

hour++;

if(hour>=24)

{

hour=0;

zhou++;

if(zhou>=7)

{

zhou=1;

}

}

}

}

}

}

按键程序如下:

#defineKEYzcGPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)//读取按键正常模式

#defineKEYksGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)//读取按键考试模式

#defineKEY_tsGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//读取按键调节时间

#defineKEYzc_PRE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1