简单51单片机数字时钟设计.doc_第1页
简单51单片机数字时钟设计.doc_第2页
简单51单片机数字时钟设计.doc_第3页
简单51单片机数字时钟设计.doc_第4页
简单51单片机数字时钟设计.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

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

文档简介

东华理工大学:单片机课程设计51单片机数字时钟设计课题:简单51单片机数字时钟设计专 业: 电气自动化班 级: 10406321 姓 名: 张晓阳 学 号: 03 老 师:朱星华 2010-6摘要 班级学号 1 设计内容 3 进度安排 3 MCS-51单片机系统简介3 课程设计背景 4 课程设计目的 4 MCS-51单片机内部定时器/计数器中 断系统简介 4 课程设计原理 5 课程设计代码 6 设计相关说明10 设计内容利用单片机的定时计数器,中断系统,以及阵列键盘和LED显示器进行设计。在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制。 进度安排地点:信工楼 单片机实验室设备:计算机,KEIL 51软件、PROTEUS软件仿真、调试一周。 MCS-51单片机系统简介MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。以后我们将用89C51、89S51来完成一系列的实验。MCS-51系列单片机MCS-51系列单片机分为两大系列,即51子系列与52子系列。51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、895152子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952这两大系列单片机的主要硬件特性如下表:上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。51系列的中断源为5个,52系列的中断源为6个。 课程设计背景近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。关键字 : 单片机 时钟设计 MC51 课程设计目的1、综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对单片机软硬知识的理解,获得初步的应用经验。2、学习AT89C51定时/计数器的原理及基本应用。3、掌握多为数码管动态显示方法。4、掌握Keil uVision2 IDE的使用方法。【包括项目文件的建立,给项目添加程序文件,编译、连接项目,形成目标文件,运行调试观察结果,多文件的处理,仿真环境的设置。】5、掌握Keil C51的调试技巧。【包括如何设置和删除断点,如何查看和修改寄存器的内容,如何观察和修改变量,如何观察存储器区域,并行口的使用,定时/计数器的使用,串行口的使用,外中断的使用。】6、掌握PROTEUS软件使用过程。 MCS-51单片机中断系统的结构5个中断源的符号、名称及产生的条件如下。INT0:外部中断0,由P32端口线引入,低电平或下跳沿引起。INT1:外部中断1,由P33端口线引入,低电平或下跳沿引起。T0:定时器计数器0中断,由T0计满回零引起。T1:定时器计数器l中断,由T1计满回零引起。TIRI:串行IO中断,串行端口完成一帧字符发送接收后引起。MCS-51单片机中断系统的结构 课程设计原理单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。显示器件选用LED七段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。使用动态数码显示的方法,运用独立式按键识别过程,按“时”,“分”,“秒”数据送出显示处理方法。 设计代码;简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒; 显示格式:23-59-59(小时十位如果为0则不显示); P0口输出段选信号,P2口输出位选信号; P1.0为调时按钮,P1.1为调分按钮;晶振12M ORG 0000H SJMP MAIN ;跳到主程序 ORG 000BH LJMP ITOP ;跳转到调时程序 ORG 0030HMAIN: MOV 50H,#0FFH;按键信息初始化为未按键状态 MOV 32H,#0 ; 时 MOV 33H,#0 ; 分 MOV 34H,#0 ; 秒 MOV 2FH,#16 ;2FH为十六分之一秒计数单元 CLR 20H.1 ;校正状态标志清零,为正常走时状态 SETB 20H.0 ;时间/日期标志置一,为显示时间状态 MOV TMOD,#01H ;定时器方式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 ;计数开始 MOV 2FH,#16 ;十六分之一秒计数单元 MOV A,34H ADD A,#01H ;在09之间,加01H DA A MOV 34H,A CJNE A,#60H,KEY ;未到60秒转移至KEY 到了则继续下一步 MOV 34H,#00H ;秒单元清零 MOV A,33H ;分单元加1并作十进制调整 ADD A,#01H DA A MOV 33H,A CJNE A,#60H,KEY ;未到60分钟转移 MOV 33H,#00H ;分单元清零 MOV A,32H ;时单元加1并作十进制调整 ADD A,#01H DA A MOV 32H,A CJNE A,#24H,KEY ;未到24小时转移 MOV 32H,#00H ;小时单元清零 KEY:JNB 20H.1,ZOUSHI;是校正状态码?不是,转非校正状态 LJMP JIAOSHI;是,转校正状态ZOUSHI:MOV A,P1 CJNE A,50H,KEY1;是否有键按下 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 ; 显示时间送到缓冲区 MOV 3AH,33H LJMP DISPDATE1:MOV 3BH,30H ; 日期送到显示缓冲区 MOV 3AH,31H LJMP DISP SET1: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 ;是校正键么 JNB ACC.6,ADD2 ; 是加键么 JNB ACC.7,SURE ; 是确定键么 LJMP NONE2 SET2:INC 21H ;校正指针加一 ANL 21H,#03H SJMP NONE2 ADD2: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 NONE2 DATE:CJNE R0,#31H,HOUR ; 显示月份时间 CJNE R0,#32H,NONE2 MOV R0,#1 SJMP NONE2 HOUR:CJNE R0,#32H,MIN ; 显示时间 日期 CJNE R0,#24H,NONE2 MOV R0,#0 SJMP NONE2 MIN:CJNE R0,#60H,NONE2 ;校正分钟 MOV R0,#0 SJMP NONE2 SURE:CLR 20H.1 ; 校正完成 SJMP TIME2NONE2:JNB 21H.1,DATE2 TIME2:SETB 20H.0 ; 判断是都在缓冲区 是时间 还是日期 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 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 DISP1 N1:MOV 42H,#0AH MOV 43H,#0AH LJMP DISP1DISP1:MOV DPTR,#TAB;指向表单 MOV A,43H ;查最高位 MOVC A,A+DPTR CJNE A,#09H,NEXT1;判断最高位是否为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,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 RETI TAB:DB 09H,7DH,07H,15H,71H,91H,81H,3DH,01H,11H,0FFH END开始重赋定时器,计算器初值记时是否校正状态N与上次按键是否相同与上次按键是否相同Y是否为切换键

温馨提示

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

评论

0/150

提交评论