1、 成绩课程论文 题 目: 基于STM32多功能电子时钟 学生姓名: 梁健 学生学号: 系 别: 电气信息工程系 专 业: 电子信息科学与技术 年 级: 级 任课教师: 郑晓东 电气信息工程学院制 3月 基于stm32多功能电子时钟 学生:梁健指引教师:郑晓东电气信息工程学院电子信息科学与技术专业一、设计任务与规定51、设计任务52、设计规定5二、方案设计与论证51、单片机芯片选取方案72、显示选取方案7三、硬件单元电路设计与参数计算81、电源电路82、按键电路83、rtc时钟94、12864显示电路95、温度传感器模块10四、软件设计与流程图101、主程序流程图102、显示子程序流程图123、
2、按键子程序流程图14五、总原电路及元器件清单161总原理图16六、元器件清单26七、主程序26八、参照文献30摘要:本论文基于单片机原理技术简介了一款于stm32芯片作为核心控制器单片机数字电子钟设计与制作,涉及硬件电路原理实现方案设计、软件程序编辑实现、数字电子钟正常工作流程、原理图仿真实现、硬件实物安装制作与硬件实物调试过程。该单片机数字电子钟采用stm32自带RTC,用lLCD12864可以精确显示时间(显示格式为:年月日时分秒),可随时进行时间调节,时间可采用12 小时制显示或24 小时制显示,用12864做成菜单形式,闹铃提示,可按自己规定设立扩展小键盘个数,并增长温度显示。核心词:
3、单片机、数字电子钟、LCD12864、STM32、RTC,温度传感器一、设计任务与规定1、设计任务 用STM32设计一种数字电子钟,采用LCD12864来显示并修改,时间或闹铃。2、设计规定 (1)显示格式为:XXXXXX XXXXXX 即:年月日 时分秒。 (2)具备闹铃功能。(3)按键变化时间。(4)按键变化闹铃。(5)温度显示。二、方案设计与论证整个系统用stm32单片机作为中央控制器,由单片机执行采集内部rtc值,时钟信号通过单片机I/O口传给LCD12864,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号输出、LCD12864显示及有关控制功能。系统设有按键模块用于对时间
4、进行调节及扩展各种小键盘,系统整体框图如图1所示。设立?是显示时间,温度跳出?开始 选取更改时间,闹铃正常显示图1 系统整体框图1、单片机芯片选取方案方案一:stm32是一种低功耗,高性能32位单片机,片内含4k Bytes ISP(In-system programmable)可重复擦写1000次Flash只读程序存储器。重要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定期器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定期器、双数据指针、掉电标记符、易编程。方案二:AT89C52是一种低电压
5、,高性能CMOS 8位单片机,片内含8k bytes可重复擦写Flash只读程序存储器和256 bytes随机存取数据存储器(RAM)。重要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit内部RAM、3个16位可编程定期/计数器中断、时钟频率0-24MHz、2个串行中断、可编程UART串行通道、2个外部中断源、6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式、软件设立睡眠和唤醒功能。从单片机芯片重要性能角度出发,本数字电子钟单片机芯片选取设计采用方案一既stm32。2、显示选取方案方案一:lcd1286。显示质量高,没有电磁辐射,可视面积大,应用范畴广,画面效
6、果好,数字式接口,”身材”匀称小巧,功耗小。 方案二:数码管动态显示。动态显示,即各位数码管轮流点亮,对于显示屏各位数码管,每隔一段延时时间循环点亮一次。运用人视觉暂留功能可以看到整个显示,但须保证扫描速度足够快,人视觉暂留功能才可察觉不到字符闪烁。显示屏亮度与导通电流、点亮时间及间隔时间比例关于。调节参数可以实现较高稳定度显示。动态显示节约了I/O口,减少了能耗。从节约单片机芯片I/O口和减少能耗角度出发,本数字电子钟数码管显示选取设计采用方案一,既lcd12864显示。三、硬件单元电路设计与参数计算1、电源电路本数字电子钟设计所需电源电压为直流、电压值大小5V电压源 。从硬件实物设计简易限
7、度与经费方面考虑,用两节电压值大小2.5V干电池与电路电压源引脚相连接即可达到硬件设计规定。即本数字电子钟设计用两节电压值大小2.5V干电池做硬件电路电压源。2、按键电路 本数字电子钟设计所需按键用于进行显示时间调节与设立扩展小键盘。单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平高低,即按键开与关,以达到用按键进行显示时间调节与设立扩展小键盘设计规定。3、rtc时钟 Stm32自带rtc模块 , 实时时钟是一种独立定期器。RTC模块拥有一组持续计数计数器,在相应软件配备下,可提供时钟日历功能。修改计数器值可以重新设立系统当前时间和日期RTC模块和时钟配备系统(
8、RCC_BDCR寄存器)处在后备区域,即在系统复位或从待机模式唤醒后,RTC设立和时间维持不变。系统复位后,对后备寄存器和RTC访问被禁止,这是为了防止对后备区域(BKP)意外写操作。在RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL)赋值可变化时间,在RTC闹钟寄存器(RTC_ALRH/RTC_ALRL)中变化闹铃时间。 4、12864显示电路 数字电子钟设计显示模块用8个一位数码管实现,也可用两个四位一体数码管实现。两种实现方式实现效果同样。从实物制作难易限度出,本数字电子钟设计采用两个四位一体数码管实现。即数码管引脚与单片机芯片和74LS245相应引脚相连接。5、温度传感
9、器模块 DS18B20数字温度传感器接线以便,封装成后可应用于各种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号各种各样,有LTM8877,LTM8874等等。重要依照应用场合不同而变化其外观。封装后DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,干净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用以便,封装形式多样,合用于各种狭小空间设备数字测温和控制领域。1:技术性能描述、独特单线接口方式,DS18B20在与微解决器连接时仅需要一条口线即可实现微解决器与DS18B20双向通讯。 、测温范畴 55+125,固有测温误差(注意,不是辨别率
10、,这里之前是错误)0.5。、支持多点组网功能,各种DS18B20可以并联在唯一三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而导致信号传播不稳定。、工作电源:35V/DC (可以数据线寄生电源) 、在使用中不需要任何外围元件。四、 软件设计与流程图1、主程序流程图主程序流程图如下图图2所示否是更改数值显示温度Sec变了?启动rtc,初始化温度进入循环图22、显示子程序流程图 显示程序流程图如下图图3所示。Y与否满24h?显示缓冲单元清0返回NY与否满60m?小时加1分值加1NRtc计数开始循环次数加1与否满1s?与否满60s?秒值加1N开始图33、按键子程序流程
11、图 显示子程序流程图如下图图4所示。DISPLAY秒数加1秒值按键按下?分值按键按下?小时按键按下?切换键是否按下?YN小时=12?NY标志位显示B标志位显示A分离秒值个位、十位显示分十位、个位分离小时个位、十位显示秒十位、个位分离分值个位、十位显示小时十位、个位分数加1时数加1正常显示?显示HYYYY开始图4五、总原电路及元器件清单 1总原理图 最小系统控制原理图如下图图5所示,12864原理图如下图图6所示。图5(1):stm32f103引脚图图5(2):批示灯与复位电路图5(3):稳压电路,变压电路,晶震图6 2实物图图7 按键模块图8 stm32最小系统模块图9 欢迎界面图10 选取界
12、面图11 正常显示界面图12 选取时界面图13 调节时间界面图14 调节闹铃界面图15 闹铃开始界面图16 12864实物图17 调温度传感器实物六、元器件清单STM32F103VET6一种杜邦线一束Lcd12864一种定位器(10k)一种Ds18b20一种插排一排电源一种铜柱两个七、主程序/#include #include sys.h#include usart.h#include delay.h#include led.h #include key.h#include exti.h#include wdg.h#include timer.h #include rtc.h #include
13、 lcd12864.h#include ds18b20.h #include adc.h#include timer.h const u8 *COMPILED_DATE=_DATE_;/获得编译日期const u8 *COMPILED_TIME=_TIME_;/获得编译时间extern u8 TIM5CH1_CAPTURE_STA;/输入捕获状态 extern u16TIM5CH1_CAPTURE_VAL;/输入捕获值short temp;int main(void)/u16 adcx;u8 t=1; Stm32_Clock_Init(9);/系统时钟设立delay_init(72);/延时初
14、始化uart_init(72,9600);/串口1初始化 KEY_Init();LCD12864_initial(); /初始化12864液晶LCD_Clearh(); /12864液晶初始化 LED_Init(); /初始化与LED连接硬件接口Adc_Init(); /AD转换初始化EXTIX_Init(); /外部中断初始化RTC_Init(); /时钟初始化 xuanzhe(); /选取你需要操作while(DS18B20_Init()/初始化DS18B20,兼检测18B20LCD(3,0,失败);delay_ms(500); LED0=!LED0;/DS0闪烁 while(1)temp
15、=DS18B20_Get_Temp();if(temp0)temp=-temp;LCD(3,4,_); Show_dig(2,5,temp/10);/显示温度值 LCD12864_sendbyte(0,0x33); LCD12864_sendbyte(1,46); Show_digl(temp%10); LCD(2,7,); if(t!=timer.sec) t=timer.sec; Show_dig(1,0,timer.w_year);LCD12864_sendbyte(1,47);if(timer.w_month=9) Show_digl(0); Show_digl(timer.w_mon
16、th); else Show_digl(timer.w_month);LCD12864_sendbyte(1,47);if(timer.w_date=9) Show_digl(0); Show_digl(timer.w_date); elseShow_digl(timer.w_date); switch(timer.week)case 0:LCD(1,5,星期天);break;case 1:LCD(1,5,星期一);break;case 2:LCD(1,5,星期二);break;case 3:LCD(1,5,星期三);break;case 4:LCD(1,5,星期四);break;case 5
17、:LCD(1,5,星期五);break;case 6:LCD(1,5,星期六);break; Show_digshuzhi(2,0,timer.hour); LCD12864_sendbyte(1,58);LCD12864_sendbyte(0,0x33);if(timer.min=9) Show_digl(0); Show_digl(timer.min); else Show_digl(timer.min);LCD12864_sendbyte(0,0x33);LCD12864_sendbyte(1,58);if(timer.sec=9) Show_digl(0);Show_digl(time
18、r.sec);else Show_digl(timer.sec); LCD12864_sendbyte(0,0x02); Show_dig(2,5,temp/10);/显示温度值 LCD12864_sendbyte(0,0x33); LCD12864_sendbyte(1,46); Show_digxiaoshu(temp%10); LCD(2,7,); delay_ms(50); LCD12864_sendbyte(0,0x02); 八、 参照文献1 康华光.电子技术基本模仿某些第四版M.北京:高等教诲出版社,1999.6.2 阎石.数字电子技术基本第四版M.北京:高等教诲出版社,1999.
19、6.3王福瑞等单片微机测控系统设计大全M北京航空航天大学出版社,1998(331337)4宁改娣,杨拴科DSP控制器原理及应用M科学出版社,5 周立功等.ARM嵌入式系统基本教程M.北京:北京航空航天大学出版社,.1.6 周立功等.ARM嵌入式系统实验教程M.北京:北京航空航天大学出版社,.1.7 罗浩等.一种新基于ARM数据采集系统设计J.信阳师范学院学报(自然科学版),.4.8 秦伟等.基于ARM 解决器数据采集系统设计J.自动化技术与应用. 年第10 期.9 杜春雷.ARM体系构造与编程.清华大学出版社,. 10 李宁.ARM开发工具ReaIView MDK使用入门M.北京航空航天大学出版社,.11 李宁.基于MDKSTM32解决器开发应用M.北京航空航天大学出版社,.12刘黎明等.单片机与嵌入式系统应用J.英文刊名MICROCON TROLLER&EMBEDDED SYSTEM. (7).