单片机源程序如下:

//按4X4键盘的F键 进入设定状态

//E D 键是前后移动键

//C按键是调整数值按键

#include "reg52.h"

#define uchar unsigned char

sbit key_h=P1^0;

sbit key_m=P1^1;

sbit key_s=P1^2;

unsigned char Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //段码表

unsigned int h,m,s,counter;


void delay1ms(unsigned int i)

{

unsigned char j;

while(i--)

{

         for(j=0;j<125;j++)          //1ms基准延时程序

         {

          ;

         }

}  

}

void Display_h(unsigned char x)

{           

        P2=0xfb;        //P2.6引脚输出低电平,DS6点亮

    P0=Tab[x/10];   //显示十位

            delay1ms(5);

         P2=0xff;


    P2=0xf7;      //P2.7引脚输出低电平,DS7点亮

    P0=Tab[x%10];  //显示个位

    delay1ms(5);

        P2=0xff;

}

void Display_m(unsigned char x)

{           

        P2=0xef;        //P2.6引脚输出低电平,DS6点亮

    P0=Tab[x/10];   //显示十位

            delay1ms(5);

         P2=0xff;


    P2=0xdf;      //P2.7引脚输出低电平,DS7点亮

    P0=Tab[x%10];  //显示个位

    delay1ms(5);

        P2=0xff;

}

  void Display_s(unsigned char x)

{           

        P2=0xbf;        //P2.6引脚输出低电平,DS6点亮

    P0=Tab[x/10];   //显示十位

            delay1ms(5);

         P2=0xff;


    P2=0x7f;      //P2.7引脚输出低电平,DS7点亮

    P0=Tab[x%10];  //显示个位

    delay1ms(5);

        P2=0xff;

}


/*********************初始化子程序**********************/

void init()

{

  TMOD=0x01;

  TH0=(65536-50000)/256;

  TL0=(65536-50000)%256;

  EA=1;

  ET0=1;

  TR0=1;

  counter=0;

  h=12;m=0;s=0;

}


/***************************按键调时间************************/

void TZ_h()

{

h++;

if(h>24)

{

         h=0;

}

while(key_h!=1);

TR0=1;

}

void TZ_m()

{

m++;

if(m>60)

{

         m=0;

}

while(key_m!=1);

TR0=1;

}

void TZ_s()

{

s++;

if(s>60)

{

         s=0;

}

while(key_s!=1);

TR0=1;

}


/***************************主程序************************/


void main(void)

{

  init();

  while(1)

  {

           Display_h(h);

        Display_m(m);

        Display_s(s);


        if(key_h==0)

        delay1ms(20);

        if(key_h==0)

        {

                TR0=0;        

                TZ_h();

        }

        if(key_m==0)

        delay1ms(20);

        if(key_m==0)

        {

                TR0=0;        

                TZ_m();

        }

        if(key_s==0)

        delay1ms(20);

        if(key_s==0)

        {

                TR0=0;        

                TZ_s();

        }

   }

}

/*************************定时器0的中断**********************/

void Time0() interrupt 1 using 2    //再次强调中断子程序执行时间越短越好

{

  TH0=(65536-50000)/256;

  TL0=(65536-50000)%256;

  counter++;

  if(counter==20)

  {

    s++;

    counter=0;

          if(s==60)

          {

            m++;

            s=0;

              if(m==60)

              {

               h++;

               m=0;

               if(h==24)

                h=0;

               }

           }

  }

}


关键字:单片机  T0方式2  简单时钟 引用地址:单片机T0方式2实现简单时钟

上一篇:单片机写数据到LCD12864点阵型液晶显示器内部ST7920芯片
下一篇:基于单片机的精简八路抢答器

推荐阅读

发现问题这段时间在学习FreeRTOS,今天移植成功后,写了2个任务。一个是LED每隔1s闪烁任务,另一个是使用UART4每隔100ms发送字符串任务。下载成功后,发现LED闪烁间隔不对,串口打印间隔时间也不对。当时就很纳闷了:RCC是按标准库的例子来配置的,FreeRTOS的系统节拍也是配置正确的,不可能会出现这种问题。后来,仔细排查,用示波器测试串口的波形发现一...
前面讲了Uart三种不同的方式接收数据,请参照《STM32 Uart及其配置》《STM32 Uart中断接收》《STM32 Uart DMA方式接收数据》,但是,它们都需要指定数据的长度,但实际应用中,会出现不定长度的数据,比如,某些模块的@命令,那么,如何接收不定长度的数据呢?今天,我们就来扒一扒STM32 Uart 变长数据的接收。 问题来了,变长数据...
示波器是观察波形的窗口,它让设计人员或维修人员详细看见电子波形,达到眼见为实的效果。因为人眼是最灵敏的视觉器官,可以明察秋毫之末,极为迅速地反映物体至大脑,作出比较和判断。因此,示波器亦誉为波形多用表。 早期示波器只显示电压随时间的变化,作定性的观察。随后,改进的示波器具备定量的功能,测量幅度和时间,以及它们的变化情...
近日,韩国KNCAP公布了2021款 特斯拉Model 3 ( 参数 | 询价 ) 安全测试结果:综合分83.3分,但在自动刹车环节失利。在韩国KNCAP所设计的AEB自动紧急制动测试环节中,特斯拉Model 3分别以20km/h、25km/h和40km/h三个速度与行驶中的自行车、行人发生多次碰撞,导致该车的在行人安全与事故预防方面丢分较多,仅为三级(最高为一级)。在韩国,汽车安全测试...

史海拾趣

问答坊 | AI 解惑

谁能制作个7段LED的元件封装阿,即用

谁能制作个7段LED的元件封装阿,即用? 最好是四位一体了的那种~~~~…

查看全部问答∨

请教关于msp430 的TA问题

请问,430F149的P2.4口 TA 有定时和比较功能,好像是没有捕获功能,能作为外部脉冲的计数器吗? 找了好久,没找到方法?…

查看全部问答∨

谁有GSM模块相关的术语表呀???(结贴,来人接分)

很多术语都不懂,比如说PDU 、MO、MT、非请求结果码。。。等等 如果有请发一份给我吧   674868212@qq.com…

查看全部问答∨

====招聘硬件工程师===

硬件工程师 职位要求: 1、电子工程专业背景。 2、能熟练使用PROTEL99、CADENCE等工具设计线路图、线路板,有能力通过合理布线消除各电路之间的各种干扰(如地线噪音干扰、模拟与数字电路相互干扰、高频电磁干扰等) 3、要求有足够模拟及数字电 ...…

查看全部问答∨

100分求救 evc 下如何打开GPS设备的电源?

机器自带有GPS硬件,不过系统内有个GPS电源管理,默认情况下GPS的电源是关闭的 我想在程序中打开GPS的电源,不知道如何实现? 注:机器是Navman的PIN 570…

查看全部问答∨

Wince standard sdk 模拟器上好像什么都没有?

没有写字板,没有txt编辑器,如果我想测试文字相关的程序,各位可否给我提供讲一下思路,谢谢!…

查看全部问答∨

菜鸟求助:为什么我的IO口在初始化后都为0电平?

初始化: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能端口B时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_M ...…

查看全部问答∨

一个DSP开发者的感受

我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是 ...…

查看全部问答∨

libnl-3.2.21 compile error

evn:      ubuntu 10.04      arm-none-linux-gnueabi-gcc       gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-70) part of the log:In file included from r ...…

查看全部问答∨

好看的漫画-漫画半导体

看漫画了~~~ https://download.eeworld.com.cn/detail/%E5%97%A1%E5%97%A1/546675 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved