多功能电子钟创新设计说明书-本科论文.doc
《多功能电子钟创新设计说明书-本科论文.doc》由会员分享,可在线阅读,更多相关《多功能电子钟创新设计说明书-本科论文.doc(28页珍藏版)》请在咨信网上搜索。
电气工程学院 创 新 设 计 说 明 书 题目: 多功能电子钟 学院(系): 电气工程学院 年级专业: 10级过程控制2班 学 号: 100103010193 学生姓名: 卓策 燕山大学课程设计(论文)任务书 院(系):电气工程学院 基层教学单位:电子实验中心 学 号 学生姓名 专业(班级) 设计题目 多功能电子钟 设 计 技 术 参 数 ●使用数码管显示时间; ●具有闹钟功能设置、取消功能; ●具有时间调整功能 设 计 要 求 ●时间可以设置24小时或12小时模式; ●时间可以使用按键调整; ●闹钟可以使用按键设置、取消; ●闹钟状态使用第六位位数码管显示是否工作。 ●时间显示模式使用第五位数码管显示。 工 作 量 ●学会使用IAR软件; ●独立完成电路设计,程序设计、连接电路和调试; ●参加答辩并书写任务书。 工 作 计 划 第5章 了解单片机的基本知识,学习使用软件,下发任务书,开始电路设计; 第6章 学习使用相关软件,继续电路设计; 第7章 完成电路设计; 第8章 编程下载、连接电路、调试和验收; 第9章 答辩并书写任务书。 参 考 资 料 1 强锡富. 传感器. 机械工业出版社,2001年 2 李科杰. 新编传感器技术手册. 国防工业出版社,2002年 3 贾伯年. 传感器技术. 东南大学出版社,1992 指导教师签字 基层教学单位主任签字 说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。 年 月 日 目 录 一、 设计目的、设计题目 二、 设计任务、功能描述 三、 硬件原理分析 四、 软件设计 五、 程序清单 六、 心得体会 摘要 本设计从日常生活中常见的事物入手,通过对电子时钟的设计,让我们认识到单片机已经深入到我们生活的每个领域,该设计不仅可以锻炼我们的动手能力,而且可以加深我们对单片机的认识和激发我们对未知科学领域的探索。 本文利用单片机实现数字时钟计时功能的主要内容。它体积小,成本低、功能强、使用方便、可靠性高等一系列优点,广泛应用于智能产业和工业自动化上。本次设计采用独立式按键进行时间调整,其中STM8S是核心元件,同时采用数码管LED动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外利用DS1302具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。 关键词:STM8S ; LED数码管;DS1302芯片; 一、设计目的、设计题目 本设计的目的是设计一个实用的电子时钟,该时钟能够实现日常的时钟显示,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,同时具有时钟调整、闹钟等功能。 二、 设计任务、功能描述 整体设计任务:本电子时钟设计首要的工作是结合以往所学的单片机程序编写理论和编写规则来编写电子时钟的软件部分,编写时要结合所配的STM8S105芯片的管脚功能和其他硬件电路,如DS1302时钟芯片和LCD1602液晶显示屏,该部分运用STVD单片机软件来完成。在编写完软件并检测完正确后用仿真硬件检测运行检测程序是否正确,并调试。待这一切工作做好后再利用系统板硬件电路来实践实现软件功能与硬件的结合。 三、 硬件原理分析 电路设计分析 电路原理设计是基于小系统包括电源电路、复位电路、按键电路、时钟电路、LCD液晶显示驱动电路、输出控制电路。电源部分是用直流电源经变压来提供的5V,晶体振荡器采用的是16MHz的石英晶体振荡器。 部分硬件设计: (1)本设计采用DS1302实时时钟芯片来进行计时,并将1302的数据输入单片机进行处理,送入LCD1602液晶显示屏进行显示。 (2)用四个电位按键来实现对电子时钟的调试工作,当按第一下总控键时进入中断程序,即时钟的调整状态,有两个电位按键分别来调整时钟的加和减;第四个按键用来调整时分秒日月年,按一下调整秒,连按两下调整分,按三下调整时,四下调整日,五下调整月,六下调整年,七下退出时间设置。 (3)用一个按键和其他部件组成的复位电路与芯片连接来实现整个程序及硬件的重新复位功能。 部分电路图如下: 1.1复位电路 本次设计采用按键电平复位,按键电平复位相当于按复位键后,复位端通过电阻与VDD电源接通,如下图: 1.2振荡器和时钟电路设计 本次设计采用常用的内部时钟方式接法:通过在引脚OSCIN和OSCOUT两端跨接晶体或陶瓷谐振器,再利用芯片内部的振荡电路,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,如图所示,外接晶振时,C1和C2的值通常选择为20-30pf。C1、C2对频率有微调作用,影响振荡的稳定性和起振速度。所采用的晶体或陶瓷谐振器得频率选择0-24MHz。为了减小寄生电容,更好的保证振荡器稳定、可靠的工作,谐振器和电容赢尽可能与单片机芯片靠近安装。 1.3电源 因为该电路所需电压为5v,可直接用电池供应或也可以用直流电源供应,但需经过变压才行。 STM8S105S芯片略图 1.4 DS1302实时时钟芯片 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。DS1302的引脚排列中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。电路图如下: 1.4 LCD1602液晶屏显示电路 1602是一种字符型液晶显示模块,专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以某公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下: 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极 1.5输出控制电路 将PB口用于单片机和LCD显示器的数据传输通道,如下图所示,通过控制LCD的读写控制端将1302的数据显示出来。 1.6整体布局图 四、 软件设计分析 1、地址空间及端口分配 _Bool rs @PC_ODR:1; //PC作为LCD的控制端,设置为输入 _Bool rw @PC_ODR:2; _Bool en @PC_ODR:3; _Bool sclk @PA_ODR:4; //串行时钟,输入输出控制 _Bool dio @PA_ODR:5; //三线接口时的数据线 _Bool id @ PA_IDR:5; _Bool ce @ PA_ODR:6; //作为复位端口 _Bool ID1 @ PG_IDR:0; //将PD6引脚设置为外部中断的输入引脚 2、总体架构说明 该时钟程序设计思路如下: (1)、在程序头将设计中的一些IO口进行分配并注释。 (2)、初始化程序,对单片机的IO口设置为输入输出等,对1302,1602的参数进行设置,如设定时钟运行为24小时制;将一些未到时钟设计功能的功能端口关闭等。 (3)开始主程序进行程序扫描,先扫初始化字子程序初始化DS1302和LCD1602,启动时钟芯片进行计时,初始化1602的显示方式,将分配好的时分秒等数字调入到显示子程序中。——>显示子程序通过分配的空间对应口将DS1302时钟芯片的数据显示相应的时分秒,年月日等。——>进入按键扫描,判断按键是否有变动,若有就根据设计程序对相应的按键按 入次数而进行实现相应的功能。如进入时间调整,中断进入、退出等。——>最后返回主程序头重新依次扫描。显示过程设有消隐,按键通过软件去斗。 (4)、子程序部分。在主程序的调用下依据不同的子程序工能而编写子程序,有多级嵌套。这些子程序包括显示子程序、延时子程序、时间计数子程序、按键处理子程序、调时间子程序等。 3、各子程序功能 显示子程序:将时钟芯片1302内的时钟数据送入单片机进行处理再送入LCD1602内进行显示,显示格式为:年/月/日/时/分/秒/星期。 延时子程序:该子程序是为了实现1302及1602在读写过程中的上升下降沿让芯片有足够的读写时间,以及字符有足够的显示时间,同时作为按键开关扫描去抖的延迟时间。 时间计数子程序:该程序功能是调动DS1302的初始化程序、读写程序,并将其内部数据送入单片机内进行处理。DS1302选择24小时工作方式,秒计数,走到59后进位分,后变00从新开始计时,分走到59后进位时,分从新开始00计时,时走到23,分走到59,秒走到59后进入从新日期周期计时。 按键处理子程序:该程序进行按键处理的功能判断分别对时分秒、年月日等进行调整已经中断的进入与退出等。 4、程序 #include "stm8s.h" void delay(int n); void Write_ds1302(char addr,char dat); int Read_ds1302(char addr); void write_sfm(char add,char dat); void lcd_wcom(char com); void write_sfm1(char add,char dat); void jia_key(char rd,char wd,char fd,char fen); void hjia_key(char rd,char wd,char fd,char shi); void rjia_key(char rd,char wd,char fd,char day); void yjia_key(char rd,char wd,char fd,char yue); void njia_key(char rd,char wd,char fd,char nian); char n1,n2,n3; char u0,u1,u2,u3; char table[]={"20 - - "}; char table1[]={" : : "}; char table2[]={'0','1','2','3','4','5','6','7','8','9'}; char table3[]={"MonTueWedThuFriSatSun"}; char table4[]={" Happy birthday "}; //16个字符 char table5[]={"<<<<<to you>>>>>"}; #define uint unsigned int #define uchar unsigned char #define PB PB_ODR #define Write_second 0X80 //秒写寄存器地址 #define Write_minute 0X82//分写寄存器地址 #define Write_hour 0X84//时写寄存器地址 #define Write_day 0X86//日写寄存器地址 #define Write_month 0X88//月写寄存器地址 #define Write_week 0X8A//周写寄存器地址 #define Write_year 0X8C//年写寄存器地址 #define Write_protect 0X8E//写保护字节写寄存器地址 #define Write_chongdian 0x90 //慢充电寄存器地址 #define Read_second 0X81//秒读寄存器地址 #define Read_minute 0X83//分读寄存器地址 #define Read_hour 0X85//时读寄存器地址 #define Read_day 0X87//日读寄存器地址 #define Read_month 0X89//月读寄存器地址 #define Read_week 0X8B//周读寄存器地址 #define Read_year 0X8D//年读寄存器地址 _Bool rs PC_ODR:1; //pc作为lcd的控制端,设置为输入 _Bool rw PC_ODR:2; _Bool en PC_ODR:3; _Bool sclk PA_ODR:4; //串行时钟,输入输出控制 _Bool dio PA_ODR:5; //三线接口时的数据线 _Bool id PA_IDR:5; _Bool ce PA_ODR:6; //复位 _Bool da_od PA_DDR:5; _Bool da_CR1 PA_CR1:5; _Bool da_CR2 PA_CR2:5; _Bool ID1 PG_IDR:0; //将Pd6引脚设置我外部中断的输入引脚 _Bool ID2 PD_IDR:5; _Bool ID3 PG_IDR:1; _Bool ID4 PD_IDR:6; //键盘的输入// int shfm_key(void) { uchar lshi; uchar an=0,n=0; do { if(!ID1) { delay(6); if(!ID1) { while(!ID1); lshi=1; an++; if(an==1) { Write_ds1302(Write_second,0x80); //先暂停时钟秒 u2=Read_ds1302(Read_second ); u2=((u2&0x70)>>4)*10+(u2&0x0F); write_sfm(6,u2); lcd_wcom(0x80+0x40+7); lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 } if(an==2) { u1=Read_ds1302(Read_minute); u1=((u1&0x70)>>4)*10+(u1&0x0F); write_sfm(3,u1); lcd_wcom(0x80+0x40+4); //显示分 lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 } if(an==3) { u0=Read_ds1302(Read_hour); u0=((u0&0x70)>>4)*10+(u0&0x0F); write_sfm(0,u0); lcd_wcom(0x80+0x40+1); //显示时 lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 } if(an==4) { n3=Read_ds1302(Read_day); n3=((n3&0x70)>>4)*10+(n3&0x0F); write_sfm1(8,n3); lcd_wcom(0x80+9); //显示日 lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 } if(an==5) { n2=Read_ds1302(Read_month); n2=((n2&0x70)>>4)*10+(n2&0x0F); write_sfm1(5,n2); lcd_wcom(0x80+6); //显示月 lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 } if(an==6) { n1=Read_ds1302(Read_year); n1=((n1&0x70)>>4)*10+(n1&0x0F); write_sfm1(2,n1); lcd_wcom(0x80+3); //显示年 lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 } if(an==7) { lshi=0; an=0; Write_ds1302(Write_second,0x00); //从新开启时钟 lcd_wcom(0x38); lcd_wcom(0x0c); n=1; } } } switch(an) { case 1:if(ID2==0) {delay(4); if(ID2==0) { while(!ID2); asm("NOP"); jia_key(Write_second,Read_second,6,1); asm("NOP"); } } if(ID3==0) //秒的减 { delay(4); if(ID3==0) { while(!ID3); asm("NOP"); jia_key(Write_second,Read_second,6,0); asm("NOP"); } } break; case 2 :if(ID2==0) //分的加 { delay(4); if(ID2==0) {while(!ID2); asm("NOP"); jia_key(Write_minute ,Read_minute,3,1); asm("NOP"); } } if(ID3==0) //分的减 { delay(4); if(ID3==0) { while(!ID3); asm("NOP"); jia_key(Write_minute ,Read_minute,3,0); asm("NOP"); } } break; case 3 :if(ID2==0) //时的加 { delay(4); if(ID2==0) { while(!ID2); asm("NOP"); hjia_key(Write_hour,Read_hour,0,1); asm("NOP"); } } if(ID3==0) //小时的减 { delay(4); if(ID3==0) { while(!ID3); asm("NOP"); hjia_key(Write_hour,Read_hour,0,0); asm("NOP"); } } break; case 4: if(ID2==0) //日的加 { delay(4); if(ID2==0) { while(!ID2); asm("NOP"); rjia_key(Write_day,Read_day,8,1); asm("NOP"); } } if (ID3==0) //日的减 { delay(4); if(ID3==0) { while(!ID3); asm("NOP"); rjia_key(Write_day,Read_day,8,0); asm("NOP"); } } break; case 5: if(ID2==0) //月的加 { delay(4); if(ID2==0) { while(!ID2); asm("NOP"); yjia_key(Write_month ,Read_month,5,1); asm("NOP"); } } if(ID3==0) //月的减 { delay(4); if(ID3==0) { while(!ID3); asm("NOP"); yjia_key(Write_month ,Read_month,5,0); asm("NOP"); } } break; case 6:if(ID2==0) //年的加 { delay(4); if(ID2==0) { while(!ID2); asm("NOP"); njia_key(Write_year,Read_year,2,1); asm("NOP"); } } if(ID3==0) //年的减 { delay(4); if(ID3==0) { while(!ID3); asm("NOP"); njia_key(Write_year,Read_year,2,0); _asm("NOP"); } } break; } } while(lshi==1); asm("NOP"); return(n); return(n); } void Write_ds1302(char addr,char dat) { char i ; PC_DDR |=0xFF; PC_CR1 |=0xFF; PC_CR2 |=0X00; ce = 0; //先复位 sclk = 0; //清零,保持io口的低电平,以待数据的写入 ce = 1; //置1,开始写数据 //发送地址 for(i =0;i<8;i++) { dio= addr&0x01; //将一位bcd码的数据送给io口 addr=addr >>1; //右移一位 sclk =1; //产生上升沿,发送数据 sclk =0; } //发送数据 for(i=0;i<8;i++) { dio= dat&0x01; //将一位bcd码的地址数据送给io口 dat =dat>>1; sclk=1; //产生上升沿,发送数据 delay(1); sclk=0;} ce = 0; } //读操作// int Read_ds1302(char addr) { char i; char k; char dat; da_od=0; da_CR1=0; da_CR2=0; ce=0; sclk=0; ce=1; //发送地址 for(i=0;i<8;i++) { sclk=0; delay(10); if(addr&0x01) {dio=1; } else dio=0; addr>>=1; sclk=1; delay(2); } da_od=0; da_CR1=0; da_CR2=0; //读取数据// for(k=0;k<8;k++) { dat>>=1; sclk=1; delay(2); sclk=0; delay(2); if(id==0) { dat&=0x7f; } else dat |= 0x80 ; } sclk=1; ce=0; return(dat); } //IO口的初始化// void GPIO_Init(void) { PC_DDR |=0X0F; PC_CR1 |=0X0F; PC_CR2 |=0X00; PG_DDR |=0X00; PG_CR1 |=0X03; PG_CR2 |=0X00; PD_DDR |=0X1C; PD_CR1 |=0X0F; EXTI_CR1|=0X00; ITC_SPR2|=0X30; PD_CR2 |=0X40; PA_DDR |=0XFF; PA_CR1 |=0XFF; PA_CR2 |=0X00; PB_DDR |=0XFF; PB_CR1 |=0XFF; PB_CR2 |=0X00; } //延时函数// void delay(int n) { int x,y; for(x=n;x>0;x--) for(y=110;y>0;y--); } //1602写命令函// void lcd_wcom(char com) { rs=0; //选择指令寄存器 rw=0; //选择写 PB=com; //把命令字送入PB delay(5); //延时一小会儿,让1602准备接收数据 en=1; //使能线电平变化,命令送入1602的8位数据口 en=0; } //1602写数据函数 // void lcd_wdat(uchar dat) { rs=1; //选择数据寄存器 rw=0; //选择写 PB=dat; //把要显示的数据送入P2 delay(5); //延时一小会儿,让1602准备接收数据 en=1; //使能线电平变化,数据送入1602的8位数据? en=0; } //1602初始化函数// void lcd_init(void) { uchar a,k; delay(15); //等待电源稳定 lcd_wcom(0x38); //8位数据,双列,5*7字形 lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁 lcd_wcom(0x06); //显示地址递增,即写一个数据后显示位置右移一位 lcd_wcom(0x01); //清屏 /////////显示第一行///////// lcd_wcom(0x80); for(a=0;a<15;a++) { lcd_wdat(table[a]); delay(5); } /////////显示第二行///////// lcd_wcom(0x80+0x40); for(k=0;k<8;k++) { lcd_wdat(table1[k]); delay(5); } } ///年月日时分秒输入的子函数// //秒分的加减子函数//输入// void jia_key(char rd,char wd,uchar fd,char fen) {u1=Read_ds1302(wd); _asm("nop"); u1=((u1&0x70)>>4)*10+(u1&0x0F); if(fen==1) { u1++; if(u1==60) { u1=0; } } else { u1--; if((u1+1)==0) { u1=59; } if(u1>59) { u1=59; } } Write_ds1302(rd,(u1/10)<<4 | (u1%10));////秒 write_sfm(fd,u1); lcd_wcom(0x80+0x40+fd);//显示分 lcd_wcom(0x38); lcd_wcom(0x0f);//显示功能开,有光标 } //时的加减子函数//输入// void hjia_key(char rd,char wd,char fd,char shi) { u0=Read_ds1302(wd); u0=((u0&0x70)>>4)*10+(u0&0x0F); if(shi==1) { u0++; if(u0==24) {u0=0; } } else { u0--; if((u0+1)==0) { u0=23; } if(u0>23) { u0=23; } } Write_ds1302(rd,(u0/10)<<4 | (u0%10)); //秒 _asm("nop"); write_sfm(fd,u0); lcd_wcom(0x80+0x40+fd); //显示分 _asm("nop"); lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 lcd_wcom(0x80+0x40+fd); } //日的加减子函数/输入// void rjia_key(char rd,char wd,char fd,char day) { n3=Read_ds1302(wd); n3=((n3&0x70)>>4)*10+(n3&0x0F); if (day==1) { n3++; if(n3==32) { n3=0; } } else {n3--; if((n3+1)==0) { n3=31; } _asm("nop"); if(n3>31) { n3=31; } } Write_ds1302(rd,(n3/10)<<4 | (n3%10)); asm("nop"); write_sfm1(fd,n3); _asm("nop"); lcd_wcom(0x80+fd); //显示 lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 } // 月的子函数//输入// void yjia_key(char rd,char wd,char fd,char yue) {n2=Read_ds1302(wd); n2=((n2&0x70)>>4)*10+(n2&0x0F); asm("nop"); if(yue==1) { n2++; if(n2==13) { n2=0; } } else {n2--; if((n2+1)==0) { n2=12; } if(n2>12) { n2=12; } } Write_ds1302(rd,(n2/10)<<4 | (n2%10)); _asm("nop"); write_sfm1(fd,n2); _asm("nop"); lcd_wcom(0x80+fd); _asm("nop"); lcd_wcom(0x38); lcd_wcom(0x0f);//显示功能开,有光标 } // 年的子函数/输入// void njia_key(char rd,uchar wd,char fd,char nian) { n1=Read_ds1302(wd); n1=((n1&0xF0)>>4)*10+(n1&0x0F); if (nian==1) {n1++; if(n1==100) { n1=0; } } else {n1--; if((n1+1)==0) { n1=99; } if(n1>99) { n1=99; } } Write_ds1302(rd,(n1/10)<<4 | (n1%10)); write_sfm1(fd,n1); lcd_wcom(0x80+fd); //显示 lcd_wcom(0x38); lcd_wcom(0x0f); //显示功能开,有光标 lcd_wcom(0x80+fd); } //初始化1302,设置开始时候的时分秒 void Init_DS1302(void) { Write_ds1302(Write_protect,0x00); Write_ds1302(Write_year,0x0A);//年 Write_ds1302(Write_month,0XC); //月 Write_ds1302(Write_day,0X22); //日 Write_ds1302(Write_hour,0X23); //小时 Write_ds1302(Write_minute,0X59); //分 Write_ds1302(Write_second,0X00); //秒 Write_ds1302(Write_protect,0x80); //关闭寄存器操作; } void write_sfm(char add,char dat) { char shi,ge; shi=dat/10; ge=dat%10; lcd_wcom(0x80+0x40+add);- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 电子钟 创新 设计 说明书 本科 论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文