单片机原理课程设计(论文)单片机数字时钟的设计.doc

上传人:仙人指路1688 文档编号:4147315 上传时间:2023-04-07 格式:DOC 页数:16 大小:848.50KB
返回 下载 相关 举报
单片机原理课程设计(论文)单片机数字时钟的设计.doc_第1页
第1页 / 共16页
单片机原理课程设计(论文)单片机数字时钟的设计.doc_第2页
第2页 / 共16页
单片机原理课程设计(论文)单片机数字时钟的设计.doc_第3页
第3页 / 共16页
单片机原理课程设计(论文)单片机数字时钟的设计.doc_第4页
第4页 / 共16页
单片机原理课程设计(论文)单片机数字时钟的设计.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《单片机原理课程设计(论文)单片机数字时钟的设计.doc》由会员分享,可在线阅读,更多相关《单片机原理课程设计(论文)单片机数字时钟的设计.doc(16页珍藏版)》请在三一办公上搜索。

1、单片机原理课 程 设 计 论 文 题目: 单片机数字时钟的设计 学 生 姓 名: ywh 学号:070108041124 学 部 (系): 信息学部 专 业 年 级: 07自动化 4班 指 导 教 师: 职称或学位: 2010年07月11日目录第一章 设计要求3第二章 单片机简介32.1概述32.2 单片机的发展历程42.3 时钟的特性4第三章 系统原理与硬件设计53.1 硬件选择53.2 单片机的构成53.3 AT89c52单片机的引脚说明63.4 LED简介7第四章 软件设计9第五章 调试过程及数据分析135.1 硬件调试135.2 KeiL调试145.3开发板调试14第六章 结论与总结1

2、5参考文献16第一章 设计要求题目:数字时钟的设计1、 任务简介:时钟在生产、生活中具有相当重要的作用。数字式时钟直接用数字显示时间,读数直观,并且具有一定的实用功能。本设计要求利用单片机完成一个数字时钟的设计。2、 设计要求:(1) 系统硬件设计:利用单片机实验板完成设计要求(已有); (2) 系统软件设计:完成控制软件的编写与调试;(3) 功能要求:1) 6位数码管显示小时、分钟,秒(例如:18:30:30);2) 可通过键盘调校当前时间;3) 具有整点提示功能(例如蜂鸣器鸣响半分钟),具有整点报时功能(例如十点响十声);4) 1个LED每秒闪烁一次,指示秒针动作;5)具有定时功能,可通过

3、键盘设定及查询定时时间;定时时间到,有蜂鸣器提示。第二章 单片机简介2.1概述随着电子技术的迅速发展,特别是随着大规模集成电路产生而出现的微型计算机,给人类生活带来了极大的方便。走入家庭,从洗衣机、微波炉到音响、汽车,到处都可以见到单片机应用的踪影。如果说微型计算机技术的出现使现代科学研究得到了质的飞跃,那么也可以毫不夸张的说:“单片机技术的出现则是给现代工业测控领域带来了一次新的工业革命”。目前,单片机以其可靠性高和智能性等特点被广泛应用到工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等领域中,并已经进入家庭,因此,单片机技术的开发和应用水平已经逐步成为一个国家自动化发展水平的标志之

4、一。2.2 单片机的发展历程单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,特别适用于工业控制领域。1971年微处理器研制成功不久,就出现了单片机,但最早的单片机是1位的,处理能力有限。单片机的发展共分四个阶段:第一阶段是初级阶段,功能非常简单;第二阶段是低性能阶段, 16位定时器/计数器,片内ROM、RAM容量加大,直到现在仍被广泛应用,是目前应用数量较多的单片机。、32位单片机推出阶段,以满足不同的用户需要。纵观单片机几十年的发展历程,单片机的今后发展方向将向多功能、高性能、高速度、低功耗、低价格、外围电路内装化以及内存储器容量增加和FLASH存储器化方向发展。2.3

5、 时钟的特性省电(关闭显示)功能(2)以24h(小时)计时方式(3)白来整点报时,晚上22点后不报时(4)用六位LED数码管显示时、分、秒(5)使用按键开关可实现时分调整、秒表功能转换(6)使用按键开关可实现时分调整、时钟功能转换等功能。这里用到中断,50ms的产生一次。然后累加到20次,秒表就加1.。每60秒分值加1。每60分时加1,每24小时日加1.第三章 系统原理与硬件设计3.1 硬件选择(1)单片机的选择 选用AT89C52单片机,并配备12MHz晶振,复位电路采用上电复位。(2)显示电路选择 采用软件译码动态显示,P3.0-P3.3作数码管的位选口。P1.0-P1.6作数码管的段选口

6、。考虑直接用单片机I/O口作位选时驱动功率不够,(3)电源选择 采用直流5V电源供电。(4)选择器的选择 74ls04。(5)CTC89c52单片机是一种低功耗,高性能的片内含有4KB可编程/擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的8位COMS微控制器,使用高密度,非易失存储技术制造,并且与AT89C52引脚和指令系统完全兼容。芯片上的FLASH允许在线编程或采用通用的非易失存储编程器对存储器重复编程。3.2 单片机的构成AT89c51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多种功

7、能的I/O线等一台计算机所需要的基本功能部件,AT89C52单片机单片机内包含下列几个部件:(1) 一个8位CPU;(2)一个片内振荡器及时钟电路;(3)4K字节ROM程序存储器;(4)256字节RAM数据存储器;(5)两个16位定时器/计数器;(6)可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;(7)32条可编程的I/O线(四个8位并行I/O端口);(8)一个可编程全双工串行口;(9)具有五个中断源、两个优先级嵌套中断结构。其内部机构框图如图2.2所示: 图 3-1 MCS-51单片机内部机构框图3.3 AT89C52单片机的引脚说明AT89c52单片机采用40条引脚双列直

8、插式器件,引脚除5V( 40脚)和电源地( 20脚)外,其功能分为时钟电路、控制信号、输入/输出三大部分,逻辑框图及引脚图分别如图2.4(a)(b)所示 (a) (b) 图 3-2 AT89c52单片机逻辑图与引脚图AT89C52单片机的内部硬件结构中除了程序存储器由FLASH取代了87C51单片机的EPROM外,其余部分完全相同,其管脚说明如下:(1)VCC:供电电压(2)GND:接地(3)时钟电路 XTAL1(19脚)芯片内部振荡电路(单级反相放大器)输入端。 XTAL2(18脚)芯片内部振荡电路(单级反相放大器)输出端。 (4)控制信号RST(9脚)复位信号:时钟电路工作后,在此引脚上将

9、出现两个机器周期的高电平,芯片内部进行初始复位,P0口P3口输出高电平,将初值07H写入堆栈指针。ALE(30脚)地址锁存信号:当访问外部存储器时,P0口输出的低8位地址由ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低8位后,又能与片外存储器之间传送信息。另外,ALE可驱动4个TTL门。(29脚)片外程序存储器读选通:低电平有效,作为程序存储器的读信号,输出负脉冲,将相应的存储单元的指令读出并送到P0口,可驱动8个TTL门。/Vpp(30脚):当为高电平且PC值小于0FFFH时,CPU执行内部程序存储器程序;当为低电平时,CPU仅执行外部程序存储器程序。3.4 LED简介LED数码

10、管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2.7(a)是共阴和共阳极数码管的内部电路图,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将b和c段接上正电源,其它端接地或悬空,那么b和c段发光,此时,数码管显示将显示数字“1”。而将a、b、d、e和g段都接上正电源,其它引

11、脚悬空,此时数码管将显示“2”。其它数字的显示原理与此类同。LED的7段数码管利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。在这次的设计中采用的均是共阴极的LED显示,当I/O口输出为高电平的时候,对应段就被点亮。LED数码管的结构图如图2.7(b)所示。 (a)(b)图 3-3 LED分类结构图和结构图这次设计的显示部分采用AT89c51单片机动态扫描完成,在多数的应用场合中,我们并不希望使用多I/O端口的单片机,原则上是使用尽量少引脚的器件。在没有富余端口的情况下,应通过优化设计程序和扩展电路达到预期的目的。动态扫描的频率有一定的要求,

12、频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。LED显示电路(1)静态显示电路LDE显示器工作在静态显示时,其公共阳极(或阴极) 接VCC(或GND) ,一直处于显示有效状态,所以每一位的显示内容必须由锁存器加以锁存,显示各位相互独立。(2) 动态显示电路 将所有位的段选线的同名端联在一起,由一个8位I/O口控制,形成段选线的多位复用。而各位的公共阳极或公共阴极则分别由相应的I/O口线控制,实现各位的分时选通,

13、即同一时刻只有被选通位是能显示相应的字符,而其他所有位都是熄灭的。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则会造成多位同时点亮的假象。这就需要单片机不断地对显示进行控制,CPU需要不断地进行显示刷新,动态显示电路参见图2.8,图2.8中是扩展了五位的LED数码管显示,用一个74LS04作为五个LED的段选输入,采用动态显示的方式连接。类似地,16位的LED数码管显示也可以用这种方法来实现。 图 3-4 五位LED数码管的动态显示第四章 软件设计程序如下:#include #define uchar unsigned char#define uint unsigned intuchar

14、code SEG710=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar ACT8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /位选uchar deda, sec=50,min=59,hour=6; /deda计时器0计数多少次是一秒的控制变量sbit led1 = P10; /用p1.0口控制led灯uchar num1; /led灯的计数器变量uchar cnt,m; void delayms(uint); sbit fmq=P35;/P3.5是蜂鸣器的控制端口/*/void init(v

15、oid)/开定时器0和1,并置初值TMOD=0x11;TH0=-(50000/256);TL0=-(50000%256);ET0=1; /允许T0中断TR0=1;TH1=-(1000/256);TL1=-(1000%256);ET1=1; TR1=1;/启动EA=1;/开中断/*/void di() /蜂鸣器子程序 uchar i; for (i=0;i100;i+) fmq=0;delayms(1); fmq=1;delayms(1); /*/ void time0(void) interrupt 1 /秒计时器TH0=-(50000/256); /置初值TL0=-(50000%256);d

16、eda+;num1+; if(num1=10) /二极管半秒钟亮半秒钟熄达到秒钟动作 num1=0; led1=led1; /led闪烁子程序 /*/void time1(void) interrupt 3 /数码管显示时分秒子程序TH1=-(1000/256); /定时器控制位扫描频率TL1=-(1000%256);if(-cnt=20) /计数20次为一秒 deda=0;sec+; if(m0)di();-m; if(sec=60)sec=0;min+; if(min=60)min=0;hour+;m=hour; if(hour=24)hour=0;/*/ void delayms(uin

17、t xms) /蜂鸣器延时 uint i,j;for(i=xms;i0;i-)for(j=100;j0;j-); /*/void delay(uint k)uint data i,j;for(i=0;ik;i+) for(j=0;j59)min=0;delay(300);break; /键盘控制的进位 case 0xf7:if(+hour23)hour=0;delay(300);break; default:break; 第五章 调试过程及数据分析5.1 硬件调试硬件调试的调试比较困难。因为是调试所以不能对元件进行焊接,只能把各个元件用导线连接起来。调试的整体过程是:各个系统逐个调试,各部分调

18、试成功后再进行组装后的整体调试。调试过程包括:1. 显示部分的调试问题:数码管的显示不稳定,不停的闪烁。分析:没有考虑到干扰及环境的制约。于是我们把在面包板上连好的电路焊接在印刷板上,并采用电容滤波尽可能去除纹波和干扰。2. 控制部分的调试问题:按下按键后数据有时正常有时又不正常,数据的加减不稳定。分析:根据分析有两个问题可以导致此种现象,一是按键接触不良可能有短路,二是程序部分有问题。用万用表测量后发现按键按下后不稳定,更换质量更好的按键后故障即排除。5.2 KeiL调试启动Keil软件,选择“Project”菜单下的“New Project”命令,输入项目的文件名,选择存储路径,点击“保存

19、”按钮。在“Select Device”窗口中选择“Atmel”下的“AT89C51” 芯片,单击“确定”按钮。展开“Project Workspace”窗口中的“Target 1”, 右击 “Target 1”,选择“Options for Target Target 1”,选择“Target”选项在Keil (MHZ)右边输入“12m”。选择“Debug”选项,选择“Use Keil Monitor-51 Driver”。单击“Settings”按钮,串口选择“COM1”,波特率选择“38400”,单击“OK”按钮。右击“Source Group 1”,选择“Add files to Gr

20、oup Source Group 1,在文件类型中选择“Asm Source file”,找到将要编译的程序,单击 “ADD”按钮,然后再单击“CLOSE”按钮。单击“Rebuild all target files”,在“Build”窗口中观察编译结果,根据提示修改程序,直到没有错误出现。5.3开发板调试根据程序的设计在开发板上分别连接好各个端口的连接线,用串口线把计算机和试验箱的仿真头连接好。单击Keil软件上的“Start/Stop Debug Session”按钮,再单击“RUN”按钮,运行程序。观察试验箱上出现的效果,分析程序的对错,直到调试出正确的结果。第六章 结论与总结经过一周的

21、努力,顺利完成了基于AT89S52单片机控制的单片机数字时钟的设计,所完成的工作主要包括以下几个方面:(1)准备阶段的工作准备阶段的工作主要包括:查阅国内外相关文献,了解单片机微控制器的主要作用,发展过程及发展趋势和使用方法,了解用LED数码管显示电子时钟日历的工作原理、分析LED显示系统。详细了解了AT89c51单片机应用中的数据转换显示、数码管显示原理、动态扫描显示原理。(2)系统硬件设计本次的设计基于AT89c52单片机的LED显示系统主要由AT89c52单片机处理器控制、位扫描控制电路、端码显示驱动电路及与计算机的接口电路组成。此外还包括一些基本的电路如电源电路,晶振电路,及接口电路。

22、(3)系统软件设计根据LED显示管控制器的功能和系统硬件电路,进行系统软件设计。本系统软件设计采用模块化设计,即控制系统中的各个功能块都按照模块化方式进行程序设计。软件由读取时间的子程序和显示刷新子程序两部分组成,读取时间的子程序完成初始化工作,同时负责进行显示,按要求读出显示数据,显示刷新子程序将时间信号(时、分、秒) (4)实验过程总结通过本次实验对单片机知识有了更深入的了解,将其运用到了实际中来,达到了将知识应用于实践的目的。在实验中,我也遇到了很多挫折,不过我都和同伴一一克服了,大家齐心协力解决了问题,使我明白了和他人共同合作的重要性。在以后的道路上我们也必须深刻认识到团队合作的精神,

23、投入今后的发展之中。在进行程序设计的时候,在确保语句无误之后,时钟显示还是有问题,经过老师的指导不断改正,还是出现这样、那样的问题,不过我们都坚持了下来,仔细进行修改和测试,才最终完成了设计任务。成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。在此特别感谢在实验中老师对我的指导以及一些同学对我的帮助。参考文献【1】单片机C语言程序设计.新余:新余高专【2】李光飞等.单片机C程序设计实例指导.北京: 北京航空航天大学出版社 【3】戴佳 戴卫恒.51单片机C语言应用程序设计实例精讲.北京: 电子工业出版社【4】周润景等基于PROTEUS的电路及单片机系统设计与仿真. 北京: 北京航空航天大学出版社【5】孙育才,王荣兴,孙化芳.新型AT89S52系列单片机及其应用. 北京:清华大学出版社【6】胡汉才. 单片机原理及系统设计M. 北京:清华大学出版社【7】张毅刚. MCS-51单片机应用设计. 哈尔滨工业大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号