优秀毕业设计毕业论文单片机课程设计报告-电子时钟_第1页
优秀毕业设计毕业论文单片机课程设计报告-电子时钟_第2页
优秀毕业设计毕业论文单片机课程设计报告-电子时钟_第3页
优秀毕业设计毕业论文单片机课程设计报告-电子时钟_第4页
优秀毕业设计毕业论文单片机课程设计报告-电子时钟_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、east china institute of technology电子时钟姓名:专业:电子信息工程班级:电子信息一班学号:1020610161指导老师:2012-12-23目录一、设计目的1二、设计要求1三、设计思路2四、按键分配3五、地址分配3六、程序原理与流程图4七、编写程序7八、设计心得14电子时钟的设计一、设计目的1、増进对单片机的感性认识,加深对单片机理论方面的理解。2、掌握单片机的内部功能模块的应用,如定吋器/计数器、中断、片内外存 贮器、1/0口、串行口通讯等。3、了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设 计和实现单片机应用系统打下良好基础4、加深对本门课

2、程所学理论知识的理解与应用,提高对所学理论知识的综 合运用能力,对计算机控制系统有一个整体认识,掌握计算机控制系统 的设计方法。通过课程设计,还可以培养独立工作能力,为将來毕业设 计打好基础。二、设计要求1. 用80c51单片机及接口电路设计一个电子计时器。 系统皎件设计:根据任务要求,完成单片机最小系统及其组成功能完整 的系统。 系统软件设计:根据数字电了计时器功能,完成控制软件的编写与调 试,并对数码显示进行控制。2. 实现的功能: 运行时,电子钟从00.00开始自动计时。 设置校正按键,能对闹钟时、闹钟分、时、分进行调整。 设置吋间与当前闹钟值切换显示键,能对吋间与当前闹钟切换显示。 设

3、置+1键,能对所要校正单元内容+1。 设置确定/开关闹钟键3. 显示耍求:在没有键的情况下,四个数码管显示正常走时时间11显示时的第二 个数码管小数点毎秒内亮半秒、灭半秒,其余三个数码管小数均不 亮。 当按下切换显示键时,数码管由显示时间变为显示当前闹钟值,这时小 数点常亮。在按下冋到走时。 按下校止键后,开始时为校闹钟时,再按一下校止键,跳至校闹钟分, 再按一下则为校时,再按一下后为校分,再按一次就回到校月,依次 循环,当校闹钟时,该校正单元内容在数码管上每秒内亮半秒、灭半 秒,且第二个数码码小数点为常亮。当为校吋或校分吋,该校正单元 内容在数码管上每秒内亮半秒、灭半秒,第二个数码管小数点每

4、秒内 亮半秒、灭半秒。 按下确定键后,不管前一种按键是哪一种均跳至显示正常走时状态。 当时钟走到设定的闹钟值时,蜂鸣器会以30ms的周期响六秒(时间可 以通过程序设定) 确定键冇开启/关闭蜂鸣器功能,并以p3. 3 口接led灯(低电平亮) 作指示,当p3. 3为低电平时,闹钟开启,反z则为关闭)。三、设计思路利用mcs-51单片机内部的定时/计数器、中断系统、以及独立键盘 和数码管等部件,设计一个单片机电子时钟。设计的电子时钟通过数码 管显示,并能通过按键实现设置时间、闹钟值以及两者切换显示等操控。 用定时/计数器to,工作于定时,采用方式1,对12mhz的系统吋钟进 行定吋计数,初值设为0

5、bdch,形成1/16s定吋吋间。屮断服务程序屮 对1/16s定时中断次数计数,若到计到了16次,秒单元内容加1,否则执 行判键,当秒单元内容加至60时,自动清0秒单元同时分单元内容加1, 同理对时、闹钟时、闹钟分处理,分别用片内ram分别存秒、分、时、 闹钟分、闹钟时,然后根据按键信息选择要显示的单元。显示时,当显 示吋间吋,小数点每秒内亮半秒、灭半秒,因为2fh.3位0和1每半秒切换 一次,故实现这个可以利用2fh.3来判断,当显示闹钟值时,这时小数点 常亮。对于校时或校分显示,当校正其中一个单元内容时,显示该单元 内容每秒内亮半秒、灭半秒,且小数点也随z起闪烁;当校闹钟时或 闹钟分时,校

6、正单元闪烁,但小数点为常亮。以校正指针21h底2位:00 为校月,01为校日,10为校吋,11为校分,若校正指针21h.0为1吋,则为 校闹钟分或校分,故使后两个数码闪烁,反z则前两个数码管闪烁,同 时以20h.1來区分是校闹钟还是校时來确定小数点是常亮还是闪烁。以此 来区分当前校正的单元为哪个单元。显示判断与判键思路:1.时间/闹钟值显示标志位上电时标志位置1显示时间,切换时标志 位为0显示闹钟值。2校正状态标志位(20h.1)标志位为0时正常走时,key3键无效。3. 标志位位1时key2、key3、key4有效,key1键无效。四、按键分配1: kl键(p1.4):时间/闹钟值切换显示键

7、2: k2键(p1.5):校正键3: k3 键(p1.6): +1 键4: k4键(p1.7):确定键以及开关闹钟蜂鸣器(四个按键均以低电平有效,且不要同时按下多个键)五、地址分配1.闹钟吋单元:30h2.闹钟分单元:31h3.时单元:32h4.分单元:33h5.秒单元:34h6. 1/16秒计数单元:2fh7 校正指针:21h低两位(00为校月、01日、10时、11分)&时间/闹钟状态标志:2011. 0 (低电平为显示口期,反之为显示闹钟值)9.校正/走吋标志:20h. 1 (低电平吋为走吋,反之为校正)10 显示缓冲单元:3bh, 3ah11按键信息存放单元:5011六、程序原理

8、与流程图1原理图abuz o o.:tb<t11 key1 j=l tobuzzerkey2 -j=2_>key4rfm低.xtal1poivaupd.vampdad2xta12pdiatapd.4/ad*poac6pdj&ad6rstpd.v/ampzn胭p2.ump2nxop237d1alep2.a1z母p2sagp2j&ahp2.7/asp1dp3iyrxdp1.1p3.1h>®p12p3widp13pdhuttpup3.4hdpisp3st1p1£p3.g(njrp1.?p3.7/k7ig9prb6"lb 吏申枫35if

9、*led-blfftnqauua 口5jinl«pljiliiis7413373: je:<t-doqdd1q1d2azrnqldiqidsqs0606d?q?曜leu"isf"st2流程图主程序中断程序屮断入口地址重置计数器初值1/16秒重赋16秒单元清0秒单元加1并调整为十进制分单元加1并调整为十进制七、编写程序orgsjmporgljmporgmain: movmovmovmovmovmovmovclrsetbmovmovmovmovsetb0000hmain000bhitop0030h 50h,#offh 30h,#031h,#132h,#033h,

10、#o34h,#02fh,#1620h.120h.0tmod,#01hth0,#0bhtlo,#odchie,#82htrodisp:movdptr,#tabjb2oh.1,d1sp1mova,3bhanla,#0f0hswapamovca,a+dptrsetbp2.0clrp2.1movp0,asetbp2.1clrp2.0movpo,#ofehlcalldelaymova,3bhanla,#0fhmovca,a+dptrjnb20h.o,loop1jb2fh.3,loop1sjmpnext1loopkorla,#80hnext1: setbp2.0clrp2.1;t0中断入口;按键信息存放单

11、元(作用:长按按键只当按一次) 淀时闹钟时单元;定时闹钟分单元,开始默认为一分钟闹钟;时单元汾单元;秒单元;1/16秒计数单元(定时器为1/16秒中断溢出);20h.l为0走时,为1校正;2oh.o为0显示当前闹钟值,为1显示走时;t0工作于定时,方式1;赋定时器to初值,定时l/16s = 62500us;允许定时器to中断;启动定时器to/;显示模块/;取笔型码表始地址;校正?若是跳至校正显示;不是校正,显示走时/闹钟值;取时高位bcd码;读时高位bcd码笔型码并通过p0丨i输出;数据片选74ls573芯片使能输入有效;位选片选74ls573芯片工作于锁存方式;送时高位笔型码输出显示;片选

12、573芯片工作;573锁存时高位;只允许第一个数码管亮;延时,调节动态显示效果;取时低位;读时低位笔型码;显示当前闹钟值?若是,秒常亮;显示走时,秒闪;半秒到?;半秒到,秒灭;秒亮movp(),asetbp2.1clrp2.0movp0,#0fdhlcalldelaymova,3ahanla,#0f0hswapamovca,a+dptrsetbp2.0clrp2.1movp0,asetbp2.1clrp2.0movp0,#0fbhlcalldelaymova,3ahanla,#0fhmovca,a+dptrsetbp2.0clrp2.1movp0,asetbp2.1clrp2.0movp(),

13、#()f7hlcalldelayljmpext;送时低位笔型码输出显示;只允许第二个数码管亮;延时,调节动态显示效果;取分高位;输出显示分高位值;只允许第三个数码管亮;延时,调节动态显示效果;取分低位;输出显示分低位值;只允许第四个数码管亮;延时,调节动态显示效果;显示闹钟模块/;校闹钟时或校时显示代码/disp1: jbmovanlswapmovcjnbmovlp2:setbclrmovsetbclrmovlcallmovanl21h.o,loop2a,3bha,#0f0haa,a+dptr2fh.3,lp2a,#()p2.0p2.1p0,ap2.1p2.0p0,#0fehdelaya,3b

14、ha,#ofh;校闹钟分或校分?不是,跳至闹钟分或校分;校闹钟时或校时;显示时高位;半秒到?没,跳止常显示;半秒到,时髙位灭;只允许第一个数码管显示movcjnbmovlp3:jnbjb orl sjmploop3:orl next2:setbclrmov setb clr mov lcall mov anl swap movc setb clr mov setb clr mov lcallmov anl movc mov mov lcall ljmpa,a+dptr2fh.3,lp3a,#021h.1,loop3 2fh.3,next2 a,#8()hnext2a,#80hp2.0p2.1p

15、0,ap2.1p2.0p0,#0fdhdelaya,3aha,#0f0haa,a+dptrp2.0p2.1p0,ap2p2.0p0,#()fbhdelaya,3aha,#0fha,a+dptrp0,ap2,#0f7hdelayext;半秒到?没,显示时低位;半秒到,时低位送灭码;校闹钟时?是,跳校闹钟时;校时,半秒到?没,秒灭;半秒到,秒亮;校闹钟时,秒亮(校闹时,秒常亮;校时,秒闪);只允许第二位数码管显示;取分高位;只允许第三位数码管显示;取分低位;只允许第四位数码管显示;跳至闹钟模块/;校闹钟分或校分显示代码/loop2: movanlswapmovcsetbclrmovsetbclrm

16、ov;只允许第一位数码管显示a,3bha,#0f0haa,a+dptrp2.0p2p0,ap2.1p2.0p(),#()feh;校闹分校分;取时高位lcalldelaymova,3bhanla,#0fhmovca,a+dptrjnb21h.1,loop4jb2fh.3,next3loop4: orla,#80hnext3:setbp2.0clrp2.1movp(),asetbp2.1clrp2.0movp0,#0fdhlcalldelaymova,3ahanla,#0f0hswapamovca,a+dptrjnb2fh.3,lp4clralp4: setbp2.0clrp2.1movp0,as

17、etbp2.1clrp2.0movp0,#0fbhlcalldelaymova,3ahanla,#0fhmovca,a+dptrjnb2fh.3,lp5clralp5: setbp2.0clrp2.1movp(),asetbp2.1clrp2.0movp0,#0f7hlcalldelay;取时低位;校闹钟分?跳校闹分;校分,半秒到?没,秒灭;校闹分,秒亮(校闹钟分,秒常亮;校分,秒闪);只允许第二位数码管显示;取分高位;只允许第三位数码管显示;取分低位;只允许第四位数码管显示/闹钟模块/ext: jbp33,lop;是否允许闹钟?低电平允许mova,32h;开cjnea,30h,lop;判断是

18、否到闹钟时间?mova,33hcjnea,31h,lopmova,#6;到闹钟值,设定蜂鸣器开启时问(默认为6s)subba,34h;设定值-秒值,当c=0时,开启蜂鸣jcloplcallbuzzer;调用蜂鸣器子程序lop:ljmpdisp;反复执行显示模块与闹钟模块/;中断服务程序/itop:movth0,#0bh;t0重赋初值,定时l/16s = 62500usmovtl0,#0dchdjnz2fh,key;到了 1秒?没有跳至判键mov2fh,#16;1秒到,重赋1/16秒计数单元初值mova,34hadda,#l渺+1daa;秒值十进制调整mov34h,a;送回秒单元cjnea,#6

19、0h,key;到了 60秒?没有跳至判键mov34h,#0;到了,秒清0mova,33hadda,#l汾+1daamov33h,acjnea,#60h,key;到了 60分钟?没有跳至判键mov33h,#o;到了,分清0mova,32hadda,#l;时+1daamov32h,acjnea,#24h,key;到了 24小时?没有跳至判键mov32h,#0;到了,时淸0/;判键及键处理/key:jnb20h.1,zoushi;是否为走时?若是,跳到走时ljmpjiaoshi;不是,跳到显示闹钟值zoushi:mova,pl;读入按键信息orla,#0eh;消除闹钟启动位影响cjnea,50h,k

20、eyl;有键按下?ljmpnone1;无按下跳至走时显示key1: mov50h,a;有按下,按键信息存至按键存储单元jnbacc.4,s witchi;若时间/闹钟切换键按下,跳至切换显示代码jnbacc.5,set1;若校时键按下时,跳至校时代码jnbacc.7,sureljmpnone1;按下的键无效,跳至执行走时显示switch 1:cpl20h.0;时间/闹钟显示切换键按下,状态标,忐切换none1: jnb20hoclock1;时间/闹钟显示标志为0,跳转至显示闹钟mov3bh,32h;为1,显示时间mov3ah,33hljmpext1;显示clock 1:mov3bh,30h;闹

21、钟时传给显缓mov3ah,31h;闹钟分传给显缓ljmpext1;显示set1:setb20h.1;校正键按下,走时标志切换至校时mov21h,#0;初始化校正指针clr20h.0;标志为显示闹钟时间mov3bh,3oh;将闹钟值送金显缓mov3ah,31hljmpext1jiaoshlmova,pl;读入按键信息orla,#0ehcjnea,50h,key2;有键按下?ljmpnone2;无键按下跳至走时显示key2: mov50h,a;有按下,按键信息存至按键存储单元jnbacc.5,set2;校时键按下?jnbacc.6,add2;若+1键按下?jnbacc.7,sure;若确定键按下?

22、ljmpnone2;无效键处理set2:inc21h;校时键按下,调整校止指针anl21h,#03h;屏弊高六位,収低两位作为校正指针sjmpnone2add2: mova,#3()h;将闹钟时单元地址取出adda,21h;根据校正指针确定校正单兀movro,amova,r0;収校正单元内容adda,#l;校正单元内容+1daa汁进制调整movr0,a;经校正后传冋cjner0,#30h,c_hour;校闹时?cjnero,#24h,none2;24小时未满,校正显示movr0,#0;时初始化sjmpnone2c_hour:cjner0,#31h,c_min;校闹分?cjner0,#60h,none2;60分钟未满跳,校正显示movr0,#0;分初始化sjmpnone2c_min: cjner0,#32h,min;校时?cjnero,#24h,none2;校时,24小时未满跳,校正显示movr0,#0;时初始化sjmpnone2;min:cjner0,#60h,none2;校分,60分钟未满跳,校正显示movr0,#0;分初始化sjmpnone2sure: cplp3.3;开/关闹钟功能,低电平开clr20h.1;校止确定,显示时间sjmptime2none2: jnb21h,clock2;校闹钟?跳至显示闹钟值time2: setb20h.0;校

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论