单片机时钟设计
西华大学课程设计
摘 要
近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善
本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(6个锁存器,6个七段LED数码管,3个按键)和应用程序(proteus软件和KEIL编译软件),构成相应的应用系统。
关键词: AT89C51 led数码管 proteus软件
西华大学课程设计
目 录
摘 要 ........................................................................................................................1 引 言 .......................................................................................................................... I 1 单片机 ...................................................................................................................... I
1.1 MCS-51单片机简介 ......................................................................................1 1.2 MCS-51系列单片机 (51子系列与52子系列) .............................................1
1.3 MCS-51单片机中断系统的结构 ...................................................................2
1.4 单片机应用 ...................................................................................................2
2 课程设计原理 ..........................................................................................................3
2.1 设计要求 ......................................................................................................3
2.2 AT89C51的单片机简介 ..............................................................................4
2.3 晶振电路 ......................................................................................................5
2.4复位电路 .........................................................................................................5 3 程序流程图及源程序 ............................................................ 错误~未定义
签。6
3.1 流程图 ..........................................................................................................7
3.2 源程序 ..................................................................... 错误~未定义书签。19 总 结 ..........................................................................................................................7 参 考 文 献 ................................................................................................................ 21
II
西华大学课程设计
引 言
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便。因此,研究数字钟及扩大其应用,有着非常现实的意义
I
西华大学课程设计
1 单片机
1.1 MCS-51单片机简介
MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
1.2 MCS-51系列单片机 (51子系列与52子系列)
MCS-51系列单片机分为两大系列,即51子系列与52子系列。
51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951
52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952
这两大系列单片机的主要硬件特性如下表:
图1.1 51/52系列主要硬件特性
上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。51系列的中断源为5个,52系列的中断源为6个。
1
西华大学课程设计
1.3 MCS-51单片机中断系统的结构
5个中断源的符号、名称及产生的条件如下:
INT0:外部中断0,由P3(2端口线引入,低电平或下跳沿引起。
INT1:外部中断1,由P3(3端口线引入,低电平或下跳沿引起。
T0:定时器,计数器0中断,由T0计满回零引起。
T1:定时器,计数器l中断,由T1计满回零引起。
:串行I,O中断,串行端口完成一帧字符发送,接收后引起。 TI,RI
图1.2 MCS-51中断系统结构
1.4 单片机应用
由于单片机具有显著的优点,它已成为科技领域的有力工具,人类生活的得力助手。它的应用遍及各个领域,主要表现在以下几个方面:
(1) 单片机在智能仪表中的应用 单片机广泛地用于各种仪器仪表,使仪器仪表智能化,并可以提高测量的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。
(2)单片机在机电一体化中的应用 机电一体化是械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,
2
西华大学课程设计
例如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。
(3) 单片机在实时控制中的应用 单片机广泛地用于各种实时控制系统中。例如,在工业测控、航空航天、尖端武器、机器人等各种实时控制系统中,都可以用单片机作为控制器。单片机的实时数据处理能力和控制功能,可使系统保持在最佳工作状态,提高系统的工作效率和产品质量。
(4) 单片机在分布式多机系统中的应用 在比较复杂的系统中,常采用分布式多机系统。多机系统一般由若干台功能各异的单片机组成,各自完成特定的任务,它们通过串行通信相互联系、协调工作。单片机在这种系统中往往作为一个终端机,安装在系统的某些节点上,对现场信息进行实时的测量和控制。单片机的高可靠性和强抗干扰能力,使它可以置于恶劣环境的前端工作。
(5) 单片机在人类生活中的应用 自从单片机诞生以后,它就步入了人类生活,如洗衣机、电冰箱、电子玩具、收录机等家用电器配上单片机后,提高了智能化程度,增加了功能,倍受人们喜爱。单片机将使人类生活更加方便、舒适、丰富多彩。 综合所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
2 课程设计原理
2.1 设计要求
单片机控制的数字钟的硬件结构与软件设计,编写C语言源程序。此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。显示器件选用LED七段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。使用动态数码显示的方法,运用独立式按键识别过程,按“时”,“分”,“秒”数据送出显示处理方法。
(1)具有时、分、秒计数显示功能,以24小时循环
(2)LED数码管显示时、分、秒的个位和十位
(3)可以在任意时刻校准时间
3
西华大学课程设计
2.2 AT89C51的单片机简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的
图2.1 AT89C51
4
西华大学课程设计
2.3 晶振电路
右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图2.2 晶振电路
2.4复位电路
单片机复位的条件是:必须使RST/VPD 或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12 MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图所示。电路为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。
图2.3 复位电路
5
西华大学课程设计 2.3 系统原理图
图2.4 原理图 2.4 系统仿真图
图2.5 仿真图
6
西华大学课程设计
3 流程图及源程序
3.1 流程图
图3.1 流程图
程序运行,led显示时间。通过“设置”、“减”、“加”3个按键,对时间进行修改。按“设置”键1下,进入秒钟设置,按“设置”键2下,进入分钟设置,按“设置”键3下,进入时钟设置,按下“加”或“减”按键进行对应的“秒、分、时”时间的加或减设置,按“设置”键4下,释放设置恢复时钟正常运行。按下rest键时间显示清零。
3.2 源程序
#include
#define uchar unsigned char
#define uint unsigned int
sbit KEY1=P0^0; //设定
sbit KEY5=P0^1; //减
sbit KEY9=P0^2; //加
uchar key1,key5,key9;
7
西华大学课程设计 uchar time=0; //设置时间用计时变量 uchar k;
sbit D20=P2^0; //573锁存信号控制 sbit D21=P2^1; //573锁存信号控制 sbit D22=P2^2; //573锁存信号控制 sbit D23=P2^3; //573锁存信号控制 sbit D24=P2^4; //573锁存信号控制 sbit D25=P2^5; //573锁存信号控制 uchar sum=0; //统计变量定义 uchar ss=0,sg=0,fs=0,fg=0,ms=0,mg=0; //时间变量的定义 时十位 时个位
分十位 分个位 秒十位 秒个位
uchar sdm=0; //设定时间秒 uchar sdf=0; //设定时间分 uchar sds=0; //设定时间时 void delay(uint);
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
// 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
void main()
{
D20=1;
P1=0x00;
P1=table[mg];
delay(5);
D20=0;
D21=1;
P1=0x00;
P1=table[ms];
delay(5);
D21=0;
D25=1;
P1=0x00;
P1=table[ss];
8
西华大学课程设计
delay(5);
D25=0;
D24=1;
P1=0x00;
P1=table[sg];
delay(5);
D24=0;
D23=1;
P1=0x00;
P1=table[fs];
delay(5);
D23=0;
D22=1;
P1=0x00;
P1=table[fg];
delay(5);
D22=0;
EA=1;//允许CPU中断
ET0=1;//允许T0中断
TR0=1;//启动T0
ET1=1;//允许T1中断
TR1=1;//启动T1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TMOD=0x11;
while(1)
{
//处理按键
if(KEY1==0)
{
9
西华大学课程设计
delay(5);
if(KEY1==0)
{ while(1)
{
if(KEY1==0)
{
delay(5);
if(KEY1==0)
{
key1++;
TR0=0;
TR1=1;
}
while(!KEY1);
}
if(k!=0)
{
switch(k)
{
case 1:
k=0;
sdm=ms*10+mg;
while(1)
{
if(KEY1==0)
{
delay(5);
if(KEY1==0)
{
key1++;
}
while(!KEY1);
10
西华大学课程设计
if(key1>=4)
{
key1=0;
ms=sdm/10;
mg=sdm%10;
TR0=1;
break;
}
}
if(KEY9==0)
{
delay(5);
if(KEY9==0)
{
sdm++;
if(sdm>=60)
sdm=0;
D20=1;
P1=table[sdm%10];
delay(5);
D20=0;
D21=1;
P1=table[sdm/10];
delay(5);
D21=0;
}
while(!KEY9);
}
if(KEY5==0)
{
delay(5);
if(KEY5==0)
11
西华大学课程设计
{
sdm--;
if(sdm>=60)
sdm=0;
D20=1;
P1=table[sdm%10];
delay(5);
D20=0;
D21=1;
P1=table[sdm/10];
delay(5);
D21=0;
}
while(!KEY5);
}
}
break;
case 2:
k=0;
sdf=fs*10+fg;
while(1)
{
if(KEY1==0)
{
delay(5);
if(KEY1==0)
{
key1++;
}
while(!KEY1);
if(key1>=4)
12
西华大学课程设计
{
key1=0;
fs=sdf/10;
fg=sdf%10;
TR0=1;
break;
}
}
if(KEY9==0)
{
delay(5);
if(KEY9==0)
{
sdf++;
if(sdf>=60)
sdf=0;
D22=1;
P1=table[sdf%10];
delay(5);
D22=0;
D23=1;
P1=table[sdf/10];
delay(5);
D23=0;
}
while(!KEY9);
}
if(KEY5==0)
{
delay(5);
if(KEY5==0)
13
西华大学课程设计
{
sdf--;
if(sdf>=60)
sdf=0;
D22=1;
P1=table[sdf%10];
delay(5);
D22=0;
D23=1;
P1=table[sdf/10];
delay(5);
D23=0;
}
while(!KEY5);
}
}
break;
case 3:
k=0;
sds=ss*10+sg;
while(1)
{
if(KEY1==0)
{
delay(5);
if(KEY1==0)
{
key1++;
}
while(!KEY1);
if(key1>=4)
{
14
西华大学课程设计
key1=0;
ss=sds/10;
sg=sds%10;
TR0=1;
break;
}
}
if(KEY9==0)
{
delay(5);
if(KEY9==0)
{
sds++;
if(sds>=24)
sds=0;
D24=1;
P1=table[sds%10];
delay(5);
D24=0;
D25=1;
P1=table[sds/10];
delay(5);
D25=0;
}
while(!KEY9);
}
if(KEY5==0)
{
delay(5);
if(KEY5==0)
{
sds--;
15
西华大学课程设计
if(sds>=24)
sds=0;
D24=1;
P1=table[sds%10];
delay(5);
D24=0;
D25=1;
P1=table[sds/10];
delay(5);
D25=0;
}
while(!KEY5);
}
}
break;
}
break;
}
}
}
}
//*********时钟时间显示*************//
if(sum>=20)
{
sum=0;
mg++;
if(mg>=10)
{
mg=0;
ms++;
if(ms>=6)
{
16
西华大学课程设计
ms=0;
fg++;
if(fg>=10)
{
fg=0;
fs++;
if(fs>=6)
{
fs=0;
sg++;
if(ss==2)
if(sg==4)
sg=0;
if(sg>=10)
{
sg=0;
if(ss<=2)
ss++;
if(ss>2)
ss=0;
D25=1;
P1=0x00;
P1=table[ss];
delay(5);
D25=0;
}
D24=1;
P1=0x00;
P1=table[sg];
delay(5);
D24=0;
}
17
西华大学课程设计
D23=1;
P1=0x00;
P1=table[fs];
delay(5);
D23=0;
}
D22=1;
P1=0x00;
P1=table[fg];
delay(5);
D22=0;
}
D21=1;
P1=0x00;
P1=table[ms];
delay(5);
D21=0;
}
D20=1;
P1=0x00;
P1=table[mg];
delay(5);
D20=0;
}
}
}
void delay(uint m) {
unsigned int i,j;
for(i=0;i=40)
{
time=0;
TR1=0;
k=key1;
key1=0;
}
}
19
西华大学课程设计
总 结
做了两周的课程设计,有很多的心得体会,有关于单片机的,也有关于模电数电等基础科目的。
因为单片机已经很久没复习,刚拿到目,不知道从哪入手,后来通过对书本的回顾,加深了对单片机的记忆。有些知识会迁移和联系模电数电。课堂教学考虑到大多数同学的需求,主要强调“基本”——基本知识、基本理论、基本方法、基本技能。而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。我们正面临就业问题,这次课设给了我们一个机会去试验。
20
西华大学课程设计
21
西华大学课程设计
参 考 文 献
1 普通图书
007 [1] 黄惟公(单片机原理与应用技术[M].:西安电子科大出版社2[2] 张毅刚(MC-51单片机应用设计(二版)[M].:哈工大出版社 2005 [3] 李广第(单片机基础[M](北京:北京航天航空大学出版社 [4] 杨文龙(单片微机原理及应用[M].西安:电子科技出版社 [5] 周航慈(单片机程序设计基础[M](北京:北京航天航空大学出版社 [6] 胡汉才(单片机原理及其接口技术[M](北京:清华大学出版社
22