毕业论文--定时闹钟设计_第1页
毕业论文--定时闹钟设计_第2页
毕业论文--定时闹钟设计_第3页
毕业论文--定时闹钟设计_第4页
毕业论文--定时闹钟设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机课程设计报告定时闹钟设计姓名:朱明伟贾建高学 号:0910131122、 0910131123班级:09测控1班指导老师:张道徳2012年3月24日前言21、设计题目及要求32、设计方案2. 1、ds1302特性介绍及电路连接32.2、ds18b20特性介绍及电路连接42.3、lcd 1602特性介绍及电路连接42.4、方案总体电路连接图52.5、程序流程图63、程序调试3. 1、源程序7274、调试仿真图28刖s本设计主要是对51单片机的一个方而的扩展,是能实现一般时间显示,时间调整, 定时闹钟,温度检测实时显示功能。需要实现某一功能时,按对应的按键即可,经多次 验证此设计灵活简便。系

2、统采用单片机at89c51作为本设计的核心元件,在其基础上外 围扩展芯片和外围电路,附加时钟电路,复位电路,键盘接口及lcd显示器。外围器件有lcd 1602液晶显示器,ds1302时钟芯片,ds18b20数字式温度传感 器,以及四个独立按键,在该设计与制作中采用单片机at89c51,它是低功耗、高性能的 cmos型8位单片机。片内带有4kb的flash存储器,且允许在系统内改写或用编程器编 程。另外,at89c51的指令系统和引脚与8051完全兼容,片内有128b的ram、32条i/o 口线、2个16位定时计数器、5个中断源、一个全双工串行口等。该设计能让lcd 1602同时显示年、月、h、

3、星期、时、分、秒。按键电路设有四个 按键:从上往下为kl,k2,k3和k4键。按下kl键切换设置时、分、秒,k2键每按一下 加一,k3键每按一下减一,k4键进入设置闹钟模式,定时时间到能发出报警声。当需 耍调整时间时,先按下kl键,再按k2键或k3键,k2键每按一下加一,k3键每按一下 减一,按kl键即回到时间状态。当需要设置闹钟时间,先按下k4键,再按kl切换设置 时间位,再按k2键或k3键,k2键每按一下加一,k3键每按一下减一,按kl键即回到时 间状态。ds1302电路连接:1设计题目及要求利用单片机at 8 9 c 5 1, ds1302时钟芯片,数字式温度传感器ds18b20,以及l

4、cd 1602实现一般时间显示,时间调整,定时闹钊温度检测功能。2.设计方案2.1 ds1302介绍及其特性ds1302是美国dallas公司推出的一种高性能、低功耗、带ram的实时吋钟电路,它可以 对年、月、日、周日、时、分、秒进行计吋,具有时年补偿功能,工作电压为2.5v5.5v。采用三 线接口与cpu进行同步通信,并可采用突发方式-次传送多个字节的时钟信号或ram数据。 ds1302内部有一个31x8的用于临时性存放数据的ram寄存器ods1302是ds1202的升级产品,与ds1202兼容,但增加了上电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电 的能力。特性:实时时钟

5、,可对秒、分、时、u、周、 月以及带闰年补偿的年进行计数用于高速数据暂存的37 x8 ram 2引脚的出行i/o 2.5-5.5v满度工作范围用于时钟或ram数据读场的单字节或 多了节数据传送双电源引脚可选慢速充电至vcc12.2 ds18b20 特性独特的单线接口方式,ds18b20在与微处理器连接时仅需要一条ii线即可实现微处 理器与ds18b20的双向通讯。测温范围55°c+125°c,固有测温分辨率0.5°c0支持多点组网功能,多个ds18b20可以并联在唯一的三线上,最多只能并联8个, 实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的

6、不稳定。工作电源:35v/dc在使用中不需要任何外围元件测最结果以912位数字最方式串行传送ds18b20电路连接:2.3lcd1602 特性 5v电压,对比度可调内含复位电路提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能有80字节显示数据存储器ddram内建有192个5x7点阵的字型的字符发生器cgrom 8个可it!用户口定义的5x7的字符发牛器cgramds18b20电路连接:rv1lco伽2 d d e苦冷i£占2.4.方案总体电路连接图口心(zj hi1hi ii.nfliflla上2.4.程序流程图:程序总体流程图系统初始化设置system_init(

7、)v主函数部分=*/# include<reg52.h>#include<drive.h># include<intrins.h>unsigned char tl,th,temp 1,tempo,s=o,s 1 =0,s2=0;unsigned char code welcom=,w,;e,;17c,;o,m,;e,t;o';,;w7o,'r,t,d,);unsigned char code table 116=*071 ',2,3,4,'5',6,7,8,9,':;l,t,()xdf,c,' *;un

8、signed char time.buf 1 8=20,12,3,23,16,28,40,5; /空年月日时分秒周十进制数据unsigned char time_buf8;unsigned char shifen8= 2,3,10,5,9,10,5,8;unsigned char nianyue 14=2,0,1,0,11,0,6,11,0,5,15,15,15,6;unsigned char wendu6=5,8,12,0,13,14;bit alarm_flag;闹钟标志位/*=ds18b20转换温度并保存至变量中分辨率为0.5度=*/void ds 18b20_temp(void) st

9、art_ds18b20();跳过rom开始转换温度读温度指令读低八位读高八位write_ds18b20(0xcc);write_ds18b20(0x44);start_ds18b20();write_ds 18b20(0xcc);vrite_ds 18b20(0xbe); tl=read_ds18b20();th=read_ds18b20(); start_ds18b20();temp1=(th&0x0f)«4) i (tl&0xf0)>>4)-6; 整数部分if(tl&0x08=0x08)temp()=5;temp0=0; wendu0=temp

10、l/10; wendul=temp l%10; wendu 二tempo;将温度数据保存于温度缓冲区字符转换函数将时间缓冲区的数据按位保存到对应的数组中void time_change()shifeno=time_bufl 4/10;shifen 1 =time_buf 1 4% 10; shifen3=tinie_bufl 5/l 0;shifen4=time_buf 1 5% 10; shifen6j=time_bufl6/10;shifen7=time_bufl6%10;nianyue3=time_bufl 1 % 10;nianyue2=time_buf 1 1 /10; nianyu

11、e6=time_bufl2%10;nianyue5=time_bufl2/10; nianyue9=time_bufl3j%10;nianyue8=time_bufl 3j/10; nianyue 13=time_bufl7;开机换idi显示*/void start_display()unsigned char i; wrzl(oxoc); wrzl(0x80+0xl4);for(i=0;i<7;i+)/开显不wrsj(welcomi); wrzl(0x80+0x50); wrzl(0x07);for(i=0;i<16;i+)写入 welcome写入一字符屏幕整体左移wrsj(we

12、lcomi+7 ); delay_ms(100);delay_ms(150);delay_ms(150); wrzl(oxol);/*=写入 “ to the mcu world ”开机画而显示一段时间淸屏系统初始化函数=*/void system_init()dsl302_init();/ dsl302_write_time();time_change();ds18b20_temp();/1302初始化/1302写初值第一次写进去时问后不用再用此函数转换1302时间读温度并进行温度数据处理/*=数据显示函数*/void display()unsigned char j;if(sl>=4

13、)sl=0;写时间为什么不能放在sen ()函数不闪烁进行温度转换读取吋间对时间进行数据处理dsl302_write_time(); 中呢?wrzl(0x06);ds18b20_temp();ds 1302_read_time();time_change();if(naozhong0=time_bufl 4&&n aozhongf 1 =time_buf 1 51 &&n aozhong 2=time_buf 16)/判断时间是否与设置闹钟值一致alarm_flag=l;/若达到闹钟值标忐位置1wrzl(0x80+l);for(j=0;j<14;j+)显示

14、年刀wrsj (table lnianyuej);wrzl(0x80+40);换行for(j=0;j<8;j+)显示时间wrsj(tablel shifenj);wrzl(0x80+0x4a);/ 显示温度for(j=0;j<6;j+)wrsj (table 1 wendu j );定时器to初始化void inittiniero()/1ms 定时tmod = 0x01;tho = oxdc;tlo = 0x00;ea= 1;et0= 1;tr0= 1;主函数=*/main()system_init(); start_display(); inittimero(); while(l

15、)系统初始化开机慚面显示立吋器初始化按键扫描scan();if(alarm_flag=l) 若标志位为1则启动闹钟 alarm 1();屮断函数*/void time_lnto() interrupt 1 tho = oxdc;tlo = 0x00;s+;if(s=89)大约执行了 200mstr0=0; s=0; displayo;tro=1;rj% if% rj% if% rj% *p rp rprjwrp rp rp rp rp rjw rjw rjw rjw rjwrj rjw rj% rj rj rj rj rj rj% rjrj rj% rj rj% rj rj% rj%l .土%

16、1z %1>%t><t*<*1%#t%ds18b20驱动部分#include<reg52.h># include<intrins.h># include<drive.h>#define nop() _nop_();sbit dq=p3a7;void delay_us(unsigned char us)/ 延时 us 子程序while(us);/*=二=二=二二=二二二=二二二启动 ds18b20=*/void start_dsi8b20()dq二 1;nop();dq=0;delay _us(80);nop();dq=1;delay_

17、us(34);dq=1;/*=二=ds18b20写数据=*/void write_ds 18b20(unsigned char date)int i;for(i=0;i<8;i+)dq= 1 ;delay_us( 10);dq=0;dq=date&0x01;delay_us(10);date»= 1;dq=1;ds18b20读数据unsigned char read_ds 18b20()unsigned char ss=o,i;for(i=0;i<8;i+)dq=l;delay_us(3);dq=o;ss»= 1:dq= 1 ;nop();nop();i

18、f(dq=l)ss=ssl0x80;delay_us(4);return ss;1 匕 匕 匕”* k上 k<t*t*<t*<t*<t*<t* <t* <t* <t* <t* <t* <t* <t* <t* <t* <t* <t*rtw rtwfaw rvw r|w r|w rtw rtw rt* rtw rtw rtw rtw rt* rtw rtw rtw rtw rjw rtw rrw rtw r rtw rtw rt rtw rtw rtw rtw rtw rtw rtw rtw rtw r

19、tw rtw rtw rtw ryw rtw ryw rtw rtw rtw rtw r|w rtw rj*ds 1302驱动部分=掣 #include<reg52.h># include<drive.h>unsigned char write_address7=0x8c,0x88,0x86,0x84,0x82,0x80,0x8a,;年月 口时分秒星unsigned char read_address7=0x8d,0x89,0x87,0x85,0x83,0x81,0x8b;/秒分时 li 丿 j 星年sbit sck=p3a6;sbit sda=p3a4;sbit rs

20、t=p3a5;空年月日吋分秒周 bcd数据unsigned char code tablel 1 =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/共 阴数码管0-9 ',熄灭'衣向ds1302写入一字节数据=*/void ds 1302_write_byte(unsigned char addr, unsigned char d)unsigned char i;rst=1;第入目标地址:addraddr=addr&oxfe;最低位置零即改为写操作地址for (i=0;i<8;i+)if(addr&a

21、mp;0x01)sda=1;elsesda=0;sck=1;sck=0; addr=addr» 1;i第入数据:dfor(i=0;i<8;i+)if(d&0x01)sda=1;elsesda=0;sck=1;sck=0;d=d» 1;rst=0;停止 ds 1302 总线从ds 1302读出一字节数据=*/unsigned char ds 1302_read_byte(unsigned char addr)unsigned char i;unsigned char temp;rst=1;写入i标地址:addr/ addr=addrl0x01 ;/ii 低位置高

22、for(i=0;i<8;i+)if(addr&0x01)sda=1;elsesda=0;sck=1;sck=o; addr = addr » 1;/输出数据:temp for(i=0;i<8;i+)temp=temp» 1; if(sda) templ=0x80;elsetemp&=0x7f;sck=1;sck=o;rst=o; 停止 ds 1302 总线 return temp;向ds 1302写入时钟数据=*/void ds 1302_write_time(void)unsigned char i,tmp;for(i=0;i<8;i+)

23、/bcd处理tmp=time_bufl fi/10;time_bufi=time_buf 1 i% 10; time_bufi=time_bufi+tmp* 16;ds 1302_write_byte(0x8e,0x00);关闭写保护ds 1302_write_byte(0x80,0x80);暂停/ds 1302_write_byte(ds 1302_charger_add,0xa9);涓流充电for(i=0;i<7;i+)ds 1302_write_byte(write_addressi,time_bufi+1 );ds 1302_write_byte(0x8e,0x80);打开写保护

24、从ds 1302读出时钟数据二*/void ds 1302_read_time(void)unsigned char i,tmp;/ read_address|7=0x8d,0x89,0x87,0x85,0x83,0x81,0x8b;秒分时日月星年for(i=0;i<7;i+)time_bufl +i=ds 1302_read_byte(read_addressi);for(i=0;i<8;i+)/bcd处理tmp=time_bufi/16;time_bufl i=time_bufi%16;time_buf 1 i=time_buf 1 i+tmp* 10;/*=二=二=二二=二二

25、二=二二二ds 1302初始化=*/void dsl302_init(void)rst=0;/rst 脚置低sck=0;/sck 脚置低ds 1302_write_byte(0x80,0x00);1 匕 匕 匕上<t*<t*<t*<t*<t*<t*<t*<t*<t*<t*rtw rtw rvw rvw rvw rtw rtw rtw rzw rtw rzw rtw rtw rtw rtw rtw rtw rtw r? rt rtw rtw rjw rjw rtw rt rtw rtw rjw rtw rtw rjw rtw rtw r

26、tw rtwrtw rtw rtw rtwrtw r7wrtw r7wrtw r7wrtw r<wrtw rrwrtw rtwrtw rtwrtw rtwrtw etw rtw按键扫描and闹钟*/# include<reg52.h> #include<drive.h> sbit key1=p1ao;sbit key2=p1a1;sbit key3=p1a2;sbit key4=p1a3;sbit beep=p1a5;格式为:频率常数,节拍常数,频率常数,节拍常数,保存设邀的闹钟数据unsigned char alarm6=, ; wttmj; unsigned

27、char naozhong3j=0,0,0);unsigned char s3; void scan()以下为设置时间部分if(keyl=0&&s2=0)delay_ms(5); if(keyl=0)while(!keyl);tr0=0;关中断sl+;beep=0;delay_ms(50);beep=1;switch(sl)case 1: wrzl(0x80+0x47);wrzl(0x0f);break;)case 2: wrzl(0x80+0x44);wrzl(oxof);break;case 3:wrzl(ox80+0x41 );wrzl(0x0f);break;case

28、4:tr0=l;break;default:tro= 1;break;秒分时if(sl=l)if(key2=0)delay_ms(5);if(key2=0)while(!key2); time_bufl6+;秒+/time_bufl8= 20,1065,23,59,5&6;wrzl(0x80+0x47);wrzl(oxoc);wrzl(0x04);if(time_bufl 6j=60)指向秒关闪烁让1602扌旨针写完后左移time_buflf6=0;wrsj (table 1 time_buf 1 6% 10); wrsj (table 1 time_buf 1 6/10);beep=

29、0;蜂鸣器响delay_ms(50);beep=1;if(key3=0)delay_ms(5);if(key3=0)while(!key3);time_buf 1 6;秒一/time_bufl8= 20,10,6,5,23,59,58,6;wrzl(0x80+0x47);wrzl(oxoc);wrzl(0x04);if(time_buf 1 6=255)time_bufl =59;wrsj(table ltime_bufl 6j% 10); wrsj(tableltime_bufl6/10j);指向秒关闪烁让1602指针写完后左移if(sl=2)beep=0; delay_ms(50);bee

30、p=1;蜂鸣器响if(key2=0)delay _ms(5); if(key2=0)while(!key2); time_bufl 5+;分+/time_bufl 8= 20,10,6,5,23,59,58,6;wrzl(0x80+0x44);wrzl(oxoc);wrzl(0x04);if(time_buf 1 5=6o) time_bufl5=o;wrsj (table ltime_bufl5%10); wrsj(tablel time_bufl 5/10); beep=o;指向秒关闪烁/it 1602指针? j完后左移蜂鸣器响delay_ms(50);beep=1;if(key3=0)d

31、elay _ms(5);if(key3=0) while(!key3);time_bufl 5;秒一/time_bufl8=20,l 0,6,5,23,59,58,6;指向fen关闪烁让1602指针笃完后左移蜂鸣器响wrzl(0x80+0x44);wrzl(oxoc);wrzl(0x04);if(time_bufl 5=255) time_bufl5=59;wrsj (table ltime_bufl5% 10); wrsj (table 1 time_buf 1 5/10); beep=o;delay_ms(50);beep=1;if(sl=3)if(key2=0)delay_ms(5);

32、if(key2=0)while(!key2);time_buf 1 4+;/time.bufl 二20,10,6,5,23,59,58,6;wrzl(0x80+0x41);wrzl(oxoc);时+wrzl(0x04);if(time_buf 1 4=24) time_bufl4=0;wrsj (table ltime_bufl4% 10); wrsj (table ltime_bufl 4/l 0); beep=0;指向秒关闪烁让1602指针写完后左移蜂鸣器响delay_ms(50);beep=1; if(key3=0)delay _ms(5);if(key3=0) while(!key3)

33、; time_buf 1 4;time_bufl 8= 20,10,6,5,23,59,58,6;时一wrzl(0x80+0x41);wrzl(oxoc);wrzl(0x04);if(time_bufl4=255)time_bufl4=23;wrsj (table ltime_bufl 4%10); wrsj (table 1 time_bufl 4/10); beep=o;delay_ms(50);beep=1;指向fen关闪烁让1602指针写完后左移蜂鸣器响/*=以下为设置闹钟部分=*/if(key4=0&&s i =0&&s3=0)delay _ms(3)

34、;if(key4=0)while(!key4);s2+;为什么不能直接用s2=(s2+)%2语句?s2%=2;if(s2=0)beep=0;delay_ms(50);beep=l ;tro=1;elsetro=o;/wrzl(0x80+l);wrsj (tablet shifenfjbeep=0;delay_ms(50);beep= 1;wrzl(0x80+0x4a);for(i 二 0;iv6;i+)wrsj(alarmi);naozhong0=time_bufl 4; /shi把当前时间缓存中的时间数据给闹钟缓存naozhongf l=time_bufl 51; /fenn aozhong

35、2=time_buf 1 6;/miaoif(s2=l)if(keyl=0)delay_ms(5);if(key 1 =0)while(!keyl);s3+;beep=0;delay_ms(50);beep=1;switch(s3)case 1: wrzl(0x80+0x47);wrzl(0x0f);break;秒case 2: wrzl(0x80+0x44);wrzl(0x0f');break;分case 3:wrzl(0x80+0x41 );wrzl(0x0f);break;)时case 4: s3=0;s2=0;tr0= 1;break;if(s3=l)if(key2=0)del

36、ay _ms(5);if(key2=0)秒+ while(!key2); naozhong21+;time_bufl 8= 20,10,6,5,23,59,58,6;wrzl(0x80+0x47); wrzl(oxoc); wrzl(0x04);if(naozhong2=60)指向秒关闪烁让1602指针写完后左移naozhong2=0;wrsj (table lnaozhong2% 10); wrsj(tablelnaozhong2/10); beep=o;delay_ms(50);beep=1;蜂鸣器响if(key3=0)delay_ms(5); if(key3=0)while(!key3)

37、;naozhong2-;/time.bufl 8=20,10,6,5,23,59,58,6;秒+wrzl(0x80+0x47);wrzl(oxoc);wrzl(0x04);if(naozhong2=255) naozhong2=59;指向秒关闪烁让1602指针写完后左移wrsj (table lfnaozhong 2%10);wrsj (table 1 naozhong2/10);beep=0;delay_ms(50);beep=1;蜂鸣器响if(s3=2) if(key2=0)delay _ms(5);if(key2=0) while(!key2); naozhongl+;/time_buf

38、l8= 20,10,6,5,23,59,58,6;分+wrzl(0x80+0x44);指向秒wrzl(oxoc); wrzl(0x04);关闪烁让1602指针写完后左移if(naozhongl =60)naozhongl=0;wrsj (table 1 naozhong 1 % 10);wrsj (table 1 naozhong 1j/10);beep=0;蜂鸣器响delay_ms(50);beep=i; if(key3=0)delay_ms(5);if(key3=0) while(!key3); naozhongl;/time_bufl8= 20,10,6,5,23,59,5&6;

39、wrzl(0x80+0x44); wrzl(oxoc); wrzl(0x04); if(naozhong 1=255)秒+指向fen关闪烁让1602指针写完后左移naozhongl=59;wrsj (table lfnaozhongf 1%10);wrsj (table 1 naozhong l/10);beep=0;蜂鸣器响delay_ms(50);beep=1;if(s3=3)if(key2=0)delay_ms(5);if(key2=0)分+ while(!key2); time_bufl4+;/time_bufl8=20,10,6,5,23,59,58,6;wrzl(0x80+0x41

40、);wrzl(oxoc);wrzl(0x04);if(time_buf 1 4=24)/指向秒关闪烁让1602指针写完后左移time_buf 1 4=0;wrsj (table ltime_bufl4%10); wrsj (table ltime_bufl 4j/10);elsewrsj(tablel time_bufl 4%10); wrsj(table ltime_bufl4/l 0);beep=0;蜂鸣器响delay_ms(50);beep=1;if(key3=0)delay_ms(5); if(key3=0)while(!key3);naozhong0;/time.bufl 8=20,

41、l 0,6,5,23,59,5 8,6;wrzl(0x80+0x41);wrzl(oxoc);wrzl(0x04);时+指向fen关闪烁让1602指针写完后左移if(naozhong0=255) naozhong0=23;wrsj (table 1 naozhong0%l 0);wrsj(table 1 fnaozhong0/10);beep=o;蜂鸣器响delay_ms(50);beep=1;闹钟函数当alarm_flag置1时闹钟响=*/ void alarm 1()unsigned char z;for(z=0;z<15;z+)beep=o;delay_ms(50);beep=1;

42、delay_ms(50);beep=o;delay_ms(50);beep=1;delay_ms(50);delay_ms(50);delay_ms(50);delay_ms(50);delay_ms(50);alarm_flag=o;尢卜 卜 卜 丄*丄*丄卜卜2丄卜丄“丄丄丄“丄丄丄丄£>丄丄rtrtwrtwrtwrtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rj rtw rj rtw rj rtw rj rtw rj rtw rj rtw rt rtw rt rtw rt r

43、tw rt rtw rt rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rj* rtwlcd 1602驱动部分=*/# include<reg52.h># include<intrins.h>#include<drive.h>#define nop() _nop_();sbit rw=p2a5;/ po 口控制 d0d7 p2a5 控制 rw(wr) p2a6 控制 rs(rd) p2a7控制 lcde(e)sbit rs=p2a6;sbit e=p2a7;void delay_ms(unsigned cha

44、r ms)/ 延时 ms 子程序unsigned char i;while(ms)for(i = 0; i< 250; i+)_nop_();_nop_();_nop_();_nop_();lcd写指令=*/ void wrzl(unsigned char x)/ rs二l,rw二l,d()d7二指令码,e=i?5脉冲rs=1;rw=0;e=0;nop();nop();rs=0;p()=x;nop();nop();nop();nop();e=l;no p();nop();nop();nop();e=0;nop();rs=1;delay_ms(l);/*=lcd写数据=*/void wrs

45、j(unsigned char y)/ rs=h,rw=l,d0d7=数据,e=高脉冲rs=();rw=o;e=0;nop();nop();rs= 1;po=y;nop();nop();nop();nop();e=l;nop();nop();nop();nop();e=0;nop();rs=0;delay_ms( 1);i一一一一一一一一一一一一一一一一一一一一一一一ds 1302部分*/extern void dsl302_lnit(void);/ds 1302 初始化extern void ds 1302_write_byte(unsigned char addr, unsigned char d); 向 ds 1302 写入一字节 数据从ds 1302读出一字向ds 1302写入时钟从ds1302读出闹钟数据空年月日时分秒空年月口时分秒周共阴数码管0-9extern unsigned char ds 1302_read_byte(unsigned char addr); 节数据extern void dsl 302_write_time(void);数据extern void ds 1302_read_time(void);时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论