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

下载本文档

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

文档简介

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

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

项目三

篮球赛电子计分器的设计与实现掌握数码管静态显示技术

实现0-99循环显示培养电路设计能力目录CONTENTS01任务目标明确学习目标与核心技能要求02知识储备数码管结构原理与字形编码03任务实施静态显示与动态显示对比Proteus电路设计与74HC573应用Keil工程开发与调试04任务总结核心知识点与技能提升总结05提升训练与评价知识问答、实践操作与评价01TASKOBJECTIVES任务目标核心任务设计并实现静态显示数字的两位共阳极数码管,其中十位数码管连接PA8~PA15,个位数码管连接PA0~PA7。要求采用静态显示方式,设计相应电路,并通过编写程序使两位数码管循环显示0~99。理论知识数码管结构与工作原理共阴/共阳极驱动原理字形编码与查表法静态显示方式特点实践技能Proteus电路设计74HC573锁存器应用Keil工程开发软硬件联调验证绿色理念选择低功耗数码管使用环保材料动态关闭未使用段码降低静态功耗学习成果完成本任务后,你将能够独立设计数码管静态显示电路、编写查表法显示程序,并通过仿真验证软硬件的正确性,为后续动态显示技术和综合应用项目开发打下坚实基础。02KNOWLEDGERESERVE数码管的结构和原理数码管概述LED数码管,也称为LED段码显示器,是由多个发光二极管精心封装成一个"8"字形状的组件,其内部引线已经连接,外部则仅需引出代表各个笔划的引脚以及公共电极。数码管以其显示清晰度高、功耗低、可靠性高、使用灵活、体积小且易于安装以及应用广泛等优点,在电子设备中发挥着重要作用。八段LED数码管结构标准的八段LED数码管由8个发光二极管组成。其中7个条形的LED排列成"日"字形,分别标记为a、b、c、d、e、f、g段,用于显示数字和字母;另外1个点形的LED在显示器的右下角作为显示小数点(dp)用。它能显示各种数字及部分英文字母。7条形LEDa、b、c、d、e、f、g段组成"日"字形1点形LEDdp段作为小数点显示两种结构类型共阳极数码管结构特点:8个发光二极管的阳极连接在一起作为公共端(COM)。驱动方式:公共端接高电平(如+3.3V),阴极接低电平时LED点亮。显示示例:显示数字"2"时,a、b、d、e、g端为低电平。共阴极数码管结构特点:8个发光二极管的阴极连接在一起作为公共端(COM)。驱动方式:公共端接地,阳极接高电平时LED点亮。显示示例:显示数字"0"时,a、b、c、d、e、f端为高电平。知识储备:02KNOWLEDGERESERVE数码管的字型编码字形编码概念字形编码是用于控制数码管显示特定字符或数字的二进制代码。在数码管中,每个段(a、b、c、d、e、f、g以及小数点dp)的亮灭状态由字形编码的对应位所决定。通过查表法,可以快速获取任意数字的字形编码,实现灵活的数字显示。数码管数字编码表(0-9)显示数字共阴极(dpgfedcba)16进制共阳极(dpgfedcba)16进制0001111110x3F110000000xC01000001100x06111110010xF92010110110x5B101001000xA43010011110x4F101100000xB04011001100x66100110010x995011011010x6D100100100x926011111010x7D100000100x827000001110x07111110000xF88011111110x7F100000000x809011011110x6F100100000x90编码关系分析根据编码表可以观察到,针对同一字符,其共阴极和共阳极的字形编码呈现出互补(即反相)的关系。举例来说,字符"5"在共阴极编码下为0x6D(二进制表示为01101101),而相对应的共阳极编码则为0x92(二进制形式为10010010)。这两种编码方式在逻辑上互为反码,即每一位的二进制值都相反。知识储备:02KNOWLEDGERESERVE数码管的显示方法静态显示工作原理当LED数码管显示某一特定字符时,与该字符对应的LED会保持恒定导通或恒定截止的状态。各个数码管的显示是相互独立的,公共端会恒定接地(对于共阴极数码管)或接电源(对于共阳极数码管)。连接方式为了实现静态显示,每个数码管的8个位段都会分别与一个8位的I/O端口相连。当I/O端口输出特定的字形码时,数码管就会显示出对应的字符,并且该字符会一直保持不变,直到I/O端口输出新的段码为止。优点显示稳定、亮度高缺点硬件资源消耗大动态显示工作原理动态显示采用的是一种轮流点亮各位数码管的策略。在某一特定的时间段内,只选中一位数码管的"位选端",并向其送出与该数码管要显示的字符相对应的字形编码。然后,在下一个时间段内,再按照顺序选通另外一位数码管。连接方式多个数码管可以共享同一组I/O端口作为段选端,每个数码管的位选端分别占用一个独立的I/O线。通过不断地循环扫描,就可以使各位数码管分别间断地显示出相应的字符。优点节省I/O端口、成本低缺点可能存在闪烁现象选择建议在实际应用中,需根据具体应用场景和需求进行权衡选择。显示位数较少、对稳定性要求高的场景适合采用静态显示;显示位数较多、成本敏感的场景适合采用动态显示。通过提高刷新频率可以减小动态显示的闪烁影响。知识储备:03TASKIMPLEMENTATION任务实施硬件设计最小系统构建构建STM32F103R6单片机最小系统,包含时钟、复位等必要电路,确保微控制器正常工作。显示电路设计设计静态数码管显示电路,PA0~PA6接个位数码管,PA8~PA14接十位数码管。元器件选型选用共阳极数码管和74HC573锁存器,合理配置限流电阻(如220Ω)。编程实现显示代码编写编写数码管静态显示代码,实现两位数码管循环显示0~99的功能。段码表设计设计数码管段码表,采用查表法实现显示功能,提高代码效率和可读性。GPIO配置正确配置PA0~PA15引脚为推挽输出模式,设置合适的输出速度(50MHz)。仿真调试Proteus仿真在Proteus中搭建仿真电路,添加STM32F103R6、数码管、锁存器等元器件。HEX文件加载编译生成HEX文件并加载到STM32芯片,验证程序功能。参数调整观察数码管是否循环显示0~99,调整延时参数确保显示正确、无闪烁。绿色设计理念在硬件设计过程中,应遵循选择低功耗的数码管和驱动芯片,以及使用环保材料进行电路板的制作的原则。通过动态关闭未使用段码,降低静态功耗,体现绿色低碳设计理念。03TASKIMPLEMENTATION数码管静态显示电路设计(一)电路组成与连接微控制器STM32F103R6作为电路核心,负责数据处理和控制。通过PA0~PA15引脚输出字形编码,驱动数码管显示。数码管选用2个一位共阳极LED数码管。个位数码管连接PA0~PA7,十位数码管连接PA8~PA15,实现两位数字显示。74HC573锁存器使用2个74HC573锁存器芯片,用于锁存段码数据,确保显示稳定。锁存器输入端连接STM32,输出端连接数码管。引脚连接方式个位数码管PA0~PA7连接A~G段和DP段十位数码管PA8~PA15连接A~G段和DP段锁存器1D0~D6→PA0~PA6Q0~Q6→个位数码管锁存器2D0~D6→PA8~PA14Q0~Q6→十位数码管电路设计要点数码管静态显示电路的关键在于每个数码管都有独立的I/O端口控制,通过74HC573锁存器锁存段码数据,确保显示稳定。由于小数点DP位不用,PC7和PC15引脚没有连接。合理配置限流电阻(如220Ω),保护LED并降低功耗。任务实施:03TASKIMPLEMENTATION数码管静态显示电路设计(二)任务实施:数码管静态显示电路74HC573结构图03TASKIMPLEMENTATION数码管静态显示电路设计(三)Proteus电路设计步骤1新建工程运行Proteus软件,新建"数码管静态显示"电路设计文件。2添加元器件放置并编辑STM32F103R6、74HC573和7SEG-COM-AN-GRN等元器件。3绘制总线单击BusesMode按钮,在适当位置画4条总线。4连接总线将74HC573的D0~D6、STM32的PA0~PA6、PA8~PA14分别连接到4条总线上。5设置网络标号单击WireLabelMode按钮,设置网络标号A0~A6和A8~A14。74HC573锁存器详解芯片功能74HC573是8路同相三态输出的D型锁存器,能够将数据从微控制器传输并锁存到输出端,从而控制数码管的显示内容。LE锁存允许端LE(LatchEnable)是锁存允许端:●LE为低电平时,Q端保持LE变低前的D端数据●LE为高电平时,Q端随D端同步变化输出OC输出允许端OC(OutputControl)是输出允许端:●OC为高电平时,输出为高阻态●OC为低电平时,输出正常,随D端状态驱动外部电路网络标号说明网络标号A0~A6表示个位数码管的A~G引脚和其对应的74HC573芯片的Q0~Q6引脚是相连的;网络标号A8~A14表示十位数码管的A~G引脚和其对应的74HC573芯片的Q0~Q6引脚相连。使用网络标号可以简化电路图,清晰表示电气连接关系。任务实施:03TASKIMPLEMENTATION数码管静态显示程序设计(一)显示功能实现分析本设计采用共阳极数码管,其公共端连接至VDD。通过控制每个LED阴极的电平状态实现显示控制:低电平点亮,高电平熄灭。为实现0~9十个数字的显示,需预先获取共阳极数码管对应数字的字形编码,并通过PA0~PA15引脚输出。查表法实现原理为什么要用查表法?由于数字0~9的字形码无固定规律,无法通过简单的数学运算得到,因此采用查表法实现。我们按数字顺序构建字形码表,通过数组索引快速获取所需字形码。字形码表定义uint16_t

table[]

=

{

0xC0,

0xF9,

0xA4,

0xB0,

0x99,

0x92,

0x82,

0xF8,

0x80,

0x90};

//

0-9的字形码此数组定义了0~9各数字的字形码,通过查表即可获取并输出所需字形码。工程建立步骤1新建工程目录建立"任务3-2数码管静态显示"工程目录。2复制工程文件将任务3-1的工程文件复制到该目录下。3修改工程名称在Project子目录下,将工程文件名修改为SMG_JTXS.uvproj。输出示例例如,输出0xC080(二进制表示为11000000_10000000B)时,数码管将显示"08",其中低8位(0x80)代表"8",高8位(0xC0)代表"0"。通过合并十位和个位的字形码,可以实现两位数字的同时显示。任务实施:03TASKIMPLEMENTATION数码管静态显示程序设计(二)主程序代码SMG_JTXS.c#include"stm32f10x.h"//

定义

0~9字形码表(共阳极)uint16_t

table[]

=

{0xC0,

0xF9,

0xA4,

0xB0,

0x99,

0x92,

0x82,

0xF8,

0x80,

0x90};uint16_t

disp[2];

//

显示缓冲区,存储十位和个位数字的字形码uint16_t

temp,

i;//

延时函数voidDelay(unsigned

int

count)

{

unsigned

int

i;

for(;

count

!=

0;

count--)

{

i

=

100;

while(i--);

}}intmain(void)

{

GPIO_InitTypeDef

GPIO_InitStructure;

//

使能GPIOA时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,

ENABLE);

//

配置PA0~PA15引脚

GPIO_InitStructure.GPIO_Pin

=

0xFFFF;

//

配置所有16个引脚

GPIO_InitStructure.GPIO_Mode

=

GPIO_Mode_Out_PP;

//

推挽输出模式

GPIO_InitStructure.GPIO_Speed

=

GPIO_Speed_50MHz;

//

设置速度为50MHzGPIO_Init(GPIOA,

&GPIO_InitStructure);

//

初始化GPIOAwhile

(1)

{

for

(i

=

0;

i

<=

99;

i++)

{

disp[1]

=

table[i

/

10];

//

十位数字字形码

disp[0]

=

table[i

%

10];

//

个位数字字形码

temp

=

(disp[1]

<<

8)

|

(disp[0]

&

0xFF);

//

合并高8位和低8位GPIO_Write(GPIOA,

temp);

//

输出至GPIOADelay(1000);

//

延时1秒

}

}}时钟使能使用RCC_APB2PeriphClockCmd()使能GPIOA时钟,这是使用GPIO的前提。引脚配置0xFFFF表示配置PA0~PA15全部16个引脚为推挽输出模式。循环显示在while循环中,通过for循环实现0~99的循环显示。任务实施:03TASKIMPLEMENTATION代码关键语句详解关键语句解析GPIO_Pin=0xFFFF用于配置PA0~PA15全部16个引脚。0xFFFF的二进制表示为1111111111111111B,每一位对应一个引脚,1表示配置该引脚。disp[]数组作为显示缓冲区,存储十位和个位数字的字形码。disp[1]存储十位字形码,disp[0]存储个位字形码。GPIO_Write(GPIOA,temp)将合并后的字形码输出至GPIOA端口,同时控制十位和个位数码管的显示内容。数据合并过程核心语句temp

=

(disp[1]

<<

8)

|

(disp[0]

&

0xFF);该语句用于合并十位和个位字形码,形成完整的16位输出值。运算过程示例假设要显示数字"25":disp[1]=table[2]=0xA4(十位"2")disp[0]=table[5]=0x92(个位"5")合并运算:disp[1]<<8=0xA400disp[0]&0xFF=0x0092temp=0xA400|0x0092=0xA492运算原理说明disp[1]<<8将十位字形码左移8位,作为高8位输出到PA8~PA15;disp[0]&0xFF保留个位字形码的低8位,作为低8位输出到PA0~PA7;通过按位或运算(|)合并两个8位数据,形成完整的16位输出值,同时控制十位和个位数码管显示。任务实施:03TASKIMPLEMENTATION工程编译与调试工程编译步骤1添加主文件将SMG_JTXS.c主文件添加至工程,确保文件路径正确。2修改工程名将ProjectTargets栏下的工程名修改为SMG_JTXS。3编译工程点击Rebuild按钮进行编译,生成HEX文件。编译成功标志0Error(s),0Warning(s)仿真验证流程1加载HEX文件将生成的SMG_JTXS.hex目标代码文件加载至STM32F103R6芯片。2运行仿真点击仿真工具栏的"运行"按钮,观察数码管显示。3验证功能观察数码管是否能循环显示0~99。调试技巧●检查段码表是否正确●检查引脚连接是否虚焊●调整延时参数常见问题排查若运行结果与预期不符,需对电路和程序进行深入分析并调整。常见问题包括:段码错误(检查字形码表)、引脚虚焊(检查电路连接)、延时不当(调整延时参数)、电源配置(检查VDD和VSS连接)。通过系统化的排查方法,可以快速定位并解决问题。任务实施:04TASKSUMMARY任务总结核心知识点掌握共阴/共阳数码管驱动原理,理解两种结构的区别和驱动方式。熟悉段码表(Look-UpTable)生成方法,能够根据显示需求设计字形编码。理解GPIO推挽输出模式配置及限流电阻阻值计算(如220Ω限流电阻)。掌握静态显示方式特点,了解其与动态显示的区别和适用场景。技能提升设计并搭建数码管静态显示电路,验证0-9数字稳定输出。通过Proteus仿真解决段码错误、引脚虚焊等硬件问题。掌握74HC573锁存器的应用,理解LE和OC引脚功能。编写查表法显示程序,实现两位数码管0-99循环显示。绿色低碳理念选用低功耗数码管,降低系统整体功耗。通过动态关闭未使用段

温馨提示

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

评论

0/150

提交评论