本科毕业设计论文--实训信号发生器的设计与制作实训报告.doc
信号发生器的设计与制作实训报告系 别:信息工程系专 业:电气工程及其自动化班 级:1303班姓 名:卢润智学 号:201325010334指导教师:陈海峰目录1.单片机模块的介绍- 1 -1.1AT89C51- 1 -1.1.1主要性能参数:- 1 -1.1.2功能特性概述:- 2 -1.1.3AT89C51方框图- 3 -1.1.4引脚功能说明- 3 -1.1.5时钟振荡器:- 5 -1.1.6AT89C51的极限工作参数- 6 -1.2DS1307- 6 -1.2.1特点- 7 -1.2.2和单片机连接- 7 -1.2.3 I2C时序:- 7 -1.3DS18B20- 7 -1.3.1工作原理- 8 -1.3.2概述- 8 -1.3.3应用范围- 9 -1.3.4接线方法- 9 -1.3.5特点- 9 -1.4OLED显示屏- 10 -1.4.1技术功能- 10 -1.4.2发光原理- 11 -1.4.3特点- 12 -2.心得体会- 13 -3.实物功能图- 14 -4.附录- 15 -4.1零件清单- 15 -4.2主要程序代码- 15 -基于DS1307的多功能时钟系统摘要:以AT89C51/AT89C52单片机为控制核心,通过实时时钟芯片DS1307和数字温度传感器DS18B20构成了一个多功能的数字时钟系统。本报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。系统0.96寸OLED作为显示器,具有实时时间与日历显示、环境温度显示、按键调时、闹铃定时等功能。软件程序采用均采用C语言编写,便于移植与升级。关键词:实时时钟 单片机AT89C8X系列 DS1307 DS18B20 OLED引言:目前家用的数字电子钟,多数只能显示小时、分钟等信息,功能单一,而且大都采用LED数码管作为显示器件,功耗大,不能令消费者满意。为此,我开发了一款多功的数字式电子钟,它可以显示年、月、日、小时、分钟等时间信息,同时可以显示环境的温度信息。还具有按键调时、设定闹铃等功能,而且通过一块3.18V的备用电池,在单片机断电后让时钟芯片DS1307独立工作,因此每次给单片机上电即可显示当前时间,无需调整。时钟采用OLED作为显示器,界面友好,功耗低。- 20 -1.单片机模块的介绍1.1AT89C51AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。1.1.1主要性能参数:·与MCS-51产品指令系统完全兼容·4k字节可重擦写Flash闪速存储器·1000次擦写周期·全静态操作:0Hz24MHz·三级加密程序存储器·128×8字节内部RAM·32个可编程IO口线·2个16位定时计数器·6个中断源·可编程串行UART通道·低功耗空闲和掉电模式1.1.2功能特性概述: AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个IO 口线,两个16位定时计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。1.1.3AT89C51方框图1.1.4引脚功能说明·Vcc:电源电压·GND:地·P0 口:P0 口是一组8 位漏极开路型双向IO 口,也即地址数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FIash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。·P1口:P1是一个带内部上拉电阻的8位双向IO口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。FIash编程和程序校验期间,P1接收低8位地址。·P2口:P2是一个带有内部上拉电阻的8位双向IO口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8 位地址的外部数据存储器(如执行MOVXRI 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。·P3口:P3口是一组带有内部上拉电阻的8 位双向IO 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。·ALEPROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的l6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的DO 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。·PSEN)输出是外部程序存储器的读选通信号,当AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。·EAVPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。·XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。·XTAL2:振荡器反相放大器的输出端。1.1.5时钟振荡器:AT89C5l 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图5。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10F。用户也可以采用外部时钟。采用外部时钟的电路如图5右图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。 石英晶体时:C1,C230pF±10pF 外部时钟驱动电路陶瓷滤波器:C1,C240pF±10pF内部振荡电路 图5由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。1.1.6AT89C51的极限工作参数极限参数工作温度 -55 to +125储藏温度 -65 to +150任一脚对地电压 -1.0V to +7.0V最高工作电压 6.6V直流输出电流 15.0 Ma1.2DS1307是一款低功耗,具有56字节非失性RAM的全BCD码时钟日历实时时钟芯片,地址和数据通过两线双向的串行总线的传输,芯片可以提供秒,分,小时等信息,每一个月的天数能自动调整。并且有闰年补偿功能1.2.1特点可对秒,时,分,每月的天数,月份,每周的天数进行计数,并具有闰年补偿功能。计年上限2100。56字节非失性的RAM,两线串行接口,可编程方波输出,自动掉电检测和切换电路,在电池备份模式下,功耗小于500nA,工业级的工作温度: -40 到80,8脚DIP和SOIC封装1.2.2和单片机连接DS1307典型接线如图1所示。BT1为备用电池,3V,7脚为方波输出,通常把该脚接到单片机的能够产生电平变化中断的引脚,如设置成每秒输出1个方波,则会每秒中断一次,读取时间用以显示。图1中的R1、R2、R4是必须的上拉电阻。1.2.3 I2C时序:DS1307 在 IIC 总线上是从器件,地址固定为”11010000” DS1307 写操作 TWI 被控接收模式 主控器件按如下顺序将数据写入到DS1307 寄存器或内部RAM 中:第一步.START 信号第二步.写SLA+W(0xd0)字节,DS1307 应答(ACK)第三步.写1 字节内存地址(在以下第四步写入的第一字节将存入到DS1307 内该地址处),DS1307应答。第四步.写数据(可写多个字节,每一字节写入后DS1307 内部地址计数器加一,DS1307 应答)第五步.STOP 信号1.3DS18B20DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。1.3.1工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。2 1.3.2概述DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。1: 技术性能描述、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 、测温范围 55+125,固有测温误差(注意,不是分辨率,这里之前是错误的)1。、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。、工作电源: 3.05.5V/DC (可以数据线寄生电源) 、在使用中不需要任何外围元件、 测量结果以912位数字量方式串行传送 、不锈钢保护管直径 6 、适用于DN1525, DN40DN250各种介质工业管道和狭小空间设备测温、 标准安装螺纹 M10X1, M12X1.5, G1/2”任选 、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。DS18B20+ 和 Maxim Integrated 信息1 Manufactured by Maxim Integrated, DS18B20+ is a 温度传感器.1.3.3应用范围该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域。轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。汽车空调、冰箱、冷柜、以及中低温干燥箱等。供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制。1.3.4接线方法面对着扁平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁!同时,接反也是导致该传感器总是显示85的原因。实际操作中将正负反接,传感器立即发热,液晶屏不能显示读数,正负接好后显示85。1.3.5特点独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55 ° C至+125 。华氏相当于是-67 ° F到257华氏度 -10 ° C至+85 ° C范围内精度为±0.5 ° C温度传感器可编程的分辨率为912位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、消费电子产品温度计、或任何热敏感系统描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数)。由于DS18B20是一条口线通信,所以中央微处理器与DS18B20只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。主要首先提供以下功能命令之一: 1 )读ROM, 2 )ROM匹配, 3 )搜索ROM, 4 )跳过ROM, 5 )报警检查。这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH和TL都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH,TL指令以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。所有数据的读,写都是从最低位开始。1.4OLED显示屏有机电激发光二极管由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。1.4.1技术功能有机发光二极管 (OLED)显示器越来越普遍,在手机、媒体播放器及小型入门级电视等产品中最为显著。不同于标准的液晶显示器,OLED 像素是由电流源所驱动。若要了解 OLED 电源供应如何及为何会影响显示器画质,必须先了解 OLED 显示器技术及电源供应需求。本文将说明最新的 OLED 显示器技术,并探讨主要的电源供应需求及解决方案,另外也介绍专为 OLED 电源供应需求而提出的创新性电源供应架构。背板技术造就软性显示器 高分辨率彩色主动式矩阵有机发光二极管 (AMOLED) 显示器需要采用主动式矩阵背板,此背板使用主动式开关进行各像素的开关。液晶 (LC) 显示器非晶硅制程已臻成熟,可供应低成本的主动式矩阵背板,并且可用于 OLED。许多公司正针对软性显示器开发有机薄膜晶体管 (OTFT) 背板制程,此一制程也可用于 OLED 显示器,以实现全彩软性显示器的推出。不论是标准或软性 OLED,都需要运用相同的电源供应及驱动技术。若要了解 OLED 技术、功能及其与电源供应之间的互动,必须深入剖析这项技术本身。OLED 显示器是一种自体发光显示器技术,完全不需要任何背光。OLED 采用的材质属于化学结构适用的有机材质。 OLED 技术需要电流控制驱动方法 OLED 具有与标准发光二极管 (LED) 相当类似的电气特性,亮度均取决于 LED 电流。若要开启和关闭 OLED 并控制 OLED 电流,需要使用薄膜晶体管 (TFT)的控制电路。进阶节能模式可达到最高效率和任何电池供电的设备一样,只有在转换器以整体负载电流范围的最高效率进行运作时,才能达到较长的电池待机时间,这对于 OLED 显示器尤其重要。OLED 显示器呈现全白时会耗用最大的电源,对于其它任何显示色彩则电流相对较小,这是因为只有白色需要所有红、绿、蓝子像素都全亮。举例来说,2.7 吋显示器需要 80mA 电流来呈现全白影像,但只需要 5mA 电流显示其它图标或图形。因此,OLED 电源供应需要针对所有负载电流达到高转换器效率。为了达到如此的效率,需要运用进阶的节能模式技术来减少负载电流,以降低转换器切换频率。由于这是透过电压控制震荡器 (VCO) 完成,因此能够将可能的 EMI 问题降至最低,并且能够将最低切换频率控制在一般 40kHz 的音讯范围以外,这可避免陶瓷输入或输出电容产生噪音。在手机应用中使用这类装置时,这特别重要,而且可简化设计流程。按发光特性来说白光不是耗电最大,是以亮度值来决定耗电量的。如红,蓝,绿亮度值是10的一起亮时会产生30亮度值的白光。因此将红,蓝,绿亮度值调成3.3合成一个10的白光值(理论值)。从LED或OLED来说人眼看到同样的亮度,蓝光耗电最大。1.4.2发光原理有机发光显示技术由非常薄的有机材料涂层和玻璃基板构成。当有电荷通过时这些有机材料就会发光。OLED发光的颜色取决于有机发光层的材料,故厂商可由改变发光层的材料而得到所需之颜色。有源阵列有机发光显示屏具有内置的电子电路系统因此每个像素都由一个对应的电路独立驱动。OLED具备有构造简单、自发光不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广等优点,技术提供了浏览照片和视频的最佳方式而且对相机的设计造成的限制较少。1.4.3特点OLED为自发光材料,不需用到背光板,同时视角广、画质均匀、反应速度快、较易彩色化、用简单驱动电路即可达到发光、制程简单、可制作成挠曲式面板,符合轻薄短小的原则,应用范围属于中小尺寸面板。显示方面:主动发光、视角范围大;响应速度快,图像稳定;亮度高、色彩丰富、分辨率高。工作条件:驱动电压低、能耗低,可与太阳能电池、集成电路等相匹配。适应性广:采用玻璃衬底可实现大面积平板显示;如用柔性材料做衬底,能制成可折叠的显示器。由于OLED是全固态、非真空器件,具有抗震荡、耐低温(-40)等特性,在军事方面也有十分重要的应用,如用作坦克、飞机等现代化武器的显示终端。2.心得体会这次课程设计让我们学会了如何利用学过的知识去做设计,并且让我们了解到设计时需要注意的东西。我们的设计时以AT89C51/AT89C52单片机为控制核心,通过实时时钟芯片DS1307和数字温度传感器DS18B20构成了一个多功能的数字时钟系统。本报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。系统0.96寸OLED作为显示器,具有实时时间与日历显示、环境温度显示、按键调时、闹铃定时等功能。软件程序采用均采用C语言编写,便于移植与升级。目前家用的数字电子钟,多数只能显示小时、分钟等信息,功能单一,而且大都采用LED数码管作为显示器件,功耗大,不能令消费者满意。为此,我开发了一款多功的数字式电子钟,它可以显示年、月、日、小时、分钟等时间信息,同时可以显示环境的温度信息。还具有按键调时、设定闹铃等功能,而且通过一块3.18V的备用电池,在单片机断电后让时钟芯片DS1307独立工作,因此每次给单片机上电即可显示当前时间,无需调整。时钟采用OLED作为显示器,界面友好,功耗低。3.实物功能图4.附录4.1零件清单1:STC89C5x(x>2)(4元).2:DS1307/ 32768Hz/电池。晶体(IIC)(2.5元)3:12M晶振,按键(0.5元)。4:蜂鸣器,三极管(0.5元)。5:温度传感器(DS181520)(3.5-7元)6:光敏电阻+PCF8591(9元)。7:OLED.(SP2)(20-30元)4.2主要程序代码#include "stc89c52.h"#include "OLED.h"#include "IIC.h"#include "DS1307.h"#include "DS18B20.H"unsigned char nian,yue,ri,shi,fen,miao,xingqi,num;unsigned char time=10;unsigned int a1;unsigned char b1,c1;extern unsigned char Temr2;float wendu;sbit feng = P41;sbit K1 = P36;/ÄÖÖÓÍ£Ö¹sbit K2=P35;/-sbit K3=P34;/+bit baojing;sbit led = P14;void delay(unsigned int a)unsigned int b;unsigned char c;for(b=a;b>0;b-) for(c=110;c>0;c-);void OLEDdisplay();void keyscan();void xingqixianshi();float wenduxianshi()unsigned int a;float c;a=Temr1;a<<=8; a=a|Temr0; c=a*0.0625; return(c);void main() IT0=1; EX0=1; EA=1; IIC_Init();Write_Control(1); Write_CALENDER(15,12,28,20,54,12,3);Write_Add(0xd0,0x08,7);Write_Add(0xd0,0x09,30);DS18B20_Init();WriteBuffer(0,100,0x3f); IIC_Start();OLED_Init();FillScreen(0x00);while(1)StartTemConv(); ReadTemp( ) wendu=wenduxianshi();a1=wendu*100;b1=a1/100;c1=a1%100;OLEDdisplay(); xingqixianshi();if(baojing) feng=0;keyscan();else feng=1;void OLEDdisplay() PrintChar(1,80,b1); /ÕûÊý WriteChar_6x8(1,96,'.');PrintChar(1,102,c1); /СÊý PrintChar(5,30,shi); WriteChar_6x8(5,48,':'); PrintChar(5,54,fen); WriteChar_6x8(5,72,':'); PrintChar(5,78,miao); WriteChar_6x8(1,0,'2'); WriteChar_6x8(1,6,'0'); PrintChar(1,12,nian); WriteChar_6x8(1,30,'-'); PrintChar(1,36,yue); WriteChar_6x8(1,48,'-'); PrintChar(1,54,ri); WriteChinese16x16(1,32,"ÐÇÆÚ");void X2NT0_ISR() interrupt 0 nian=DS1307_ReadYEAR(); yue=DS1307_ReadMONTH(); ri=DS1307_ReadDAY(); shi=DS1307_ReadHOUR(); fen=DS1307_ReadMINUTE(); miao=DS1307_ReadSECOND(); xingqi=DS1307_ReadWeekDay();Read_CALENDER();if(DS1307_ReadHOUR()=Read_Add(0xd0,0x08)&&(DS1307_ReadMINUTE()=Read_Add(0xd0,0x09) baojing=1;else baojing=0;void keyscan()if(!K1)delay(5);if(!K1)while(!K1); feng=1;/ if(!K2)/ / delay(5);/ if(!K2)/ / num+;/ while(!K2);/ / if(num=1)/ / EX0=0;/ WriteChar_6x8(); / WriteChar_6x8();/ delay(5);/ / if(num=2)/ / / WriteChar_6x8(); / WriteChar_6x8();/ delay(5);/ / if(num=3)/ / / WriteChar_6x8(); / WriteChar_6x8();/ delay(5);/ / if(num=4)/ / / WriteChar_6x8(); / WriteChar_6x8();/ delay(5);/ / if(num=5)/ / / WriteChar_6x8(); / WriteChar_6x8();/ delay(5);/ / if(num=6)/ / / WriteChar_6x8(); / WriteChar_6x8();/ delay(5);/ / if(num=7)/ / num=0;/ EX0=1;/ delay(5);/ /if(num!=0)/ / delay(5);/ if(num!=0)/ / while(1)/ / if(num=1)/ / nian+;/ if(nian=100)/ / nian=0;/ / / / / / /void xingqixianshi() int i,j=0; xingqi=DS1307_ReadWeekDay(); for(i = 32+xingqi*32; i< 48+xingqi*32 i+) SetPos(2,63+j); WriteDat(font16x16_codei); j+; j=0; for(i = 48+xingqi*32; i< 64+xingqi*32 i+) SetPos(3,63+j); WriteDat(font16x16_codei); j+;