基于51单片机电子时钟设计

时间:2024.3.31

单片机原理与应用 课程设计与实现

实训报告

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

姓名 :

实训时间 :

实训地点 :

指导教师 :

一、 实训题目:基于51单片机电子时钟设计

设计要求:(1)可设定时间;

(2)可显示当时时间;

(3)每小时振铃响一次,并且振铃铃声响次数与时间一致。

二、 实训目的:

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

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

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

1.89s52

AT89S52是一种低功耗、高性能CMOS 8位微控制器,使用 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给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。

基于51单片机电子时钟设计

基于51单片机电子时钟设计

74ls244图例

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

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

用途

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

基于51单片机电子时钟设计

74LS244真值表:

L表示低电平

H表示高电平

X表示不定状态

Z表示高阻态

74Ls244技术参数

基于51单片机电子时钟设计

基于51单片机电子时钟设计

基于51单片机电子时钟设计

四、 软硬件设计

1. 显示模块

(1) 硬件设计

(2) 流程图

(3) 软件设计

void led_dispiay( )

{

wx_0=0;wx_1=0; //小时位选 ledbit=smg[time1s/10]; //十位显示 wx_1=1;

delay();

wx_1=0;

ledbit=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;

}

}

}

}

TH0=0x3c;

TL0=0xb0;

} 个位显示 计数20个50ms为1s

3. 键盘控制模块

(1) 硬件设计

基于51单片机电子时钟设计

(2) 流程图

(3) 软件设计

void shezhi_diaplay()

{

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--;

// 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. 总设计电路图

基于51单片机电子时钟设计

五、 实训总结:

经过两周的单片机课程设计,我组基本完成课题要求。虽然还是存在很多不足,但是功能上基本达标。时钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷。硬件设施合乎要求,软件设计可以配合硬件实现要求功能。但是由于时间比较短,出现部分不足:初期时钟不显示数字,经检查是由于硬件连接不完善,存在漏焊,虚焊和错焊等问题。不过,我们相信,如果时间充足,将软件改进,我们完全可以很好实现所有功能。

另外,在本次设计的过程中,我们发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我们觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。

从这次的课程设计中,我们真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的练习的过程中才能提高,我想这就是我们在这次课程设计中的最大收获。最后非常感谢王老师的悉心指导!

六、 附件:

附1:程序代码

#include <reg52.h>

#include <intrins.h> //有_nop_的头文件

/***********变量定义*********************************************/

#define uchar unsigned char

#define uint unsigned int

void shezhi_display(void);

void led_display(uchar m);

void zhengdian(void);

void delay(void);

void delayms(uchar ms);

uchar time1s=0,time50ms; //定时1s计数器

uchar time1f=0,time1x=0;

uchar a,b,k,m,num=0;

#define ledbit P0 //P0.0-P0.7--A~G

extern uchar code smg[]= { //共阳极0-9显示代码

//-0-----1-----2-----3-----4-----5-----6-----7-----8---9-- 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };

sbit wx_0=P2^0;

sbit wx_1=P2^1;

sbit wx_2=P2^2;

sbit wx_3=P2^3;

sbit wx_4=P2^4; // 数码管位选

sbit wx_5=P2^5;

sbit zd=P1^4;

sbit shezhi=P1^1;

sbit jia=P1^2;

sbit sub=P1^5;

sbit yiwei=P1^0;

void init () //对应定时器和外部中断1;

{

TMOD = 0x01; //T0T1方式控制

TH0=0x3c;

TL0=0xb0; //计时50ms

EA=1; //开全局中断

ET0=1; //开定时中断0

TR0=1;

}

void delay(void) //延时函数,延时约0.6ms

{

unsigned char j;

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

}

void delayms(uchar ms)

{

uchar i;

while(ms--)

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

}

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

/函数名:led_display()

/功能 :数码管显示数据,驱动芯片74LS244

/输入 :dat ---8位数据

/输出 :无

/说明 :输入十进制数。

/********************************************************/ void led_dispiay( )

{

wx_0=0;wx_1=0; //小时位选 ledbit=smg[time1s/10]; //十位显示

wx_1=1;

delay();

wx_1=0;

ledbit=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;

}

/***************定时中断**********************************/ void time1() interrupt 1

{

time50ms++;

if(time50ms==20) //计数20个50ms为1s

{

time50ms=0;

time1s++;

if( time1s==60)

{

time1s=0;

time1f++;

if(time1f==60)

{

time1f=0;

time1x++;

if(time1x==24)

{

time1x=0;

}

}

}

}

TH0=0x3c;

TL0=0xb0;

}

void shezhi_diaplay()

{

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--;

// 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;

}

}

}

void zhengdian(void)

{

if(time1s==0&time1f==0)

{

uchar k;

for(k=0;k<5;k++)

{

zd=0;

delayms(10);

delayms(10);

delayms(10);

delayms(10);

zd=1;

delayms(10);

}

}

}

/*********************主程序***********************/

void main()

{

init();//初始化

while(1)

{

shezhi_diaplay( );

led_dispiay( );//显示

// zhengdian( ); }

}

附2:

实物图:

基于51单片机电子时钟设计

正面

基于51单片机电子时钟设计

背面

基于51单片机电子时钟设计

使用仪器:

硬件:万用表一个,焊锡丝若干,烙铁一个

PC机一台,下载线一个

软件:KEIL软件,protel软件,下载程序软件。

参考文献

[1]王明亮.关于中国学术期刊标准化数据库系统工程的进展.http://www./pch/wml.txt/980810-2.html.

[2] 彭伟 .单片机C语言程序设计实训100例——基于8051+Proteus仿真(工学版),电子工业出版社, 2009/6/1

[3] 谢宜仁. 单片机硬件接口电路及实例解析. 电子工业出版社,2009/4/1.

[4] 谢维成,杨加国 主编,董秀成 主审,单片机原理与应用及C51程序设计。清华大学出版社.2006/8/1

[5]童诗白,华成英主编,模拟电子技术基础,高等教育出版社,2006/5.

[6]李朝青编著.单片机原理及接口技术(第3版) 北京航空航天大学出版社.2005/5.

更多相关推荐:
单片机电子时钟课程设计报告

基于单片机电子时钟的设计绪论单片机自20世纪70年代问世以来以其极高的性能价格比受到人们的重视和关注应用很广发展很快单片机体积小重量轻抗干扰能力强环境要求不高价格低廉可靠性高灵活性好开发较为容易由于具有上述优点...

单片机电子时钟设计报告

科技创新实践[数字时钟设计][用AT89S52单片机设计电子时钟的实验报告]目录单片机的个性化电子钟设计报告1一、设计背景1二、作品介绍1三、设计目的及意义1四、设计要求1五、总体方案设计25.1硬件设计21.…

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

单片机电子时钟的设计目录1引言12设计任务与要求221设计题目222设计要求23系统的功能分析与设计方案331系统的主要功能332系统的设计方案333数码管显示工作原理434电路硬件设计5341设计原理框图53...

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

电子时钟实验报告全部代码在文档末尾51单片机LCD1602液晶显示屏平台下编程实现可直接编译运行目录一实验目的1二实验要求2三实验基本原理2四实验设计分析2五实验要求实现3A电路设计31整体设计32分块设计42...

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

第一部分设计任务和要求11单片机课程设计内容利用STC89C51单片机和LCD1602电子显示屏实现电子时钟可由按键进行调时和1224小时切换12单片机课程设计要求1能实现年月日星期时分秒的显示2能实现调时功能...

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

JINGCHUUNIVERSITYOFTECHNOLOGY单片机原理及应用课程设计报告题目电子时钟专业电气工程及其自动化班级20xx级电工2班学号20xx401020xx2姓名王贞指导教师邹云峰提交日期20xx...

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

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

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

科技创新实践数字时钟设计刘悦09010101025020xx716用AT89S52单片机设计电子时钟的实验报告目录单片机的个性化电子钟设计报告1一设计背景1二作品介绍1三设计目的及意义1四设计要求五总体方案设计...

基于单片机的电子时钟设计报告(LCD显示)

单片机原理及应用课程设计任务书题目电子时钟LCD显示1设计要求以AT89C51单片机为核心的时钟在LCD显示器上显示当前的时间使用字符型LCD显示器显示当前时间显示格式为时时分分秒秒用3个功能键操作来设置当前时...

单片机电子钟设计报告

目录单片机的个性化电子钟设计报告作者黄淀钧吴耿彬09电信3班一设计背景2二作品简介2三设计目的与意义3四设计要求3五总体方案设计351硬件设计3511总原理图3512各模块设计4513器件清单752软件设计75...

单片机课程设计数字钟实验报告

单片机课程设计电子钟一实现功能1能够实现准确计时以数字形式显示时分秒的时间2小时以24小时计时形式分秒计时为60进位能够调节时钟时间3闹钟功能一旦走时到该时间能以声或光的形式告警提示4能够实现按键启动与停止功能...

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

荆楚理工学院课程设计成果学院电子信息工程学院班级学生姓名学号设计地点单位设计题目电子时钟完成日期20xx年6月19日指导教师评语成绩五级记分制教师签名目录1摘要12系统简介121总体设计方案说明222单片机系统...

单片机电子时钟设计报告(31篇)