《工业微控制器课程设计-基于STM32的教学楼电子打铃器课程设计(10页).doc》由会员分享,可在线阅读,更多相关《工业微控制器课程设计-基于STM32的教学楼电子打铃器课程设计(10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-工业微控制器课程设计-基于STM32的教学楼电子打铃器课程设计-第 8 页工业微控制器课程设计题 目: 教学楼电子打铃器设计 院系名称: 电气工程学院 专业班级: 学生姓名: 学 号: 指导教师: 成绩:指导老师签名: 日期: 目 录引言11系统概述11.1设计任务11.2设计要求12 方案设计与论证12.1单片机芯片选择方案22.2 作息时间控制钟系统概述22.3设计要求:22.4单片机总体设计思路22.5各功能模块程序实现原理分析33 STM32性能介绍及硬件设计33.1 STM32单片机性能介绍33.2电子打铃系统硬件设计44 系统程序74.1主程序设计如下74.2 主程序内容84.3
2、 定时器中断函数以及按键程序如图105 调试仿真11心得体会14参考文献:15引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效的方法就是理论与实践并重,本文用STM32单片机设计的一个电子打铃系统。本次设计中的LED数码管电子时钟电路采用24小时制记时方式,本次设计采用STM32单片机,使用5V
3、电源供电,并且在按键的作用下可以进行调时,调分,复位功能。计时数据的更新在计算机C语言的驱动下每秒自动进行一次,但不需程序干预其输出状态。1系统概述1.1设计任务 用STM32设计一个教学楼电子打铃器。 1.2设计要求 (1)设置至少3种打铃模式,例如正常模式、周末模式、考试模式等;(2)能够通过按键设置打铃时间和每种模式的打铃次数等参数;(3)设置的参数能够掉电存储;(4)具有LED显示接口。2 方案设计与论证2.1单片机芯片选择方案 stm32是一个低功耗,高性能32位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只
4、读程序存储器。主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz33Hz、 三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。2.2 作息时间控制钟系统概述: 本设计是一个具有打铃功能的作息时间控制钟。它利用STM32单片机的自带的时基计时,进行年历计算,并用的蜂鸣器驱动模块将它打出来;在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。由七段显示驱动模块、蜂鸣器驱动模块和按钮控制模块三部分组成,四个按键用于报时及校正时间。现代机关企
5、业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。本设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。2.3设计要求:利用单片机组成一个电子打铃器。按照学校上下课铃声次序设定定时间用一个蜂鸣器模拟电铃,正常模式和周末模式响铃1.8s考试模式时响铃3.6s。 通过LED可以正常显示2.4单片机总体设计思路 (1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘 (2)进行软件设计,利用单片机的系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒; (3)在秒计数器的基础上设计一个24小时
6、时钟,并设计若干定时功能; (4)设计打铃执行机构,完成自动打铃功能。2.5各功能模块程序实现原理分析 该模块由蜂鸣器驱动模块,LED模块和按钮控制模块组成。且都通过STM32来实现。1 蜂鸣器驱动模块 采用压电式蜂鸣器,压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5-15V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。2 按钮控制模块 四个按钮的一端分别接地,另一端接单片机一个端口的四个引脚,当某一个按钮按下的时候,其对应的引脚就由高电平变成低电平,然后通过单片
7、机扫描读取引脚的电平来判断按钮是否按下。3 LED模块 题目的要求只需用一个LED灯便可以显示传输是否在运行,故只接两个LED灯,LED0为显示传输是否运行的指示灯,SYS为系统是否有电源进行供电的指示灯。3 STM32性能介绍及硬件设计3.1 STM32单片机性能介绍 STM32它拥有的资源包括:48KB SRAM、256KB FLASH、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口,该芯片性价比极高。各个引脚说明
8、如下PA0 作用1,按键 KEY_UP 2,可以做待机唤醒脚(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 接口的 M
9、OSI 信号PA8 作用 作为 接 DS0 LED 灯(红色)PA9 作用 作为串口 1 TX 脚,默认连接 CH340 的 RX(P4 设置)PA10 作用 作为串口 1 RX 脚,默认连接 CH340 的 TX(P4 设置)PA11 作用 作为接 USB D-引脚PA12 作用 作为接 USB D+引脚PA13作用 作为JTAG/SWD 仿真接口,没接任何外设PA14 作用 作为JTAG/SWD 仿真接口,没接任何外设PA15 作用 作为1,JTAG 仿真口(JTDI) 2,PS/2 接口的 CLK 信号 3,接按键 KEY13.2电子打铃系统硬件设计 该程序所需要的主电路图,蜂鸣器电路图
10、,电源电路图以及LED电路图以及LCD外部接线图依次如下图所示图1.1主电路图如下图图1.2 蜂鸣器电路图如下图图1.3电源电路图如下图图1.4 LED电路图如下图图1.5 LCD外部接线图如下图4 系统程序4.1主程序设计如下 主程序流程设计图如下图:开始初始化按键检测 有键按下? 考试模式?YN NY周末模式正常模式打铃时间比较打铃时间比较打铃1.8s,执行打铃1.8s,执行打铃3.6s,执行显示图1.5主程序流程设计图如图1.5所示主程序开始初始化后,如没有按键按下时,则为正常模式,继续向下执行对打铃时间的比较,时间正确的话则打铃1.8s;若有按键按下;再次判断是否为考试模式,是则向下进
11、行时间比较,时间正确则打铃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.hextern u8 zhou,hour,min,sec; u8 t,i,shijian=0,a=50; u32 zcdlsj5=/30600,36000,37800,43200,52200,57600,59400,64800/1,5,10,20,25/5 u
12、32 zmdlsj3=/30600,43200,64800/ u32 zcksdlsj4=/32400,39600,54000,61200/ int main(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=zcdl
13、sji) 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=zczmdlsji) PDout(2)=1; delay_ms(a*10); delay_ms(a*10); delay_ms(a*10); PDout(2)=0; else if(t=KEYks_PRES) shijian=(hour*60*60+min*60+sec); for(i=0;i= 60) sec=0;
14、 min+; if(min= 60) min=0; hour+; if(hour= 24) hour=0; zhou+; if(zhou=7) zhou=1;按键程序如下:#define KEYzc GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)/ 读取按键正常模式#define KEYks GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)/ 读取按键考试模式#define KEY_ts GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)/ 读取按键调节时间 #define KEYzc_PRES1/ 正
15、常模式按下 #define KEYks_PRES2/ 考试模式按下#define KEY_ts_PRES3/ 调节时间按下void KEY_Init(void);/ 初始化u8 KEY_Scan(u8 mode); / 按键扫描函数 #endif/KEYzc_PRES 正常模式按下/KEYzm_PRES 周末模式按下/KEYts_PRES 调节时间模式按下u8 KEY_Scan(u8 mode)static u8 key_up=1;/ 按键按松开标志if(mode)key_up=1; / 支持连按 if(key_up&(KEYzc=0|KEYks=0|KEY_ts=1)delay_ms(10)
16、;/ 去抖动key_up=0;if(KEYzc=0)return KEYzc_PRES;else if(KEYks=0)return KEYks_PRES;else if(KEY_ts=1)return KEY_ts_PRES; else if(KEY_ts=0|KEYzc=1|KEYks=1)key_up=1; return 0;/ 无按键按下5 调试仿真 为保证程序的正常运行,通过软件进行仿真,由于正常情况下时间过长所以选用1s 5s 10s 20s 25s五个时间段进行模拟仿真,方便查验结果是否正确。仿真结果如下图所示:图1.6 5s时打铃的程序程序仿真图如上图图1.7 10s时打铃的程
17、序仿真图如上图1.8 20s时打铃的程序仿真图如上图图1.9 25s时打铃的程序仿真图如上图 打铃时长如下图图1.10 正常模式下打铃的时长仿真图如上图 通过仿真结果发现该程序能够按照程序预定的分别在1s 5s 10s 20s 25s进行打铃,且打铃时间为设置的1.8s,证明该程序没有问题。心得体会 本系统被广泛用于学校等相似的教育机构,设计比较简单。经过一学期的学习,使我对STM32有了初步的认识,了解了一些软件编程的技巧。 经过这次的课程设计,使我学会了课堂上学不到的知识,颇有一番感受,对于单片机有了更深的了解,也温习了电路的基本设计思路和原理,掌握了单片机的设计步骤,知道这门课程在工作中的重要性。由于知识点不够精通,所以经常出现问题,在程序设计中出现了太多问题,但是经过仔细排查修改了错误。通过这次课程设计加深了学生对所学课程理论的理解,扩展了教学中的实验内容和要求,积累了实践体验和经验,让我们提前感受到毕业设计的大致过程,进而能顺利进入毕业设计,提高毕业设计质量和学生实际应用能力,总之还是取得了很多的经验。参考文献:1 电子技术基础:模拟部分 北京高等教育出版社 康华光19992 基于STM32的嵌入式设计机械工业出版社 卢有亮20143 STM32库开发实战指南机械工业出版社 刘火亮2014