新闻
首页 >  我们新闻 >  51单片机开发万年历系统实现(闹钟秒表功能)

51单片机开发万年历系统实现(闹钟秒表功能)

  • 发布时间:2025-06-01
  • 来源:网络
  •   
  • 打印

  

51单片机开发万年历系统实现(闹钟秒表功能)

  再来说说其他的吧。在使用keil软件时,总是报这样的错误*** ERROR L107★■■: ADDRESS SPACE OVERFLOW。也是多方查找才找到问题所在★◆★。就是我们所定义变量是定义在51的RAM里的,而且供变量存储的只有256或者128个字节(看型号吧)◆■◆,这里看网上说在变量前面加idata■■◆,然而并不管用◆■。还是尽量节省RAM吧★◆★■★。只读的数组定义前面加上code,全局变量尽量少点。不行就只能换单片机了毕竟51是一个资源很少 的单片机◆■◆,不适合一些大工程。最后加上张效果图

  这个就是真的没什么好说的了。就是记得调电位器调背光■◆★。对了★★,还有一个 好坑的地方,不知道各位有没有解决方法,就是那个光标(一闪一闪的那个)每次移动都是两个字两个字的移。上程序。

  主要的程序模块到这里基本上就算准备好了。完整的程序我压缩一下上传到资源吧,(没办法想赚点积分,理解理解),其实到这步◆◆★,大家应该把完整的程序写出来也不是问题了。

  由上图可见★■■◆★★,要正确地从引脚上读入外部信息◆◆■★◆★,必须先使场效应管关断,以便由外部输入的信息确定引脚的状态■■◆■。为此◆★,在作引脚读入前,必须先对该端口写入l。具有这种操作特点的输入/输出端口,称为准双向I/O口。8051单片机的P1、P2、P3都是准双向口★◆■。P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。弄懂IO口的内部结构之后。我就直接上程序了,慢慢研究吧■◆■◆。注释的和没有用到的部分大家就不要纠结了。3

  这一部分在我最开始看来是没有什么大文章的,也没有什么可以值得写的,有点基础的人几分钟就可以把程序写出了★◆■。可是当自己正真写的时候,才知道自己不懂得太多,要学的也太多■★◆■。单片机的IO口最普通的两种功能■◆◆,输入和输出嘛◆◆★◆。记得自己学stm32时,IO口的输入输出是要在最开始初始化的是定义的。也就是IO口在同一时刻只能有一种功能吧,总不能又输入有输出吧。可是51呢?让我懵逼,在任何地方■★■■★,包括启动文件里都没有定义IO口是输入还是输出。这让我很郁闷★■◆★★,总不会我让一个IO口输出一个高电平后,还可以从IO口读输入吧★★,那样不一直应该读到的就是我输出的高电平吗◆★★◆◆。直到我好好研究了一波51IO口的内部电路,才明白其中的玄机。

  这里是最简单的P1口的内部结构图。有点数电基础的人大概可以看明白★◆◆■◆。具体我就不讲了。

  这部分怎么说,说简单也挺简单的★■■◆★◆。但其中有个梗我现在还没过去■◆★■■◆。就是最开始我打算自己焊个下载电路在上面的■★,结果总是下不进去程序。这部分算是题外话了,但还是想简单说一说★■。最开始打算用CH340芯片直接usb转uart的,结果芯片买回来发现好像没有直插的■◆■。自己腐板子什么的又嫌太麻烦。最后打算先用usb转九针串口转成rs232电平,再用max232转成uart电平的◆■■。照着电路图一顿焊■◆★,结果果然不出我所料★■■■◆★,不可能一下就成功下进去程序。就找问题啊,找啊找,找啊找★◆◆★。好像是找到了一个,就是51下程序不是有一个断电在上电的过程吗?我是这样做的★■■■,但其中好像有问题,断的这个电应该只是单片机的电,而不包括max232的电■★■。于是又改电路,改完还是不行。算了,这个我以后搞明白了再来说说吧。

  对了◆■★■◆,还有几个小的点,提一提吧。51的P0口是相当于集电极开路的门电路的,记得接上拉电阻◆★。LCD屏导完程序时,最开始如果什么也不显示的线脚接的电位器调一下背光。

  其余的应该就不算什么难的了◆■◆◆■★,找一个51最小系统原理图照着焊呗◆★◆★■,没什么太大的问题的■★◆■。法

  首先说一下我用到的东西★■,硬件方面(电路都是自己拿万能板焊的):一片51单片机,一块12864液晶★■★,一片ds1302时钟芯片★■■★■■,四个按键■■。还有些电容★★、电阻、晶振什么的,下面讲到的时候再说吧■■★◆◆★。主要的就这么多吧■◆■。再简单说一下按键的功能吧◆◆◆★◆,假设按键分别是k1,k2■◆,k3,k4◆★■◆★■。首先lcd主界面是显示的当前的日期时间和四路闹钟的时间★■■★◆。附图。k1,k2,k3,k4最开始被按下时分别对应的功能是k1■◆■■★◆:进入时间设定模式;k2:进入日期设定模式;k3★★◆:进入闹钟设定模式;k4:进入秒表计数模式。进入不同的模式后★◆,四个按键有都有了新的功能,首先k4一直是退出,就是退出到最开始的选四种模式★★◆。k1■★■◆◆◆,k2,k3对于日期和时间设定模式是一样的功能k1■★★◆◆:数值加1★◆,k2:数值减1,k3:更换调的是小时还是分钟抑或年份还是月份。对于闹钟模式■■,k1:数值加1,k2:更换调的是小时还是分钟◆■★,k3:更换调的是第几个闹钟◆◆。对于秒表模式,k1★■◆◆◆:第一次按是开始计数,然后再按就是记录一下当前是多少秒,最多可以记录9次◆★■■★◆。k2:暂停/开始,k3★★■★■◆:重新计数。有点绕得慌◆★■◆,简单的的说就是有两重循环。要是还没理解,可以看后面的代码。

联系我们