当前位置:文档之家› 单片机数字时钟

单片机数字时钟

单片机数字时钟
单片机数字时钟

引言

数字电子时钟,自从它问世起,就是人们的好朋友,是人们日常生活中必不可少的电子产品,广泛用于生活的方方面面,给人们的学习、生活、工作带来了极大的方便。但随着时间的推移,科学技术的不断发展,生活节奏越来越快,竞争日益激烈,人们对时间计量的精度要求越来越高,应用越来越广。通常使用的晶振芯片设计的电子时钟,在生活中使用是一个很不错的选择,然而在工业现场,环境恶劣,势必会影响走时的进度,我们试想一下,大型的工业现场的走时如果因为环境的恶劣而不精确,导致的生产损失将有多大。而利用开关量控制的PLC来设计的时钟是不会因为环境的因素而发生走时误差,从而,在工业现场最好使用PLC设计的时钟。

本文主要介绍在工业现场应用的时钟用PLC的设计。通过PLC我们设计的这种走时精确的的时钟,终究会变成产品走进工业现场。

1 设计的目的及意义

本设计通过用对一个能实现定时,时钟显示功能的时间系统的设计学习,让我们了解到了51单片机应用中的数据转换显示,数码管显示原理,静态扫描显示原理,单片机的定时中断原理等,从而达到学习、了解单片机相关指令在各方面的应用,让我们学到更多关于单片机方面的知识。

2 芯片简介

2.1 STC80C52单片机芯片引脚功能介绍

单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

⒈ 电源: ⑴ VCC - 芯片电源,接+5V;⑵ VSS - 接地端;

⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

⒊ 控制线:控制线共有4根,⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM 的芯片,在EPROM编程期间,此引脚输入编程脉冲。⑵ PSEN:外ROM读选通信号。

⑶ RST/VPD:复位/备用电源。① RST(Reset)功能:复位信号输入端。② VPD 功能:在Vcc掉电情况下,接备用电源。⑷ EA/Vpp:内外ROM选择/片内EPROM 编程电源。① EA功能:内外ROM选择端。② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

⒋ I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32

个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

2.2 STC89C52单片机芯片封装图

STC89C52芯片的封装有PLCC、PQFP以及DIP—40,本设计采用的是引脚双列直插式封装。其封装形式如图2.2.1。

图2.2.1 STC89C52 DIP-40封装

2.3 DS1302芯片功能的介绍

DS1302 是美国Dallas 公司生产的一种高性能、低功耗、带RAM的实时时钟芯片。该芯片采用3 线串行接口方式,可提供年、月、日、星期、时、分、秒等时间信息,并可根据月份和闰年的情况自动调整月份的结束日期,同时可以根据用户需要决定是采用24 小时或12 小时格式。DS 1302 内部带有31 个字节RAM ,用于存放临时性数据,同时具有可编程涓细电流充电能力,从而使外围硬件电路设计得到了大大简化。其中X1 、X2 为32. 768kHz 晶振端, GND 为地;RST 为复位端,高电平时允许I/ O 端进行数据传输,低电平则禁止数据传送且使I/ O 端呈高阻状态; I/ O 为串行数据输入、输出端,所有输入、输出数据的传送顺序均以最低位LSB 打头, 最高位MSB 结束;SCL K为同步时钟脉冲端,其上升沿将I/ O 端数据按位写入DS1302 ,下降沿使DS1302 按位输出数据至I/ O 端;VCC2 、VCC1 为主电源和备份电源端,当主电源VCC2 大于备份电源VCC1 +0. 2V 时,由VCC2 对芯片供电,否则,由VCC1 对芯片电。工作电压范围为2. 5~5. 5 V ,工作电源和备份电源双引脚输入,功耗很低,当工作电压为2. 5 V时正常工作,所需电流不超过300 nA 。另外,如果选择了涓流充电功能,在正常情况下,主电源还可对备份电源进行慢速充电,有效延长了备份电源的使用寿命,保证了系统时间的连续可靠运行。该芯片引脚分配如图2.3.1

图2.3.1 DS1302芯片引脚图

DS1302芯片引脚功能说明如下表2.3.1。

3 电路原理图与功能说明

3.1 晶振电路

晶体振荡器在固定频率振荡器中能够提供较高的精度,绝大多数RTC采用32.768kHz的晶体,晶体振荡器输出经过分频后会产生1Hz的基准来刷新时间和日期。RTC的精度主要取决于晶振的精度,晶体振荡器在固定频率振荡器中能够提供较高的精度,绝大多数RTC采用32.768kHz的晶体,晶体振荡器输出经过分频后会产生1Hz的基准来刷新时间和日期。RTC的精度主要取决于晶振的精度,晶振一般在特定的电容负载下,其调谐振荡在正确的频点,而当晶振调谐于12.5pF负载的RTC电路中时,使用6pF负载的晶振将会使时钟变快。Dallas Semiconductor 提供的所有RTC均采用内部偏置网络,因而晶振可直接连接到RTC的X1、X2引脚,而不需要额外的元件。由于RTC的晶振输入电路具有很高的输入阻抗,因此,它与晶振的连线犹如一个天线,很容易耦合系统其余电路的高频干扰。而干扰信号被耦合到晶振引脚将导致时钟数的增加或减少。考虑到线路板上大多数信号的频率高于32.768kHz,所以,通常会产生额外的时钟脉冲计数。因此,晶振应尽可能靠近X1、X2引脚安装,同时晶振、X1/X2引脚的下方最好布成地平面。晶振电路如图3.1.1。

图3.1.1 晶振电路

3.2 复位电路

当STC89C52单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容的充电和反相门的作用,使RST持续一段时间的高电

平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。复位电路如图3.2.1

图 3.2.1 复位电路

3.3 数码管显示电路

所谓数码管就是为数码管显示提供的各段状态组合,即字形代码。八段数码管的段码为八位,用一个字节即可表示。在段码字节中代码位与各段发光二极管的对应关系表3.3.1。

段码的值与数码管公共引脚的接法有关。以八段数码管为例,显示十六进制的段码值如表3.3.2。

并排使用的多位数码管称为LED显示器。LED显示器多采用动态显示方式,全部数码管共用一套段码驱动电路,各位数码管的同段引脚短接后在借到应段码的驱动线上。显示时通过位控信号采用扫描的方法逐位地循环点亮各位数码管。动态显示虽然在任何一时刻只有一位数码管被点亮,但是由于人眼具有的视觉残留效应,看起来与全部数码管持续点亮的效果完全一样。LED显示器动态显示需要为各位提供段码以及相应的位控制,此即通常所说的段控和位控。把LED显示器段码表预先存放在存储器中,使用时通过查表就可以得到段码。段码输出后送到公共段码线上,也可称为段控信号。而通过并行口输出的相互独立的为嘛则是起选通作用的,也称位控或扫描信号,用于选择显示位。数码管电路如图3.3.1。

图3.3.1 数码管电路图

3.4 DS1302电路

DS1302 所进行的一切工作必须先由CPU 向DS1302 发送命令字节, 命令字节格式如图3.4.1 。各位定义如下:命令字节的最高位7 必须为“1”,否则禁止对DS1302 进行操作。第6 位是时钟/ 日历或RAM 选择位, 如它为“1”可对内部RAM 读写,如它为“0”可对时钟日历操作。此处所谓日历型数据即数据格式为压缩型BCD 码,且数值必须在它的定义域内;例如,“月份”的定义域为1~12“, 秒”的定义域为0~59 等等。所谓RAM型数据即指一般16 进制数据。位5 至位1 为DS1302 内部寄存器地址。DS1302 有单字节和多字节两种读、写方式。所谓单字节读、写方式即每次只能从DS1302 中读、写1 字节数据。所谓多字节读、写方

式则每次可从DS1302 中连续读、写若干字节数据。当位5 至位1 各位均为“1”时,DS1302为多字节读、写方式。最低位0 为“0”表示写操作,否则为读操作。命令字节的传输都是从最低位开始。

图3.4.1 DS1302时钟芯片的控制字

DS1302 采用串行方式与微控制器通讯。在片选信号RST 变为高电平后,可向芯片发送指令及读取数据。DS1302 的命令字的传输从最低位开始。当对DS1302 进行写数据时,首先发写控制指令,在控制指令字输入后的下一个SCL K时钟的上升沿,数据被写入DS1302 ,数据输入从低位即位0开始。当对DS1302 进行读数据时,首先发读控制指令,在紧跟8 位的控制指令字后的下一个SCL K脉冲的下降沿读出DS1302 的数据,读出数据时从低位0 位至高位7 。注意在SCLK为高电平期间,不能读I/ O 线,此期间I/ O 端为高阻状态。因此,在程序设计时应保证在SCLK 上升沿之前读I/ O线,即可正确读出时钟数据[3 ] [8 ] 。在本记录仪表系统中,实时时钟软件首先应将日历信息初值———秒、分、时、日、月、星期、年等按序写入到DS1302 相关寄存器中,此后,时钟便以此初值为基准进行计时,只要主电源VCC2 和备份电源VCC1 尚有一个工作正常,则计时就不会终止。初始化日历信息程序分为三部分:(1) 发送“解除写保护”命令字8EH 和内容00H ,以开放DS1302 写操作。(2) 发送“涓流充电”命令字90H 和内容A7H ,以开放DS1302 内部充电电路。本系统选择DS1302 内部充电电路为一只串联二极管和8kΩ限流电阻,因此常规情况下,主电源VCC2 对备份电源VCC1 之最大充电电流为Imax = (VDD - 二极管压降) / 限流电阻= (5 - 0. 7) ÷8 = 0. 538mA 。(3) 发送“多字节写日历型数据”或“单字节写日历型数据”命令字写入日历信息初值。上述部分属于对DS1302 内部功能寄存器操作,因此必须以“单字节”方式进行发送;而第3 部分属于对DS1302 一般寄存器操作,故可以采用“多字节”方式发送,以便提高效率。同时,在仪表工作过程中需要读取时间日历信息时,可根据具体需要采用“多字节”方式或“单字节”方式。这里,无论采用“单字节”还是“多字节”方式,能否可靠、准确地读出这些信息,其技术关键是和硬件密切相联的

DS1302 读写驱动程序的设计。该驱动程序的功能是产生正确的同步时钟脉冲,并在同步时钟脉冲上升沿将数据按位写入DS1302 或在同步时钟脉冲的下降沿按位从DS1302 中读出日历型数据,从而完成1 字节数据的发送或接收。对于“多字节”方式,只需改变命令控制字和增加循环次数即可完成多字节的连续读写。写

了DS1302 的读写程序。编写DS1302 驱动程序时,首先应对硬件电路使用的端口进行定义声明,并初始化芯片引脚及工作状态,系统一切就绪后执行读写操作。同时,DS1302 在执行相应操作时,应保证延时时间的选择需满足芯片的时序要求,并注意RTS 引脚的及时打开与关闭,以确保数据的正常读写和避免CPU 的长时间占用,减少干扰,提高程序的执行效率。这里由于篇幅的原因仅给出程序设计流程,驱动程序有需要可向笔者索取。具体程序流程如图3.4.2。

图3.4.2 DS1302工作流程图

4.1 接口电路设计

在温度测量记录仪表中,DS1302 与微处理器的接口电路如图2 所示。该微

处理器采用宏晶科技推出的STC89C516RD + 单片机作为主控芯片,该产品具有片内资源丰富、超强抗干扰、高抗静电、超低功耗、宽电压、不怕电源抖动、在系统可编程、加密性强、无法解密、可降低单片机时钟对外部电磁辐射等特点[7 ] ,其良好的性能保证了各个器件的协调可靠工作及控制要求。在电路中单片机的P1. 7 控制DS1302 的复位输入端, P1. 4 与数据输入/ 输出引脚相连, P1. 3 用来作为DS1302 的输入时钟SCL K控制端。由于单片机复位时,所有单片机的端口均为高电平,如果直接用单片机的某一口线同DS1302 的RST 相连,则影响了系统加电时对DS1302 的初始化,从而造成DS1302 计时的不稳定。因此,本电路在设计时采用反相器来完成单片机的I/ O 线同DS1302 的RST 相连。供电时,仪表主电源(5 V) 接VCC2 ,备份电池采用可充电镉镍电池(3. 6 V) 接VCC1 ,可启用内部涓流充电器在主电压正常时向电池充电,以延长电池使用时间。备份电池也可用1 微法以上的超容量电容代替,但需要注意的是备份电池电压应略低于主电源工作电压。DS1302 与STC89C52 单片机的接口电路如图4.1.1。

图4.1.1 DS1302 与STC89C51 单片机的接口电路

5 调试与软件设计

5.1 调试

调试分为硬件调试和软件调试,硬件调试就是检测电路是否有错误或者有短路、虚焊、短路的现象,通过万用表的检测可以最终完成硬件的调试。

软件调试是指通过Keil软件编译生成Hex文件,在通过Protus软件的联调,再进行仿真,出现所能实现的功能,最后通过串口下载到STC89C52单片机芯片中让整个硬件可以得到运行。

5.2 程序设计

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit rtc_clk=P1^0;

sbit rtc_io=P1^1;

sbit rtc_rst=P1^2;

sbit set=P1^3;

sbit up=P1^4;

sbit out=P1^5;

sbit qiehuan=P1^6;

uchar cnt,num;

uchar done,count,temp,up_flag,flag;

uchar time[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};

uchar code SEG7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; uchar ACT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

#define RD 0x01

#define WR 0x00

#define C_SEC 0x80

#define C_MIN 0x82

#define C_HR 0x84

#define C_DAY 0x86

#define C_MTH 0x88

#define C_WK 0x8a

#define C_YR 0x8c

#define C_WP 0x8e

#define CLK_HALT 0x80

#define CLK_START 0x00

#define M12_24 0x80

#define PROTECT 0x80

#define UNPROTECT 0x00

void delay(uint k)

{

uint i,j;

for(i=0;i

for(j=0;j<121;j++);

}

void DS1302_writeB(uchar byte)

{

uchar i;

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

{

if(byte&0x01)

rtc_io=1;

else

rtc_io=0;

rtc_clk=0;

rtc_clk=1;

delay(1);

byte=byte>>1;

}

}

uchar DS1302_readB()

{

uchar i,date;

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

{

date=date>>1;

rtc_clk=1;

rtc_clk=0;

delay(1);

if(rtc_io==1)

date=date|0x80;

else

date=date&0x7f;

}

return(date);

}

void DS1302_writeD(uchar add,uchar date) {

rtc_rst=0;

rtc_clk=0;

rtc_rst=1;

DS1302_writeB(add);

delay(1);

DS1302_writeB(date);

rtc_clk=0;

rtc_rst=0;

}

uchar DS1302_readD(uchar add)

{

uchar date;

rtc_rst=0;

rtc_clk=0;

rtc_rst=1;

delay(1);

DS1302_writeB(add|RD);

delay(1);

date=DS1302_readB();

delay(1);

rtc_clk=0;

rtc_rst=0;

return(date);

}

void DS1302_init()//开启ds1302

{

uint second;

second=DS1302_readD(C_SEC);

if(second&0x80)

{

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_SEC|WR,CLK_START);

DS1302_writeD(C_WP|WR,PROTECT);

}

else

{

void DS1302_getT();

}

}

void DS1302_getT()

{

uchar i,value;

uchar addr=0x80;

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

{

value=DS1302_readD(addr);

// time[i]=DS1302_readD(addr|RD);

time[i]=((value&0x70)>>4)*10+(value&0x0f);

addr+=2;

}

}

void outkey()//跳出调整按键

{

// out=1;

uchar second;

if(out==0)

{

delay(10);

if(out==0);

{

count=0;

hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week,hide_month=0,hide _year=0;

// hide_sfm=0,hide_nyr=0,hide_week=0;;

second=DS1302_readD(C_SEC);

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_SEC|WR,second&0x7f);

DS1302_writeD(C_WP|WR,PROTECT);

done=0;

while(out==0);

}

}

}

void upkey()//升序按键

{

// uchar valueble;

up=1;

if(up==0)

{

delay(20);

if(up==0);

{

while(up==0);

switch(count)

{

case 1:

temp=DS1302_readD(C_SEC);

//temp=((valueble&0x70)>>4)*10+(valueble&0x0f);

temp=temp+1;

up_flag=1;

if((temp&0x7f)>0x59)

temp=0;

break;

case 2:

temp=DS1302_readD(C_MIN);

temp=temp+1;

up_flag=1;

if((temp&0x7f)>0x59)

temp=0;

break;

case 3:

temp=DS1302_readD(C_HR);

temp=temp+1;

up_flag=1;

if((temp&0x7f)>0x23)

temp=0;

break;

case 4:

temp=DS1302_readD(C_WK);

temp=temp+1;

up_flag=1;

if((temp&0x7f)>0x07)

temp=1;

break;

case 5:

temp=DS1302_readD(C_DAY);

temp=temp+1;

up_flag=1;

if((temp&0x7f)>0x31)

temp=1;

break;

case 6:

temp=DS1302_readD(C_MTH);

temp=temp+1;

up_flag=1;

if((temp&0x7f)>0x12)

temp=1;

break;

case 7:

temp=DS1302_readD(C_YR);

temp=temp+1;

up_flag=1;

if((temp&0x7f)>0x85)

temp=0;

break;

}

}

}

}

void setkey()//功能切换

{

set=1;

if(set==0)

{

delay(10);

if(set==0)

{

count=count+1;

done=1;

}

while(set==0);

}

}

void qiehuankey()

{

qiehuan=1;

if(qiehuan==0)

{

delay(10);

if(qiehuan==0)

{

while(qiehuan==0);

num=num+1;

}

}

if(num==2)

num=0;

}

void keydone()

{

uchar value;

uchar second;

if(flag==0)

{

temp=DS1302_readD(C_SEC);

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_SEC|WR,temp|0x80);

DS1302_writeD(C_WP|WR,PROTECT);

flag=1;

}

setkey();

switch(count)

{

case 1:do

{

outkey();

upkey();

if(up_flag==1)

{

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_SEC|WR,temp|0x80);

DS1302_writeD(C_WP|WR,PROTECT);

up_flag=0;

}

//dis_play();

hide_sec++;

if(hide_sec>10)

hide_sec=0;

value=DS1302_readD(C_SEC);

// time[i]=DS1302_readD(addr|RD);

time[0]=((value&0x70)>>4)*10+(value&0x0f);

}while(count==2);break;

case 2:do

{

hide_sec=0;

outkey();

upkey();

if(up_flag==1)

{

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_MIN|WR,temp);

DS1302_writeD(C_WP|WR,PROTECT);

up_flag=0;

}

hide_min++;

if(hide_min>10)

hide_min=0;

value=DS1302_readD(C_MIN);

// time[i]=DS1302_readD(addr|RD);

time[1]=((value&0x70)>>4)*10+(value&0x0f);

}while(count==3);break;

case 3:do

{

hide_min=0;

outkey();

upkey();

if(up_flag==1)

{

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_HR|WR,temp);

DS1302_writeD(C_WP|WR,PROTECT);

up_flag=0;

}

hide_hour++;

if(hide_hour>10)

hide_hour=0;

value=DS1302_readD(C_HR);

// time[i]=DS1302_readD(addr|RD);

time[2]=((value&0x70)>>4)*10+(value&0x0f);

}while(count==4);break;

case 4:do

{

hide_hour=0;

outkey();

upkey();

if(up_flag==1)

{

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_WK|WR,temp);

DS1302_writeD(C_WP|WR,PROTECT);

up_flag=0;

}

hide_week++;

if(hide_week>10)

hide_week=0;

value=DS1302_readD(C_WK);

time[5]=((value&0x70)>>4)*10+(value&0x0f);

}while(count==5);break;

case 5:do

{

hide_week=0;

outkey();

upkey();

if(up_flag==1)

{

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_DAY|WR,temp);

DS1302_writeD(C_WP|WR,PROTECT);

up_flag=0;

}

hide_day++;

if(hide_day>10)

hide_day=0;

value=DS1302_readD(C_DAY);

time[3]=((value&0x70)>>4)*10+(value&0x0f);

}while(count==6);break;

case 6:do

{

hide_day=0;

outkey();

upkey();

if(up_flag==1)

{

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_MTH|WR,temp);

DS1302_writeD(C_WP|WR,PROTECT);

up_flag=0;

}

hide_month++;

if(hide_month>10)

hide_month=0;

value=DS1302_readD(C_MTH);

time[4]=((value&0x70)>>4)*10+(value&0x0f);

}while(count==7);break;

case 7:do

{

hide_month=0;

outkey();

upkey();

if(up_flag==1)

{

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_YR|WR,temp);

DS1302_writeD(C_WP|WR,PROTECT);

up_flag=0;

}

hide_year++;

if(hide_year>10)

hide_year=0;

value=DS1302_readD(C_YR);

time[6]=((value&0x70)>>4)*10+(value&0x0f);

}while(count==8);break;

case 8: count=0;

/* hide_sfm=0;

hide_week=0;

hide_nyr=0;*/

hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hi de_year=0;

second=DS1302_readD(C_SEC);

DS1302_writeD(C_WP|WR,UNPROTECT);

DS1302_writeD(C_SEC|WR,second&0x7f);

DS1302_writeD(C_WP|WR,PROTECT);

done=0;

break;

default:break;

}

}

void init()

{

TMOD=0x01;

TH0=0xfc;

TL0=0x18;

ET0=1;

TR0=1;

EA=1;

}

void main()

{

init();

DS1302_init();

while(1)

{

while(done==0)

{

DS1302_getT();

setkey();

qiehuankey();

flag=0;

}

while(done==1)

{

keydone();

}

}

}

void time0(void) interrupt 1

{

TH0=0xfc;

TL0=0x18;

cnt++;

if(cnt>9)

cnt=0;

if(num==0)

{

switch(cnt)

{

case 1:

if(hide_sec<6)

{P0=SEG7[time[0]%10];P2=ACT[0];break;

}

else

{

P0=0xff;P2=ACT[0];break;

}

case 2:

if(hide_sec<6)

{P0=SEG7[time[0]/10];P2=ACT[1];break;

}

else

{

P0=0xff;P2=ACT[1];break;

}

case 3:

if(hide_min<6)

{

P0=SEG7[time[1]%10];P2=ACT[2];break;

}

else

{

P0=0xff;P2=ACT[2];break;

}

case 4:

if(hide_min<6)

{

P0=SEG7[time[1]/10];P2=ACT[3];break;

基于单片机的电子时钟课程设计报告

目录 一、引言········ 二、设计课题········· 三、系统总体方案········· 四、系统硬件设计······ 1.硬件电路原理图 2.元件清单 五、系统软件设计········· 1.软件流程图 2.程序清单 六、系统实物图········ 七、课程设计体会········ 八、参考文献及网站········· 九、附录·········

一.引言 单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。 数字钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。 本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用HD74LS373驱动电路,实现在8个LED数码管上显示时间,通过4个按键进行调时、复位等功能,在实现各功能时数码管进行相应显示。软件部分用C语言实现,分为显示、延迟、调时、复位等部分。通过软硬件结合达到最终目的。

简单51单片机数字时钟设计

题目:简单51单片机数字时钟设计 院系: 物理与电气工程学院 专业:自动化专业 班级:10级自动化 姓名:苏吉振 学号:2 老师:李艾华

引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。 单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个 人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

51单片机数字时钟

计算机硬件综合课程 设计报告 课目: 学院: 班级: 姓名: 指导教师: 目录 1 设计要求 功能需求 设计要求

2 硬件设计及描述 总体描述 系统总体框图 Proteus仿真电路图 3 软件设计流程及描述 程序流程图 函数模块及功能 4 心得体会 附:源程序 设计要求 功能需求 实现数字时钟准确实时的计时与显示功能; 实现闹钟功能,即系统时间到达闹钟时间时闹铃响; 实现时间和闹钟时间的调时功能; 刚启动系统的时候在数码管上滚动显示数字串(学号)。设计要求 应用MCS-51单片机设计实现数字时钟电路; 使用定时器/计数器中断实现计时; 选用8个数码管显示时间;

使用3个按钮实现调时间和闹钟时间的功能。按钮1:更换模式(模式0:正常显示时间;模式1:调当前时间的小时;模式2;调当前时间的分钟;模式3:调闹钟时间的小时;模式4:调闹钟时间的分钟);按钮2:在非模式0下给需要调节的时间数加一,但不溢出;按钮3:在非模式0下给需要调节的时间数减一,但不小于零; 在非0模式下,给正在调节的时间闪烁提示; 使用扬声器实现闹钟功能; 采用C语言编写程序并调试。 2 硬件设计及描述 总体描述 单片机采用AT89C51型; 时间显示电路:采用8个共阴极数码管,P1口驱动显示数字,P2口作为扫描信号; 时间设置电路:、、分别连接3个按键,实现调模式,时间加和时间减; 闹钟:口接扬声器。 系统总体框图 Proteus仿真电路图

3 软件设计流程及描述 程序流程图

函数模块及功能 void display_led() 学号的滚动显示函数; void display() 显示时间以及显示调节时间和闹钟时间的闪烁; void key_prc() 键盘功能函数,实现3个按键有关的模式转换以及数字加一减一; void init() 初始化设置中断;

单片机电子时钟的设计报告

目录 1 引言 (1) 2 设计任务与要求 (2) 2.1. 设计题目 (2) 2.2. 设计要求 (2) 3 系统的功能分析与设计方案 (3) 3.1. 系统的主要功能 (3) 3.2. 系统的设计方案 (3) 3.3. 数码管显示工作原理 (4) 3.4. 电路硬件设计 (5) 3.4.1. 设计原理框图 (5) 3.4.2. 电源部分 (5) 3.4.3. 复位电路 (6) 3.4.4. 指示灯电路 (6) 3.4.5. 按键电路 (7) 3.4.6. 时钟电路 (7) 3.4.7. 驱动电路 (8) 3.4.8. 数码管连接电路 (8) 3.4.9. 主控模块AT89S52 (9) 3.4.10. 材料清单 (10) 3.4.11. 电路原理图、PCB图及实物图 (11) 3.5. 软件设计 (13) 3.5.1. 软件设计流程 (13) 3.5.2. 完整源程序 (15) 4 系统安装与调试 (21) 4.1. 硬件电路的安装 (21) 4.2. 软件调试 (21) 5 课程设计总结 (22) 参考文献 (23) 致谢 (24)

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面。这次课程设计通过对它的学习、应用,以AT89S52芯片为核心,辅以必要的电路,设计了一个简易的单片机电子时钟,包括硬件电路原理的实现方案设计、软件程序编辑的实现、电子时钟正常工作的流程、硬件的制作与软件的调试过程。电子时钟由5.0V直流电源供电,数码管能够比较准确显示时间,通过按键能够调整时间,从而到达学习、设计、开发软、硬件的能力。 关键词:单片机;AT89S52;电子时钟;数码管;按键

基于单片机的数字钟设计-(1)

基于单片机的数字时钟摘要 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 本课题主要研究的是基于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。 关键词:数字钟,单片机,数码管

Abstract Author:cheng dong Tutor:wang xin Electronic technology has been developed rapidly in the 20 century,with its modern electronic products, pushed by almost permeated every area of society has vigorously promoted social productive forces development and improvement of social informatization level, also make modern electronic product performance further improved, and the rhythm of upgrade its products is becoming more and more quickly. The most common SCM module is a digital clock, a digital clock is a kind of digital circuit technology implementation, minutes and seconds, the timing device with mechanical clock compared with higher accuracy and intuitive and no mechanical device, has more longer service life, so it has been widely used. This topic research is the digital clock design based on SCM, AT89C51 SCM as the main control chip system, external LED display circuit, key circuits, crystals circuit, reset circuit module constitute a simple digital clock. Through the key circuits can respectively the diffculties, minutes and seconds setting and real-time adjustment, and the result showed that in the digital tube. Key words:digital clock SCM ; digital

基于单片机的数字时钟

郑州科技学院 《单片机原理及应用》课程设计

目 录 0 引言3 1 设计方案4 2 系统设计7 2.1 硬件原理12 2.2 软件原理16 3 实验与仿真19 4 结论21 参考文献22 附录1 程序23 附录2 仿真电路图26 0 引言 近年来,随着电子产品的发展,随着社会竞争的激烈,人们对数字时钟的要求越来越高。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 因此从人们的日常生活到工厂的自动控制,从民用时钟到科学发展所需的时钟,现代人对时间的精度和观察时间的方便有了越来越多的需求。人们要求随时随地都能快速准确的知道时间,并且要求时钟能够更直观、更可靠、价格更便宜。这种要求催生了新型时钟的产生。 除此之外,由于对社会责任的更多承担,人们要求所设计的产品能够产生尽量少的垃圾、能够消耗尽量少的能量。因此人们对时钟的又有

了体积小、功耗低的要求。 传统的机械表由于做工的高精细要求,造价的昂贵,材料的限制,时间指示精度的限制,使用寿命方面,以及其它方面的限制,已不能满足人们的需求。另外,近些年随着科技的发展和社会的进步,人们对时钟的要求也越来越高,而使得新型电子钟表成了大势所趋。 另外单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 1 设计方案 1.1 任务及要求 ①通过单片机内定时器控制走时,准确持续走时,调时不影响走时。 ②在八个数码管上显示时、分、秒及两个小数点。 ③含有闹钟功能,可以选择闹钟开关,可以设定闹铃时间。 ④到达闹钟时刻蜂鸣器警报,可以关掉警报。 1.2 系统功能说明 电子钟的格式为:XX.XX.XX ,由左向右分别为:时、分、秒。完成显示由秒01一直加1至59,再恢复为00;分加1,由00至01,一直加1至59,再恢复00;时加1,时由00加至23之后秒、分、时全部清清零。该钟使用T0作250us的定时中断。 走时调整:走时过程中直接调整且不影响走时准确性,按下时间选择键对“时、分、秒”显示进行调整,每按一下时间加,即加1,时间减,即减1。

单片机数字时钟实验报告

数字时钟实验报告 一、实验目的 1、熟悉单片机的结构和各引脚的的功能以及如何用程序控制。 2、学习用单片机对数字时钟控制、按键扫描及LED数码管显示的设计方法。 3、了解键盘的结构以及工作原理,通过单片机的定义实现对数码管时钟的调整。 二、实验要求 1、可以正常准确的显示时间. 2、可以通过键盘输入来对时间进行调整. 3、能够以两种时钟表示方式显示时间. 4、自由发挥其他功能. 三、实验基本原理 利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为0,每中断一次中断计数初值加1,当加到20时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。 利用键盘实现对时钟的调整,定义四个按键,按下第一个按键位置跳变到“分”,在按定义的第二个键每按一次数字加一,当数字到59时再按一次,直接跳变到00; 用第三个键控制“时”的12小时制还是24小时制,对键盘扫描,如果发现该键被按下,则表示为12进制,每按一次第四个按键数字加一,当到达12时,再按一次直接跳到1,如果没有发现该按键,则默认为24小时制,当数字是23时,再按一次跳变到00,再按一下第一个键退出对事件的调整。

四、实验设计分析 针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000 次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准 MCS- 51指令系统及80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又 能便于添加各项功能。程序可分为闹钟的声音程序、时间显示程序、日期显示程序, 秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。运用 这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。 首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储 单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部 分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要 显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程 方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是 软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是 软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查 软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电 路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最后进行功 能扩展,在已经正确的设计基础上,添加额外的功能!

基于单片机数字时钟设计

基于单片机数字时钟设计

单片机数字时钟课程设计

基于单片机数字时钟设计 一、设计目的:本文介绍是基于单片机的多功能数字时钟,在传统的时钟基础上它具有走时准确、显示直观、无机械传动装置等优点。随着电子产业的发展,时钟的数字化、多功能化已经成为现在时钟生产研究的主导设计方向。其实巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力。最后通过对课题设计方案的分析、选择、比较、熟悉单片机应用系统开发、研制的过程,软硬件设计的方法,内容及步骤。 多功能数字时钟的用途十分广泛,只要有计时的存在,便要用到数字时钟的原理及结构;同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费者的喜爱。随着人类科技文明的发展,人们对于时钟的要求在不断提高。时钟已不仅仅被看出一种用来显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。高精度、多功能、小体积、低功耗,是现代时钟发展的趋势。在这种趋势下,时钟的数字化、多功能化已经成为现在时钟生产研究的主导设计方向。 二、设计要求:本次课程设计的电子时钟电路由AT89C51时钟 电路动态数码管显示电路组成,运用汇编语言控制单片机AT89C51来实现动态数码管显示。

利用AT89C51单片机P0口控制数码的位显示,P2口控制数码管的段显示,p1口与按键相连,用于时间的校正。 实现24小时制电子钟,6位数码管显示,显示时分秒。 显示格式:23-59-59。有调时,调分,调秒按钮。 三、AT89C51管脚说明 VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存

单片机综合实验报告51电子时钟

一、实验内容: 设计一个数字时钟,显示范围为00:00:00~23:59:59。通过5个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过蜂鸣器发声作为闹铃。 选做增加项目:还可增加秒表功能(精确到0.01s)或年月日设定功能。 二、实验电路及功能说明 1602显示器电路(不需接线) 电子音响电路 按键说明: 按键键名功能说明 K1 切换键进入设定状态 K2 校时依次进入闹钟功能是否启用,闹钟时,分秒, 年,月,日及时间时,分,秒的设置,直到退出 设置状态 K3 加1键调整是否起用闹钟和调节闹钟时,分,秒, 年,月,日,时间的时,分,秒的数字三、实验程序流程图:

四、实验结果分析 定时程序设计: 单片机的定时功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。如果MCS-51采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。MCS-51单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/

计数器两种工作模式和4种工作方式。 定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX. 当定时器/计数器工作于方式1,为16位的计数器。本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1。 实时时钟实现的基本方法: 这次设计通过对单片机的学习、应用,以A T89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它主要通过51单片机综合仿真实验仪实现,通过1602能够准确显示时间,调整时间,它的计时周期为24小时,从而到达学习、设计、开发软、硬件的能力。主要实现功能为显示时间,时间校准调时(采用手动按键调时),闹铃功能(设置定时时间,到点后闹铃发出响声)。通过键盘可以进行校时、定时。闹铃功能使用I/O 口定时翻转电平驱动的无源蜂鸣器。本文主要介绍了工作原理及调试实现。 四个按键K1、K2、K3、K4、一个蜂鸣器。 1602显示时钟、跑表。 时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。 秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。 实时时钟程序设计步骤: 先对系统进行初始化,如:LCD1602初始化,DS1302初始化等,然后才能进入主显示模块,即可在LCD1602上看到相应的信息。对于LCD1602的初始化,主要是对开启显示屏,清屏,设置显示初始行等操作。DS1302的初始化主要是先开启写功能,然后写入一个初始值。 本系统采用的是LCD1602液晶显示器,由于其是本身带有驱动模块的液晶屏,所以对于LCD1602操作程序可分为开显示、设置显示初始行、写数据和清屏等部分。LCD1602的写命令程序和写数据程序分别以子程序的形式写在程序里,以便主程序中的调用。 (1)选择工作方式,计算初值; (2)采用中断方式进行溢出次数累计; (3)计时是通过累加和数值比较实现的; (4)时钟显示缓冲区:时钟时间在方位数码管上进行显示,为此在内部RAM中要设置显示缓冲区,共6个地址单元。显示缓冲区从左到右依次存放时、分、秒数值; (5)主程序:主要进行定时器/计数器的初始化编程,然后反复调用显示子程序的方法等待中断的到来; (6)中断服务程序:进行计时操作; (7)加1子程序:用于完成对时、分、秒的加操作,中断服务程序在秒、分、时加1时共有三种条调用加1子程序,包括三项内容:合字、加1并进行十进制调整、分字。 程序说明: 按K1按键进入设定状态 按K2,依次进入闹钟功能是否启用,闹钟时,分秒,年,月,日及时间时,分,秒的设置,直到退出设置状态按K3,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字 LCD第二排中间显示小喇叭,表示启用闹钟功能,无则禁止闹钟功能(可在调整状态进行设置)正常状态,LCD上排最前面显示自定义字符,LCD下排最前面闪动"_" 设置状态,LCD上排最前面显示"P",下排最前面在设置闹钟时间时显示"alarm_",其它状态显示

单片机实训报告_数字时钟

单片机实训报告 ——数字时钟 成员: 金龙:2 王利伟:6 许林鹏: 9 春波:0 袁增莘:1 指导老师:翡 12电气自动化一班 2013.12.23—12.29

目录 一、设计目的 (2) 二、设计要求 (2) 2.1显示要求 (2) 2.2校准要求 (2) 2.3选型要求 (2) 三、硬件设计 (3) 3.1L E D电路图 (3) 3.2电路图分析 (4) 3.3键盘功能 (4) 四、程序设计 (5) 4.1程序流程图 (5) 4.2程序 (6)

课题:数字时钟 一、设计目的: 通过实训周学会制作数码管显示时、分、秒的数字可调时钟,近一步熟练掌握编程语言的应用。 二、设计要求: 2.1显示要求: 时钟要求用8位数码管显示,以数字形式显示时、分、秒的时间。且从右端始八位数码管依次显示①秒个位②秒十位③横杠“—”④分个位⑤分十位⑥横杠“—”⑦时个位⑧时十位 2.2校准要求: 时钟要求计时准确,同时要求有校准时间的电路,且以按键校准。 2.3选型要求: 设计单片机选型以STC89C51RC-RD+系列为基础 三、硬件设计: 3.1、LED电路图

3.2电路图分析 本次课题是利用51单片机进行设计。 Led灯是由低电平点亮的,led位的选择是由单片机中的p2口控制的。 *键盘是采用独立式按键: K1是p3.0;K2是p3.1; K3是p3.2:K4是p3.3; 3.3键盘功能 K1, 是对时钟调整或调整后进行确定的选择键。 K2,是对选中位置后对其进行加。 K3,是对选中位置后对其进行减。 K4,是进行时分秒的选择位的操作。 四、程序设计 4.1程序流程图

单片机 电子时钟课程设计报告

微机原理与接口技术课程设计 题目时钟设计 学院信息科学与工程学院 专业班级自动化0804 学号0909081523 姓名詹强 指导教师陈学,徐德刚

目录 内容提要 (3) 关键词 (3) 引言 (3) 一、设计要求 (3) 二、数字时钟的基本原理 (4) 三、硬件电路设计 (4) 四、数字电路软件设计 (5) 五、软件调试 (6) 六、结语 (6) 七、程序附录 (9)

单片机电子时钟设计 【内容摘要】单片机技术是一门应用性很强的专业课,其理论与实践技能是从事机电类专业技术工作的人员所不可少的。本次程设计是选择AT89C52为核心控制元件,设计了一个日常生活中用到的电子时钟系统。当功能按键S1按下,时钟运行或停止。当功能按键S2按下,时钟显示转换时,分,秒。经过实践证明,本系统运行稳定,具有一定的实用价值。 【关键词】AT89C52 定时器1 定时器0 按键SW1、SW2 引言 单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。它是一种集计数和多中接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而52单片机是个单片机中最为典型和最有代表性的一种。 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 一、设计要求 在实验板上用动态扫描显示00—59 1、6MHZ晶振 2、L9,L10显示00—59十进制数并循环,相隔1S 3、L9显示内寄存内部RAM30H,L10显示内寄存内部RAM31H 4、定时器1产生2。5MS中断,动态扫描显示L9,L10显示数 5、定时器0产生50MS中断,计数20次产生1S时钟 7、要求显示,时、分、秒

基于单片机的数字时钟设计

1 引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。而时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。除此之外,由于对社会责任的更多承担,人们要求所设计的产品能够产生尽量少的垃圾、能够消耗尽量少的能量。因此人们对时钟的又有了体积小、功耗低的要求。 传统的机械表由于做工的高精细要求,造价的昂贵,材料的限制,时间指示精度的限制,使用寿命方面,以及其它方面的限制,已不能满足人们的需求。另外,近些年随着科技的发展和社会的进步,人们对时钟的要求也越来越高,而使得新型电子钟表成了大势所趋。 现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时,译码代替机械式传动,用LED 显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 在电子技术高速发展推动下微机开始向社会各个领域渗透同时大规模集成电路获得了高速发展,单片机的应用正在这时不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字

基于单片机的数字时钟之C51单片机

山东大学威海分校 基于单片机的数字时钟 C51单片机 王若愚 学号200800800307 2010/7/18

概述 AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。 功能特性概述 AT89S51提供以下标准功能:4K字节闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中到内容,但振荡器停止工作并禁止其它所有工作部件直到下一个硬件复位。

AT89S51硬件电路原理 复位及振荡电路 复位电路由按键复位和上电复位两部分组成,如图2所示。AT89S系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC 充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为8.2K和10uF。 按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。 MCS51 LITE使用22.1184MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路, 所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。

单片机数字时钟课程设计资料

单片机课程设计 数字时钟设计 学院:机电工程学院 专业:农业电气化与自动化 班级:10级农电一班 姓名: 学号: 指导教师: 2013年1月5日

课程设计(论文)任务书 题目:数字电子钟 任务与要求: 1. 设计数字时钟,能显示时、分、秒; 2. 整点采用声音报时功能; 3.按键调时、分 时间: 2012 年 12 年28 日至 2013 年 1月 5 日共 9 天 摘要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正

在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 本次设计中以单片机的发展过程和发展方向为背景,介绍了单片机的输入输出的工作原理和操作方法,中断的工作原理和操作方法,74LS245译码器的工作原理和与,LED连接的方法。 本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED数码显示器、BCD-锁存/7段译码/驱动器74LS245等),再配以相应的软件,是它具有时,分,秒显示的功能,并且时,分,秒还可以调整。此次设计电子数字钟是为了了解电子数字钟的原理,从而学会制作电子数字钟。而且通过电子数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及 实用方法。通过它可以进一步学习与掌握单片机原理与使用方法。 关键词:单片机 AT89C51 共阴极LED数码显示器 74LS245译码器

单片机电子时钟设计报告

单片机电子时钟设计报告 随着我国科学技术的飞速发展,单片机的应用越来越广泛。单片机是由随机存储器、只读存储器和中央处理器组成的单片机。它是一个集成定时计数和各种接口的微控制器。它体积小、成本低、功能强,广泛应用于智能工业和工业自动化。为了进一步了解51单片机的定时器,设计一个电子时钟,本文对AT89C51单片机的时钟计数进行了研究。数字时钟是一种使用数字电路技术来计时小时、分钟和秒钟的时钟。与机械钟相比,它具有更高的精度和直观性,更长的使用寿命,并得到了广泛的应用。设计数字时钟有很多方法。例如,中小规模的集成电路可以用来形成电子钟。特殊的电子钟芯片也可以用来形成需要显示电路和外围电路的电子钟。单片机也可以用来实现电子钟等。3,实际任务和内容 设计内容: 1,利用其定时器/计数器计时和计数原理,结合显示电路、发光二极管数码管和外部中断电路来设计定时器 2,系统可实现六位发光二极管显示,显示时间以小时:分:秒为单位3.当系统时间正好是1: 00时,指示灯闪烁(2hz)5秒钟设计目标: 1。掌握单片机定时器和中断的应用方法2.掌握按键和数码管的扩展方法 4、团队合作 项目组组长:张成 项目组成员:余江东、张翔

项目组,共三人,以张成为组长,分工合作,各负其责。具体分工如下:(1)负责数字钟硬件设计和调试;主要由张翔完成(2)基于proteus 的电路仿真;主要在江东完成(3)负责数字钟程序编写;主要由张成完成(4)报告编写;主要由张成、余江东、张翔完成。在我们小组拿到作业后,我们首先讨论了实习的内容和任务。一起讨论用什么方法来实现任务手册的要求和细节。为了不浪费时间,每个人都开始分工合作,专注于自己的任务,同时互相帮助。在这个过程中,我们互相合作,默契配合。我们一起讨论并解决了遇到的问题。两个有着不同想法和观点的人一起分享了讨论,最终采用了获得的最理想和最完美的方案。最后的调试是和我们一起进行的。我们在调试过程中遇到了许多问题。我们一起分析和搜索数据。百度试图解决这些问题。在这个过程中,我们训练了自己的团队合作和沟通技巧。这次供应链管理实习在我们三人的完美合作下圆满完成。每个人都很好地完成了自己的任务,充分证明了团结就是力量。同时,它也使我们认识到团队合作的重要性质。我们是一个完美的团队。 5、总体设计方案概述 系统总体结构图A T89C51单片机显示电路时钟电路机复位电路系统分为单片机控制模块、时钟电路模块、复位电路模块和发光二极管显示模块(1)时钟电路设计 单片机采用外部12MHZ晶振形成振荡电路作为时钟源,时钟电路原理如下当系统通电并启动时,

单片机课程设计(数字时钟)

单片机课程设计报告 课题名称:数字时钟 一、设计目的: 随着半导体技术的不断发展,各种微处理芯片的性价比越来越高,在各个领域的应用也越来越广泛,其中MCU在工业控制、航天航空、民用家电、医疗设备等方面占有十分重要的地位。我们在之前所学习的MCS-51系统单片机就是MCU中的一员,作为低端的8位MCU它具有价格低、适配器件成熟种类多等优势,因此尽管现在32位、16位MCU不断发展,但8位的MCU仍占有大约50%的市场份额,同时它也是我们学习MCU的必要的入门途径,本次实习就是应用我们所学习的MCS-51单片机进行一次实际制作,要经过从硬件设计、软件设计、实验电路调试、软件调试直至最后作品焊接成型,这对以前我们所学习的理论知识进行进一步的巩固和深化,更重要的是学习以MCU为控制核心的应用的实际设计流程及基本的实践动手能力。 二、设计内容 应用AT89S51及相关器件制做一个LED数码显示电子时钟。所需使用的软件及硬件具体内容如下: 1.使用软件及器件 1)软件:Keil uVision2(IDE集成开发环境)、ELITE-IV单片机开发系统、protel99se 2)器材清单:

三、实习步骤 1.根据实习内容及所提供元器件,设计硬件电路,提供的参考电路见图1,也可自行设计 1)复位及晶振电路是单片机最小系统必备部分 2)三个按钮接在P3.0、P3.1、P3.2上用于调整时、分、秒 3)P2口送LED数码显示的段码 4)P1.0至P1.5送数码显示控制的位码 2.根据设计的硬件电路,在面包板上搭接实验电路 3.在硬件基础在keil上上进行软件设计,调试 4.调试通过后,向A T89S51烧写程序 5.将烧写好的A T89S51插接到实验电路中,验证是否正常,如果正常说明软、硬件正确可进行电子时钟焊接制做。 6.焊接好电子时钟后,再次上电调试,验证通过,实习圆满完成。 注意的问题: ●单片机在锁紧座的正确放法:单片机缺口朝上。 ●在面包板上接好电路后,先用万用表测量一下电源及地是否会短路。 ●接电源调试时不能带电插拔元件 四、元件参数 1.9012 9012是一种最常用的普通三极管。 它是一种低电压,大电流,小信号的PNP型硅三极管 集电极电流Ic:Max -500mA 集电极-基极电压Vcbo:-40V 工作温度:-55℃to +150℃ 主要用途:开关应用、射频放大

基于单片机的数字时钟程序

钟〔★〕这里用了两种编写方法(即汇编语言与C语言) (1.开机时,显示12:00:00的时间开始计时; (2.P0.0/AD0控制“秒”的调整,每按一次加1秒; (3.P0.1/AD1控制“分”的调整,每按一次加1分; (4.P0.2/AD2控制“时”的调整,每按一次加1个小时; 2.电路原理图 3.系统板上硬件连线 (1.把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上; (2.把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3.把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上; 4.相关基本知识 (1.动态数码显示的方法 (2.独立式按键识别过程 (3.“时”,“分”,“秒”数据送出显示处理方法 5.程序框图 6.汇编源程序 SECOND EQU 30H MINITE EQU 31H HOUR EQU 32H HOURK BIT P0.0 MINITEK BIT P0.1 SECONDK BIT P0.2 DISPBUF EQU 40H DISPBIT EQU 48H T2SCNTA EQU 49H T2SCNTB EQU 4AH TEMP EQU 4BH ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV SECOND,#00H MOV MINITE,#00H MOV HOUR,#12 MOV DISPBIT,#00H MOV T2SCNTA,#00H MOV T2SCNTB,#00H MOV TEMP,#0FEH LCALL DISP

基于51单片机数字电子时钟带程序完美实现

目录 摘要 (1) 前言 (2) 概论............................................................................................................. 错误!未定义书签。第一章.. (3) 1.1概述 (3) 1.2单片机的发展历程 (3) 1.3时钟的特性 (3) 2 系统原理与硬件设计 (4) 2.1硬件选择 (4) 2.2单片机的构成 (4) 2.3AT89C52单片机的引脚说明 (5) 2.4LED简介 (6) 第三章软件设计 (9) 3.1框架图 (9) 4 调试过程及数据分析 (22) 4.1硬件调试 (22) 4.2K EI L调试 (22) 4.3开发板调试 (23) 结论 (24)

摘要 本次设计采用AT89c52内部定时器、中断等功能,和外部数码管,驱动器等构成。电子时钟电路采用24小时制记时方式,时间用6位数码管动态显示。使用5V电源供电,并且在按键的作用下可以进入省电(不显示LED 数码管)和正常显示两种状态。 关键词:数码管、AT89c52 The design of the adjustable digital clock base on AT89S52 Abstract This paper introduced the design of the adjustable digital clock based on AT89S52, the specific process of how the system hardware and software achieved were detailed description through the design of adjustable digital clock. The modular design and production, which consisted of MCU module, clock module and the associated control module, were mainly recounted;As well as hardware designing,software design use the same method, consists suspension module,time adjust module, and that use the C language to achieve because of its simple and strong negotiability. In this design the functions of time run and change, functions of the year, month and day display have been achieved. Key words :AT89S52 microcontroller;

相关主题
文本预览
相关文档 最新文档