基于STM32F103的液晶显示电子钟

摘要:
随着自动化和物联网行业的不断发展,数字信息时代已经到来。在这个以时间为主要提醒的代名词的时候,再加上在这个以数字为主流方向的时刻,数字时钟在生活和工作中显得尤为重要,需求也是不断的增强,对人们生活质量的提高也是尤为重要。
本设计系统就是以液晶进行显示数字时钟的一个微系统设计,本设计三大部分:分别包括信息处理部分、信息采集部分和信息显示部分。其中,信息处理部分是以单片机为核心,外加一些辅助电路组成最小系统;信息采集部分主要是以时钟芯片STM32F103单片机为核心的时间采集模块;信息显示部分是通过整个系统用STM32F103单片机作为中央控制器,由单片机执行采集内部定时器值,时钟信号通过单片机I/O口传给LCD12864,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号的输出、LCD12864的显示及相关的控制功能。经过软件的编写进行单片机读取时间信息并处理和显示控制信息的发送与传输,使得本设计系统完成所需要求,本系统通过软硬件相结合,两者协同工作进而完成所需达到的功能。
单片机实现时钟的设计方法,具有电路简单、编程灵活、便于扩展、精确度高、稳定性好等优点。

关键词:电子时钟;STM32F103单片机;外部中断;液晶显示

Summary:
With the continuous development of automation and Internet of Things, the digital information age has come. In this time of time as the main reminder of the pronoun, coupled with this time of digital mainstream direction, digital clock in life and work is particularly important, the demand is constantly increasing, the quality of life of people is particularly important.
This design system is a microcontroller system which uses liquid crystal to display digital clock. This design consists of three parts: information processing part, information acquisition part and information display part. Among them, the information processing part takes the single chip computer as the core and some auxiliary circuits as the minimum system; the information acquisition part mainly takes the clock chip STM32F103 as the core of the time acquisition module; the information display part takes the STM32F103 single chip computer as the central controller of the whole system, and collects the internal timer value by the single chip computer, and the clock signal passes through the single chip I. / The O port is transmitted to LCD12864. The MCU module controls the driver module to drive the display module. Through the display module, the output of the signal, the display of LCD12864 and related control functions are realized. Through the compilation of software, MCU reads time information and processes and displays the transmission and transmission of control information, which makes the design system complete the required requirements. The system combines hardware and software, and the two work together to complete the required functions.
The design method of clock based on MCU has the advantages of simple circuit, flexible programming, easy expansion, high accuracy and good stability.
Key words: electronic clock; STM32F103 MCU; external interruption; LCD display

目 录

摘要: 1
1、本课程设计的背景、目的和要求 3
1.1本课程设计的背景 4
1.2本课程设计目的 4
1.3本课程设计的功能要求 4
2、本课题研究的主要内容 5
3、本课程设计的方案分析和选择 5
3.1单片机芯片选择方案 5
3.2定时器方案选择 6
4、系统硬件及电路设计 7
4.1 系统硬件 7
4.1.1 液晶显示器STM32开发板的驱动原理 7
4.1.2 MCU 8
4.1.3 按键介绍 9
4.2 单片机最小系统电路 10
4.2.1时钟电路 10
4.2.2震荡电路 11
4.2.3复位电路 11
5、系统软件设计 12
5.1系统主程序 12
5.2按键控制 12
5.3定时器中断控制计时 13
5.4 LCD相关函数分析 16
5.4.1 画圆函数 16
5.4.2 画线函数 17
5.4.3 显示数字函数 18
5.4.4 显示字符函数 18
5.4.5 画点函数 18
6、软件调试与测试结果 19
7、结论 21
致 谢 22
参考文献 23
附件 24

1、本课程设计的背景、目的和要求
1.1本课程设计的背景
随着中国物联网产业的持续快速发展,智能化程度越来越高,进而它带给人们很多方面的便利。近几年以来,随着现代通信技术和计算机事业的迅速发展,以及电子技术和微电子技术自动化,智能化程度的不断的提高,时间显示的智能化技术也在不断进步,在数字时钟的信息处理方面有了更进一步的发展和应用。正是由于无线通讯技术的进步和不断普及,时间处理技术已无处不在,而且应用成本已经降到很低,所以现在可以逐渐普及数字时钟显示的应用领域上。
当前的数字时钟显示系统的现状是刚刚起步,主要在于针对时间信息的采集方面,但随着对这种市场需求和认识的加深,市场一定会进入到一个发展的高速期。
以前大多时间显示都是电子表等等,不适用于大型建筑,显示的涉及空间范围的能见度也比较低,而且其使用成本,因而具有很大的局限性。所以更加智能的时间显示系统成为新的需要,其中就是以液晶数字时钟的显示技术为核心技术。
针对目前的现状,设计了一款基于单片机液晶显示的数字时钟显示系统,本设计是以STM32F103单片机为核心,并与时间信息采集技术为核心进行控制液晶显示模块进行大型的时间显示,显示时间准确,可见范围广。
1.2本课程设计目的
1)掌握STM32F103单片机GPIO的使用方法和扩展;掌握定时器和外中断的使用方法;掌握LCD显示屏的驱动原理;
2)掌握STM32F103单片机GPIO的使用方法和扩展;掌握LCD显示屏驱动原理。
3)掌握MDK5编程环境与STM32F103库函数开发技能,并能灵活运用于解决实际问题。
4)针对设计任务的要求,学会查阅手册和文献资料,培养学生独立分析和解决实际问题的能力。
1.3本课程设计的功能要求
1)采用STM32F103单片机和2.8寸液晶屏显示;
2)能显示当前的年、月、日、时、分、秒,24小时制;
3)月、日、时、分、秒均可以单独设置,设置时有提示;
4)外接3个按键,一个用于选择需要设置的项目,一个增加、一个减少;
2、本课题研究的主要内容
本系统设计包括:信息采集部分和信息处理部分以及信息显示部分。信息采集部分包含:单片机最小系统,时间信息采集电路;信息处理部分包含:单片机最小系统,信息采集部分包括:LED液晶显示电路。
为了实现达到人们所需要的要求,进行软件编程实现功能和硬件搭建LED液晶数字时钟系统。此液晶主子时钟系统主要有以下几个功能:信息采集部分进行采集时间信息;信息处理部分进行时间信息的获取,实现时间信息的运算和规划;信息显示部分进行将信息处理部分的时间信息进行通过控制驱动器进行LED液晶显示出来。
3、本课程设计的方案分析和选择
通过对本设计系统的功能需要确定实现方案,下面分别叙述各模块方案的选择原因和选择方案备选的优缺点。
3.1单片机芯片选择方案
在核心主控方案的选择方面,正确合理的选取适合本设计系统的方案是本设计的重中之重,它涉及到成本和研究所需的时间精力。正确的主控芯片在把成本上花费更少,在需要花费的时间精力上更是优化到最佳。下面就是针对本设计系统的需求和一些其他因素相比较进行方案的选择。
方案一:采用以嵌入式为核心的ARM系列的单片机,比较经典的一款芯片STM32单片机,该款单片机是ST公司生产制作的,在现实生活中有着广泛的应用。对于这款单片机,由于其功能强大,程序运行速度也是很快的,一般能达到人们正常所需,再加上相对应的嵌入式系统就可以实现人机交互方便,处理速度快速便捷的系统;另一方面在芯片价格上来讲,符合人们的需要,与平时多用的51单片机价格相差不大,只是价格高了那么一两成;本芯片虽然功能齐全,运转速度较快,但是在编程方面对比51单片机而言,就麻烦一些,对于引脚的设定和要求更高一些。对于本设计系统对于处理速度的要求和成本的考察,本方案也是在考虑范围之内的。
方案2 :采用STC89C52这款单片机作为本设计的主要控制系统。本款单片机是属于前面所述的51单片机的一类,其功能相对而言稍显不足,内部存储不高;但是在功耗和成本方面比较低,开发相比较嵌入式芯片的ARM系列单片机更加的简单方便。对于本设计系统,在要求程序运行速度方面是完全可以胜任的,再斟酌开放的难易程度方面,考虑研发周期和开发精力问题,该款单片机比较符合本设计系统的。
两种方案从单片机芯片主要性能角度出发,通过比较相关的便捷性、兼容性,误差性,还有节约成本等方面,本数字电子钟单片机芯片选择设计采用方案一,选择开发更简单,成本更低廉的51系列单片机STC89C52单片机芯片。
3.2定时器方案选择
方案1 RTC时钟:STM32自带RTC模块 ,实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。在RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL)赋值可改变时间。
方案2 定时器:定时器计时其实是通过计数来实现的。定时器内部有一个计数器,这个计数器根据一个时钟(这个时钟源来自于ARM的APB总线,然后经过时钟模块内部的分频器来分频得到)来工作。每隔一个时钟周期,计数器就计数一次,定时器的时间就是计数器计数值×时钟周期。定时器内部有1个寄存器TCNT,计时开始时我们会把一个总的计数值(譬如说300)放入TCNT寄存器中,然后每隔一个时钟周期(假设为1ms)TCNT中的值会自动减1(硬件自动完成,不需要CPU软件去干预),直到TCNT中减为0的时候,TCNT就会触发定时器中断。
定时器关注的是时间段,定时器计时从开启定时器的那一刻开始,到定的时间段结束为止产生中断; RTC中工作用的是时间点。RTC和定时器的区别,就相当于是钟表和闹钟的区别。综上所述,本数字电子钟数码管显示选择设计采用方案2定时器计时。
4、系统硬件及电路设计
整体框架已经建立,下面进行各个模块的说明及电路设计的介绍。下面介绍有:系统硬件、单片机最小系统电路。
4.1 系统硬件
4.1.1 液晶显示器STM32开发板的驱动原理
LCD液晶显示器是Liquid Crystal Display的简称,液晶是一种规则性排列的有机化合物,它是一种介于固体和液体之间的物质,这种材料可以在电信号的驱动下液晶分子进行旋转,旋转时会影响透光性,因此我们可以在整个液晶面板后面用白光照(称为背光),可以通过不同电信号让液晶分子进行选择性的透光,此时在液晶面板前面看到的就是各种各样不同的颜色,这就是LCD显示。
液晶的物理特性是:当通电时导通,排列变的有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过。让液晶如闸门般地阻隔或让光线穿透。从技术上简单地说,液晶面板包含了两片相当精致的无钠玻璃素材,称为Substrates,中间夹著一层液晶。当光束通过这层液晶时,液晶本身会排排站立或扭转呈不规则状,因而阻隔或使光束顺利通过。
LCD技术是把液晶灌入两个列有细槽的平面之间。这两个平面上的槽互相垂直(相交成90度)。也就是说,若一个平面上的分子南北向排列,则另一平面上的分子东西向排列,而位于两个平面之间的分子被强迫进入一种90度扭转的状态。由于光线顺着分子的排列方向传播,所以光线经过液晶时也被扭转90度。但当液晶上加一个电压时,分子便会重新垂直排列,使光线能直射出去,而不发生任何扭转。
LCD是依赖极化滤光器(片)和光线本身。自然光线是朝四面八方随机发散的。极化滤光器实际是一系列越来越细的平行线。这些线形成一张网,阻断不与这些线平行的所有光线。极化滤光器的线正好与第一个垂直,所以能完全阻断那些已经极化的光线。只有两个滤光器的线完全平行,或者光线本身已扭转到与第二个极化滤光器相匹配,光线才得以穿透。
液晶模块显示原理图如图1所示:

图1 液晶模块显示原理图
4.1.2 MCU
本课程设计选择的是STM32F 103RET6作为MCU,STM32F系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。该系列芯片按片内Flash的大小可分为三大类:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。STM32F 103的型号众多,其价格低,作为一款低端开发板,选择STM32F 103RBT6是最佳的选择。MCU部分原理图如图2所示:

图2 MCU部分原理图
4.1.3 按键介绍
本数字电子时钟设计所需按键用于进行显示时间的调整与设置扩展的小键盘。单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平的高低,即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求。KEY0和KEY1用作普通按键输入,分别连接在PC5和PA15上,KEY2是复位键,连接PA0;
按键原理图如图3所示:

图3 按键原理图
4.2 单片机最小系统电路
4.2.1时钟电路
我们知道,对于时序电路来说,除了电源外,还需要有稳定的时钟信号才能正常工作。作为数字系统,微控制器是一种复杂的时序逻辑电路,需要专门的时钟源为其提供脉冲信号。
STM32F103微控制器也不例外。对于STM32F103来说,尽管它内置了内部RC振荡器,可以为内部锁相环(Phase Locked Loop, PLL)提供时钟,这样STM32F103依靠内部振荡器就可以在72MHz的满速状态下运行。但是,内部RC振荡器相比外部晶振来说不够准确也不够稳定,因此在条件允许的情况下,尽量使用外部主时钟源。
外部主时钟源主要作为CortexM3内核和STM32外设的驱动时钟,一般称为高速外部时钟信号(HSE)。高速外部时钟信号可以由以下两种时钟源产生。
(1)外部晶体/陶瓷谐振器
在这种模式下,时钟电路由外部晶振和负载电容组成,如图7所示。负载电容的值需根据选定的晶振进行调节,而且位置要尽可能近地靠近晶振的引脚,以减小输出失真和启动稳定时间。外部晶振的频率可以是4~16MHz,例如,STM32F103通常选用8MHz的外部晶振。由于这种模式能产生非常精确而稳定的主时钟,因此它是STM32F103微控制器时钟电路的首选。其原理图如图4所示:

图4外部晶振和负载电容图
(2)用户提供的外部时钟信号
在这种模式下,必须提供一个外部时钟源。它的频率可高达25MHz。用户提供的外部时钟信号(可以是占空比为50%的方波、正弦波或三角波)必须连到STM32F103的OSC32_ IN引脚,同时保证STM32F103的OSC32_ OUT引脚悬空,其原理图如图5所示。

图5外部时钟信号图
4.2.2震荡电路
振荡电路也就是晶振电路是由固定频率的晶振电路的核心来源,相当于是一个机器的心脏跳动的,促进身体机理的运转。本电路就是这样的类似作用。一般这个频率是和单片机相匹配的,该频率本设计系统采用的是12MHZ。该晶振的引脚两端分别接两个固定容量的充电电容,一般是瓷片电容,用于振荡电路的晶振的充放电和滤波;瓷片电容的另一端相连接地,也就是与单片机的20号引脚相连。
4.2.3复位电路

复位电路是通过硬件电路进行控制单片机的RESET引脚的高低电平来控制单片机内部运行程序的。复位的方式有上电复位和手动复位两种。复位电路由一个10uF的电解电容的负极端与单片机的RESET引脚相连,正极端接电源的正极,也相当于和单片机的40号引脚相连,在其两端有一个自弹的独立按键;当需要复位的时候,按下复位按键,电解电容短路,单片机的复位引脚接到了高电平,单片机被复位。
5、系统软件设计
5.1系统主程序

在本设计系统中,从系统主程序开始,进入各模块的系统初始化,该初始化包括:串口初始化设置串口频率和波特率、定时器的初值设置、中断函数的进入条件、和端口的初始化点评状态;初始化完成后进入主函数的循环部分,读取时钟芯片的时间信息,并处理;将处理好的时间信息传递给显示模块进行显示;最后进行循环扫描显示时间信息。
系统程序结构属中断方式,在进行时间信息的读取中,就是采用的终端服务函数子函数的程序中完成,将读取的信息存到一个全局变量的数组中,当显示服务子函数需要时,进行直接调用显示,显示函数为定时器服务子函数的程序中完成。经过多次调试,模块化编程。一步步的实现本设计系统的功能,在克服了定时器中断和外部中断的冲突后,本设计系统趋于完成。
5.2按键控制
本次课程设计要求外接3个按键,按键2WK_UP是选择需要设置的项目,按键KEY1增加、按键KEY0减少,用按键来控制日期的增减。按键控制使用外部中断来实现,将PA0、PA15和PC5设置为三个按键的输入通道,响应优先级:KEY0>KEY1>WK_UP。按键初始化函数中定义WK_UP为下拉输入即按键按下为高电平,KEY1和KEY0为上拉输入即按键按下为低电平。
外部中断处理函数中设置变量flage来判断按键2WK

  • 48
    点赞
  • 372
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值