附件里面还包含有实物图
单片机源码:
- #include<reg52.h>
- //#include"DS18B20_3.H"
- #include <string.h>
- #include <intrins.h>
- #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);
- }
- ....
复制代码
全部资料51hei下载地址:
万年历-1.zip
(5.24 MB, 下载次数: 260)
|