基于16F887单片机数字钟课设设计报告
基于16F887单片机数字钟课设设计报告word格式 本文关键词:单片机,格式,报告,设计,数字钟
基于16F887单片机数字钟课设设计报告word格式 本文简介:第44页共44页xxxxxx《基于PIC16F887单片机的数字钟》课程设计报告学生姓名:_学号:_____专业班级:____________指导教师:___________*年*月*日目录1.功能介绍31.1PIC16F887介绍31.2DS1307介绍31.3TC74介绍31.4LM1602L介
基于16F887单片机数字钟课设设计报告word格式 本文内容:
第
44
页
共
44
页
xxxxxx
《基于PIC16F887单片机的数字钟》
课程设计报告
学生姓名:
_
学
号:
_____
专业班级:
__________
__
指导教师:
___
________*年*月*日
目
录
1.功能介绍3
1.1
PIC16F887介绍3
1.2
DS1307介绍3
1.3
TC74介绍3
1.4
LM1602L介绍3
1.5蜂鸣器介绍3
2.硬件原理框图4
3.模块介绍4
3.1
单片机最小系统模块4
3.2时间和温度通讯模块5
3.3
按键模块5
3.4
蜂鸣器和液晶显示器模块5
4.软件框图7
5.软件功能介绍7
5.1
端口﹑LCD和IIC初始化及端口若上拉7
5.2
显示预显示的数字和字母8
5.3
根据闹钟按键判断9
5.4
写入初值到时钟芯片9
5.5
时间加减设置10
5.6
显示时间﹑读和显示温度﹑显示字母星期11
6.个人心得体会12
6.1
关于PIC课设12
6.2
课设过程遇到的问题及解决措施12
6.3
我的建议14
附录1:数字钟的全部C程序15
附录2:Proteus完整仿真图44
1.功能介绍
1.1
PIC16F887介绍
PIC16F887单片机共有40个引脚,其中有33个端口引脚,7个电源﹑地和复位引脚。外部晶振设为4MHz,引脚1接复位按键。此数字钟用到单片机的B端口中断功能,端口若上拉,电平变化下降沿中断。
1.2
DS1307介绍
DS1307时钟芯片是实时时钟芯片,它提供秒﹑分﹑时﹑日﹑月﹑年和星期等数据,有备用电源,主电源掉电备用,时钟晶振是32.768kHz。其控制寄存器的地址为07,其值0b11010000,代表允许其7脚输出每秒1Hz的方波。其秒﹑分﹑时﹑日﹑月﹑年和星期分别存在地址为00﹑01﹑02﹑04﹑05﹑06﹑03中。其与单片机的通讯为IIC通讯。
1.3
TC74介绍
温度传感器TC74是感测周围温度值。TC74芯片的默认值为0b1001101(实验板上芯片调试时的地址为0b1001000,此为仿真时用的地址)。单片机首先向TC74改善地址,地址在字节的高7位,最低位为0表示为写。接着单片机向TC74发送第二个数据,即读温度命令字RTR,即8位0;然后重新开始,单片机再向TC74发送地址,但此时的最低位为1,表示接下来是要读TC74的温度值。最后单片机接收TC74发出的温度值。TC74与单片机的通讯也为IIC通讯。
1.4
LM1602L介绍
字符型LM016L液晶显示器。要求用4位数据线通讯,传送命令也传送地址。其初始化的格式是固定的,不能更改的,初始化见后面所示。输入到液晶显示器的是所示字符的ASCII码,液晶才能正确显示。
1.5蜂鸣器介绍
蜂鸣器是用来设置闹钟用的。当设定闹钟的时间到时,蜂鸣器响,按键按下,停止响。按键模块是用来进行年月日﹑秒分时和星期加减及设定闹钟用的。采用的是电平变化的中断模式。
2.硬件原理框图
220V
变压器变压
CUP模块
液晶显示
按键输入
DS1307和TC74
市电220V电压经变压器变压供CPU使用的低压。DS1307和TC74经CPU显示在液晶上。按键控制DS1307的时间加减和闹钟设置,实现闹钟功能。先在液晶上定位要显示数据的位置,然后将要显示的字符的ASCII码输入到液晶,即可正确数据。
3.模块介绍
3.1
单片机最小系统模块
此单片机的外部晶振为4MHz,引脚1接有高电平和复位按钮。端口B口用来进行电平变化中断,端口RC3和RC4用来进行IIC通讯,RC1用来输出高电平给蜂鸣器。端口D端口用来输出命令和数据给液晶显示器。
3.2时间和温度通讯模块
DS1307时间芯片可根据输入的数据自动走时。单片机不断地访问DS1307芯片,将访问得到的数据显示在液晶显示器上。其中芯片上读出来的星期是数字星期(01即代表星期一),软件部分将数字星期转换成字母星期(如Wed为星期三)。单片机也访问TC74温度传感器,要得到的数据显示在液晶上。温度传感器小数后面有一位,但是设计时只显示到个位,不显示小数点后面的数字。
3.3
按键模块
按键S1是用来定位时间加减用的,来回按7下,分别对秒分时,星期和日月年。S2可以对时间进行加运算即每按一下,相应的时间加1;S3可以时间进行减运算即每按一下,相应的时间减1;S4是闹钟按键,按第一下,进入闹钟设置模式,此时再按S2或S3可以对时间进行设定。按第二下时,CPU进入比较模式,即把DS1307的时间和设定保存好的时间进行比较,等待设定的时间到时,蜂鸣器开始响。当按第三下时,蜂鸣器停止响,相应的变量清零,从重新开始。
3.4
蜂鸣器和液晶显示器模块
当定时时间到,RC1输出高电平,二极管导通,蜂鸣器开始响。当RC1输出低电平时,二极管截止,蜂鸣器停止响。液晶显示器用来显示时间,星期和温度,首先要进行显示时间定位,即写入命令。然后进行显示数据输入,即定稿数据。VEE和VSS都拉低,VDD拉高电平。RS为0时,写命令,为1时写数据;R/为1时表示读,0时表示写;E数据使能端,下降沿送入有效。RD0~RD3,数据输入端,使用液晶显示器端口的高4位。
4.软件框图
端口﹑LCD和IIC初始化及端口若上拉
显示预显示的数字和字母
延迟2秒
写入初值到时钟芯片
显示时间﹑读和显示温度﹑显示字母星期
时间加减设置
闹钟设置和进行比较
蜂鸣器响
C=0或2
C=1
C=2
S4第三次按下
蜂鸣器不响
C=3
根据闹钟按键判断
该功能在中断程序段中
5.软件功能介绍
5.1
端口﹑LCD和IIC初始化及端口若上拉
//初始化端口
void
CSH(void)
{TRISB=0b11111111;
//端口B全为输入
TRISC=0b00011000;
//端口C中RC3和RC4为输入,其余为输出
ANSELH=0b00000000;
//选择I/O口
ANSEL=0;
//选择I/O口
OPTION=0b00000000;
//允许若上拉,下降沿中断
WPUB=0b11111111;
//B口若上拉
TRISA4=1;
//A口第5引脚为输入
TRISD=0b00000000;//控制LCD1604,全为输出
IOCB=0b00001111;
//允许电平变化中断
INTCON=0b11001000;
//允许全局中断,B口电平变化中断
FMQ=0;
//蜂鸣器不响
LCD_CSH();
//LCD初始化
IIC_CSH();
//IIC初始化
}
此为对端口﹑LCD和IIC的初始化,上面均有详细的说明,在此不做过多的重复。
LCD的初始化,上电时需要延时15ms及以上,此为延时20ms,其C程序见附录。
IIC的初始化,初始化过程实际上是对几个相关的寄存器设置的过程,其C程序见附录。
5.2
显示预显示的数字和字母
const
char
MENU0[2][17]={
{“010900628
“},{“linyixing
“}};
//完全按照数组中的字符显示整屏
void
DISP_MENU(const
charA)
{
char
i,j;
for
(i=0;i>4;//取高4位
LCD_WRITE_4(R2,FLAG);//先写高4位
R2=R1
//高4位清0,取低4位
LCD_WRITE_4(R2,FLAG);//再送低4位
DELAY_US(10);//延时100us
}
//写R1的低4位,FLAG为寄存器选择,1为命令,0为数据
void
LCD_WRITE_4(char
R1,char
FLAG)
{LCD_RW=0;NOP();//写模式
LCD_RS=FLAG;NOP();
//寄存器选择
PORTD
NOP();//RD高4位先清0
LCD_E=1;NOP();//使能
PORTD
|=R1;NOP();//送4位
LCD_E=0;NOP();//数据送入有效
LCD_RS=0;NOP();
PORTD
//RD高4位清0
}
此程序的功能的把给定的字符显示到LCD液晶显示器上,字符串有两行,分行显示。先是对要显示的位置进行定位,如第一行第0位。然后将一个字符的高低4位分别送入显示,显示时送入的是ASCII码。
5.3
根据闹钟按键判断
此为根据c=0,1,2来判断的。为0或2时,显示的是时钟芯片的时间,其中为2时,时钟有在比较时间;为1时显示的时闹钟设定的时间。c为3
时蜂鸣器不响。其C程序详见附录。
5.4
写入初值到时钟芯片
LCD_WRITE(0b00000001,COM);
//清屏
WRITE_DS1307(0x07,0x10);//写控制字到LCD
WRITE_DS1307(0x00,0x00);//0秒
WRITE_DS1307(0x01,0x00);//00分
WRITE_DS1307(0x02,0x11);
//11h
WRITE_DS1307(0x03,0x03);//星期3
WRITE_DS1307(0x04,0x08);//8日
WRITE_DS1307(0x05,0x05);//5月
WRITE_DS1307(0x06,0x12);//12年
//写ds1307,地址为address,数为data
void
WRITE_DS1307(char
ADDRESS,char
da)
{
START_BIT;
IIC_SEND(ADDR);
IIC_SEND(ADDRESS);
IIC_SEND(da);
STOP_BIT;
}
//发送数R并等待发送完成,收到从机的应答信号,中断用
void
IIC_SEND_interrupt(char
R)
{SSPBUF=R;//发送
SSPIF=0;
while
(RW==1);//在主动模式下,判断发送是否完成
while
(SSPIF==0);//等待发送完成
while
(ACKSTAT==1);//等待从机发送应答信号
NOP();
NOP();
}
写入初值到时钟芯片时,要用到IIC通讯,即IIC发送。先送时钟地址,再送要写入数据的地址,再送入数据。此可对时钟芯片的年月日,秒分时和星期进行设定初值。
5.5
时间加减设置
//校正时候实现“加”功能子程序
void
INC(void)
{
if(a==7)
//年部分校正
{
AAAA[6]+=1;
//如果a==7,则数组[6]自动加1
if((AAAA[6]
AAAA[6]=AAAA[6]+0x10;
//数组[6]元素的低四位大于9时,则低四位清零而高四位进1位
}
if(AAAA[6]>0x99)
AAAA[6]=AAAA[6]//如果数组[6]元素值大于0x99,则整个数都清零
if(c==0)
WRITE_DS1307_interrupt(0x06,AAAA[6]);//将经过修改的数组元素写入
if(c==1)
{
LCD_WRITE_interrupt(LINE1+4,COM);
DISP_HEX_interrupt(AAAA[6]);
}
}
}
此功能从DS1307中读出时间数据,然后对数据进行加减运算,再把修改后的时间写入到时钟芯片中,即可实现对时间的加减运算。由于程序篇幅较长,在此只列出部分加的C程序,其余加C程序及减C程序详见附录。
5.6
显示时间﹑读和显示温度﹑显示字母星期
READ_DS1307(0x00,0x07);
//读时钟芯片
(设置闹钟时间是没有这一行指令)
DISP_TIME(*AAAA);
//实时显示时间
(具体C程序见附录)
R1=READ_T();
//读温度传感器的值
DISP_T(R1);
//显示温度值
DISP_XINGQI(AAAA[3]);
//显示字母星期
//显示字母星期
void
DISP_XINGQI(char
b)
{
if(b==1)
//如果b=1,则显示Mon
{
LCD_WRITE(LINE1+13,COM);//第二行第13位
LCD_WRITE(
M,DAT);
LCD_WRITE(
o,DAT);
LCD_WRITE(
n,DAT);//13、14、15分别显示M、o、n
}
else
if(b==2)
//如果b=2,则显示Tue
{
LCD_WRITE(LINE1+13,COM);//同上
LCD_WRITE(
T,DAT);
LCD_WRITE(
u,DAT);
LCD_WRITE(
e,DAT);//同上
}
}
其完整程序详见附录,在此只给出其中的一部分。
//读TC74的温度值
signed
char
READ_T(void)
{
signed
char
R2;
SEN=1;//开始条件
while
(SEN==1);//检测开始条件是否完成?
IIC_SEND(TC74_ADD
__CONFIG(0x20F1);//调试用
__CONFIG(0x3FFF);
#defineLCD_ERD6//LCD
E
读写使能控制
#defineLCD_RWRD5//LCD
读(1)/写(0)控制线
#define
LINE10b10000000
#define
LINE20b11000000
#defineLCD_RSRD4//LCD
寄存器选择
数据(1)指令(0)
//RD4-RD7分别接DB4-DB7,RD7为忙标志
#define
COM0//在LCD_WRITE()中的第2参数为0表示写命令
#define
DAT1//在LCD_WRITE()中的第2参数为1表示写数据
#define
TC74_ADD
0b1001101
//TC74的7位地址
#define
RTR0b00000000
//TC74的读温度命令
#define
ADDR
0b11010000
//时钟芯片的地址
#define
YEAR_P
LINE1+2
//年的显示位置
#define
HOUR_P
LINE2+2
//时的显示位置
#define
KEY_DEC
RB2
#define
KEY_INC
RB1
#define
FMQ
RC1
//产生起始位,检测完成起始位?
#define
START_BIT
/
SEN=1;/
while(SEN==1)
//停止位,检查至停止位结束
#define
STOP_BIT
/
PEN=1;
/
while(PEN==1)
//发送重复开始,确定重复开始已完成?
#define
RE_START_BIT
/
RSEN=1;/
while(RSEN==1)
//接收使能模式,确定接收使能?
#define
RECEIVE_ENABLE_BIT/
RCEN=1;/
while(RCEN==1)
//自动应答,检查是否完成应答?
#define
ACK_BIT/
ACKDT=0;/
ACKEN=1;/
while(ACKEN==1)
//不应答,检查是否完成无应答?
#define
NOT_ACK_BIT/
ACKDT=1;/
ACKEN=1;/
while(ACKEN==1)
bank1
char
DD[16];//一行LCD显示数据暂存
bank1
char
AAAA[7];
//存放时钟芯片读出来的数据
bank1
char
CCCC[7];
//存放闹钟设定的时间
void
CSH(void);//初始化
void
LCD_CSH(void);//LCD初始化
void
LCD_BUSY(void);//检测LCD是否忙
char
LCD_READ(void);//读LCD,忙检测用
void
LCD_WRITE(char,char);//LCD写1字节,命令或数据
void
LCD_WRITE_4(char,char);//LCD写半字节
void
DISP_C(char);//在指定行中显示字符,字符在数组DD中
void
DISP_MENU(const
char);//由常数数组显示整屏字符
signed
char
READ_T(void);
//读温度传感器的温度值
void
IIC_CSH(void);
//IIC的初始化
void
IIC_SEND(char);
//IIC的发送与接收
void
DISP_T(char);
//显示温度值
void
BCD(char);
//BCD码转换
void
DELAY_US(char);
//延迟程序,10uS级
void
DELAY(unsigned
int);
//延迟程序,mS级
void
DELAY_I(unsigned
int);
//中断用的延迟程序,mS级
void
DISP_TIME(char);
//显示时钟的时间
void
DISP_HEX(char);
//将一个字节分两个字节显示
void
READ_DS1307(char,char);
//读时钟芯片
void
WRITE_DS1307(char,char);
//向时钟芯片写入值
void
interrupt
ISR(void);
//按键中断程序
void
DISP_XINGQI(char);
//星期转换,显示字母星期
void
INC(void);
//按键加1
void
DEC(void);
//按键减1
void
IIC_SEND_interrupt(char);
//中断用IIC发送和接收
void
WRITE_DS1307_interrupt(char,char);
//中断用写时钟芯片
//void
READ_DS1307_interrupt(char,char);
void
LCD_WRITE_interrupt(char,char);
//中断用写LCD
void
DISP_HEX_interrupt(char);
//中断用将一个字节显示成两个字节
//整屏界面,每行16个字符,最后加一个结束符
const
char
MENU0[2][17]={
{“010900628
“},{“linyixing
“}};
//定义常数
const
char
LINE[2]={LINE1,LINE2};
//定义数组和变量
char
SW,GW,a=0,c=0,d,i;
//主程序
main(void)
{
signed
char
R1;
//DELAY(100);
CSH();
//端口,LCD和IIC初始化
DISP_MENU(*MENU0);//显示整屏
DELAY(2000);
//延迟2秒,看清显示是什么
LCD_WRITE(0b00000001,COM);
//清屏
WRITE_DS1307(0x07,0x10);//写控制字到LCD
WRITE_DS1307(0x00,0x00);//0秒
WRITE_DS1307(0x01,0x00);//00分
WRITE_DS1307(0x02,0x11);
//11h
WRITE_DS1307(0x03,0x03);//星期3
WRITE_DS1307(0x04,0x08);//8日
WRITE_DS1307(0x05,0x05);//5月
WRITE_DS1307(0x06,0x12);//12年
while(1)
{
if((c==0)||(c==2))
//当C=0或C=2时执行
{
READ_DS1307(0x00,0x07);
//读时钟芯片
DISP_TIME(*AAAA);
//实时显示时间
R1=READ_T();
//读温度传感器的的值
DISP_T(R1);
//显示温度值
DISP_XINGQI(AAAA[3]);
//显示字母星期
}
if(c==1)
//C=1时执行
{
DISP_TIME(*AAAA);
//显示闹钟修改的时间
R1=READ_T();
//同上
DISP_T(R1);
//同上
DISP_XINGQI(AAAA[3]);
//同上
}
if((CCCC[2]==AAAA[2])
//当设定的时间到时,蜂鸣器响
};
}
//显示字母星期
void
DISP_XINGQI(char
b)
{
if(b==1)
//如果b=1,则显示Mon
{
LCD_WRITE(LINE1+13,COM);//第二行第13位
LCD_WRITE(
M,DAT);
LCD_WRITE(
o,DAT);
LCD_WRITE(
n,DAT);//13、14、15分别显示M、o、n
}
else
if(b==2)
//如果b=2,则显示Tue
{
LCD_WRITE(LINE1+13,COM);//同上
LCD_WRITE(
T,DAT);
LCD_WRITE(
u,DAT);
LCD_WRITE(
e,DAT);//同上
}
else
if(b==3)
//如果b=3,则显示Wed
{
LCD_WRITE(LINE1+13,COM);//同上
LCD_WRITE(
W,DAT);
LCD_WRITE(
e,DAT);
LCD_WRITE(
d,DAT);//同上
}
else
if(b==4)
//如果b=4,则显示Thu
{
LCD_WRITE(LINE1+13,COM);//同上
LCD_WRITE(
T,DAT);
LCD_WRITE(
h,DAT);
LCD_WRITE(
u,DAT);//同上
}
else
if(b==5)
//如果b=5,则显示Fri
{
LCD_WRITE(LINE1+13,COM);//同上
LCD_WRITE(
F,DAT);
LCD_WRITE(
r,DAT);
LCD_WRITE(
i,DAT);//同上
}
else
if(b==6)
//如果b=6,则显示Sat
{
LCD_WRITE(LINE1+13,COM);//同上
LCD_WRITE(
S,DAT);
LCD_WRITE(
a,DAT);
LCD_WRITE(
t,DAT);//同上
}
else
if(b==7)
//如果b=7,则显示Sun
{
LCD_WRITE(LINE1+13,COM);//同上
LCD_WRITE(
S,DAT);
LCD_WRITE(
u,DAT);
LCD_WRITE(
n,DAT);//同上
}
}
//中断子程序
void
interrupt
ISR(void)
{
DELAY_I(30);
//按键去抖
RBIF=0;
//标志位清零
if(RB3==0)
//闹钟键按下
{
a=0;c+=1;d+=1;
}
if(RB0==0
if(a==8)
a=1;
}
if(RB1==0}
if(RB2==0}
if(c==1)
//闹钟键按下
{
if(RB0==0)
//闹钟键按下的定位
{
a++;
if(a==8)
a=1;
}
if(RB1==0)
//同上
{INC();}
if(RB2==0)//同上
{DEC();}
for(i=0;i9)
{AAAA[6]=AAAA[6]
AAAA[6]=AAAA[6]+0x10;
//数组[6]元素的低四位大于9时,则低四位清零而高四位进1位
}
if(AAAA[6]>0x99)
AAAA[6]=AAAA[6]//如果数组[6]元素值大于0x99,则整个数都清零
if(c==0)
WRITE_DS1307_interrupt(0x06,AAAA[6]);//将经过修改的数组元素写入
if(c==1)
{
LCD_WRITE_interrupt(LINE1+4,COM);
DISP_HEX_interrupt(AAAA[6]);
}
}
//月部分校正
if(a==6)
{
AAAA[5]+=1;
if((AAAA[5]
AAAA[5]=AAAA[5]+0x10;
//数组[5]元素的低四位大于9时,则低四位清零而高四位进1位
}
if(AAAA[5]>0x12)
{
AAAA[5]=AAAA[5]
AAAA[5]=AAAA[5]+0x01;//如果数组[5]元素值大于0x12,则整个数都清零再加1
}
if(c==0)
WRITE_DS1307_interrupt(0x05,AAAA[5]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE1+7,COM);
DISP_HEX_interrupt(AAAA[5]);
}
}
//日部分校正
if(a==5)
{
AAAA[4]+=1;
if((AAAA[4]
AAAA[4]=AAAA[4]+0x10;//数组[4]元素的低四位大于9时,则低四位清零而高四位进1位
}
if(AAAA[4]>0x31)
{
AAAA[4]=AAAA[4]
AAAA[4]=AAAA[4]+0x01;//如果数组[4]元素值大于0x31,则整个数都清零再加1
}
if(c==0)
WRITE_DS1307_interrupt(0x04,AAAA[4]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE1+10,COM);
DISP_HEX_interrupt(AAAA[4]);
}
}
//星期部分校正
if(a==4)
{
AAAA[3]+=1;
if(AAAA[3]>7)
AAAA[3]=1;
//如果数组[3]的元素大于7时,则复位到1
if(c==0)
WRITE_DS1307_interrupt(0x03,AAAA[3]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE1+13,COM);
DISP_HEX_interrupt(AAAA[3]);
}
}
//时部分校正
if(a==3)
{
AAAA[2]+=1;
if((AAAA[2]
AAAA[2]=AAAA[2]+0x10;//数组[2]元素的低四位大于9时,则低四位清零而高四位进1位
}
if(AAAA[2]>0x23)
{
AAAA[2]=AAAA[2]//如果数组[2]元素值大于0x24,则整个数都清零
}
if(c==0)
WRITE_DS1307_interrupt(0x02,AAAA[2]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE2+2,COM);
DISP_HEX_interrupt(AAAA[2]);
}
}
//分部分校正
if(a==2)
{
AAAA[1]+=1;
if((AAAA[1]
AAAA[1]=AAAA[1]+0x10;//数组[1]元素的低四位大于9时,则低四位清零而高四位进1位
}
if(AAAA[1]>0x59)
AAAA[1]=AAAA[1]
//如果数组[1]元素值大于0x59,则整个数都清零
if(c==0)
WRITE_DS1307_interrupt(0x01,AAAA[1]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE2+5,COM);
DISP_HEX_interrupt(AAAA[1]);
}
}
//秒部分校正
if(a==1)
{
AAAA[0]+=1;
if((AAAA[0]
AAAA[0]=AAAA[0]+0x10;//数组[0]元素的低四位大于9时,则低四位清零而高四位进1位
}
if(AAAA[0]>0x59)
AAAA[0]=AAAA[0]
//如果数组[0]元素值大于0x59,则整个数都清零
if(c==0)
WRITE_DS1307_interrupt(0x00,AAAA[0]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE2+8,COM);
DISP_HEX_interrupt(AAAA[0]);
}
}
}
//校正时候实现“减”功能子程序
void
DEC(void)
{
if(a==7)
//年部分校正
{
AAAA[6]-=1;
//如果a==0,则数组[6]自动减1
if((AAAA[6]
AAAA[6]=AAAA[6]+0x09;//数组[6]元素的低四位大于9时,则低四位清零且改为0x09,而高四位则自动减1
}
if(((AAAA[6]
AAAA[6]=AAAA[6]+0x99;//如果数组[6]元素高四位大于9时,则整个数值清零再改为0x99
}
if(c==0)
WRITE_DS1307_interrupt(0x06,AAAA[6]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE1+4,COM);
DISP_HEX_interrupt(AAAA[6]);
}
}
//月部分校正
if(a==6)
{
AAAA[5]-=1;
if((AAAA[5]
AAAA[5]=AAAA[5]+0x09;
//数组[5]元素的低四位大于9时,则低四位清零且改为0x09,而高四位则自动减1
}
if(AAAA[5]==0x00)
AAAA[5]=AAAA[5]+0x12;//如果数组[5]元素等于0时,则整个数值改为0x12
if(c==0)
WRITE_DS1307_interrupt(0x05,AAAA[5]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE1+7,COM);
DISP_HEX_interrupt(AAAA[5]);
}
}
//日部分校正
if(a==5)
{
AAAA[4]-=1;
if((AAAA[4]
AAAA[4]=AAAA[4]+0x09;
//数组[4]元素的低四位大于9时,则低四位清零且改为0x09,而高四位则自动减1
}
if(AAAA[4]==0x00)
AAAA[4]=AAAA[4]+0x31;//如果数组[4]元素等于0时,则整个数值改为0x31
if(c==0)
WRITE_DS1307_interrupt(0x04,AAAA[4]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE1+10,COM);
DISP_HEX_interrupt(AAAA[4]);
}
}
//星期部分校正
if(a==4)
{
AAAA[3]-=1;
if(AAAA[3]<1)
AAAA[3]=7;//如果数组[3]的元素小于1时,则复位到7
if(c==0)
WRITE_DS1307_interrupt(0x03,AAAA[3]);//将经过修改的数组元素写入
else
if(c==1)
{
LCD_WRITE_interrupt(LINE1+13,COM);
DISP_HEX_interrupt(AAAA[3]);
}
}
//时部分校正
if(a==3)
{
AAAA[2]-=
- 范文大全
- 职场知识
- 精美散文
- 名著
- 讲坛
- 诗歌
- 礼仪知识
-
2024年全国两会精神大学生心得感想
2024年全国两会精神大学生心得感想 在这个充满希望的春天,2024年全国两会如期而至,即使远在异国他乡,当我看到代表委员们用心用情履
【心得体会】 日期:2024-03-12
-
世界十大登山鞋品牌 [户外登山鞋品牌排行]
登山鞋,是专门为爬山和旅行而设计制造的鞋子,非常适合户外运动,户外登山鞋的品牌有哪些?下面来看小编整理的户外登山鞋十大品牌排行吧。 户外登山鞋品牌排行1、Kol...
【述职报告】 日期:2019-05-19
-
2024年度纪律教育月活动方案6篇
2024年度纪律教育月活动方案6篇各级各部门要充分认识加强纪律教育、推进纪律建设的重要意义,高度重视、周密筹划、精心组织。在真抓实
【企划方案】 日期:2024-01-18
-
浅析遵义会议历史地位
浅析遵义会议的历史地位摘要:遵义会议在贵州省遵义市举行具有伟大的历史意义,这个在关键时刻举行的会议有
【思想学习】 日期:2020-07-20
-
霍尔效应实验
霍尔效应及其应用 置于磁场中得载流体,如果电流方向与磁场垂直,则在垂直于电流与磁场得方向会产生一附加
【入团申请书】 日期:2020-12-09
-
中国文化遗产日是几月几日?
中国文化遗产日是几月几日? 12020年中国文化遗产日是几月几日 每年六月的第二个星期六为中国的&l
【慰问贺电】 日期:2020-06-02
-
十八大以来我国网络安全和信息化辉煌成就
十八大以来我国网络安全和信息化的辉煌成就 党的十八大以来,以习近平同志为核心的党中央坚持从发展中国特
【申报材料】 日期:2020-11-25
-
雷锋日是什么时候几月几日_学雷锋日是几月几日
雷锋日是用来纪念雷锋同志的,也有很多人用这一天来学习雷锋助人为乐。雷锋日是什么时候呢?下面小编为大家推荐一些雷锋日的时间及相关知识,希望大家有用哦。 雷锋...
【入团申请书】 日期:2019-05-08
-
超星尔雅学习通《经济与社会如何用决策思维洞察生活》2021测试题附答案(204道题)
超星尔雅学习通《经济与社会如何用决策思维洞察生活》2021测试题附答案(204道题) 1、拉弗曲线的
【思想宣传】 日期:2021-05-12
-
2篇,学习对于构建现代化经济体系新发展格局心得体会
2篇学习关于构建现代化经济体系新发展格局的心得体会篇一: “建设现代化经济体系&rdqu
【慰问贺电】 日期:2020-12-08
-
组工干部学习谈治国理政第三卷《共建创新包容开放型世界经济》心得体会
组工干部学习谈治国理政第三卷《共建创新包容的开放型世界经济》心得体会 《习近平谈治国理政》第三卷第七
【职场知识】 日期:2020-09-22
-
有机磷酸酯类中毒及其解救(实验报告范文)
有机磷酸酯类中毒及其解救XXX、XXX一、实验目的1 观察有机磷酸酯类农药敌百虫中毒时的症状。 2
【职场知识】 日期:2020-08-30
-
“以学生为中心”的教学原则
以学生为中心的教学原则教师在开展以学生为中心的教学实践中,必须谨记学习目标不再是知识的获得,能力要比知识更重要。以下是蒲公英阅读网
【职场知识】 日期:2023-01-05
-
火影头像图片大全【火影动漫高清图片】
热血打斗类动漫很多很多,火影忍者就是打斗场面最精彩的动画之一。下面是小编整理的火影动漫高清图片,欢迎欣赏。 火影动漫高清图片欣赏 火影动漫高清图片1 火影动漫...
【职场知识】 日期:2020-03-04
-
乙酸乙酯皂化反应速率常数测定实验报告
学号:201114120222 基础物理化学实验报告 实验名称: 乙酸乙酯皂化反应速率常数的测定 应
【职场知识】 日期:2020-09-29
-
“从青风公司审计案例看销售与收款循环审计”案例说明书
“从青风公司审计案例看销售与收款循环审计”案例说明书一、本案例要解决的关键问
【职场知识】 日期:2020-09-28
-
学生守则和日常行为规范精选6篇
学生守则和日常行为规范精选6篇 学生守则和日常行为规范一 《小学生守则》、《中学生守则》已于xx年合并补充为《中小学生守则》
【职场知识】 日期:2022-09-17
-
机械加工创业项目_加工小本创业项目
现在在加工创业项目办小本加工厂有哪些?有什么项目推荐,下面这些小本加工厂项目个个都适合一个人创业,来看看吧!以下是小编分享给大家的关于,一起来看看加工小本创业项目吧!...
【职场知识】 日期:2020-03-19
-
心理健康黑板报_心理健康黑板报图片
虽然工作上难免压力,但是只要正视压力,一切就不会太辛苦。下面就随小编看看心理健康黑板报内容,希望喜欢哦。 心理健康黑板报图片欣赏 心理健康黑板报图片1 心理健...
【职场知识】 日期:2020-02-26
-
医院护士践行社会主义核心价值观演讲稿两篇
医院护士践行社会主义核心价值观演讲稿两篇本文关键词:践行,演讲稿,两篇,护士,核心价值观医院护士践行
【职场知识】 日期:2021-05-03
-
唐代诗人李昂个人信息
唐代诗人李昂个人信息 导读:我根据大家的需要整理了一份关于《唐代诗人李昂个人信息》的内容,具体内容:
【古典文学】 日期:2020-11-07
-
叠加原理实验报告
一、实验目的1、通过实验来验证线性电路中的叠加原理以及其适用范围。 2、学习直流仪器仪表的测试方法。
【古典文学】 日期:2020-11-12
-
[关于中秋的朗诵诗词] 关于爱国的朗诵诗词
中秋,热闹的街头树起了灯彩,舞起了火龙。你知道多少关于中秋的朗诵诗词?下面小编为你整理了几篇关于中秋的朗诵诗词,希望对你有帮助。 关于中秋的朗诵诗词一 中秋佳节...
【古典文学】 日期:2019-06-06
-
通信技术基础习题答案
通信技术基础习题答案本文关键词:习题,通信技术,答案,基础通信技术基础习题答案本文简介:第一章习题1
【古典文学】 日期:2021-03-10
-
[合作与成功的故事]团队合作成功的案例
学会合作,合作是一种深刻后的美丽,因为一滴水只有融入大海,才能够激起美丽的浪花。关于合作你了解吗?以下是小编分享的合作与成功的故事,一起来和小编看看吧。 合作与成...
【古典文学】 日期:2020-02-27
-
材料物理导论课后答案(熊兆贤)第六章习题参考解答
材料物理导论课后答案(熊兆贤)第六章习题参考解答本文关键词:第六章,课后,导论,习题,解答材料物理导
【古典文学】 日期:2021-03-16
-
法律知识手抄报图片大全|法律知识手抄报
我国开展了全面的普法宣传工作,法制宣传教育、普及法律常识作为经常的重要任务。做法制教育手抄报,普及法律知识。下面是小编为大家带来的法律知识手抄报图片大全,希望大家...
【古典文学】 日期:2020-03-10
-
食品中脂肪测定(索氏提取法)实验报告
报告汇编Compilationofreports20XX 报告文档·借鉴学习word可
【古典文学】 日期:2020-10-18
-
公司中标喜报范文_公司中标的喜讯怎么写 项目中标喜报范文
中标是指投标人被招标人按照法定流程确定为招标项目合同签订对象,那么公司中标的喜报怎么写呢?下面小编给大家介绍关于公司中标喜报范文的相关资料,希望对您有所帮助。 公...
【古典文学】 日期:2020-02-27
-
高血压论文参考文献
高血压论文的参考文献 [1] 中国高血压防治指南2010 ? 《中华心血管病杂志》 被中信所《中国科
【古典文学】 日期:2020-06-04
-
光纤通信实验报告2-光发射机消光比测试
告《光纤通信》实验报告2实验室名称:光纤通信实验室 ﻩﻩ :期日验实ﻩ2014年12月11日学 院信
【中国文学】 日期:2020-09-14
-
雪天安全行车注意事项_雪天安全行车提示语
维护城市交通秩序,争做河源文明市民。你们想看看雪天安全行车提示语有哪些吗?以下是小编推荐雪天安全行车提示语给大家,欢迎大家阅读! 安全行车温馨提示语【经典篇】 1...
【中国文学】 日期:2020-03-15
-
2023年度廉洁典型故事素材5篇
2023年度廉洁典型故事素材5篇廉洁最早出现在战国时期伟大的诗人屈原的《楚辞·招魂》中朕幼清以廉洁兮,身服义尔未沫。东汉著名学者王
【中国文学】 日期:2023-10-09
-
危险化学品信息表-柴油
危险化学品信息表-柴油本文关键词:柴油,危险化学品,信息危险化学品信息表-柴油本文简介:危险化学品信
【中国文学】 日期:2021-03-17
-
世界上国家间最大的陆地争议地区是什么:世界上有几个国家地区
古往今来,国土分界线就是兵家常争之地,大家又知不知道世界上国家间最大的陆地争议地区呢?现在就由小编为大家介绍这块世界上国家间的最大陆地争议地区吧! 世界上国家间的...
【中国文学】 日期:2020-02-28
-
小数乘法计算方法
小数乘法得计算方法理解小数乘法计算得法则,能够比较熟练得进行小数乘法笔算与简单得口算重点掌握小数乘法
【中国文学】 日期:2020-12-22
-
党员工作者个人现实表现材料范本十篇
党员工作者个人现实表现材料范本精选十篇 篇一 XXX,男,汉族,出生于XXXX年X月,党员,XX市X
【中国文学】 日期:2021-06-17
-
【欧式女装小店面装修图】 女装小店面装修
随着服装行业和照明产业的发展日趋成熟,服装店的照明设计越来越受到人们的广泛关注,即通过光环境设计对消费者产生引导性作用。下面小编就为大家解开欧式女装小店面装修图展...
【中国文学】 日期:2020-02-27
-
根据出生日期查五行命 根据出生日期计算五行
古人云:世间万物都有阴阳五行组成,包括人在内。如男为阳,女为阴。根据人的不同性格又对应不同的五行。根据出生日期计算五行怎么做?小编在此整理了出生日期计算五行的方法,...
【中国文学】 日期:2019-05-07
-
清明节踏青简笔画【清明节踏青图片】
清明节是二十四节气之一,是很适合出去踏青的节日,下面是小编为大家收集的清明节踏青图片相关资料,希望对大家有所帮助。 清明节踏青图片欣赏 清明节踏青图片1 清明...
【中国文学】 日期:2019-05-08
-
手机大尺度直播平台 [尺度最大的手机直播有哪些]
现在哪个手机直播平台尺度大?尺度大的手机直播App有哪些?小编为您介绍一下尺度最大的手机直播。 尺度最大的手机直播有哪些? 第一坊 第一坊视频平台是一款优质美女直...
【外国名著】 日期:2020-03-07
-
《怦然心动(2010)》电影完整中英文对照剧本
我最大的愿望就是朱莉·贝克能离我远点AllIeverwantedwasforJuliB
【外国名著】 日期:2020-07-27
-
国家开放大学电大公文文体写作试题及答案
公文文体的写作(二)单元测试题 1 决定属于A.上行文B.下行文C.平行文D.既可上行也可下行 2
【外国名著】 日期:2020-07-02
-
把脉人力资源管理的风向标 什么是风向标
把脉人力资源管理的风向标 外部经营环境的巨大变化,不可避免地给身处其中的企业及其经营管理带来新的、深刻的变化和挑战:市场需求在明显萎缩;而买方市场中,客户要求
【外国名著】 日期:2019-09-04
-
传感器测试实验报告
实验一 直流激励时霍尔传感器位移特性实验一、实验目得:了解霍尔式传感器原理与应用。 二、基本原理:金
【外国名著】 日期:2020-11-09
-
[平安信贷小额贷款] 平安好贷是正规贷款吗
小额贷款公司的设立,合理的将一些民间资金集中了起来,规范了民间借贷市场,同时也有效地解决了三农、中小企业融资难的问题。下面小编就为大家解开平安信贷小额贷款,希望能...
【外国名著】 日期:2019-05-22
-
六年级下册《比例尺》单元测试题
一、填空题: 1、比例尺=( ):( ),比例尺实际上是一个( )。 2、一幅图的比例尺是。A、B两
【外国名著】 日期:2020-09-29
-
细胞周期分析重要知识(源自MultiCycle)
细胞周期生物学基础 细胞的生成依赖于细胞的分裂而产生两个子代细胞的过程。在分裂过程最需要复制并传递给
【外国名著】 日期:2020-09-22
-
人教版高一语文必背 人教版高一语文《老王》赏析
杨绛的《老王》,可谓是平凡的人平常的事,平淡的语言平常的心,但读来总让人印象深刻,感触颇多,下面是小编给大家带来的人教版高一语文《老王》赏析,希望对你有帮助。 高一...
【外国名著】 日期:2020-03-10
-
“坚定理想信念、增强历史自觉、弘扬优良传统、加强党性锤炼、党员先锋模范作用发挥”方面存问题和不足剖析材料例文
“坚定理想信念、增强历史自觉、弘扬优良传统、加强党性锤炼、党员先锋模范作用发挥&rdqu
【外国名著】 日期:2021-08-14
-
梧桐花的花语|梧桐花的功效与作用
梧桐花为梧桐科植物梧桐的花,植物形态详梧桐子条。今天小编为你整理了梧桐花的花语,欢迎阅读。 梧桐花的花语是:情窦初开 在春季里晚开的花朵,有着恬淡的气息。 ...
【寓言童话】 日期:2020-03-03
-
惊悚鬼故事50字 令人惊悚的故事
这些惊悚故事在短短的篇幅和时间之内让您感受到故事里传达出来的恐怖感,令你感到害怕。下面就是小编给大家整理的令人惊悚的故事,希望对你有用! 令人惊悚的故事篇1:学校...
【寓言童话】 日期:2019-05-13
-
运动心理学
运动心理学名词解释: 1、运动表象:通常是指在人的头脑中重现出来的动作表象,它反映动作在一定的时间、
【寓言童话】 日期:2021-06-08
-
边城翠翠的爱情悲剧_翠翠爱情悲剧的产生原因
《边城》通过对湘西儿女翠翠和恋人傩送的爱情悲剧的描述,反映出湘西人民在“自然”“人事”面前不能把握自己命运的惨痛事实。下面是小编精心为你整理的翠翠爱情悲剧的产生原...
【寓言童话】 日期:2020-03-06
-
槽钢表面积对照表
槽钢表面积对照表序号型号理论重量表面积计算面积 kg mM2 tm M2 1[55 43844 84
【寓言童话】 日期:2020-07-03
-
廉洁自律自我剖析材料(精选)
廉洁自律自我剖析材料((精选多篇)) 信念。科学文化,提高自身素质的终身学习的意识,紧密联系群众,调
【寓言童话】 日期:2020-07-20
-
首件鉴定管理办法
1.目的与适用范围1 1目的:本程序规定了产品首件鉴定的内容和要求,以确保生产工艺和生产设备满足产品
【寓言童话】 日期:2020-08-08
-
【名人失败的故事】 关于失败的名人故事
我们最大的弱点在于放弃。成功的必然之路就是不断的重来一次。涓滴之水终可以磨损大石,不是由于它力量强大,而是由于昼夜不舍的滴坠。下面是小编为您整理的名人失败的故事,...
【寓言童话】 日期:2019-05-19
-
康熙字典五行属金的字 [字典中八画五行属金的字信息大全]
在五行中不同属性的字寓意是不相同的,其实同样的属性不同的笔画的字寓意也是一样的,下面小编为你整理了八画五行属金字,希望对你有所帮助! 8画五行属金的字 忮、8画、...
【寓言童话】 日期:2020-03-12
-
不断增强人民群众获得感幸福感安全感心得体会
不断增强人民群众获得感幸福感安全感心得体会 当前,全球疫情和经贸形势不确定性很大,我国发展仍面临一些
【寓言童话】 日期:2020-07-22
-
学生高考动员演讲稿
学生高考动员演讲稿3篇高考动员演讲稿11 老师们、同学们: 大家下午好!漫漫高考长征路已经进入尾声了
【百家讲坛】 日期:2021-09-22
-
企业安全演讲稿2021
最新企业安全的演讲稿5篇 演讲稿是作为在特定的情境中供口语表达使用的文稿。在充满活力,日益开放的今天
【百家讲坛】 日期:2021-09-22
-
XX镇扶贫项目实施专项整治工作总结_1
XX镇扶贫项目实施专项整治工作总结 为深入贯彻精准扶贫精准脱贫基本方略,认真落实党中央、国务院,省委
【百家讲坛】 日期:2021-09-22
-
对乡镇领导班子干部成员批评意见例文
对乡镇领导班子干部成员的批评看法范文 一、对党委书记XXX同志的批评看法〔3条〕 1、与干部交流偏少
【百家讲坛】 日期:2021-09-22
-
群英乡扶贫资金项目芬坡村祖埇村生产道路硬化工程绩效自评报告
群英乡扶贫资金项目((芬坡村祖埇村生产道路硬化工程))绩效自评报告 一、基本情况(一)群英乡扶贫资金
【百家讲坛】 日期:2021-09-22
-
党委书记警示教育大会上讲话2021汇编
党委书记在警示教育大会上的讲话55篇汇编 党委书记在警示教育大会上的讲话(一) 同志们: 根据省州委
【百家讲坛】 日期:2021-09-22
-
对于2021年召开巡视整改专题民主生活会对照检查材料
关于12021年召开巡视整改专题民主生活会对照检查材料 按照中央巡视组要求和省、市、区委统一部署,区
【百家讲坛】 日期:2021-08-14
-
消防安全知识培训试题.doc
消防安全知识培训试题姓名: 部门班组: 成绩: 一:填空题,每空4分,共44分。 1、灭火剂是通过隔
【百家讲坛】 日期:2021-08-14
-
涉疫重点人员“五包一”居家隔离医学观察工作流程
涉疫重点人员“五包一”居家隔离医学观察工作流程 目前,全球疫情仍处于大流行状
【百家讲坛】 日期:2021-08-14
-
疫情防控致全体师生员工及家长一封信
疫情防控致全体师生员工及家长的一封信 各位师生员工及全体家长朋友: 暑假已至,近期我省部分地方发现确
【百家讲坛】 日期:2021-08-14