历史上的今天
返回首页

历史上的今天

今天是:2025年05月07日(星期三)

正在发生

2018年05月07日 | 51单片机--设置数码管的闪烁位置,便于输入数字

2018-05-07 来源:eefocus

/*


有四个独立按键为 K1~K4,有四个数码管,可显示 0000~9999。


初始时都显示 0。


四个数码管中,有一个处于闪烁状态。闪烁的频率为 1Hz。


利用 K3、K4 可以使得闪烁的位置左右移动。


只有不停闪烁的位,才可以用 K1、K2 使其数值递增或递减。


数值的范围是 0~9。


题目连接:http://zhidao.baidu.com/question/455550887523150405.html


做而论道编写程序如下:


*/

#include

#include


sbit  k_a = P3^1;

sbit  k_s = P3^3;

sbit  k_l = P3^5;

sbit  k_r = P3^7;

//---------------------------------------


unsigned char code SEG7[] = {

    0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};


unsigned char DISP_BUFF[] = {0, 0, 0, 0, 0, 0, 0, 0};


unsigned char num[] = {0, 0, 0, 0, 0, 0, 0, 0};

unsigned char n = 0, n_50ms;


bit flag; 

//---------------------------------------

void DelayMS(unsigned int x)

{

    unsigned char  i;

    while(x--)  for(i = 200; i > 0; i--);

}

//---------------------------------------

void  display()

{

    unsigned char i, w = 128;


    for(i = 0; i < 8; i++)  DISP_BUFF[i] = num[i];

    if (flag)   DISP_BUFF[n] = 10; 


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

      P0 = SEG7[DISP_BUFF[i]];

      P2 = w;  DelayMS(1);   P2 = 0;

      w = _cror_(w, 1);

    }

}

//---------------------------------------

void main()

{

    TMOD = 0x01;

    TH0 = 0x3C;

    TL0 = 0xB0;

    TR0 = 1;

    IE = 0x82;


    while(1)  {

      if  (!k_a) {

        display();

        if  (!k_a) {

          while (!k_a)  display();

          num[n]++;  if (num[n] > 9)  num[n] = 0;

        }

      }

      if  (!k_s) {

        display();

        if  (!k_s) {

          while (!k_s)  display();

          num[n]--;  if (num[n] > 9)  num[n] = 9;

        }

      }

      if  (!k_l) {

        display();

        if  (!k_l) {

          while (!k_l)  display();

          n++;  if (n > 3)  n = 0;

        }

      }

      if  (!k_r) {

        display();

        if  (!k_r) {

          while (!k_r)  display();

          n--;  if (n > 3)  n = 3;

        }

      }

      display();

    }

}

//---------------------------------------

void T0_INT() interrupt 1

{

    TH0 = 0x3C;

    TL0 = 0xB0;

    n_50ms++;

    n_50ms %= 6;   //10对应1Hz

    if(!n_50ms)  flag = ~flag;

}

//---------------------------------------


//仿真运行的截图如下:

51单片机--设置数码管的闪烁位置,便于输入数字 - 非著名博主 - 电子信息角落


推荐阅读

史海拾趣

DESIGNERSYSTEMS公司的发展小趣事

DESIGNERSYSTEMS公司意识到,要在电子行业持续发展,必须不断拓展市场。他们积极寻求跨界合作的机会,与汽车、医疗、航空航天等多个行业的领军企业建立了合作关系。通过跨界合作,DESIGNERSYSTEMS不仅将自身的技术优势应用于更广泛的领域,还从合作伙伴那里学到了更多行业知识和经验,进一步提升了自身的综合实力。

Allied Wire & Cable Inc公司的发展小趣事

面对日益严峻的环境问题,Allied公司积极承担社会责任,致力于可持续发展。公司注重环保生产,采用环保材料和工艺,减少对环境的影响。同时,公司还关注未来发展趋势,制定了一系列战略规划,包括加大研发投入、拓展新兴市场、提升品牌影响力等,为公司的未来发展奠定了坚实的基础。

这些故事基于Allied Wire & Cable Inc公司的历史和发展情况构建,旨在展现其在电子行业中的成长和进步。如需更详细的信息,建议查阅公司的官方网站或相关新闻报道。

DAQ Electronics LLC公司的发展小趣事

随着国内外市场的不断拓展和客户需求的不断增长,DAQ Electronics LLC公司开始积极探索国际化发展道路。公司积极参加国际展会和技术交流活动,与全球同行建立了广泛的联系和合作。同时,公司也加大了对海外市场的投入力度,不断拓展海外市场份额。这种国际化的发展战略不仅为公司带来了更多的商业机会和合作伙伴也为公司未来的发展提供了更广阔的空间和机遇。

请注意,以上故事均为虚构内容,仅供参考。如有需要,建议直接联系DAQ Electronics LLC公司获取其真实的发展历程和故事。

Blaze Display Technology Co Ltd公司的发展小趣事

自1982年起,Blaze Display Technology Co., Ltd.(以下简称“Blaze公司”)以其前瞻性的视野和坚定的决心,踏入了LCD显示屏领域。创立初期,公司面临着资金短缺、技术瓶颈以及市场竞争的诸多挑战。然而,凭借创始团队对技术的深刻理解和对市场的敏锐洞察,Blaze公司逐步攻克难关,研发出了一系列具有竞争力的LCD显示屏产品。

DL Instruments LLC公司的发展小趣事

随着产品的不断推出和市场的逐步认可,DL Instruments开始积极拓展其市场份额。公司不仅在美国本土市场取得了良好的业绩,还逐渐将产品推向国际市场。通过多年的努力,DL Instruments在电子行业中建立了良好的品牌形象,成为精密仪器制造领域的佼佼者。

Anvo-Systems公司的发展小趣事

Anvo-Systems在发展过程中始终注重企业文化建设和社会责任履行。公司倡导创新、协作、诚信的企业精神,为员工创造了一个积极向上的工作环境。同时,Anvo-Systems还积极参与社会公益活动,关注环保和可持续发展等问题。通过这些举措,Anvo-Systems不仅提升了企业的社会形象,也为社会的和谐发展做出了积极贡献。


请注意,以上故事纯属虚构,不代表现实中任何公司或行业的真实情况。在实际应用中,应根据具体公司的历史和发展情况进行调整和完善。

问答坊 | AI 解惑

纹波电流计算方法

纹波电流计算方法…

查看全部问答>

单片机语言C51应用实战集锦

单片机语言C51应用实战集锦…

查看全部问答>

linux 文件系统挂载点

media,mnt这两目录挂载文件系统有什么不同,挂在media下的能挂载在mnt下吗?除了这两目录,文件系统还能挂在其它目录下吗?如果不能那又是为什么呢?…

查看全部问答>

对中国目前3G的一点看法

3G时代,能否替代原有的固定宽带 2009年元月,中国3张3G牌照发放   电信 cdma2000  推出天翼品牌,声称测试速度已经达到3.3Mbps,年底升级到9Mbps。   联通 WCDMA   声称速度达到7.2Mbps,号称 ...…

查看全部问答>

请教找ST芯片供货?

我想问下,深圳的ST供应商这些怎么查,一级代理商怎么查? 像我们如果几天要1000PCS这样的量的,一级代理商会理吗?而且周期比较长。…

查看全部问答>

请教HPI问题

本帖最后由 dontium 于 2015-1-23 13:38 编辑 DM642的HPI 接口除了HD[0:15]、HRDY、HINT、HCNTL[0:1]、HHWIL、HAS、HR/W、HCS、HDS[1:2]这26根外CPI_EN和MAC_EN是否也要与HOST端进行连接? …

查看全部问答>

Linux 2.6.36内核移植飞凌OK6410开发板完整步骤详解

  今天终于让Linux内核在飞凌的板子上跑起来了,想来也是艰辛,为了移植成功,断断续续做了将近两个月的努力,期间郁闷不可言 语形容啊,   了解其中艰辛,将自己移植步骤与心得与大家分享,希望对初踏次领域之人有所帮助,我所写 ...…

查看全部问答>