历史上的今天
返回首页

历史上的今天

今天是:2024年11月26日(星期二)

正在发生

2020年11月26日 | 单片机定时倒计时提醒制作

2020-11-26 来源:51hei

学了一段时间单片机,这两天做了个实用电路,最长99分钟定时倒计时提醒器。缺陷是电路开始工作后,一分钟减一个数再无其它动作。给启动按钮加了声音,否则电路是否已经启动都看不出来。时间到有响声提醒。


上面两个按钮调节十分与分,每次加十分钟和加一分钟。
晶振下面是复位按钮,右下角是启动按钮。
下面压缩包中有Proteus仿真文件与C代码。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:

#include  //自制最长99分钟定时倒计时提醒器 2020-11-06

#define uchar unsigned char

#define uint unsigned int

sbit gewei0=P2^6;   //允许个位显示。

sbit shiwei0=P2^7;  //允许十位显示。

sbit key1=P2^5;  //键1,每按加10分钟。

sbit key2=P2^4;  //键2,每按加1分钟。

sbit key3=P2^3;  //键3,开倒计时或暂停。

sbit beep=P2^2;

uchar k;

unsigned int s;

void delayms(uchar);

void delay(uint z);

void keyscan();

void display(uchar);

void init();

void xiang1();

void xiang2();

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};


void main()

{ init();     //调“初始化”。

  while(1)

  { keyscan();  //调“监测按键”。

    display(k); //调“显示”。

}}


void keyscan() //监测按键。

{ if(key2==0)

  { delayms(26);

    if(key2==0)

    { k++;

      if(k>=99) //k==99与中断那里一致。

         k=0;

      while(!key2); //抬起按键key2时,显示出k+2的结果。

    }

  }


  if(key1==0)

  { delayms(26);

    if(key1==0)

    { k=k+10;

      if(k>=99) //k==99与中断那里一致。

         k=0;

      while(!key1);

    }

  }

  if(key3==0)

  { delayms(26);

    if(key3==0)

    {   xiang1(); //启动“倒计时”提示。

      delayms(246);

      TR0=~TR0;

      while(!key3);

}}}


void delayms(uchar z) //延时。

{ uchar i,j;

  for(i=z;i>0;i--)

    for(j=110;j>0;j--); }


void delay(uint z)

{  while(z--); }


void display(uchar k) //显示。

{ uchar shi,ge;

  shi=k/10;

  ge =k%10;


  gewei0=0;

  P0=table[ge];

  delayms(21);

  gewei0=1;


  shiwei0=0;

  P0=table[shi];

  delayms(21);

  shiwei0=1;

}


void init() //初始化。设置中断与定时器的值。

{ TMOD=0x01;

  TH0=(65536-50000)/256;  //晶振12MHz,定时50ms。

  TL0=(65536-50000)%256;

  EA=1;

  ET0=1;

}


void xiang1() //计时开始提示音。

{

  uchar q;

  for(q=0;q<100;q++)

  {

    beep=0;

    delayms(6);

    beep=1;

    delayms(4);

  }

    delayms(64);

}


void xiang2() //计时结束提示音--嘟嘟。

{

  unsigned int m;

  uchar n;

  for(n=0;n<2;n++)

  {

    for(n=0;n<111;n++)

    {

      beep=0;

      delay(107);

      beep=1;

      delay(107);

    }


   for(m=0;m<3456;m++);

    for(n=0;n<111;n++)

    {

      beep=0;

      delay(107);

      beep=1;

      delay(107);

    }

   for(m=0;m<33333;m++);

  }

……………………



推荐阅读

史海拾趣

DLP Design公司的发展小趣事

DLP精工科技公司,一直秉承“品质至上”的经营理念,在DLP技术产品的设计和制造过程中严格把控品质。公司拥有一支专业的研发团队和先进的生产设备,确保每一件产品都符合高标准的质量要求。通过不断的技术创新和产品升级,DLP精工科技在电子行业中树立了良好的品牌形象,赢得了消费者的信赖和认可。

CLANDELL公司的发展小趣事

品质是CLANDELL公司一直以来的核心竞争力。公司建立了严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格把控。同时,公司还加强了售后服务体系建设,确保客户在使用过程中能够得到及时、有效的支持。这些举措不仅提升了CLANDELL公司的产品品质,也赢得了客户的信任和好评。

CP Technology Inc公司的发展小趣事

CP Technology Inc成立之初,便专注于半导体技术的研发。公司研发团队成功开发出一种高效能、低功耗的芯片,这一创新为公司的快速崛起奠定了基石。随着技术的不断完善和产品的广泛应用,CP Technology Inc逐渐在半导体市场上占据了一席之地。公司通过持续的技术创新和产品迭代,不断满足市场需求,赢得了客户的信赖和支持。

ERGOBAHCO公司的发展小趣事

ERGOBAHCO公司成立于20世纪90年代初,当时正值电子行业快速发展的黄金时期。公司创始人李明(化名)看准了市场对于高质量电子配件的需求,决定从电子连接器这一细分领域入手。然而,初创时期公司面临着资金短缺、技术落后等诸多挑战。李明凭借对市场敏锐的洞察力,成功争取到了几笔关键的投资,并带领团队攻克了一系列技术难关。通过不懈努力,ERGOBAHCO公司逐渐在电子连接器领域站稳了脚跟。

Harbour Industries公司的发展小趣事

背景:20世纪末,随着电子技术的飞速发展,Handok敏锐地捕捉到了半导体行业的崛起机遇。公司决定投入大量研发资源,专注于开发新型半导体材料和技术。

发展:经过数年的潜心研究,Handok成功研发出一种具有更高导电性和稳定性的新型半导体材料,这一创新成果迅速获得了业界的广泛关注。公司迅速将这项技术应用于生产,推出了一系列高性能的半导体产品,迅速占领了市场的一席之地。

影响:Handok的技术革新不仅推动了公司自身的快速发展,还对整个半导体行业产生了深远的影响,促进了整个产业链的升级和转型。

BOOKHAM公司的发展小趣事

面对国内市场的饱和,BOOKHAM公司决定实施国际化战略,拓展海外市场。公司先后在多个国家和地区设立了分支机构,积极参加国际电子展会和交流活动,与国际同行建立起了广泛的合作关系。通过不断的努力,BOOKHAM公司的产品逐渐打入国际市场,公司的知名度和影响力也得到了显著提升。

问答坊 | AI 解惑

车载移动电视接收的系统方案

在柏林推出的DVB T(地面数字广播)数字电视也已经影响到汽车娱乐系统中的电视接收。现在,汽车电视接收机不仅能够接收模拟电视信号(它仍将在城市以外的地区继续存在数年),而且也能够接收和处理DVB T信号。Hirschmann Electronic ...…

查看全部问答>

STM32调起来还得看RP?

BOOT0/1得来回倒腾。BOOT0=0调试一次之后如果停止调试,再启用调试就出现“Programming Failed!”错误 试出来唯一的解决方法就是始终保持BOOT1=1。 如果出现BOOT0=0无法调试的情况,就断电改成BOOT0=1再上电,从RAM启动,运行J-link ARM软件,连 ...…

查看全部问答>

嵌入式linux系统与应用开发就业班

课程描述 参加嵌入式linux系统与应用开发就业班可以使学员快速掌握嵌入式系统开发的流程,系统移植的方法,编写Bootloader等。学习本课程的学员能够从事嵌入式系统相关的项目开发。 1、培训过程中,如有部分内容理解不透或消化不好,可免费在下期 ...…

查看全部问答>

linux系统裁剪,制作成ISO安装盘,如何做?

请教各位前辈一个问题:  我要将linux系统裁剪(系统功能简单,只需要保留网络功能),并制作成ISO光盘安装,如何做?  1.使用定制安装linux系统,如使用LFS, Gentoo安装。 问题:安装后的系统如何制作成ISO,实现光盘安装?&n ...…

查看全部问答>

求教 如何截获格式化磁盘的消息!

小弟正在做一个功能,防止格式化磁盘,想截获windows格式化磁盘的消息,请问应该怎么截获或者是有什么好办法呢?…

查看全部问答>

帮忙推荐一款适合于初学者arm开发板,最好有详细的实验手册,我想买周立功牌子的

我想买一套周立功的arm开发板,我原先看重的是一款easyarm1138 的板子,他网站上介绍的价格是198元,然后打电话过去问了一下,他说这款板子过期了,并且配套的试验教材和文档也没有,他推荐我买easyarm 2131,480元,且配有各种资料文档。 大家, ...…

查看全部问答>

菜鸟问题:请问arm9中集成usb模块部分中的固件程序可以重新改写吗?

       我在用以arm9为核心的智能手机开发板6410,要修改其中usb模块部分的固件程序,其实就是修改描述符的值。请问有搞过 这方面的高手吗?到底可以修改吗?    请高手指点迷津,小弟不胜感激!!!!!…

查看全部问答>

协议驱动的简单问题!谁帮我解决我送150分!急!

链接是我在网络版块提的问题!在这里也问问大家!各位大虾帮我!150分,不够还可以加! http://topic.eeworld.net/u/20080124/10/3e66c379-f123-4581-9a21-06514d1350d6.html…

查看全部问答>

单片机能不能显示图片

小弟有几个问题 单片机能不能显示图片 应该选什么型号的单片机 难不难…

查看全部问答>