ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:326KB ,
资源ID:9400082      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9400082.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(太原理工大学信息-单片机-电子万年历.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

太原理工大学信息-单片机-电子万年历.doc

1、 课程设计报告 课程名称: 嵌入式程序基础 实验项目: 电子万年历设计 实验地点: 起点机房 专业班级:通信1002 学号:2010****** 学生姓名: 指导教师: 2013年6月22日 太原理工大学信息工程学院 专业班级 通信1002 学生姓名 倪杨 课程名称 嵌入式系统基础

2、 设计名称 电子万年历 设计周数 1.5 指导教师 温景国 设计 任务 主要 设计 参数 设计一个电子万年历,实现日历功能。 主要设计参数: 1. 显示年月日时分秒及星期信息; 2. 日历参数可调整; 3. 自动识别闰年 4. LED显示。 设计内容 设计要求 1.设计I2C接口电路; 2.设计LED显示电路; 3.设计I2C接口驱动程序及显示程序。 要求:仿真调试硬件电路,仿真调试程序 主要参考 资 料 1、 单片机原理与接口技术,李晓林等,电子工业出版社,2011。 2、 微型计算机控制技术,潘新民等,人民邮电出版社,199

3、9。 3、 单片机应用系统设计技术,张齐等,电子林业出版社,2010。 学生提交 归档文件 课程设计说明书1份 课程设计任务书 注: 课程设计完成后,学生提交的归档文件应按,封面—任务书—说明书—图纸的顺序进行装订上交(大张图纸不必装订) 指导教师签名: 日期: 20 目录 一.实验目的 4 二.实验要求 4 三.实验原理 4 四.硬件系统设计 6 五.电路原理图 6 六.电路系统框图 7 七.LED显示数码管 7 八.程序流程图 8 九.设计程序 10 十.设计体会 20

4、 一.实验目的 1、熟悉MCS-51定时/计数器、中断的应用。 2、熟悉时钟时、分、秒计时方法,掌握编程技巧。 3、掌握七段码LED显示器的结构,七段码LED显示器的工作方式和显示程序的编程。 二.设计要求 1.设计I2C接口电路; 2.设计LED显示电路; 3.设计I2C接口驱动程序及显示程序。 设计参数 设计一个电子万年历,实现日历功能。 主要设计参数: 1、 显示年月日时分秒及星期信息; 2、 日历参数可调整; 3、 自动识别闰年 4、 LED显示。 三.设计原理 显示部分设计 基本显示原理:时钟开始显示为0时0分0秒,也

5、就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间, 其他位均以此为基准往上累加。 同时时钟达到最大值的时候天数也增加一位,知道显示了7后再变为1,同时阴历和阳历的天数也加1,根据不同的月份显示的天数阳历有28,29,30,31天,阴历就要经过计算得到,到了12个月后,年数自动增加1,以此类推,显示万年历的现实。 万年历优化算法 1.阳历算法 阳历的算法比较简单,每十月的总的天数相对来说是固定的。只有2月份,在闰年是29天,在非闰

6、年是28天。每个月的日历排法.主要是确定每个月第一天是星期几。我们知道1901年1月1日是星期二,星期的变化是7天一个周期,比如说要计算1901年2月1日是星期几,可以这样推算:从1901年1月1日到1901年2月1日总共经过了31天(从表1可 看出),31对7取模是3:i901年1月1日是星期二,加三后,是星期五。因此1901年2月1日是星期五。同理,可以推算出从1901—2100年任何一天是星期几。 表1 月份 1 2 3 4 5 6 7 8 9 10 11 12 闰年 31 29 31 30 31 30 31 31 30 31 30 31 非闰年 31 28 31 30 31 3

7、0 31 31 30 31 30 31 2.阴历算法 阴历的算法比较复杂,它包含两个部分。一部分是阳历日和阴历日的对应关系;另一部分则是阳历日和农历节气的对应关系。下面只介绍与设计有关的阴历和阳历的关系。 表2 比特数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 数据 ! ! ! ! ! 1 ! ! ! 1 ! 1 x x x x 我们先要做一个数据表,这个数据表里面每2个字节,表示T一个阴所年彝个月份的天教 2个字节(共16bit)的具体意义如表2。其中“!(0/1)中“0”表示30天,“1”表示29天。“x x x x(4个比特可表示数值范围0~

8、15)”表示该年中是否有闰月,数值“0”表示无闰月,“ 1~12” 表示某一个闰月。闰月一般是29天;在200年中(1901~2100年),闰月是30天的,可用一个特殊语句来解决。这里2OO年需要200 x 2=400个字节,构成阴历压缩数据表。 有了阴历的数据表后,主要是要确定阳历日和胡历日的对应关系。我们知道阳历年1901年1月1日,对应的阴历年是对应的阴历日,可用以下算法: (1)从阳历年1901年1月1日到1901年2月1日,计算出经过了31天; (2)根据阴历数据表知道阴历年1900年11月有29天,因此31—29=2天。原来阳历年1901年1月1日对应的阴历日是11日,则有1

9、1+1=13。 (3)因为阴历1901年12月份有30天,而13<=30,所以阳历年1901年2月1日对应的阴历年是1900年12月13日。如果上一步相加得出的散大于当前阴历月的总的天敢,别应该继续减去当前阴历月的总的天数,直到符合条件。 对于月份增加时,还要通过数据表查看是否要经过闰月。对于其他任何一个阳历日和阴历日的对应关系,都可以通过以上算法求得结果。 四.硬件系统设计 本电路是由 AT89C52 单片机为控制核心,具有在线编程功能,低功耗,能在 3V 超低压工 作;时钟电路由 DS1302 提供,它是一种高性能、低功耗、带 RAM 的实时时钟电路,它可以 对年、月、日、周日、

10、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V~5.5V。 采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302 内部有一个 31*8 的用于临时性存放数据的 RAM 寄存器。可产生年、月、日、 周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能。 五.电路原理图 六.电路系统框图 七.LED显示数码管 常见的LED显示具有清晰明亮的特点。是显示接口也是绝大多数单片机应用系统必备的部件之一。 发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。它由若干

11、个发光二极管按一定的规律排列而成。当某一个发光二极管导通时,相应的一个点或一笔画被点亮,控制不同组合的二极管导通,就能显出各种字符。 1. 显示器的结构 常用的7段显示器的结构如图所示,发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的成为共阴显示器。1位显示器由8个发光二极管组成,其中7个发光二极管A~g控制7个笔画的亮或暗,另一个控制一个小数点的亮和暗,这种笔画的七段显示器能显示的字符较少,字符的形状有些失真,但失控简单,使用方便。 八.程序流程图 九.设计程序 ORG 0000H LJMP START ORG 0003

12、H LJMP PROINT0 ; int0用来切换时钟调整位置 ORG 0013H ;用来调整时间,只加不减 LJMP PROINT1 ORG 001BH ;5ms的延迟,计数200次则为1秒 LJMP PROTIME ORG 0030H ;主程序 TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0 1 2 3 4 5 6 7 8 9 ORG 0050H START: MOV TCON,#05H ;中断初始化 M

13、OV IE ,#8DH MOV TMOD,#10H MOV TH1,#0eCH ;定时器初始化 MOV TL1,#78H MOV 31H,#0AH ;10秒 MOV 32H,#1EH ;30分 MOV 33H,#09H ;9点 MOV 34H,#0AH ;10号 MOV 35H,#06H ;6月 MOV 36H,#0CH ;2012年 MOV 37H,#14H ;R7 存放切换标志 0 NORMAL , 1 HOUR ,2 MINUTE ,3 SECOND ,4 YEAR,5 MONTH,6 DAY MOV R1,#00

14、H ;确定在调时不按键的最长时间,10秒后返回normAl状态 MOV R7,#00H ;切换标志 MOV 40H,#00H ;十六进制转换BCD的高位 MOV 41H,#00H ;十六进制转换BCD的低位 MOV R6,#00H ;调时的位闪烁的时间间隔 MOV R4,#00H ;用来计数5ms的中断次数,200次则一秒 MOV R3,#00H SETB TR1 ;开始计时 AGAIN: ACALL PROSHOW ;显示 AJMP AGAIN PROS

15、HOW: CJNE R3,#00H,SHOWDATE ;如果r3等于1就显示日期,等于0就显示时钟 CJNE R7,#04H,DATE1 ;显示程序 AJMP SHOWDATE ;showdate显示年月日 DATE1: CJNE R7,#05H,DATE2 AJMP SHOWDATE DATE2: CJNE R7,#06H,SHOWCLOCK AJMP SHOWDATE SHOWCLOCK: MOV R0,33H ;showclock显示时分秒,先显示时 AC

16、ALL PROHTOD CJNE R7,#01H,CLK1 INC R6 CJNE R6,#03H,CLK2 ;若处于调时状态,则该位闪烁 MOV R6 ,#00H CLK1: CLR P2.4 MOV A,41H MOV P0, A ;显示时的低位 ACALL DELAY3MS CLK2: SETB P2.4 CLR P2.5 MOV A,40H MOV P0,A ;显示时的高位 ACALL DELAY3MS SETB P2.5 MOV R0,32H

17、 ;显示分 ACALL PROHTOD CJNE R7,#02H,CLK3 INC R6 CJNE R6,#03H,CLK4 ;若处于调时状态,则该位闪 MOV R6,#00H CLK3: CLR P2.2 MOV A,41H MOV P0, A ;显示分的低位 ACALL DELAY3MS CLK4: SETB P2.2 CLR P2.3 MOV A,40H MOV P0,A ;显示分的高位 ACALL DELAY3MS SETB P2.3 MOV R

18、0,31H ;显示秒 ACALL PROHTOD CJNE R7,#03H,CLK5 INC R6 CJNE R6,#03H,CLK6 ;若处于调时状态,则该位闪烁 MOV R6,#00H CLK5: CLR P2.0 MOV A,41H MOV P0, A ;显示秒的低位 ACALL DELAY3MS CLK6: SETB P2.0 CLR P2.1 MOV A,40H MOV P0,A ;显示秒的高位 ACALL DELAY3MS

19、 SETB P2.1 RET SHOWDATE: MOV R0,36H ;显示年 ACALL PROHTOD CJNE R7,#04H,DAY1 INC R6 CJNE R6,#03H,DAY2 ;若处于调时状态,则该位闪烁 MOV R6,#00H DAY1: CLR P2.4 MOV P0,41H ;显示年的低位 ACALL DELAY3MS DAY2: SETB P2.4 CLR P2.5 MOV P0,40H ;显示年的高位

20、ACALL DELAY3MS SETB P2.5 MOV R0,35H ;显示月 ACALL PROHTOD CJNE R7,#05H,MONTH1 INC R6 CJNE R6,#03H,MONTH2 ;若处于调时状态,则该位闪烁 MOV R6,#00H MONTH1: CLR P2.2 MOV P0,41H ;显示月的低位 ACALL DELAY3MS MONTH2: SETB P2.2 CLR P2.3 MOV P0,40H ;显示月的高

21、位 ACALL DELAY3MS SETB P2.3 MOV R0,34H ;显示日 ACALL PROHTOD CJNE R7,#06H,YEAR1 INC R6 CJNE R6,#03H,YEAR2 ;若处于调时状态,则该位闪烁 MOV R6,#00H YEAR1: CLR P2.0 MOV P0,41H ACALL DELAY3MS YEAR2: SETB P2.0 CLR P2.1 MOV P0,40H ACALL DELAY3MS SETB P2.1 RET PROHTOD: P

22、USH ACC ;十六进制数转换成bcd码,且可以直接输出p0口 MOV A,R0 MOV B,#0AH DIV AB MOV DPTR,#0030H MOVC A,@A+DPTR MOV 40H,A MOV A,B MOVC A,@A+DPTR MOV 41H,A POP ACC RET DELAY3MS: DELAY3MS MOV 45H,#08H DELAY1: MOV 46H,#0FFH DELAY2: DJNZ 46H,DELAY2 DJNZ 45H,DELAY1 RET PROINT0: R EX0

23、 ;切换键中断程序 MOV R3,#00H ACALL PROSHOW MOV C,P3.2 JC IEXIT0 MOV R1,#00H INC R7 CJNE R7,#07H,IEXIT0 MOV R7,#00H INT01: V C,P3.2 JC INT02 ACALL PROSHOW AJMP INT01 INT02: ALL PROSHOW IEXIT0: B EX0 RETI PROINT1C: X1 ACALL PROSHOW MOV C,P3.3 JC IEXIT1 LCALL ISYEAR ;

24、判断平年闰年 LCALL ISMONTH ;判断月份,确定最大日数 MOV R1,#00H CJNE R7,#00H,NEXT1;若不是调时状态,按此键就是切换显示日期、时钟 INC R3 CJNE R3,#02H,IEXIT1 MOV R3,#00H AJMP IEXIT1 NEXT1: OV R3, #00H CJNE R7,#03H,NEXT2 ;修改秒位 INC 31H MOV A,31H CJNE A,#3CH,INT11 ;遇60变0 MOV 31H,#00H AJMP IEXIT1 NEXT2: NE R7,#02H,NEXT3

25、 ;修改分位 INC 32H MOV A,31H CJNE A,#3CH,INT11 ;遇60变0 MOV 31H,#00H AJMP IEXIT1 NEXT3: CJNE R7,#01H,NEXT4 ;修改时位 INC 33H MOV A,33H CJNE A,#18H,INT11 ;遇24变0 MOV 33H,#00H AJMP IEXIT1 NEXT4: CJNE R7,#06H,NEXT5 ;修改日 INC 34H MOV A,34H CJNE A,49H,INT11 ;到月底就返回月初 MOV 34H,#

26、01H AJMP IEXIT1 NEXT5: CJNE R7,#05H,NEXT6 ;修改月 INC 35H MOV A,35H CJNE A,#0DH,INT11 ;十二月过后就跳回1月 MOV 35H,#01H AJMP IEXIT1 NEXT6: CJNE R7,#04H,INT11 ;修改年 INC 36H MOV A,36H CJNE A,#64H,INT11 MOV 36H,#00H INT11: MOV C,P3.3 JC INT12 ACALL PROSHOW AJMP INT11 INT12: ACALL

27、 PROSHOW IEXIT1: SETB EX1 RETI PROTIME: MOV TMOD,#10H MOV TH1,#3CH ;定时器初始化 MOV TL1,#60H SETB TR1 NC R4 CJNE R4,#0c8H,EXIT MOV R4,#00H ;计满1秒则清零 CJNE R7,#00H,DIAOSHI AJMP NORMAL DIAOSHI: INC R1 ;调时不按键的最长时间为10秒,在此期间又键按下重新计时 CJNE R1,#0AH,EXIT MOV R7,#00H

28、 ;到10秒则返回正常显示状态 MOV R1,#00H AJMP EXIT NORMAL: ACALL ISYEAR ;判断平闰年,返回标志48H,0为平年,1为闰年 ACALL ISMONTH ;判断哪个月,返回该月的最大日数,存放在49H NC 31H MOV A,31H ;秒加一 CJNE A,#3CH,EXIT MOV 31H,#00H INC 32H ;分加一 MOV A,32H CJNE A,#3CH,EXIT MOV 32H,#00H INC 33H ;时加一 MOV A,33H CJNE A,#18H,EXI

29、T MOV 33H,#00H INC 34H ;日加一 MOV A,34H CJNE A,49H,EXIT MOV 34H,#01H INC 35H ;月加一 MOV A,35H CJNE A,#0DH,EXIT MOV 35H,#01H INC 36H ;年加一 MOV A,36H CJNE A,#64H,EXIT MOV 36H,#00H EXIT: RETI ISYEAR: MOV A,36H ;判断平闰年 MOV B,#04H DIV AB MOV A,B CJNE A,#00H,EXITYEAR1 MOV 48H,#01H

30、 ;闰年 SJMP EXITYEAR EXITYEAR1: MOV 48H,#00H ;平年 EXITYEAR: RETI MOV A,35H ;开始检查月份 CJNE A,#02H,NEXTMON1 ;判断二月 CJNE R2,#00H,RUNNIAN MOV 49H,#1DH ;平年为28天,赋29给49H AJMP EXITMONTH RUNNIAN: MOV 49H,#1EH ;闰年为29天,赋30天给49H

31、 AJMP EXITMONTH NEXTMON1: CJNE A,#04H,NEXTMON2 AJMP XIAOYUE NEXTMON2: CJNE A,#06H,NEXTMON3 AJMP XIAOYUE NEXTMON3: CJNE A,#09H,NEXTMON4 AJMP XIAOYUE NEXTMON4: CJNE A,#0BH,DAYUE XIAOYUE: MOV 49H,#1FH ;四,六,九,十一月是小月,30天,但应该赋31天给比较值49H AJMP EXITMONTH DAYUE: MOV 49H,#20H ;其他月份为大月,31天,赋32天给49H EXITMONTH: RETI END 十.设计体会 本次课程设计,我学会了系统地设计一个具体的工程设计样品;了解了具体的设计过程。他包括前期的设计准备知识、相关电路和器件特性、具体实现算法的设计、相关程序实现、调试等过程。在这个过程中,我知道了查阅相关资料的重要性,也累计了许多电路和逻辑器件的知识。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服