任务3-3 数码管动态显示设计与实现_第1页
任务3-3 数码管动态显示设计与实现_第2页
任务3-3 数码管动态显示设计与实现_第3页
任务3-3 数码管动态显示设计与实现_第4页
任务3-3 数码管动态显示设计与实现_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

绿色低碳设计理念STM32EMBEDDEDTECHNOLOGYSTM32嵌入式技术及应用

任务3-3数码管动态显示设计与实现

项目三

篮球赛电子计分器的设计与实现掌握动态扫描技术

实现6位数码管显示理解时分复用原理目录CONTENTS01任务目标明确学习目标与核心技能要求02知识储备理解时分复用与视觉驻留效应对比动态与静态显示方式03任务实施Proteus动态显示电路设计段码表、位码表与扫描逻辑工程编译与仿真验证流程04任务总结核心知识点与技能提升总结05提升训练与评价知识问答、实践操作与评价01TASKOBJECTIVES任务目标核心任务利用STM32F103R6芯片,结合6位共阴极LED数码管,通过实施数码管的动态扫描技术,编写相应程序以实现6位数码管上展示"012345"的效果。理论知识动态扫描原理与时分复用技术视觉驻留效应与刷新频率消隐处理方法(解决残影)段码表与位码表设计实践技能6位数码管动态显示电路设计动态扫描程序编写与调试消隐处理与闪烁消除GPIO多端口协同控制绿色理念通过降低扫描频率平衡功耗节省I/O端口资源降低硬件成本推动绿色节能创新学习成果完成本任务后,你将掌握动态扫描技术的核心原理和实现方法,能够设计多digit数码管动态显示电路,编写扫描程序,并通过仿真验证显示效果。动态扫描技术不仅是一种节省硬件资源的有效方法,更是推动嵌入式系统绿色节能创新的重要手段。02KNOWLEDGERESERVE动态扫描显示原理(一)动态扫描核心概念动态扫描显示的核心在于分时控制技术。本任务需要显示6位数码,通过8位I/O端口(PC0~PC7引脚)作为段选控制端,依次输出每位数码的段码数据;同时,利用GPIOB口的输出引脚(PB0~PB5引脚)作为各位数码管的公共端或"位选端",控制哪一位数码管被点亮。动态扫描工作流程1字形编码输出通过段选线输出要显示字符的字形编码。2位选控制控制对应的位选端使该位数码管点亮,其他位保持熄灭。3保持显示保持该状态约1~2ms,确保字符能够清晰显示。4关闭显示关闭所有数码管的显示(消隐处理)。5循环扫描重复上述过程,依次点亮每一位数码管。连接方式示意段选端(8位)PC0~PC7→段码输出连接→数码管A~G、DP位选端(6位)PB0~PB5→位码输出连接→6位数码管COM总I/O端口段选+位选=8+6=14相比静态显示节省34个端口知识储备:02KNOWLEDGERESERVE动态扫描显示原理(二)视觉驻留效应什么是视觉驻留?由于人眼的视觉驻留效应,当每位数码管的点亮时间足够短且扫描速度足够快时,人眼将无法察觉字符的移动或闪烁,从而产生所有数码管都在持续显示的稳定视觉效果。刷新频率要求一般刷新频率应>50Hz每位点亮时间<20ms避免肉眼可见的闪烁计算公式刷新频率

=

1

/

(位数

×

每位点亮时间)例如:6位数码管,每位5ms刷新频率

=

1

/

(6

×

0.005)

33.3Hz消隐处理为什么需要消隐?在切换位选之前如果不关闭所有数码管显示,会产生"残影"或"鬼影"现象,影响显示效果。消隐处理可以确保在切换到下一位之前,当前位完全熄灭。消隐方法软件消隐通过软件延时,在切换位选前关闭所有数码管硬件消隐通过硬件电路(如消隐电路)实现快速关闭代码示例GPIO_Write(GPIOB,

0x0ff);

//

关闭所有位选Delay(5);

//

消隐延时关键要点动态扫描成功的关键在于合适的刷新频率和正确的消隐处理。刷新频率过低会产生肉眼可见的闪烁,过高则会增加CPU负担和功耗。消隐不彻底会产生残影,影响显示质量。在实际应用中需要根据具体需求进行参数调整。知识储备:02KNOWLEDGERESERVE动态扫描的优势与局限动态扫描优势节省资源特别是在显示位数较多时,动态扫描可以显著节省I/O端口资源。6位数码管动态显示仅需14个I/O端口,而静态显示需要48个端口。简化电路硬件电路实现相对简单,降低了成本。减少了元器件数量和PCB布线复杂度。灵活性高易于通过软件编程实现复杂的显示控制,如亮度调节、闪烁效果、滚动显示等。动态扫描局限稳定性略逊稳定性略逊于静态显示方式,若刷新频率不够高会产生闪烁现象,影响显示质量。占用CPU时间由于CPU需要轮番扫描,可能会占用更多的CPU时间,影响其他任务的执行效率。亮度降低由于数码管是轮流点亮的,每位数码管的实际点亮时间较短,整体亮度相比静态显示有所降低。选择建议在实际应用中,需根据具体应用场景和需求进行权衡选择。显示位数较少、对稳定性要求高的场景适合采用静态显示;显示位数较多、成本敏感的场景适合采用动态显示。通过提高刷新频率可以减小动态显示的闪烁影响。知识储备:03TASKIMPLEMENTATION任务实现要求硬件设计微控制器选型选用STM32F103R6作为主控芯片,负责数据处理和扫描控制。数码管选型选用6个共阴极数码管,实现"012345"显示效果。驱动芯片使用74HC573锁存器作为驱动芯片,锁存段码数据。引脚连接PC0~PC7接段选,PB0~PB5接位选。编程实现扫描代码编写编写数码管动态扫描代码,实现6位数码管显示"012345"。段码表设计设计段码表,存储0-9数字的字形编码。位码表设计设计位码表,控制6位数码管的依次选通。消隐处理实现消隐功能,消除残影现象。仿真调试Proteus仿真在Proteus中搭建仿真电路,验证设计正确性。显示观察观察数码管显示,检查是否稳定显示"012345"。参数调整调整延时参数和刷新频率,确保显示稳定无闪烁。问题排查分析并解决显示错乱、闪烁等问题。绿色低碳理念通过降低扫描频率至8ms平衡显示效果与功耗,动态扫描技术让多个数码管共享有限的硬件资源,减少了所需的硬件接口数量和功耗,符合绿色低碳设计理念。任务实施:03TASKIMPLEMENTATION数码管动态显示电路设计(一)电路组成与连接微控制器STM32F103R6作为电路核心,通过PC0~PC7引脚输出段码,通过PB0~PB5引脚输出位码。数码管选用6个共阴极数码管,所有数码管的段选端(A~G、DP)并联在一起,位选端分别独立控制。74HC573锁存器使用1个74HC573锁存器,锁存段码数据,确保在切换位选时段码保持稳定。引脚连接方式段选输出PC0~PC7连接74HC573输入端D0~D7锁存器输出Q0~Q7连接6位数码管A~G、DP位选输出PB0~PB5连接6位数码管COM端总I/O端口8+6=14相比静态节省34个端口电路设计要点动态显示电路的关键在于段选端共享和位选端独立控制。通过74HC573锁存器锁存段码数据,确保在切换位选时段码保持稳定。位选端通过轮流选通每一位数码管,实现动态扫描显示。合理配置限流电阻(如220Ω),保护LED并降低功耗。任务实施:03TASKIMPLEMENTATION数码管动态显示电路设计(二)Proteus电路设计步骤1新建工程创建新设计文件命名为"数码管动态扫描显示"。2添加元器件添加STM32F103R6、74HC573、7SEG-MPX6-CC等元件。3连接段选端将PC0~PC7连接到74HC573的D0~D7,Q0~Q7连接到6位数码管的A~G、DP。4连接位选端将PB0~PB5分别连接到6位数码管的COM端(位选端)。5配置锁存器将74HC573的LE引脚接高电平(始终使能),OC引脚接低电平(输出使能)。74HC573在动态显示中的作用锁存功能74HC573的主要作用是锁存段码数据,确保在切换位选时段码保持稳定。当LE为高电平时,Q端随D端同步变化;当LE为低电平时,Q端保持LE变低前的D端数据。位选控制原理通过控制PB0~PB5引脚的电平状态,依次选通每一位数码管,实现轮流点亮。共阴极数码管的位选端为低电平时,该位数码管被点亮。电路连接正确性的重要性电路连接的正确性直接影响显示效果。如果段选或位选连接错误,会导致显示错乱、乱码或无法显示。在设计电路时需要仔细核对引脚连接关系。设计说明在Proteus中创建动态显示电路时,需要注意元器件的正确选型和引脚的准确连接。74HC573锁存器的LE引脚接高电平表示始终使能锁存功能,OC引脚接低电平表示输出始终有效。通过合理的电路设计,可以实现稳定可靠的动态显示效果。任务实施:03TASKIMPLEMENTATION数码管动态显示程序设计(一)工程建立步骤1建立工程目录建立"任务3-3数码管动态扫描显示"工程目录。2复制工程文件将任务3-2的工程复制到该目录下,作为基础模板。3修改工程名称修改工程名称为"数码管动态扫描显示",工程文件名为SMG_DTXS.uvproj。4新增设备文件新增smg.c和smg.h设备文件,封装数码管初始化函数。数码管设备文件smg.c#include"stm32f10x.h"#include"smg.h"voidSMG_Init(void)

{

GPIO_InitTypeDef

GPIO_InitStructure;

//

使能AFIO、GPIOB、GPIOC时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO

|

RCC_APB2Periph_GPIOB

|

RCC_APB2Periph_GPIOC,

ENABLE);

//

禁用JTAG功能

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,

ENABLE);

//

配置PC0-PC7为推挽输出

GPIO_InitStructure.GPIO_Pin

=

0x00ff;

GPIO_InitStructure.GPIO_Mode

=

GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed

=

GPIO_Speed_50MHz;

GPIO_Init(GPIOC,

&GPIO_InitStructure);

//

配置PB0-PB5为推挽输出

GPIO_InitStructure.GPIO_Pin

=

0x003f;

GPIO_Init(GPIOB,

&GPIO_InitStructure);}代码说明●使能AFIO、GPIOB、GPIOC时钟●禁用JTAG功能,释放PB3、PB4●配置PC0-PC7和PB0-PB5为推挽输出●设置输出速度为50MHz设计说明新增数码管设备文件smg.c的作用是封装数码管初始化函数SMG_Init(),实现GPIO端口配置。通过模块化设计,可以提高代码的可读性和可维护性。在初始化函数中,需要使能相应的时钟、禁用JTAG功能(释放PB3、PB4引脚)、配置GPIO端口为推挽输出模式。任务实施:03TASKIMPLEMENTATION数码管动态显示程序设计(二)主程序代码SMG_DTXS.c#include"stm32f10x.h"#include"smg.h"//

定义0~9十个数字的字型码表(共阴极)uint16_t

table[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};

//

字形码uint16_t

wei[]={0x0fe,0x0fd,0x0fb,0x0f7,

0x0ef,0x0df,0xff,0xff};

//

位码uint8_t

i;voiddelay(unsigned

int

count)

{

unsigned

int

i;

for(;

count

!=

0;

count--)

{

i

=

100;

while(i--);

}}intmain(void)

{

SMG_Init();

//

初始化数码管while(1)

{

for(i=0;

i<6;

i++)

{

GPIO_Write(GPIOB,

wei[i]);

//

输出位码,选通数码管

GPIO_Write(GPIOC,

table[i]);

//

输出段码,显示数字

delay(5);

//

延时5ms

GPIO_Write(GPIOB,

0x0ff);

//

消隐:关闭所有位选

delay(5);

//

消隐延时5ms

}

}}段码表table数组存储0-9共阴极字形码,用于显示对应数字。位码表wei数组存储6位位选码,低电平有效,依次选通每位数码管。动态扫描通过for循环依次输出位码和段码,实现6位数码管动态显示。任务实施:03TASKIMPLEMENTATION数码管动态显示程序设计(三)动态扫描核心逻辑位码输出GPIO_Write(GPIOB,

wei[i]);将当前位码输出到GPIOB,选通对应的数码管。wei数组中的位码为低电平有效,例如0x0fe(11111110B)表示选通第1位数码管。段码输出GPIO_Write(GPIOC,

table[i]);将当前段码输出到GPIOC,显示对应数字。table数组中存储了0-9的字形码,例如table[0]=0x3f显示数字"0"。消隐处理GPIO_Write(GPIOB,

0x0ff);在切换位选之前关闭所有数码管(0x0ff=11111111B),避免产生残影。这是动态扫描中非常重要的一步。延时控制与优化当前延时参数每位点亮时间5ms消隐延时5ms每位总时间10ms总扫描周期60ms刷新频率~16.7Hz优化建议若出现闪烁,减小延时(如3ms+3ms)若亮度不足,增大点亮时间(如5ms+2ms)若仍有残影,增加消隐时间推荐刷新频率:50-100Hz编程要点动态扫描的核心在于依次输出位码和段码,并通过消隐处理消除残影。延时参数的控制直接影响显示效果:延时过短会导致刷新频率过高,增加CPU负担;延时过长会产生闪烁现象。在实际应用中需要根据具体需求进行调整,以达到最佳的显示效果。任务实施:03TASKIMPLEMENTATION工程编译与调试工程编译步骤1添加文件将SMG_DTXS.c主文件和smg.c设备文件添加到工程中。2修改工程名将ProjectTargets栏下的工程名修改为SMG_DTXS。3编译工程点击Rebuild按钮进行编译,生成HEX文件。编译成功标志0Error(s),0Warning(s)仿真验证流程1加载HEX文件将生成的SMG_DTXS.hex文件加载到STM32F103R6芯片。2运行仿真点击仿真工具栏的"运行"按钮,观察数码管显示。3验证功能观察数码管是否能动态扫描显示"012345"。调试技巧●检查段码表是否正确●检查位码输出顺序●调整延时参数●检查消隐处理绿色低碳理念动态扫描技术不仅是一种节省硬件资源的有效方法,更是推动嵌入式系统绿色节能创新的重要手段。通过时分复用技术,让多个数码管共享有限的硬件资源,减少了所需的硬件接口数量和功耗。在实际应用中,可以通过调整扫描频率来平衡显示效果与功耗,实现绿色低碳设计。任务实施:04TASKSUMMARY任务总结核心知识点掌握动态扫描原理(时分复用技术),理解轮流点亮的工作机制。理解定时器中断配置对刷新频率的影响,掌握合适的刷新频率范围。熟悉消隐处理方法(软件延时或硬件消隐电路),解决"残影"问题。掌握段码表和位码表的设计方法,实现灵活的数字显示控制。技能提升设计6位数码管动态显示电路,实现稳定无闪烁的"012345"显示。通过逻辑分析验证扫描频率(如4ms刷新周期)的时序准确性。掌握GPIO多端口协同控制,实现段选和位选的配合工作。编写动态扫描程序,实现消隐处理和延时控制。绿色低碳理念通过降低扫描频率至8ms平衡显示效果与功耗。动态扫描技术节省I/O端口资源,降低硬件成本。多个数码管共享硬件资源,减少功耗。推动嵌入式系统绿色节能创新。学习成果完成本任务后,你已经掌握了动态扫描技术的核心原理和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论