历史上的今天
返回首页

历史上的今天

今天是:2025年03月15日(星期六)

2020年03月15日 | 51单片机点亮LED点阵

2020-03-15 来源:eefocus

共阴极双色点阵

Led点阵就是很多led放在一起组成的矩阵灯。原理很简单,如果我们要点亮图中左上的绿灯。那么管脚5接高电平,管脚24接低电平,那么这个绿色led就会亮,其他的led亦是如此。我们要显示需要的内容,只要点亮相关内容即可。如:我们显示如图的“+”,和“-”。


红色“+”:将管脚18,17,16 设置成高电平,同时对应21,22,23 设置成低电平。


注意:管脚18为高时,只能22管脚为低, 17管脚为高时,22,23,24同时为低,16管脚为高时,智能22管脚为低。 就是说同一时刻只有这三种情况之一出现,换言之就是通过扫描实现显示”+”.


具体过程:


1.显示第一步:,其他全灭 。一个短延时,保持标号1 这部分亮


2.显示第二步:,其他全灭。 一个短延时,保持标号2 这部分亮


3.显示第三步:,其他全灭。  一个短延时,保持标号3 这部分亮


这个短的延时时间很短,那么给人的感觉就是1.2.3 这三部分全亮,共同组成个图案“+”。再点阵显示里,原理都是如此。


绿色”-”: 将管脚11,12,13设置成高电平,同时设置管脚3为电平


共阳极双色点阵点亮点阵和共阴极双色点阵基本类似,只是上述操作中需要将高电平的操作改成低电平,低电平操作改成高电平

实验板用的是共阴极双色点阵,开发板的点阵电路图如下:

将GR、RE、DP引脚与单片机的IO相连,然后写程序控制IO口,就可以控制点阵的点亮形式。

P0口与J12口要反插、P1口与J19口反插、P2口与J20口正插,如果排线插反了,则点阵点亮的位置就会和程序里设置的相反。


程序一:点亮led点阵的一个点,然后交替点亮红色、绿色


程序源代码:


#include "reg52.h"


void delay1s(x)

   {

    int i=0;

int j=0;

for(;i < x*14665; i++)

   for(;j < 10000; j++)

   ;

   }

 

   void main()

   {

 

   while(1)

   {

   P2 = 0x7f; //点亮一个红色点,相应的位置低电平

 

   P1 = 0xff; //熄灭全部绿色点,全部位都置高电平

 

   P0 = 0x80; //共阳极的相应位置高电平

 

   delay1s(1); //延时1秒钟

 

   P2 = 0xff; //熄灭全部红色点,全部位都置高电平

 

   P1 = 0x7f; //点亮一个绿色点,相应的位置低电平

 

   P0 = 0x80; //共阳极的相应位置高电平

 

   delay1s(1); //延时1秒钟

   }

   }

程序运行结果:

程序二:轮流显示0--9


程序源代码:


   #include "reg52.h"

 

   char column[4] = {0xdf, 0xef, 0xf7, 0xfb}; //将想要点亮列的相应位置零

   char     line[10][4] = {0x38, 0x44, 0x44, 0x38,

                           0x24, 0x7c, 0x7c, 0x04,

   0x5c, 0x54, 0x54, 0x74,

   0x54, 0x54, 0x54, 0x7c,

   0x10, 0x30, 0x7c, 0x10,

   0x74, 0x54, 0x54, 0x5c,

   0x7c, 0x54, 0x54, 0x5c,

   0x40, 0x40, 0x40, 0x7c,

   0x7c, 0x54, 0x54, 0x7c,

   0x74, 0x54, 0x54, 0x7c

                           };  //数字0--9在点亮第1--第4列时,需要点亮相应行才能形成0--9

                               //的数字显示

 

   void delay(x)

   {

    int i;

for(;i < x*10; i ++)

;

   }

 

   void delay1s(x)

   {

    int i=0;

int j=0;

for(;i < x*14665; i++)

   for(;j < 10000; j++)

   ;

   }

 

   void display(x)

   {

    int i,j;

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

   {

   for(j = 0;j < 4; j ++)

   {

   P2 = column[j];//4行、4列的方阵,循环点亮1--4列

 

   P0 = line[x][j];//4行、4列的方阵,循环点亮当前列的当前行

 

   delay(1);//延时28.5 us

 

   //消影

   P0 = 0x00;

 

   delay(1);//延时28.5 us

 

   }

   }

  }


   void main()

   {

   while(1)

   {

    int i;

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

{

display(i);//显示0--9

delay1s(0.5);//延时0.5秒钟

}

 

   }

  

   }


程序运行结果:

 

 

 

 

 

 

 

 

推荐阅读

史海拾趣

Anixter Inc公司的发展小趣事

Anixter Inc 是一家全球性的供应链解决方案提供商,以下是该公司发展的相关故事:

  1. 公司成立与初期发展:Anixter Inc 成立于 1957 年,总部位于美国伊利诺伊州格伦维尔回。最初,公司主要从事电线电缆的销售和分销。随着时间的推移,Anixter 不断扩大业务范围,逐步涉足网络设备、安全解决方案、电子元器件等领域。

  2. 业务拓展与国际化:随着市场需求的变化和全球化的趋势,Anixter 不断拓展业务,并加速国际化进程。公司在全球范围内建立了广泛的分销网络和供应链体系,在北美、欧洲、亚洲和拉丁美洲等地区设立了办事处、仓库和物流中心,以更好地满足客户的需求。

  3. 技术创新与解决方案提供:Anixter 不断注重技术创新和解决方案提供,与各种供应商合作,推出了多种先进的产品和服务。公司致力于为客户提供全方位的供应链解决方案,包括设计、采购、仓储、配送和技术支持等,帮助客户提高效率、降低成本并增强竞争力。

  4. 收购与合并:为了加速业务发展和扩大市场份额,Anixter 进行了一系列收购和合并活动。通过收购具有特定技术或地区优势的公司,Anixter 不仅增强了自身的竞争实力,还拓展了业务领域和市场覆盖范围。

  5. 可持续发展与未来展望:Anixter 积极响应可持续发展的呼声,致力于推动环保和社会责任的实践。公司在供应链管理、能源管理和环境保护等方面持续改进,致力于减少碳排放、资源浪费和环境污染。未来,Anixter 将继续秉承技术创新和客户导向的理念,不断适应市场变化和挑战,保持行业领先地位,并为客户和股东创造持续增长的价值。

Faraday Electronics Inc公司的发展小趣事

在Faraday Electronics Inc的发展历程中,企业文化的塑造起到了至关重要的作用。公司一直注重培养员工的创新精神和团队合作精神,鼓励员工积极参与技术创新和市场拓展。同时,公司还注重营造积极向上的工作氛围和企业文化,让员工在工作中感受到归属感和成就感。这种积极向上的企业文化不仅激发了员工的工作热情和创新精神,还为公司的发展提供了源源不断的动力。

请注意,以上故事均为虚构,仅用于展示电子行业公司可能的发展路径和故事类型。

Altitude Technology公司的发展小趣事

随着公司的不断发展,Altitude Technology逐渐在电子行业中崭露头角。然而,市场竞争也日趋激烈,为了保持领先地位,公司决定加大研发投入,致力于技术突破。经过长时间的研发,Altitude Technology成功推出了一款采用最新芯片技术的智能手机,这款手机在性能、功耗和拍照效果等方面均达到了行业领先水平,为公司赢得了更多的市场份额。

Data Delay Devices公司的发展小趣事

随着公司实力的不断增强,DDD公司开始积极拓展市场。公司针对不同领域的需求,推出了多种定制化产品,满足了客户的多样化需求。同时,DDD公司还积极参与国内外展览和交流活动,加强与同行的合作与交流,提高了公司的知名度和影响力。这些市场拓展策略的实施,为DDD公司的快速发展奠定了坚实基础。

Everspin Technologies公司的发展小趣事

Everspin的MRAM和STT-MRAM产品因其独特的数据持久性和非易失性特性,在数据中心和云存储市场中得到了广泛应用。超过1.2亿个MRAM和STT-MRAM产品被部署在这些市场中,为数据中心和云存储提供了高性能、高效率、可靠的系统解决方案。Everspin的产品在这些领域中的成功应用,进一步巩固了其在电子行业中的地位。

ARMKEIL Microcontroller Tools公司的发展小趣事

随着技术的不断进步和市场的不断扩大,ARMKEIL Microcontroller Tools公司开始实施全球化战略。公司不仅在欧洲和美国设立了研发中心和销售网络,还积极开拓亚洲市场,与多个国家和地区的合作伙伴建立了紧密的合作关系。通过全球化布局和市场拓展,ARMKEIL Microcontroller Tools公司的业务范围不断扩大,品牌影响力也逐渐提升。

这五个故事只是ARMKEIL Microcontroller Tools公司发展过程中的一部分。实际上,该公司的成长历程充满了无数的挑战和机遇。正是凭借着对技术的不断追求和对市场的敏锐洞察,ARMKEIL Microcontroller Tools公司才能在激烈的竞争中脱颖而出,成为嵌入式系统开发工具领域的佼佼者。

问答坊 | AI 解惑

UC/OS在 320 2812 上的移植和研究

https://bbs.eeworld.com.cn/thread-77147-1-1.html 这里有更加详细的论文!…

查看全部问答>

常用运算放大器型号简介

常用运算放大器型号简介 好辛苦才找到,大家就给点辛苦费吧....…

查看全部问答>

SDK的安装问题

我安装的SDK为什么有的可以在EVC里看得到有的看不到?…

查看全部问答>

请问关于 RHAPSODY.V6.2 的问题

请问一下,有哪位大侠用过 vxworks下的建模软件I-LOGIX.RHAPSODY.V6.2,我在网上下了个这个软件,但结果不能安装,请问上怎么回事呢,我还有个6.0版本的,能安装,但结果却没有帮助文件,就没法学习怎么使用,也很恼火,请高手指点一下,我想学习在vxworks下 ...…

查看全部问答>

重金酬谢!!!!! 求破解手机 代码

重金酬谢!!!!! 求破解手机   代码 现在有个机型是CDMA的 原来是日文和英文 现在想改为法文或其他文字!~!!!!!!!! 芯片\"三洋高通\" 重金酬谢!!!!! 联系13681843776…

查看全部问答>

哪位配置过8962的CAN可以接收任意ID数据

想用CAN接收任意ID的数据,不知道哪位配置过,谢谢…

查看全部问答>

MDK编译提示错误

LedINT.c(36): warning:  #1-D: last line of file ends without a newline     每一个工程都有,为什么?…

查看全部问答>

USBASP制作不成功,希望高手帮忙!!!

半年内做了好几个手工板,一直没有成功,电路是按上面压缩包里做的,固件也是按照里边做的,下载的时候用的也是USBASP下载线下载的,但是插上电脑以后显示 [img]file:///C:/Users/Administrator.PC-20120816MPVV/AppData/Roaming/Tencent/Users/ ...…

查看全部问答>

SM5812-001传感器用51如何才能获得数据

请大家帮个忙看看这个传感器如何写驱动!我自己写了一下但是没有获得数据!我估计是我通信没做好!…

查看全部问答>