历史上的今天
返回首页

历史上的今天

今天是:2025年02月10日(星期一)

正在发生

2020年02月10日 | 基于51的万年历时钟(有温度,闹钟)

2020-02-10 来源:51hei

pcb图.png?imageView2/2/w/550

单片机源码:

#include

//#include"DS18B20_3.H"

#include

#include

#define uint unsigned int

#define uchar unsigned char

#define wd 1                                //定义是否有温度功能  =0时无温度,=1时有温度

#include "eeprom52.h"


#define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)

#define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)


//液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)

sbit en=P2^7;

sbit rw=P2^6;   //如果硬件上rw接地,就不用写这句和后面的rw=0了

sbit rs=P2^5;



//校时按键与C51的引脚连接定义


sbit set=P3^0;          //设置键

sbit add=P3^1;          //加键

sbit dec=P3^2;          //减键

sbit seeNL_NZ=P3^3;        //查看农历/闹钟


sbit DQ=P3^7;                //

sbit buzzer=P2^0;        //蜂鸣器,通过三极管8550驱动,端口低电平响


sbit led=P2^4;                 //LCD背光开关

bit  led1=1;

bit NZ_sdgb=1;

unsigned char temp_miao;

unsigned char bltime;  //背光亮的时间


//DS1302时钟芯片与C51之间的引脚连接定义

sbit IO=P1^1;

sbit SCLK=P1^0;

sbit RST=P1^2;



char a,miao,shi,fen,ri,yue,week,setn;

int temp,nian;

uint flag;

//flag用于读取头文件中的温度值,和显示温度值

bit c_moon;


char nz_shi,nz_fen,setNZn;            //定义闹钟变量

uchar shangyimiao,bsn,temp_hour;                        //记录上一秒时间

uchar T_NL_NZ;                                                        //计数器

bit timerOn=0;                                                        //闹钟启用标志位

bit baoshi=0;                                                        //整点报时标志位

bit  p_r=0;                                                                 //平年/润年  =0表示平年,=1表示润年

data uchar year_moon,month_moon,day_moon;


sbit ACC0=ACC^0;

sbit ACC7=ACC^7;

/************************************************************

ACC累加器=A

ACC.0=E0H 


ACC.0就是ACC的第0位。Acc可以位寻址。


累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,

是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,

常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。

一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。 

***************************************************************/


/******************把数据保存到单片机内部eeprom中******************/

void write_eeprom()

{

        SectorErase(0x2000);

        byte_write(0x2000, nz_shi);

        byte_write(0x2001, nz_fen);

        byte_write(0x2002, timerOn);

        byte_write(0x2060, a_a);        

}


推荐阅读

史海拾趣

Guerrilla RF公司的发展小趣事
定期备份硬盘中的重要数据,以防数据丢失或损坏。
辉芒微(FMD)公司的发展小趣事

近年来,辉芒微积极筹备上市工作,旨在通过资本市场进一步拓展融资渠道和品牌影响力。尽管在上市过程中经历了两次撤回申请资料的波折,但公司始终保持着对资本市场的热情和信心。通过不断优化内部管理、提升产品竞争力和加强市场拓展,辉芒微最终赢得了市场的广泛认可。其产品被广泛应用于智能家居、生活电器、智能穿戴等领域,并与小米、飞科、中兴等众多知名品牌建立了长期稳定的合作关系。

Global Navigation Systems公司的发展小趣事
安装远程无线防盗报警系统时,首先需要将入侵探测器安装在需要防范的门窗等位置,并确保其能够准确检测到异常情况。然后,将微型无线报警发射机安装在探测器附近,并确保其能够接收到探测器的信号并发射出去。最后,将无线报警接收控制器安装在便于监控和接收报警信息的位置,并进行相应的调试和设置。在安装过程中,需要注意避免电磁干扰和信号衰减等问题,确保系统的稳定性和可靠性。
Hong Kong X'Tals Ltd公司的发展小趣事
在必要时,可以加入保护电路(如过流保护、过压保护等),以提高电路的可靠性和安全性。
福建国光公司的发展小趣事
确保电源电压在LM122的允许范围内(4.5~40V),以避免损坏芯片。
Formosa MS公司的发展小趣事
在高负载或长时间工作的情况下,需要关注LM122的散热问题,以避免过热导致性能下降或损坏。

问答坊 | AI 解惑

什么软件对电路及pcb仿真最好呢?

准备学一学pcb高速板的布线和仿真,但是遇到很多问题,各位也许能帮上忙的哈; 现在什么仿真软件对原理图和pcb板的仿真最好呢?因为我一直用的portell99se,它的仿真功能太有限了,有没与一个软件能够将protell做的pcb文件仿真的呢?…

查看全部问答>

请教arm学习

本人刚学习ARM,大家介绍一些经验吧,谢谢! 比如,开发环境是用IAR还是ADS好呢,个人感觉ADS太繁杂。 我是从ARM7TDMI看起的,汇编指令重要吗?自己创建软硬件系统的话,那些繁琐的操作都要自己做吗?…

查看全部问答>

四步骤让你搞定模拟电路学习

众所周知,模拟电路难学,以最普遍的晶体管来说,我们分析它的时候必须首先分析直流偏置,其次在分析交流输出电压。可以说,确定工作点就是一项相当麻烦的工作(实际中来说),晶体管的参数多、参数的离散性也较大。但值得我们注意的是,模拟电路构 ...…

查看全部问答>

开始学windows驱动开发有必要学ddk吗?还是直接学wdm?

现在还什么都不懂。只知道wdm是微软新的驱动开发方法,直接学wdm可以吗?用不用学ddk? 我看《Windows驱动开发技术详解》ddk和wdm好像都讲,而《寒江独钓》似乎只讲了wdm,用哪个做主要教材学习好?…

查看全部问答>

VC#智能设备应用程序如何能使用vc2005开发的智能设备ocx? 高手指点

VC#智能设备应用程序如何能使用vc2005开发的智能设备ocx? 高手指点…

查看全部问答>

PC Linux系统使用GPRS模块需要GPRS的驱动吗

各位大侠,小弟不才,问个简单问题:利用GPRS模块在Linux系统拨号上网只需要接口(比如串口)的驱动,而不需要GPRS本身的驱动吗?还是Linux系统自带这个驱动。…

查看全部问答>

snmp开发中的问题

在交换机上移植了ucd-snmp,现在在pc上可以通过mib-browser查看到大部分信息,但是遇到以下两个问题: 1.pc上的trap reciever接收不到交换机的trap,trap如何出发? 2.rmon已经加入代码编译,但是通过mib-browser查看rmon节点为“unsupported OID ...…

查看全部问答>

AD采样问题-交流采样

我写了个用ad采样程序,用于采样交流电压,我发现每次程序运行后的第一个采样数据是错误的。例如: samples矩阵用于存放采样的结果值 samples[0]=390.3 samples[1]=40.5 samples[2]=63.4 samples[3]=78.8 。。。。 第一个采样点samples[0]是 ...…

查看全部问答>

TCPMP 界面方案

TCPMP 界面怎么样 修改才变得漂亮呀?各位大侠帮忙指点,或者有该方案的 可以私聊 QQ:251078251 或MSN:kingdy-huang@hotmail.com…

查看全部问答>

winCE编译错误,生成不了nk.bin文件

winCE5.0编译错误,生成不了nk.bin文件。在build.log文件中觉得是这两个地方的问题 NMAKE :  U1073: don\'t know how to make \'D:\\WINCE500\\platform\\BVDMAIN\\lib\\ARMV4I\\retail\\drvlib.lib\' Stop. NMAKE.EXE   -i ...…

查看全部问答>