基于单片机的数字时钟.docx

上传人:b****3 文档编号:10895525 上传时间:2023-05-28 格式:DOCX 页数:18 大小:314.22KB
下载 相关 举报
基于单片机的数字时钟.docx_第1页
第1页 / 共18页
基于单片机的数字时钟.docx_第2页
第2页 / 共18页
基于单片机的数字时钟.docx_第3页
第3页 / 共18页
基于单片机的数字时钟.docx_第4页
第4页 / 共18页
基于单片机的数字时钟.docx_第5页
第5页 / 共18页
基于单片机的数字时钟.docx_第6页
第6页 / 共18页
基于单片机的数字时钟.docx_第7页
第7页 / 共18页
基于单片机的数字时钟.docx_第8页
第8页 / 共18页
基于单片机的数字时钟.docx_第9页
第9页 / 共18页
基于单片机的数字时钟.docx_第10页
第10页 / 共18页
基于单片机的数字时钟.docx_第11页
第11页 / 共18页
基于单片机的数字时钟.docx_第12页
第12页 / 共18页
基于单片机的数字时钟.docx_第13页
第13页 / 共18页
基于单片机的数字时钟.docx_第14页
第14页 / 共18页
基于单片机的数字时钟.docx_第15页
第15页 / 共18页
基于单片机的数字时钟.docx_第16页
第16页 / 共18页
基于单片机的数字时钟.docx_第17页
第17页 / 共18页
基于单片机的数字时钟.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的数字时钟.docx

《基于单片机的数字时钟.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字时钟.docx(18页珍藏版)》请在冰点文库上搜索。

基于单片机的数字时钟.docx

基于单片机的数字时钟

 

基于单片机的数字时钟

 

题目数字钟

学院电子信息工程学院

学科门类单片机

班级

学号

姓名

指导教师

2012年06月14日

 

目录

一、题目及设计要求-3-

二、实验内容-3-

三、实验原理-3-

(一)、硬件介绍-3-

(二)、实验线路-6-

(三)、流程图-7-

四、程序设计-9-

五、调试过程及测试结果-14-

六、实习心得-14-

七、参考文献-15-

一、题目及设计要求

1、题目:

数字钟

2、掌握单片机设计原理

二、实验内容

1、实现1S定时功能

2、在内存区开辟区间,连续8个直接存储相应信息

3、调用显示程序显示秒、分、时

三、实验原理

(一)、硬件介绍

1、STC89C52单片机

1)STC89C52单片机简介

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

 

具有以下标准功能:

 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。

2)、单片机的构成

STC89C52单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件,STC89C52单片机单片机内包含下列几个部件:

●一个8位CPU;

●一个片内振荡器及时钟电路;

●8K字节EEPROM程序存储器;

●256字节RAM数据存储器;

●两个16位定时器/计数器;

●可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;

●32条可编程的I/O线(四个8位并行I/O端口);

●一个可编程全双工串行口;

●具有六个中断源、两个优先级嵌套中断结构。

2、3—8线译码器

1)74HC138为3线-8线译码器,其工作原理如下:

当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。

2)74HC138的作用:

利用G1、/(G2A)和/(G2B)可级联扩展成24线译码器;若外接一个反

相器还可级联扩展成32线译码器。

若将选通端中的一个作为数据输入端时,74HC138还可作数据分配器

3)3线-8线译码器74HC138的功能表

3、共阳极八段LED数码管

共阳极八段数码管简介

LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点。

我们采用共阳极接法。

共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。

通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。

当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。

根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

(二)、实验线路图

1信号电路设计

单片机外围电路设计

LED驱动电路设计

串行通讯电路

电源电路

按键控制电路

总电路图如图1-1

图1-1

 

(三)、流程图

1、主流程图

 

四、程序设计(C语言):

/*

1、按键可以调整当时时间

2、按键可以调节定时时间

3、定时时间到继电器吸合

*8位数码管显示时间格式格式12-08-00标示12点08分00秒

S1用于小时加1操作

S2用于分钟加1操作

S2用于分钟减1操作

*/

#include

 

sbitKEY1=P2^4;

sbitKEY2=P2^5;

sbitKEY3=P2^6;

sbitKEY4=P2^7;

sbitLED=P1^2;

codeunsignedchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//共阴数码管0-9

unsignedcharStrTab[6];//定义缓冲区

unsignedcharminute=30,hour=12,second=0;//定义并且初始化值12:

30:

00

bitsec=0;

voiddelay(unsignedintcnt)//延时函数

{

while(--cnt);

}

 

voidDisplaypro(void)

{

StrTab[0]=tab[hour/10];//显示正常时间

StrTab[1]=tab[hour%10];

StrTab[2]=tab[minute/10];

StrTab[3]=tab[minute%10];

StrTab[4]=tab[second/10];

StrTab[5]=tab[second%10];

}

main()//主函数

{

TMOD|=0x01;//定时器010msin12Mcrystal用于计时

TH0=0xd8;

TL0=0xf0;

ET0=1;

TR0=1;

TMOD|=0x10;//定时器1用于动态扫描

TH1=0xF8;

TL1=0xf0;

ET1=1;

TR1=1;

EA=1;

Displaypro();

while

(1)//主循环

{

if(!

KEY1)//按键1去抖以及动作

{

delay(10000);

if(!

KEY1)

{

hour++;if(hour==24)hour=0;//正常时间小时加1

Displaypro();

}

}

if(!

KEY2)//按键去抖以及动作

{

delay(10000);

if(!

KEY2)

{

minute++;if(minute==60)minute=0;//分加1

Displaypro();

}

}

if(!

KEY3)//按键去抖以及动作

{

delay(10000);

if(!

KEY3)

{

minute--;if(minute==255)minute=59;//分减1

Displaypro();

}

}

if(!

KEY4)//按键去抖以及动作

{

delay(10000);

if(!

KEY4)

{

second++;if(second==60)second=0;//秒加1

Displaypro();

}

}

}

}

voidtime1_isr(void)interrupt3using0//定时器1用来动态扫描

{

staticunsignedcharnum;

TH1=0xF8;//重入初值

TL1=0xf0;

switch(num){

case0:

P2=0|0xf0;P0=StrTab[num];break;//分别调用缓冲区的值进行扫描

case1:

P2=1|0xf0;P0=StrTab[num]|0x80;break;

case2:

P2=2|0xf0;P0=StrTab[num];break;

case3:

{

P2=3|0xf0;

if(sec)

P0=StrTab[num]|0x80;

else

P0=StrTab[num];

break;

}

case4:

P2=4|0xf0;P0=StrTab[num];break;

case5:

P2=5|0xf0;P0=StrTab[num];break;

default:

break;

}

num++;//扫描6次,使用6个数码管

if(num==6)

num=0;

}

voidtim(void)interrupt1using1

{

staticunsignedcharcount;//定义内部静态变量

TH0=0xd8;//重新赋值

TL0=0xf0;

count++;

if(count==20||count==70)

sec=~sec;

switch(count)

{

case0:

case20:

case40:

case60:

case80:

Displaypro();//隔一定时间调用显示处理

break;

case50:

default:

break;

}

if(count==100)

{

count=0;

second++;//秒加1

if(second==60)

{

second=0;

minute++;//分加1

if(minute==60)

{

minute=0;

hour++;//时加1

if(hour==24)

hour=0;

}

}

}

}

五、调试过程及测试结果

1、首先根据电路原理图在软件上连出电路,然后进行电路的调试,在实际的电路中,芯片一脚接+5V的电源,另一引脚接地。

2、现在将在调试过程中的问题总结:

测试数码管显示的数据是否正确,将编好的程序写进单片机后,观察数码管,发现码型显示不正确。

3、通过改正硬件电路,使数码管显示正确的数据。

通过以上硬件电路调试,最终达到了设计的要求,实现了数字钟秒、分、时的显示。

六、实习心得

1.通过对单片机频率计的设计,我对单片机这一课程及其实际应用有了更加深入的认识与理解;

2.通过对单片机电路设计和制版工艺的学习,更加认识到单片机的适用范围的广泛;

3.通过对电路板的焊接与调试,动手能力得到了很好的提升,对这一课程也更加热爱。

七、参考文献

1、单片机基础第三版李广弟、朱月秀、冷祖祁《人民邮电》

2、单片微型计算机第三版李群芳、张士军《电子工业出版社》

3、《单片机原理与实用技术》付晓光主编北京交通大学出版社。

4、《MCS-51单片机原理及接口技术》汪德彪主编郭杰副主编电子工业出版社。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2