学习单片机之后的第一个作品——基于DS12C887芯片的电子时钟
来源:互联网 发布:丿没事放放牛 知乎 编辑:程序博客网 时间:2024/04/26 06:45
这个领域确实非常有趣,比原来单纯的编程要好多了,即动脑又动手,而且很容易入门。跟着网上down的视频教程学完了理论之后开始动手制作电子时钟,电路就是最基础的小电路:一块洞洞板,一个芯片座,2排杜邦线就OK了,至于排针用不用都行,可以直接把杜邦线焊在芯片座上。
电路搞定之后就是连线,根据DS12C887芯片说明书里面的引脚介绍来考虑把这些引脚连到单片机的相关引脚上。MOT是模式选择引脚,有摩托罗拉和英特尔两种总线模式,这里我选英特尔模式,所以MOT角不接线或者接地,IO引脚AD0-AD7就连在单片机的P0口。剩下的CS,AS,RW,DS四个控制引脚连在单片机还没有被占用的引脚上就可以了,这里我连的是P3.7,P3.6,P3.3和P3.1。IRQ中断引脚连在单片机的外部中断0引脚上,SQW方波输出引脚在这次设计中没有用到所以不链接,Vcc引脚就接Vcc,reset复位引脚也接一个Vcc,至此线路连接部分就搞定了。
一切就绪之后就是编程,这里面要注意一点就是这个芯片第一次使用的时候需要一系列初始化设置,最重要的就是晶振起振,按照说明书所说的控制寄存器A中的DV2,DV1,DV0这三个位是010的时候用来起振,其它位可以置0,所以在控制寄存器A的地址0x0A处传一个数据0x20就是开启振荡,表就开始走了;然后设置寄存器B,看了看说明,里面需要设置的就是闹钟,显示模式(二进制码还是BCD码)还有一个12小时还是24小时制,最后一个夏令时位置0就是不开启夏令时。这里我用二进制码,24小时制,所以最后在0x0B地址送了一串数据0x26。
芯片初始化结束之后就是时间初始化,它需要一个初始的时间,在这个基础之上开始走时,于是按照说明书在年月日星期时分秒的地址处分别送入相应的数据,时间初始化就结束了。然后就是上电看看它走不走,这里面遇到一个问题,最开始用BCD码时时间读数出下了错误,跳着走,比如40之后就是49之类的,我数了一下,也是60个数但是现实错误,换成二进制码模式就好了。其它的没有遇到问题。只是在设置闹钟的时候需要读一下寄存器C来把寄存器C中的IRQF位清0,还有就是1602液晶的相关操作了。
最后附上作品的照片。
- 学习单片机之后的第一个作品——基于DS12C887芯片的电子时钟
- 100脚的STM32F103VE单片机通过FSMC接口读写DS12C887时钟芯片中的寄存器
- 基于DS1302芯片---使用51单片机C语言编制的电子时钟(液晶1602显示)
- 基于51单片机的电子时钟
- 7219芯片驱动LED的电子时钟
- 51单片机控制的电子时钟系统
- 利用51单片机制作的电子时钟
- 单片机——ds1302时钟芯片
- 我的第一个OpenGL作品——《My Robot》
- 我的第一个java作品——五子棋
- 我的第一个作品
- DS1302时钟芯片的学习
- web开发的第一个小作品--html svg +css+js时钟效果
- 基于单片机的电子密码锁的实现
- 基于STM32的DS1302时钟芯片驱动
- 用单片机定时器和数码管实现的电子时钟
- 关于51单片机电子时钟精度的问题
- STC单片机学习------DS1302时钟芯片
- 程序员的十层楼
- hMailServer从4.x升级到5.0
- [Windows编程] 通过GetModuleHandleEx 得到函数调用者所在的DLL/EXE
- c#3层架构中底层的书写
- 为什么cpio要比tar好
- 学习单片机之后的第一个作品——基于DS12C887芯片的电子时钟
- Time is going
- 牛年第一喜
- 国际:.NET的未来和VB、C#的前路(上)
- FLEX 渲染器的简单使用
- Avkon2.mif Icons and it's id
- 又一个helloworld...
- AES解密中FlushFinalBlock遇到的错误 解决方案 和疑问
- 用F4键重复执行——批量添加批注