基于51单片机的数字时钟设计的毕业设计概要(共20页)_第1页
基于51单片机的数字时钟设计的毕业设计概要(共20页)_第2页
基于51单片机的数字时钟设计的毕业设计概要(共20页)_第3页
基于51单片机的数字时钟设计的毕业设计概要(共20页)_第4页
基于51单片机的数字时钟设计的毕业设计概要(共20页)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上 专心-专注-专业摘 要近几年,单片机在各个领域得到广泛的应用。从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。在它问世之前,自动控制设备得不到广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。在第一台微处理器成功研制不久,第一个单片机就问世了。因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。本设计利用STC89C51单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用C语言进行软件编程,并用Proteus软件进行演示、验证。主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机STC89C51芯片和L

2、ED数码管为核心,辅以必要的电路,构成了一个单片机的数字电子时钟。它的计时周期为24小时,显满刻度为“23时59分59秒”,且配有8个独立键盘,可以灵活地调节时间和日期,并具有一定的扩展性。关键词:单片机,数字时钟,动态显示,LED数码管显示,独立按键。第一章 绪论多功能数字钟设计的背景单片机自从1976年由Intel公司推出MCS-48开始,迄今已有二十多年之久了。由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,单片机应用领域已经从面向工业控制、通讯、交通、智能仪表等方面迅速发展到家用消费产品、办公自动化、汽车电子

3、、PC机外围以及网络通讯等广大领域。本文讨论的单片机多功能数字钟系统的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高,功能多等多种特点。不仅能满足所需要求而且还有很多功能可供扩展,有着广泛的应用实践领域。第二章STC89C51单片机简介2.1 单片机介绍 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机内部也用和电脑功能类似的模

4、块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可。用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。 单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也

5、很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!2.2 单片机的应用特点随着集成电路技术的发展,单片机的功能越变越强,涉及到各个电子应用领域。目前单片机的系列也十分多,各有各的特点,如目前的MCS51系列、PIC系列等等,通过这几年的应用,普通感觉到特别需要单片机具有如下几个应用特点: 1.低功耗、宽电压工作范围,内部看门狗;2.高速指令系统,单字节指令,精简指

6、令集易学易用;3.内部ROM结构,且具有廉价OTP(一次性写入程式)ROM,以便小批量生产,减少MASK风险;4.程序保密功能,防止拷贝,保护成果;5.方便的开发工具(仿真器与烧入器)。2.3 单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发

7、与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。2.4 HT1380引脚功能介绍1、HT1380的引脚功能HT1380采用DIP8封装形式封装,其引脚分配如图3所示。各引脚的功能及其用法如下。1)、脚(NC):空引脚。2)、脚(X1):内部振荡器输入脚。3)、脚(X2):内部振荡器输出脚。HT1380片内集成有高增益的自激振荡放大电路,2)脚、3)脚为该放大电路的输入、输出引脚,2)脚、3)脚间接外接32.768khz的晶振,就可以产生频率为32.768khz的时钟信号。4)、脚(GND):

8、接地引脚。5)、脚(RST):复位引脚。当RST=0时,芯片复位,单片机对HT1380所建立的控制逻辑无效,所有数据传送终止。当RST=1时,所建立的控制逻辑有效。只有RST=1时,才可以对HT1380进行读、写或测试操作。6)、脚(I/O):数据输入/输出引脚。7)、脚(SCLK):串行时钟输入引脚。8)、脚(VCC):电源引脚。2、HT1380的应用电路HT1380的应用电路如下。HT1380 的SCLK、I/O、RST脚分别与单片机的3根I/O口线P1.1、P1.2、P1.3相接,单片机的P1.1口线充当时钟线,向HT1380传送时钟信号,P1.2口线充当数据线,用来与HT1380之间传

9、输数据,p1.3口线充当芯片选择控制线,控制芯片的选择。C1、C2为5P8P的小电容,起稳频和加速起振的作用。第三章 设计方案通常通过单片机设计电子时钟有2种方法:一是通过单片机内部的定时器计数器。采用软件编程实现时钟计数,一般称为软时钟,这种方法硬件线路简单,程序比较复杂。系统的功能一般与软件相关。通常用于对时间精度要求不高的场合。二是采用时钟芯片 他的功能强大,功能不见集成在芯片内需,自动产生时钟等相关功能。硬件成本较高,软件编程。通常对时钟精确度要求较高的场合。电子时钟的系统软件程序有、由主程序和子程序组成,主程序包含初始化参数设置,按键处理,数码管显示模块等。在设计时候、各个模块都采用

10、子程序结构设计。在主程序中调用。由于定时器,计数器采用中断方式处理,应此还用辨析定时器,中断服务子程序,在定时器,计数器中断服务子程序种对时钟进行调整。3.1 主程序主程序执行流程图如图1所示。主程序先对显示单元和定时器计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有建按下,则转入相应的功能程序。 图1 主程序执行流程图 3.2 系统框图项目系统框图如图2所示。3.3 数码管显示模块本设计的显示模块采用6位一体共阴极数码管,显示分为时钟显示模式,显示时钟模式,从右到左依次显示秒个位,秒十位,分个位,分十位,时个位,时十位;数码管显示的信息用6个内存单元存放,这6个内存单元为显示缓冲

11、区,其中秒个位和秒十位,分个位和分十位,时个位和时十位分别由秒数据,分数据和小时数据分拆得到。在本系统种数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息字段码表,显示的时候,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段码表中查出的所显示的字段码。从P2口输出,同时在P1口将对应的位选码输出,选中显示的数码管,就能在相应的数码管上显示显示缓冲区的内容。3.4按键处理模块按键处理设置为:如果没有按键,则为时钟模式,时钟正常走时,当依次按下时间按键和秒按键时秒单元每次加1或减1,当加到59后跳为00,当按下分按键的时候,分单元每次加1或减1,当加到59的时候跳到00;当按下时

12、按键的时候,时单元每次加1,当加到23的时候跳为00,反之亦然。 第四章 硬件电路设计4.1 复位电路 MCS-51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。上电复位:上电复位电路是种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平

13、维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。按键复位:电路在运行过程中,也可以通过按键进行复位。当按下复位按键,复位引脚RST通过按键与地相接,得到低电平,从而实现复位。电路图如图2所示:图2 复位电路4.2 时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,

14、另一种为外部时钟方式。本文用的是内部时钟方式。电路图如图3所示: 图3 时钟震荡电路MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。4.3 按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭

15、合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。电路图如图4所示: 图4 按键电路 P1.4口所接的按键为模式切换按键,当不按下此按键时为时钟显示模式,当按下此按键时为日期和星期显示模式。当为时钟显示模式的时候,端口连接分别表示如下:P0.4口表示调整秒、分“+”,按一下则时加1,当加到59后再加一次为0; P0.3口表示调整秒、分“-”,按一下则时减1,当减到0后再减一次为59;P0.4口表示调整时“+”,按一下则时加1,当加到23后再加一次为0; P0.3口表示调整时“-”,按一下则时减1,当

16、减到0后再减一次为23;P0.2口表示确认键;P0.1口表示调整秒按键;P0.5口表示调整分按键;P0.6口表示调整时按键;4.4 数码管显示电路数码管是由6个发光二极管构成的显示器件。在数码管中,若将二极管的阳极连在一起,称为共阳极数码管;若将二极管的阴极连在一起,称为共阴极数码管。本设计用到的6个数码管均是共阴极的。当发光二极管导通时,它就会发光。每个二极管就是一个笔划,若干个二极管发光时,就构成了一个显示字符。将单片机的I/O口控制相应的芯片与数码管的a-g相连,低电平的位对应的发光二极管亮,这样,由I/O口输出不同的代码,就可以控制数码管显示不同的字符。本设计的6个数码管均采用动态显示

17、方式,系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。电路图如图5所示:图5 数码管显示电路电路第五章 软件设计与程序代码5.1 软件设计5.1.1系统框图如图5.1.2程序流程图如图5.2 软件仿真电路全图图7 软件仿真电路全图此图为时钟显示模式,显示内容为15时9分49秒图8 软件仿真电路全图此图为日期和星期显示模式,显示内容为6月4日星期二5.3 源程序代码#

18、include <reg51.h>#define uchar unsigned char#define DCOUNT 6#define MinusVal 0x02#define PlusVal 0x04#define RightVal 0x08#define LeftVal 0x10#define TimeVal 0x20#define DateVal 0x40#define SetVal 0x80#define CKeyVal 25#define port_s P1#define port_b P2#define keyport P0uchar data wcnt,second;

19、int data timcnt;uchar data h,m,s;uchar code led=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/uchar code ledctrl=0xfe,0xfd;uchar buf8;uchar code ledctrl=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;uchar idata disdat6;uchar idata keytim;uchar data flashsite;uchar second_buff;uchar m_buff;uchar h_buf

20、f;int k;bit down,keytreated,setdis,dattim;void display(uchar);void display_hms();void init_T1(void);void disdate(void);void distim(void);void key(void);void main() second_buff=0; m_buff=0; h_buff=0; second=0; h=m=s=0; init_T1(); timcnt=0; wcnt=0; while(1) display_hms(); / PCON|=0x01; void init_T1(vo

21、id) TMOD=0x11; TL1=(65536-9216)%256; TH1=(65536-9216)/256; TL0=(65536-1843)%256; TH0=(65536-1843)/256; PT1=1; ET1=1; ET0=1; EA=1; TR1=1; TR0=1;void tim_T1(void) interrupt 3 using 1 TL1=(65536-9216)%256; TH1=(65536-9216)/256; timcnt+; if(timcnt>=100) timcnt=0; second+; if(second>=60) second=0;

22、m+; if(m>=60) m=0; h+; if(h>=24) h=0; buf0=second%10; buf1=second/10; buf2=0x40; buf3=m%10; buf4=m/10; buf5=0x40; buf6=h%10; buf7=h/10; /display_hms(h,m,second);/*void display(uchar time) port_s=0; port_b=ledctrlwcnt; if(wcnt=0)xzzx port_s=ledtime%10; else port_s=ledtime/10; wcnt+; wcnt=wcnt%2

23、;*/ void tim_T0(void) interrupt 1 using 2 TL0=(65536-1843)%256; TH0=(65536-1843)/256; key(); wcnt+; wcnt=wcnt%8; void display_hms() /port_s=0; switch(wcnt) case 0: port_b=ledctrlwcnt; port_s=ledbuf0;break; case 1: port_b=ledctrlwcnt; port_s=ledbuf1;break; case 2: port_b=ledctrlwcnt; port_s=buf2;brea

24、k; case 3: port_b=ledctrlwcnt; port_s=ledbuf3;break; case 4: port_b=ledctrlwcnt; port_s=ledbuf4;break; case 5: port_b=ledctrlwcnt; port_s=buf5;break; case 6: port_b=ledctrlwcnt; port_s=ledbuf6;break; case 7: port_b=ledctrlwcnt; port_s=ledbuf7;break; void init_distim(void) distim(); flashsite=6; setd

25、is=0; dattim=0;void init_disdat(void) disdate(); flashsite=6; setdis=0; dattim=1;void init_settim(void) distim(); flashsite=6; setdis=1; dattim=0;void init_setdat(void) disdate(); flashsite=0; setdis=1; dattim=1;void kplus(void) /0x04 确定 /if(setdis) / disdatflashsite=(disdatflashsite+1)%10; second=s

26、econd_buff; m=m_buff; h=h_buff; TR1=1; void kminus(void) /0x02 秒的设置 / if(setdis) / disdatflashsite=(disdatflashsite+10-1)%10; TR1=0; second_buff=second; k=0; void ktim(void) /0x20 分的设置 /if(setdis) init_settim(); /else init_distim(); TR1=0; m_buff=m; k=1; void kdat(void) /0x40 时的设置 /if(setdis) init_s

27、etdat(); /else init_disdat(); TR1=0; h_buff=h; k=2; void kleft(void) /0x10 自加 /if(setdis) / flashsite=(flashsite+1)%DCOUNT; switch(k) case (0): second_buff+; if(second_buff>59) second_buff=0; buf0=second_buff%10; buf1=second_buff/10;break; case (1): m_buff+; if(m_buff>59) m_buff=0; buf3=m_buff

28、%10; buf4=m_buff/10;break; case (2): h_buff+; if(h_buff>23) h_buff=0; buf6=h_buff%10; buf7=h_buff/10;break; void kright(void) /0x08 自减 /if(setdis) / flashsite=(flashsite+DCOUNT-1)%DCOUNT; switch(k) case (0): second_buff-; if(second_buff=255) second_buff=59; buf0=second_buff%10; buf1=second_buff/1

29、0;break; case (1): m_buff-;if( m_buff=255) m_buff=59; buf3=m_buff%10; buf4=m_buff/10;break; case (2): h_buff-;if(h_buff=255) h_buff=23; buf6=h_buff%10; buf7=h_buff/10;break; void kset(void) if(setdis) init_distim(); else init_settim();void key(void) uchar keyval; keyport=0xff; keyval=keyport; / keyv

30、al=keyval; if(keyval) if(down) if(!keytreated) switch (keyval) case MinusVal: kminus(); break; case PlusVal: kplus(); break; case LeftVal: kleft(); break; case RightVal: kright(); break; case TimeVal: ktim(); break; case DateVal: kdat(); break; case SetVal: kset(); default: break; keytreated=1; else

31、 ; /*if(keyval=MinusVal)|(keyval=PlusVal) keytim+; if(keytim=CKeyVal) keytim=0; if(keyval=PlusVal) kplus(); else kminus(); */ else down=1; else down=0; keytreated=0; 第六章 结论 通过做这一次毕业论文,感觉自己的收获很多。毕业论文是为了让我们对平时学习的理论知识与实际操作相结合,在理论和实践教学的基础上进一步巩固已学基本理论及应用知识并加以综合提高,学会将知识应用于实际,提高分析和解决问题的能力。本次设计主要涉及了单片机原理及接口

32、技术的相关知识和C语言编程的诸多要领。设计中涉及到的许多问题,更是对以前所学的知识的回顾及在过去的三年中学到知识的总结,这次设计对我将来的工作有着重要的意义。在此设计中,我积极查阅资料,细心钻研各个细节,完成了数字电子时钟时钟的电路设计,也让我明白了在设计中考虑问题应该全面。在设计中既巩固了我的理论知识,又学会提炼需要的信息的方法。这次对数字电子时钟的设计,让我了解了设计电路的步骤,也让我了解了有关数字电子时钟的原理与设计理念,要实现电路功能总要先设计,成功之后才实际接线的。现在还只停留在理想阶段,也许在设计实际电路过程中会有困难但是我相信只要努力一定能真正设计出实际产品。        在做毕业论文的过程中,我深深地感受到了自己所学到知识的有限,明白了只学好课本上的知识是不够的,要通过图书馆和互联网等各种渠道来扩充自己的知识面。我并不在乎设计是否会成功,这不重要,最重要的是设计的过程。因为设计的过程在整个过程中所占时间最多,锻炼我们的价值也是最大的。设计开始的时候我真的是毫无头绪,手足无措,甚至有过放弃的想法,但终于坚持了下来。我明白了要设计一个成功的电路,除了有创新能力之外,必须要有扎实的知识基础,要熟练地掌握课本上的知识,只有这样才能对试验中出现的问题进行分析解决。在整个电路的设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论