单片机课程设计:数字时钟实现

0 下载量 158 浏览量 更新于2024-06-28 收藏 66KB DOCX 举报
"该文档是关于单片机课程设计的一个项目,设计内容是构建一个数字时钟。项目由河南城建学院在2008年12月30日完成。代码主要涉及单片机的编程,包括显示和键盘扫描功能,使用了汇编语言进行编写。" 在这个单片机课程设计中,学生被要求实现一个数字时钟的功能。设计的核心部分是通过单片机控制LED数码管显示时间,并且可能包含简单的按键交互来设置或调整时间。 代码片段展示了如何更新数码管显示的时间。其中,`L00P4C`、`L00P30`、`L00P40`、`L00P5A` 和 `L00P5B` 是循环和分支结构,用于逐位滚动显示数字。例如,`DIS` 子程序用于更新数码管的显示,通过读取存储的时间数据(如 `25H`、`24H`、`23H` 和 `22H`)并进行递减处理,当数值减到0时,重新赋值为特定的数字(如9和5),以实现数字的循环显示。`SJMP` 指令用于跳转,避免不必要的计算,`CJNE` 是比较并跳转指令,用于判断条件是否满足。 此外,文档还包含了`一一显示子程序`,它使用PSW和RO寄存器来控制显示,通过`MOVCA,©A+DPTR`将字形代码加载到数码管的段驱动口,并通过`MOVX@DPTR,A`发送到指定地址,以点亮相应的LED段。`MOVX@DPTR,A`是对外部数据存储器的写操作,这里用于驱动数码管。`DJNZRl,$`是一个计数循环,等待一定时间以实现闪烁效果。最后,`MOVX@DPTR,A`用#`OFFH`关闭所有显示位,即位口置为高电平。 另外,还有一个`扫描子程序`,用于检测按键输入。它通过读取键盘扫描码,检查是否有按键按下。如果检测到按键,程序会进入一个处理按键的子程序`KEY20`,可能用于处理时间的设置或校准。 这个课程设计涵盖了单片机的基本操作,包括定时器、中断、数码管显示和键盘扫描等关键技能,这些都是单片机应用开发的基础。
2023-02-27 上传
一、课题名称:数字时钟电路设计 二.内容摘要 近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 模拟多通道压力系统是利用压力传感器采集当前压力并放映在显示器上,它可以分析压力过量程,并发出报警。并采用电子秤原理可根据输入单价准确的计算出物体的金额。本篇论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。 设计内容及摘要 在单片机实验室,以单片机实验开发箱为基础,设计数字时钟电路系统。 使电子钟具有"时"、"分"显示的电子钟(23小时59分),通过小时个位的小数点闪烁进行秒计数显示,要求具有分钟和小时的校时功能。 可进行功能扩展(比如增加整点报时功能:60分钟开始LED灯闪烁1分钟或蜂鸣器响10秒钟)。 比较和选定设计的系统方案,画出系统框图 图4.1系统框图 单元电路设计、参数计算和器件选择 主要器件: STC89C58RD+单片机(DIP40) 4位共阴数码显示管,1个 470欧9针排阻,1个 单片机课程设计数字时钟全文共10页,当前为第1页。晶振:11.0592MHz,1个 单片机课程设计数字时钟全文共10页,当前为第1页。 瓷片电容:30PF,2个 10K电阻,1个 按键开关:3个 电阻、单排插针、0.1uF电容、10uF电解电容:若干 管脚说明: P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口管脚写入1后,被内部上拉为高,可用作输入。、 (3)P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写"1"时,其管脚被内部上拉电阻拉高,且作为输入。 (4)P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入"1"后,它们被内部上拉为高电平,并用作输入。(7)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 (5)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 (6)/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 (7)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 (8)XTAL2:来自反向振荡器的输出。 5.1:最小系统电路组成 图:5.1.1最小系统电路图 单片机课程设计数字时钟全文共10页,当前为第2页。5.2:完整的电路图,工作原理 单片机课程设计数字时钟全文共10页,当前为第2页。 单片机课程设计数字时钟全文共10页,当前为第3页。 单片机课程设计数字时钟全文共10页,当前为第3页。 工作原理: 单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只要外界一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。时钟电路如下图所示: 七.利用Proteus软件对电路进行仿真调试 八:程序流程图 主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。 单片机课程设计数字时钟全文共10页,当前为第4页。 单片机课程设计数字时钟全文共10页,当前为第4页。 开始启动定时器按键检键but_kai 时间显示 开始 启动定时器 按键检键but_kai 时间显示 ret=0 ret=0 Y Y N ret=3?ret++ ret=3? ret++ 图8-1 主程序流程图 按键处理是先检测ret为几;若为1或者2,则可以更改系统时间。若为ret=1,开启时校验,若but_add按下,则hour加1,若but_sub按1下,则hour减1;若r