基于1302数码管显示可调时钟C程序的设计说明

上传人:l**** 文档编号:134430463 上传时间:2020-06-05 格式:DOC 页数:13 大小:373KB
返回 下载 相关 举报
基于1302数码管显示可调时钟C程序的设计说明_第1页
第1页 / 共13页
基于1302数码管显示可调时钟C程序的设计说明_第2页
第2页 / 共13页
基于1302数码管显示可调时钟C程序的设计说明_第3页
第3页 / 共13页
基于1302数码管显示可调时钟C程序的设计说明_第4页
第4页 / 共13页
基于1302数码管显示可调时钟C程序的设计说明_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《基于1302数码管显示可调时钟C程序的设计说明》由会员分享,可在线阅读,更多相关《基于1302数码管显示可调时钟C程序的设计说明(13页珍藏版)》请在金锄头文库上搜索。

1、基于1302数字可调时钟的设计-文/振勇这是我最近完善的1302数字可调时钟,经过20多个小时的走时实验,走时相当准确,与电脑时间完全一致,最起码肉眼看不出误差,1302的另一个突出优点是可以接备用电源,用纽扣电池供电,在外部系统电力中断的情况下,仍能保持部时钟正常走时,经多次故意掉电实验,走时正常。本次的完善主要在软件。一个系统能够实现功能并不一定意味着成功,关键要让这个系统如何稳定的工作,提高其可靠性,是现代电子行业努力追求的目标。本项目完全由本人在目前比较简陋的“振勇电子实验室”完成,介于条件简陋,设备简单,导致硬件系统尚不完善。在软件编程方面,用先进的ASP下载取代了我一贯使用的串口下

2、载,其好处是不用冷启动(个人认为除此之外没别的好处,而且下载效率没有串口的高,成功率保持在50%就很不错了)。单片机用ATMEL公司的AT89S52取代了我以前用的STC系列单片机,STC是国产单片机,虽然我们提倡支持国产,但是很多时候国产真的太不争气了。另一个比较大的改动在软件调时方面,按键抖动是一个很让人头疼的问题,就连我一直很佩服的郭天祥老师在这一块也曾犯过错误,而且错误还著书出版了,单片机的扫描是很快的,那么怎么才能有效地去除按键抖动呢?下面我介绍的这种方法是我自己纯脑力劳动的结晶,实验证明运行效果良好。if(key=0)con+;if(con=20)con=0;qita();一般人都

3、能理解这个用法,也能想到,但关键这个程序不完整,比方说con没加到20,加到10就松开了,那么请问con还能被清0吗?显然不能。那么你下一次再按的时候就有可能按一下加两下,这种不稳定性在编程中是不能存在的,最起码一个合格的产品不能有这样的毛病。所以在这个函数里面应该加上下面这句:else if(key=1)if(con!=0)con=0;这个函数很简单,关键是它的位置,一定要与上面的的那个函数在同一位置。该数字时钟另一个有技术含量的地方就是在调节时间的时候会在对应的位置闪烁,原理也很简单,就是在显示之前加一个门卡,比方说占空比50%的闪烁,那我就定义一个son,让son+;加满是60,那加到3

4、0以后让数码管不显示,就行了。程序如下:else if(num2=0)son+;if(son30)aa=bb=10;if(son=60)son=0;aa和bb是对应的两位共阳数码管。等于10就是除了小数点以外都不亮,也可以直接等于0.这个函数也是我没有参考任何程序纯自主研发的。编程这一块锻炼的是思维方式,同一个问题,我能用不同的方法来实现,关键是哪一种更合理。编程没有标准答案,只有更好没有最好。有的人会评价别人的程序思路偏或者怎么怎么样,实际上是自己的思路出了问题,咱们的思路不一样,你又不愿意承认自己有问题,你当然会说别人有问题了。呵呵,那么谁才能检验真理呢?说过一句话:实践是检验真理的唯一标

5、准。下面是我的1302显示的完整的程序:#include#include#define uchar unsigned char#define uint unsigned intuchar miao,fen,shi,aa,bb,cc,dd,ee,ff,gg,num1,num2,num3,con,son;uchar code table=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff;sbit DATA=P21;sbit RST=P22;sbit SCLK=P20;sbit wela=P30;sbit dula=P31;sbit d1=

6、P10;sbit key1=P14;sbit key2=P13;sbit key3=P12;sbit key4=P11;void delaynus(uchar n)uchar i;for(i=0;in;i+);void write1302(uchar dat)uchar i;SCLK=0;delaynus(2);for(i=0;i=1;void writeset1302(uchar cmd,uchar dat)RST=0;SCLK=0;RST=1;delaynus(2);write1302(cmd);write1302(dat);SCLK=1;RST=0;uchar read1302(void

7、)uchar i,dat;delaynus(2);for(i=0;i=1;if(DATA=1)dat|=0x80;SCLK=1;delaynus(2);SCLK=0;delaynus(2);return dat;uchar readset1302(uchar cmd)uchar dat;RST=0;SCLK=0;RST=1;write1302(cmd);dat=read1302();SCLK=1;RST=0;return dat;void init_1302(void)writeset1302(0x8e,0x00);writeset1302(0x80,(00/10)4|(00%10);writ

8、eset1302(0x82,(04/10)4|(04%10);writeset1302(0x84,(13/10)4|(13%10);writeset1302(0x86,(16/10)4|(16%10);writeset1302(0x88,(11/10)4|(11%10);writeset1302(0x8c,(8/10)0;i-)for(j=121;j0;j-);void saomiao()if(key1=0)con+;if(con=12)con=0;/EA=0;num1+;if(num1=3)num1=0;else if(num1=1)if(key2=0)con+;if(con=12)con=

9、0;num2+;if(num2=3)num2=0;else if(num2=0)son+;if(son30)aa=bb=10;if(son=60)son=0;if(key3=0)con+;if(con=20)con=0;miao+;if(miao=60)miao=0; writeset1302(0x80,(miao/10)4|(miao%10); else if(key4=0)con+;if(con=20)con=0;miao-;if(miao=-1)miao=59;writeset1302(0x80,(miao/10)30)dd=cc=10;if(son=60)son=0;if(key3=0

10、)con+;if(con=12)con=0;fen+;if(fen=60)fen=0;writeset1302(0x82,(fen/10)4|(fen%10);else if(key4=0)con+;if(con=12)con=0;fen-;if(fen=-1)fen=59;writeset1302(0x82,(fen/10)30)ff=ee=10;if(son=60)son=0;if(key3=0)con+;if(con=12)con=0;shi+;if(shi=24)shi=0;writeset1302(0x84,(shi/10)4|(shi%10);if(key4=0)con+;if(con=12)con=0;shi-;if(shi=-1)shi=23;writeset1302(0x84,(shi/10)4|(shi%10);else if(num1=2)/EA=1;num1=0;void sfm()aa=miao/10;bb=miao%10;cc=f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号