T2中断动态显示时分秒程序

发布者:龙腾少年最新更新时间:2016-10-14 来源: eefocus关键字:T2中断  动态显示  时分秒程序 手机看文章 扫描二维码
随时随地手机看文章
//T2每50ms中断,产生时间基准,P1口输出字段码,P2口输出字位码,动态显示时、分、秒。

#include
#define uchar unsigned char
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(unsigned int x);
uchar k=0,ks=0,km=0,kh=0; //全局变量
void showsecond();
void showminute();
void showhour();

main()
{
  T2CON=0x00;  //T2自动重载方式
  RCAP2L=(65536-50000)%256;  
  RCAP2H=(65536-50000)/256;   //以上2句,f=12MHZ,定时50ms,
  EA=1;
  ET2=1;       //开T2中断
  TR2=1;

  while(1)
    {
     showsecond();

     showminute();

     showhour();
    }
}

void T2time() interrupt 5   //T2中断程序
{
  TF2=0;
  k++;
  if(k==20)
    {
      k=0;
      ks++;
     }
  if(ks==60)
    {
      ks=0;
      km++;
    }
  if(km==60)
    {
      km=0;
      kh++;  
    }
  if(kh==24)
    {
      kh=0;
    }   
}

void showsecond()
{
  delay(100);
  P2=0xfe;
  P1=tab[ks%10];
  delay(100);
  P2=0xfd;
  P1=tab[ks/10];
}

void showminute()
{
  delay(100);
  P2=0xfb;   //P2字码输出
  P1=tab[km%10];    //P1段码输出
  delay(100);
  P2=0xf7;
  P1=tab[km/10]; 
}

void showhour()
{
  delay(100);
  P2=0xef;
  P1=tab[kh%10];
  delay(100);
  P2=0xdf;
  P1=tab[kh/10];
}

void delay(unsigned int x)
{
  unsigned int i;
  for(i=0;i      {}
}

关键字:T2中断  动态显示  时分秒程序 引用地址:T2中断动态显示时分秒程序

上一篇:C51 INT0中断方式键盘扫描程序
下一篇:C51可收发串口程序

推荐阅读最新更新时间:2024-03-16 15:15

基于PIC12C508单片机的LED显示电路
   0 引 言   LED显示以其使用方便,价格低廉等优点而得到广泛应用。它的显示接口按驱动方式可分为静态显示和动态显示两种。静态显示虽然亮度高,无闪动,但具有功耗大,占I/O口多,成本高等缺点。在I/O口紧张的情况下大多采用动态显示方式。目前,市场上有许多专用的动态显示接口芯片可供选择。但是,这些芯片价格普遍较高,而不适合在廉价系统中应用。有些专用芯片(如MC14489)采用硬件译码方式,显示的信息量有限,难以满足各种要求,影响了它的应用。在此介绍一种价格低廉,效果良好的LED动态显示电路,通过软件译码,串行显示方式,节省大量I/O线,不仅能显示数字,而且可以显示大部分英文字母。    1 硬件说明及工作原理   主要硬
[单片机]
矩阵键盘+数码管动态显示
我把矩阵键盘和数码管动态显示综合起来写了个程序。这个代码的意思是在一开始8个数码管什么也不显示,因为p0的初始值是0x00,当我们按下矩阵按键里的按键时,8个数码管动态显示该按键的键值,直到按下了下一个按键,8个数码管显示的内容才可能改变。 #include reg52.h //目的是每按下一个按键,8个数码管就动态显示对应的键值 sbit lsa=P2^2; sbit lsb=P2^3; sbit lsc=P2^4; #define duanxuan P0 #define keyboard P1 int zxm ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
[单片机]
《手把手教你学51单片机-C语言》之六 中断与数码管动态显示
中断是单片机系统重点中的重点,因为有了中断,单片机就具备了快速协调多模块工作的能力,可以完成复杂的任务。本章将首先带领大家学习一些必要的C语言基础知识,然后讲解数码管动态显示的原理,并最终借助于中断系统来完成实用的数码管显示程序。大家对本章节内容要多多研究,要完全掌握并能熟练运用。 1.1 C语言的数组 1.1.1 数组的基本概念 第四章已经学过变量的基本类型,比如char、int等等。这种类型描述的都是单个具有特定意义的数据,当我们要处理拥有同类意义但是却包含很多个数据的时候,就可以用到数组了,比如我们上节课那个数码管的真值表,就是用一个数组来表达的。
[单片机]
《手把手教你学51单片机-C语言》之六 <font color='red'>中断</font>与数码管<font color='red'>动态显示</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved