文档库 最新最全的文档下载
当前位置:文档库 › LED数码管显示电子钟设计

LED数码管显示电子钟设计

LED数码管显示电子钟设计
LED数码管显示电子钟设计

《单片机原理及应用》

课程设计说明书

题目LED数码管显示电子钟设计系(部)

专业(班级)

姓名

学号

指导教师

起止日期

课程设计任务书

系(部): 专业:

目录

一、摘要

单片机全称为单片机微型计算机(Single Chip Microsoftcomputer).从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。

单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容

易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础.在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。

二、设计内容

2.1、任务要求

本次设计时钟电路,使用了A TC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒,还有设定闹钟,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求.

2。2、设计程序方案

设计程序思路:

1.实现8位数码管动态扫描显示

void Display_1Code(unsigned char pos,unsigned char code1);

void Display_2Num(unsigned char pos,unsigned char num,unsigned char point);

数码管动态扫描就是:

段显位选延时显示消影

因为我们用的是共阳数码管,而段码表用的共阴的,所以对code1取反

共阳数码管高电平点亮,所以P2移位后不用取反,从高位开始是第1个数码管

掩饰显示1ms,P2给全0全部熄灭,消影作用.

2。时间显示

采用实时时钟芯片DS1302,读芯片的datasheet,根据时序等说明编写驱动程序。

1)初始化

void DS1302_Init(void)

2)底层基本读写函数

void DS1302_WriteByte(unsigned char byte)

unsigned char DS1302_ReadByte(void)

3)对芯片寄存器的读写函数

void DS1302_WriteData(unsigned char addr,unsigned char mdata)

unsigned char DS1302_ReadData(unsigned char addr)

4)修改时间函数

void DS1302_RWriteData(unsigned char addr,unsigned char mdata)

这些函数的实现就看dagasheet了,主要是时序

a.时钟上升沿写入数据

b。时钟下降沿读出数据

c。秒寄存器最高位为1关闭时钟,为0则开启时钟

5)显示时间和日期

void Display_Time(void)

显示时分秒,0x40为显示横,如12-30-00

void Display_Date(void)

显示日期,如20131230,中间没有横杆,但是在年月日上有小数点,通过

Display_2Num最后一个参数控制

void Display(void)根据dis_mode变量选择当前显示的是时间还是日期还是闹钟。

GetDateTime读取时间并及闹钟时间做比较,检测是否到达闹钟时间。

6)扫描方式

动态扫描,定时器0控制扫描周期,10ms扫描一次

void Timer0_OVF(void)interrupt 1

TH0 = (65536-10000)/256;

TL0 = (65536-10000)%256;

}

3.按键调时

void KeyScanf(void)

flag_alarm_mode是闹铃模式则按键退出闹铃并返回,一键关闭闹钟

然后对setting_item变量自加,依次表示设置秒、分、时、天、月等等,设置项对应的小数点位点亮.

加键一样的过程,根据setting_item的值加不同的量:秒、分、时。

记住改变时间后要修改DS1302芯片的寄存器才能真正修改时间。

2。3 设计电路仿真图

数码管显示模块:

图1 数码管显示模块

数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一

起,即为公共商.阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极.通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段.系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线.动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。

本设计采用共阳极数码管。

晶振电路模块:

在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2.而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

图2 晶振电路

按键模块:

时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器、时个位和时十位计数器及星期计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器.

图3 按键模块

时钟芯片电路:

X1 X2 : 32.768晶振管脚

GND :地

RST : 复位脚

I/O :数据输入/输出引脚

SCLK :串行时钟

VCC1,VCC2 :电源供电管脚

图4 时钟芯片电路

电路总体设计仿真图:

图5 总体仿真图

按菜单/显示时间键会出现一个小光标点,再按菜单/显示时间键,光标点会左移,按加速或者减速键会加减数值。继续按菜单/显示时间键跳到显示日期、闹钟时,也可以用加速或者减速键调整时间。按减速/显示闹钟键会显示闹钟.按加速/显示日期键会显示日期。5s后会自动恢复到显示时间。操作方便简洁.

图6 日期显示

图7 闹钟显示

三、心得体会

单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义.在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。站在库的位置上想问题。另外,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美及否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中.虽然有些程序不是那么清楚理解,自己好好查阅资料,不懂还可以请教老师、同学.当我有什么不明白的地方去向其他同学请教时,即使他们正在忙于思考,也会停下来帮助我。当我有什么想法告诉他们的时候,他们不会因为我得无知而不耐心听我讲,反而会指出我的不足,一起提高.学到了共同探讨、共同前进的精神,也让我明白谦虚好学的真谛设计过程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。在以后的学习过程中我会努力的。

四、参考文献

[1]谢自美.电子线路设计·实验·测试[M].武汉:华中理工大学出版社,1992.

[2] 何立民.单片机应用系统设计[M].北京:北京航空航天大学出版社,1993.

[3]楼然笛.单片机开发[M].北京:人民邮电出版社,1994.

[4] 付家才.单片机控制工程实践技术[M].北京:化学工业出版社2004.3.

[5]李光才.单片机课程设计实例指导[M].北京:北京航空航天大学出版社2004。

[6] 刘湘涛.江世明.单片机原理及应用[M]. 北京:电子工业出版社2006。

程序:

/****************************************************************程序功能: 数码管+DS1302的可调时钟(含一个闹钟功能) *

* CPU 型号: AT89C51 *

*晶振频率: 12.0000MHz *

*时间: 2013-12—29 *

*作者:唐蜜珠*

*学号: 20110261xx *

*班级: 11电子1班*

*说明:单片机课程设计*

***************************************************************/

#include

/*设置项序号宏定义*/

#define SETTING_NONE 0

#define SETTING_SECOND 1

#define SETTING_MINUTE 2

#define SETTING_HOUR 3

#define SETTING_DAY 4

#define SETTING_MONTH 5

#define SETTING_YEAR 6

#define SETTING_ALARM_SECOND 7

#define SETTING_ALARM_MINUTE 8

#define SETTING_ALARM_HOUR 9

/*显示状态宏定义*/

#define DIS_MODE_TIME 1 /* 显示时间*/

#define DIS_MODE_DATE 2 /* 显示日期*/

#define DIS_MODE_ALARM 4 /*显示闹钟*/

/*闹钟响/停控制宏定义 */

#define ALARM_ON 1 /* 闹钟响 */

#define ALARM_OFF 0 /*闹钟停 */

#define ALARM_MODE_NONE 0

#define ALARM_MODE_ALARM 1

#define ALARM_MODE_POINT 2

#define ALARM_MODE_DELAY 3

/* DS1302时钟芯片引脚定义 */

sbit DS1302_DATA = P1^0;

sbit DS1302_SCLK = P1^1;

sbit DS1302_CE = P1^2;

/*按键引脚定义*/

sbit KeyMenu = P3^5;

sbit KeyAdd = P3^6;

sbit KeyDec = P3^7;

/*闹钟蜂鸣器引脚定义*/

sbit Beep = P1^7;

/* 共阴数码管段码表 */

unsigned char code codeSeg7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};

/* 时间/日期相关变量*/

unsigned char century = 21,year,month,day,hour,minute,second;

/*闹钟变量 */

unsigned char alarm_hour,alarm_minute,alarm_second;

/* 当前设置项序号变量,初始化为SETTING_NONE表示非设置模式 */

unsigned char setting_item = SETTING_NONE;

/* 显示状态变量, 初始化为DIS_MODE_TIME显示时间*/

unsigned char dis_mode = DIS_MODE_TIME;

/* 闹钟响标志:0-闹钟没响 1—闹钟响 */

unsigned char flag_alarm_mode = 0;

/*闹钟响延时时间控制变量, 16位 */

unsigned int alarm_delay;

unsigned char point_count;

/********************************/

/* 函数功能:约xms毫秒延时*/

/* 入口参数:xms—延时xms毫秒*/

/* 出口参数:无*/

/********************************/

void DelayMs(unsigned int xms)

unsigned int i,j;

for(i=xms;i〉0;i—-)

for(j=110;j〉0;j—-);

}

/*****************************************************************************************************/

/*函数功能:定时器延时控制

*/

/*入口参数:mode-闹钟、整点报时、5s回显时间模式控制 alarmonoff—闹钟响(1)不响(0) delay-延时时间(秒)*/

/*出口参数:无

*/

/*****************************************************************************************************/

void Alarm(unsigned char mode,unsigned char alarmonoff,unsigned char delay)

flag_alarm_mode = mode; /* 保存显示模式设置 */

Beep = !alarmonoff; /* 操作蜂鸣器, 硬件电路为0响*/

alarm_delay = delay * 100;/* alarm_delay为定时器0溢出中断计数, 10ms时基, 乘以100为1s */

}

/********************************/

/*函数功能:DS1302写字节*/

/*入口参数:byte-写入字节*/

/* 出口参数:无*/

/********************************/

void DS1302_WriteByte(unsigned char byte)

unsigned char i;

for(i=0;i<8;i++)

{

DS1302_SCLK = 0;

byte 〉>= 1;/* BIT0数据移到CY寄存器 */

DS1302_DATA = CY;/* 将CY寄存器的值写到DS1302数据引脚 */

DS1302_SCLK = 1; /* 在时钟上升沿写入*/

}

/********************************/

/*函数功能:DS1302读字节*/

/*入口参数:无*/

/* 出口参数:返回读取的字节数据*/

/********************************/

unsigned char DS1302_ReadByte(void)

{

unsigned char i,byte = 0;

DS1302_SCLK = 1;

for(i=0;i<8;i++)//读数据

byte 〉>= 1;

DS1302_SCLK = 0; /*时钟下降沿读取*/

if(DS1302_DATA) /*读取引脚状态 */

byte |= 0x80; /*保存 */

DS1302_SCLK = 1;

}

return (byte);

}

/******************************************/

/*函数功能:写DS1302 */

/*入口参数:addr—写目标地址, mdata—待写数据*/

/*出口参数:无*/

/******************************************/

void DS1302_WriteData(unsigned char addr,unsigned char mdata)//向DS1302写数据{

DS1302_CE = 0;

DS1302_SCLK = 0;

DS1302_CE = 1; /* 使能DS1302 */

DS1302_WriteByte(addr); /* 写入地址*/

DS1302_WriteByte(mdata);/*写入数据 */

DS1302_CE = 0;

}

/********************************/

/*函数功能:读DS1302 */

/*入口参数:addr—读目标地址 */

/*出口参数:返回读到的数据 */

/********************************/

unsigned char DS1302_ReadData(unsigned char addr) //向DS1302读数据

{

unsigned char mdata,mdatah,mdatal;

DS1302_CE = 0;

DS1302_SCLK = 0;

DS1302_CE = 1;

DS1302_WriteByte(addr);/* 写入地址*/

mdata = DS1302_ReadByte(); /* 读出数据*/

DS1302_CE = 0;

mdatal = mdata & 0x0F;

mdatah = (mdata>>4) & 0x0F;

mdata = mdatal + mdatah * 10;/*十六进制转化为十进制*/

return (mdata);

/**********************************************/

/*函数功能:修改DS1302的时间值*/

/*入口参数:addr—写目标地址, mdata-修改值 */

/*出口参数:无 */

/**********************************************/

void DS1302_RWriteData(unsigned char addr,unsigned char mdata)

unsigned char mdatah,mdatal;

mdatal = mdata % 10;

mdatah = mdata /10;

mdata = mdatal + (mdatah〈〈4); /* 十进制转化为十六进制*/

DS1302_WriteData(0x8e,0x00); /*关闭写保护 */

DS1302_WriteData(addr,mdata); /*写入修改数据*/

DS1302_WriteData(0x8e,0x80); /* 写保护使能*/

}

/********************************/

/*函数功能:初始化DS1302 */

/*入口参数:无 */

/*出口参数:无 */

/********************************/

void DS1302_Init(void)

unsigned char mdata;

DS1302_CE = 0;

DS1302_SCLK = 0;

DS1302_CE = 1;

DS1302_WriteByte(0x81);

mdata = DS1302_ReadByte(); /* 读秒寄存器*/

if(mdata & 0x80)/* 秒寄存器最高位为时钟关闭位, 1—关闭 0-开启 */ {

DS1302_RWriteData(0x80,0x00);/* 清除秒寄存器, 开启DS1302, 开始走时间 */ }

DS1302_CE = 0;

/*********************************************************/

/*函数功能:判断当前设置项是否为参数所指 */

/*入口参数:item—待比较的设置项编号 */

/*出口参数:1-当前设置项为item所指 0—当前设置项非item所指*/

/*********************************************************/ unsigned char IsSettingItem(unsigned char item)

return (setting_item == item);

}

/***************************************/

/*函数功能:点亮1位数码管 */

/*入口参数:pos—显示位置 code1—显示段码*/

/*出口参数:无*/

/***************************************/

void Display_1Code(unsigned char pos,unsigned char code1)

P0 = ~code1; /* 设计采用共阳数码管,共阴段码取反 */

P2 = (0x80 〉〉 pos); /*选择显示位置*/

DelayMs(1);/*延时显示1ms */

P2 = 0x00;/* 关闭所有数码管,消除重影 */

}

/**********************************************************************/

/*函数功能:显示两位数字 */

/*入口参数:pos-显示的位置 num-待显示的数字 point-是(1)否(0)显示小数点*/

/*出口参数:无*/

/**********************************************************************/

void Display_2Num(unsigned char pos,unsigned char num,unsigned char point)

Display_1Code(pos,codeSeg7[num / 10]); /* 显示十位数 */

Display_1Code(pos + 1,point?codeSeg7[num % 10] | 0x80 : codeSeg7[num % 10]);/*显示个位数,如果point为真,则最高位置1显示小数点 */

}

/********************************/

/*函数功能:显示实时时间 */

/*入口参数:无 */

/*出口参数: */

/********************************/

void Display_Time(void)

Display_2Num(0,hour,IsSettingItem(SETTING_HOUR));/* 位置0显示小时,第三个参数表示是否显示小数点, 设置小时的时候显示,下同*/

Display_1Code(2,0x40);/*显示横杆*/

Display_2Num(3,minute,IsSettingItem(SETTING_MINUTE));

Display_1Code(5,0x40);

Display_2Num(6,second,IsSettingItem(SETTING_SECOND));

}

/********************************/

/*函数功能:显示当前日期*/

/*入口参数: */

/*出口参数:*/

/********************************/

void Display_Date(void)

Display_2Num(0,century - 1,0);

Display_2Num(2,year,IsSettingItem(0) || IsSettingItem(SETTING_YEAR)); /* IsSettingItem (0)表示非设置状态也显示小数点*/

Display_2Num(4,month,IsSettingItem(0) || IsSettingItem(SETTING_MONTH));

Display_2Num(6,day,IsSettingItem(0)|| IsSettingItem(SETTING_DAY));

}

/********************************/

/*函数功能:显示闹钟当前设置值*/

/*入口参数:无*/

/*出口参数:无*/

/********************************/

void Display_Alarm(void)

Display_2Num(0,alarm_hour,IsSettingItem(SETTING_ALARM_HOUR));

Display_1Code(2,0x40);

Display_2Num(3,alarm_minute,IsSettingItem(SETTING_ALARM_MINUTE));

Display_1Code(5,0x40);

Display_2Num(6,alarm_second,IsSettingItem(SETTING_ALARM_SECOND));

/********************************/

/*函数功能:显示管理 */

/*入口参数:无*/

/*出口参数:无 */

/********************************/

void Display(void)

单片机课程设计报告—LED显示电子钟

《单片机原理及其接口技术》 课程设计报告 课题LED显示的电子钟 姓名 学号 院系自动控制与机械工程学院 班级 指导教师

2012 年6 月 目录 一、课程设计目的 (3) 二、课程设计要求 (3) 三、设计内容 (4) 四、硬件设计需求 (5) 1、硬件系统各模块功能 (5) (1)、单片机最小系统——AT89C51 (5) (2)、LED数码管显示模块 (8) (3)、晶振模块 (9) (4)、按键模块 (10) 五、电路软件系统设计 (10) 1、protues软件简介 (10) 2、仿真结果 (11) 3、流程图 (13) 六、误差分析 (15) 七、总结与心得体会 (15) 八、参考文献 (16) 九、附录(程序) (16)

一、课程设计目的 单片机课程设计作为独立的教学环节,是自动化及相关专业集中实践性环节系列之一,是学习完《单片机原理及应用》课程后,并在进行相关课程设计基础上进行的一次综合练习。 单片机课程设计过程中,学生通过查阅资料,接口设计,程序设计,安装调试等环节,完成一个基于MCS-51系列单片机,涉及多种资源应用,并且有综合功能的小应用系统设计。使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路,电子元器件等方面的知识进一步加深认识,同时在软件编程,调试,相关仪器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。使学生增进对单片机的感性认识,加深对单片机理论方面的理解,加深单片机的内部功能模块的应用,如定时器/计数器,中断,片内外存储器,I/O接口,串行口等。使学生了解和掌握单片机应用系统的软硬件设计过程,方法及实现,强化单片机应用电路的设计与分析能力。提高学生在单片机应用方面的实践技能和科学作风,培育学生综合运用理论知识解决问题的能力。 二、课程设计要求 课程设计应以学生认知为主体,充分调动学生的积极性和能动性,重视学生自学能力培养。根据课程设计具体课题安排时间,确定课题的涉及,变成和调试内容,分团队开展课程设计活动,安排完成每部分工作。课程设计集中在实验室进行。在课程设计过程中,坚持独立完成,实现课题规定的各项指标,并写出设计报告。 要求学生自己调研,设计系统功能,划分软硬件功能,选择器件,用Proteus软件在PC机上完成硬件原理图设计。然后使用使用Proteus软件在PC机运行系统仿真,调试电路和修改调试程序。对整个系统做试运行,有问题再进一步修改调试,直至达到设计的要求和取得满意的效果。最后编写系统说明书,其内容主要包括系统功能介绍,使用范围,主要性能指标,使用

用数码管显示实时日历时钟的应用设计

(用数码管显示实时日历时钟的应用设计)

摘要 本课题通过MCS-51单片机来设计电子时钟,采用汇编语言进行编程,可以实现以下一些功能:小时,分,秒和年,月,日的显示。本次设计的电子时钟系统由时钟电路,LED显示电路三部分组成。51单片机通过软件编程,在LED数码管上实现小时,分,秒和年,月,日的显示;利用时钟芯片DS1302来实现计时。本文详细介绍了DS1302 芯片的基本工作原理及其软件设计过程,运用PROTEUS软件进行电路连接和仿真,同时还介绍了74LS164,通过它来实现I|O口的扩展。 关键词:时钟芯片,仿真软件,74LS164 目录 前言 0.1设计思路 (8) 0.2研究意义 (8)

一、时钟芯片 1.1 了解时钟芯片……………………………………………….8-9 1.2 掌握时钟芯片的工作原理………………………………….10-11二、74LS164 2.1 了解74LS164........................................................11-12 2.2 掌握的74LS164工作原理. (12) 三、数码管 3.1 熟悉常用的LED数码管...........................................12-13 3.2 了解动态显示与静态显示. (13) 四、程序设计 4.0 程序流程图 (14) 4.1 DS1392的驱动.......................................................15-16 4.2 PROTUES实现电路连接. (17) 4.3 数码管的显示:小时;分;秒 (18) 4.4 数码管显示:年;月;日 (19) 五、总结…………………………………………………………………..20-21 六、附页程序………………………………………………………………22-31前言

LED数码管显示电子钟设计

《单片机原理及应用》 课程设计说明书 题目LED数码管显示电子钟设计系(部) 专业(班级) 姓名 学号 指导教师 起止日期 课程设计任务书

系(部): 专业:

目录 一、摘要 单片机全称为单片机微型计算机(Single Chip Microsoftcomputer).从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容

易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础.在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 二、设计内容 2.1、任务要求 本次设计时钟电路,使用了A TC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒,还有设定闹钟,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求. 2。2、设计程序方案 设计程序思路: 1.实现8位数码管动态扫描显示 void Display_1Code(unsigned char pos,unsigned char code1); void Display_2Num(unsigned char pos,unsigned char num,unsigned char point); 数码管动态扫描就是: 段显位选延时显示消影 因为我们用的是共阳数码管,而段码表用的共阴的,所以对code1取反 共阳数码管高电平点亮,所以P2移位后不用取反,从高位开始是第1个数码管 掩饰显示1ms,P2给全0全部熄灭,消影作用. 2。时间显示 采用实时时钟芯片DS1302,读芯片的datasheet,根据时序等说明编写驱动程序。 1)初始化 void DS1302_Init(void) 2)底层基本读写函数 void DS1302_WriteByte(unsigned char byte) unsigned char DS1302_ReadByte(void) 3)对芯片寄存器的读写函数 void DS1302_WriteData(unsigned char addr,unsigned char mdata) unsigned char DS1302_ReadData(unsigned char addr) 4)修改时间函数

基于单片机的LED数码管数字电子钟

题目:基于单片机的LED数字电子钟学生姓名:胡振凤潘兴学 学号:U201010897 U201010906 专业:测控技术与仪器 班级:1004班

摘要 数字电子钟是采用电子电路实现对年、月、日、时、分、秒数字显示的计时装置,由于数字集成电路的发展和石英晶体震荡器的广泛应用,使得数字电子钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,成为人们日常生活中不可缺少的必需品。 本次课程设计的是基于AT89C52单片机和实时时钟芯片DS1302在数码管上进行时钟显示,并能通过按键对其进行调时和校准,并且可以设置闹钟,且具有秒表功能。通过按键可以切换时钟和秒表功能,同时可以对闹钟进行设置。采用AT89C52单片机和DS1302实时时钟芯片,使用5V电源供电。DS1302是一种高性能、低功耗、带RAM 的实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机的接口使用同步串行通信,仅用3条线与之相连接,就可以实现MCS-51单片机对其进行读写操作,把读出的时间数据送到数码管上显示。程序运行时,数码管将从当前时间开始显示,通过调节按键可以分别对小时和分钟进行调整,调整后,时钟以新的时间为起点继续刷新显示。 这种实现方法的优点是电路简单,性能可靠,实时性好,时间和日期精度高,操作简单,编程容易。

目录 目录--------------------------------------------------------------------- 2 - 一前言-----------------------------------------------------------------2 1.1课题研究的现实性意义---------------------------------------------2 1.2国内外研究现状---------------------------------------------------2 1.3课题基本概况-----------------------------------------------------3 二总体方案设计---------------------------------------------------------4 2.1方案原理---------------------------------------------------------4 2.2 硬件选择--------------------------------------------------------4 2.2.1 DS1302简介------------------------------------------------4 2.2.2单片机-----------------------------------------------------5 2.2.3显示方案---------------------------------------------------6 三硬件设计-------------------------------------------------------------8 3.1显示模块---------------------------------------------------------9 3.2独立按键模块-----------------------------------------------------9 3.3实时时钟芯片DS1302----------------------------------------------10 四软件设计------------------------------------------------------------11 4.1 程序流程图-----------------------------------------------------11 4.2 按键子程序-----------------------------------------------------12 4.3 功能键按键程序流程图-------------------------------------------12 4.4 时间调整程序---------------------------------------------------13 五总结----------------------------------------------------------------14 六硬件原理图----------------------------------------------------------15

用数码管设计的可调式电子钟

单片机原理及应用课程设计 题目:基于T89C51设计可调式的电子钟 学院:信息工程学院 专业:计算机科学与技术 班级:专升本班 姓名:张永明 学号: 2013052109 指导老师:杜俊

1概述 (4) 1.1课题研究的目的和意义 (4) 2 课题方案论证 (4) 2.1系统总体设计要求 (4) 2.2系统模块结构论证 (5) 3 系统硬件设计 (5) 3.2最小单片机系统 (6) 3.3按键电路 (7) 3.4显示电路 (8) 4软件设计 (9) 4.1 主程序 (9) 5软硬件联调及调试结果 (18) 5.1调试步骤 (18) 结束语 (18) 参考文献 (18) 附录 (19) 附录3 proteus仿真图 (19)

基于T89C51设计可调式的电子钟 摘要: 数字电子时钟电路设计系统,以AT89C51单片机为控制核心,由开关显示、LED 共阴极数码管和LED灯显示等功能模块组成。基于题目基本要求,本系统对时间显示和定时报警进行了重点设计。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本系统不仅成功的实现了要求的基本功能,而且有一定的创新功能。 关键字:单片机;AT89C51;数字钟

1概述 1.1课题研究的目的和意义 此次设计是单片机内部的定时/计数器来实现电子时钟的方法以及借助键盘直接控制整时的调整,本设计根据AT89C51单片机系统扩展的基本原理和方法,由单片机AT89S51芯片,LED数码管和键盘为核心,辅以必要的电路,构成了一个单片机电子时钟。一块单片机芯片就是一台计算机,由于单片机以其集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等特点使它应用于智能仪器仪表、机电一体化、实时程控、人类生活中。除此之外还广泛应用办公自动化领域、商业营销领域、汽车及通信系统、计算机外部设备等各领域中,并且单片机已成为计算机发展和应用的一个重要方面。由此可见掌握单片机的使用方法和利用单片机解决实际问题具有重要的意义。而此次的设计刚好用到单片机相关的知识可以说这是这次设计的重要意义和目的所在。 再者,此设计的LED电子时钟主要是显时间的,是时钟用途。在此设计的基础上人们还可根据不同的需求和不同的设计水平做出不同的设计项目。也可以加上日期,温度的显示和闹钟的功能。如果设计水平还更高的话还可以设计LED 电子显示屏。因此说,LED电子时钟设计是最简单和基础的。而且电子时钟很实用,准确性也很好,也容易调节,若有毁坏更换元器件也简单,制作原理和过程也很易懂易做,成本也不高。在此设计间也包含了很多的知识,跟我所学专业又对口,所以,做这个LED电子时钟是个很用很好很值得做的设计。 2 课题方案论证 2.1系统总体设计要求 本次设计中的LED数码管电子时钟电路采用24小时制记时方式。本次设计采用AT89C51单片机的扩展芯片和1个74LS04做驱动,由八块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。设计采用AT89C51单片机,配备12MHz晶振,复位电路为上电复位。采用软件译码动态显示,考虑直接用单片机I/O口作为位选时可能驱动功率不够,可采用三极管作驱动共阳极数码管显示。8位8段LED数码管作正常、调时显示,时间按时分秒排列,时钟误差:24小时误差3~5秒,并且在按键的作用下可以进行调时,调分,复位功能。本电路采用直流5V电源供电。同时为了限流保护电路也用了若干个阻值不等的电阻。 在本文一开始做了一些概述主要说明此设计的目的和意义,并会对这类设计项目发展情况做个简介。这是对这次设计很重要的一个认识是前提和设计者必须明确和了解的。 然后本文对此设计做了一些简要分析,这对理清设计思想很重要。然后还对设计中用到的元器件进行比较全面的介绍。只有真正了解了元器件的特性和功能才能让这些元器件在设计中起到作用。电子整个设计第一步是电路原理图,它直接关系着后续的工作。

电子时钟数码管显示

/********************************************************** ***/ //电子时钟数码管显示,具有暂停,清零,调整时,分,秒的功能2014年8月17日 /********************************************************** */ #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; //sbit s0=P3^2; //清零键 sbit speak=P1^2; //蜂鸣器 //sbit s2=P3^0; //矩阵键盘 //sbit s3=P3^1; //sbit s4=P3^4; //暂停 sbit s1=P3^2; //功能键 sbit s2=P3^5;// 闹钟设定 sbit s3=P3^3; //加 sbit s4=P3^4; //减 //sbit juzhen=P3^4;

bit sflag,setflag,setcflag,cflag,k1,k2,k3,k4; uchar code duanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //显示数字0~9 unsigned char code weima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //unsigned char code weima[]={0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //unsigned char code weima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb}; uchar tempdata[8]; uchar miao,fen,shi,cmiao,cfen,cshi; uchar count,ncount,s1num,cnum,state,normal; //-------------------------ms级延时函数-----------------------------------------// void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=123;y>0;y--); } //-----------------------------蜂鸣器发声--------------------------------------------------// void buzzer() {

LED数码管设计的可调式电子钟说明说

课程设计说明书 用LED 数码管设计的可调式电子钟 专业 学生姓名 班级 学 号 指导教师 完成日期 2013年6月28日

用LED数码管设计的可调式电子钟 摘要: 数字电子时钟电路设计系统,以AT89C51单片机为控制核心,由键盘显示、定时闹铃、LED共阴极数码管和LED灯显示等功能模块组成。基于题目基本要求,本系统对时间显示和定时报警进行了重点设计。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本系统不仅成功的实现了要求的基本功能,而且有一定的创新功能。 关键字:单片机;AT89C51;数字钟 Abstract: T h i s d i g i a l electronic clock circuit design system ,based o n c hip microcomputer AT89C51,is composed by the following functional modules : keyboard displaying , timing alarmg. common cathode LED digital tube, LED lights display,and s o on. According to the basic requirem ents of t he subj ect,t he s ys t em st res ses on the real iz ati on of Time display and regularly report t o the police.The design achieved the required basic technical indexes. Furthermore , adopting the iedao fhardware-to-software, m o s t o f those functions are r e a l i z e d b y softwares, which makes the electrocircuit more concise and the system more stable. Key words:chip microcomputer;AT89C51:digital electronic clock

LED数码管显示电子钟

#include #include unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char data dis_buf[8]; unsigned char data dis_index; unsigned char hour,min,sec; unsigned char sec100; sbit K1 = P1^4; sbit K2 = P1^5; bit scan_key(); void proc_key(); void inc_sec(); void inc_min(); void inc_hour(); void display(); void delayms(unsigned char ms); void main(void) { P0 = 0xff; P2 = 0xff; TMOD = 0x11; // 定时器0, 1工作模式1, 16位定时方式 TH1 = 0xdc; TL1 = 0; TH0 = 0xFC; TL0 = 0x17; hour = 12; min = 00; sec = 00; sec100 = 0; dis_buf[0] = dis_code[hour / 10]; // 时十位

基于单片机的电子时钟6位LED数码管显示

数码管显示电子时钟设计 一.功能要求 1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时 间时、分、秒。 2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。 二.方案论证 1.数字时钟方案 数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。 方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。 方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。 基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。 2.数码管显示方案 方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,

用LED数码管显示的秒表设计

单片机课程设计说明书 用LED 数码管显示的秒表设计 专业 电气工程及其自动化 学生姓名 刘宁 班级 B 电气081 学 号 0810601114 指导教师 张兰红 完成日期 2011年 6月 26 日

目录 1、概述 (2) 2、课题方案设计 (2) 2.1系统总体设计要求 (2) 2.2系统模块结构论证 (2) 3、系统硬件设计 (3) 3.1总体设计 (3) 3.2单片机运行的最小系统 (4) 3.2.1 52单片机最小系统电路介绍 (4) 3.2.2单片机的振荡电路与复位电路 (7) 3.3数码管介绍 (8) 3.4驱动电路 (9) 4、软硬件联调及调试结果 (10) 4.1软硬件调试中出现的问题及解决措施 (10) 4.2实物图 (11) 4.3调试结果 (13) 5、结束语 (13) 参考文献 (14) 附录 (14) 附录1:基于单片机的秒表设计原理图 (14) 附录2:基于单片机的秒表设计PCB图 (15) 附录3:PROTEUS仿真图 (16) 附录4:基于单片机的秒表设计C语言程序清单 (17) 附录5:基于单片机的秒表设计元器件目录表 (19)

1、概述 21世纪是一个电子技术和电子元件有更大发展的世纪。回顾百年来电子技术和电子工业发展的成就,举世瞩目。作为一个电气专业的大学生,我们不但要有扎实的基础知识、课本知识,还应该有较强的动手能力。现实也要求我们既精通电子技术理论,更要掌握电子电路设计、实验研究和调试技术。课程设计就是一个理论联系实际的机会。 本次设计主要完成具备基本功能的电子秒表的理论设计,电子秒表是重要的记时工具,广泛运用于各行各业中。作为一种测量工具,电子秒表相对其它一般的记时工具具有便捷、准确、可比性高等优点,不仅可以提高精确度,而且可以大大减轻操作人员的负担,降低错误率。 在设计中应用到数码管,数码管主要用于楼体墙面,广告招牌、高档的DISCO、酒吧、夜总会、会所的门头广告牌等。特别适合应用于广告牌背景、立交桥、河、湖护栏、建筑物轮廓等大型动感光带之中,可产生彩虹般绚丽的效果。用护栏管装饰建筑物的轮廓,可以起到突出美彩亮化建筑物的效果。事实证明,它已经成为照明产品中的一只奇葩,绽放在动感都市。 2、课题方案设计 2.1 系统总体设计要求 用AT89C52设计一个2位LED数码显示“秒表”,显示时间为00~59秒,每秒自动加一。另设计一个“开始”按键和一个“复位”按键,一个“暂停”按键。接上电源后从00开始计时,至59后再回到00,继续循环。 2.2系统模块结构论证 1.单片机模块选择 方案一:选用飞思卡尔单片机,飞思卡尔单片机功能强大,但是价格相对要高,而且对此不熟悉。

非常详细 单片机 数码管LED 显示电子钟

单片机数码管LED 显示电子钟(C语言)转载 收藏人:shengshiguanjia 2010-11-24 | 阅:862 转:50 | 来源| 分享 单片机数码管LED 显示电子钟(C语言)转载 2010-10-22 01:32 ? /************************************************************ ************** ?* 标题: 数码管显示电子钟(C语言) ?* 作者: wentao ?* 日期: 2007.3.3 ?* 软件: Keil C51 V8.02 ?* 芯片: AT89X51 ?* 说明: 实验板实测通过,数码管为8位共阳 ?* 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! ? ************************************************************* *************/ ? ?#include ?#include ?#define uchar unsigned char ? ?void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值 255 ?void key_scan(); // 按键扫描 ?void key_to(); // 按键处理 ? ?uchar code dis_code[11] = {0xc0,0xf9,0xa4,0xb0,0x99, //段码表 ?// 0 1 2 3 4 对应内容

? 0x9 2,0x82,0xf8,0x80,0x90,0xbf}; ?// 5 6 7 8 9 - ? ?uchar data dis[8]; // dis[0]为秒个位 值,dis[1]为秒十位值 ?// dis[2],dis[5]为'-'段码的偏移量 ?// dis[3]为分个位值,dis[4为分十位值 ?// dis[6]为时个位值,dis[7]为时十位值 ? ?uchar data sec = 0; // 秒计数器(00s-59s) ?uchar data min = 0; // 分计数器(00m-59m) ?uchar data hou = 0; // 时计数器)00h-23h) ? ?uchar data cou = 0; // 软计数器,对10ms时基信号累加到1s ? ?uchar data dis_b; // dis_b为位码选通数码管 ?uchar data dis_r; // dis_r为取段码时的偏移量 ? ?uchar data key_v = 0; // 存储键值 ?uchar data key_t = 0; // 按键扫描中临时存储键 值 ? ?void main() ? { ?P2= 0xff; // 关所有数码 管 ?P1= 0xff; // p1为准双向口,作输入时先写1 ? dis[2] = 10; // '-'在段码表中偏移量为10 ? dis[5] = 10; // '-'在段码表中偏移量为10 ? dis_b = 0x7f; // 初始选通P2.7口数码管 ? dis_r = 0; // 初始化偏移量为0

单片机实验数码管显示时钟设计

《单片机原理与应用》课程设计 总结报告 题目:数码管显示时钟设计 数码管显示时钟设计 一﹑实验目的: 1、进一步掌握定时器的使用和编程方法。 2、进一步掌握中断处理程序的编程方法。 3、进一步掌握数码管显示功能。 5、进一步掌握软件数据处理的方法。 二﹑主要内容要求: 1、利用CPU的定时器和数码管显示电路,设计一个电子时钟。格式如下:XX XX XX 由左向右分别为:时、分、秒。 三、设计框图及整机概述 1、系统整体框图 +5V 单片机目标机 静态 显示 6位 LED 发光管 8个 电源指示控制 按键

2、整机概述: 1 正常情况显示时间 四﹑系统说明: 1.目标机为一个以89CS51单片机为核心的单片机最小系统,负责控制各个模块,完成实验及相关操作。各模块接口与引脚分配如下: (1)P2口:8个发光二极管接; (2)P0.0~P0.3:4个独立按键; (3)P0.4~P0.7:外扩展液晶模块数据线; (4)P1.0:J5短路冒,为外扩展DS18B20数据线和DS1302复位线共用; (5)P1.1:J4短路冒,为24C01数据线和DS1302时钟线共用; (6)P1.2:J6短路冒,为24C01时钟线和DS1302数据线共用; (7)P1.3:J9短路冒,为继电器控制端和液晶使能端共用; (8)P1.4:液晶模块读写控制端; (9)P1.5:J7短路冒,为液晶复位端和下载线共用; (10)P1.6~P1.7:下载线; (11)P3.0:J1短路冒,为下载线和串行通信线共用; (12)P3.1:J2短路冒,为下载线和串行通信线共用; (13)P3.2:一体化红外接收头; (14)P3.3:蜂鸣器驱动端; (15)P3.4~P3.5:定时器/计数器预留接口; (16)P3.6:164串行显示数据线; (17)P3.7:164串行显示时钟线。 2.静态显示模块 静态显示部分由6片串并转换芯片74164和6个共阴极8段数码管构成,可以实现6位数码显示,该部分特点是占用口线少,显示亮度高,由于74164在低电平输出时,允许通过的电流达8mA,故不必再添加驱动电路,与动态扫描显示比较,无需CPU不停的扫描,频繁的为显示服务,可以节省CPU的时间 五﹑程序流程图:

8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 时间:2012-09-10 13:52:26 来源:作者: /* 8位数码管显示时间格式 05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #include sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=19,hour=23,second; //定义并初始化为 12:30:00 void delay(unsigned int cnt) { while(--cnt); } /******************************************************************/ /* 显示处理函数 */ /******************************************************************/ void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示小时 StrTab[1]=tab[hour%10]; StrTab[2]=0x40; //显示"-" StrTab[3]=tab[minute/10]; //显示分钟 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //显示"-" StrTab[6]=tab[second/10]; //显示秒 StrTab[7]=tab[second%10]; } main()

ds1302时钟数码管显示时分秒

单片机原理课程设计 课题名称:基于DS1302的数码管显示数字钟 专业班级:电子信息工程 学生学号:0414070126 学生姓名:张向阳 指导教师:张云马崇霄 设计时间:2010年6月21日--2010年6月25日

目录 摘要........................................................................................................................................................................ 1 设计任务和要求............................................................................................................................................ 2 方案论证........................................................................................................................................................ 3 系统硬件设计................................................................................................................................................ 3.1 系统总原理图 ................................................................................................................................ 3.2 元器件清单...................................................................................................................................... 3.3 PCB板图....................................................................................................................................... 3.4 Proteus仿真图 ............................................................................................................................... 3.5 分电路图及原理说明................................................................................................................... 3.5.1 主控部分(单片机MCS-51).............................................................................. 3.5.2 计时部分(实时时钟芯片DS1302).................................................................. 3.5.3 显示部分(共阳极数码管)................................................................................ 3.5.4 调时部分(按键)................................................................................................ 4系统软件设计................................................................................................................................................ 4.1 程序流程图..................................................................................................................................... 4.2 程序源代码........................................................................................................................................ 5心得体会........................................................................................................................................................ 6参考文献........................................................................................................................................................ 7结束语............................................................................................................................................................

LED显示电子时钟

一、硬件设计及说明 1、原理图设计 时钟控制部分原理图如图1所示 图1 时钟控制部分原理图 时钟显示部分原理图如图2所示 图2 时钟显示部分原理图 AT89S52是一种低功耗、高性能CMOS8位微控制器,它具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

本电子时钟设计具有最简单的计时功能及调整时间的功能。基于AT89C52芯片和LED 数码管为核心,辅以必要的电路,并以C语言程序设计为基础,构成一个简单的单片机数字电子时钟。通过数码管能够准确显示时间,并且可以通过按键进行校时,连接P3.2口的按钮(H按钮)可以进行小时调整,连接P3.3口的按钮(M按钮)可以进行分钟调整。它的计时周期为24小时,显示满刻度为23时59分59秒。 该电路数码管的位选由P2口控制;数码管的显示代码由P0口传送;调整时间按键接单片机的P3.2和P3.3引脚;按键的扫描原理就是首先P3高四位送高电平,判断低四位的电平,如有高电平表明有按键按下,读取哪个键按下,接着P3口低四位接低电平,高四位接高电平,读取按键。 2、PCB设计 LED显示电子时钟PCB图如图3所示 图3 LED显示电子时钟PCB图 二、软件设计及说明

相关文档
相关文档 最新文档