历史上的今天
返回首页

历史上的今天

今天是:2024年09月26日(星期四)

正在发生

2021年09月26日 | 基于51单片机秒表设计,独立按键实现启动、复位、暂停功能

2021-09-26 来源:eefocus

功能说明:

image.png?imageView2/2/w/550

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器


typedef unsigned int u16;   //对数据类型进行声明定义

typedef unsigned char u8;


sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;


sbit K1=P3^1;  //开始

sbit K2=P3^0;  //停止

sbit K3=P3^2;  //使用中断  清零  


//数码表

u8 code smgduan[17]={0x3f,0x06,0x5b,

                 0x4f,0x66,0x6d,

                 0x7d,0x07,0x7f,

                     0x6f,0x77,0x7c,

                     0x39,0x5e,0x79,

                     0x71};


u8 ssec,sec,min; //毫秒,秒,分

u8 DisplayData[8];


 

void delay(u16 i)

{

while(i--);

}



void Timer0Init()

{

TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0Xd8; //给定时器赋初值,定时10ms

TL0=0Xf0;

ET0=1;//打开定时器0中断允许

//注:稍后用K2控制总中断,实现暂停功能

EA=1;//打开总中断

TR0=1;//打开定时器

}



void DigDisplay()

{

u8 i;

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

{

switch(i) //位选,选择点亮的数码管,

{

case(0):

LSA=1;LSB=1;LSC=1; break;//显示第7位

case(1):

LSA=0;LSB=1;LSC=1; break;//显示第6位

case(2):

LSA=1;LSB=0;LSC=1; break;//显示第5位

case(3):

LSA=0;LSB=0;LSC=1; break;//显示第4位

case(4):

LSA=1;LSB=1;LSC=0; break;//显示第3位 

case(5):

LSA=0;LSB=1;LSC=0; break;//显示第2位 

case(6):

LSA=1;LSB=0;LSC=0; break;//显示第1位 

case(7):

LSA=0;LSB=0;LSC=0; break;//显示第0位

}

P0=DisplayData[i];//发送段码

delay(100); //间隔一段时间扫描

P0=0x00;//消隐

}

}


//处理时间,拆分数位

void datapros()

{

DisplayData[0]=smgduan[min/10];

DisplayData[1]=smgduan[min%10];

DisplayData[2]=0x40;

DisplayData[3]=smgduan[sec/10];

DisplayData[4]=smgduan[sec%10];

DisplayData[5]=0x40;

DisplayData[6]=smgduan[ssec/10];

DisplayData[7]=smgduan[ssec%10];

}


//设置外部中断1 (K3)

void Int0Init()

{

      IT1=1;

  EX1=1;

  EA=1; 

}


//中断服务函数(按键)

void Int0()  interrupt 0

{

    //消抖

delay(1000);

if(K3==0)

{

//清零

   min=0;

   sec=0;

      ssec=0;

}

}


//开始计时函数

void start()

{

      datapros();

  DigDisplay();

}


//主函数

void main()

{

Timer0Init(); //设置外部中断

    Int0Init();

while(1)

{

if(K1==0)

{

delay(1000);//消抖

while(1)

{

if(K2==0)

{

  EA=0;      //总中断关闭

}

  start();   //开始计时

  

  //退出

if(K3==0)

{

break;

}

}

}

     //跳出循环 

if(K3==0)

{

  break;

}

}

}



void Timer0() interrupt 1

{

TH0=0Xd8; //给定时器赋初值,定时10ms

TL0=0Xf0;

ssec++;

if(ssec>=100)  //1s

{

ssec=0;

sec++;

if(sec>=60)

{

sec=0;

min++;

if(min>=60)

{

min=0;

}

}

}

}

推荐阅读

史海拾趣

佰宏(BHFUSE)公司的发展小趣事

随着国内市场的稳定发展,佰宏公司开始积极拓展海外市场。他们的产品被多个海外电商平台上架,受到了国际客户的青睐。这一举措不仅提升了公司的国际化水平,也为公司的长期发展注入了新的动力。

Freqtech Ohg公司的发展小趣事

Freqtech Ohg公司深知人才是企业发展的第一资源。因此,公司高度重视人才培养和团队建设工作。公司建立了完善的人才培养体系,通过内部培训、外部引进等多种方式,不断提升员工的专业技能和综合素质。同时,Freqtech还注重营造积极向上的企业文化氛围,激发员工的创新精神和团队合作精神。这些努力使得Freqtech拥有一支高素质、专业化的研发团队和管理团队,为公司的持续健康发展提供了有力的人才保障。

需要注意的是,以上故事均为虚构内容,旨在反映电子行业公司可能经历的发展路径和面临的挑战与机遇。对于Freqtech Ohg公司的具体情况,建议直接查阅其官方网站或相关权威报道以获取准确信息。

DALLAS公司的发展小趣事

随着移动设备市场的蓬勃发展,Dallas公司敏锐地捕捉到了电池电量管理技术的市场需求。在深入研究和技术攻关后,Dallas成功推出了可编程锂离子电池电量计DS2790。这款产品集成了先进的微控制器、大容量程序和数据存储器以及精密的电池电流、电压和温度测量系统,为定制单节电池电量计的算法提供了优秀的平台。DS2790的推出不仅满足了市场需求,也为Dallas公司在电池管理技术方面赢得了声誉。

方舟(ARKLED)公司的发展小趣事

方舟公司自成立以来,始终致力于LED光电技术的研发与创新。公司拥有一支由行业专家和技术骨干组成的研发团队,不断推出具有自主知识产权的新产品。其中,方舟公司独创的某款LED显示屏,以其高清晰度、低功耗和长寿命等特性,在市场上获得了广泛认可。这款产品不仅提升了方舟公司的品牌影响力,还为公司带来了丰厚的经济回报。

Coherent Inc公司的发展小趣事

随着公司的发展,Coherent Inc.开始通过收购和整合来增强自身实力。1998年,公司以6500亿美金收购了Palomar Medical Technologies的部分业务,这一举措进一步拓宽了公司的业务范围和技术领域。此外,公司还陆续收购了多家具有技术优势的公司,如Positive Light和Lambda Physik,这些收购不仅增强了公司的技术实力,也使其在激光技术领域的地位更加稳固。

DCX-CHOL Enterprises公司的发展小趣事

DCX-CHOL Enterprises成立于一个科技蓬勃发展的时代。公司的创始人是一群热衷于电子技术的年轻人,他们看到市场上对于高性能、低功耗芯片的巨大需求,于是决定自主研发。经过数年的艰苦努力,他们成功开发出了一款具有革命性意义的低功耗芯片,该芯片不仅性能卓越,而且成本远低于同类产品。这一创新成果迅速赢得了市场的认可,DCX-CHOL Enterprises因此获得了第一桶金,为公司后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

NET+50单片机资料

这是我辛辛苦苦找到的资料,与大家分享…

查看全部问答>

电子狗方案分享

SKYLAB提供GPS雷达测速电子狗方案  性价比有优势 应用于定位设备的高性能GPS接收模块中国主要供应商深圳天工测控技术有限公司SKYLAB ,凭借其强大 的技术实力,对GPS模块进行二次开发,根据客户的要求提供GPS电子狗解决方案,具备以下 ...…

查看全部问答>

S3C6410 Google Android 进阶

转自:www.embed-training.com/ 触摸屏篇: Samsung-2.6.28 Patch: S3C6410 Android 触摸屏校准可以在应用层用tslib来触准,生成校准文件,也可以将校准数据直接写到内核触摸屏驱动里面。 下面我将XXXX6410 2.6.28的android的触摸屏patch ...…

查看全部问答>

电平持续时间的问题

        IO0SET=en;         IO0CLR=en; 复制代码 arm7 用上面的程序得到一个上升沿和下降沿,请问高电平持续的时间是多少? 怎样计算?…

查看全部问答>

[51疑惑中]--w77e58给SBUF赋值TXD没反应,WHY?

自编测试代码如下: #include \"w77e58.h\" xdata unsigned char TxPnt; xdata unsigned char ComTxbyte[]={0x00,0x00,0xff,0xff}; xdata unsigned char aa; void Com1_INT(void) interrupt 4         {     & ...…

查看全部问答>

招聘嵌入式开发工程师(Linux)

岗位描述: 1、嵌入式软件设计与开发。 2、根据项目需要进行软件技术支持。 3、嵌入式项目软件开发过程控制 任职要求: 1、熟悉linux开发环境,熟悉C/C++语言 2、具有 Linux、WinCE、VxWorks、ucos或其他至少一种嵌入式操作系统的开发、调 ...…

查看全部问答>

直接存取I/O埠與記憶體(Direct access I/O and Memory)

網路上有一個工具程式名為WINIO,透過它我們可以輕易的存取記憶體與I/O埠,但是它使用了一些已經過時或未公開的函數,因為不知微軟何時會將這些函數移除,所以使用這些函數會有一定的危險性,雖然到目前32位元的Windows 7版本中還可使用。 在此, ...…

查看全部问答>

DLP大屏幕现场勘察需注意什么

电源为AC220V±5%;用有保护接地线的三眼插座,插座数与投影屏数有关,一般控制器一个,三个投影屏用一路插座;     投影系统和大屏控制器及控制PC等要求同相供电;     电源电压要稳定,可靠,特别防止断电后立即加电。因此 ...…

查看全部问答>

基于芯片与封装的两种LED分选方法

人眼对于光的颜色及亮度的分辨率非常高,特别是对于颜色的差别和变化非常敏感。对于不同颜色波长的光人眼的敏感度是不同的。例如,对于波长是585nm光,当颜色变化大于1nm时,人眼就可以感觉到;而对于波长为650nm的红光,当颜色变化在3nm的时候,人 ...…

查看全部问答>