历史上的今天
返回首页

历史上的今天

今天是:2025年07月17日(星期四)

正在发生

2020年07月17日 | 单片机2——动态数码管的一些实例

2020-07-17 来源:eefocus

1.8只数码管滚动显示单个数字


#include

#include

unsigned char code duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0~9

unsigned char code weima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//分别对应相应的数码管点亮,即位码

unsigned char tempdata[8]; 

void delay(int ms)

{

     unsigned char j;

     for(;ms>0;ms--)

     for(j=125;j>0;j--);

}

void main()

{

   int i;

   P1=0x7f;

  for(i=0;i<8;i++)

  {

   P0=duanma[i];

   delay(2000);

   P1=_cror_(P1,1);        //cror在流水灯中实际效果是左移,而在数码管中就是右移

   } 

}


2.数码管上显示12345,从右往左移动


实现这种功能有几种方法,此处列举两种原理


原理一:从数码管成像原理出发


#include

#include

unsigned char code duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0~9

unsigned char code weima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//分别对应相应的数码管点亮,即位码

unsigned char tempdata[8]; 

void delay(int ms)

{

     unsigned char j;

     for(;ms>0;ms--)

     for(j=125;j>0;j--);

}

void main()

{

   int i,j,k;

   float K1=0xef,K2=0xef;

   for(i=0;i<8;i++)

   {  

      for(k=0;k<50;k++)

      {    

          for(j=1;j<6;j++)

          {

              P1=0xff;

              P1=K1;

              P0=duanma[j];

              delay(5);

              K1=_cror_(K1,1);

          }

          K1=_crol_(K1,5);

       }

       K2=_crol_(K2,1);

       K1=K2;

    }

 


原理二:改变段码的值,使其循环可以首尾相接


#include

     void delay(unsigned char ms)

   {

       unsigned int j;

    for(;ms>0;ms--)

    {

        for(j=125;j>0;j--);

    }


}

unsigned char code DuanMa[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xa4,0xb0,0x99,0x92,0xff,0xff,0xff,0xf9,0xa4,0xb0,0x99,0x92,0xff,0xff,0xff,0xff,0xff,0xff,};// 改变段码的值

       unsigned char code WeiMa[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//分别对应相应的数码管点亮,即位码

       unsigned char TempData[8];   //用于存放4位数码管显示数字的段码

        void Display(unsigned char FirstBit,unsigned char Num)

{

    unsigned char i;

      

    for(i=0;i    { 

        P1=0xff;   //清空数据,防止有交替重影      

      

              P0=TempData[i]; //取显示数据,段码

        P1=WeiMa[i+FirstBit]; //取位码 

        delay(2); // 扫描间隙延时,时间太长会闪烁,太短会造成重影

    }

}

     void main()

{

    unsigned int a=8,j;

    while(1)

    {

        j++;

        if(j==30) 

        {

            j=0;

            a++;

            if(a==26)

                a=18;

         }

        TempData[0]=DuanMa[a-8];

        TempData[1]=DuanMa[a-7];

        TempData[2]=DuanMa[a-6];

        TempData[3]=DuanMa[a-5];

        TempData[4]=DuanMa[a-4];

        TempData[5]=DuanMa[a-3];

        TempData[6]=DuanMa[a-2];

        TempData[7]=DuanMa[a-1];

        Display(0,8);

    }

}

推荐阅读

史海拾趣

HI Microwave Technology Limited公司的发展小趣事

随着技术的不断积累和市场需求的日益增长,HI Microwave不断加大研发投入,成功开发出了一系列高性能的微波组件产品,包括隔离器、循环器、开关、滤波器、功率分配器/合成器、定向耦合器、天线、混频器、压控振荡器(VCOs)和射频放大器等。这些产品广泛应用于无线电信和光纤通信行业,满足了客户多样化的需求。同时,公司还积极与国内外知名企业和科研机构合作,共同推动微波通信技术的发展。

客益(Guestgood)公司的发展小趣事

HI Microwave深知质量是企业生存和发展的根本。因此,公司从原材料采购到成品出厂的每一个环节都严格把关,确保产品质量符合国际标准和客户要求。同时,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。这种以客户为中心的服务理念赢得了客户的信任和忠诚,也为公司的持续发展奠定了坚实的基础。

Gem Asia Enterprise Co Ltd公司的发展小趣事

随着全球对环保问题的日益关注,Gem Asia积极响应号召,将环保理念融入企业发展中。公司投入大量资源研发绿色电子产品和生产工艺,减少了对环境的影响。同时,Gem Asia还建立了完善的废旧电子产品回收体系,实现了资源的循环利用。这些举措不仅提升了企业的社会形象,还为企业带来了长期的经济效益和社会效益。

C-TON Industries公司的发展小趣事

随着公司规模的扩大,C-TON意识到单凭自己的力量难以在竞争激烈的电子行业中立足。于是,公司开始积极寻求与其他企业的战略合作。通过与一家知名的电子产品制造商建立合作伙伴关系,C-TON成功将其芯片技术应用于对方的产品中,进一步扩大了市场份额。这一合作不仅提升了C-TON的知名度,也为其带来了稳定的订单和收入来源。

AXSEM公司的发展小趣事

在电子行业中,产品质量的稳定性是企业生存的关键。C-TON深知这一点,因此从公司成立之初就高度重视品质管理。公司建立了一套严格的质量检测体系,确保每一件产品都符合高标准的质量要求。此外,C-TON还不断引进先进的生产设备和技术,提升生产效率和产品质量。这些努力使得C-TON的产品在市场上获得了良好的口碑,也为其赢得了众多忠实客户。

Calmos Systems Inc公司的发展小趣事

随着电子行业的快速发展,Calmos Systems Inc公司意识到技术创新是企业发展的核心动力。因此,公司加大了研发投入,引进了一批高水平的技术人才,建立了完善的研发体系。经过多次试验和失败,公司成功开发出了一款具有颠覆性的新技术,这项技术在行业内引起了广泛关注。凭借这一技术创新,公司在市场上获得了竞争优势,实现了快速发展。

问答坊 | AI 解惑

基于UC3842的开关电源保护电路的改进

UC3842是美国Unltmde公司生产的一种性能优良的电流控制型脉宽调制芯片,它具有管脚数量少,外围电路简单等特点,因而得到了广泛的应用。但随着UC3842开关频率的提高,由它所构成的开关电源的保护电路也出现了很多问题。本文分析了UC3842保护电路的 ...…

查看全部问答>

错误检测与纠正电路的设计与实现

摘 要:针对一些恶劣的电磁环境对随机存储器(RAM)电路误码影响的情况,根据纠错编码的基本原理,提出简单实用的能检查两位错误并自动纠正一位错误的EDAC算法;通过VHDL语言编程设计,由FPGA器件来实现,并给出仿真结果。 关键词:错误检测与纠 ...…

查看全部问答>

逆变电源会用到的

做逆变应该会用到…

查看全部问答>

555时基电路的基本特性和用法.doc

本帖最后由 paulhyde 于 2014-9-15 09:24 编辑  …

查看全部问答>

到底怎样才能理解三极管的放大原理与开关原理?

到底怎样才能理解三极管的放大原理与开关原理?大虾们都来说说,最基础的问题…

查看全部问答>

怎么样才能对单片机的ROM进行效验?

我现在有个问题,涉及软件可靠性的,描述如下:    (1)当我把一个程序编好烧录好之后,在软件正常跑的过程中,要对保存软件的这片ROM进行安全检验,以保证数据没有发生更改,目前的单片机中都没有找到可以直接操作ROM区域的方式,不知 ...…

查看全部问答>

流接口驱动程序加载问题

有时候能加载进来,有时候就出错,,这是为什么呢? 代码如下: REG: [HKEY_LOCAL_MACHINE\\Drivers\\BallPen] \"Index\"=dword:1 \"Prefix\"=\"DAT\" \"Dll\"=\"DataDriver.dll\" \"Order\"=dword:0 加载代码:       &n ...…

查看全部问答>

如何让开发的驱动程序和应用程序一一对应呢

我开发一个驱动程序.sys和一个应用程序.exe,应用程序可以调用加载到内核的驱动 程序,我看资料说驱动程序的派遣函数是运行在应用程序的进线程的上下文中了,那 么我可以获得应用程序的模式(PE加载到内核中)的资料么?然后再驱动里做点东西 可 ...…

查看全部问答>

提点意见,能不能把论坛敲钟的声音关了?

以前挺好的,自从有了这个声音,觉得太俗了,以前有论坛有过。 让人听着也不舒服,毕竟是强加的东西 个人觉得有损论坛的形象…

查看全部问答>

STM32F103VET62.8寸TFTLCDDriver问题。

#include "includes.h" #include "lcd204.h" #include "fonts.h" typedef struct {   vu16 LCD_REG;   vu16 LCD_RAM; } LCD_TypeDef; #define LCD_BASE        ((u32 ...…

查看全部问答>