数字钟——课程设计报告书.doc_第1页
数字钟——课程设计报告书.doc_第2页
数字钟——课程设计报告书.doc_第3页
数字钟——课程设计报告书.doc_第4页
数字钟——课程设计报告书.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

目录一、设计任务与要求31 设计目的32 设计要求32.1任务及要求.32.2系统功能说明.32.3软件研制方面.42.4硬件研制方面.4二、总体方案设计41 电路的总体原理框图42 实现时钟计时的基本方法53 总体方案介绍53.1 计时方案.53.2 控制方案.5三、数字钟的硬件设计61.1最小系统.61.2时钟电路.81.3单片机复位电路.92、数码显示模块设计.103、仿真实现(电路连接图).114、实验板运行结果.12四、系统软件设计.131、源程序流程图.132.显示时间流程图.133、源程序清单.13五、设计总结191、设计过程中遇到的问题及解决方法192、设计体会19参考文献21一、设计任务与要求1、设计目的(1)通过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;(3)提高综合及灵活运用所学知识解决工业控制的能力,培养动手能力和实际应用能力。2、设计内容2.1任务及要求通过单片机内定时器控制走时,准确持续走时。在六个LED七段数码管上显示时、分、秒。具有通过键盘调整时、分、秒的功能。2.2系统功能说明数字钟的格式为:HH:MM:SS ,由左向右分别为:时、分、秒。完成显示由秒01一直加1至59,再恢复为00;分加1,由00至01,一直加1至59,再恢复00;时加1,时由00加至23之后秒、分、时全部清清零。该数字钟使用T0作50ms的定时中断。走时调整:走时过程中,按下“暂停/继续”键可暂停、继续计时,按下“调时按键”键对“时”显示进行调整(每按一次加1);按下“调分按键”键对“分”显示进行调整(每按一次加1);按下“调秒按键”键“秒”显示进行调整(每按一次加1)。2.3软件研制方面1. 采用模块化程序结构设计软件,首先将整个软件分成若干功能模块;2. 根据流程图,编写源程序;3. 上机调试各模块程序;4. 与硬件一起联调,最后完成全部调试工作。 2.4硬件研制方面1. 将整个硬件系统划分为若干功能单元电路,绘出整个系统原理电路图,注明各交单元电路间接口信号 ;2. 搭建硬件电路,完成各单元电路设计,包括选择合适的各类元器件和电路板设计(元件布局和走线)。二、总体方案设计1. 电路的总体原理框图 根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路 时钟电路 复位电路 单 片 数码管显示 机 调整键盘 2. 实现时钟计时的基本方法利用STC系列单片机的可编程定时/计数器、中断系统来实现时钟定时。(1) 计数初值计算:把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒。假设使用T/C0,方式1,50ms定时,fosc=11.0592MHz。则初值N满足N1/11.0592MHz12s =50000s=50msN=46080。(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。3、总体方案介绍3.1 计时方案利用STC89C52单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。3.2 控制方案STC89C52的P0口外接2个74HC573锁存器,其中一个锁存器接由六个LED数码管(LED6LED1)构成的显示器,作LED的段码输出线,另一个锁存器作六个LED数码管的位控输出线,P2.6接段选锁存器,P2.7接位选锁存器,P3.4P3.7口外接四个按键,构成键盘电路。STC89C52 是一种低功耗,高性能的CMOS 8位微型计算机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本设计中采用此的设计方案。3、 数字钟的硬件设计1.1最小系统STC89C52单片机引脚图如下:MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如下:XTAL1(19 脚)和XTAL2(18 脚):为振荡器输入输出端口。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。RST(9 脚):为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和GND(20 脚):为供电端口,分别接+5V电源的正负端。P0 口P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 口P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉 电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。 Flash 编程和程序校验期间,P1 接收低8 位地址。P2 口P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX RI 指令)时,P2 口输出P2 锁存器的内容。 Flash 编程或校验时,P2亦接收高位地址和一些控制信号。 P3 口P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻 辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。 P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能,P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。具体第二功能如表所示 P3引脚兼用功能P3.0串行通讯输入(RXD)P3.1串行通讯输出(TXD)P3.2外部中断0( INT0)P3.3外部中断1(INT1)P3.4定时器0输入(T0)P3.5定时器1输入(T1)P3.6外部数据存储器写选通WRP3.7外部数据存储器写选通RDRST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。 PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数 据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接 地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。 1.2时钟电路 下图所示为时钟电路原理图,在AT89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。 1.3单片机复位电路 复位电路由两部分组成,电容和电阻。此复位电路称上电复位。上电瞬间,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行。通常,我们还会在电容器两端并接一个按钮开关,如下图所示,此按钮开关就是一个手动的Reset开关。2、数码显示模块设计 显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,如下图所示。 共阴极 共阳极 发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。系统采用动态显示方式,用P0口来控制LED数码管的段控线和位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。3、仿真实现(电路连接图)4、实验板运行结果暂停/继续按键调秒按键 调分按键 调时按键四、系统软件设计1、源程序流程图 初始化 清数码管显示 定时器赋初值 否 是否有键按下? 是 键盘调整时间 显示时间并计时 2、 时间显示流程图3、 源程序清单 /=声明区=/#include#define uint unsigned int /宏定义#define uchar unsigned charuchar tt,ff,ee,dd,cc,bb,aa; /分别定义定时器变量和时、分、秒的六位变量sbit dula=P26; /定义段选位sbit wela=P27; /定义位选位sbit key1=P34; /定义调时按键sbit key2=P35; /定义调分按键sbit key3=P36; /定义调秒按键sbit key4=P37; /定义暂停/继续计时按键uchar code table=0x3f,0x06,0x5b,0x4f,0x66, /09的七段LED共阴极数码表0x6d,0x7d,0x07,0x7f,0x6f;void key01();/声明调时按键子程序void key02();/声明调分按键子程序void key03();/声明调秒按键子程序void key04();/声明暂停/继续计时按键子程序void display(uchar ff,uchar ee,uchar dd,uchar cc,uchar bb,uchar aa); /声明显示子程序void delay(uint z); /声明延时子程序void init(); /声明初始化子程序/=主程序=/void main()init();/初始化子程序while(1)if(key1=0) /键盘扫描key01(); if(key2=0)key02(); if(key3=0)key03();if(key4=0)key04();if(tt=20) tt=0;aa+;if(aa=10) aa=0;bb+; if(bb=6)bb=0;cc+;if(cc=10)cc=0;dd+;if(dd=6)dd=0;ee+;if(ee=10)ee=0;ff+; if(ff=2&ee=4)ee=0; ff=0; display(ff,ee,dd,cc,bb,aa); /以24小时方式显示时间/=延时子程序=/void delay(uint z) /延时子程序(约zms)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/=初始化子程序=/void init() /ff=0; /数码管显示清零ee=0;dd=0;cc=0;bb=0;aa=0;tt=0; /定时变量清零wela=0; /位选清零dula=0; /段选清零TMOD=0x01; /定时器0工作于方式1TH0=(65536-46080)/256;/定时器赋初值TL0=(65536-46080)%256;EA=1;/开总中断ET0=1;/开定时器0中断TR0=1;/开定时器0/=定时器0=/void timer0() interrupt 1 /定时50msTH0=(65536-46080)/256; TL0=(65536-46080)%256;tt+;/=显示子程序=/void display(uchar ff,uchar ee,uchar dd,uchar cc,uchar bb,uchar aa) /显示子程序dula=1;P0=tablebb;dula=0;P0=0xff;wela=1;P0=0xef;wela=0;delay(1);dula=1;P0=tableaa;dula=0;P0=0xff;wela=1;P0=0xdf;wela=0;delay(1);dula=1;P0=tabledd;dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delay(1);dula=1;P0=tablecc;dula=0;P0=0xff;wela=1;P0=0xf7;wela=0;delay(1);dula=1;P0=tableff;dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delay(1);dula=1;P0=tableee;dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay(1);/=调时按键=/void key01() /调时按键if(key1=0)delay(5); /消抖if(key1=0); while(!key1);delay(5); /松手检测while(!key1);TR0=0;ee+;if(ee=10)ee=0;ff+;if(ff=2&ee=4)ee=0;ff=0;display(ff,ee,dd,cc,bb,aa); /=调分按键=/void key02()/调分按键if(key2=0)delay(5);/消抖if(key2=0);while(!key2);delay(5);/松手检测while(!key2);TR0=0;cc+;if(cc=10)cc=0;dd+;if(dd=6)dd=0;display(ff,ee,dd,cc,bb,aa);/=调秒按键=/void key03()/调秒按键if(key3=0)delay(5);/消抖if(key3=0)while(!key3);delay(5);/松手检测while(!key3);TR0=0;aa+;if(aa=10)aa=0;bb+;if(bb=6)bb=0;display(ff,ee,dd,cc,bb,aa);/=暂停/继续计时按键=/void key04()/暂停/继续计时按键if(key4=0)delay(5); /消抖if(key4=0);while(!key4);delay(5);/松手检测while(!key4); TR0=TR0;五、设计总结1、设计过程中遇到的问题及解决方法本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。2、设计体会单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。但当拿到题目时,确实不知道怎么着手,有些迷茫,上网查资料,问老师,在老师的帮助下,历时两个星期

温馨提示

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

评论

0/150

提交评论