欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    [理学]单片机课程设计万年历.doc

    • 资源ID:1986686       资源大小:457.50KB        全文页数:32页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [理学]单片机课程设计万年历.doc

    洛阳理工学院 万年历洛阳理工学院万年历系 别:计算机与信息工程系班 级:z070401学 号:z07040137姓 名:姚克迪指导老师:李蒙2009-6-18目录摘要3第一章 绪论41.1单片机发展概况41.2单片机原理及应用简介4第二章 系统方案52.1 系统功能52.2 系统总体方案5第三章 系统硬件设计63.1 硬件设计框图63.2 硬件电路原理图63.3 芯片简介63.31 80C52芯片63.32 实时时钟芯片DS130273.33 DS18B20单总线数字温度计83.34Lcd1602液晶显示器:9第四章 系统软件设计104.1 主程序的设计104.2 各功能模块的设计114.21 显示子程序114.22 温度检测和处理子程序114.23 时间、日历校正子程序114.24闹钟设置、闹铃响起子程序124.25 延时子程序12第五章 PROTEUS 软件仿真125.1仿真过程125.2仿真结果13心得体会14参考文献15附录116摘要本设计是一个基于MCS-51单片机实现的万年历。我选用的是单片机80C52来实现电子万年历的功能。该电子万年历能够成功实现时钟运行,调整,显示年月日时分秒及星期,温度等信息。并且可以动态的现实信息。该电子万年历使用12MHZ晶振与单片机80C52相连接,通过软件编程的方法实现了以24小时为一个周期,同时显示小时、分钟和秒的要求。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用点阵动态扫描显示单片机内部处理的数据。同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。在该设计与制作中我选用了单片机80C52,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, 单片机80C52的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。因此,采用单片机8052原理制作的电子万年历,不仅仅在原理上能够成功实现计时等功能,也更经济,更适用,更符合我们实际生活的需要,对我们大学生来说也更加有用。第一章 绪论1.1单片机发展概况随着大规模集成电路技术的发展,可以将CPU、RAM、ROM、定时器/计数器以及输入/输出(I/O)接口电路等计算机的主要部件集成在一块集成电路芯片上。这样组成的芯片级的微型计算机就是“单片微型计算机(Single Chip Microcomputer)”。由于单片机从功能和形态来说都是作为控制领域应用的要求而诞生的,并且发展到新一代80C51、M68HC11系列单片机时,在其中着力扩展了各种控制功能,如模/数(A/D)转换、脉宽调制(PWM)、计数器捕获/比较逻辑(PCA)、高速I/O口和WDT等,已突破了微型计算机的传统内容。所以更准确的叫法应是微控制器(Micro Controller Unit,MCU)。单片机的发展大致经历了三代:第一代:以1976年推出的MCS-48系列为代表,其主要的技术特征是将CPU和计算机外围电路集成到了一个芯片上,成为与通用CPU分道扬镳的标志。第二代:以MCS-的8051、8052为代表。主要技术特点是向外部接口电路扩展,以实现微控制器化。代表产品为Intel公司MCS-51,Motorola公司68HC05。第三代:以89C51系列单片机为代表,这个时期的产品以CMOS化为特色,以完善的单片机的控制功能为己任。89C51是80C51含EEPROM的产品。这两种单片机有两级或三级程序存储器保密系统,用以保护EPROM或EEPROM中的程序,以防止非法复制。近几年,单片机竞相采用Flash存储器。,它可以取代PROM、EPROM、OTP和EEPROM。利用Flash存储器可高速读/写的特点实现在系统编程ISP和在应用编程IAP。1.2单片机原理及应用简介随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术的最新发展之一是将CPU和外围芯片,如程序存储器、数据存储器、并行、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机(Single-Chip Microcomputer)。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业控制系统、数据采集系统、自动测试系统、万年历电子表等。单片机的出现,并在各个技术领域中得到如此迅猛的发展,与单片机构成计算机应用系统所形成的下述特点有关:1、单片机构成的应用系统有较大的可靠性。这些可靠性的获得除了依靠单片机芯片本身的高可靠性以及应用有最少的联接外,还可以方便地采用软、硬件技术。2、系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统,应用系统有较高的软、硬件利用系数。3、由于构成的应用系统是一个计算机系统,相当多的测、控功能由软件实现,故具有柔性特征,不须改变硬件系统就能适当地改变系统功能。4、有优异的性能、价格比。单片机是微型计算机的一个重要分枝,单片机是把中央处理器、随机存储器、只读存储器、定时器/计数器、并行接口接口、串行接口、A/D转换器等主要计算机部件,集中在一块集成电路芯片上。虽然只是一个芯片,但从功能上它就相当于一台完整的微机。随着科学技术的迅猛发展,单片计集成度高、体积小、运算速度快、功耗低、运行可靠、价格低廉等诸多优点,越来越显现出来。目前可以说单片机已经渗透到我们的生活的各个领域,在工业方面:像过程控制、数据采集,机电一体化、智能化仪器仪表,特别在军事武器控制方面尤为突出。在日常生活方面,我们使用彩电、洗衣机、电冰箱,录放机、VCD、照相机、手机、高级定时闹钟以及公共汽车上的报站器等等可以说举不胜举。把单片机的诞生称为计算机发展史上的一个重要里程碑并不过分。单片机的应用,使许多领域的技术水平和自动化程度大大提高。可以说当今世界正在经受一场以单片机技术为标志的新技术革命浪潮的冲击。人们需要掌握单片机知识,跨入单片机应用与开发领域的大门。我们作为理工科的大学生,学习单片机课程尤其显得越来越重要。第二章 系统方案2.1 系统功能LCD显示年、月、日、时、分、秒、星期、温度信息;用按键可以调整日期和时间、星期;可以设置闹铃时间,到时闹铃响起(演奏两只蝴蝶);2.2 系统总体方案系统以单片机为主控制器。时钟功能的实现方法是由单片机外部的DS1302实时时钟芯片获取时间然后把数据传到LCD显示,温度检测部分采用成品的数字温度传感器DS18B20,它将温度直接转换成单片机能识别的数字量信号,通过接口电路传给单片机,单片机把温度值传给LCD液晶显示模块显示出来。而闹钟是通过按键设置闹钟的时间、单片机判断是否到时,时间到后,闹铃响起。 第三章 系统硬件设计3.1 硬件设计框图该设计的硬件电路的总体框图如图1所示:Lcd正常显示日期、时间、星期、温度;时间设置时的一些显示;闹钟设置时的一些显示;单片机对1302、1802读写,对采集到的数据进行处理送lcd显示,并且响应按键时间,进行调整,判断闹钟是否该响起1302实时时钟按键调整时间、闹钟。采集温度闹钟时间到达闹铃响起图1硬件设计总体框图3.2 硬件电路原理图该万年历是以单片机80c52为核心来完成的。80C52完成年、月、日、星期、时、分、秒之间的转换,通过80C52的P0口与1602液晶显示屏进行命令和数据的传输。在P0口中接有上拉电阻,这是因为P0口为非准向I/O口,其内部输出三极管的集电极没有上拉电阻,是开路的,若不外接上拉电阻,就会造成P0口不能输出高电平。P2.0用于控制传送给LCD的是命令还是要显示的内容。P2.0为高电平表示传送的是要显示的内容,P2.0为低电平表示传送的是控制命令。P2.1用于控制LCD的读和写操作。高电平为读操作,低电平为写操作。P2.2为使能控制,控制LCD是否接受操作。高电平时允许读操作,由高电平变为低电平的过程中,允许写操作。温度传感器DS18B20用单总线接在80C52的P1.0口上,按单总线协议进行数据传输。键盘电路采用四个键,分别接到80C52的P2.4-P2.7口上。实时时钟DS1302的I/O口接到80C52的P1.7用于向80C52输入输出指令和数据。另外两条控制线接到P31.5、P1.6上用于控制DS1302的读写时序和复位信号的产生。 3.3 芯片简介3.31 80C52芯片80C52 是标准的40引脚双列直插式集成电路芯片,共有4个8位的并行双向口,计有32根输入/输出(I/O)口线。各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成,但是它们的性质和功能却不相同。引脚分布请参照单片机引脚图图3:P0.0P0.7 P0口8位双向口线(在引脚的3932号端子)。P1.0P1.7 P1口8位双向口线(在引脚的18号端子)。 P2.0P2.7 P2口8位双向口线(在引脚的2128号端子)。P3.0P3.7 P2口8位双向口线(在引脚的1017号端子)。 口管脚备选功能P3.0 RXD串行输入口P3.1 TXD串行输出口P3.2 /INT0外部中断0P3.3 /INT1外部中断1P3.4 T0定时器/计数器0外部输入P3.5 T1定时器/计数器1外部输入P3.6 /WR外部数据存储器写选通P3.7 /RD外部数据存储器读选通 图2 80C52引脚 图3 特殊功能表 80C52芯片引脚说明:VCC:运行和程序校验时加+5V的供电电压。VSS:接地P3口也可作为80C52的一些特殊功能口。如图4:P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。一般情况下,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000 H- FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 3.32 实时时钟芯片DS1302DS1302是串行接口的实时时钟芯片,它既提供实时时钟有把关键的数据位存放到RAM中。 其管脚图及内部结构和引脚功能表分别如图4和图5所示: 图4 1302管脚图及内部结构 图5 1302引脚功能表向DS1302写入数据时,数据应在时钟的下降沿发生变化,上升沿将数据写入DS1302的寄存器,读取数据时数据也在时钟下降沿变化,即在下降沿数据从移位寄存器输出,但当CLK时钟为正半周时I/O线为高组态,所以应在上升沿读取,否则将读出为FFH。通过把输入驱动置为高电平来启动所有的数据传送,输入有两种功能,首先接通控制逻辑,允许地址命令序列送入移位寄存器,其次提供了终止单字节或多字节数据的传送手段,当为高电平时所有的数据传送被初始化,允许对DS1302进行操作,如果在传送过程中置为低电平则会终止数据传送,并且I/O引脚变为高组态。上电运行时,在VCC大于等于2.5V之前,必须保持低电平,只有在SCLK为低电平时,才能将RST置为高电平。3.33 DS18B20单总线数字温度计1 DS18B20的引脚如图9:图6 DS18B20引脚GND接地、DQ数字输入输出、VDD可选的VDD、NC空引脚 。读写及温度变换所需的电源可以由数据线提供而不需要外部的电源。 因为每一个DS18B20都有自己唯一的序列号因此多个DS18B20可以同时存在同一条单线总线上。其测量的范围为-55到+125.增量值为0.5,以9位数字方式读出温度。在1秒内把温度转换成数字。2 DS1820的工作原理与1820的通信经过一个单线接口,在单线接口情况下,在ROM未定建立之前不能使用存储器和控制操作,主机必须首先提供五种ROM操作命令之一:读ROM、符合ROM、搜索ROM跳过ROM 告警ROM 。这些命令对每一器件的64位激光ROM部分进行操作,如果单线上有许多器件可以挑选出一个特定的器件,并给总线上的主机指示存在多少个器件及其类型,成功执行ROM操作序列后,可使用存储器和控制操作。主机可以提供6种存储器进和控制命令之一。一个操作命令指示1820完成温度测量该测量的结果放入高速暂存存储器,通过发出读暂存存储器内容的存储器命令可以读出此结果,每一温度告警触发器TH和孔构成一个字节的EEPROM,所有数据均以最低位在前的方式被读写。3.34Lcd1602液晶显示器: 它的内部结构及引脚图和引脚功能表分别如图7和图8所示:图 7 内部结构及引脚图图8 引脚功能表Lcd1602液晶显示器的初始化过程如下所示:第四章 系统软件设计4.1 主程序的设计图9 主程序流程图在多功能模块化程序设计中,主程序的作用是设置系统运行的一些初始状态及系统运行的环境,并将各种功能子程序按要求连接起来组成一个功能强大的系统。本系统主程序的流程图如图9所示。在本程序中,1602LCD初始化为:8位数据接口,两行显示,5×7点阵字符,显示开,关光标,光标移动为增量式。1602LCD的初始化已被写成一个函数LCD_INITIAL(),直接调用就可完成1602LCD的初始化。4.2 各功能模块的设计4.21 显示子程序图10 LCD显示流程图显示子程序的功能是将需要显示的内容送到LCD显示。显示子程序的流程图20所示。要显示某个字符,先要进行定位,即确定这个字符显示在LCD显的哪个位置,然后把这个字符的ASCII码送到LCD,LCD就会显示出该字符。1602LCD可显示两行、每行16个字符。每个字符的显示区都有一个地址码,第一行从00H开始到0FH对应第1个字符至第16个字符;第二行从40H开始到4FH对高应第1个字符至第16个字符。需要在哪个位置显示字符,先把那个位置的地址输给LCD,接着传送字符的ASCII码,就会在指定的位置上显示指定的字符。例如,要在第一行的第3个位置显示“A”,则先发送地址码02H,再发送41H(“A”的ASCII码),就会在LCD的第一行、第3个位置显示字符“A”。在LCD上显示的内容有两种情况:1字符,2数据。在单片机中,字符数据是以ASCII码的形式存储的,因此可把字符数据直接传送给LCD显示。对于数据量,则要先将其转换成对应的ASCII码,才能送往LCD显示。从数据量到相对应的ASCII码的转换方法有两种:1.先把数据量按位进行拆分,如“45” 拆分为“4”和“5”,然后分别转换为对应的ASCII码,再按顺序送入LCD上显示。2.找出两者之间的关系,列一个表,通过查表程序,直接转换为与之对应的ASCII码,再送入LCD显示。第一种方法适用性强,能转换的数据多,占用的存储空间少。第二种方法简单明了,但只能对少量、有限的数据进行转换,且占用的存储空间较多。因此选择了第1种方法。LED点阵显示中使用的是第二种方法。在点阵显示时在程序中加入字节左移的代码,可实现汉字滚屏显示。4.22 温度检测和处理子程序 由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。与DS18B20间的任何通迅都要从初始化时序开始, DS18B20的初始化时序如图15所示。主机发出复位脉冲后,最多在60us后要收到应答信号,否则说明DS18B20不存在或损坏。DS18B20转换后的温度值以2字节16位补码形式存放在高速暂存存储器的第1、2个字节里,高位在前,低位在后。所以读取温度时,要分两次进行。从DS18B20里读出的温度值并不时温度的实际值,要得出温度的实际值,还要再乘以0.0625。4.23 时间、日历校正子程序 本设计采用四个个键来校正日历、时间。一个“设置”键,用于选择显示的模式。一个移位键用于选择要校正的部分;一个“加1”键,在时钟校正时,每按一次,相应的部分加1;一个“减一”键,在时钟校正时,每按一次,相应的部分减1。当系统进入正常显示后,CPU就不停地测试是否有键按下,一但测到有某个键按下,就跳到相应的子程序,完成某项功能。若测试到“设置键”按下,d点阵不在现实信息。而LCD就转到日历、时间校正模式,年开始闪烁,在闪烁的过程中,CPU仍然测试是否有键按下。此时若没键按下,年就会不停地闪烁,如果测试到“加1键”或“减1键”按下,年份就会加1或减1,从而达到校正年的目的。在这种状态下,又测到移位键按下,就会转到月校正状态,其过程和年校正是一样的。在正常显示状态连续按移位键会在年月日星期时分秒正常显示之间循环。当设置键弹起后显示调整后的日历。按键如图11所示:图11 按键4.24闹钟设置、闹铃响起子程序闹钟设置子程序和时间设置程序差不多,按“增加”键相对应的位加一,按“减小“相应的位减一。而闹钟响起是一个判断程序,一旦判断符合设定的时间,闹铃响起。4.25 延时子程序本设计中有三个延时程序。一个是按键延时,作用是在调整日历、时间、闹钟时按下调整键后作短时间的延时,再显示日历、时间和温度。一个是温度延时,它主要是针对DS18B20的,在对DS18B20进行操作时进行延时,如对DS18B20进行初始化操作、读写操作、读取温度及温度转换都要用到延时。一个是点阵滚屏显示时用到的延时,作用是产生每行数据显示的时间间隔。第五章 PROTEUS 软件仿真5.1仿真过程1、仿真:打开Keil uVision2,建立工程,输入所编写的源程序并对程序进行编译,在软件的帮助下检查其中的错误并进行反复修改,知道编译正确后运行,生成相应的HEX文件,并进行保存,保存时给其命名,以便将来载入程序时容易找到。2、打开PROTEUS软件,并出画单片机电子万年历具体运行电路图。3、检查所画电路运行图,确保没有错误以后,在PROTEUS下对原理图进行加载Keil uVision2下的源程序。电路图如下图11所示:图12 万年历的电路图4、加载完成后,单击电路图框下的开始按钮,进行仿真,观察LCD显示器现实情况,此时LCD开始显示数字。点阵开始滚屏显示信息。按下设置键后点阵熄灭,LCD进入调整模式,连续按移位键会在年、月、日、星期、时、分、秒之间循环的调整。加、减键会使要调整的对象加一或减一。当使设置键弹起时,点阵重新滚屏显示信息,LCD显示调整后的日历、时间。5.2仿真结果通过在Keil uVision2下对源程序的编译,改正了其中的很多错误,然后运行,保证源程序的正确性。然后按原理图选择正确合理的电器元件,画出正确的电路图,加载源程序运行,顺利实现了单片机电子万年历的“年”、“月”、“日”、“星期”、“小时”、“分钟”、“秒”、“温度”的显示。该电子万年历的显示效果及电子万年历时间和日期的调节效果分别如图12和图13所示: 图13 运行结果 图14 闹钟设置 在调节部分,刚开始由于设置的按键的延时的时间太短,导致按一次键时数字加2,因此通过改变按键延时程序来增加延时的时间从而去除按键的抖动。可以达到每次加一的效果。心得体会在这两周的课设时间里,获益匪浅。好多平常没遇到的问题都出现了,好多没有学到的东西都知道了,于是就再看几遍课本,好多意想不到的方法找到了,于是就向别人学习,有时候真有柳暗花明的感觉,那或许就是做点小东西的自豪感吧!呵呵!不过学到的还不这些,例如Proteus的使用、keil c的使用等课外知识! 首先说说遇到的问题吧!设计一个万年历首先要有单片机吧!其次,要有个计时的东西!还真不知道这个东西,后来,上网上下点这方面的资料,才认识了ds1302芯片,这家伙开始还看不懂,怎么用呢?没办法!在上网找呗!于是,就下点它的pdf 芯片资料,这下算是有制服这家伙的法宝了,就一点一点的看呀!最后看懂了,呵呵,那会儿,挺高兴的。Lcd芯片、1802和1302一样,一点点解决的。最后是写程序,如何把这写繁琐、凌乱的东西写成程序,并能够成为一个有机的整体呢!从哪一时刻,就投入了程序的战斗之中了。在编程的过程中,才逐渐认识到首先写个流程图是多么的重要,尤其是对那些浩淼,错杂的程序,否则,还真不到下一步该干什么呀。例如,时间的设置显示和正常时间的显示,这是两个任务,而单片机是单任务处理器,要么显示时间,要么显示设置过程,怎么办呢?于是,就来个两路同时进行,实际也不是,只不过是,先执行那个,但那个有请求时,看是否符合条件,决定是否执行那个,就这样,来回切换,到最后还真完成了任务!还有很多问题,也就不再一一说了,不过这次课设、还真让我更深一层次明白了嵌入式系统含义。此次课程设计让我知道了,在遇到困难时别轻言放弃,更不要去逃避。只要付出百分之百的努力,才有可能享受那搞出点东西的惬意。参考文献1李建忠 编著.单片机原理及应用 西安:西安电子科技大学出版 2006 2张俊谟 编著.单片机中级教程原理与应用(第二版)北京:北京航空航天大学出版 20063马忠梅 编著:单片机的C语言应用程序设计(第3版) 北京:航空航天大学出版社 20034 周润景 等编著.PROTEUS入门实用教程北京:机械工业出版社 2007附录1 源代码#include <REG52.H> /头文件程序省略、不再赘述#include "LCD1602.h"#include "DS1302.h"#include "DS1802.h"#include"SoundPlay.h"unsigned char count=0,minute,second,hour,done=0;unsigned char code Music_Two = 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03,0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01,0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03,0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00,0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03,0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03,0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03,0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03,0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E,0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E,0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03,0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03,0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03,0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02,0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01,0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03,0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02,0x10,0x03, 0x15,0x00, 0x00,0x00 ;sbit Set = P26; /模式切换键sbit Up = P25; /加法按钮sbit Down = P24; /减法按钮sbit moshi= P27;void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;i<count;i+)for(j=0;j<120;j+);void lcdshow() SYSTEMTIME CurrentTime;DS1302_GetTime(&CurrentTime);CurrentTime.Week=CurrentTime.Week-1;if(CurrentTime.Week=0)CurrentTime.Week=7;DateToStr(&CurrentTime);TimeToStr(&CurrentTime);ReadTemp(); /开启温度采集程序 temp_to_str(); /温度数据转换成液晶字符GotoXY(0,0);Print(CurrentTime.DateString);GotoXY(11,0);Print("Week");GotoXY(15,0);Print(CurrentTime.week_value);GotoXY(0,1);Print(CurrentTime.TimeString);Delay1ms(300);GotoXY(11,1); /液晶字符显示位置 Print(TempBuffer); /显示温度void clockshow() unsigned char clockstring9;GotoXY(0,0);Print("clock:");if(hide_hour<2) clockstring0 = hour/10 + '0' clockstring1 = hour%10 + '0' else clockstring0 = ' ' clockstring1 = ' 'clockstring2 = ':' if(hide_min<2) clockstring3 = minute/10 + '0' clockstring4 = minute%10 + '0'else clockstring3 = ' ' clockstring4 = ' ' clockstring5 = ':' if(hide_sec<2) clockstring6 = second/10 + '0' clockstring7 = second%10 + '0' else clockstring6 = ' ' clockstring7 = ' ' clockstring8 = '0'GotoXY(7,0); Print(clockstring);Delay1ms(300);void Setkey()if(moshi=0)done+;if(done=3) done=0;Delay1ms(4);if(Set=0) count=count+1; Delay1ms(4); void naozhongshezhi() LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); clockshow(); switch(count) case 0: do if(Up=0) Delay1ms(4); second+; if(second>0x59) second=0; if(Down=0) Delay1ms(4); second-; if(second<0) second=0x59; Setkey(); hide_sec+; /位闪计数 if(hide_sec>3) hide_sec=0; clockshow(); while(count=0&&moshi=2);break;case 1: hide_sec=0; do if(Up=0) Delay1ms(4); minute+; if(minute>0x59) minute=0x00; if(Down=0) Delay1ms(4); minute-; if(min

    注意事项

    本文([理学]单片机课程设计万年历.doc)为本站会员(音乐台)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开