能显示温度的万年历设计论文.docx_第1页
能显示温度的万年历设计论文.docx_第2页
能显示温度的万年历设计论文.docx_第3页
能显示温度的万年历设计论文.docx_第4页
能显示温度的万年历设计论文.docx_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

能显示温度的万年历摘 要随着电子技术的飞速发展,单片机在国民经济生产各行业发挥了重要的作用。它因为集成度高、体积小、运行可靠、应用灵活、价格低、面向控制等特点得到了广大工程技术人员和客户的好评。本文主要设计了基于单片机的能显示环境温度的万年历的硬件电路和软件程序。本设计在满足系统性能要求的前提下,尽可能的减少硬件成本。本文主要涉及到控制系统的硬件设计和单片机的控制软件编程。本系统选用温度传感器ds18b20对环境温度进行检测,利用时钟芯片ds1302来获得日期和时间等数据。基于对系统功能和成本的考虑,设计者选择了性价比较高的stc89c52单片机对ds18b20和ds1302进行操作,将获得的数据显示在lcd1602上。人机接口电路部分能实现日期时间闹钟等设定、温度显示、闹钟报警等功能。 关键字:单片机,温度,万年历the calendar that can show the temperatureabstractwith the rapid development of electronic technology, microcomputer plays an important role in the national production sectors. because of the characteristics of high level of integration, small volume, reliable operation, flexible application, low price, facing control and so on, it obtains good reputation from clients and engineerings and technical personnels. this paper designs hardware circuit and software program of a calendar that can show temperature and which based on mcu. this design reduces the cost of hardware as soon as possible in advance of meeting the system performance requirements. this paper mainly includes the design of the control system of the hardware and mcu control software programming. this system chooses temperature sensor ds18b20 to test the environment temperature, and use clock chip ds1302 to obtain the data such as the date and time. based on the system function and cost consideration, designers choose the cost-effective mcu stc89c52 to operate the ds18b20 and the ds1302 to get the data and show it on the lcd1602. the man-machine interface circuit of the date and time can realize functions such as seting the alarm clock, displaying temperature, alarm clock alarming and so on.key words: microcontroller,temperature, calendar- 36 -1 系统概述1.1万年历的主要功能及特点1.显示20002099的年、月、日、时、分、秒、星期,并且能够对每月的天数和闰年的天数自动进行调整。2.具有闹钟功能。当设置的闹钟的时间和当前的时间相同时,如果此时闹钟处于开启状态,蜂鸣器会报警,30秒后结束报警,此外在30秒内可以手动关闭蜂鸣器 ,如果闹钟处于关闭状态,蜂鸣器不会报警。3.四个按键设置日期时间和闹钟。四个按键分别为时间设置按键,闹钟按键,上调,下调按键。每按下一次时间设置按键,光标闪烁,可以通过上调下调键设置时间。按下上调(下调)键后,对应的时间加1(减1),当按下的时间超过1秒后,可以进行连续加(减)。闹钟键的作用有3个:1.正常显示状态时,按下闹钟键进入闹钟设置模式,再按上调(下调)键可以调节闹钟;2.蜂鸣器响时,可以关闭蜂鸣器;3.在时间日期设置模式下,按下此键直接退出回到正常模式,设置的时间不会保留。 4.能够显示环境温度。温度传感器ds18b20工作在12位分辨率模式,精度可达到0.5度。1.2系统结构本次设计的万年历主要由单片机,时钟芯片,温度传感器,按键,液晶显示器,蜂鸣器组成,其组成结构见图1-1所示。图1-1 系统结构图1.3主要硬件原理图图1-2为系统主要的硬件原理图。图1-2 主要原理图 本系统的核心控制器是stc89c52,左侧是时钟芯片ds1302,作用是为系统提供精确的实时时钟,该芯片通过3个引脚与单片机相连,其左侧接的晶振为32.768khz。温度传感器ds18b20通过一根数据线接在单片机的p3.3口,其主要作用是检测环境的温度。蜂鸣器连在的单片机的p3.4口,当单片机输出低电平时使得pnp三极管导通,蜂鸣器发出声音。lcd1602的数据端口接的单片机的p2口,控制端口接的分别是p1.0,p1.1,p1.2。四个按键中有一个按键接在外部中断0的端口,每按一次,就会触发一次外部中断,另外3个有一公共端接在p0.3,其余3个端子接在了p0.5,p0.6,p0.7三个端口,在使用时只需使p0.3输出低电平,然后分别检测p0.5,p0.6,p0.7哪个为低电平,就可知道哪个按键被按下。2 系统硬件组成本设计的硬件主要包括单片机系统,实时时钟系统,温度测量系统,人机交互系统。2.1时钟芯片介绍 本系统采用的时钟芯片是ds1302。ds1302是美国dallas公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态ram,采用spi三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和ram数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5v。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。ds1302的外部引脚分配如图2-1所示,其内部结构如图2-2所示。ds1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于电话传真便携式仪器以及电池供电的仪器仪表测量系统中。下面将主要的性能指标作一下综合:(1) 实时时钟具有能计算2100 年之前的秒、分、时、日、星期、月、年的能力还有 闰年调整的能力。(2) 31 8 位暂存数据存储ram。(3) 串行i/o 口方式使得管脚数量最少。(4) 宽范围工作电压2.0 5.5v。(5) 工作电流2.0v 时,小于300na。(6) 读/写时钟或ram 数据时有两种传送方式单字节传送和多字节传送字符组方式。(7) 8 脚dip 封装或可选的8 脚soic 封装根据表面装配。(8) 简单3 线接口。(9) 与ttl 兼容vcc=5v。(10) 可选工业级温度范围-40 +85。(11) 与ds1202 兼容。(12) 在ds1202 基础上增加的特性;对vcc1 有可选的涓流充电能力;双电源管用于主电源和备份电源供应;备份电源管脚可由电池或大容量电容输入;附加的7 字节暂存存储器。图2-1 ds1302外部引脚图各引脚的功能为:vcc1:备份电源。vcc2:主电源。当vcc2vcc1+0.2v时,由vcc1向ds1302供电,当vcc2 vcc1时,由vcc1向ds1302供电。sclk:串行时钟,输入,控制数据的输入与输出。i/o:三线接口时的双向数据线。ce:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,ce开始控制字访问移位寄存器的控制逻辑;其次,ce提供结束单字节或多字节数据传输的方法。ds1302内部结构如图3-2所示。图2-2 ds1302内部结构2.2温度传感器 温度传感器采用的ds18b20。ds18b20是美国dallas公司生产的温度传感器,具有如下特点:(1)独特的一线接口,只需要一条总线通信。(2)多点能力,简化了分布式温度传感器的应用。(3)无需外部元件。(4)可用数据总线供电,电压范围从3.0v5.5v,无需备用电源。(5)测量温度范围为55 +125 。(6)10 +85 范围内精度为0.5。 (7)分辨率912位可设定,即分辨率可以设定0.5, 025, 0.125, 0.0625。(8)温度转换为12位数字格式时,转换时间最大值为750ms。ds18b20的引脚图如下:图2-3 ds18b20引脚图引脚介绍:vdd: 该引脚是电源引脚,当采用寄生电源供电时该引脚需接地。dq:该引脚是数据引脚,可以由该引脚直接供电。 gnd:地。ds1820数字温度计以9 位数字量的形式反映器件的温度值。 ds1820通过一个单线接口发送或接收信息,因此在中央微处理器和ds1820之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。 因为每个ds1820都有一个独特的片序列号,所以多只ds1820可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。这一特性在hvac环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。ds1820有三个主要数字部件:1)64位激光rom,2)温度传感器,3)非易失性温度报警触发器th和tl。器件用如下方式从单线通讯线上汲取能量:在信号线处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。ds1820也可用外部5v电源供电。对于单总线上只接有一个ds18b20的情况,启动温度转换操作步骤主要有三个:1、复位ds18b202、发出skip rom命令(cch)3、发出convert t命令(44h)读取温度转换值的步骤主要有五个:1、复位ds18b202、发出skip rom命令(cch)3、发出read命令(beh)4、读两字节的温度5、温度格式转换在12位分辨率的情况下,温度格式如下表所示:图2-4 温度格式图高五位是符号位,温度为正数时,符号位均为0,温度为负数时,符号位均为1,其余各位存放的是温度值的补码形式,所以在读出数值之后,应将先其转换为原码。如果是正数,数值不变,如果是负数,先将数值加1然后按位取反。2.3 lcd1602 1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形 1602lcd是指显示的内容为16x2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于hd44780液晶芯片的,控制原理是完全相同的,因此基于hd44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。引脚简介:1602采用标准的16脚接口,其中: 第1脚:vss为电源地 第2脚:vdd接5v电源正极 第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。第4脚:rs为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:rw为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:e(或en)端为使能(enable)端。 第714脚:d0d7为8位双向数据端。 第1516脚:空脚或背光电源。15脚背光正极,16脚背光负极。lcd1602外形图如下图所示。图2-5 lcd1602指令集:1602通过d0d7的8位数据端传输数据和指令。 显示模式设置: (初始化) 0011 0000 0x38 设置162显示,57点阵,8位数据接口; 显示开关及光标设置:(初始化) 0000 1dcb d显示(1有效)、c光标显示(1有效)、b光标闪烁(1有效) 0000 01ns n=1(读或写一个字符后地址指针加1 &光标加1), n=0(读或写一个字符后地址指针减1 &光标减1),s=1 且 n=1 (当写一个字符后,整屏显示左移) s=0 当写一个字符后,整屏显示不移动。 数据指针设置:数据首地址为80h,所以数据地址为80h+地址码(0-27h,40-67h) 其他设置: 01h(显示清屏,数据指针=0,所有显示=0);02h(显示回车,数据指针=0)。2.4定时器2stc89c52内部有3个定时器,其中定时器0和1与标准51单片机兼容。定时器2是一个16位的定时/计数器。在本设计中,由于ds18b20工作在12位分辨率的状态下,转换时间需要750ms,如果在主程序里添加750ms的延时函数,势必会影响程序的效率,影响系统的实时性,因此在该系统中采用了定时器2来提供这750ms的延时时间。当单片机发出启动温度转换的指令后,立刻启动定时器,当定时器时间累积到750ms后读取温度值,这样在定时器计数的过程中,cpu可以执行其他任务,系统的实时性得到了保证。定时器2有3种工作模式:1.捕获模式;2.16位自动重装模式;3.波特率发生模式。在此只介绍前两种模式。2.4.1有关寄存器ie: et2:定时器2中断使能位。 t2mod:t2oe:定时器2输出使能位。 dcen:向下计数使能位。 t2con寄存器: tf2:溢出标志,中断时该位置1 ,需在中断程序里将该位清0。 exf2:外部标志,捕获方式或自动加载方式下,当t2xe引脚(p1.1)输入负边沿信号,且exen2位为1时,此位置1,产生中断,在中断程序里需将此位清0。 rclk:串行端口接受频率选择位。 tclk: 串行端口发送频率选择位。 exen2:定时器2 外部使能标志。当其置位且定时器2 未作为串行口时钟时允许t2ex 的负跳变产生捕获或重装。 exen2= 0 时t2ex 的跳变对定时器2 无效。 tr2:定时器2 启动/ 停止控制位。 c/t2:定时器/ 计数器选择 。0: 内部定时器 1:外部事件计数器 cp/rl2:捕获/ 重装方式选择。置位时exen2= 1 时t2ex 的负跳变产生捕获,清零时exen2= 1 时定时器2 溢出或t2ex 的负跳变都可使定时器自动重装。 th2和tl2:定时器计数寄存器 rcap2h和rcap2l:重装寄存器 2.4.2捕获模式捕获模式的原理框图见下图所示:图2-6 捕获模式原理图在捕获模式中通过t2con中的exen2设置两个选项。如果exen2=0定时器2作为一个16位定时器或计数器(由t2con中c/t2位选择),溢出时置位tf2(定时器2 溢出标志位)。该位可用于产生中断(通过使能ie 寄存器中的定时器 2 中断使能位)。 如果exen2=1与以上描述相同但增加了一个特性,即外部输入t2ex 由1 变0 时将定时器2 中tl2和th2 的当前值各自捕获到rcap2l 和rcap2h。另外,t2ex 的负跳变使t2con中的exf2置位exf2, 也象 tf2一样能够产生中断(其向量与定时器2溢出中断地址相同,定时器2中断服务程序通过查询tf2 和exf2 来确定引起中断的事件)。在该模式中tl2 和th2 无重新装载值。甚至当t2ex 产生捕获事件时,计数器仍以t2ex 的负跳变或振荡频率的1/12(12时钟模式)或1/6(6时钟模式计数)。2.4.3 16位自动重装模式 16位自动重装模式的原理框图如下图所示:图2-7 16位自动重装模式原理图(dcen=0)图2-8 16位自动重装模式原理图(dcen=1)16位自动重装模式中,定时器2可通过c/t2配置为定时器/计数器,编程控制递增/递减计数。计数的方向是由dcen(递减计数使能位)确定的dcen位于t2mod 寄存器中。当dcen=0时定时器2默认为向上计数;当dcen=1时,定时器2可通过t2ex 确定递增或递减计数。 图2-7显示了当dcen=0时定时器2自动递增计数。在该模式中通过设置 exen2位进行选择。如果exen2=0,定时器2递增计数到0ffffh并在溢出后将tf2置位,然后将rcap2l和rcap2h中的16位值作为重新装载值装入定时器2。rcap2l和rcap2h的值是通过软件预设的。如果exen2=1,16位重新装载可通过溢出或t2ex从1到0的负跳变实现。此负跳变同时将exf2置位。如果定时器2中断被使能,则当tf2或exf2置1时产生中断。在图2-8中dcen=1时,定时器2可递增或递减计数。此模式允许t2ex控制计数的方向。当t2ex置1时,定时器2递增计数,计数到0ffffh后溢出并置位tf2。还将产生中断(如果中断被使能),定时器2的溢出将使rcap2l和rcap2h中的16位值作为重新装载值放入tl2 和th2。 当t2ex置零时将使定时器2递减计数。当tl2和th2计数到等于rcap2l和rcap2h 时定时器产生溢出。定时器2溢出置位tf2,并将0ffffh重新装入tl2和th2。当定时器2递增/递减产生溢出时,外部标志位exf2翻转。如果需要可将exf2位作为第17位在此模式中exf2 标志不会产生中断。3 软件设计系统软件主要包括系统的头文件、对ds1302的操作、对ds18b20的操作、对lcd1602的操作、按键程序、主程序、定时器中断程序等部分。4.1 头文件include.h头文件include.h主要包含了对位变量的定义、宏定义、寄存器的定义、全局变量的定义和一些函数的声明等。#include#define uint unsigned int#define uchar unsigned char#define ds1302_w_addr 0x80#define ds1302_r_addr 0x81sfr t2mod=0xc9;sbit set=p32;sbit nao=p05;sbit buzzer=p34;sbit key2 =p03;sbit jian=p06;sbit jia=p07;sbit dq=p33;sbit sck = p13;/时钟sbit sda = p14;/数据sbit rst = p15; /ds1302复位(片选)sbit rs=p10;sbit rw=p11;sbit en=p12; uchar code naozhong= alarm clock; uchar code table=0123456789; uchar code tablew83=abc,mon,tue,wen,tur,fri,sat,sun; uchar time7=0,0,14,24,4,2,12; uchar code naostate= yn ; uchar minusflag,m,nao1,nao2=1,count,count1,count2,/*miao,*/naoshi=7,naofen,naomiao,state=1; void delay(uchar x) /延时函数uchar a,b;for(a=x;a-;a0)for(b=1;b-;b0);void write(uchar,uchar);void set_time(uchar *);void read_time(uchar *);void displaywendu();void writeweek();void writetime();void writenao();void writecom(uchar);void delay(uchar);4.2 ds1302程序 ds1302的程序主要有单字节写数据、单字节读数据、复位、设置写保护、清除写保护、写入数据、读出数据等函数。以下是详细的程序。void write_ds1302_byte(uchar dat) /ds1302单字节写入uchar i;for (i=0;i= 1;sck = 0;uchar read_ds1302_byte(void) / ds1302单字节读数据uchar i, dat=0;for (i=0;i= 1;if (sda)dat |= 0x80;sck = 1;sck = 0;return dat;void reset_ds1302(void) / ds1302复位rst = 0;sck = 0;rst = 1;void clear_ds1302_wp(void) / 清零ds1302写保护reset_ds1302();rst = 1;write_ds1302_byte(0x8e);write_ds1302_byte(0);sda = 0;rst = 0; void set_ds1302_wp(void) /设定ds1302写保护reset_ds1302();rst = 1;write_ds1302_byte(0x8e);write_ds1302_byte(0x80);sda = 0;rst = 0;void write_ds1302(uchar addr, uchar dat) /ds1302写入数据reset_ds1302();rst = 1;write_ds1302_byte(addr);write_ds1302_byte(dat);sda = 0;rst = 0;uchar read_ds1302(uchar addr) /ds1302读出数据uchar temp=0;reset_ds1302();rst = 1;write_ds1302_byte(addr);temp = read_ds1302_byte();sda = 0;rst = 0;return (temp);void set_time(uchar *timedata) / ds1302 时间设定 uchar i, tmp; for (i=0; i7; i+) / 转化为bcd格式tmp = timedatai / 10;timedatai = timedatai % 10;timedatai = timedatai + tmp*16;clear_ds1302_wp();tmp = ds1302_w_addr; / 传写地址for (i=0; i7; i+) / 7次写入 秒分时日月周年write_ds1302(tmp, timedatai);tmp += 2; set_ds1302_wp();void read_time(uchar *timedata) / ds1302读时间uchar i, tmp;tmp = ds1302_r_addr;for (i=0; i0;i-)dq = 0; / 给脉冲信号dat=1;dq = 1; / 给脉冲信号if(dq)dat|=0x80;delay1(4);return(dat);void writeonechar(uchar dat)/写一个字节uchar i=0;for (i=8; i0; i-)dq = 0;dq = dat&0x01;delay1(5);dq = 1;dat=1;void starttemp()/启动温度转换init_ds18b20();writeonechar(0xcc); / 跳过读序号列号的操作writeonechar(0x44); / 启动温度转换uint readtemp()uchar a=0;uchar b=0;uint t=0;float tt=0;init_ds18b20();writeonechar(0xcc); /跳过读序号列号的操作writeonechar(0xbe); /读取温度寄存器a=readonechar(); /连续读两个字节数据 /读低8位 b=readonechar(); /读高8位t=b;t=8;t=t|a; /两字节合成一个整型变量。if(b&0xfc)t=t+1;tt=t*0.0625; /得到真实十进制温度值,因为ds18b20可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度t= tt*10+0.5;minusflag=1;elsett=t*0.0625; /得到真实十进制温度值,因为ds18b20可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度t= tt*10+0.5; /放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入操作。 minusflag=0;return(t);void displaywendu()uint num; /定义的时候用uchar宏定义就会出错uint shi,ge,xiaoshu; /这里的num,shi,ge,xiaoshu 必须用unsigned int无符号整数来表示,用unshigned char 字符型则显示错误num=readtemp();shi=num/100;ge=num/10%10;xiaoshu=num%10;if(minusflag)write(0xc9,-);elsewrite(0xc9, );write(0xca,tableshi);write(0xcb,tablege);write(0xcc,.);write(0xcd,tablexiaoshu);write(0xce,0xdf);write(0xcf,c);4.4 lcd1602程序 lcd1602程序主要包括写入命令函数、写入数据函数、初始化函数、在某个地址写入数据函数、显示日期时间闹钟数据函数等组成,下面是详细程序。void writecom(uchar com) /lcd写入命令函数p2=com;rs=0;rw=0;delay(1);en=0;delay(1);en=1;delay(1);en=0;void writedata(uchar dat) /lcd写如数据p2=dat;rs=1;rw=0;delay(1);en=0;delay(1);en=1;delay(1);en=0;void inti() / lcd初始化函数writecom(0x38); / 显示模式设置delay(20);writecom(0x0c); / 光标开闪烁delay(20);writecom(0x06); / 光标位置设定delay(20);extern void write(uchar com,uchar dat) / 在lcd某个位置写数据函数writecom(com);delay(1);writedata(dat);delay(1);void writeweek() /lcd写星期write(0x8c,tablewtime5%100);write(0x8d,tablewtime5%101);write(0x8e,tablewtime5%102);void writetime() / 在lcd上显示时间write(0x81,2);write(0x82,0);write(0x83,tabletime6/10);write(0x84,tabletime6%10);write(0x85,-);write(0x86,tabletime4/10);write(0x87,tabletime4%10);write(0x88,-);write(0x89,tabletime3/10);write(0x8a,tabletime3%10);write(0xc1,tabletime2/10);write(0xc2,tabletime2%10);write(0xc3,:);write(0xc4,tabletime1/10);write(0xc5,tabletime1%10);write(0xc6,:);write(0xc7,tabletime0/10);write(0xc8,tabletime0%10);void writenao()/在lcd上显示闹钟uchar i;for(i=0;naozhongi;i+)write(0x80+i,naozhongi);write(0xc4,tablenaoshi/10);write(0xc5,tablenaoshi%10);write(0xc6,:);write(0xc7,tablenaofen/10);write(0xc8,tablenaofen%10);write(0xcd,naostatestate);4.5 按键程序按键程序主要是设置日期时间的按键的程序,这是一个中断程序,每当按下这个按键就会触发一次外部中断。其次按键程序还包括了上调下调时间的程序和闹钟键的程序。上调下调时间程序的流程图如下。图4-1 上调下调时间按键流程图上调下调时间按键程序源码如下:uchar key(uchar shu,uchar max,uchar min) / 设置时间上调下调函数uchar flag;if(jia=0)delay(60);if(jia=0)+shu;if(shu=max)shu=min;tr1=1;switch (m)case 0:break;case 1: time6=shu;break;case 2: time4=shu;break;case 3: time3=shu;break;case 4: time5=shu;break;case 5: time2=shu;break;case 6: time1=shu;break;case 7: time0=shu;break;switch (nao1)case 0:break;case 1:naoshi=shu;break;case 2:naofen=shu;break;case 3:state=shu;break;while(!jia)writecom(0x0c);if(count2=100)flag=1;count2=0;if(flag=1)if(count2=20) count2=0; shu+; if(shu=max) shu=min; switch (m)case 0:break;case 1: time6=shu;break;case 2: time4=shu;break;case 3: time3=shu;break;case 4: time5=shu;break;case 5: time2=shu;break;case 6: time1=shu;break;case 7: time0=shu;break;switch (nao1)case 0:break;case 1:naoshi=shu;break;case 2:naofen=shu;break;case 3:state=shu;break; if(nao1=0) /将设置的数据显示writetime();writeweek();if(m=0)writenao(); if(jian=0)delay(60);if(jian=0)shu-;if(shu=min-1)shu=max-1;tr1=1;switch (m)case 0:break;case 1: time6=shu;break;case 2: time4=shu;break;case 3: time3=shu;break;case 4: time5=shu;break;case 5: time2=shu;break;case 6: time1=shu;break;case 7: time0=shu;break;switch (nao1)case 0:break;case 1:naoshi=shu;break;case 2:naofen=shu;break;case 3:state=shu;break;while(!jian)writecom(0x0c);if(count2=100)flag=1;count2=0;if(flag=1)if(count2=20) count2=0; shu-; if(shu=min-1) shu=max-1; switch (m)case 0:break;case 1: time6=shu;break;case 2: time4=shu;break;case 3: time3=shu;break;case 4: time5=shu;break;case 5: time2=shu;break;case 6: time1=shu;break;case 7: time0=shu;break;switch (nao1)case 0:break;case 1:naoshi=shu;break;case 2:naofen=shu;break;case 3:state=shu;break; if(nao1=0)writetime();writeweek();if(m=0)writenao();tr1=0;count2=0;flag=0;th1=56;tl1=56;return shu; 设置时间按键的流程图如下:图4-2 设置时间按键流程图设置时间按键的程序源码(外部中断):void int0() interrupt 0 / 中断函数控制时间调节delay(70);if(se

温馨提示

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

评论

0/150

提交评论