基于单片机电子时钟设计
- 格式: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. 总设计电路图