51单片机新手入门实战:可调时钟

2020-01-16 18:29发布

本帖最后由 304301959 于 2012-8-11 12:28 编辑

一、原因
       其实我接触51也接近快一年的时间了,当时还是在学校里面自学的。自认为自己的51已经算是比较熟练的地步了,后来因为老师的一句“前途无量”更是沾沾自喜。前段时间看了“从单片机初学者迈向单片机工程师”一帖,瞬间感觉自己真的是还没有入门。总结自己之前学的东西,不懂51内部寄存器之间的相互配合不说,编程的思路也是一直延续郭天祥老师的Delay()、While(),说白了就是在原地踏步啊。“单片机工程师”一帖我看了不下5次,但发现自己似乎长进并不大,其实是忘了实践的重要性了。所以这几天就挤出了工作之于,来完成一个可调时钟。
二、感悟
      按照”单片机工程师”上的编程思路和习惯,虽然感觉有点繁琐(以前很短的程序,按照标准化来写就长了很多,连变量的定义名字都长了很多)。但是这样的习惯却让自己对整个系统的框架有了比较清晰的认识,比以前要得心应手一些。这个程序还依稀能看到我以前编程的影子(为了实现一个功能而东拼西凑),仔细想想却发现是自己犯了一个大错——没有画流程图。没有流程图清晰的结构,写起程序来确实是要吃力很多了,反反复复改了很多次。今日看STC烧写软件上的计数居然为253次,这样反而降低了自己做事的效率。
三、问题
1、可调时钟能够实现功能
     A、显示时、分、秒。在时间显示状态下,按下一次“”调整“”键,时、分、秒之间的LED灯闪烁,表示进入时间调整状态。按下第二次,“时”间隔300MS闪烁,加、减键可以对其进行操作,能够识别短按与长按。进入连续调整状态时,不闪烁,时间增加。按下第三次,“分”间隔300MS闪烁,操作与“时”类似。按下第四次,退出调整模式。
     B、在时间显示状态下,同时按下“加”、“减”键,进入闹钟调整模式,显示00-00-00,按下“调整”键第一次,“时”闪烁,“加”、“减”键作相应调整,按下“调整”键第二次,”分“闪烁,“加”、“减”键作相应调整。按下“调整”键第三次,退出模式
     C、当设置闹钟时间与现实时间一致时,报警一分钟。
2、程序存在的问题
    A、程序的结构及技巧性不强,编译出来有6K的HEX。
    B、过5、6个小时时间会慢两分钟左右,之前以为是我写的子程序太多了,于是屏蔽其他程序只留下了显示和时间走动的函数。但是过几个小时,依然会慢一两分钟(整个程序没有用到任何Delay()延时,也没有堵塞CPU的地方,而且通过keil调试发现扫描完所有程序的时间只有0.1ms而已),搞不懂问题出在哪里了。
    C、实现可调时钟的方法有许多,我想了解与当今市场相符的制作方式
真心希望有前辈能够为我上面出现的问题指点一二,若是有大神对我等小菜不屑一顾想喷我,没关系,但请指出喷我的原因
废话说多了,直接上图!(程序由KEIL编译)
由于工作原因,只有周末才会上网。若不能回答大家问题,请见谅,谢谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
51条回答
chengzepeng
1楼-- · 2020-01-20 20:34
本帖最后由 chengzepeng 于 2012-8-12 12:39 编辑

http://www.amobbs.com/thread-5491557-1-1.html

特意写了个新手测试程序,
有兴趣可以看看!

不准的原因有两种,
一种是软件,在填充定时器占用时间,
另外一个是硬件,晶体的负载电容不合适或者晶体不合格(精度不高),
可以使用高精度的频率计测扫描位的IO来逆算晶体频率!
304301959
2楼-- · 2020-01-20 23:21
chengzepeng 发表于 2012-8-12 12:36
http://www.amobbs.com/thread-5491557-1-1.html

特意写了个新手测试程序,

是可以考虑这方面问题了
chengzepeng
3楼-- · 2020-01-21 01:52
 精彩回答 2  元偷偷看……
sunny503
4楼-- · 2020-01-21 05:29
本帖最后由 sunny503 于 2012-8-17 14:26 编辑

曾答应楼主一定要用万能板搭建个楼主提供的51单片模拟时钟板玩玩的(平时都是热转印的多,苦于制作资料没有热转印图,自己就绘画个OO版草图,也当去怀念一下高中时期自己找不到FECL腐蚀液体的苦闷时光O(∩_∩)O哈哈~,说多了)。由于这3天较忙,勉强也OO出来了O(∩_∩)O哈哈~,OO板尺寸68X92MM:
我仿做的68X92MM万能板实物下图:

我仿做的万能板实物工作走时图,原理图EA要接 5V否则不工作.jpg (2.29 MB, 下载次数: 0)

下载附件

我仿做的万能板实物工作走时图,原理图EA要接+5V否则不工作

2012-8-16 19:03 上传


至此多谢阿莫论坛结识的楼主的热心帮助!
        祝大家也玩的开心,阿莫论坛人气旺旺^_^
             Sunny503
           2012.08.16
304301959
5楼-- · 2020-01-21 09:58
sunny503 发表于 2012-8-16 18:49
曾答应楼主一定要用万能板搭建个楼主提供的51单片模拟时钟板玩玩的(平时都是热转印的多,苦于制作资料没有 ...

看到出来做得很认真,值得鼓励
304301959
6楼-- · 2020-01-21 13:04
找到问题的解决原因了,是定时器和晶振没有设置好。用11.0592M,定时初值为5MS。TH0=0XEE,TL0=0,充分发挥TL0的误差补偿!运行了一天,一秒不差!

一周热门 更多>