前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口与通信-动态显示数码管

接口与通信-动态显示数码管

原创
作者头像
会洗碗的CV工程师
发布2024-02-15 18:15:23
2860
发布2024-02-15 18:15:23
举报
文章被收录于专栏:LongJava学习资料LongJava学习资料

实验目的与要求

能在数码管上动态显示数字(数码管动态显示)

二、实验环境

硬件环境:实验盒;软件环境:keil

三、实验原理

首先我们来看一下开发板上的电路原理图:

本开发板上使用的是,通过P22、P23、P24控制3-8译码器来对数码管进行位选,通过P0口经过573的驱动控制数码管的段选,通过P13控制573的使能端,为低电平时573才会有输出。

动态显示数码管是一种数码管显示技术,它的工作原理是利用人眼的视觉暂留效应和发光管的余晖,使得多个数码管在交替显示时,看起来像是同时显示。

具体来说,动态显示数码管是将所有数码管的段选线并联,由位选线控制是哪一位数码管有效。通过轮流点亮单个数码管,实现多位数码管整体显示的效果。这种方法的优点是节省IO引脚,但缺点是显示亮度比静态显示低,因此在选择限流电阻时应略小于静态显示电路。

在动态显示中,每个数码管的显示时间需要控制在一定的范围内,通常为1-2ms,这样人眼就无法察觉到数码管的闪烁,从而实现稳定的显示效果。同时,由于动态显示需要轮流点亮每个数码管,因此扫描时间间隔也需要控制在一定的范围内,通常建议为20ms以内,以避免人眼感到闪烁。

总的来说,动态显示数码管是一种有效的数码管显示技术,它可以在节省IO引脚的同时实现多位数码管的稳定显示。

四、实验内容

实验步骤:先用数据线接上电脑和实验盒子,然后在软件中添加对应的源程序编译后的pro.hex文件,断电添加,然后运行一瞬间打开电源。

接线图:

实验程序:

代码语言:c
复制
#include<reg51.h>
//--定义使用的IO--//
#define GPIO_DIG P0
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
//--定义全局变量--//
unsigned char code DIG_CODE[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned char DisplayData[8];
//用来存放要显示的8位数的值
//--声明全局函数--//
void DigDisplay(); //动态显示函数
/**********************************************************
* 函 数 名         : main
* 函数功能   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main(void)
{
 unsigned char i;
 for(i=0;i<8;i++)
 {
  DisplayData[i]=DIG_CODE[i]; 
 }
 while(1)
 {
  DigDisplay();
 }    
}
/**********************************************************
* 函 数 名         : DigDisplay
* 函数功能   : 使用数码管显示
* 输    入         : 无
* 输    出         : 无
********************/
void DigDisplay()
{
 unsigned char i;
 unsigned int j;
 for(i=0;i<8;i++)
 {
  switch(i)  //位选,选择点亮的数码管,
  {
   case(0):
    LSA=0;LSB=0;LSC=0; break;//显示第0位
   case(1):
    LSA=1;LSB=0;LSC=0; break;//显示第1位
   case(2):
    LSA=0;LSB=1;LSC=0; break;//显示第2位
   case(3):
    LSA=1;LSB=1;LSC=0; break;//显示第3位
   case(4):
    LSA=0;LSB=0;LSC=1; break;//显示第4位
   case(5):
    LSA=1;LSB=0;LSC=1; break;//显示第5位
   case(6):
    LSA=0;LSB=1;LSC=1; break;//显示第6位
   case(7):
    LSA=1;LSB=1;LSC=1; break;//显示第7位 
  }
  GPIO_DIG=DisplayData[i];//发送段码
  j=10;       //扫描间隔时间设定
  while(j--); 
  GPIO_DIG=0x00;//消隐
 }
}

输入数据:无

输出数据:动态显示数码管

实验结果:由于docx无法显示动图,只能显示第一张图

五、实验分析

检测中,若被测数码管为共阳极类型,则需将红、黑表笔对调才能测出上述结果,在判别结构类型时,操作时要灵活掌握,反复试验,直到找出公共端为止,大家只要懂得了原理,检测出各个引脚便不在是问题了。成功输出是动态显示数码管,也就是数字一直在跳动。

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档