矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 26652|回复: 68

我的51初学故事+初学作品:有功能菜单的DS1302+1602表

  [复制链接]
     
发表于 2011-8-18 11:18:32 | 显示全部楼层 |阅读模式
本帖最后由 Edward 于 2011-8-18 11:23 编辑

放假前,觉得现在单片机应用广泛,深入到生活的各个角落,应该学习一下,但是无奈专业与电子不搭边,只是去年学了C语言。正好赶上这次暑假甚长,觉得浪费可惜,在sudo1234同学的鼓励下买了套51开发板,于是从7月26号开发板到货开始,我就走上了单片机自学之路,不知道我在这条路上能走多远,因为马上就要开学了……

我是看郭天祥的《十天学会C51单片机》视频教程学习的,开发板是78元淘宝的,使用STC的MCU,有常规功能,基本兼容视频里用的,感觉设计和价格都很合理。现在视频主要的内容基本已经学完了,但是I2C总线目前还没学会,程序总是不通,其他的简单应用问题已经基本不大了。因为我开发板上的ADC是PCF8591,是I2C通信的,所以目前ADDA还没有怎么学习,还有DS18B20也没学。这一段时间,我都是抱着极大的热情来学习单片机的,从最简单的IO口的控制到动态数码管、矩阵键盘到中断、定时器到串口通信再到驱动液晶、DS1302……通过这20多天的学习我觉得真是:C51单片机,其乐无穷~;MCU,无限可能……通过这20天的学习,我体验到了很久没体验到的学习的快乐,我也更加意识到大学时光的重要。我觉得,单片机的学习真的是需要大量的实践,只是看看视频根本什么都搞不定。需要自己写写程序,调调程序,看看Datasheet,还需要一些好“老师”可以查找各种资料、询问各种问题、解开各种疑惑、了解各种东西。

现在我学到的都是51的一些粗浅的东西,编程序也还没形成风格,C编程规范也还没有阅读,对单片机的缺乏更加深入的了解和认识。由于没学微机原理等课程,对单片机的认识还停留在表面阶段,打算期中后如果真的有时间了的话,就借本书看看。

好了现在说说我的作品吧,这是我写的第一个这么大的程序,C程序有1500行,编译后的HEX文件有6.8kB,写了5天。
我刚刚开始学习51及其编程,不太会搞程序模块化、程序优化,程序颇为臃肿。
贴上来是和大家分享我的学习、劳动果实和我的快乐,也是给和我一样的初学者提供一点参考。
程序里面可能还有Bug,我已经实在改不动了……
欢迎各位提出批评建议、学习指导。

程序所需硬件:STC89C52、1602液晶、有源蜂鸣器、4个轻触开关等

程序实现功能:
时间、日期的中文或英文显示;
可设置12/24小时制;
英文设置菜单;
2组闹钟,闹钟响1分钟;
时间、日期设置;
菜单超时自动退出;
有一定防设置错误时间、日期功能(比如2月就无法设置30、31日);
按键S0是Set/OK,S1是下翻,S2是选择、调整,S3是退出;

看似功能不多,但是写起来才知道麻烦得很,有的时候牵一发而动全身。
DS1302没看郭天祥的视频,觉得讲得不太好,还慢,是自己看资料学的。
程序里面除了DS1302基本读写函数是边学习边参考ourDEV等网站找到资料、1602基本读写函数是直接用我以前调好的程序之外其他全部是这5天原创的。
C编程规范还没看,所以程序写的还不够规范,大家将就着看哈。
程序在Keil μVision2及Keil μVision4环境下编译通过;

整体的:(在最下面有C源文件下载)

Snap1.png

估计是最长的函数:

Snap2.png

看一下效果:

IMG_6093.jpg
IMG_6097.jpg
IMG_6098.jpg
IMG_6099.jpg
IMG_6100.jpg
IMG_6101.jpg
IMG_6102.jpg
IMG_6103.jpg
IMG_6104.jpg

看一下实际效果:



附上C文件:欢迎大侠们指点

DS1302 1602_Clock.rar (6.67 KB, 下载次数: 3691)

最后感谢sudo1234同学、熙溪同学等的帮助。

评分

2

查看全部评分

发表于 2011-8-18 11:33:12 | 显示全部楼层
沙发啊~~~~~
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2011-8-18 12:50:25 | 显示全部楼层
回复 3# luosifu

是啊,而且只有8个,坑爹啊,不够用……还得不断刷新……
回复 支持 反对

使用道具 举报

     
发表于 2011-8-18 13:12:15 | 显示全部楼层

~~

本帖最后由 xiaomu 于 2011-8-18 13:18 编辑

“需要自己写写程序,调调程序,看看Datasheet,还需要一些好“老师”可以查找各种资料、询问各种问题、解开各种疑惑、了解各种东西。”
单片机的精彩大门已经为你打开,你再也回不去了
这个是杜洋文章里说的
~~~~~~~~~~~~~~~~~~~~~~~~~~~·
买开发板可以节省时间 省去 开始搭硬件的时间,就好像上华山,可以座缆车上去,也可以爬上去,包括四蹄并用,
各有各的乐趣 ,大家自己选择,我是 爬上去的,我指的 是 单片机和爬华山2方面 嘎嘎
~~~~~~~~~~
Keil μVision4在杜洋网站上有 大家可以去下,另外问下LZ这个Keil μVision4用的怎么样啊(相比2来说)?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2011-8-18 13:16:47 | 显示全部楼层
另外问下LZ这个Keil μVision4用的怎么样啊(相比2来说)
xiaomu 发表于 2011-8-18 13:12


比2好用,比如啊,不用自己敲TAB、函数可以收起来什么的,但就是没有汉化。更深入的我就说不出来了……
回复 支持 反对

使用道具 举报

     
发表于 2011-8-18 13:26:17 | 显示全部楼层
回复  luosifu

是啊,而且只有8个,坑爹啊,不够用……还得不断刷新……
Edward 发表于 2011-8-18 12:50



“还得不断刷新”太揪心啦,这个为嘛啊?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2011-8-18 13:38:20 | 显示全部楼层
“还得不断刷新”太揪心啦,这个为嘛啊?
xiaomu 发表于 2011-8-18 13:26


这个因为……

因为1602的用户自定义字库(CGRAM)只有8x8字节,要是5x8点阵就是8个字符,5x11就是4个(4x16字节),
要是汉语24时制还好办,8个CGRAM分别是年月日二三四五六,一用“-”
要是12时制就坑爹了,前6个是年月日上下午,后2个就只能根据具体星期来回刷新为三四或五六,二就只能用1602自带字库里有一个类似“二”的字符代替了。
回复 支持 反对

使用道具 举报

     
发表于 2011-8-18 15:17:44 | 显示全部楼层
天啊……真的有这么复杂?

我用Atmega128+DS1302+液晶设计的电子表,也不过480行程序,当然我认为还是有些复杂。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2011-8-18 20:22:25 | 显示全部楼层
我也感觉代码有点多了
回复 支持 反对

使用道具 举报

     
发表于 2011-8-18 22:35:21 | 显示全部楼层
良好的开端。支持。
回复 支持 反对

使用道具 举报

发表于 2011-8-18 23:12:08 | 显示全部楼层
这个可比那些随便烤别人作品当做课设或者毕设的有意义多了
回复 支持 反对

使用道具 举报

发表于 2011-8-19 02:24:04 | 显示全部楼层
好了现在说说我的作品吧


good job.

anything has to have the first step.
回复 支持 反对

使用道具 举报

     
发表于 2011-8-21 19:48:47 | 显示全部楼层
回复 13# millwood
已经收录进我的签名档了
回复 支持 反对

使用道具 举报

发表于 2011-8-22 15:03:32 | 显示全部楼层
确实功能很全的啊,单片机能装下吗
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2011-8-22 18:58:51 | 显示全部楼层
确实功能很全的啊,单片机能装下吗
2051 发表于 2011-8-22 15:03


HEX文件6.8kB,52能装下,对RAM要求不高。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-5-5 13:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表