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

【小雨的成长】最基本的数码管显示时钟

已有 957 次阅读2009-9-9 15:53 |

这3天都在为这个时钟忙。。 终于写好了。。:lol 

因为水平有限,所以大部分编程技巧都是借用zjzj007在论坛发的那个纯软件时钟。

   下面就来说说我的时钟。
/***********************************
软件名称:数码管显示时钟
版本:V1.0
作者:hnrain
完成时间:2008/12/7
功能描述:完成基本的时钟功能。24小时制
有三个按键分别为set键K1,调整加键K2,调整减键K3。
按一次set键,进入分设置.分钟位闪烁,此时按k2分钟加,按k3分钟减。
第二次按set键,进入时设置.时钟位闪烁,此时按k2分钟加,按k3分钟减。
第三次按set键,退出,显示为调整后的时间。
************************************/

呵呵。。这算是最简单的时钟了。。。我将陆续改写其他版本。程序内部有较详细的说明。

   这一次我将结合我的时钟讲时钟算法,也就是编程思路。

时钟也就是让秒分达到60时,时达到24时自动加1,进位。通过按键让其进入特定的函数执行程序进行相应操作。
我的时钟程序中用到的函数:
delay(uchar i)
void timer1() interrupt 3
void display(uchar seg_count)
void timer0() interruption 1
uchar keyscan()
void setadd()
void setdec()
void main()
主要的执行过程:没有按键时。始终执行主程序判断按键情况,并通过两个中断自动的进行时间加,和显示。有按键时跳到相应的按键程序执行。

我们写的每个函数都要用到执行,要么是被其他函数调用,要么自动执行。

uchar keyscan()
void setadd()
void setdec()
delay(uchar i)
void display(uchar seg_count) 
就是被其他函数调用执行。

void main()
void timer1() interrupt 3
void timer0() interruption 1
就是被自动执行的!!

  算法就是这样。具体的编写技巧。就要看大家的编写程序了。。这方面我也是菜鸟刚学。。
这几天通过分析,编程学到很多东西1!
   呵呵。。。

我希望和大家一起共同学习,进步。。


下面是代码,可以下载压缩包.
/***********************************
软件名称:数码管显示时钟
版本:V1.0
作者:hnrain
完成时间:2008/12/7
功能描述:完成基本的时钟功能。24小时制
有三个按键分别为set键K1,调整加键K2,调整减键K3。
按一次set键,进入分设置.分钟位闪烁,此时按k2分钟加,按k3分钟减。
第二次按set键,进入时设置.时钟位闪烁,此时按k2分钟加,按k3分钟减。
第三次按set键,退出,显示为调整后的时间。
************************************/

#include "reg51.h"
#define uchar unsigned char
#define uint  unsigned int
uchar reg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//  分别是0,1,2,3,4,5,6,7,8,9,消隐
uchar dis[4]={0};
uchar miao=0,fen=30,shi=12,key_count,t=0,seg_count=0,key=0;

 

完整版:

javascript:;

评论 (0 个评论)

facelist doodle 涂鸦板

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

热门文章