电子钟设计(含秒表).docx
《电子钟设计(含秒表).docx》由会员分享,可在线阅读,更多相关《电子钟设计(含秒表).docx(22页珍藏版)》请在冰豆网上搜索。
![电子钟设计(含秒表).docx](https://file1.bdocx.com/fileroot1/2022-9/30/247dd72f-daba-4b92-bc16-98ae534157a9/247dd72f-daba-4b92-bc16-98ae534157a91.gif)
单片机课程设计
题目 电子钟设计
专业 电子信息科学与技术
班级 2011级电子2班学号
姓名
1
目录
一、课程设计任务及要求二、电子钟设计方案
三、AT89C52单片机介绍四、74HC573锁存器介绍五、数码管工作原理介绍六、程序代码
七、Proteus 仿真图八、心得体会
九、参考文献
22
一、课程设计任务及要求
1、设计一个电子时钟,要求可以显示时、分、秒。
2、用户可以设置时间
3、实现秒表功能。
二、电子钟设计方案
这个电子钟由AT89C52、74HC573、共阴极数码管及部分按键构成。
可以实现显示时分秒,用户也可以通过按键来设置时间,也可以通过按键来调模式切换到秒表模式,秒表可以停止和归零。
二、AT89C52单片机介绍
AT89C52是美国Atmel公司生产的低电压、高性能CMOS8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。
AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。
其主要工作特性是:
片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为
1000次;
片内数据存储器内含256字节的RAM;具有32根可编程I/O口线;
具有3个可编程定时器;
中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;
串行口是具有一个全双工的可编程串行通信口;具有一个数据指针DPTR;
低功耗工作模式有空闲模式和掉电模式;具有可编程的3级程序锁定位;
AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;AT89C52最高工作频率为24MHz。
单片机正常工作时,都需要有一个时钟电路和一个复位电路。
本设计中选择了内部时钟方式和按键电平复位电路,来构成单片机的最小电路。
VCC:
电源;GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
U4
19 XTAL1
18
XTAL2
9
RST
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
39
38
37
36
35
34
33
32
29PSEN
30ALE
31EA
P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
AT89C51
P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD
10
11
12
13
14
15
16
17
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
图1AT89C51单片机
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储
(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,
/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)
。
四、74HC573锁存器介绍
八进制3态非反转透明锁存器
74HC573
高性能硅门CMOS器件
SL74HC573跟LS/AL573的管脚一样。
器件的输入是和标准
CMOS输出兼容
的;加上拉电阻,他们能和LS/ALSTTL输出兼容。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同
步)。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
×\u36755X出能直接接到CMOS,NMOS和TTL接口上
×\u25805X作电压范围:
2.0V~6.0V
×\u20302X输入电流:
1.0uA
×CMOS器件的高噪声抵抗特性
OE ̄
1
20
Vcc
1D—
2
19
—1Q
2D—
3
18
—2Q
3D—
4
17
—3Q
4D—
5
16
—4Q
5D—
6
15
—5Q
6D—
7
14
—6Q
7D—
8
13
—7Q
8D—
9
12
—8Q
GND
10
11
LE
1脚三态允许控制端低
电平有效
1D~8D为数据输入端
1Q~8Q为数据输出端
74HC573引脚图
LE为锁存控制端
五、数码管工作原理介绍
我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
其原理图
如下。
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
如下图。
共阳极的数码管0~f的段编码是这样的:
unsignedcharcodetable[]={共//阳极0~f数码管编码
0xc0,0xf9,0xa4,0xb0,//0~30x99,0x92,0x82,0xf8,//4~7
0x80,0x90,0x88,0x83,//8~b0xc6,0xa1,0x86,0x8e//c~f
};
共阴极的数码管0~f的段编码是这样的:
unsignedcharcodetable[]={共//阴极0~f数码管编码
0x3f,0x06,0x5b,0x4f, //0~3
0x66,0x6d,0x7d,0x07, //4~70x7f,0x6f,0x77,0x7c, //8~b0x39,0x5e,0x79,0x71 //c~f
};
这里我们采用共阴极数码管。
六、程序代码
头文件:
public.h#ifndef_PUBLIC_H_#define_PUBLIC_H_#include#defineDPP0#defineKeyPortP1
sbitLATCH1=P2^2;//段sbitLATCH2=P2^3;//位
sbitKEY_MOD=P2^4;sbitKEY_SLC=P2^5;sbitKEY_ADD=P2^6;sbitKEY_DEC=P2^7;
voidDelayUs2x(unsignedchart);//延时函数voidDelayMs(unsignedchart);
voidkeypro(void);
unsignedcharkeyscan(void);
voidDisplay(unsignedcharFirstBit,unsignedcharNum