




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
测控系统原理与设计课程设计报告课题:基于单片机的多功能数字钟设计班级 测控1082班 学号 1081203204 指导教师 淮阴工学院电子与电气工程学院2011年12月一 显示模块选择方案方案一: 采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,与液晶相比,耗电及体积大与液晶相比,耗电及体积大,所以也不用此种作为显示。方案二: 采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,省了很多麻烦,所以在此设计中采用LCD液晶显示屏。1电路设计最终方案决定综上各方案所述,对本次设计方案选定:采用AT89S52作为主控制系统;DS1302提供时钟;LCD液晶显示屏作为显示。电路设计框图如下所示DS1822温度模块LCD液晶显示屏显示模块AT89S52主控制模 块 键盘模块DS1302时钟模块图1 系统原理图2、 AT89S52单片机介绍 AT89S52 具有以下标准功能:8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图 2 单片机引脚图VCC : 电源 GND: 地P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2的触发输入(P1.1/T2EX),具体如下表所示。表1AT89S52 P1口第二功能表脚号第二功能P1.0T2(定时器/计数器 T2 的外部计数输入),时钟输出P1.1T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX DPTR)时,P2 口送出高八位地址P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p2 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表所示。表2 AT89S52 P3口第二功能表脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断 0)P3.3INT0(外部中断 0)P3.4T0(定时器 0 外部输入)P3.5T1(定时器 1 外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST: 复位输入。晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在 flash 编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从 0000H 到 FFFFH 的外部程序存储器读取指令,EA 必须接 GND。为了执行内部程序指令,EA 应该接 VCC。在 flash 编程期间,EA 也接收 12 伏 VPP 电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。二 总体电路1钟电路原理及说明(1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。DS1302的控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0,位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表.2为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。(2) DS1302的控制字节:DS1302控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出命令字节的格式如图所示.表 3命令字节格式 D7 D6 D5 D4 D3 D2 D1 D0 1 R/c A4 A3 A2 A1 A0 R/w(3) 数据输入输出(I/O):在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 (4) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 2测量模块的设计DS1822是一种用一根信号线与一根返回线来实现互连通信的集成电路芯片。采用这种芯片构成的微型局域网系统具有建网速度快、成本低的特点,非常适合现场应用。一线数字温度计芯片DS1822就是DALLAS公司推出的系列一线总线产品之一,它支持DALLAS触摸接口,遵循一线协议,并可以与处理器进行双向数字通信,同时性价比也很高,是一种使用起来非常方便的经济型温度传感器。DS1822内部电路的核心是一个直接数字输出的温度传感器。它可将55125 范围内的温度值按9位、10位、11位、12位的分辨率进行量化,且以上的分辨率都包括一个符号位,因此对应的温度量化值分别是0.5、0.25、0.125、0.0625,即最高分辨率为0.0625,工作电压范围为3.05.5。(1) DS1822 的测温原理 用DS1822一线式数字温度芯片测量温度的原理如图所示。它没有采用传统的转换原理,如逐次逼近法、双积分式和算术等,而是运用了一种将温度直接转换为频率的时钟计数法,计数时钟由温度系数很低的振荡器产生,因而非常稳定;而计数的闸门周期则由温度系数很高(即对温度非常敏感)的振荡器来决定。 斜坡累加器 预置 比较器 置顶低温度系统振荡器 计数器置1/清零 =0 温度寄存器 计数器高温度系统振荡器停止 =0图 3 温度测量的原理框图 计数器中的预置值以55时的计数值为基准,在闸门开放计数期间,每当计数值达到0,则温度寄存器就加,温度寄存器中的预置值也以55的测量值为基准。同时计数器的预置值还与斜坡累加器电路有关,该电路用于补偿振荡器对温度的抛物线特性,因此还要用时钟脉冲针对这个非线形校正预置值作计数操作,直至计数值达到0为止,如果此时闸门还未关闭,则再重复计数过程。斜坡累加器补偿了振荡器对温度的非线形特性,从而可以获得较高的温度测量分辨率,改变相对于测温量化级的计数量大小即可获得不同的分辨率。(2) DS1822 的测温过程在测温时对DS1822进行操作的步骤如下:a. 初始化(READ ROM指令,代码33H),每次对DS1822进行操作之前都要对其进行初始化,主要目的在于确定温度传感器是否已经连接到单总线上。b. 查找DS1822(SEARCH ROM指令,代码FOH),该指令可使处理器通过排除法来辨别总线上的DS1822。c.匹配DS1822(MACTH ROM指令,代码55H),只有完全符合64位ROM序列的DS1822才能响应其后的指令,当然,单点测温时可以使用SKIP ROM(CC H)指令来跳过这一步。d.发送温度转换指令(CONVERT 指令代码44H),发送该指令后应查询总线上的电平,当电平为高时,温度转换完成。e.读取温度值(READ SCRTCHPAD指令代码BE H),将该指令发出后,就可从总线上读取表示温度的两字节的二进制数。整个测温过程中的第45步才是DS1822进行测温并将结果进行数字化转换和输出的过程。DS1822接收到转换命令(44H)将立刻实施温度转换,并将结果存储到16位便笺式存储器中,数据格式为符号位扩展的二进制补码,然后用读便笺式存储器命令(BE H)将所得数据顺序置于总线上,最低位在前,最高位定义为符号位以表示温度的正负。DS1822温度与数字输出典型值的对照表如表所列。表4 DS1822 温度与数字输出的典型值 温度() 数字输出(二进制) 数字输出|(十六进制) +1250000 0111 11011 0000 07D0 +850000 0101 0101 0000 0550 +25.6250000 0001 1001 0001 0191 +10.1250000 0000 1010 0010 00A2 +0.50000 0000 0000 1000 0008 00000 0000 0000 0000 0000 -0.51111 1111 1111 1000 FFF8 -10.1251111 1111 0101 1110 FF5E -25.6251111 1110 0110 1111 FE6F -551111 1100 1001 0000 FC90(3)电路图设计如图所示:图4 温度测量模块电路3示模块的设计如图5为LCD显示模块。图5 LCD液晶显示屏显示模块4模块电路设计闹铃功能是可以设置多个闹铃的。闹铃的持续时间为一分钟。可以手动按键关闭闹铃。闹铃电路模块如图所示:图 6 闹铃模块电路图三、硬件电路设计系统电路图图7 系统电路图1要单元电路的设计1.1机主控制模块的设计 AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。如下图所示:图8控制系统 1.2路模块的设计图.2-4示出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进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。图9 302的连接图四 软件设计1程序流程框图 当电路接入电源后,首先进行初始化。初始化完成后如果是反正实验显示屏会自动读取当前计算机时间,如果是实物电路则会却不显示零。这时通过按键进入子程序进行时间设置调整。 图10 流程图2程序流程图 子程序主要是对时间和闹铃时间进行设置调整。图11间及闹铃程序流程图五 软件调试1 roteus软件简介Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和数字电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和电路分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS软件的工作环境和一些基本操作。2键功能介绍:(1)按键功能由上而下依次为:1、 设置闹钟;2、 闹铃开关;4、当闹铃触发时按下停止闹铃(否则会在一分钟后停止)(2)置时间和闹铃时按键功能介绍1、 切换设置光标;2、设置光标对应处加1;3、保存设置信息返回主界面;4、不保存设置信息返回主界面。图12分布3真结果显示(1)上电后LED显示此时电路初始化完毕,并读取了计算机时间,此时闹铃默认为关。图13初始化完毕后显示图(2) 调节分钟按下时间设置键,首先显示分钟设置调整,按(2)键增加1。超过60则归零。图14分钟显示图(3)调节小时设置分钟完成后继续按下时间设置键怎会进入小时调整,同理按(2)键加一超过23则归零。图 15节小时显示图(4)调节日期同理设置日期,程序会根据月份进行归零。 :图16节提起显示图(5)调节月份同理调节月份,超过12则会归零。图17节月份显示图(6)调节年份年份显示会在初始化读取当前年份,按(2)键加一。图18节年份显示图4击闹铃开启键显示:在主程序下按(3)键,开启或关闭闹铃,按(2)键进图闹铃时间设置。闹铃时间设置如同程序数字钟时间设置,不再赘述。(第一行最左小图标为闹铃图标。)图19铃开启显示六 总结时间过的好快,转眼间,为期一周的课程设计就结束了。通过这一周的课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。设计,给人以创作的冲动。但凡涉及设计都是一件良好的事情,因为她能给人以美的幻想,因为她能给人以金般财富,因为她能给人以成就之感,更为现实的是她能给人以成长以及成长所需的营养,而这种营养更是一种福祉,一辈子消受不竭享用不尽。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。最后,感谢庄立运老师对我的细心的指导,正是由于庄老师的细心的辅导和他提供给我们的参考资料,使得我的课程设计能够顺利的完成,同时感谢所以在课程设计过程中给于我帮助过的老师和同学,非常感谢七 参考文献1 谢自美电子线路设计实验测试M武汉:华中理工大学出版社,1992.2 何立民单片机应用系统设计M北京:北京航空航天大学出版社,1993.3 楼然笛单片机开发M北京:人民邮电出版社,1994.4 付家才单片机控制工程实践技术M北京:化学工业出版社 2004.3.5 李光才单片机课程设计 实例指导M 北京:北京航空航天大学出版社 2004.6 朱定华单片机原理及接口技术实验M北京:北方交通大学出版社2002.11.7 刘湘涛江世明单片机原理与应用M. 北京:电子工业出版社,2006.附录:仿真程序#includereg51.H#includeINTRINS.H#define uchar unsigned char #define uint unsigned int#define TIME (0X10000-50000)#define FLAG 0XEF/闹钟标志/引脚连接图sbit rst=P35;sbit clk=P34;sbit dat=P33;sbit rs=P15;sbit rw=P16;sbit e=P17;sbit DQ=P14; /温度输入口sbit P3_2=P32;sbit ACC_7=ACC7;/全局变量及常量定义uchar i=20,j,time116;uchar alarm2,time215,time3;uchar code Day=31,28,31,30,31,30,31,31,30,31,30,31;/12个月的最大日期(非闰年)/音律表uint code table1=64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217;/发声部分的延时时间uchar code table2=0x82,1,0x81,0xf4,0xd4,0xb4,0xa4,0x94,0xe2,1,0xe1,0xd4,0xb4,0xc4,0xb4,4,0;/LCD自建字uchar code tab=0x18,0x1b,5,4,4,5,3,0,0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,/年0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,/月0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00;/日 /*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/闹钟中用的全局变量uchar th1,tl1;uchar temp_data2=0x00,0x00; / 读出温度暂放bit flag;/18b20存在标志位/*11微秒延时函数*/delay(uint t)for(;t0;t-);/*18B20复位函数*/ow_reset(void)uchar i;DQ=1;_nop_();_nop_();DQ=0; /delay(50); / 550usDQ=1; / delay(6); / 66usfor(i=0;i0x30;i+)if(!DQ)goto d1;flag=0;/清标志位,表示ds1820不存在DQ=1;return;d1:delay(45); /延时500usflag=1;DQ=1;/置标志位,表示ds1820存在 /*18B20写命令函数*/向 1-WIRE 总线上写一个字节void write_byte(uchar val)uchar i;for (i=8; i0; i-) /DQ=1;_nop_();_nop_(); DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ=val0x01; /最低位移出delay(6); /66usval=val/2; /右移一位DQ=1;delay(1); /*18B20读1个字节函数*/从总线上读取一个字节uchar read_byte(void)uchar i;uchar value=0;for (i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ=0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ=1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80;delay(6); /66usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset(); /总线复位if(!flag)/判断ds1820是否存在?若ds18b20不存在则返回return;/write_byte(0xCC); / Skip ROM/write_byte(0x44); / 发转换命令/delay(70);write_byte(0xCC); /发Skip ROM命令write_byte(0xBE); /发读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位ow_reset();write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令/*温度数据处理函数*/work_temp()uchar n=0,m; if(temp_data1127)/负温度求补码temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);n=1;time213=ditabtemp_data00x0f+0;time212=.;m=(temp_data00xf0)4)|(temp_data10x0f)4);/if(n)m-=16;time29=m/100+0;time211=m%100;time210=time211/10+0;time211=time211%10+0;if(time29=0)/最高位为0时都不显示time29=0x20;if(n)/负温度时最高位显示-time29=-;if(time210=0)if(n)time210=-;time29=0x20;elsetime210=0x20;if(time211=0time213=0)time211=time212=0x20;delay1ms(uchar time)/延时1msuchar i,j;for(i=0;itime;i+)for(j=0;j250;j+);/LCD驱动部分enable()rs=0;rw=0;e=0;delay1ms(3);e=1;write2(uchar i)P0=i;rs=1;rw=0;e=0;delay1ms(2);e=1;write1(uchar data *address,m)uchar i,j;for(i=0;im;i+,address+)j=*address;write2(j);/LCD显示lcdshow()P0=0XC;/显示器开、光标关enable();P0=0x80;/写入显示起始地址enable();write1(time1,16);P0=0xc1;/写入显示起始地址enable();write1(time2,15);/自建字zijianzi()uchar i;P0=0x40;enable();for(i=0;i32;i+)write2(tabi);delay1ms(2);/DS1302读写子程序write(uchar address)uchar i;clk=0;_nop_();rst=1;_nop_();for(i=0;i8;i+)dat=address1;_nop_();clk=1;address=1;clk=0;uchar read()uchar i,j=0;for(i=0;i8;i+)j=1;_nop_();clk=0;_nop_();if(dat)j|=0x80;_nop_();clk=1;return(j);/部分显示数据初始化timestart()time11=time113=time28=time29=time210=0x20,time214=0;time16=1,time19=2,time112=3,time12=2,time13=0;time114=W,time22=time25=:;write(0xc1);alarm0=read();rst=0;write(0xc3);alarm1=read();rst=0;write(0xc5);time10=read();rst=0;/读取时间readtime()uchar i,m,n;write(0x8d);/读取年份m=read();rst=0;time14=m/16+0x30;time15=m%16+0x30;write(0x8b);/读取星期m=read();rst=0;time115=m+0x30;for(i=7,n=0x89;i11;i+=3,n-=2)/读取月份和日期write(n);m=read();rst=0;time1i=m/16+0x30;time1i+1=m%16+0x30;for(m=0,i=0,n=0x85;i7;i+=3,n-=2,m+)/读取时,分,秒write(n);timem=read();rst=0;time2i=timem/16+0x30;time2i+1=timem%16+0x30;time0() interrupt 1 using 1i-;if(i=0)if(j!=0)j-; i=20;TH0=TIME/256,TL0=TIME%256;/闹钟部分intime1() interrupt 3TH1=th1,TL1=tl1;P3_2=!P3_2;showalarm()uchar i,j,a,b,n;ET1=1;for(j=0;j6;j+)i=0;while(1)a=table2i;if(a=0)break;b=a0xf;a=4; if(a=0)TR1=0;goto D1;a=(-a)1)/2;TH1=th1=table1a/256,TL1=tl1=table1a%256;TR1=1;D1:dob-;for(n=0;n3;n+)readtime();lcdshow();P2=0xf7;if(P2=0xe7)delay1ms(100);if(P2=0xe7)TR1=0;ET1=0;return;while(b!=0);i+;TR1=0; ET1=0;/根据日期的变动自动调整星期uchar setweek()uchar i=5,j,n;j=(time140xf)*10+(time150xf);n=j/4;i=i+5*n;n=j%4;if(n=1)i+=2;else if(n=2)i+=3;else if(n=3)i+=4;j=(time170xf)*10+(time180xf);if(j=2)i+=3;else if(j=3)i+=3;else if(j=4)i+=6;else if(j=5)i+=1;else if(j=6)i+=4;else if(j=7)i+=6;else if(j=8)i+=2;else if(j=9)i+=5;else if(j=11)i+=3;else if(j=12)i+=5;if(n=0)if(j2)i+;j=(time1100xf)*10+(time1110xf);i+=j;i%=7;if(i=0)i=7;return(i);/设置时间settime()uchar i=0x85,year,month,day,n;time26=time27=0x30,time114=time115=0x20;lcdshow();while(1)P0=0xe;/显示器开、光标开enable();P0=i;/定光标enable();P2=0xf7;if(P2!=0XF7)delay1ms(100);/延时0.1s去抖动if(P2!=0XF7)j=7;if(P2=0X77)i+=3;if(i=0x8e)i=0xc2;else if(i0xc5)i=0x85;else if(P2=0xb7)year=(time140xf)*10+(time150xf);month=(time170xf)*10+(time180xf);day=(time1100xf)*10+(time1110xf);if(i=0x85)year+;if(year99)year=0;if(year%4)!=0)if(month=2day=29)day=28;else if(i=0x88)month+;if(month12)month=1;if(dayDaymonth-1)day=Daymonth-1;if(month=2(year%4)=0)day=29;else if(i=0x8b)day+;if(dayDaymonth-1)if(month=2(year%4)=0)if(day29)day=1;if(month!=2)day=1;else if(i=0xc2)n=(time200xf)*10+(time210xf);n+;if(n23)n=0;time20=n/10+0x30;time21=n%10+0x30;elsen=(time230xf)*10+(time240xf);n+;if(n59)n=0;time23=n/10+0x30;time24=n%10+0x30;time14=year/10+0x30;time15=year%10+0x30;time17=month/10+0x30;time18=month%10+0x30;time110=day/10+0x30;time111=day%10+0x30;lcdshow();else if(P2=0xd7)write(0x8c);write(time140xf)*16+(time150xf);rst=0;write(0x8a);write(setwee
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学毕业论文致谢词9篇
- 2025年安全生产第二季度工作总结参考(二篇)
- 毕业论文致谢7篇
- 10.2(4)《等腰三角形》说课稿 2024-2025学年鲁教版(五四制)数学七年级下册
- 2025临时用工合同协议书范本
- 2025年车辆买卖合同范本
- 病房新医疗设备安装与调试技术方案
- 东北区高标准农田建设专项方案
- 2025年眼科眼部疾病诊断与治疗综合考试答案及解析
- 码头防风防汛设施强化建设方案
- 第三、四章-证据的分级、来源与检索课件
- 《计算机系统结构(第二版)》配套教学课件
- 胰十二指肠切除术课件
- 风险分级管控责任清单(市政道路工程)
- 职业技术学院学生退费申请表
- (临床治疗)继发性甲旁亢课件
- UNIT 1 LESSON 1 LIFESTYLES课件第一课时
- 投标文件标书采购类
- 传媒公司解约合同模板
- 陆上石油天然气长输管道建设项目初步设计安全专篇
- 工作人员轮岗交流动员会上的讲话
评论
0/150
提交评论