历史上的今天
返回首页

历史上的今天

今天是:2025年08月15日(星期五)

正在发生

2019年08月15日 | 单片机之利用按键来使数码管上两位示数增加

2019-08-15 来源:eefocus


#include

#include "./delay/delay.h"

 

sbit seg_select = P2^1;

sbit bit_select = P2^0;

sbit key1 = P1^0;

 

 

#define SEGPORT  P0

 

 

unsigned char segdata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char TempData[2];

 

 

void display(void)

{

/*消除重影*/

  static unsigned char i = 0;

  SEGPORT = 0x0;            

  seg_select = 1;

  seg_select = 0;

  

  SEGPORT = 0xff;

  bit_select = 1;

  bit_select = 0;

  SEGPORT = TempData[i];

  seg_select = 1;

  seg_select = 0;

  

  SEGPORT = bitdata[i];

  bit_select = 1;

  bit_select = 0;

  

    i++;

    if(2 == i)

    {

i = 0;

}

}

 

void timer0_init(void)

{

EA = 1;                                //打开总中断

  TMOD |= 0x01;                         //选择中断方式

  TH0 = (65536 - 2000) / 256;

  TL0 = (65536 - 2000) % 256;

  ET0 = 1;

  TR0 = 1;

}

 

void timer0_isr(void) interrupt 1

{

TH0 = (65536 - 2000) / 256;

  TL0 = (65536 - 2000) % 256;

  display();

  

}

 

void main()

{

unsigned char disdata = 0;

timer0_init();

while(1)

{

  /*消抖*/

    if(0 == key1)          //有按键按下

  { 

    delay_ms(10);

    if(0 == key1)       //确实有按键按下

  {

  while(!key1);    //有按键抬起

  delay_ms(10);

  while(!key1);    //确实有按键抬起

  }

  disdata++;

  if(100 == disdata)

  {

  disdata = 0;

  }

}

TempData[0] = segdata[disdata / 10];

TempData[1] = segdata[disdata % 10];

    }

 

}


/************************************/

/*delay.h*/

#ifndef _DELAY_H_

#define _DELAY_H_

 

extern void delay_us(unsigned char t);

extern void delay_ms(unsigned char t);

extern void delay_s(unsigned char t);

 

#endif


/***************************************/

/*delay.c*/

void delay_us(unsigned char t)

{

while(--t);

}

 

void delay_ms(unsigned char t)

{

while(t--)

{

delay_us(245);

delay_us(245);

}

}

 

void delay_s(unsigned char t)

{

    while(t--)

{

        delay_ms(200);

delay_ms(200);

  delay_ms(200);

delay_ms(200);

  delay_ms(200);

}

}

推荐阅读

史海拾趣

FOTEK公司的发展小趣事

随着业务的不断拓展,福禄克意识到全球化布局的重要性。1970年代,公司在英国设立了首个海外生产基地,随后又在荷兰和中国等地建立工厂。这一系列举措不仅降低了生产成本,还使福禄克能够更贴近全球市场需求,提供更加快速和灵活的服务。同时,福禄克在全球范围内建立了广泛的销售和服务网络,进一步巩固了其市场地位。

ept Connectors公司的发展小趣事

随着国际市场的不断扩大,EPT Connectors公司开始实施全球扩张战略。公司先后在捷克共和国、美国和中国等地设立了生产基地和研发中心,以便更好地服务当地客户。同时,EPT还建立了一个遍布全球的分销网络,以确保产品能够及时、准确地送达客户手中。这些举措不仅提升了EPT的市场竞争力,也为其未来的发展奠定了坚实的基础。

FINDER公司的发展小趣事

EPT Connectors公司一直注重产品品质的管理和提升。公司建立了严格的质量管理体系,从原材料采购到产品制造、检测等各个环节都进行严格把关。同时,EPT还积极引进先进的生产设备和技术,不断提升产品的质量和性能。这些努力使得EPT的产品在市场上赢得了良好的口碑和客户的信任。许多知名电子企业都选择EPT作为他们的连接器供应商,这也进一步推动了EPT的发展。

Fuji Electric Co Ltd公司的发展小趣事

进入上世纪80年代,EPT Connectors公司迎来了一次重要的技术突破。公司成功推出了DIN 41612连接器,这一产品凭借其高性能和可靠性迅速在市场上获得了认可。随后,EPT又相继推出了PC/104和PC/104-Plus、Hm2.0、AdvancedTCA和MicroTCA等产品组,进一步巩固了其在连接器领域的领先地位。这些产品的推出不仅提升了EPT的品牌影响力,也为公司带来了可观的收益。

福斯特半导体(Foster)公司的发展小趣事

EPT Connectors公司成立于1967年,由创始人Bernhard Guglhör在德国的某个小镇上创建。起初,公司专注于连接器的小规模制造,以满足当地电子设备的需求。随着技术的不断进步和市场的扩大,EPT逐渐意识到连接器在电子设备中的重要性,并决定专注于这一领域的发展。经过几年的努力,EPT在德国建立了自己的总部,并开始向国际市场拓展。

E. Dold & Söhne KG公司的发展小趣事

在E. Dold & Söhne KG公司的发展历程中,品质始终是公司最重视的方面之一。公司严格把控原材料采购、生产过程和产品检验等环节,确保每一件产品都符合高标准的质量要求。这种对品质的执着追求使得E. Dold & Söhne KG公司的产品在市场上赢得了广泛的认可和信任。

问答坊 | AI 解惑

电容隔直通交问题

对于电容器构造的简单描述是这样的:“一般由用电介质隔开的两个金属板构成。” 而关于电流的定义是这样的,“单位时间内通过导体横截面的电荷量。” 如果把电容看成一个横截面,那么 在电容两端加恒定电压U时,就会在两个金属板上分别积累正负 ...…

查看全部问答>

Keil C51 几类重要库函数 (2)

8. 第八章 dScope for Windows使用详解 1. 第一节 概述 1. 1. 主窗口(Mainframe Window) 可设置其它各种调试窗口,设置断点、观察点,修改地址空间,加载文件等等; 2. 2. 调试窗口(DEBUG Window) 支持用户程序的各种显示方式,可连续运行 ...…

查看全部问答>

这个小程序有问题吗?

#include __CONFIG (INTRC & PROTECT & MCLREN & WDTEN); const unsigned char cs @ 0x1FF; void DelayUs( int  x)    // 32US {while(--x!=0)   { CLRWDT();     NOP();     unsigned ...…

查看全部问答>

求助:关于开发windows的实时控制系统

现在有一个应用程序,实时性不够,想在windows下加一个实时模块!经过查找资料,目前确定的方案是添加一个实时驱动模块,而这个模块就用一个内核模式驱动程序来实现!该程序通过接管实时定时器的中断,也就是系统时钟中断,然后先将控制权交给实时 ...…

查看全部问答>

请使用英文版 Visual studio 2005/2008的朋友帮个小忙,谢谢!

公司要找其它公司做应用软件,用WINCE生成的SDK还得附加个英文的使用说明,但是我的VS是中文版的,截图全是中文字,公司的人说不行,所以请使用英文版的朋友帮我截个图,非常感谢! 发到我的邮箱里就可以veabolho@126.com 截图的内容就像这张 …

查看全部问答>

如何将堆栈放置在RAM最尾端?

最近做项目的时候碰到了一个因为局部变量导致堆栈越界的问题,虽然最后靠扩大堆栈空间暂时解决了,但这也限制了全局变量的定义。有没有一种好的方法来解决这些问题了?看了看编译后的MAP文件,发现MDK将STACK放在了最后一个全局变量的后面。现 ...…

查看全部问答>

8962 lwip 如何实现不同网段连接啊

求助,哪位告诉能指点下, 在8962上面使用lwip 如何实现不同网段的能够连接啊???就是公司网络 192.168.1.12的电脑 可以 ping通 192.168.2.2的电脑但是我的板子 192.168.1.10 ping不同 192.168.2.2的电脑…

查看全部问答>

新手求助

刚刚买了一个xilinx spartan6 XC6SLX16的FPGA板子,但是不知道该怎么学习,求各位大侠指点…

查看全部问答>

AtmelStudio6.0 下atmega88的调试和仿真

AtmelStudio6.0 下atmega88的调试和仿真   这几天一直在调试atmega88PA这款单片机,用的开发环境是AtmelStudio6.0,绕了不少弯路,网上关于这方面的资料也不多;在这里分享一下自己的调试过程,供大家一起学习。 1、双击快捷方式打开 ...…

查看全部问答>

TI推出手机电源系统解决方案

TI 移动手机电源系统可以满足从电池到显示和通讯接口的全部电源管理需求。这款解决方案包含高度集成和优化的器件,为手机应用而特别设计,并且将电源和RF 系统中的主导负载效率提升到最高,同时它具有集成保护功能,实现了安全的电池管理和相机闪光 ...…

查看全部问答>