《基于51,52单片机的电子万年历的设计说明.doc》由会员分享,可在线阅读,更多相关《基于51,52单片机的电子万年历的设计说明.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. . . . (1)封面(2)开题报告(3)中文摘要与关键词(4)英(外)文摘要与关键词(5)正文(6)(附录)(7)参考文献(8)致摘 要单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以与我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。单片机是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应
2、用,从而达到学习、设计、开发软、硬的能力。 本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。关键词 : 单片机, 农历查询, 万年历 目录第一章引言3第二章 设计方案论证 .421 方案论证与设计.42.1.1 控制部分的方案选择.42.1.2 显示部分的方案选择42.1.3系统基本方案选择和论证.422单片机原理.523LED显示数码管 .5第三章 计算部分 .63.1主要单元电路的器件 .6
3、3.1.1 单片机主控制模块 .63.1.2 时钟电路模块 . 73.2 其他模块器件 83.2.1 74LS164 .83.2.2 CON8 . .93.2.3其他元器件 .9第四章结构设计部分.104.1显示部分设计 .104.1.1万年历优化算法 .114.2 实现时钟,日历显示设计 124.2.1 DS1302 的寄存器 .124.2.2 DS1302 实时显示时间的软硬件 .124.2.3 DS1302 与CPU 的连接 124.3整体设计 134.4系统软件设计 144.4.1程序流程框图 .14第五章 实验测试部分.185.1硬件测试 .185.2软件测试 185.3测试结果分析
4、与结论 185.3.1 测试结果分析.185.3.2 测试结论 .19第六章结论 .20第七章辞 .21参考文献.22附录一:系统程序清单 .23第一章 引言随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单
5、片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。所以,电子万年历无论作为比赛题目还是练习题目都是很有价值。第二章 设计方案论证21方案论证与设计2.1.1.控制部分的方案选择a)用可编程逻辑器件设计。可采用ALTERA公司的FLEX10K系列PLD器件。设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控
6、制与显示的模块间的连接也会比较方便。但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。从成本上来讲,用可编程逻辑器件来设计也没有什么优势。b)用凌阳16位单片机设计。凌阳16位单片机有丰富的中断源和时基,方便本实验的设计。它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。I/O口功能也比较强大,方便使用。用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。这些都方便对设计进行扩展,使设计更加完善。成本也相对低一些。2.1.2显示部分的方案选择a)液晶显示方式。液晶显示效果出众,可以运用菜单项来方
7、便操作,但是在显示时,特别是使用秒表功能时扫描速度跟不上,屏幕会有明显的闪烁。而且由于61板的存储空间有限,液晶显示就不能与语音播抱程序同时实现。这些大大影响了电子万年历的性能。b)相比液晶显示,采用8段数码管既经济实惠,在效果上也可以加入语音报时功能,操作比较液晶显示来说虽然略显繁琐,但总体也还可以做到比较人性化。所以,最后选择LED数码管显示方案。2.1.3系统基本方案选择和论证1.单片机芯片的选择方案和论证:方案一: 采用89C51芯片作为硬件核心,采用Flash ROM,部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由
8、于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用AT89S52,片ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89S52作为主控制系统.2. 显示模块选择方案和论证:方案一: 采用LED液晶显示屏,液晶显示屏的显示功
9、能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏.方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.方案三:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。所以采用了LED数码管作为显示。3时钟芯片的选择方案和论证:方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成
10、本,但是,实现的时间误差较大。所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以与闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V围,2.5V时耗电小于300nA.4. 电路设计最终方案决定综上各方案所述,对此次作品的方案选定:采用AT89S52作为主控制系统; DS1302提供时钟;数字式温度传感器;LED数码管动态扫描作为显示。2.2 单片机原理单片机就是简化的微型计算机。CPU中本身自带存储器ROM和RAM。CPU片也有总线。IC(集成电路)技术是将电路通过特殊工艺做
11、在一块硅基片上封装成芯片,比如CPU,片外存储器等等。 将单片机CPU(比如51系列),晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等通过PCB工艺(比如SMT贴片,或者插装)做在环氧树脂板上。这样才是一个完整的单片(做在一块PCB板上)的微型计算机。 2.3 LED显示数码管常见的LED显示具有清晰明亮的特点。是显示接口也是绝大多数单片机应用系统必备的部件之一。发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。它由若干个发光二极管按一定的规律排列而成。当某一个发光二极管导通时,相应的一个点或一笔画被点亮,控制不同组合的二极管导通,就能显
12、出各种字符。1. 显示器的结构常用的7段显示器的结构如图所示,发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的成为共阴显示器。1位显示器由8个发光二极管组成,其中7个发光二极管ag控制7个笔画的亮或暗,另一个控制一个小数点的亮和暗,这种笔画的七段显示器能显示的字符较少,字符的形状有些失真,但失控简单,使用方便。第三章计算部分3.1 主要单元电路的器件3.1.1单片机主控制模块AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。如图所示。1部结构按功
13、能分为8部分:CUP,程序存储器,数据存储器,时钟电路,串行口,并行I/O口,中断系统,定时/计数器。2.引脚定义与功能1).电源与时钟引脚Vcc:接+5V 电源Vss:接地XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。2).控制引脚RST/Vpq:RST是复位信号输入端,Vpd是备用电源输入端。当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。当主电源Vcc发生故障而突然下降到一定低电压或断电时,第2功能Vpd将为片RAM提供电源以保护片RAM中的信息不丢失。ALE/P
14、ROG:地址锁存允许信号输入端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是对片带有4K字节EPROM的8751固外程序时,作为编程脉冲输入端。PSEN:程序存储器允许输出端。当片外程序存储器的读选通信号,低电平有效。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。EA/Vpp:程序存储器地址允许输入端。当EA为高电平时,CPU执行片程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只
15、执行片外程序存储器指令。3).I/O口引脚P0.0P0.7:P0口8位双向I/O口;P1.0P1.7:P1口8位准双向I/O口;P2.0P2.7:P2口8位准双向I/O口;P3.0P3.7:P3口8位准双向I/O口。3片外总线结构分为三部分:数据总线 Data Bus(DB),地址总线 Address Bus (AB),控制总线 Control Bus(CB).AT89S523.1.2时钟电路模块1. DS1302的结构与工作原理DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5
16、V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。2. 引脚功能与结构 图1所示出DS1302 的引脚排列,其中Vcc1 为后备电源,VCC2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由Vcc1 或Vcc2 两者中的较大者供电。当Vcc2 大于Vcc10.2V 时,Vcc2 给DS1302供电。当Vcc2 小于Vcc
17、1 时,DS1302 由Vcc1 供电。X1 和X2 是振荡源,外接32.768kHz 晶振。RST 是复位/片选线,通过把RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当RST 为高电平时,所有的数据传送被初始化,允许对DS1302 进行操作。如果在传送过程中RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在Vcc2.5V 之前,RST 必须保持低电平。只有在SCLK 为低电平时,才能将RST 置为高电平。I/O 为串行数据输
18、入输出端(双向),后面有详细说明。SCLK 始终是输入端。3.数据输入输出(I/O)在控制指令字输入后的下一个SCLK 时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0 开始。同样,在紧跟8 位的控制指令字后的下一个SCLK 脉冲的下降沿读出DS1302 的数据,读出数据时从低位0 位到高位7。3.2其他模块器件3.2.1 74LS164它是个串入并出的8位移位寄存器,它常用于单片机系统中,下面结束一下这个元件的基本知识:74LS164引脚图74LS164_部功能图74LS164_逻辑符合表串行输入带锁存 时钟输入,串行输入带缓冲 异步清除 最高时钟频率可高达36Mhz 功耗:10
19、mW/bit 74系列工作温度: 0C to 70CVcc最高电压:7V 输入最高电压:7V 高电平:0.4mA 低电平:8mA3.2.2CON8它是一个排插符号 ,也就是一个插座,可以通过一个插头将89C51的P0口引到外面的有关电路作扩展用,也可以作为备用。3.2.3其他元器件电阻,电容,发光二极管,三极管若干。第四章 结构设计部分4.1 显示部分设计基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1
20、秒的定时时间, 其他位均以此为基准往上累加。 同时时钟达到最大值的时候天数也增加一位,知道显示了7后再变为1,同时阴历和阳历的天数也加1,根据不同的月份显示的天数阳历有28,29,30,31天,阴历就要经过计算得到,到了12个月后,年数自动增加1,以此类推,显示万年历的现实。另外,连接方式总电路图上可以看到,这里就不做说明了,下图为显示部分的电路图。显示部分电路图4.1.1万年历优化算法1.阳历算法阳历的算法比较简单,每十月的总的天数相对来说是固定的。只有2月份,在闰年是29天,在非闰年是28天。每个月的日历排法主要是确定每个月第一天是星期几。我们知道1901年1月1日是星期二,星期的变化是7
21、天一个周期,比如说要计算1901年2月1日是星期几,可以这样推算:从1901年1月1日到1901年2月1日总共经过了31天(从表1可看出),31对7取模是3:i901年1月1日是星期二,加三后,是星期五。因此1901年2月1日是星期五。同理,可以推算出从19012100年任何一天是星期几。表1月份123456789101112闰年312931303130313130313031非闰年3128313031303131303130312.阴历算法阴历的算法比较复杂,它包含两个部分。一部分是阳历日和阴历日的对应关系;另一部分则是阳历日和农历节气的对应关系。下面只介绍与设计有关的阴历和阳历的关系。表2
22、比特数0123456789101112131415数据!1!1!1xxxx我们先要做一个数据表,这个数据表里面每2个字节,表示T一个阴所年彝个月份的天教 2个字节(共16bit)的具体意义如表2。 其中“!(01)中“0”表示30天,“1”表示29天。“x x x x(4个比特可表示数值围015)”表示该年中是否有闰月,数值“0”表示无闰月,“ 112”表示某一个闰月。闰月一般是29天;在200年中(19012100年),闰月是30天的,可用一个特殊语句来解决。这里2OO年需要200 x 2=400个字节,构成阴历压缩数据表。有了阴历的数据表后,主要是要确定阳历日和胡历日的对应关系。我们知道阳
23、历年1901年1月1日,对应的阴历年是对应的阴历日,可用以下算法:(1)从阳历年1901年1月1日到1901年2月1日,计算出经过了31天;(2)根据阴历数据表知道阴历年1900年11月有29天,因此3129=2天。原来阳历年1901年1月1日对应的阴历日是11日,则有11+1=13;(3)因为阴历1901年12月份有30天,而13=30,所以阳历年1901年2月1日对应的阴历年是1900年12月13日。如果上一步相加得出的散大于当前阴历月的总的天敢,别应该继续减去当前阴历月的总的天数,直到符合条件。对于月份增加时,还要通过数据表查看是否要经过闰月。对于其他任何一个阳历日和阴历日的对应关系,都
24、可以通过以上算法求得结果。4.2 实现时钟,日历显示设计DS1302可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能.4.2.1DS1302 的寄存器DS1302 有12 个寄存器,其中有7 个寄存器与日历、时钟相关,存放的数据位为BCD 码形式,其日历、时间寄存器与其控制字见表1。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器与与RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器容。DS1302 与RAM 相关的寄存器分为两类:一类是单个RAM 单元,共31 个,每个单元组态为一个8 位的字节,其命令控制字为C0H
25、FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM 寄存器,此方式下可一次性读写所有的RAM 的31 个字节,命令控制字为FEH(写)、FFH(读)。4.2.2 DS1302 实时显示时间的软硬件DS1302 与CPU 的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。图3 示出DS1302 与89C2051 的连接图,其中,时钟的显示用LCD。4.2.3 DS1302 与CPU 的连接实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。
26、只要占用CPU 一个口线即可。LCD 还可以换成LED,还可以使用卫信杰科技发展生产的10 位多功能8 段液晶显示模块LCM101,含看门狗(WDT)/时钟发生器与两种频率的蜂鸣器驱动电路,并有置显示RAM,可显示任意字段笔划,具有34 线串行接口,可与任何单片机、IC 接口。功耗低,显示状态时电流为2A(典型值),省电模式时小于1A,工作电压为2.4V3.3V,显示清晰。4.3整体设计实现过程:由串行的时钟芯片DS1302,送给单片机,单片机处理后输出。而74LS164将串行信号变成并行信号,每个164对应LED七段码,三个164对应三行LED数码管。单片机P2.6-P2.0连接七个三极管作
27、列驱动,共七列数码管,(实际有两行是六列)行列扫描共同形成万年历。其整个过程,如原理图所示。4.4系统软件设计4.4.1程序流程框图图-C 时间调整程序流程图第五章 实验测试部分5.1硬件测试电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。在本成电子万年历的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:()LED数码管的断码错乱,原因出于没有认真看清a、b 、c等引脚信息。解决:重新排列7
28、4LS47的输出端,相应接入LED数码管,即可解决出现在的断码或乱码。( 2)对万年历修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮现象。解决:根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。5.2软件测试电子成年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的仪器。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1
29、烧入程序后,LED数码管显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2修改时间、日期时没有农历没有自动对应上。解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.5.3测试结果分析与结论5.3.1测试结果分析(1)在测
30、试中遇到发光二极管、LED数码管为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏.(2)LED 数码管显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。 (3).DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM 数据;D5D1 指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出
31、)。在DS1302 的时钟日历或RAM 进行数据传送时,DS1302 必须首先发送命令字节。若进行单字节传送,8 位命令字节传送结束之后,在下2 个SCLK 周期的上升沿输入数据字节,或在下8 个SCLK 周期的下降沿输出数据字节。DS1302 与RAM 相关的寄存器分为两类:一类是单个RAM 单元,共31 个,每个单元组态为一个8 位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM 寄存器,在此方式下可一次性读、写所有的RAM 的31 个字节。要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302 在主电源掉电后的
32、耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V 充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 F 就可以保证1 小时的正常走时。DS1302 在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。5.3.2 测试结论经过多次的反复测试与分析,可以对电路的原理与功能更加熟悉,同时提高了设计能力与与对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固第六章 结论在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学
33、习,学到了许多没学到的知识,完成了对万年历的设计,达到了预期的目的。在最初的设计中,发挥“三个臭皮匠,顶个诸亮”的作用,相互学习、相互讨论、研究,完成了最初的设想。在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成,反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,理清了思路,终于能够完成它。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次设计中学到了很多
34、很多东西,这是最重要的。第七章 辞毕业设计的完成,为我的大学学习生活画下了最后一笔。应该感的人很多,首先感学院给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。在做论文设计的日子里得到了指导教师的悉心指导,在此向我们的指导教师致以诚挚的意。感提供相关技术帮助的老师和同学,你们的支持和鼓励使我们对这次的作品完成有了信心和动力,也给了我们很多无私的帮助和支持,我们在此深表意。参考文献1勇编数字电路电子工业 20042正振编电子电路设计与制作交通职业技术学院信息工程系 20073子文编单片机原理与应用电子科技大学 20064王法能编单片机原理与应
35、用科学20045琳琳单片机原理与接口技术M:国防科技大学,2000年6许惠民单片微型计算机原理、接口与应用fM:邮电大学,2000年7康华光电子技术基础M:高等教育,2001年附录一:系统程序清单;* ;* 万年历程序 *;*67H(高两位年)66H(低两位年)65H(月)64H(星期);63H(日)62H(小时)61H(分)60H(秒)57H(农历月)56H(农历日);显示缓冲单元7CH7BH(4CH4BH)年低位,7AH79H(4AH49H)月;78H(48H)星期,77H76H(47H46H)日,75H74H(45H44H)时;73H72H(43H42H)分,71H70H(41H40H)
36、秒,5EH5DH(55H54H)农历年;5CH5BH(53H52H)农历月,5AH59H(51H50H)农历日;闰年标志为F0,定时器T1为调整时候闪烁用。25 / 26SCLK EQU P3.2IO EQU P3.3RST EQU P3.4YEAR DATA 66HMONTH DATA 65H WEEK DATA 64H DAY DATA 63H HOUR DATA 62HMINTUE DATA 61H SECOND DATA 60HDS1302_ADDR DATA 32H DS1302_DATA DATA 31H ORG 0000H AJMP START ORG 0003H RETI OR
37、G 000BHRETI ORG 0013H RETIORG 001BHLJMP INTT1 ORG 0023H RETI ORG 002BH RETI;* 主程序 ;* START: SETB EA MOV SCON,#00H ;串行输出,方式0 MOV TMOD,#10H ;计数器1,方式1MOV TL1,#00HMOV TH1,#00HMOV DS1302_ADDR,#8EH MOV DS1302_DATA,#00H ;允许写1302LCALL WRITEMOV DS1302_ADDR,#90HMOV DS1302_DATA,#0A6H;1302充电,充电电流1.1mA LCALL WRI
38、TE MAIN1: MOV DS1302_ADDR,#8DH ;READ OUT YEARLCALL READ MOV YEAR,DS1302_DATAMOV DS1302_ADDR,#8BH ;READ OUT WEEKLCALL READMOV WEEK,DS1302_DATAMOV DS1302_ADDR,#89H ;READ OUT MONTH LCALL READMOV MONTH,DS1302_DATAMOV DS1302_ADDR,#87H ;READ OUT DAYLCALL READMOV DAY,DS1302_DATAMOV DS1302_ADDR,#85H ;READ O
39、UT HOURLCALL READMOV HOUR,DS1302_DATAMOV DS1302_ADDR,#83H ;READ OUT MINTUELCALL READMOV MINTUE,DS1302_DATAMOV DS1302_ADDR,#81H;READ OUT SECOND LCALL READ MOV SECOND,DS1302_DATA MOV R0,YEAR ;年分离,送显示缓存LCALL DIVIDEMOV 7BH,R1MOV 4BH,R1 MOV 7CH,R2 MOV 4CH,R2MOV 78H,WEEKMOV 48H,WEEK MOV R0,MONTH ;月分离,送显示缓
40、存 LCALL DIVIDEMOV 79H,R1MOV 49H,R1MOV 7AH,R2MOV 4AH,R2MOV R0,DAY ;日分离,送显示缓存LCALL DIVIDEMOV 76H,R1MOV 46H,R1MOV 77H,R2 MOV 47H,R2 MOV R0,HOUR ;小时分离,送显示缓存LCALL DIVIDEMOV 74H,R1MOV 44H,R1 MOV 75H,R2MOV 45H,R2 MOV R0,MINTUE ;分分离,送显示缓存LCALL DIVIDEMOV 72H,R1 MOV 42H,R1 MOV 73H,R2MOV 43H,R2 MOV R0,SECOND ;秒分离,送显示缓存 LCALL DIVIDE MOV 70H,R1MOV 40H,R1 MOV 71H,R2MOV 41H,R2LCALL DISPLAY LCALL GENGXIN ;更新农历程序JNB P1.1,SETGJNB F0,SSS CLR P1.3 ; 闰月,则p1.3清0,指示灯亮LJMP MAIN1SSS: SETB P1.3 ;非闰月,则p1.3置位,指示灯灭LJMP MAIN1 ;*