基于单片机的数字钟设计-职业学院电子信息工程技术毕业论文设计_第1页
基于单片机的数字钟设计-职业学院电子信息工程技术毕业论文设计_第2页
基于单片机的数字钟设计-职业学院电子信息工程技术毕业论文设计_第3页
基于单片机的数字钟设计-职业学院电子信息工程技术毕业论文设计_第4页
基于单片机的数字钟设计-职业学院电子信息工程技术毕业论文设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

安徽工贸职业技术学院毕业设计(论文) 1 Anhui Vocactional 校验程序时输出指令字节,要求外 接上拉电阻。 在访问外部程序和外部数据存储器时,P0 口是分时转换的地址(低 8 位)/数据总线, 访问期间内部的上拉电阻起作用。 (2) P1 端口P1.0P1.7 P1 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时 可驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。 对内部 Flash 程序存储器编程时,接收低 8 位地址信息。 (3) P2 端口P2.0P2.7 P2 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时 可驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接收高 8 位地址和控制信息。 在访问外部程序和 16 位外部数据存储器时,P2 口送出高 8 位地址。而在访问 8 位地 址的外部数据存储器时其引脚上的内容在此期间不会改变。 (4) P3 端口P3.0P3.7 P2 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时 可驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。 对内部 Flash 程序存储器编程时,接控制信息。除此之外 P3 端口还用于一些专门功 能,具体请看下表。 安徽工贸职业技术学院毕业设计(论文) 13 表 3-1P3 端口引脚兼用功能表 2.2 LED 显示电路 显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工 艺,单片机应用系统中常用的显示器有: 发光二极管 LED 显示器、液晶 LCD 显示器、CRT 显示器等。LED 显示器是现在最常用的显示器之一,如下图所示。 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外部数据存储器写选通 WR P3.7外部数据存储器写选通 RD 安徽工贸职业技术学院毕业设计(论文) 14 图 3-2 LED 显示器的符号图 发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用, 也可以组装成分段式或点阵式 LED 显示器件(半导体显示器)。分段式显示器(LED 数码 管)由 7 条线段围成 8 字型,每一段包含一个发光二极管。外加正向电压时二极管导通, 发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED 数码 管有共阳、共阴之分。图是共阳式、共阴式 LED 数码管的原理图和符号. 图 3-3 共阳式、共阴式 LED 数码管的原理图和数码管的符号图 显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要 6 个数码管, 另需两个数码管来显示横。采用动态显示方式显示时间,硬件连接如下图所示,时的十位 和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数 码管,秒的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线。LED 显 示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多位 LED 显示器,通常都是采用动态扫描的方法进行显示,其硬件连接方式如下图所示。 安徽工贸职业技术学院毕业设计(论文) 15 图 3-4 数码管的硬件连接示意图 数码管使用条件: a、段及小数点上加限流电阻 b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定 c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流 100mA 数码管使用注意事项说明: ()数码管表面不要用手触摸,不要用手去弄引角; ()焊接温度:度;焊接时间: ()表面有保护膜的产品,可以在使用前撕下来。 2.3 键盘控制电路 该设计需要校对时间, 所以用三个按键来实现。 按 hour 来调节小时的时间, 按 minute 来调节分针的时间,按 sceond 来调节秒的时间。下图是按键硬件连接图。 安徽工贸职业技术学院毕业设计(论文) 16 图 3-5 按键控制电路的硬件连接图 当用手按下一个键时,如图 3-6 所示,往往按键在闭合位置和断开位置之间跳几下才 稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的 持续时间随键盘材料和操作员而异,不过通常总是不大于 10ms。很容易想到,抖动问题不 解决就会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟 10ms 来等待抖动消失,这之后,在读入键盘码。 图 3-6 按键抖动信号波形 键按下 前沿抖动后沿抖动 闭合 稳定 安徽工贸职业技术学院毕业设计(论文) 17 第三章第三章 数字钟的软件设计数字钟的软件设计 系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件(完 成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方 面的问题: (1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的 总体结构,使软件开发清晰、简洁和流程合理; (2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便 于调试、链接,又便于移植和修改; (3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数; (4)绘制程序流程图; (5)合理分配系统资源; (6)为程序加入注释,提高可读性,实施软件工程; (7)注意软件的抗干扰设计,提高系统的可靠性。 3.13.1 系统软件设计流程图系统软件设计流程图 这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。 主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可 以显示时间。 图 4-1 主程序流程图 按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加 1;如果没有按下,就 检测分按键是否按下,分按键如果按下,分就加 1;如果没有按下,就检测时按键是否按 下,时按键如果按下,时就加 1;如果没有按下,就把时间显示出来。 开始 启动定时器 按键检测 时间显示 安徽工贸职业技术学院毕业设计(论文) 18 图 4-2 按键处理流程图 N Y N Y N Y hour 加 1 显示时间 结束 开始 sceond 按 键 按 下? sceond 加 1 minute 按 键 按 下? minute 加 1 hour 按键按下? 安徽工贸职业技术学院毕业设计(论文) 19 定时器中断时是先检测 1 秒是否到,1 秒如果到,秒单元就加 1;如果没到,就检测 1 分钟是否到,1 分钟如果到,分单元就加 1;如果没到,就检测 1 小时是否到,1 小时如果 到,时单元就加 1,如果没到,就显示时间。 N 24 小时到? 分单元清零,时单元加 1 N N N Y Y 时单元清零 时间显示 中断返回 开始 一秒时间到? 60 秒时间到? 60 分钟到? 秒单元加 1 秒单元清零,分单元加 1 Y Y 安徽工贸职业技术学院毕业设计(论文) 20 图 4-3 定时器中断流程图 时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然 后是分十位显示,再就是时个位计算显示,最后是时十位显示。 图 4-4 时间显示流程图 时十位计算显 示 结束 开始 秒个位计算显 示 秒十位计算显 示 分个位计算显 示 分十位计算显 示 时个位计算显 示 安徽工贸职业技术学院毕业设计(论文) 21 3.2 数字钟的原理图 用 PROTUES 软件,根据要求画出数字电子钟的原理图如下所示。 图 4-5 数字钟的原理图 在此有必要介绍一下数字电子钟的工作原理。 工作原理 : 数字电子钟是一个将“ 时” , “分” , “秒”显示于人的视觉器官的计时装置。它的计 时周期为 24 小时,显示满刻度为 23 时 59 分 59 秒,另外还有校时功能。因此,一个基本 的数字钟电路主要由显示器“时” , “分” , “秒”和单片机,还有校时电路组成。8 个数码 管的段选接到单片机的 P0 口,位选接到单片机的 P2 口。数码管按照数码管动态显示的工 作原理工作,将标准秒信号送入“秒单元” , “秒单元”采用 60 进制计数器,每累计 60 秒 发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。 “分单元”也采用 60 进 制计数器,每累计 60 分钟,发出一个“时脉冲”信号,该信号将被送到“时单元” 。 “时 单元”采用 24 进制计时器,可实现对一天 24 小时的累计。显示电路将“时” 、 “分” 、 “秒” 通过七段显示器显示出来。校时电路时用来对“时” 、 “分” 、 “秒”显示数字进行校对调整, 安徽工贸职业技术学院毕业设计(论文) 22 校时电路时用来对“时” 、 “分” 、 “秒”显示数字进行校对调整,按一下 second,秒单元就 加 1 ,按一下 minute,分就加 1,按一下 hour,时就加 1。 3.3 中断子程序 timer0 (void) interrupt 1 using 1 u+; TH0=(65536-50000)/256; TL0=(65536-50000)%256; 3.4 延时程序 void delay() unsigned int time,p; for(time=30;time0;time-) for(p=0;p10;p+); 3.5 主程序和定时器中断子程序 #include char mod=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; char sceond,minute,hour,i,k,l,j,x,y; int u; sbitP1_0=P10; sbitP1_1=P11; sbitP1_2=P12; void main() TMOD=0 x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; do kongzhi(); xianshi(); while(1); 安徽工贸职业技术学院毕业设计(论文) 23 在这里,我们有必要介绍一下单片机的中断系统,以利于我们的学习。 中断技术在单片系统中有着十分重要的作用,它不仅可以提高单片机 CPU 的效率,也 可以对突发事件处理。所谓中断就是当 CPU 正在执行程序 A 时,发生了另一个急需处理的 事件 B,这是 CPU 暂停当前执行的程序 A,立即转去执行处理事件 B 的程序,处理完事件 B 后,再返回到程序 A 继续执行,这个过程被叫做中断。关于中断的概念有下列几个名词: (1)程序 A 称为主程序,(2)处理事件 B 的程序称为中断服务程序,(3)主程序中转 向中断服务程序的地方称为断点,(4)引起中断的原因即事件 B 称为中断源,(5)转去 执行中断服务程序称为中断响应。关于中断的概念可以打个如下的比喻。领导(CPU)在 自己的房间办公(执行主程序),下属(外设)有问题打电话来请示(中断源),领导停 下正在进行的工作,通过电话给下属做指示(执行中断服务程序),指示完后,领导挂断 电话,继续做自己的工作(返回主程序继续执行)。 中断是一个过程, 当中央处理器 CPU 在处理某件事情时, 外部又发生了另一紧急事件, 请求 CPU 暂停当前的工作而去迅速处理该紧急事件。处理结束后,再回到原来被中断的地 方,继续原来的工作。引起中断的原因或发出中断请求的来源,称为中断源。 单片机一般允许有多个中断源,当几个中断源同时向 CPU 请求中断时,就存在 CPU 优先响 应哪一个中断请求源的问题(优先级问题),一般根据中断源的轻重缓急排队,优先处理 最紧急事件的中断请求,于是便规定每一个中断源都有一个中断优先级别,并且 CPU 总是 响应级别最高的中断请求。 当 CPU 正在处理一个中断源请求的时候, 又发生了另一个优先级比它高的中断源请求, 如果 CPU 能够暂时中止对原来中断处理程序的执行, 转而去处理优先级更高的中断源请求, 待处理完以后,再继续执行原来的低级中断处理程序,这样的过程称为中断嵌套。 3.6 LED 显示子程序 void xianshi() if(u=20) u=0; sceond+; while(sceond=60) sceond=0; minute+; if(minute=60) minute=0; hour+ ; 安徽工贸职业技术学院毕业设计(论文) 24 if(hour=24) hour=0; x=hour%10; y=hour/10; l=minute%10; j=minute/10; i=sceond%10; k=sceond/10; P2=0 x7f; P0=modi; delay(); P2=0 xbf; P0=modk; delay(); P2=0 xdf; P0=0 x40; delay(); P2=0 xef; P0=modl; delay(); P2=0 xf7; P0=modj; delay(); P2=0 xfb; P0=0 x40; delay(); P2=0 xfd; P0=modx; delay(); P2=0 xfe; P0=mody; delay(); 安徽工贸职业技术学院毕业设计(论文) 25 3.7 按键控制子程序 void kongzhi() if(P1_0=0) TR0=0; while(P1_0=0); while(1) if(P1_1=0) sceond+; if(sceond=60) sceond=0; while(P1_1=0); if(P1_2=0) sceond-; if(sceond0) sceond=0; while(P1_2=0); i=sceond%10; k=sceond/10; P2=0 x7f; P0=modi; delay(); P2=0 xbf; P0=modk; delay(); 安徽工贸职业技术学院毕业设计(论文) 26 if(P1_0=0) while(P1_0=0); while(1) if(P1_1=0) minute+; while(minute=60) minute=0; while(P1_1=0); if(P1_2=0) minute-; if(minute0) minute=0; while(P1_2=0); l=minute%10; j=minute/10; P2=0 xef; P0=modl; delay(); P2=0 xf7; P0=modj; delay(); if( P1_0=0) while(P1_0=0); while(1) if(P1_1=0) 安徽工贸职业技术学院毕业设计(论文) 27 hour+; while(hour=24) hour=0; while(P1_1=0); if(P1_2=0) hour-; if(hour0 时表示电子钟秒单元数值刷新滞后,即走时误差为“慢”; 反之,S0 表示秒单元数值的刷新超前,即走时误差为“快”。 本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误 差,延迟误差。晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这 一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时 间产生偏差,造成走时误差。 5.3 软件调试问题及解决 软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试可以 采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可; 后者一般需要仿真系统的支持。本次课题,Keil 软件来调试程序,通过各个模块程序的单 步或跟踪调试,使程序逐渐趋于正确,最后统调程序。 仿真部分采用 protus 7.5 professional 软件,此软件功能强大且操作较为简单,可 以很容易的实现各种系统的仿真。 首先打开 protus 7.5 professional 软件,在元件库中找到要选用的所有元件,然后 进行原理图的绘制;绘制好后再选择已经编译好的*.hex 文件,选择运行,观察显示结果, 根据显示的结果和课题的要求再修改程序,再运行查,直到满足要求。 安徽工贸职业技术学院毕业设计(论文) 30 结结论论 自学习单片机我起初认为单片机是个噩梦,因为自己在单片机这一块存在着太大的缺 陷,幸运的是我终于完成了这次考试论文。一开始按照老师布置的流程,一步步去实现那 个目标,找资料,读懂程序,写写流程图,当然不懂就去查资料问老师,通过自己的勤奋 和同学之间的取长补短,目标一步步的被我找到和实现,时间尽管很短但是我在单片机这 一块的缺陷正在慢慢缩短和知识的不断上升,对单片机也有了很大的兴趣,并且使这次的 论文能顺利完成,完成了预期的目标。从单片机模块数字钟的设计过程中也找到了一些单 片机开发的规律:先了解所有元件的具体内容,从而画出其电路图,使数字钟从简易变成 多功能的方式,虽没有做多功能数字钟,却知晓了其方法。从而让我踏入了单片机应用领 域的第一步。然而在过程中有也有许多的不足之处:例如编写调试程序有点不足。希望能 够在以后的不断深入学习中能够弥补自己的不足之处。同时更是朝着单片机应用领域迈 进。当然通过这次的课程设计,我了解了 keil C51 集成环境和 PROTEUS 7.5 仿真软件的 使用,用此软件练习电子时钟的设计。仿真实现了把抽象的东西具

温馨提示

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

评论

0/150

提交评论