这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:;