《2022年51单片机数字钟 .pdf》由会员分享,可在线阅读,更多相关《2022年51单片机数字钟 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、I 目录1 设计任务与要求 . . I 2 设计方案 . 1 3 硬件设计 . 2 3.1 AT89C51 单片机简介 2 3.2 单片机型号的选择 . . 6 3.3 数码管显示工作原理. 6 4 软件设计 . 7 4.1 主程序模块介绍. 7 4.2 主程序 . 7 5 仿真调试 . 错误!未定义书签。5.1 KEIL仿真结果 . 错误!未定义书签。5.2 仿真结果分析. 136 小结 . 错误!未定义书签。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页
2、,共 14 页 - - - - - - - - - 2 1 设计任务与要求1. 设计一个基于单片机的电子时钟,并且能够实现时分秒的现实和调节。2. 设计出硬件电路。3. 设计出软件编程方法,并写出源代码。4. 用 PROTEUS进行仿真。5用汇方式实现目的。7系统的各各功能模块要编语言编实现程序设计。6利用查表,中断等清楚,有序。8程序运行时有友好的用户界面。2 设计方案本设计主要设计了一个基于AT89C51单片机的电子时钟。 并在数码管上显示相应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。应用 Proteus 的 ISIS 软件实现了单片机电子时钟系统的设计与仿真。该
3、方法仿真效果真实、准确,节省了硬件资源。该设计的硬件部分主要包括89C51多功能接口芯片用于开发电子时钟芯片、LED七段数码显示器用于显示时间、8031 集成定时器用于定时、 0.125W 、8 欧姆的扬声器用于定时发声。 软件部分包括主程序、 定时计数中断程序、 时间调整程序、延时程序四大模块。 通过中断程序进行定时器计数,时间调整程序是当键按下时间小于 1 秒,关闭显示(省电)进入调节时间状态,延时程序用于时间的延迟。先设计个秒钟程序,在秒钟程序中先不设计按钮,直接通电运行,使用40H存放计数值,从0059,一直循环,把40H中的数值拆分成个位和十位,分别存在 30H与 31H中,要求动态
4、扫描时,使用21H当标志位,用指令JB控制显示个位与十位,程序中使用中间寄存器R0 与 R1 用于存放拆分后的字型,再传到30H与 31H中去,再设计时钟程序。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 3 3 硬件设计3.1 AT89C51 单片机简介AT89C51 单片机是一种低功耗,高性能的片内含有4KB可编程 / 擦除只读存储器( FPEROMFlash Programmable and Eras
5、able Read Only Memory)的 8位 COMS 微控制器,使用高密度,非易失存储技术制造,并且与AT89C51引脚和指令系统完全兼容。芯片上的FPEROM 允许在线编程或采用通用的非易失存储编程器对存储器重复编程。3.1.1 单片机的构成AT89C51 单片机是在一块芯片中集成了CPU 、RAM 、ROM 、定时器/ 计数器和多种功能的 I/O 线等一台计算机所需要的基本功能部件,AT89C51单片机单片机内包含下列几个部件:(1) 一个 8 位 CPU ;(2)一个片内振荡器及时钟电路;(3)4K字节 ROM 程序存储器;(4)128字节 RAM 数据存储器;(5)两个 16
6、 位定时器 / 计数器;(6)可寻址 64K外部数据存储器和64K外部程序存储器空间的控制电路;(7)32 条可编程的 I/O 线(四个 8 位并行 I/O 端口) ;(8)一个可编程全双工串行口;(9)具有五个中断源、两个优先级嵌套中断结构。其内部机构框图如图3.1 所示:名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 4 图 3.1 MCS-51 单片机内部机构框图3.1.2 AT89C51 单片机性能及
7、特点(1)与 MCS-51微控制器产品系列兼容。(2)片内有 4KB可在线重复编程的快闪擦写存储器(Flash Memory) 。(3)存储器可循环写入 / 擦除 1000 次。(4)存储数据保存时间为10 年。(5)工作电压范围: Vcc可为 2.7V6V。(6)全静态工作:可从0HZ到 16MHZ 。(7)程序存储器具有 3 级加密保护。(8)1288 位内部 RAM 。(9)32条可编程 I/O 线。(10)两个 16 位定时器 / 计数器。(11)中断结构具有 5 个中断源和 2 个优先级。(12)可编程全双工串行通道。(13)空闲状态维持低功耗和掉电状态保存存储内容。3.1.3 振荡
8、器特性XTAL1和 XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 5 3.1.4 AT89C51 单片机的引脚说明AT89C51 是一种带 4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory )的低电压,高性能CMOS8 位微处理器,俗称单片
9、机。 AT89C2051是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100 次。 该器件采用 ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 AT89C51是一种高效微控制器。图 3.3 AT89C51 单片机引脚图AT89C51 单片机的内部硬件结构中除了程序存储器由FPEROM取代了 87C51单片机的 EPROM 外,其余部分完全相同,其管脚说明如下:(1)VCC :供电电压(2)GND :接地(3)时钟电路 XTAL1
10、(19脚)芯片内部振荡电路(单级反相放大器)输入端。 XTAL2 (18脚)芯片内部振荡电路(单级反相放大器)输出端。(4)控制信号名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 6 RST (9 脚)复位信号:时钟电路工作后,在此引脚上将出现两个机器周期的高电平,芯片内部进行初始复位,P0口P3口输出高电平,将初值07H写入堆栈指针。ALE (30 脚)地址锁存信号:当访问外部存储器时,P0口输出的低 8
11、位地址由 ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低 8 位后,又能与片外存储器之间传送信息。另外,ALE可驱动 4 个 TTL门。PSEN(29 脚)片外程序存储器读选通:PSEN低电平有效,PSEN作为程序存储器的读信号,输出负脉冲,将相应的存储单元的指令读出并送到P0口,PSEN可驱动 8 个 TTL门。EA/Vpp(30 脚):当EA为高电平且 PC值小于 0FFFH时,CPU 执行内部程序存储器程序;当EA为低电平时, CPU 仅执行外部程序存储器程序。(5)I/O 接口P0口(P0.0P0.7,3932脚)三态双向口: P0口结构包括一个输出锁存器、两个三态缓冲器、
12、一个输出驱动电路和一个输出控制端。P1口(P1.0P1.7,18 脚)准双向口: P1口做通用 I/O 接口使用, P1口的每一位口线能独立地作用于输入线,P1口可驱动 4 个 TTL门。P2口(P2.0P2.7,2128 脚)通用 I/O 接口:它做通用 I/O 接口使用时,是一个准双向口, 此时转换开关 MUX 倒向左边, 输出极与锁存器相连, 引脚可作为用户 I/O 口线使用,输入 / 输出操作与 P1口完全相同, P2口做地址总线使用。P3口(P3.0P3.7,1017脚)双功能口: P3口做通用 I/O 接口使用,输出功能控制线为高电平, 与非门的输出取决于锁存器的状态,此时锁存器
13、Q端的状态与其引脚状态是一致的。P3口也可作为 AT89C51 的一些特殊功能口使用如:P3.0 RXD(串行输入口);名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 7 P3.1 TXD(串行输出口);P3.2 /INT0 (外部中断 0) ;P3.3 /INT1 (外部中断 1) ;P3.4 T0 (记时器 0 外部输入);P3.5 T1 (记时器 1 外部输入);P3.6 /WR(外部数据存储器写选通)
14、 ;P3.7 /RD (外部数据存储器读选通) ;3.2 单片机型号的选择通过对多种单片机性能的分析, 最终认为 89C51是最理想的电子时钟开发芯片。 89C51是一种带 4K字节闪烁可编程可擦除只读存储器的低电压,高性能 CMOS8位微处理器, 器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 89C51是一种高效微控制器,而且它与MCS-51 兼容,且具有 4K字节可编程闪烁存储器和1000写/ 擦循环, 数据保留时间为 10 年等特点,是最好的选择。3.3 数码
15、管显示工作原理数码管是一种把多个LED显示段集成在一起的显示设备。 有两种类型, 一种是共阳型, 一种是共阴型。 共阳型就是把多个 LED显示段的阳极接在一起, 又称为公共端。 共阴型就是把多个LED显示段的阴极接在一起, 即为公共商。 阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为 8 段,即 8 个 LED显示段,这是为工程应用方便如设计的, 分别为 A、B、C、D、E、F、G 、DP ,其中 DP 是小数点位段。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - -
16、- - - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 8 4 程序设计4.1 主程序模块介绍主程序主要完成普通运行时,循环显示时间的24 小时。4.2 主程序#include #define uchar unsigned char #define uint unsigned int sbit P1_7 =P17; sbit P1_6 =P16; typedef struct uchar hour; uchar minute; uchar second; time; time now=0,0,0; uchar code num_tab1=0 x80,0
17、 x40,0 x20,0 x10,0 x08,0 x04; uchar code num_tab2=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90; /名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 9 共阳极显示uchar state=0; uchar count=100; uchar flag=0; / 调整时间 / 定时的标志uch
18、ar recount=0; uchar recount1=0; void delay(uint time1) /延时子程序 int i; int k; for(i=0;itime1;i+) for(k=0;k100;k+); void display(time disnum) /显示子程序 int hour_shi,hour_ge,min_shi,min_ge,sec_shi,sec_ge,i; int num6=0,0,0,0,0,0; hour_shi=disnum.hour/10; hour_ge=disnum.hour%10; 名师归纳总结 精品学习资料 - - - - - - - -
19、 - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 10 min_shi=disnum.minute/10; min_ge=disnum.minute%10; sec_shi=disnum.second/10; sec_ge=disnum.second%10; num0=hour_shi; num1=hour_ge; num2=min_shi; num3=min_ge; num4=sec_shi; num5=sec_ge; for(i=0;i6;i+) P2=num_t
20、ab1i; P0=num_tab2numi; delay(1); void display_1(uchar wei,uchar k) /显示子程序 1 uchar wei1,wei2; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 14 页 - - - - - - - - - 11 wei1=wei/10; wei2=wei%10; P2=num_tab1k; P0=num_tab2wei1; delay(1); P2=num_tab1k+1; P0
21、=num_tab2wei2; delay(1); void interrupt_init(void) EA=0; TMOD=0 x01; TH0=0 xd8; TL0=0 xf0; IT0=1; ET0=1; EX0=1; EA=1; TR0=1; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 12 if(recount!=0) P1_7=P1_7; recount-; else P1_7=0; if(r
22、ecount1!=0) P1_6=P1_6; recount1-; else P1_6=0; else count-; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 13 void main(void) uchar j=0; flag=0; interrupt_init(); /中断初始化P1_6=0; P1_7=0; while(1) switch(state) case 0: display(now)
23、;break; case 1: display_1(now.hour,0);break; case 2: display_1(now.minute,2);break; case 3: display_1(now.second,4);break; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 14 5 仿真调试5.1 KeiL调试(1)在 Windows下运行 Keil Visiion3 软件,进入 Kei
24、l Visiion3 开发环境。(2)在 Keil Visiion3 选择 Project/New Preject,建立一个新的工程项目。5.2 仿真结果分析功能太过单调,只能实现时分秒的显示, 设计比较简单。电路图的设计过于单调,用的器件太少, 实现调节时间的按钮太少, 不能很好的实现时间的调节。在测试过程中,六位数码显示管只显示五位数字,有一位数字不亮, 通过多次的修改程序并在 PROTEUS 软件环境中进行仿真, 最终解决了这个问题, 同时也透露出本人在单片机电路设计和程序设计方面的不足。不过最后的仿真效果非常好, 实现了预期的效果, 能过通过多功能控制键调节时间和是否进入省电模式,是一个比较令人满意的名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 14 页,共 14 页 - - - - - - - - -