数字时钟设计报告定稿_第1页
数字时钟设计报告定稿_第2页
数字时钟设计报告定稿_第3页
数字时钟设计报告定稿_第4页
数字时钟设计报告定稿_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计报告题目数字时钟姓名学号专业实验室班级同组成员设计时间评定成绩审阅教师摘要本次做的单片机课程设计是数字时钟。该时钟是以单片机(STC89C52RC)为核心,结合共阴极LED数码管、锁存器74HC573等元件设计硬件电路,再配以相应的程序,使它具有时,分,秒显示的功能;并且通过按键还可以进行时,分,秒的调整。单片机P0口接74HC373的输入端,发送断段码与位码,P26与P27连接74HC373的使能端,选择P0口发送断码还是位码。P35、P36、P37连接三个独立按键,P35连接按键按下选择进行时调、分调还是秒调;P36按键按下进行加一;P3,7按键按下进行减一。同时还有复位电路。关键词单片机STC89C52RC共阴极LED数码管74HC373锁存器目录一课题名称、意义、功能及分工211课题名称基于52单片机的数字时钟212设计意义213功能214分工2二系统基本原理221STC89C52RC单片机介绍222STC89C52RC引脚功能说明2三硬件设计231单片机最小系统232显示电路233按键电路2四软件设计241主程序242数码管显示模块243定时器/计数器T0中断服务程序244主程序流程图245STC89C52引脚分配246变量存储空间说明247程序清单2五调试2六故障的检测与分析261指令跳转不到预定的地址262位选地址循环次数错误2七总结271收获272体会273建议274要求21课题名称、意义、功能及分工11课题名称基于52单片机的数字时钟12设计意义在常生活和工作中,我们常常用到定时控制。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。它电路简单,功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品。随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机多功能定时系统,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,同时又可以进行时钟校准和定点打铃。它可以执行不同的时间表(考试时间和常作息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能13功能能实现显示时间的时、分、秒,并具有时、分、秒的设置和调控功能。14分工在小组中张波负责负责软件设计,程序调试与仿真图绘制,陈侃负责硬件电路安装,硬件电路的调试,并且和张波一起同整体方案设计做出修改,阳纯明负责后期的文档编辑及整体方案设计,与撰写实习报告。2系统基本原理这里采用应用广泛的STC89C52作为时钟控制芯片,利用单片机内部的定时/计数器T0实现软时钟的目的。首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50MS),然后用另一个定时/计数器T1对基准时间计数形成秒,秒计60次形成分,分计60形成小时,小时计到24。最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。此外还要实现对时间的调整功能,89C52的P35、P36、P37外接三个独立按键,当按下P35按键时,系统进入调时间的状态或启动时间显示的功能;当按下P36按键时,对显示的数码管进行加一的功能;当按下P37按键时,对显示的数码管进行减一的功能,达到调整时间的目的。21STC89C52RC单片机介绍STC89C52RC单片机一款高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。STC89C52RC主要特性如下工作电压55V33V(5V单片机)/38V20V(3V单片机)工作频率范围040MHZ,相当于普通8051的080MHZ,实际工作频率可达48MHZ。用户应用程序空间为8K字节片上集成512字节RAM。通用I/O口(32个),复位后为P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。共3个16位定时器/计数器。即定时器T0、T1、T2。外部中断4路,下降沿中断或低电平触发电路,POWERDOWN模式可由外部中断低电平触发中断方式唤醒。通用异步串行口(UART),还可用定时器软件实现多个UART。STC89C52RC单片机的工作模式有掉电模式、空闲模式、正常工作模式。掉电模式,典型功耗01A,可由外部中断唤醒,中断返回后,继续执行原程序;空闲模式,典型功耗2MA;正常工作模式,典型功耗4MA7MA。22STC89C52RC引脚功能说明P0端口(P00P07,3932引脚)P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在FLASHROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P10P17,18引脚)P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。此外,P10和P11还可以作为定时器/计数器2的外部技术输入(P10/T2)和定时器/计数器2的触发输入(P11/T2EX)。P2端口(P20P27,2128引脚)P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器和16位地址的外部数据存储器时,P2送出高8位地址。在访问8位地址的外部数据存储器时,P2口引脚上的内容,在整个访问期间不会改变。在对FLASHROM编程和程序校验期间,P2也接收高位地址和一些控制信号。P3端口P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。3硬件设计本数字时钟系统的硬件电路是由单片机最小系统、按键电路、显示电路三部分组成。具体系统框图如图所示。MCU时钟电路按键复位电路显示电路31单片机最小系统单片机最小系统是由按键复位电路、时钟电路、STC89C52单片机组成,电路图如图31所示。图31单片机最小系统图32显示电路该显示电路由6位数码管和、74HC573芯片和8组上拉电阻组成。数码管负责数据显示,74HC573芯片负责扩展单片机端口,8组上拉电阻上拉P0口电流。显示电路电路图如图32。图32显示电路电路图33按键电路按键电路由三个独立按键组成,可通过按键调节数码管显示的时间。图33按键电路电路图4软件设计41主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。42数码管显示模块本实验有6个数码管,从右到左为妙、分、时。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的段码,从P0端口输出,同时在P27端口进行数码管显示。43定时器/计数器T0中断服务程序T0用于计时,选中方式一,重复定时,定时时间设为50MS,定时时间到则中断,在中断服务程序中用一个计数器对50MS计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。44主程序流程图此次系统软件设计是基于汇编语言编写,对于设计的程序见附录。并且主程序流程图如图所示现场保护,重置初值,启动下一个50MS是开始显示单元清0T0、T1设为16位计数模式允许T0中断调用显示子程序进入功能程序按下键开始中断返回50MS计数器加一秒单元加一,50MS计数器清0分单元加一,秒单元清0时单元加一,分单元清0时单元清050MS计数器20秒单元60分单元60时单元24主程序流程图T0中断服务程序NNNN45STC89C52引脚分配引脚功能引脚功能XTAL1时钟电路接口P26数码管段码选通位XTAL2时钟电路接口P27数码管位码选通位RST按键复位电路P35独立按键P1数据输出到数码管P36独立按键P37独立按键46变量存储空间说明变量名存储空间功能TABDPTR09的字段表78H、79H、7AH存取放时、分、秒70H、71H存取秒的低位与高位72H、73H存取分的低位与高位74H、75H存取时的低位与高位7BH存取定时器溢出次数7CH存取按键次数R1读取存放时、分、秒高低位单元的地址R3循环次数R5数码管位选存储地址47程序清单ORG0000HLJMPSTARTORG000BHLJMPINIT0STARTMOVR0,70H主程序开始MOVR7,0CHINITMOVR0,00HINCR0DJNZR7,INITMOVTMOD,01H选择定时器/计数器T0的方式1MOVTL0,0B0H对低位赋初值MOVTH0,03CH高位赋初值SETBEASETBET0SETBTR0START1LCALLSCANLCALLKEYSCANSJMPSTART1DL1MSMOVR6,14H延时1子程序DL1MOVR7,19HDL2DJNZR7,DL2DJNZR6,DL1RETDL20MSACALLSCAN延时20MS子程序ACALLSCANACALLSCANRETSCANMOVA,78H数码管显示程序开始MOVB,0AHDIVAB时间秒的十位送给A,时间秒的个位送BMOV71H,A时间秒要显示的十位MOV70H,B时间秒要显示的个位MOVA,79HMOVB,0AHDIVAB时间分的十位送给A,时间分的个位送BMOV73H,A时间分要显示的十位送地址MOV72H,B时间分要显示的个位送地址MOVA,7AHMOVB,0AHDIVAB时间时的十位送给A,时间时的个位送BMOV75H,A时间时显示的十位送地址MOV74H,B时间时要显示的个位送地址MOVR1,70HMOVR5,0DFH位码送到R5MOVR3,06H置循环次数SCAN1MOVA,R5数码管的显示程序MOVP0,ASETBP27CLRP27MOVA,R1MOVDPTR,TABMOVCA,ADPTR对字段表取值显示CJNER3,04H,SCAN2分的个位显示点ADDA,80HSCAN2CJNER3,02H,SCAN3时的个位显示点ADDA,80HSCAN3MOVP0,ASETBP26CLRP26LCALLDL1MSINCR1MOVA,R5RRA数码管的位MOVR5,ADJNZR3,SCAN1RET“09“的字段表TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHINIT0PUSHACC定时/计数器T0中断程序PUSHPSWCLRET0CLRTR0MOVTL0,0B0HMOVTH0,03CHSETBTR0INC7BHMOVA,7BHCJNEA,14H,OUTT050MS是否到20次,没有到就继续执行50MS的延时MOV7BH,00INC78HMOVA,78HCJNEA,3CH,OUTT0一秒的延时是否计到60次,没有就继续执行MOV78H,00INC79HMOVA,79HCJNEA,3CH,OUTT0MOV79H,00INC7AHMOVA,7AHCJNEA,18H,OUTT060分钟的延时是否计到24次,没有就继续执行程序MOV7AH,00OUTT0SETBET0启动定时器T0POPPSWPOPACCRETIKEYSCANCLREA按键处理程序JNBP35,KEYSCAN0P35有按键按下则跳转到子程序JNBP36,KEYSCAN1P36有按键按下则跳转到子程序JNBP37,KEYSCAN2P37有按键按下则跳转到子程序KEYOUTSETBEARETKEYSCAN0LCALLDL20MS20MS的延时消抖JBP35,KEYOUTWAIT0JNBP35,WAIT0判断按键是否松手,松手就往下执行程序INC7CHMOVA,7CHCLRET0CLRTR0CJNEA,04H,KEYOUT按下第一次、第二次和第三次对时、分、秒选定MOV7CH,00按下第四次时就启动计时SETBET0SETBTR0SJMPKEYOUTKEYSCAN1LCALLDL20MS按键加一的程序JBP36,KEYOUTWAIT1JNBP36,WAIT1判断按键是否松手,松手就往下执行程序MOVA,7CHCJNEA,03H,KSCAN10如果功能键按下第三次则对秒加一调整INC78HMOVA,78HCJNEA,3CH,KEYOUT如果秒加到60则清零MOV78H,00LJMPKEYOUTKSCAN10CJNEA,02H,KSCAN11如果功能键按下第二次则对分加一调整INC79HMOVA,79HCJNEA,3CH,KEYOUT如果加到60则清零MOV79H,00SJMPKEYOUTKSCAN11CJNEA,01H,KEYOUT如果功能键是按下第一次则对分进行加一调整INC7AHMOVA,7AHCJNEA,18H,KEYOUTMOV7AH,00HSJMPKEYOUTKEYSCAN2LCALLDL20MS延时消抖程序JBP37,KEYOUTWAIT2JNBP37,WAIT2判断是否放开按键MOVA,7CHCJNEA,03H,KSCAN20如果功能键是按下第三次对秒进行减一DEC78HMOVA,78HCJNEA,0FFH,KEYOUTMOV78H,3BHSJMPKEYOUTKSCAN20CJNEA,02H,KSCAN21如果功能键是按下第二次对分进行减一DEC79HMOVA,79HCJNEA,0FFH,KEYOUTMOV79H,3BHLJMPKEYOUTKSCAN21CJNEA,01H,ZY如果功能键是按下第一次则对分进行减一DEC7AHMOVA,7AHCJNEA,0FFH,ZYMOV7AH,17HLJMPKEYOUTZYLJMPKEYOUT中间跳转RETEND五调试本系统的软件编写是在KEIL软件上进行,并在PROTEUS仿真软件进行硬件设计。为了程序调试方便,将KEIL编译后生成的HEX文件加载到PROTEUS中,点击仿真。仿真出的结果满足大概的要求后,再将HEX文件烧录到单片机开发板内。在单片机开机上电后,时间显示000000。经过1S后,秒加一。当按下按键时,可以实现对时间的调节。系统设计达到实训要求。PROTEUS仿真图、实际检测图如下。P267P27P076P054P032P01P01P023P045P067P26P01P023P045P067XTAL218XTAL119ALE301PSN29RST9P0/AD0391/18P02/AD2373/36P04/AD4355/54P06/AD637/72P10/T21/EX2P12334P14556P16778P30/RXD101/TP32/IN012/IT13P34/014P37/RD176/W65/T15P27/A1528P20/A8211/9P2/A0233/14P24/A2255/1366/47U1AT89C52C130PFC230PFX1CRYSTALD0213D2435D4657D6879Q01918Q21736Q41554Q61372LE1OU274HC573D0213D2435D4657D6879Q01918Q21736Q41554Q61372LE1OU374HC573234567891RP1RESPACK8C32UR110K图51PROTEUS仿真图图52具体实验效果图六故障的检测与分析遇到的问题由于用汇编语言编写程序,在编程过程中使用到的各种寄存器、存储器地址、变量很多,很难做到对程序的整体把握。61指令跳转不到预定的地址在编译软件时总是出现错误,检查发现语句没有问题,后经同学提醒发现条件转移指令跳转不到预定的地址,要先跳转到一个可以跳转到的地址,然后再用长跳转跳到预定地址,就正常显示了。62位选地址循环次数错误在第一次仿真时,数码管全部显示0,其

温馨提示

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

评论

0/150

提交评论