基于单片机电子时钟设计

  • 格式:docx
  • 大小:622.79 KB
  • 文档页数:15

单片机原理与应用

课程设计与实现

实训报告

专业 : 自动化 年级/ 班级:

姓名 : 实训时间 : 实训地点 : 指导教师 :

一、 实训题目:基于 51 单片机电子时钟设计 设计要求:(1)可设定时间; (2)可显示当时时间; (3)每小时振铃响一次,并且振铃铃声响次数与时间一致。

二、 实训目的:

(1) .学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计 方法。

(2) .设计任务及要求利用实验平台上6个LED数码管,设计带有闹铃 功能的数字时钟。

三、 所用器件工作原理及控制方法:

1 .89s52

AT89S52是一种低功耗、高性能 CMOS位微控制器,使用ATMEL公司高密 度非易失性存储器技术制造, 与工业 80C51 产品指令和引脚完全兼容。 并具有以 下标准功能:8k字节Flash,256字节RAM 32位I/O 口线,看门狗定时器,

2 个数据指针,三个 16 位定时器/计数器,一个 6向量 2级中断结构,全双工

串行口,片内晶振及时钟电路。另外, AT89S52 可降至 0Hz 静态逻辑操作,支

持2种软件可选择节电模式。空闲模式下, CPU亭止工作,允许RAM定时器/

计数器、串口、中断继续工作。掉电保护方式下, RAM内容被保存,振荡器被冻

结,单片机一切工作亭止,直到下一个中断或硬件复位为止。

2. 定时

软件方法,利用单片机本身的定时计数功能,节省成本,提高稳定性。

3.显示

采用LED8段数码管,具有耗电低、配置灵活、线路简单、安装方便、耐转 动、价格低廉且寿命长等优点。

4.74LS244

74LS244为3态8位缓冲器,一般用作总线驱动器。74LS244没有锁存的功 能。地址锁存器就是一个暂存器, 它根据控制信号的状态, 将总线上地址代码暂 存起来。

8086/8088 数据和地址总线采用分时复用操作方法,即用同一总线既传 输数据又传输地址。

5. 简介

当微处理器与存储器交换信号时,首先由CPU发出存储器地址,同时发出允 许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁 存在总线上,随后才能传输数据。

74IS244 图例

锁存器是一个很普通的时序电路。一般的,它在时钟上升沿或者下降沿来 的时候锁存输入,然后产生输出,在其他的时候输出都不跟随输入变化, 这就是所谓边缘触发的D触发器。

通常用作单片机的地址锁存器的芯片有 74LS373 8282、74LS273

74HC373等。

用途

它主要用于三态输出,作为地址驱动器、时钟驱动器、总线驱动器和 定向发送器等。其真值表如下:74LS244真值表

Inputs Output

G A Y

L L L

L H H

H X Z

74LS244真值表:

L表示低电平

H表示高电平

X表示不定状态

Z表示咼阻态

74LS244技术参数

最小 典型 最大

VCC 4.25V 5V 5.25V

园固同g3[B[Bn^BB EEbJkd叵叵E叵叵E 高电平输出 电流

-15mA

低电平输出 电流

24mA

工作温度n 「0C ]

「70 C

四、软硬件设计

1.显示模块

(1)硬件设计

(2) 流程图

(3) 软件设计

void led_dispiay()

{

wx_0=0;wx_ 仁0; //

ledbit=smg[time1s/10];

wx_仁1;

delay();

wx_仁0;

Iedbit=smg[time1s%10]; //

wx_0=1;

delay();

wx_0=0;

wx_2=0;wx_3=0;

ledbit=smg[time1f/10];

wx_3=1; 小时位选

//十位显示

个位显示

// 分钟显示

//十位显示

delay();

wx_3=0;

ledbit=smg[time1f%10]; //

wx_2=1;

delay();

wx_2=0;

wx_4=0;wx_5=0;

ledbit=smg[time1x/10];

wx_5=1;

delay();

wx_5=0;

ledbit=smg[time1x%10]; //

wx_4=1;

delay();

wx_4=0;

}

2. 定时模块

(1) 流程图

(2) 软件设计

void time1() interrupt 1

{

time50ms++;

if(time50ms==20) //

{

time50ms=0;

time1s++;

if( time1s==60)

{

time1s=0;

time1f++;

if(time1f==60)

{

time1f=0;

time1x++;

if(time1x==24)

{

time1x=0; 个位显示

// 分钟显示

// 十位显示

个位显示

计数20个50ms为1s

}

}

}

}

TH0=0x3c;

TL0=0xb0;

}

if(1)

if(yiwei==0) delayms(66);

if(yiwei==0)

TR0=0;

++num;

}

/* ................................... 秒调整 ............. */

if(num==1&jia==0)

delayms(70);

if(num==1&jia==0)

time1s++;

if(num==1 &sub==0)

delayms(70);

if(num==1 &sub==0)

time1s--; 3.键盘控制模块

(1)硬件设计

(3)软件设计 void

shezhi_diaplay() { // led_dispiay( );

/*................. 分钟调整 ....................... */

if(num==2&jia==0)

delayms(70);

if(num==2&jia==0)

time1f++;

if(num==2&sub==0)

delayms(70);

if(num==2&sub==0)

time1f--;

//led_dispiay( );

/*................. 小时调整 ....................... */

if(num==3&jia==0)

delayms(70);

if(num==3&jia==0)

time1x++;

if(num==3&sub==0) delayms(70);

if(num==3&sub==0)

time1x--;

// led_dispiay( );

if(num>=4)

{

num=0;

TR0=1;

}

}

}

4. 总设计电路图