MCS51单片机可调电子钟设计.docx

上传人:b****2 文档编号:2555476 上传时间:2023-05-04 格式:DOCX 页数:16 大小:145.16KB
下载 相关 举报
MCS51单片机可调电子钟设计.docx_第1页
第1页 / 共16页
MCS51单片机可调电子钟设计.docx_第2页
第2页 / 共16页
MCS51单片机可调电子钟设计.docx_第3页
第3页 / 共16页
MCS51单片机可调电子钟设计.docx_第4页
第4页 / 共16页
MCS51单片机可调电子钟设计.docx_第5页
第5页 / 共16页
MCS51单片机可调电子钟设计.docx_第6页
第6页 / 共16页
MCS51单片机可调电子钟设计.docx_第7页
第7页 / 共16页
MCS51单片机可调电子钟设计.docx_第8页
第8页 / 共16页
MCS51单片机可调电子钟设计.docx_第9页
第9页 / 共16页
MCS51单片机可调电子钟设计.docx_第10页
第10页 / 共16页
MCS51单片机可调电子钟设计.docx_第11页
第11页 / 共16页
MCS51单片机可调电子钟设计.docx_第12页
第12页 / 共16页
MCS51单片机可调电子钟设计.docx_第13页
第13页 / 共16页
MCS51单片机可调电子钟设计.docx_第14页
第14页 / 共16页
MCS51单片机可调电子钟设计.docx_第15页
第15页 / 共16页
MCS51单片机可调电子钟设计.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MCS51单片机可调电子钟设计.docx

《MCS51单片机可调电子钟设计.docx》由会员分享,可在线阅读,更多相关《MCS51单片机可调电子钟设计.docx(16页珍藏版)》请在冰点文库上搜索。

MCS51单片机可调电子钟设计.docx

MCS51单片机可调电子钟设计

MCS-51单片机可调电子钟设计

目录

第一部分课程设计任务书1

一、课程设计题目1

二、课程设计时间1

三、课程设计提交方式1

四、设计要求1

第二部分课程设计报告2

一、单片机发展简史2

二、MCS-51单片机系统简介2

三、设计思路2

四、硬件设计电路2

五、软件设计流程2

六、程序源代码2

七、结束语2

八、参考文献2

第一部分课程设计任务书

一、课程设计题目

可调数字电子钟

二、课程设计时间

一周

三、课程设计提交方式

提交打印课程设计报告

四、设计要求

本项目采用智能芯片机设计了一个具有数码管显示、键盘输入的时钟系统,使其具有时、分、秒的实时显示和调整功能:

1)自动计时,显示24小时制时间,由6位LED显示器显示时、分、秒。

2)起始时间为:

00:

00:

00

3)具备校准功能,可以直接由按键设置当前时间。

4)加了一个LED灯,实现了整点报时的功能。

第二部分课程设计报告

一、单片机发展概况

单片机的发展从嵌入式系统的角度可分为:

SCM(Single-ChipMicrocomputer)单片微型计算机、MCU(MicroControllerUnit)微控制器、SOC(SystemOnChip)片上系统三个阶段。

目前,单片机的主流仍然是8位高性能单片机。

其发展体现在CPU功能增强、集成度提高、可靠性提高、内部资源增多、引脚的多功能化、外围电路的内装化、低电压、低功耗、与互联网连接等。

并且逐步向SOC、嵌入式系统过渡。

民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并行多机处理系统和局域网络系统。

二、MCS-51单片机系统简介

MCS-51系列单片机产品都是以Intel公司最早的典型产品8051为核心构成的。

MCS-51单片机由CPU、RAM、ROM、I/O接口、定时器/计数器、中断系统、内部总线等部件组成。

8051单片机的基本性能有:

◆8位CPU;

◆布尔代数处理器,具有位寻址能力;

◆128B内部RAM,21个专用寄存器;

◆4KB内部掩膜ROM;

◆2个16位可编程二进制加1定时器/计数器;

◆32个(4×8位)双向可独立寻址的I/O口;

◆1个全双工UART(异步串行通信口);

◆5个中断源,两级中断结构;

◆片内振荡器及时钟电路,晶振频率为1.2MHz~12MHz;

◆外部程序/数据存储器寻址空间均为64KB;

◆111条指令,大部分为单字节指令;

◆单一+5V电源供电,双列直插40引脚DIP封装。

MCS-51系列单片机都是相互兼容的,只是引脚功能略有差异。

8051单片机有40个引脚,分为端口线、电源线和控制线三类。

三、设计思路

整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,采用单片机振荡器加软件分频来实现。

将标准秒信号送入“秒计数器”,“秒计时器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计时器”的时钟脉冲。

“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用24进制计数器,可实现对一天24小时的累计。

显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED显示器显示出来,显示小时、分、秒;设计三个按钮开关作为手动校准。

其工作流程如下:

1)时间显示:

上电后,系统自动进入时钟显示,从00:

00:

00开始计时。

2)时间校准:

按下第一个按钮开关后,系统停止计时,循环进入小时、分钟、秒设定状态,分别按下第二、第三个按钮开关上下设置时间,系统将自动由设定后的时间开始计时显示。

置初始时钟用三个键:

K2(P3.4)用于改变显示状态,有四个状态:

1—修改时2—修改分3—修改秒0—显示状态。

K3(P3.5)用于当修改“时”、“分”、“秒”分别在这三个状态下对时、分、秒内容加1.

K4(P3.6)用于当修改“时”、“分”、“秒”分别在这三个状态下对时、分、秒内容减1.

加了一个LED灯,实现了整点报时的功能。

四、硬件电路设计

五、软件设计框图

六、程序源代码

#include

#defineucharunsignedchar

#defineuintunsignedint

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

unsignedinti,hh,mm,ss,count,k;//初值

unsignedchartemp;

sbitt0=P1^0;

voiddelay()

{

unsignedcharx,y;

for(x=2;x>0;x--)

for(y=125;y>0;y--);

}

voiddisplay(hh,mm,ss)

{

P2=0xfe;

P0=table[ss%10];

delay();

P2=0xfd;

P0=table[ss/10];

delay();

P2=0xfb;

P0=table[10];

delay();

P2=0xf7;

P0=table[mm%10];

delay();

P2=0xef;

P0=table[mm/10];

delay();

P2=0xdf;

P0=table[10];

delay();

P2=0xbf;

P0=table[hh%10];

delay();

P2=0x7f;

P0=table[hh/10];

delay();

P0=table[11];

}

voidmain()//主函数

{

P2=0x01;//位码初值

TMOD=0x01;//方式寄存器初值

TH0=(65536-1000)/256;//定时器0设置初始值1ms中断初始值

TL0=(65536-1000)%256;//

EA=1;

ET0=1;

TR0=1;//起动定时器0

while

(1)

{P3=0xff;

temp=P3;

while(temp==0xef)

{

delay();

temp=P3;

while(temp==0xef)

{

EA=0;

count++;

if(count==4)

{count=0;

EA=1;}

while(temp==0xef)

{

temp=P3;

display(hh,mm,ss);

}

}

}

P2=0xfb;

P0=table[10];

delay();

P2=0xdf;

P0=table[10];

delay();

display(hh,mm,ss);

P3=0xff;

temp=P3;

while(temp==0xdf||temp==0xbf)

{

delay();

for(k=20000;k>0;k--);

temp=P3;

while(temp==0xdf||temp==0xbf)

{delay();

temp=P3;

for(k=5000;k>0;k--);

if(count==1)

{

switch(temp)

{

case0xdf:

{

hh++;

if(hh==24)

hh=0;

}break;

case0xbf:

{

hh--;

if(hh==-1)

hh=23;

}break;

}

}

if(count==2)

{

switch(temp)

{

case0xdf:

{

mm++;

if(mm==60)

mm=0;

}

break;

case0xbf:

{

mm--;

if(mm==-1)

mm=59;

}

}

}

if(count==3)

{

switch(temp)

{

case0xdf:

{

ss++;

if(ss==60)

ss=0;

}

break;

case0xbf:

{

ss--;

if(ss==-1)

ss=59;

}

}

}

if(count==4)

{

temp=P3;

display(hh,mm,ss);

}

}

switch(count)

{

case1:

{

P2=0x7f;

P0=table[hh/10];

delay();

P2=0xbf;

P0=table[hh%10];

delay();

}

break;

case2:

{

P2=0xef;

P0=table[mm/10];

delay();

P2=0xf7;

P0=table[mm%10];

delay();

}

break;

case3:

{

P2=0xfd;

P0=table[ss/10];

delay();

P2=0xfe;

P0=table[ss%10];

delay();

}break;

}

}

}

}

voidtime0()interrupt1using2//定时器0中断函数

{

TF0=0;//定时器0中断溢出标志清0

TH0=(65536-1000)/256;//定时器0设置初始值1ms中断初始值

TL0=(65536-1000)%256;

k++;

if(k==1000)

{

k=0;

ss++;

if(ss==60)

{

ss=0;

mm++;

if(mm==60)

{

mm=0;

hh++;

if(hh==24)

{

hh=0;

}

}

}

if(ss==0&&mm==0)

t0=1;

elset0=0;

}

}

七、结束语

这次实习让我受益匪浅,无论从知识上还是其他的各个方面。

上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。

但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。

在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。

团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。

八、参考文献

1、张鑫.单片机原理及应用(第2版)[M].电子工业出版社,2010年;

2、周景润等.基于PROTEUS的电路及单片机设计与仿真(第2版)[M].北京航空航天大学出版社,2010年;

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

当前位置:首页 > 解决方案 > 学习计划

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

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