版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南机电高等专科学校综合实训报告部:电子诵信工程系业:应用电子技术级:学生姓名:2013 年 6 月实训任务书1时间:2013年6月4日2013年6月28日2. 实训单位:河南机电高等专科学校3. 实训目的: 熟悉电路板及 电子产品的制作全过程4. 实训任务: 了解电路板图得来的方法,掌握电路板图的打印技巧; 会使用热转印机将电路图转印到覆铜板上; 掌握电路板的腐蚀过程及注意事项; 会使用高速钻床给电路板打孔; 认识电子元器件,熟悉常用元器件的特性; 熟练掌握焊接方法和技巧,完成电路板的焊接; 掌握电子产品通电调试的注意事项,会检修电子产品; 作好实训笔记,对自己所发现的疑难问题及时请教解决;
2、 联系自己专业知识,体会电子产品制作过程,总结自己的心得体会;参考相关的书籍、资料,认真完成实训报告。液晶万年历 作品简介本款作品基于AT89S51主控芯片和DS18B20时钟芯片,采用液晶显示屏1602显示,使用温度传感器采集周围环境温度实现功能 :显示年月日时分秒温度准确显示 可通过按键进行校时操作 定时响铃 作品特点 :采用双电源供电, 停电时可自动切换到电池供电: 工作稳定, 低功耗,寿命长, 外形简洁大方,方便携带、摆放。1 本设计的主要设计思想是两方面:1 、通过设计硬件控制电路和软件控制程序, 从而实现能够正确地显示某年某月某日某时 某分某秒,万年历应具有校时功能、定时功能、报时
3、功能。可能除了上边的功能还有其他的 功能,如果需要还可以不断的向上加功能。在万年历电子表的上面还有调整时间和定时用的 几个功能键(复位键、选择位键、各个位数值的增大和减小两个键等)硬件控制电路主要用 了 AT89S51芯片处理器、LCD1602液晶显示器、DS1302时钟芯片等。根据各自芯片的功能互相连接成万年历电子表的控制电路。2、软件控制程序主要有主控程序、万年历电子表的时间控制程序。主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间 控制程序是万年历电子表中比较重要的部分。时间控制程序体现了年、月、日、小时、分钟、 秒及星期的计算方法。设计
4、中使用的时钟芯片是美国 DALLAS 公司推出的与 MC 1 468 1 8兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟芯片DS1302,采用DS1302作为主要计时芯片,可做到计时准确。对它的控制,主要是对其的初始化和对其数据的读取。采用连续工 作制,一般无需每次都初始化,即使系统复位也是如此。但初始化时,首先应禁止芯片内部 的更新周期操作。所以,应先将它状态寄存器 B中的SET位置1,然后初始化。DS1302处于正常工作状态时,每秒即产生一个更新周期。在该周期内,微处理器不能读时标寄存器中的内容,否则将得不到确定数据。为了采样时标寄存器中的数据,采用两种避 开在更新周期
5、内访问时标寄存器的方法。第一种是利用更新周期结束发出的中断。第二种是 利用寄存其 A 中的 UIP 位来指示芯片是否处于更新中期。LCD1602的实物图。tt-i图2-2 LCD1602的实物图LCD1602引脚说明编号符号引脚说明编号符号引脚说明1vss电源地9D2双向数据口2VDD电源正极10D3双向数据口3VL对比度调节11D4双向数据口4RS数据/命令选择12D5双向数据口5R/W读/写选择13D6双向数据口6E模块使能端14D7双向数据口7D0双向数据口15BLK背光源地8D1双向数据口16BLA背光源正极表 2-1 LCD1602 引脚1602的基本操作时序读状态输入:RS=L,R
6、W=H E=H输出:DBA DB7=状态字写指令输入:RS=L,RW=L E=下降沿脉冲输出:无读数据输入:RS=H RW=HE=H输出:DBA DB7=数据写数据输入:RS=H RW=L E=下降沿脉冲输出:无2.33 时钟设定的设计美国Dallas公司推出的低功耗具有涓细电流充电能力的实时时钟芯片DS1302,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿等多种功能。现在流行的串行时 钟芯片很多,如DS1302 DS1307 PCF848等。这些芯片接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟芯片为DS1302是Dallas公司的一种具有涓细电流充电能力的实
7、时时钟芯片,采用普32. 768kHz晶振。主要特点是采用串行数据传输,可为掉电保护 电源提供可编程的充电功能,并且可以关闭充电功能。主要性能特点1、31字节带后备电池的RAMH于数据存储2、串行I /0口,管脚数量少3、宽范围工作电压:2 . 05. 5v4、工作电压2. 0V时,电流小于300hA5、读/写时钟或RA数据时有两种传送方式:单字节传送和突发模式传送6、8脚DIP封装或其他可选圭寸装方式DS1302的引脚说明DS1302I勺引脚如图2-3所示。VCC为后备电源,VCC为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS130由VCC或VCC两者中的较大者供电。当VCC大
8、于VCCI+Q 2V时,VCC给DS1302供电。当VCC小于VCC时,DS130由VCC供电X1、X2为振荡源,外接32.768Hz 晶振。RS是复位,片选线,通过把RST俞入驱动置高电平来启动所有的数据传送。 RST俞入有 两种功能:(1),RS接通控制逻辑,允许地址/命令序列送入移位寄存器; ,RS提供了 终止单字节多字节数据的传送手段。当 RS功高电平时,所有的数据传送被初始化,允许对DS130进行操作。如果在传送过程中置RS伪低电平,则会终止此次数据传送,并且I /0引脚 变为高阻态。上电运行时,在VCO2. 5V之前,RST必、须保持低电平。只有在SCL为低电平时, 才能将RSTS
9、为高电平。I /0为串行数据输入输出端(双向),下文有详细说明。SCL为时钟输 入端。VcclVCC2送1SCLK述I/OGKD图2-3 DS1302的管脚87652342.4按键的应用在单片机应用系统中,按键主要有两种形式:1、直接按键;2、矩阵编码键盘。直接按键的每个按键都单独接到单片机的一个I/O 口上,直接按键则通过判断按键端口的电位即可识别按键操作;而矩阵键盘通过行列交叉按键编码进行识别。F面设计中以AT89S51增强型单片机实验板的直接按键来学习单片机轻触按键在单片机系统中的应用。直接按键的每个按键都单独接到单片机的一个I/O 口上,直接按键则通过判 断按键端口的电位,当按键按下去
10、后,I/O 口上的电位变为逻辑0,从而送给51单片机一个 中断信号,主控51单片机开始转到定时器、中断源等过程。AT89S51S51曾强型单片机实验板的4个轻触按键原理图如图2-4所示。pj 11 J产P2,3SJP2.4.h-S4P2.I 2I 2I 2(jD图2-4单片机中按键的接法2.5系统的直流电压系统中的时钟芯片DS1302保存及计时,需要一个恒定的直流电压提供,本设计采用两节1.5V的干电池串联成3V的电压,为DS1302提供电压。单片机电源电路直流电源提供,考虑 到该电源可能存在交流成分,故在电源输出端加入7805进行直流5伏整流,同时加入电容进 行滤波。3. 程序的设计3. 1
11、主程序的设计本设计采用时钟芯片DS1302,阳历程序只需从时钟芯片DS1302各个寄存器中读出年、月、日、星期、时、分、秒等数据,再处理即可。在首次对DS1302进行操作之前必须对它进行初始化,然后从DS1302中读出数据,再经处理后送给液晶 LCD1602显示缓冲单元。主程序流程图如图3-1所示。如图3-1主程序流程图3.2日期设定程序设计调整时间用4个调整按钮S1、S2、S3 S4, 1个作为选通控制用,即S1,另外4个作为加,减,左移,右移使用,分别定义为控制按钮,加按钮,减按钮,左移按钮,右移按钮。在调整时间过程中要调整的位与别的位应该有区别。3. 3 时钟程序设计时间的运行依靠定时中
12、断子程序对时钟单元数值进位调整来实现的。计数器 T0 打开后,进入计时,满 100 毫秒后,重装定时。中断一次,满一秒后秒进位,满 60 秒后即为 1 分钟, 分钟单元进位, 60 分到了后,时单元进位, 24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送LCD中显示出来实现时钟计时功能。计时子程序如下: uchar month,day,hour,minite,second; void readtime(); void write(uchar addr,uchar order); void delay1(); void delay1
13、() uchar x; for(x=10;x0;x-);void write(uchar addr,uchar order) / uchar k; sck=0; delay1();rst=1; delay1(); for(k=0;k1;delay1();sck=1;delay1();4 电路原理图及 PCB 图4.1 根据设计方案绘制原理图液晶万年历电路原理图如图 4.1 所示:f iminrIII|L II小y 1rn?* LllA J.Pl加X Lr 1n. hlII - TTH 1 TTfn mrrr411 rrrrr-rr-i 1 rii Fil Jn f E TT:: KtlA ;i
14、g 心丄nS ” 1 叫I.I-*. t丄ri 7; r1*eW * 3: Il IITE1 1 itVI dTE硏T-pJL41 uk 1 k lliilII I Ml;! I n-urr图41液晶万年历原理图n-Lihii-4.2由电路原理图生成PCB图,并对图进行修改连接。如图 4.2所示:10I ” 4空IM11O4L5144iMa 二 图4.2液晶万年历PCB5产品实物图经过焊接调试,最后做出产品,以下是一张液晶万年历实物图:图5.15.2图5.1液晶万年历图源程序如下所示 #include vREG51.H #include /#include LCD1602.h /#includ
15、e DS1302.h #define uint unsigned int#define uchar unsigned charsbitsbitDS1302_CLK = P 1人5;DS1302_IO = P 1人4;/实时时钟时钟线引脚实时时钟数据线引脚sbitDS1302_RST = P 1人3;/实时时钟复位线引脚sbitACC0 = ACCS;sbitACC7 = ACCqchar hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /模式切换键秒,分,时到日,月,年位闪的计数sbit Set = P
16、2人1;/sbit Up = P 2人2;/加法按钮sbit Down = P 2人3;/减法按钮sbit out = P 2人4;/立刻跳出调整模式按钮sbit DQ = P 1人2;/温度传送数据10 口char done,count,te mp flag, up _flag,down_flag;uchar temp_value; /温度值uchar Temp Buffer5,week_value2;void show_time(); /*1602液晶显示部分子程序 */液晶显示程序/Port Defi niti on s*sbit LcdRs=P 2人5;sbit LcdRw=P 2人6
17、;sbit LcdEn=P 2人7;sfr DBPort=0x80;/ P0=0x80, P1=0x90, P2=0xA0, P3=0xB0.数据端口/内部等待函数*unsigned char LCD_Wait(void)LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();LcdEn=0;return DBPort;/ 向 LCD写入命令或数*#define LCD_COMMAND0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0x01 /清屏#define LCD_HOMING0x02 /光
18、标返回原点void LCD_Write(bit style, unsigned char input)LcdEn=0;LcdRw=0;LcdRs=style;_nop_();DBPort=input; _nop_();/ 注意顺序LcdEn=1;_nop_();/ 注意顺序LcdEn=0;_nop_();设置显示模式 *LCD_Wait();#define LCD_SHOW0x04/显示开#define LCD_HIDE0x00/显示关#define LCD_CURSOR0x02/ 显示光标#define LCD_NO_CURSOR0x00/无光标#define LCD_FLASH0x01/光
19、标闪动#define LCD_NO_FLASH0x00/光标不闪动/void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);/ 设置输入模式 *#define LCD_AC_UP0x02#define LCD_AC_DOWN0x00/ default#define LCD_MOVE0x01 /画面可平移#define LCD_NO_MOVE0x00/defaultvoid LCD_SetInput(unsigned char InputMode) LCD_Write(LCD_C
20、OMMAND, 0x04|InputMode);/ 初始化 LCD* void LCD_Initial() LcdEn=0;LCD_Write(LCD_COMMAND,0x38);/8位数据端口,2 行显示 ,5*7 点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); / 开启显示LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); 清/ 屏, 无光标画面不动LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC 递增 ,/ 液晶字符输入的位置 * vo
21、id GotoXY(unsigned char x, unsigned char y) if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);/ 将字符输出到液晶显示 void Print(unsigned char *str) while(*str!=0)LCD_Write(LCD_DATA,*str);*/str+;/*DS1302 时钟部分子程序 typedef struct _SYSTEMTIMEunsigned char Second;unsigned char Minute;u
22、nsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month; unsigned char Year;unsigned char DateString11;unsigned char TimeString9;SYSTEMTIME; / 定义的时间类型SYSTEMTIME CurrentTime;#define AM(X) X#define PM(X) (X+12)#define DS1302_SECOND0x80/转成 24 小时制时钟芯片的寄存器位置 , 存放时间#define DS1302_MINUTE
23、0x82#define DS1302_HOUR0x84#define DS1302_WEEK0x8A#define DS1302_DAY0x86#define DS1302_MONTH0x88#define DS1302_YEAR0x8Cvoid DS1302InputByte(unsigned char d)/ 实时时钟写入一字节 (内部函数 ) unsigned char i;ACC = d;for(i=8; i0; i-)DS1302_IO = ACC0;/ 相当于汇编中的 RRCDS1302_CLK = 1;DS1302_CLK = 0;ACC = ACC 1;/ 实时时钟读取一字节(
24、 内部函数 )unsigned char DS1302OutputByte(void) unsigned char i;for(i=8; i0; i-)ACC = ACC 1;/ 相当于汇编中的RRCACC7 = DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0;return(ACC);/ucAddr: DS1302 地址 , ucData: 要写的数据void Write1302(unsigned char ucAddr, unsigned char ucDa) DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS130
25、2InputByte(ucAddr);/DS1302InputByte(ucDa);/地址,命令写 1Byte 数据DS1302_CLK = 1;DS1302_RST = 0;unsigned char Read1302(unsigned char ucAddr)/读取DS1302某地址的数据 unsigned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr|0x01);/ucData = DS1302OutputByte();/地址,命令读 1Byte 数据DS1302_CLK =
26、 1;DS1302_RST = 0;return(ucData);void DS1302_GetTime(SYSTEMTIME *Time) / 获取时钟芯片的时钟数据到自定义的结构型数组unsigned char ReadValue;ReadValue = Read1302(DS1302_SECOND);Time-Second = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MINUTE);Time-Minute = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);
27、ReadValue = Read1302(DS1302_HOUR);Time-Hour = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_DAY);Time-Day = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_WEEK);Time-Week = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MONTH);Time-M
28、onth = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_YEAR);Time-Year = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);void DateToStr(SYSTEMTIME *Time) / 将时间年 , 月,日,星期数据转换成液晶显示字符串 , 放到数组里 DateString 这里的 if,else 语句都是判断位闪烁 ,2 就不显示 , 输出字符串为 if(hide_yearDateString0 = 2;Time-DateString1 =
29、 0;Time-DateString2 = Time-Year/10 + 0;Time-DateString3 = Time-Year%10 + 0;else Time-DateString0 = ;Time-DateString1 = ;Time-DateString2 = ;Time-DateString3 = ;Time-DateString4 = /; if(hide_monthDateString5 = Time-Month/10 + 0;Time-DateString6 = Time-Month%10 + 0;elseTime-DateString5 = ;Time-DateStr
30、ing6 = ;Time-DateString7 = /;if(hide_dayDateString8 = Time-Day/10 + 0;Time-DateString9 = Time-Day%10 + 0;elseTime-DateString8 = ;Time-DateString9 = ;if(hide_weekWeek%10 + 0; / 因为等一下要在最后显示星期的数据另外放到 week_value 数组里 , 跟年,月, 日的分开存放 ,else week_value0 = ; week_value1 = 0;Time-DateString10 = 0; /字符串末尾加 0 ,
31、判断结束字符void TimeToStr(SYSTEMTIME *Time) /将时, 分,秒数据转换成液晶显示字符放到数组TimeString; if(hide_hourTimeString0 = Time-Hour/10 + 0;Time-TimeString1 = Time-Hour%10 + 0;elseTime-TimeString0 = ;Time-TimeString1 = ;Time-TimeString2 = :;if(hide_minTimeString3 = Time-Minute/10 + 0;Time-TimeString4 = Time-Minute%10 + 0;
32、elseTime-TimeString3 = ;Time-TimeString4 = ;Time-TimeString5 = :;if(hide_secTimeString6 = Time-Second/10 + 0;Time-TimeString7 = Time-Second%10 + 0;elseTime-TimeString6 = ;Time-TimeString7 = ;Time-DateString8 = 0;void Initial_DS1302(void) /时钟芯片初始化unsigned char Second=Read1302(DS1302_SECOND); if(Secon
33、d&0x80) /判断时钟芯片是否关闭Write1302(0x8e,0x00); /写入允许Write1302(0x8c,0x07); /以下写入初始化时间 日期:07/07/25. 星期: 3. 时间: 23:59:55Write1302(0x88,0x07);Write1302(0x86,0x25);Write1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);Write1302(0x80,0x55);Write1302(0x8e,0x80); / 禁止写入/*ds18b20 延迟子函数(晶振 12MHz ) */ void
34、delay_18B20(unsigned int i)while(i-); /*ds18b20 初始化函数 */ void Init_DS18B20(void) unsigned char x=0;DQ = 1;/DQ复位delay_18B20(8); /稍做延时DQ = 0;/delay_18B20(80); /单片机将DQ拉低精确延时 大于 480usDQ = 1;/拉高总线delay_18B20(14);x=DQ; /稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败delay_18B20(20);/*ds18b20 读一个字节 */unsigned char ReadOneC
35、har(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-)DQ = 0; /给脉冲信号dat=1;DQ = 1; /给脉冲信号if(DQ) dat|=0x80;delay_18B20(4);return(dat);/*ds18b20写一个字节 */void WriteOneChar(uchar dat) unsigned char i=0;for (i=8; i0; i-) DQ = 0;DQ = dat&0x01;delay_18B20(5);DQ = 1;dat=1;/*读取 ds18b20当前温度 */void ReadTemp(void)unsig
36、ned char a=0; unsigned char b=0;unsigned char t=0;Init_DS18B20();WriteOneChar(0xCC);/ 跳过读序号列号的操作WriteOneChar(0x44);/ 启动温度转换delay_18B20(100);/ this message is wery importantInit_DS18B20();WriteOneChar(0xCC);/跳过读序号列号的操作WriteOneChar(0xBE);/读取温度寄存器等(共可读 9 个寄存器) 前两个就是温度delay_18B20(100); a=ReadOneChar();/
37、读取温度值低位b=ReadOneChar();/ 读取温度值高位temp_value=b4;void temp_to_str() /温度数据转换成液晶字符显示 TempBuffer0=temp_value/10+0; /十位TempBuffer1=temp_value%10+0; /温度符号个位TempBuffer2=0xdf; /TempBuffer3=C;TempBuffer4=0;void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;icount;i+)for(j=0;j0;delay-)for(i=0;i0x59) /超过
38、59 秒, 清零temp=0;break;case 2: temp=Read1302(DS1302_MINUTE); temp=temp+1; / 分数加/读取分数up_flag=1;if(temp0x59)/超过 59 分, 清零done=0;while(out=0);void Upkey()/ 升序按键Up=1;if(Up=0 )mdelay(8);switch(count)case 1:temp=Read1302(DS1302_SECOND); /temp=temp+1; / 秒数加 1up_flag=1; /数据调整后更新标志temp=0;break;case 3:temp=Read1
39、302(DS1302_HOUR); /读取小时数temp=temp+1; /小时数加up_flag=1;if(temp0x23) / temp=0;超过 23 小时 , 清零case 4:up_flag=1;break;temp=Read1302(DS1302_WEEK); /temp=temp+1; / 星期数加 1读取星期数if(temp0x7)temp=1;break;case 5:temp=Read1302(DS1302_DAY); /读取日数temp=temp+1; / 日数加 1up_flag=1;if(temp0x31)temp=1;break;case 6:temp=Read1
40、302(DS1302_MONTH); /读取月数up_flag=1;case 7:up_flag=1;temp=temp+1; / 月数加 1if(temp0x12)temp=1;break;temp=Read1302(DS1302_YEAR); / temp=temp+1;读取年数/年数加 1if(temp0x85)temp=0;break;default:break;while(Up=0);void Downkey()/ 降序按键Down=1;if(Down=0 )mdelay(8);switch(count)case 1:读取秒数/ 秒数减 1temp=Read1302(DS1302_S
41、ECOND); /temp=temp-1;down_flag=1;/数据调整后更新标志if(temp=0x7f)/小于 0 秒 , 返回 59 秒temp=0x59;break;case 2:temp=Read1302(DS1302_MINUTE); /分数减 1读取分数temp=temp-1; /down_flag=1;if(temp=-1)temp=0x59; /小于 0 秒, 返回59 秒case 3:读取小时数break;temp=Read1302(DS1302_HOUR); /temp=temp-1; / 小时数减 1down_flag=1;if(temp=-1) temp=0x23
42、;case 4:读取星期数break;temp=Read1302(DS1302_WEEK); /temp=temp-1; / 星期数减 1down_flag=1;case 5:读取日数down_flag=1;if(temp=0)temp=0x7;break;temp=Read1302(DS1302_DAY); /temp=temp-1; / 日数减 1case 6:读取月数down_flag=1;if(temp=0) temp=31;break;temp=Read1302(DS1302_MONTH); /temp=temp-1; / 月数减 1if(temp=0) temp=12;case 7
43、:读取年数break;temp=Read1302(DS1302_YEAR); /temp=temp-1; / 年数减 1down_flag=1;if(temp=-1)temp=0x85;break;default:break;while(Down=0);void Setkey()/ 模式选择按键Set=1;if(Set=0 ) mdelay(8);count=count+1;done=1;/Setkey 按一次 ,count 就加 1 / 进入调整模式while(Set=0);void keydone()/ 按键功能执行 uchar Second;if(flag=0) /关闭时钟 , 停止计时
44、写入允许 Write1302(0x8e,0x00); /temp=Read1302(0x80);Write1302(0x80,temp|0x80);禁止写入Write1302(0x8e,0x80); /flag=1;Setkey();/扫描模式切换按键switch(count)case 1:do/count=1,调整秒 outkey();/扫描跳出按钮Upkey();/Downkey();/扫描加按钮扫描减按钮if(up_flag=1|down_flag=1) /数据更新,重新写入新的数据 Write1302(0x8e,0x00); /Write1302(0x80,temp|0x80); /写
45、入允许写入新的秒数Write1302(0x8e,0x80); /禁止写入up_flag=0;down_flag=0;hide_sec+;/位闪计数if(hide_sec3)hide_sec=0;show_time(); /液晶显示数据while(count=2);break;case 2:do/count=2,调整分 hide_sec=0;outkey();Upkey();Downkey();if(temp0x60)temp=0;if(up_flag=1|down_flag=1)Write1302(0x8e,0x00); /Write1302(0x82,temp); /写入允许写入新的分数Write1302(0x8e,0x80); /禁止写入up_flag=0;down_flag=0;hide_min+;if(hide_min3)hide_min=0;show_time();while(count=3);break;case 3:do/count=3,调整小时hide_min=0;outkey();Upkey();Downkey();if(up_flag=1|down_fl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆段挡墙施工方案1
- 超市会计工作总结(多篇范文)与超市会计工作总结范文
- 护肝养目防眼干
- 燃料化验员试题及答案
- 列车调度考试试题及答案
- 2025年临床执业医师《医学伦理》测试
- 药品分类管理办法培训试题及答案
- 医德医风三基三严考试题库及答案
- 医疗法规三基三严考试题库及答案
- 广播电视专业试题及答案
- 我心中的老师班会课件
- 低空经济试题及答案
- 养老院安全生产教育培训内容
- 设备设施停用管理制度
- 山东高考英语语法单选题100道及答案
- 职业道德与法治知识点总结中职高教版
- 2025年绿色低碳先进技术示范工程实施方案-概述及范文模板
- 2025上半年广西现代物流集团社会招聘校园招聘149人笔试参考题库附带答案详解
- 事故后企业如何进行危机公关与赔偿管理
- 2025年春新人教PEP版英语三年级下册全册教案
- OptixOSN3500智能光传输设备业务配置手册
评论
0/150
提交评论