对自己在使用12864显示1302时钟过程的总结

本文记录了在使用89c51单片机和1302 LCD模块时遇到的错误与解决方法,包括将二进制和十进制混淆、AM/PM标志位设置错误等问题。通过初始化函数和显示函数的调整,成功实现了12小时制和AM/PM的正确显示。同时,分享了在硬件故障排查上的经验,强调了对1302校准功能的理解和使用。
摘要由CSDN通过智能技术生成

单片机:89c51Rc 晶振:11.0592MHZ

错误记录:

1.误把 &0x1f(11111)写成 &11111 ,0x1f是二进制,11111是十进制

2.再进行显示的时候,把小时寄存器中D5(AM/PM)标志记反了,实际是(0-AM,1-PM)

实际记录:

1.对于1302在显示屏上显示,关于1302的数据显示"?",而其它部分正常显示,不用说,程序没问题,1302坏了(我用到第三个1302才正常显示,不是“?”)

2.1302所具有的校准功能在显示AM/PM方面,必须小时位变化(类似22->23)才会发生,所以在初始化的时候必须对小时寄存器中D5(AM/PM)标志位进行设置(在显示AM/PM的前提下)

方式:

   1.是对于12/24小时制的选择以及AM/PM的设定,我选择的是在数组中放置标志位

前两个是各个寄存器的读写地址,第三个是各寄存器的初始值设置,而第三个数组最后两个元素就是12/24,AM/PM标志位(1-12,0-24)(1-PM,0-AM)

  2.我对12/24小时制的选择以及AM/PM的设定是在初始化函数中对已经转化为BCD码的tim0[4](也就是对小时寄存器初始化写入)进行操作的

   3.对于AM/PM的显示,我是在display_1302time显示函数中写的

主函数部分

首先是在read_1302time()函数中把从小时寄存器读出的数据(BCD码)储存在tim_bcd[14]中,然后只留下后五位数据用于转化为十进制(小时时间数据只用到了后五位)

之后在display_1302time显示函数中对显示AM/PM进行判断

学1302的时候,我是在B站上从零学电子的个人空间_哔哩哔哩_Bilibili这个UP主学的,我觉得讲的很细。但是只有最基础的24小时星期显示,AM/Pm,12小时制需要自己加,而且硬件也很恶心,刚学的时候根本不知道是硬件还是软件的问题,就尼玛显示"?",鬼知道为啥显示“?”,折腾半天,三块1302坏了两块,改显示格式上下午的时间都没在”?“上面卡的时间长

这是代码链接

https://download.csdn.net/download/weixin_60559281/81696991

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值