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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子时钟课程设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子时钟课程设计.docx

1、电子时钟课程设计 目录一、设计内容 2二、设计目的 2三、设计要求 24.2时钟电路设计 64.3、复位电路设计 64.4、键盘电路设计 74.5、显示部分设计 8五.单片机课程设计思路 95.1、计时部分课程设计思路 95.2、定时器 T0初值的设置计算 95.3、按键判断部分课程设计思路 95.4、数码管显示部分. 10六、资源分配: 10八、主程序流程图 11九、课程设计程序 12十、心得体会 17附使用说明: 18一、设计内容多功能电子时钟二、设计目的1 进一步熟悉和掌握8051单片机的结构及工作原理。2 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3 通过课程设计,掌握以单

2、片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。4 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。5 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。6.掌握SPI串口进行数据传输的应用,并学会使用外部芯片辅助项设计. 7.锻炼通过自学与自己探索的方式解决问题的能力. 8.通过此次课程设计将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力.三、设计要求1、准确计时,以数字形式显示月、日、时、分的时间。2、月以12个月计时,日以30进位,小时以24小时计时形式,分秒计时为60进

3、位。 3、校正时间功能,即能随意设定走时时间。5、设计5V直流电源,系统时钟电路、复位电路。 6、能指示秒节奏,即秒提示。7、系统共用4个数码管从左到右依次显示月、日/时、分采用软件译码静态显示。8、按键处理设置为:如没有按键,则时钟正常走时并且第二个数码管的小数点一秒一下。9、当按下K1按键时进入时间/日期切换键时,显示日期小数点常亮,再按一下有变成时间显示。10、校正时间功能在按下校正键时k2,分数码管重复闪烁,这样在按下k3键可以进行校时。在按下校正键时k2,时数码管重复闪烁,这样在按下k3键可以进行校时在按下校正键时k2,日数码管重复闪烁,这样在按下k3键可以进行校时在按下校正键时k2

4、,月数码管重复闪烁,这样在按下k3键可以进行校时11、K4为确定键,按下后程序正常走时四、 硬件件部分设计4.1、STC89C51单片机介绍STC89C51单片机是由深圳宏晶公司代理销售的一款MCU,是由美国设计生产的一种低电压、高性能CMOS 8位单片机,片内含8kbytes的可反复写的FlashROM和128bytes的RAM,2个16位定时计数器5。 STC89C51单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0P3、定时器/计数器、串行I/O接口以及定时控制逻辑电路等。这些部件通

5、过内部总线联接起来,构成一个完整的微型计算机。其管脚图如图所示。STC89C51单片机管脚结构图VCC:电源。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流

6、,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是

7、8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RS

8、T:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储

9、器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。4.2时钟电路设计AT89C51系列的单片机的时钟方式分为内部方式和外部方式。内部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就构成了自己振荡器在单片机内部产生时钟脉冲信号。外部时

10、钟方式是把外部已经有的时钟信号引入到单片机内部。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准震荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。其电路图如图4-1所示。图4-1 时钟电路图4.3、复位电路设计复位操作完成单片机内电路的初始化,使单片机从一种确定的状态开始运行。当AT89C51单片机的复位引脚RST出现5ms以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此

11、要求单片机复位后能脱离复位状态复位操作通常有2种基本形式:上电复位、开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。其电路图如图4-2所示。图4-2 复位电路图4.4、键盘电路设计键盘扩展4*4 本次电子闹钟的设计共使用了4个按键,各个按键的功能如表1所示。 4*4行列式键盘,正好用一个单片机的端口8个IO口来控制,同时通过短路片,实现四个独立式的IO口接法表1 各按键的接法和功能按键名称连线方法按键功能K1K2K3K4一端接P1.4,一端接地一端接P1.5,一端接地一端接P1.6,一端接地一端接P

12、1.7,一端接地切换键,切换日期与时间校正键校时键,确定键4.5、显示部分设计静态显示,最常用就是通过两个IO口,模拟串行输出到74LS164,理论上可以无限制的控制数码管,这里我们只控制4个共阳数码管数码显示有静态显示方式与动态显示方式两种。工作在静态显示方式时,数码管的位线与电源一直相联,每个数码管均处在通电状态,电路的待显示信号经译码驱动电路后分别传输给显示电路,每个数码管同时收到并显示各自接受到的信号。静态显示时每个数码管均联接有7段线,即每个数码管都需要7个联接端口,这样显示电路在输出端需要的联接端口数等于7,数字电路的待显示信号位数越多,显示电路需要的联接端口就越多。五.单片机课程

13、设计思路5.1、计时部分课程设计思路该课程设计是利用80C51单片机内部的定时计数器、中断系统、以及行列键盘,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并能通过按键实现设置时间、校时、启动控制等。用定时计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为62500ms(自己计算)。形成定时时间为62500ms。用片内RAM的2FH单元对62500ms计数,计16次产生秒计数器34H单元加1,秒计数器加到60则分计数器33H单元加1,分计数器加到60则时计数器32H单元加1,时计数器加到24则时计数器清0。然后把分、时 、日、月计数器分成分单元和时单元放到

14、4个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时高位、小时低位-分高位、分低位和显示日期格式为月高位、月低位-日高位、日低位。5.2、定时器 T0初值的设置计算初值=最大计数值-定时时间/Tcy我们采用12M晶振,机器周期为1US,最长定时时间为65ms,为了可以实现1S定时,我们将1S分成十六次来计数,每次计数为1000ms/16=62.5ms.定时器初值=(65 536-62500)*机器周期=3036=0BDC因此定时器的初值设置为:(TH0)=0BH,(TL0)=0DC5.3、按键判断部分课程设计思路 当没十六微妙进位一次时,程序就进行一次判断按键是否有按下的(是否有校正键按

15、下k2),判断是否与上次按键相同,如果相同直接送入时间缓冲间送出显示,如果不相同就保存按下的按键再进行判断是不是切换键(ACC.5,SET2)按下,如果是时间时期同时取反,将取反时间送入时间缓冲间送出显示同时将取反日期送入日期缓冲间送出显示。如果不是,判断是否是校正键按下,如果不是重复将取反时间送入时间缓冲间送出显示同时将取反日期送入日期缓冲间送出显示。如果是校正键按下就进入校正状态,将校正指针初值设成(00,01、10、11、分别代表分、时日、月)同样判断校正指针(20H.1)中的值进入下面分、时、日、月四个子程序中执行,同时进入每个时间日期子程序中都要进行判断是否有ACC.6 ,ADD2;

16、(加法)和ACC.7,SURE;确定键按下.每次按键任何一个键都要送入时间日期缓冲间显示。5.4、数码管显示部分. 把我们设计好的程序通过查表在数码管上显示出来,数码管上从左到右分别显示月、日/时、分,四个数码管分别显示高位和低位,切换时间显示时,要显示出小数点闪烁.六、资源分配: 按键信息存储单元 50H月单元 30H日单元 31H时单元 32H分单元 33H秒单元 34H计数单元 2FH清零标志位 20H.1;时间/日期标志位 20H.0 显示的四位BCD码依次放入43H、42H、41H、40H校正指针 21H显示缓冲区 3BH 3AH,K1 P1.4K2 P1.5K3 P1.6K4 P1

17、.7七、计时模块流程图 保护现场 重装定时器初值循环次数减1否满16次?是秒单元加1否60s到?是秒单元清0,分单元加1否60分到?是分单元清0,时单元加1否24小时到?是时单元清0,日单元加1 否日单元=30? 是日单元清0,月单元加1 否月单元=12? 是恢复现场返回 计时模块流程图八、主程序流程图九、课程设计程序 ORG 0000H SJMP MAIN ORG 000BH LJMP ITOP ORG 0030HMAIN: MOV 50H,#0FFH ;按键信息初始化为未按键状态 MOV 30H,#1 ;月单元 MOV 31H,#1 ;日单元 MOV 32H,#0 ;时单元 MOV 33H

18、,#0 ;分单元 MOV 34H,#0 ;秒单元 MOV 2FH,#16 ;2FH为十六分之一秒计数单元 CLR 20H.1 ;校正状态标志清零,为正常走时状态 SETB 20H.0 ;时间/日期标志置1 MOV TMOD,#01H ;置T0工作于方式1 MOV TH0,#0BH ;采用12M晶振,定时十六分之一秒 MOV TL0,#0DCH ;装载定时器初值 MOV IE,#82H ; 允许中断 SETB TR0 ;启动定时器 SJMP $ITOP: PUSH PSW ;现场保护 PUSH ACC MOV TH0,#0BH MOV TL0,#0DCH DJNZ 2FH,KEY ;计数开始 M

19、OV 2FH,#16 ;十六分之一秒计数单元 MOV A,34H ADD A,#01H ;在09之间,加01H DA A ;进行十进制调整 MOV 34H,A ;送到秒计数单元 CJNE A,#60H,KEY ;未到六十秒转移到KEY,到了则顺序往下执行 MOV 34H,#00H ;秒单元清零 MOV A,33H ;分单元加1,并做十进制调整 ADD A,#01H DA A MOV 33H,A ;送到分计数单元 CJNE A,#60H,KEY ;未到六十分转移到KEY MOV 33H,#00H ;分单元清零 MOV A,32H ;时单元加1,并做十进制调整 ADD A,#01H DA A MO

20、V 32H,A ;送到时单元 CJNE A,#24H,KEY ;未到二十四小时转移,到了则顺序往下执行 MOV 32H,#00H ;时单元清零 MOV A,31H ;日单元加1,并做十进制调整 ADD A,#01H DA A MOV 31H,A ;送到日单元 CJNE A,#31H,KEY ;未到三十一天转移 MOV 31H,#01H ;日单元变为一 MOV A,30H ;月单元加1,并做十进制调整 ADD A,#01H DA A MOV 30H,A ;送到月单元 CJNE A,#12H,KEY ;未到十二个月转移 MOV 30H,#01H ;月单元变为一KEY: JNB 20H.1,ZOUS

21、HI ;判断是否校正状态,不是,则转非校正状态 LJMP JIAOSHI ;是,则转为校正状态ZOUSHI: MOV A,P1 CJNE A,50H,KEY1 ;判断是否与上次按键相同,不相同则转移到KEY LJMP NONE1 ;相同则不断判键KEY1: MOV 50H,A ;保存上次按键信息 JNB ACC.4,SWITCH1 ;是否按下切换键 JNB ACC.5,SET1 ;是否为校正键 LJMP NONE1 ;没按与无效键均不作判断SWITCH1:CPL 20H.0 ;时间与日期的转换NONE1: JNB 20H.0,DATE1 ;判断日期与时间的标志 MOV 3BH,32H ;将时间

22、送到显示缓冲区 MOV 3AH,33H LJMP DISPDATE1: MOV 3BH,30H ;将日期送到显示缓冲区 MOV 3AH,31H LJMP DISPSET1: SETB 20H.1 ;切换到校正标志 MOV 21H,#0 ;校正指针并请零 CLR 20H.0 ;选择日期标志 MOV 3BH,30H ;将日期送到显示缓冲区 MOV 3AH,31H LJMP DISPJIAOSHI:MOV A,P1 CJNE A,50H,KEY2 ;判断是否与上次按键相同 LJMP NONE2 ;若相同则不能判断按键KEY2: MOV 50H,A ;保存上次按键信息 JNB ACC.5,SET2 ;

23、是否为校正键 JNB ACC.6,ADD2 ;是否为加键 JNB ACC.7,SURE ;是否为确定键 LJMP NONE2 ;空操作SET2: INC 21H ;校正指针并自动加1 ANL 21H,#03H SJMP NONE2ADD2: MOV A,#30H ;指向需要校正的指针 ADD A,21H MOV R0,A MOV A,R0 ;需要校正的指针并自动加1 ADD A,#1 DA A MOV R0,A CJNE R0,#30H,DATE ;判断月是否校正完成,校正完成跳转日 CJNE R0,#13H,NONE2 MOV R0,#1 SJMP NONE2DATE: CJNE R0,#3

24、1H,HOUR ;判断日是否校正完成,完成则跳转到时 CJNE R0,#32H,NONE2 MOV R0,#1 SJMP NONE2HOUR: CJNE R0,#32H,MIN ;判断时是否校正完成,完成则跳转到分 CJNE R0,#24H,NONE2 MOV R0,#0 SJMP NONE2MIN: CJNE R0,#60H,NONE2 ;校正分 MOV R0,#0 SJMP NONE2SURE: CLR 20H.1 ;校时完成跳转到走时标志 SJMP TIME2NONE2: JNB 21H.1,DATE2 ;判断送到显示缓冲区的是时间还是日期TIME2: SETB 20H.0 ;时间/日期

25、标志置1,为显示时间状态 MOV 3BH,32H ;时间送到显示缓冲区 MOV 3AH,33H LJMP DISPDATE2: CLR 20H.0 ;时间/日期标志位清零,为显示日期状态 MOV 3BH,30H ;日期送到显示缓冲区 MOV 3AH,31H DISP: MOV A,3BH ;显示缓冲区中的内容分解为四位BCD码依次放入43H40H单元 ANL A,#0F0H SWAP A MOV 43H,A MOV A,3BH ANL A,#0FH MOV 42H,A MOV A,3AH ANL A,#0F0H SWAP A MOV 41H,A MOV A,3AH ANL A,#0FH MOV

26、 40H,A JNB 20H.1,DISP1 ;不是校正状态,正常显示,否则校正状态下,闪烁显示 JNB 2FH.3,DISP1 ;若2FH.3为0正常显示,若2FH.3为1,校正内容对应的BCD码单元送熄灭码 JNB 21H.0,N1 ;从校正指针判断送熄灭码的单元,为0高两位传送,为1低两位传送 MOV 40H,#0AH MOV 41H,#0AH SJMP DISP1N1: MOV 42H,#0AH MOV 43H,#0AH LJMP DISP1DISP1: MOV DPTR,#TAB ;指向表单 MOV A,43H ;查最高位 MOVC A,A+DPTR CJNE A,#09H,NEXT

27、1 ;判断最高位是否为0 MOV A,#0FFH ;为0 则给熄灭码NEXT1: MOV SBUF,A ;传送到数码管上,串行静态显示 JNB TI,$ CLR TI MOV A,42H ;查第二位 MOVC A,A+DPTR MOV C,2FH.3 ;判断并改变小数点,并判断半秒亮半秒灭 ANL C,20H.0 MOV ACC.0,C MOV SBUF,A ;传送到数码管上 JNB TI,$ ;等待传输完毕 CLR TI ;允许继续传输 MOV A,41H ;查第三位 MOVC A,A+DPTR ;查显示数据对应段码 JB 20H.0,NEXT2 ;判断时间/日期标志 CJNE A,#09H

28、,NEXT2 ; 日期灭0,时间状太不灭0 MOV A,#0FFHNEXT2: MOV SBUF,A JNB TI,$ CLR TI MOV A,40H ;查第四位 MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI POP ACC ;现场恢复 POP PSW RETITAB: DB 09H,7DH,07H,15H,71H,91H,81H,3DH,01H,11H,0FFH END 十、心得体会做了两天的课程设计,有很多的心得体会,有关于单片机的,也有关于模电数电等基础科目的。单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。实践中获得

29、的知识能让我对单片机的知识有更好的认识和理解。虽然这次的课程设计我参考了一些文献资料,没有做到创新,但在对程序的读写过程中我明白了许多。这次课程设计的最大收获是只有把理论用到实践中我们才能真正掌握好所学知识。因为平时单片机已经看得少,对单片机知识有些生疏,无法灵活运用。刚拿到题目,不知道从哪入手,后来通过查找一些文献资料,参考学长的设计,加深了对单片机的记忆,对设计也有些思路。单片机课堂教学考虑到大多数同学的需求,主要强调“基本”基本知识、基本理论、基本方法、基本技能。而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。我们正面临就业问题,这次课设给了我们一个机会去试验。附使用说明:K1为切换键,K2为校正键,K3为校时键,K4为确定键如没有按按键,则时钟正常走时并且第二个数码管的小数点一秒一下。当按下K1按键时进入时间/日期切换键时,显示日期小数点常亮,再按一下有变成时间显示。在按下校正键时k2,月数码管重复闪烁,这样在按下k3键可以进行校时。再按下校正键时k2,日数码管重复闪烁,这样在按下k3键可以进行校时第三次按下校正键时k2,时数码管重复闪烁,这样在按下k3键可以进行校时第四次按下校正键时k2,分数码管重复闪烁,这样在按下k3键可以进行校时K4为确定键,按下后程序正常走时

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1