版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最新基于mcs51单片机的电子万年历设计毕业汇编成绩:成绩:江西科技师范大学毕业设计(论文)题目(中文):基于MCS51的电子万年历的设计(英文):ThedesignoftheelectroniccalendarbasedonMCS51院(系):通信与电子学院专业:电子信息工程姓名:兰小玲学号:20122623指导教师:宗文军2016年4月22日目录基于MCS51的电子万年历的设计摘要:随着现今世界信息化时代和经济的快速发展的来临,各式各样的小型智能家电产物陆续出现在我们的生活中。日历是人们不可或缺的日常用品。但一般日历都是纸制的,使用不便,寿命不长。电子万年历采用智能电子控制和显示技术,改善了纸制日历的缺陷。本设计以AT89C51单片机为核心,构成单片机主控制电路,结合DS1302时钟芯片和DS18B20温度芯片,完成时间的自动调整和掉电保护,全部信息用液晶显示。时间、日期调整由三个按键来实现,并可对闹铃开关进行设置。日历能显示年、月、日以及星期、时、分、秒。关键词:电子万年历
51单片机
时钟芯片
温度芯片
液晶显示器
第一章引言跟着微电子技术和超大范围集成电路技术的不停进步,家用电子产物不光种类日益丰硕,还变得加倍经济实用,单片微型计算机体积小、性价比高、功能强、可靠性高等独有的特点,在各个范畴得到了广泛普遍。电子万年历是一种非常广泛的日常计时工具,数字电子钟已经越来越流行,特别适用于车站、广场以及办公,还可用于家庭居室。LED数字显示的电子钟显示清晰直观、走时精准、能夜视,还能够延伸出其他功能。功能也越来越齐全,除了公历年、月份、日期、时分秒、礼拜显示及闹铃。但通过我们对各类电子钟的不停观察,总结发现目前市场的电子钟都出现一些不足之处,例如:时钟不精确、产物本钱太高、无环境温度显示等,这都给人们的使用带来了一些不便。为此设计了一种功能周全、计时精确、本钱便宜的基于MSC51的电子万年历。1.1研究背景与意义当今社会的电子技术可谓是发展迅速,特别是随着大规模或者超大集成电路的出现,给人类学习、工作、娱乐、以及生活、都带来了本质性的改变。尤其是单片机的应用产物已经进入了每家每户。电子万年历给人类带来了许多方便。利用单片机制作的的电子万年历其编程灵活,便于功能扩展,高精度等特点,而且它走时精准、显示清晰,很是受大众欢迎。通过单片机设计的电子万年历,能够用软件编程进行功能的调整和改进,促使其可以精准显示年、月、日、时辰、礼拜的同时,还可以有许多其他功能。例如:设置闹钟、语音报时、显示温度等有一定的实用性,同时体积小、方便使用、方便携带,当然,还有其成本不高、计时准确、性能稳定、更新周期也短,维护方便等优点,至此、探索电子万年历有着非常现实的意义,同时也具有很大的实用价值。1.2电子万年历的发展现状现今,电子万年历技术已经进入了优化-家庭-环境的团队关系的阶段之间,它向着超微型、超高效以及集成电路的微型化方向成长,并为电子万年历上的集中控制奠基了根本。目前,市场上出售的电子万年历类别繁多,其中大致是基于单片机技术的电子系统。它们通常包括输入脉冲电路、单片机、晶振和复位电路、外部存储器电路和LED显示电路等构成。现今,电子万年历基本上是用于计时、自动报警、定时、时间查询以及自动控制。由于单片机技术以及数字集成电路技术的成长和高端的石英技术,使得如今的电子万年历系统具有体积小、耗电少、计时精确、机能稳定、维护方便、走时精准、携带方便等长处。其他,现今的市场上也有现成的数字万年历集成电路芯片买,而且价格实惠、用起来也很方便。1.3电子万年历的优势它是一种非常普遍的平常计时工具,它可以对年、月份、日期、时、分、秒来计时。它是采用数字电路设计的,以51系列单片机为核心,通过LCD液晶显示器来进行显示,能够同时显示阳历或是农历、年、月份、日刻、时、分、秒、礼拜、温度等内容。而且有可调整日期和时间的功能。像定时自动报警、按时自动响铃、时间程序自动控制、定时广播、自动开闭路灯、定时开关烘箱、通断动力设备、甚至种种定时电器的自动应用等,但是所有这些,都是以钟表数字化为基础的。所以,探索万年历以及扩大它的应用,有着非常重要的现实意义。第二章、系统中主要芯片介绍2.1工作原理和电路设计框图电子万年历电路,它的内部是由主控制芯片AT89C51、时钟器件DS1302、温度传感器DS18B20、LCD12864液晶显示屏及键盘扫描电路组成。电子万年历配闹钟就是运用单片机加上一个时钟元件DS1302以及数个与门芯片组成一个可调整年、月份、日期、时刻、分秒,以及能够获取当前时刻的一个电路和闹钟功能。实现我们平常生活中的日历的作用。由于电路的硬件设计程序复杂,本电路采用89c51单片机作为控制核心,它具有在线编程功能,低功耗,可以在3V超低压工作;时钟电路由DS1302提供,它是一种高机能、低损耗、带RAM的实时时钟电路,它可以对年、月份、日刻、时、分、秒等来计时,还有闰年补偿特点,工作电压为2.5V-5.5V。通过三线接口与CPU进行同步通信,并可通过突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个用来临时存放数据的RAM寄存器。可产生年、月份、日期、时刻、分、秒。以及通过与门芯片和按键开关来实现年、月、日、时、分、秒的调节。具体框架结构图如下:2.2系统概述
本次设计电路是以AT89C51的最小系统为控制核心,时钟电路由高精度低功耗的DS1302提供,采用了三线接口与CPU进行同步通信,输入部分就是采用的4个独立按键S1、S2S3、S4。显示部分采用的是LCD12864液晶显示器,D0~D7口与单片机P0口相连。2.3主要器件的结构及其特性AT89C51的管脚说明AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。
特性概述:AT89C51提供以下标准功能:4k
字节Flash
闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。/EA:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。ds1302的管脚说明
VCC1是后备电源,而VCC2是主电源。当主电源关闭时,还可以维持时钟继续工作。ds1302是通过VCC1或VCC2之间更大的一方来提供电源。当VCC2≥VCC1+0.2V时,VCC2给ds1302提供电源。当VCC2小于VCC1时,VCC1给ds1302提供电源。X1和X2是振荡源,需要再接一个32.768kHz的晶振。RST是复位/片选端,通过把RST输入驱动置“1”来开启全部数据的接送。RST输入2种特点:第一,RST接通控制逻辑,允许地址/命令序列送到移位寄存器;第二,RST提供中止单字节或者是多字节数据的输送方法。当RST为“1”时,所有的数据输送便会被初始化,可以对ds1302执行操作。若在输送过程中RST置为“0”,就会中止这次数据输送,I/O管脚改为高阻态。上电工作后,在VCC≥2.5V之前,RST必须保持“0”。仅当在SCLK为“0”时,才能够把RST置为“1”。I/O是串行数据输入输出端(双向),SCLK是时钟输入端。ds1302的寄存器:ds1302包括了12个寄存器,当中有7个寄存器与日历、时钟有联系,存放的数据位是BCD码形式。而且,ds1302也有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器以及跟RAM相关的寄存器等。时钟突发寄存器能够一次性顺序读写,除充电寄存器之外的所有寄存器内容。5、ds1302的管脚特点:5.ds1302的控制字:6、ds1302的控制字节控制字节的最高有效位(位7)必须是逻辑1,若它为0,就无法把数据写到ds1302中,位6为1时说明存取RAM数据\若为0,就说明存取日历时钟数据;位5至位1指示操作单元的地址;最低有效位(位0)若为0,说明要执行写操作,为1说明要执行读操作,控制字节都是从最低位开始输出。当控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入ds1302,数据输入从低位开始。同理,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出ds1302的数据,读数据时也是从低位0至高位7。ds18b20的管脚说明
ds18b20是普遍使用的温度传感器,其传感器的体积小,而且成本低,抗干扰性强,精度也高的特点。ds18b20的存储器、含有高速暂存器RAM跟可电擦除RAM,可电擦除RAM里又含有温度触发器TH与TL,以及一个配置寄存器。ds18b20能够用外部电源VDD,或者是使用芯片里面的寄生电源。1、ds18b20的基本特性通用电压范畴较广,电压范畴:3.0到5.5V,在寄生电源模式下,能够用数据线供电。特别的单线接口方式,ds18b20在跟微处理器连接时、只需要一条口线就能实现微处理器与ds18b20的两向通讯。温度范畴是-55摄氏度到+125摄氏度,当温度是-10到+85摄氏度时精度是±0.5摄氏度可编程的分辨率是9~12位,其相对应的可分辨温度有:0.5摄氏度、0.25摄氏度、0.125摄氏度以及0.0625摄氏度,能够进行高精度测温。负压特性:当电源极性接反,芯片并不会由于发热而有所损坏,却无法正常使用。2、ds18b20的外观与内部构造它包括四部分:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。ds18b20管脚有:(1)DQ是数字信号输入/输出端;(2)GND是地;(3)VDD是外接供电电源其输入端(当接寄生电源时,VDD接地)。LCD12864液晶显示屏带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
基本参数(1)低电源电压(VDD:+3.0--+5.5V)(2)显示分辨率:128×64点(3)内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)(4)内置128个16×8点阵字符(5)2MHZ时钟频率(6)显示方式:STN、半透、正显(7)驱动方式:1/32DUTY,1/5BIAS(8)视角方向:6点(9)背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10(10)通讯方式:串行、并口可选(11)内置DC-DC转换电路,无需外加负压(12)无需片选信号,简化软件设计(13)工作温度:0℃-+55℃,存储温度:-20℃-+60℃管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3~5V电源正3VO-对比度(亮度)调整4RS(CS)H/LRS=”H”,表示DB7~DB0为显示指令;RS=”L”,表示DB7~DB0为显示数据;5R/W(SID)H/LR/W=”H”,E=”H”,数据读到DB7~DB0;R/W=”L”,E=”H到L”,DB7~DB0的数据写到IR或DR;6E(SCLK)H/L使能信号7~14DB0~DB7H/L均是三态数据线15PSBH/LH:8位或4位并口方式;L:串口方式16NC-空脚17RESETH/L复位端,低电平有效;18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)20KVSS背光源负端模块接口说明:
*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。模块有并行和串行两种连接方法(时序如下):
1、8位并行连接时序图
MPU写资料到模块MPU从模块读出资料由于此设计是并行连接,所以串行连接时序图不作介绍。用户指令集(指令表如下:)指令指令码说明执行时间(540kHz)RSRWDB7DB6DB5DB4DB3DB2DB1DB0消除显示0000000001将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”4.6ms地址归位000000001X设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容4.6ms进入点设定00000001I/DS指定在资料的读取与写入时,设定游标移动方向及指定显示的移位72us进入点设定:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。显示状态开/关0000001DCBD=1;整体显示ONC=1;游标ONB=1;游标位置ON72us游标或移位控制000001S/CR/LXX设定游标的移动与显示的移动控制位元;这个指令并不改变DDRAM的内容;72us功能设定00001DLX0REXXDL=1;(必须设为1)RE=1;扩充指令集动作RE=0;基本指令集动作72us备注:
当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即要等待前一个指令确实执行完成。2“RE”为基本指令集与扩充指令集的选择控制位,当变更“RE”位后,往后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,不需每次重设“RE”位。主要单元电路设计3.1单片机主控制模块、采用AT89C51芯片,它能以3V的超低电压工作,同时也与MCS-51系列单片机完全兼容,该芯片内部存储器为8KBROM存储空间,同时具有89C51的功能,且具有在线编程可擦除技术。其主要工作原理:P1口有两个作用,一个接上DS1302的AD0-AD7(双向地址/数据复用总线),控制着DS1302的8位并行数据的地址和数据的传输,另接上液晶的DB0-DB7(数据总线)控制着向液晶发送8位并行数据。P1.1接上DS1302的单数据线,发送并接受数据,地址的操作。0为命令,P2.3口控制液晶读/写选择端,1为读命令,0为写操作,P2.2口控制液晶使能信号。对DS1302、P2.0口控制DS1302的片选信号的输入(CS1),P2.1口控制DS1302的片选信号的输入(CS2),P1.4接入闹钟,到设置时间到了,buzzer响应。复位电路:由按键复位和上电复位两部分组成。通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路、保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态。按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。此次设计采用12MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可。3.2时钟电路模块的设计图示为DS1302的管脚排列,其中VCC1为后备电源,VCC2为主电源,在主电源关闭的情况下,也能保持时钟的连续运行,DS1302由VCC1或VCC2两者中的较大者供电,当VCC2大于VCC1+0.2V时,VCC2给DS1302供电,当VCC2小于VCC1时候VCC1供电。X1和X2是振荡源,外接32.768KHz晶振,RST是复位片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段,当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作,如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O管脚变为高阻态,上电运行时,在VCC大于等于2.5V之前,RST必须保持低电平,中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端,SCLK始终是输入端。3.3温度采集模块温度采集部分是使用了数字式温度传感器DS18B20,接地和接电源的部分完成后,就是其中的第二脚连接到单片机的P2.6脚,并且接上一个上拉电阻。3.4显示部分模块带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。3.5按键部分按键部分如上图所示,本设计总的用了4个按扭开关作为键盘,其中一个是切换界面键,(一共三个界面、一是主界面;显示当前时间以及温度。二是闹钟设置;三是生日提醒。)第二个是Next键;第三个是调整加键(可调整年、月、周、日、时、分、秒等等)、第三个也是是闹钟开关切换键。3.6闹钟模块闹钟模块的接线如下图所示。以下蜂鸣器电路中,使用PNP三极管进行驱动控制,设计中使用的是直流蜂鸣器,当P1.4输出低电平时,蜂鸣器鸣叫。(由于蜂鸣器为感性原件,可以在两端并接一个二极管来起到泄放作用。)、单片机程序部分初始化初始化LCD12864、DS1302、DS18B20允许LCD显示?允许LCD显示?关闭LCD显示读DS18B20的温度值和DS1302的时间值YesNO关闭LCD显示读DS18B20的温度值和DS1302的时间值将读出的值显示到将读出的值显示到LCD12864上扫描按键扫描按键生日设定闹钟设定时间设定生日设定闹钟设定时间设定4.1系统主程序流程图开始DS1302初始化DS1302初始化从DS1302读出数据,放入RAM从DS1302读出数据,放入RAM调用显示子程序调用显示子程序LCD12864显示时间LCD12864显示时间扫描按键扫描按键设置时间设置时间数据写回DS1302保存数据写回DS1302保存返回主菜单返回主菜单4.2显示时间子程序流程图开始DS18B20初始化DS18B20初始化从从DS18B20中读出数据,放入RAMLCD模块显示温度LCD模块显示温度返回主菜单返回主菜单4.3温度子程序流程图开始开始AT89C51初始化AT89C51初始化选择闹钟、生日选择闹钟、生日从从AT89C51中读出数据,放入RAMLCD12864显示闹钟、生日LCD12864显示闹钟、生日按键扫描设置闹钟、生日设置闹钟、生日数据写入数据写入AT89C51保存返回主界面返回主界面4.4设置闹钟、设定生日的子程序流程图4.5程序编写#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineportP0//DB0~DB7数据口/*********12864IO************/sbite=P2^2;//使能sbitrw=P2^3;//读写sbitrs=P2^4;//数据/命令sbitcs2=P2^1;//片选sbitcs1=P2^0;sbitbusy=P0^7;//检测忙/*********DS18B20IO********/sbitDQ=P2^5;sbitbuzz=P1^4;//定义ds1302使用的IO口//sbitDSIO=P1^0;sbitRST=P1^2;sbitSCLK=P1^1;//定义按键IO//sbitmenu=P3^0;sbitnext=P3^1;sbitup=P1^6;sbitdown=P1^7;//DS1302时钟初始化2015年1月23日星期五2点00分00秒。////存储顺序是秒分时日月周年,存储格式是用BCD码//ucharTIME[7]={0,0,0x14,0x23,0x01,0x05,0x15};ucharcodeREAD_RTC_ADDR[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};ucharcodeWRITE_RTC_ADDR[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};ucharalram_set1[]={0,0,0};ucharalram_set2[]={0,0,0};ucharalram_set3[]={0,0,0};ucharbirthday_set[]={0,0,0,0,0};uchardatadisdata[5];ucharmin,hour,day,mon;uinttvalue;//温度值uchartflag;//温度正负标志uchardisplay_type;ucharalram_operate;ucharbirthday_operate;ucharmenu_num=0;uinttimer=0,S=0;ucharq_data,bai_data,shi_data,ge_data;ucharcodehz[][32]={/*--文字:年--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x20,0x18,0xC7,0x44,0x44,0x44,0x44,0xFC,0x44,0x44,0x44,0x44,0x04,0x00,0x00,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*--文字:月--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00,0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00},/*--文字:日--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00},/*--文字:星--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00,0x00,0x00,0x44,0x42,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x41,0x40,0x00,0x00},/*--文字:期--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x04,0xFF,0x24,0x24,0x24,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,0x88,0x48,0x2F,0x09,0x09,0x19,0xAF,0x48,0x30,0x0F,0x02,0x42,0x82,0x7F,0x00,0x00},/*--文字:当--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x40,0x42,0x44,0x58,0x40,0x40,0x7F,0x40,0x40,0x50,0x48,0xC6,0x00,0x00,0x00,0x00,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00},/*--文字:前--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x08,0x08,0xE8,0x29,0x2E,0x28,0xE8,0x08,0x08,0xC8,0x0C,0x0B,0xE8,0x08,0x08,0x00,0x00,0x00,0xFF,0x09,0x49,0x89,0x7F,0x00,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00},/*--文字:温--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00},/*--文字:度--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00}};ucharcodeweek[][32]={/*--文字:日--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00},/*--文字:一--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*--文字:二--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00},/*--文字:三--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*--文字:四--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00},/*--文字:五--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x02,0x42,0x42,0x42,0xC2,0x7E,0x42,0x42,0x42,0x42,0xC2,0x02,0x02,0x00,0x00,0x40,0x40,0x40,0x40,0x78,0x47,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x00},/*--文字:六--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x2C,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x01,0x02,0x04,0x18,0x60,0x00,0x00}};ucharcodealram[][32]={/*--文字:闹--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0xF8,0x01,0x22,0x20,0x22,0x2A,0xF2,0x22,0x22,0x22,0x22,0x02,0xFE,0x00,0x00,0x00,0xFF,0x00,0x00,0x1F,0x01,0x01,0x7F,0x09,0x11,0x0F,0x40,0x80,0x7F,0x00,0x00},/*--文字:钟--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x20,0x10,0x2C,0xE7,0x24,0x24,0x00,0xF0,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,0x01,0x01,0x01,0x7F,0x21,0x11,0x00,0x07,0x02,0x02,0xFF,0x02,0x02,0x07,0x00,0x00},/*--文字:开--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x80,0x00,0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00},/*--文字:关--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x10,0x11,0x16,0x10,0x10,0xF0,0x10,0x10,0x14,0x13,0x10,0x00,0x00,0x00,0x81,0x81,0x41,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x41,0x41,0x81,0x81,0x00},/*--文字:设--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9E,0x82,0x82,0x82,0x9E,0xA0,0x20,0x20,0x00,0x00,0x00,0x00,0x3F,0x90,0x88,0x40,0x43,0x2C,0x10,0x28,0x46,0x41,0x80,0x80,0x00},/*--文字:置--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x17,0x15,0xD5,0x55,0x57,0x55,0x7D,0x55,0x57,0x55,0xD5,0x15,0x17,0x00,0x00,0x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x40,0x40,0x40,0x00}};ucharcodebirthday[][32]={/*--文字:生--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x80,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00},/*--文字:日--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00},/*--文字:提--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x10,0x10,0x10,0xFF,0x10,0x90,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x04,0x44,0x82,0x7F,0x01,0x80,0x42,0x3A,0x42,0x82,0xFE,0x92,0x92,0x92,0x82,0x00},/*--文字:醒--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0xF2,0x12,0xFE,0x12,0xFE,0x12,0xF2,0x00,0x00,0xBE,0x2A,0xEA,0x2A,0x3E,0x00,0x00,0xFF,0x4A,0x49,0x48,0x49,0x49,0xFF,0x00,0x42,0x49,0x49,0x7F,0x49,0x49,0x40,0x00},/*--文字:祝--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x08,0x08,0x89,0xEE,0x98,0x00,0x7E,0x42,0xC2,0x42,0x42,0xC2,0x42,0x7E,0x00,0x00,0x02,0x01,0x00,0xFF,0x80,0x43,0x20,0x18,0x07,0x00,0x00,0x3F,0x40,0x40,0x78,0x00},/*--文字:您--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x20,0x10,0x08,0xFC,0x23,0x10,0x88,0x67,0x04,0xF4,0x04,0x24,0x54,0x8C,0x00,0x00,0x40,0x30,0x00,0x77,0x80,0x81,0x88,0xB2,0x84,0x83,0x80,0xE0,0x00,0x11,0x60,0x00},/*--文字:快--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0xE0,0x00,0xFF,0x10,0x20,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,0x00,0x01,0x00,0x00,0xFF,0x00,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x41,0x81,0x81,0x00},/*--文字:乐--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0xE0,0x9C,0x84,0x84,0x84,0xF4,0x82,0x82,0x83,0x82,0x80,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x06,0x40,0x80,0x7F,0x00,0x00,0x02,0x04,0x08,0x30,0x00,0x00}};ucharcodewelcome[][32]={/*--文字:欢--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x04,0x24,0x44,0x84,0x64,0x9C,0x40,0x30,0x0F,0xC8,0x08,0x08,0x28,0x18,0x00,0x00,0x10,0x08,0x06,0x01,0x82,0x4C,0x20,0x18,0x06,0x01,0x06,0x18,0x20,0x40,0x80,0x00},/*--文字:迎--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x40,0x40,0x42,0xCC,0x00,0x00,0xFC,0x04,0x02,0x00,0xFC,0x04,0x04,0xFC,0x00,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,0x4F,0x44,0x42,0x40,0x7F,0x42,0x44,0x43,0x40,0x00},/*--文字:使--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x80,0x60,0xF8,0x07,0x04,0xE4,0x24,0x24,0x24,0xFF,0x24,0x24,0x24,0xE4,0x04,0x00,0x00,0x00,0xFF,0x00,0x80,0x81,0x45,0x29,0x11,0x2F,0x41,0x41,0x81,0x81,0x80,0x00},/*--文字:用--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00,0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00},/*--文字:万--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x04,0x04,0x04,0x04,0x04,0xFC,0x44,0x44,0x44,0x44,0x44,0xC4,0x04,0x04,0x04,0x00,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00},/*--文字:年--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x20,0x18,0xC7,0x44,0x44,0x44,0x44,0xFC,0x44,0x44,0x44,0x44,0x04,0x00,0x00,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*--文字:历--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x42,0xC2,0x02,0x00,0x80,0x60,0x1F,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x40,0x80,0x40,0x3F,0x00,0x00},/*--文字:制--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x40,0x50,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x3E,0x02,0x02,0xFF,0x12,0x22,0x1E,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00},/*--文字:作--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x80,0x60,0xF8,0x07,0x40,0x30,0x0F,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0x00,0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x08,0x08,0x00,0x00},/*--文字:人--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x00},/*--文字:兰--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x20,0x20,0x21,0x22,0x2C,0x20,0x20,0x20,0x28,0x24,0x23,0x20,0x20,0x00,0x00,0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00},/*--文字:小--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x20,0x40,0x80,0x00,0x00,0x08,0x04,0x03,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x01,0x0E,0x00},/*--文字:玲--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x04,0x84,0x84,0xFC,0x84,0x84,0x40,0x20,0x10,0x0C,0x23,0xCC,0x10,0x20,0x40,0x00,0x20,0x60,0x20,0x1F,0x10,0x10,0x00,0x01,0x09,0x11,0x21,0xD1,0x0D,0x03,0x00,0x00},/*--文字:祝--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x08,0x08,0x89,0xEE,0x98,0x00,0x7E,0x42,0xC2,0x42,0x42,0xC2,0x42,0x7E,0x00,0x00,0x02,0x01,0x00,0xFF,0x80,0x43,0x20,0x18,0x07,0x00,0x00,0x3F,0x40,0x40,0x78,0x00},/*--文字:您--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x20,0x10,0x08,0xFC,0x23,0x10,0x88,0x67,0x04,0xF4,0x04,0x24,0x54,0x8C,0x00,0x00,0x40,0x30,0x00,0x77,0x80,0x81,0x88,0xB2,0x84,0x83,0x80,0xE0,0x00,0x11,0x60,0x00},/*--文字:生--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x80,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00},/*--文字:活--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x10,0x60,0x02,0x8C,0x00,0x20,0x24,0x24,0x24,0xFE,0x22,0x23,0x22,0x20,0x20,0x00,0x04,0x04,0x7E,0x01,0x00,0x00,0xFE,0x42,0x42,0x43,0x42,0x42,0xFE,0x00,0x00,0x00},/*--文字:愉--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0xE0,0x00,0xFF,0x10,0x30,0xC8,0x54,0x52,0xD1,0x12,0x94,0x08,0xD0,0x10,0x00,0x01,0x00,0x00,0xFF,0x00,0x00,0xFF,0x12,0x92,0xFF,0x00,0x5F,0x80,0x7F,0x00,0x00},/*--文字:快--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/{0x00,0xE0,0x00,0xFF,0x10,0x20,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,0x00,0x01,0x00,0x00,0xFF,0x00,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x41,0x81,0x81,0x00}};ucharcodenum[][16]={{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},//"0",0{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},//"1",1{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},//"2",2{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},//"3",3{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},//"4",4{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},//"5",5{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},//"6",6{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},//"7",7{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},//"8",8{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00}//"9",9};ucharcodesign[][16]={{0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00},//"!",0{0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},//":",1{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00},//"Q",2/*--文字:---*//*--宋体12;此字体下对应的点阵为:宽x高=8x16--*/{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01},//-//3{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},////4{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00}//.//5};voidnormal_display();voidalram_set();voidbirthday_display();voiddelay_ms();voiddelay_ms(ucharx){ uchari; while(x--)for(i=0;i<120;i++);}/***********12864程序部分******************///判断是否忙voidcheck(){rs=0; rw=1; //读e=1; port=0x00; e=1; while(busy); e=0;}//写指令voidsendcommand(ucharcommand){check(); rs=0; //指令 rw=0; //写e=0; port=command; e=1; e=0; //写入指令}//写数据voidwritedata(uchardat){check(); rs=1; //数据 rw=0; port=dat; e=1; e=0;}//选屏幕0--全屏,1--左屏,2--右屏;voidselect(uintn){switch(n) { case0:cs1=0;cs2=0;break; //低电平选中case1:cs1=0;cs2=1;break; //cs1左屏 case2:cs1=1;cs2=0;break; //cs2右屏 }}//页voidsetpage(ucharpage){page=page&0x07;page=page|0xb8;sendcommand(page);}//列voidsetcolumn(ucharcolumn){column=column&0x3f;column=column|0x40;sendcommand(column);}//起始行voidsetline(ucharline){line=line&0x3f; line=line|0xc0; sendcommand(line);}//屏幕开关显示0--关,1--开;voidseton(uintn){n=n|0x3e;sendcommand(n);}//清屏0--全屏,1--左屏,2--右屏;voidclear(uintn){uchari,j;select(n);for(i=0;i<8;i++){setpage(i); setcolumn(0); for(j=0;j<64;j++) writedata(0); //置0清空}}//初始化voidinit(){check();seton(1);clear(0);setline(0);}//显示汉字16*16显示voidshow16(ucharpage,ucharcolumn,ucharscreen,ucharmethod,uchar*str){uchari,j;select(screen);j=0;setpage(page);setcolumn(column);for(i=0;i<16;i++){if(method==1)writedata(~str[j++]); //method为显示方式。当等于1时,反白。elsewritedata(str[j++]); }setpage(page+1);setcolumn(column);for(i=0;i<16;i++){if(method==1)writedata(~str[j++]);elsewritedata(str[j++]); }} //显示数字8*8显示voidshow8(ucharpage,ucharcolumn,ucharscreen,ucharmethod,uchar*str){uchari,j;select(screen);j=0;setpage(page);setcolumn(column);for(i=0;i<8;i++){if(method==1)writedata(~str[j++]);elsewritedata(str[j++]); }setpage(page+1);setcolumn(column);for(i=0;i<8;i++){if(method==1)writedata(~str[j++]);elsewritedata(str[j++]); }}voidwelcome_display(){show16(0,0,1,0,welcome[0]);show16(0,16,1,0,welcome[1]);show16(0,32,1,0,welcome[2]);show16(0,48,1,0,welcome[3]);show16(0,0,2,0,welcome[4]);show16(0,16,2,0,welcome[5]);show16(0,32,2,0,welcome[6]);show16(2,0,1,0,welcome[7]);show16(2,16,1,0,welcome[8]);show16(2,32,1,0,welcome[9]);show8(2,48,1,0,sign[1]);show16(2,0,2,0,welcome[10]);show16(2,16,2,0,welcome[11]);show16(2,32,2,0,welcome[12]);show8(4,0,1,0,sign[2]);show8(4,8,1,0,sign[2]);show8(4,16,1,0,sign[1]);show8(4,24,1,0,num[2]);show8(4,32,1,0,num[0]);show8(4,40,1,0,num[1]);show8(4,48,1,0,num[2]);show8(4,56,1,0,num[2]);show8(4,0,2,0,num[6]);show8(4,8,2,0,num[2]);show8(4,16,2,0,num[3]);show16(6,0,1,0,welcome[13]);show16(6,16,1,0,welcome[14]);show16(6,32,1,0,welcome[15]);show16(6,48,1,0,welcome[16]);show16(6,0,2,0,welcome[17]);show16(6,16,2,0,welcome[18]);show8(6,32,2,0,sign[0]);}voiddisplayinit(){show8(0,0,1,0,num[2]);show8(0,8,1,0,num[0]);show16(0,32,1,0,hz[0]);show16(0,0,2,0,hz[1]);show16(0,32,2,0,hz[2]);show8(2,16,1,0,sign[1]);show8(2,40,1,0,sign[1]);show16(2,8,2,0,hz[3]);show16(2,24,2,0,hz[4]);show16(4,0,1,0,hz[5]);show16(4,16,1,0,hz[6]);show16(4,32,1,0,hz[7]);show16(4,48,1,0,hz[8]);show8(4,0,2,0,sign[1]);//以下数字均为反白显示。}/***********DS1302程序部分*****************/voidDs1302Write(ucharaddr,uchardat){ ucharn; RST=0; _nop_(); SCLK=0;//先将SCLK置低电平。 _nop_(); RST=1;//然后将RST(CE)置高电平。 _nop_(); for(n=0;n<8;n++)//开始传送八位地址命令 { DSIO=addr&0x01;//数据从低位开始传送 addr>>=1; SCLK=1;//数据在上升沿时,DS1302读取数据 _nop_(); SCLK=0; _nop_(); } for(n=0;n<8;n++)//写入8位数据 { DSIO=dat&0x01; dat>>=1; SCLK=1;//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国中鱼料市场调查研究报告
- 2025年中国PP斜纹片市场调查研究报告
- 2026 儿童早期智力开发课件
- 2026年幼儿园美丽香囊的
- 监事会与监事会成员履职考核协议
- 职业经理人职业发展服务合同
- 2026年幼儿园泼水歌音乐
- 内容创作与手工艺品推广合同协议
- 2026年连连看幼儿园
- 2026 儿童创新思维培养课件
- 基层医疗老年综合评估规范与流程
- 2025-2030中国光刻胶行业应用状况与投资前景展望报告
- 燃气工程施工课件
- 陕西西工大附中2025届高三化学试题二模试题含解析
- 河南省南阳市内乡县2024-2025学年七年级上学期期末考试英语试题(含答案含听力原文无音频)
- 招聘合同模板2
- DL-T5588-2021电力系统视频监控系统设计规程
- 微专题-电磁感应中的“导体棒+电感线圈”模型(WORD可编辑)
- 雅马哈电吹管知识讲座
- 热电阻检定标准
- 酒店明住宿清单(水单)
评论
0/150
提交评论