蓝桥杯之单片机学习(三)——共阳数码管的静态显示

简介: 蓝桥杯之单片机学习(三)——共阳数码管的静态显示

一、训练任务


在CT107D单片机综合训练平台上,8个数码管分别依次显示0-9的值,然后所有数码管一起同时显示0-F的值,如此往复


二、训练重点


1.弄清楚数码管的段码与显示数值之间关系。

2.供养数码管的基本控制方法,特别是弄清楚COM端与显示码的关系


三、训练准备


3.1 原理图展示


0a2653c851af460fa595bd959398a8f1.png


3.2 数字对照表


2d65d23f6d4748949b924e4057485923.png


3.3 数码管分路


4cebaac233b3433da32a72337a77fc60.png6de278e6d6694ce5bb08e7e842b7e74b.png


3.4 一些解释


位码:8个大的数码管(com)

段码:一个数码一个个小段(a-h)

com输入:高电平

段码输入:低电平

即可闪亮

Y6控制位码

Y7控制段码

消影与重影

重影:IO口从高电平到低电平,有一定的残留的电流在里面。


在数码管动态显示实验中,每次送完段选数据后,在送入位选数据之前,需要一句

“P0 = 0xff” ,这条语句的专业名称叫做“消影”

解释如下:

在刚送完段选数据后,P0口仍然保持着上次的段选数据,若不加“P0 = 0xff”这句话,再执行接下来的打开位锁存器命令后,原来保持在P0口的段选数据将立即通过位选锁存器直接加在数码管上,接下来才是再次通过P0口给位选锁存器送入位选数据,虽然这个过程非常短暂,但是在数码管高速显示状态下,我们仍然可以看到数码管出现显示混乱的现象,加上消影之后,在开启位锁存器后,P0口数据全为高电平,所以哪个数码管都不会亮,因此这个消影的动作是很重要的


四、代码实现


#include <reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
uchar code SMG_duanma[18] = 
  {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  0x88,0x80,0xc6,0xc0,0x86,0x8e,
  0xbf,0x7f};//分别是0-9(对应下标),A-F,“-”,“.”
//配置HC138
void InitHC138(uchar n)
{
  switch(n)
  {
  case 4:
    P2 = (P2 & 0X1F) | 0X80;
  break;
  case 5:
    P2 = (P2 & 0X1F) | 0Xa0;
  break;
  case 6:
    P2 = (P2 & 0X1F) | 0Xc0;
  break;
  case 7:
    P2 = (P2 & 0X1F) | 0Xe0;
  break;
  }
}
//延时
void Delay(unsigned int n)
{
  while(n--);
  while(n--);
}
void ShowSMG_Bit(unsigned pos, uchar dat)
{
  InitHC138(6);  //数码管的位置
  P0 = 0x01 << pos;
  InitHC138(7);  //数码管的内容
  //Delay(100000000);
  //Delay(80000);
  P0 = SMG_duanma[dat];
  Delay(6000);
  Delay(6000);
  //P0 = 0xff;// 消影
}
void SMG_Static()
{
  uchar i,j;
  for(i = 0; i < 8; i++)
  {
  for(j = 0; j < 10; j++)
  {
    ShowSMG_Bit(i,j);
  }
  //Delay(600000);
  //Delay(600000);
  }
}
void Initsys()
{
  InitHC138(5);
  P0 = 0X00;
  InitHC138(4);
  P0 = 0XFF;
}
void main()
{
  while(1)
  {
  Initsys();
   SMG_Static();
  }
}


注意事项!!!

延时必须unsigned int

相关文章
|
4月前
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
354 1
|
4月前
51单片机汇编语言点亮一位数码管,并计时(超详细分析汇编语言)
51单片机汇编语言点亮一位数码管,并计时(超详细分析汇编语言)
217 0
|
4月前
【51单片机】开发板上矩阵键盘键码在数码管上的显示,按下键盘在数码管上显示对应段码
【51单片机】开发板上矩阵键盘键码在数码管上的显示,按下键盘在数码管上显示对应段码
159 0
|
4月前
|
算法
51单片机不用定时器的数码管倒计时
51单片机不用定时器的数码管倒计时
|
5月前
蓝桥杯之单片机学习(终)——关于之前文章的错误及更正(附:第十四届蓝桥杯单片机赛题)
蓝桥杯之单片机学习(终)——关于之前文章的错误及更正(附:第十四届蓝桥杯单片机赛题)
|
6月前
|
物联网 Linux 芯片
学习嵌入式是选择单片机还是Linux?
单片机通常指的是一种集成了处理器、存储器和各种外设接口的微控制器芯片,常见的有STC、51系列、AVR、ARM Cortex-M等。单片机具有低成本、低功耗、实时性强等特点,适用于对资源要求较低、功耗要求较低、实时性要求较高的嵌入式系统。学习单片机开发可以让您深入了解嵌入式系统的底层原理和硬件编程,对于对嵌入式系统底层开发感兴趣的人来说,是一个很好的选择。
144 4
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】静态数码管显示(设计思路&原理&代码演示)
【51单片机】静态数码管显示(设计思路&原理&代码演示)
|
7月前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
59 1