版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数码管数字钟的设计与实现项目二任务一1位数码管静态显示目录数码管的显示原理用STM32驱动数码管显示不同的数字或者字母一、数码管的显示原理一、数码管的显示原理数码管是一种半导体发光器件,其基本单元是发光二极管。一、数码管的显示原理数码管按段数分为7段、8段数码管和14段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示)。一、数码管的显示原理按能显示多少个“8”可分为1位、2位、4位等数码管。一、数码管的显示原理数码管的外形结构和驱动方式一、数码管的显示原理gdbcefdpadpgfedcba
00000110
编码为:0x06二、1位数码管循环显示0-F使用protues仿真实现1位数码管循环显示0-F。二、1位数码管循环显示0-FG使能DIR方向控制操作LLB端送至A端LHA端送至B端HX不传送二、1位数码管循环显示0-F二、1位数码管循环显示0-F共阴极不带小数点0-F段码为table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};二、1位数码管循环显示0-F二、1位数码管循环显示0-F数码管数字钟的设计与实现项目二任务一2位数码管静态显示2位数码管静态显示2位数码管静态显示目标利用STM32与数码管的接口技术,完成STM32的数码管静态显示电路设计和程序的设计、运行及调试。任务要求使用STM32F103R6芯片的PC0~PC15引脚分别接2个共阴极LED数码管。个位数码管接PC0~PC7;十位数码管接PC8~PC15。采用静态显示方式,编写程序使2位数码管上循环显示0~99。2位数码管静态显示数码管的显示方法LED数码管有静态显示和动态显示两种方法。静态显示是指数码管显示某一字符时,相应的LED恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接电源(共阳极)。每个数码管的八个位段分别与一个八位I/O端口相连。I/O端口只要有字型码输出,数码管就显示给定字符,并保持不变,直到I/O口输出新的段码。2位数码管静态显示数码管显示电路组成数码管显示电路是由STM32F103R6、2个1位的共阴极LED数码管构成。按照任务要求,采用静态显示方式,数码管显示电路连接方法如下:1.STM32F103R6的PC0~PC7引脚接个位数码管的A~G七个位段;2.PC8~PC15引脚接十位数码管的A~G七个位段;3.由于小数点“.”DP位不用,PC7和PC15引脚也就不用了。2位数码管静态显示2位数码管静态显示数码管显示功能实现分析电路采用共阴极结构的数码管,其公共端接地,这样可以控制每一只LED的阳极电平来使其发光或熄灭,阳极为高电平发光,为低电平熄灭。“0~9”十个字符的字型编码,采用查表的方式,表格是通过定义数组来完成的,代码如下:
uint8_ttable_CA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};通过PC0~PC15输出“0~9”十个字符的字型编码,就可以在数码管上显示“0~9”数字。2位数码管静态显示创建工程;编写主文件smgxs.c代码在USER文件夹下面,编写smgxs.c代码。使能GPIOC时钟和配置PC0-PC15引脚的代码如下:
GPIO_InitTypeDefGPIO_InitStructure;
//使能GPIOC时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=0xffff; //PC0-PC15引脚配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//配置为推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//GPIOC速度为50MHzGPIO_Init(GPIOC,&GPIO_InitStructure);
//初始化PC0-PC152位数码管静态显示编写主文件display0-99.c代码十位和个位进行结合:2位数码管静态显示编写主文件display0-99.c代码十位和个位进行分离显示:2位数码管静态显示编写主文件display0-99.c代码总结两位数码管的静态显示原理实现0-99的动态循环显示课后任务
循环显示00-ff该怎么做呢?两位数码管的静态显示原理数码管数字钟的设计与实现项目二任务二
数码管动态扫描数码管动态扫描数码管静态显示静态驱动的优点是编程简单。静态显示的亮度较高,适合室外LED显示屏等场合。但它需要更多的驱动电路,因此成本较高。目录2位数码管显示6位数码管显示一、2位数码管显示一、2位数码管显示99动态扫描轮流向各个数码管送出段码和相应的位选码,轮流点亮数码管。利用人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。一、2位数码管显示99输入1的段码com端(位选)com端(位选)输入2的段码一、2位数码管显示99也就是说要多长时间完成一次全部数码管的扫描呢?整体扫描时间=单个数码管点亮时间*数码管个数。答案:10ms以内一、2位数码管显示PC0~PC7引脚输出显示段码(包括小数点“.”DP段)。PB0~PB1引脚依次接数码管的位码引脚1~2。2位数码管显示“99”一、2位数码管显示99一、2位数码管显示99二、6位数码管显示6位数码管,显示23点58分50秒。二、6位数码管显示123456二、6位数码管显示123456总结数码管动态显示原理程序设计方法数码管数字钟的设计与实现项目二任务三
查询方式的按键控制目录一、掌握按键查询方法的原理二、复习数码管动态显示以及按键检测的原理查询方式的按键控制学习目标
一、掌握按键查询方法的原理
二、复习数码管动态显示以及按键检测的原理查询方式的按键控制任务要求在6位数码管动态扫描的基础上增加三个按键,按键分别连接STM32单片机的GPIO引脚,然后编写软件利用查询实现时分秒的调整功能。在STM32F103芯片GPIO引脚上分别接3个按和6个数码管,数码管显示时分秒,利用查询方式通过3个按键调整时分秒的显示。按键1按下一次,小时对应加1;按键2按下一次,分钟对应加1;按键3按下一次,秒对应加1。一、硬件设计按键电路设计3个独立按键,分别接在PA0、PA1、PA2,电源为3.3V,电阻为上拉电阻。按键如下图所示:一、掌握按键查询方法的原理仿真电路图程序设计采用模块化的软件设计思想按键模块,在按键程序中读取按键的状态,不同的按键状态下对应不同的按键处理函数;显示模块,显示模块主要就是数码管的动态扫描程序;主程序:在主程序里一直执行按键模块和显示模块;达到动态改变数码管状态的目的。二、软件设计三、查询方式一旦某一外设被选中并启动后,主机将查询这个外设的某些状态位,看其是否准备就绪?若外设未准备就绪,主机将再次查询;若外设已准备就绪,则执行一次I/O操作。这种方式控制简单,但外设和主机不能同时工作,各外设之间也不能同时工作,系统效率很低,因此,仅适用于外设的数目不多,对I/O处理的实时要求不那么高,CPU的操作任务比较单一,并不很忙的情况。四、程序设计工程的创建,在动态扫描程序的基础上增加按键扫描的检测。一、掌握按键查询方法的原理程序设计修改数码管设备文件。修改主程序的GPIO初始化函数,增加GPA0、GPA1、GPA2三个输入引脚的配置。一、掌握按键查询方法的原理程序设计增加按键检测函数keyscan()。在主程序里增加按键检测函数,该函数主要判断按键是否按下,如果有按键按下,先识别按键按下的类型,然后对应变量做+1的操作,按键扫描函数如下:一、掌握按键查询方法的原理程序设计以key0按键按下为例。一、掌握按键查询方法的原理程序设计数码管动态扫描函数。一、掌握按键查询方法的原理程序设计主函数的编写。一、掌握按键查询方法的原理程序设计查询方式的按键控制流程图二、复习数码管动态显示以及按键检测的原理五、原因分析数码管的动态显示就是分时控制不同的数码管进行显示,利用了人眼的视觉延迟效应。如果按键函数长一点,相当于把视觉延迟效应拉长了,人眼就看出来数码管的轮询显示了,至于按键按下不松开,则完全让数码管不显示了,因为我们在等待按键释放的位置是一个while循环。数码管数字钟的设计与实现项目二任务四
中断方式的按键控制查询方式的按键控制当按键按下以后或者按键按下的时间稍微长一点数码管就不显示了这是什么原因,有没有办法改进?中断方式的按键控制
一、中断的概念、用法
二、通过中断的方式实现时分秒按键控制中断方式的按键控制学习目标查询方式的按键控制CPU和外设并行工作,当外设数据准备好(或有某种突发事件发生)时向CPU提出请求,CPU暂停正在执行的程序转而为该外设服务(或处理紧急事件),处理完毕再回到原断点继续执行原程序。中断中断返回正在运行的程序CPU中断正在执行的程序,
转到中断服务程序中断服务程序执行结束,
返回继续执行原程序CPU收到中断信号一、中断的概念一、中断的概念中断的概念CPU在执行主程序CPU执行低级中断服务程序CPU执行高级中断服务程序低级中断请求高级中断请求响应低级中断请求响应高级中断请求返回主程序返回主程序二、STM32中断介绍在Cortex-M3内核中集成了中断控制器和中断优先级控制寄存器,Cortex-M3内核支持256个中断,其中包含了16个内核中断(也称为系统异常)和240个外部中断,并具有256级可编程的中断优先级设置。其中,个别异常的优先级被定死外,其它的优先级都是可编程的。1.STM32的中断通道和中断向量STM32中断介绍1.STM32的中断通道和中断向量STM32有84个中断,包括16个Cortex-M3内核中断线和68个可屏蔽中断通道,具有16级可编程中断优先级的设置(仅设置8位中的高4位)。STM32中断介绍STM32的每一个GPIO引脚都可以作为外部中断的中断输入口,也就是都能配置成一个外部中断触发源。2.STM32的外部中断STM32F103的中断控制器支持19个外部中断(对于互联型产品是20个)事件请求。STM32根据GPIO端口的引脚序号不同,把不同GPIO端口、同一个序号的引脚组成一组,每组对应一个外部中断/事件源(既中断线)EXTIx(x:0~15),比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,依此类推,我们就能将众多中断触发源分成16组。STM32中断介绍3.GPIO与外部中断的映射关系引脚分组(1)尾号相同的引脚一组,接入1个外部中断线。(2)同组引脚只能有一个设置为外部中断功能。中断通道(1)EXTI0~EXIT4分别具有独立的中断通道。(2)EXTI5~EXIT9共享同一个中断通道。(3)EXTI10~EXIT15共享同一个中断通道。STM32中断介绍STM32内核有两个中断优先级的概念,分别是抢占优先级和响应优先级(也称为子优先级)具有高抢占优先级的中断,可以在具有低抢占优先级的中断处理过程中被响应,既中断嵌套。4.STM32的中断优先级Cortex-M3中定义了8bit(位)用于设置中断源的优先级,STM32只使用了高4位,这4位的中断优先级控制位分成2组。从高位开始,前面是定义抢占优先级的位,后面位用于定义响应优先级。优先级分组抢占优先级子优先级第0组:NVIC_PriorityGroup_0无4位/16级(0~15)第1组:NVIC_PriorityGroup_11位/2级(0~1)3位/8级(0~7)第2组:NVIC_PriorityGroup_22位/4级(0~3)2位/4级(0~3)第3组:NVIC_PriorityGroup_33位/8级(0~7)1位/2级(0~1)第4组:NVIC_PriorityGroup_44位/16级(0~15)无STM32中断优先级分组1.编写外部中断配置文件exit.c,开启AFIO时钟。三、程序编写三、程序编写那么什么是AFIO时钟呢?当需要对“AFIO管理的寄存器”进行读写时,必须使能AFIO时钟。外部中断配置AFIO的管理范围,用到外部中断需要先开启AFIO时钟。在这个例子中我们把STM32的GPIO引脚引入到EXTI外部中断线上,使得所有的GPIO引脚能作为外部中断的输入源。所以对于有复用功能的I/O引脚,还要开启其复用功能时钟。因此,还需要开启AFIO时钟。RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE)。程序编写2.使用GPIO_EXTILineConfig()函数,设置PA0~PA2分别为EXTI0~EXTI2中断源。程序编写3.通过EXTI_InitTypeDef结构体,使用EXTI_Init(&EXTI_InitStructure)函数,将4个中断映射到中断线EXTI_Line0~EXTI_Line2上,并将其配置为中断模式和下降沿触发中断,最后使能中断。程序编写4.通过NVIC_InitTypeDef结构体,使用NVIC_Init(&NVIC_InitStructure)函数,设置按键所在的外部中断通道(既外部中断向量)、优先级以及使能外部中断通道。程序编写5.中断服务函数,外部中断服务函数的名字是在startup_stm32f10x_hd.s中是定义好的。中断线0~4的每个中断线对应一个EXTI0_IRQHandler~EXTI4_IRQHandler中断服务函数;中断线5~9共用一个EXTI9_5_IRQHandler中断服务函数;中断线10~15共用一个EXTI15_10_IRQHandler中断服务函数。6.EXTI_GetITStatus()和EXTI_ClearITPendingBit()函数。ITStatusEXTI_GetITStatus()函数,是判断某个中断线上的中断是否发生(标志位是否置位)。EXTI_ClearITPendingBit()函数,是清除某个中断线上的中断标志位。程序编写本次设计用到了中断线0、1、2,需要写三个中断服务程序,分别调节时分秒这三个变量。程序编写在Exit.c文件中需要将这三个变量设置为全局变量。程序编写主函数的编写总结STM32外部中断编程步骤使用GPIO端口外部中断的步骤:开启IO口复用时钟,设置IO口与中断线的映射关系;1初始化线上中断,设置触发条件等;2配置中断分组(NVIC),并使能中断;3编写中断服务函数。4数码管数字钟的设计与实现项目二任务五
定时器实现数字钟定时器实现数字钟任务要求利用STM32定时器精确实现数字钟时分秒运行的功能。一、什么是定时器定时器是对周期固定的脉冲信号进行计数,如MCU内部的外设时钟(APB)。计数器是对周期不确定的脉冲信号进行计数,如MCU的I/O引脚所引入的外部脉冲信号。定时器和计数器本质上都是计数器,定时器是计数器的一种特例。二、定时器的分类片内外设定时器(7个)内核定时器(1个)STM32F1系列的开发板一共有8个定时器,按照功能的不同可以分为:高级定时器(TIM1、TIM8)通用定时器(TIM2、TIM3、TIM4、TIM5)基本定时器(TIM6、TIM7)SysTick定时器三、通过库函数来实现定时器的定时任务本次操作以通用定时器TIM3为例:定时器相关的库函数主要集中在固件库文件stm32f10x_tim.h和stm32f10x_tim.c文件中。1.
TIM3时钟使能三、通过库函数来实现定时器的定时任务2.
TIM_TimeBaseInit()函数初始化定时器自动重装值、分频系数、计数方式等参数,是通过初始化函数TIM_TimeBaseInit()实现的。结构体定义:注意:通用定时器只有前四个参数有用,最后一个参数是针对高级定时器的;typedefstruct{uint16_tTIM_Prescaler;//设置分频系数uint16_tTIM_CounterMode;//设置计数方式/向上计数/向下计数/中央对齐计数uint16_tTIM_Period;//设置自动重载计数周期值uint16_tTIM_ClockDivision;//设置时钟的分频因子uint8_tTIM_RepetitionCounter;}TIM_TimeBaseInitTypeDef;三、通过库函数来实现定时器的定时任务2.
TIM_TimeBaseInit()函数定时时间的确定除以1000分频:f=72M/1000=7200HZT=1/7200hz计一秒需要7200T三、通过库函数来实现定时器的定时任务2.
TIM_TimeBaseInit()函数成员变量ClockDivision的取值范围:TIM_CLOCKDIVISION_DIV1 对定时器时钟TIM_CLK进行1分频TIM_CLOCKDIVISION_DIV2 对定时器时钟TIM_CLK进行2分频TIM_CLOCKDIVISION_DIV4 对定时器时钟TIM_CLK进行4分频成员变量CounterMode的取值范围:TIM_COUNTERMODE_UP 递增计数模式三、通过库函数来实现定时器的定时任务2.
TIM_TimeBaseInit()函数PSC预分频器CNT计数器ARR自动重装载数值时间到后通过中断等方式通知STM32执行某些程序CLKTIMCLK溢出时间到啦!!!四、定时器中断函数的编写time.c四、定时器中断函数的编写time.c五、主函数的编写总结STM32定时器的初始化步骤如何对STM32的TIMx定时器进行初始化呢?其初始化步骤如下:时钟使能;1配置预分频、自动重装值和重复计数值;2使能TIM中断,选择中断源;3设置中断优先级;4使能TIMx外设。5总结STM32外部中断编程步骤使用GPIO端口外部中断的步骤:时钟使能;1配置预分频、自动重装值和重复计数值;2使能TIM中断,选择中断源;3设置中断优先级;4使能TIMx外设。5数码管数字钟的设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年建筑物墙体坍塌突发事件应急预案
- 3D建模基础期末考试题库(含详细答案)
- 稻谷加工及高标准储藏仓项目可行性研究报告模板-备案审批
- 内墙防霉涂料施工方案
- 2026年浙江省人教版高中化学必修第7章化学反应习题
- 湖南省长沙市耀华高级中学2026-2027学年高三上学期开学物理试题(含答案)
- 《实习教程》-第4章教学用
- 贵州安顺市2025-2026学年度第二学期初中期末质量监测考试 七年级英语(含答案)
- 纤维桩的操作过程
- 胃造瘘病人的护理小讲课
- 2026年秋季学期人教版(新教材)初中生物学八年级上册教学计划及进度表
- 2026年医师处方权高频试题(完整版)及答案
- 2026年秋季开学高中开学第一课(交通安全)课件
- 2026年中国老挝磨憨一磨丁经济合作区管委会(35人)考试备考题库及答案详解
- 2026年第二次广东省普通高中学业水平合格性考试化学试题(含答案)
- 2026年秋季学期小学统编版四年级语文上册(新教材)教学计划含进度表
- 养老服务面试常见问题及解答
- 医患康复纠纷案例分享
- 2026中国智能机器人操作系统市场现状分析研究报告
- 4.2《进入新时代的意义》课件- 2026-2027学年统编版道德与法治 九年级上册
- 2026年秋新教材统编版小学二年级上册道德与法治教学计划及进度表
评论
0/150
提交评论