注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
paulhyde的个人空间 https://home.eeworld.com.cn/space-uid-290120.html [收藏] [复制] [分享] [RSS]
日志

不简单的电子时钟,看看就知道了!

已有 598 次阅读2012-4-24 20:27

不简单的电子时钟,看看就知道了!

试试分析一下面代码,看你懂不懂?

#include<reg51.h>
unsigned char code DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//字形码(段码)
unsigned char code WeiMa[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};   
unsigned char timer[]={2,3,10,5,9,10,5,8};

void Delay(int m)   //延时程序,延时m毫秒
{
      unsigned int i,j;
      for (i=0; i<m; i++)
     for(j=0; j<120;j++);
}

void main()
{
 unsigned char i;
 unsigned char cnt = 0;
 //init 7-seg
 P0=0XFF;
 P2=0XFF;
 while(1)
 {
  //main loop
  for(i=0; i<8; i++)
  { 
   P0= DuanMa [timer[i]];   //取显示数据,段码
   P2= WeiMa [i];      //取位码
   Delay(1);     
   P0=0xFF;  
  }
  //完成数据处理,进位。
  cnt++,(cnt >= 100)?((timer[7]++,timer[7]>9?(timer[7]=0,timer[6]++,((timer[6]>=6)?(timer[4]++,timer[6]=0,(((timer[4]>9)?(timer[3]++,timer[4]=0,((timer[3]>=6)?(timer[1]++,timer[3]=0,(timer[0] != 2)?((timer[1]>9)?(timer[0]++,timer[1]=0):(0)):((timer[1]>3)?(timer[0]=0,timer[1]=0):(0))):(0))):(0)))):(0))):(0)),(cnt = 0)):(0);
 }
}
/**************************************************************************/

 

这段代码可以完成24小时计时,并能自动进位!

呵……是不是很有意思啊……

 

 

小川电子工作室

paulhyde.taobao.com

 

本文含有来自论坛的附件或图片:[timer.zip],点击查看原帖附件。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章