历史上的今天
返回首页

历史上的今天

今天是:2025年08月06日(星期三)

正在发生

2021年08月06日 | 用51单片机实现的简易秒表

2021-08-06 来源:eefocus

设计思路:

(1)在main函数中不停的控制数码管显示时、分、秒


(2)用定时器0控制时间的递增


(3)用外部中断0(KEY3)实现秒表的暂停/开始


(4)用外部中断1(KEY4)实现秒表的停止


开发板:普中科技开发板


代码如下:


  1 #include "reg52.h"

  2 #define led P0

  3 typedef unsigned char u8;

  4 typedef unsigned int u16;

  5 

  6 sbit LSA = P2^2;

  7 sbit LSB = P2^3;

  8 sbit LSC = P2^4;

  9 sbit k3 = P3^2;

 10 sbit k4 = P3^3;

 11 static u8 hour = 0;

 12 static u8 min = 0;

 13 static u8 sec = 0;

 14 

 15 u8 code smgz[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

 16                     0x7f,0x6f,0x40};

 17 

 18 u8 code location[8][3] = {1, 1, 1,

 19                           0, 1, 1,

 20                           1, 0, 1,

 21                           0, 0, 1,

 22                           1, 1, 0,

 23                           0, 1, 0,

 24                           1, 0, 0,

 25                           0, 0, 0};

 26 //位置表 从左到右

 27 

 28 void delay(u16 j){

 29     while(j--);

 30 }

 31 

 32 char nol(char loc){

 33     switch(loc){

 34         case 7:

 35                return sec % 10 ;

 36         case 6:

 37                return sec / 10; 

 38         case 5:

 39                return 10;

 40         case 4:

 41                return min % 10;

 42         case 3:

 43                return min / 10; 

 44         case 2:

 45                return 10;

 46         case 1:

 47                return hour % 10;

 48         case 0:

 49                return hour / 10;

 50     }

 51 }

 52                 

 53 void Timer0Init()

 54 {

 55     TMOD |= 0X01;

 56     TH0 = 0XFC;

 57     TL0 = 0X18;

 58     ET0 = 1;

 59     IT0=1;//跳变沿出发方式(下降沿)

 60     EX0=1;//打开INT0的中断允许。

 61     IT1=1;

 62     EX1=1;

 63     EA = 1;

 64     TR0 = 1;     

 65 }

 66 void main(){

 67 

 68     Timer0Init();

 69     while(1)

 70     {    

 71         u8 i;

 72         for(i = 0; i <= 7; i++){

 73 

 74             LSA = location[i][0];

 75             LSB = location[i][1];

 76             LSC = location[i][2];

 77             led = smgz[nol(i)];

 78             delay(50);

 79             led = 0;//消隐

 80         }

 81     }            

 82 }

 83 void Timer0() interrupt 1

 84 {

 85         static int Timer0_times = 0;

 86         TH0 = 0XFC;

 87         TL0 = 0X18;

 88         Timer0_times++;

 89         if(Timer0_times == 987)

 90         {

 91             if(sec < 59)

 92                 sec++;

 93             else if(min < 59)

 94             {

 95                 min++;

 96                 sec = 0;

 97             }

 98             else

 99             {

100                 hour++;

101                 min = sec = 0;

102             } 

103             Timer0_times = 0;

104         }

105 }

106 

107 void Int0()    interrupt 0        //外部中断0的中断函数

108 {

109     delay(1000);     //延时消抖

110     if(k3==0)

111     {

112         TR0 = ~TR0;

113     }

114 }

115 

116 void Int1()    interrupt 2        //外部中断1的中断函数

117 {

118     delay(1000);     //延时消抖

119     if(k4==0)

120     {

121         TR0 = 0;

122         hour = min = sec = 0;

123 

124     }

125 }


推荐阅读

史海拾趣

Apex [Apex Microtechnology]公司的发展小趣事

Apex Microtechnology一直致力于开发在性能、质量和可靠性方面引领行业的产品。通过不断创新和研发,公司成功推出了多款具有竞争力的功率模拟产品,为全球客户提供高效的解决方案。同时,Apex Microtechnology也积极拓展全球市场,与众多知名企业建立了合作关系,进一步提升了其在电子行业的影响力。

B&F Fastener Supply公司的发展小趣事

随着电子产品的日益小型化和复杂化,对紧固件的要求也越来越高。B&F Fastener Supply公司紧跟行业趋势,投入大量资源进行技术创新。公司成功研发出一系列适用于微型电子设备的紧固件产品,不仅满足了市场的迫切需求,还凭借出色的性能和稳定的品质赢得了客户的广泛认可。

芯邦(Chipsbank)公司的发展小趣事

随着公司业务的不断发展,芯邦开始积极布局UWB(超宽带通信)产品线。UWB技术以其高速率、高精度和低功耗的特点,在智能家居、物联网等领域展现出巨大的应用潜力。芯邦通过研发UWB等信息传输技术及产品,致力于从移动存储及智能家电市场出发,以手机及移动智能设备、车规及汽车周边产品应用、智能家居及物联网领域为目标市场,打造多系列产品线格局,提升公司的市场竞争力。

Genesys Logic公司的发展小趣事

近年来,“General Microcircuits”积极响应全球绿色可持续发展的号召,将环保理念融入产品研发和生产的全过程。公司投入大量资源研发低能耗、高能效的绿色半导体产品,并致力于推动循环经济在半导体产业的应用。同时,公司还加强了与环保组织的合作,共同推动半导体行业的绿色转型和可持续发展。这些努力不仅为公司赢得了良好的社会声誉,也为公司的长远发展奠定了坚实的基础。

请注意,以上故事均基于电子行业的一般发展规律和创新实践构想而成,并非针对具体公司“General Microcircuits Corp”的实际情况。在实际情况中,不同公司的发展路径和故事可能有所不同。

Bipolarics Inc公司的发展小趣事

作为一家有社会责任感的企业,Bipolarics Inc在发展过程中始终关注环境保护和社会公益。公司积极采用环保材料和节能减排技术,努力降低生产过程中的能耗和排放。同时,Bipolarics Inc还积极参与社会公益活动,支持教育事业和扶贫项目等。通过这些举措,公司不仅树立了良好的企业形象,也为社会的可持续发展做出了积极贡献。

以上五个故事虽然是虚构的,但它们基于电子行业的一般发展规律和企业发展的常见路径。在现实中,一个电子行业的发展故事可能会涉及技术突破、市场扩张、战略合作、国际化战略、人才培养和社会责任等多个方面。这些元素共同构成了企业发展的丰富内涵和多样路径。

Freeport Resources Enterprises Corp公司的发展小趣事

随着全球对环保和可持续发展的重视,Freeport Resources将这一理念融入到公司的发展战略中。公司投入大量资金进行环保设施建设和生产技术改造,致力于减少开采和加工过程中的环境污染和资源浪费。同时,Freeport Resources还积极参与社会公益活动,推动矿业与社区的和谐共生。这些举措不仅提升了公司的社会形象,也为其在电子材料市场的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

LPCXpresso——LPC1114 三轴加速度

不好意思了,刚好出去工作去了,没及时发帖,今早回来赶紧补,要不对不住SOSO姐了,上传几张图,器件是飞思卡尔的MMA7260,具有量程选择和睡眠使能引脚, X Y Z 三个方向的电压          &nb ...…

查看全部问答>

直方图在抖动分析中的应用

直方图在抖动分析中的应用…

查看全部问答>

硬件高手进来看看,发个项目

  公司想在开发板的基础上对嵌入式主板做些改动,主要是裁剪掉一些不必要的东西,然后换个LCD显示屏,有没有谁认识成都做嵌入式主板的团队或个人给推荐一下。顺便问问。这种项目一般收费是多少?…

查看全部问答>

新手求教,EVC操作数据库问题

我想用EVC操作ACCESS数据库,使它能接收检测到的电流电压等值,并将值保存到数据库里面,要怎样做呢?我是新手,拜托各位指点,要是能说得详细点就更好了呵呵…

查看全部问答>

欢迎加入"IT技术交流平台"群

欢迎加入\"IT技术交流平台\"群   QQ:5137691…

查看全部问答>

频率增加电流反而减少,不可理解

一台三菱变频带动一台1.5千瓦的电机,把变频的频率提高到67赫兹,电流反而减少为1A,在工频时电机电流为2A,真是不可理解,请各位指点迷津。…

查看全部问答>

学习zigbee对于找工作怎么样啊?无比困惑中

我是一名交通控制研究生,我们实验室主要做交通控制方面的东西,最近老师让我做zigbee通信,而别的同学都在学习vxworks等对找工作很有帮助的东西,我们学校的学术才两年半,我不想浪费时间啊,想学成熟的技术,实用的,对找工作十分有帮助的。我不 ...…

查看全部问答>

msp430f149 usart 谁能告诉我这个程序是什么意思啊

//***************************************************************************** //  MSP-FET430P140 Demo - USART0, Ultra-Low Pwr UART 19200 Echo ISR, 32kHz ACLK // //  Description: Echo a received character, ...…

查看全部问答>

高精度延时程序疑问

网上看到这个,但是是IAR的,大神鉴定下CCS中能照样行吗,CCS的函数库在哪里?头文件里貌似没有吧! IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现我们想要的高精度软件延时,方法如下: (1):将以下这段代码复制到你的.C源文 ...…

查看全部问答>

430也能玩嵌入式:Contiki内核在IAR+MSP430下移植(四)

但__volatile__不是IAR的关键字,还是有问题,索性改成这样(没加volatile会不会有副作用?): #ifdef __IAR_SYSTEMS_ICC__   #define asmv(arg) __asm(arg) #elif   #define asmv(arg) __asm__ __volatile__(arg) #endif ...…

查看全部问答>