基于51单片机的实时时钟设计报告Word格式.docx
- 文档编号:22730363
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:25
- 大小:563.82KB
基于51单片机的实时时钟设计报告Word格式.docx
《基于51单片机的实时时钟设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的实时时钟设计报告Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
(2)周润景.《PROTUES入门实用教程》机械工业出版社
(3)任向民.《微机接口技术实用教程》清华大学出版社
(4)
6)课程设计进度安排
内容天数 地点
构思及收集资料1 图书馆
系统设计与调试4 实验室
撰写论文2 图书馆、实验室
学生签名:
2014年6月9日
课程设计(论文)评审意见
(1)完成原理分析(20分):
优( )、良( )、中( )、一般( )、差( );
(2)设计分析 (30分):
(3)完成调试 (20分):
(4)回答问题 (20分):
(5)格式规范性(10分):
评阅人:
职称:
2014年6月15日
摘要……………………………………………………………………………4
第1章设计要求………………………………………………………………5
1.1设计要求………………………………………………………………5
1.2设计内容………………………………………………………………5
1.3设计基本环境……………………………………………………………5
第2章设计方案和论证…………………………………………………………6
2.1总设计原理框图……………………………………………………………6
2.2设计方案选择………………………………………………………………7
第3章硬件电路……………………………………………………………8
3.1单片机的选择………………………………………………………………8
3.1.1单片机内部原理分析…………………………………………………83.1.2单片机的引脚及封装…………………………………………………9
3.1.3单片机最小系统……………………………………………………11
3.2数码管显示工作原理……………………………………………………11
3.38255A模块……………………………………………………………12
3.4时间调节模块……………………………………………………………13
3.4.1时间设置………………………………………………………………13
3.4.2整点报时………………………………………………………………13
第4章软件调试………………………………………………………………14
4.1时间调节程序流程图………………………………………………………14
4.2主程序流程图………………………………………………………………18
第5章仿真调试………………………………………………………………22
第6章总结与体会……………………………………………………………23
第7章参考文献……………………………………………………………23
摘要
单片计算机即单片微型计算机。
由RAM,ROM,CPU构成,集定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
通过本子课程设计掌握单片机的基本原理,加深对课堂知识的理解,从而达到学习、设计、开发单片机软硬的能力。
本课程设计由AT89C51,BUTTON,六段数码管等构成,结合单片机最小系统晶振电路作为驱动电路,复位电路作为系统复位使用;
结合proteus和keil软件进行设计此系统,通过四个按键调整走时时间和定时时间,由定时器定时并在数码管上显示相应的时间,通过中断和按键扫描实现对时间的停止、启动和设置调整。
程序利用C语言进行编写,结合单片机的引脚的以及相关知识完成程序的编写,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。
运行仿真时,可以显示时钟走时时间,通过按键可以修改时间,以及可以进行手动设置闹钟闹铃时间,同时通过蜂鸣器进行闹铃的效果,通过仿真调试效果真实、准确,节省了硬件资源。
关键字:
单片机;
LED数码管;
定时;
子时钟;
键盘控制
第1章
1.1设计要求
1、准确计时,以数字形式显示时、分、秒的时间。
2、小时以24小时计时形式,分秒计时为60进位。
3、校正时间功能,即能随意设定走时时间。
4、闹钟功能,一旦走时到该时间,能以声或光的形式告警提示。
5、设计5V直流电源,系统时钟电路、复位电路。
6、能指示秒节奏,即秒提示。
7、可采用交直流供电电源,且能自动切换。
1.2设计内容
以单片机为控制器,采用定时器中断的方法,设计一个一天24小时进制的实时时钟,并用8个发光二极管分别显示时、分、秒的记时以及过度符号“-”,通过按键调定时钟的具体时间,达到修改时间,设定闹钟,整点报时,倒计时秒表的效果。
1.3设计基本环境条件
环境条件:
电脑、软件(keil)、硬件(proteus)组合设计系统
Keil:
它是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
Proteus:
它是目前最好的仿真单片机及外围器件的工具。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
第2章设计方案和论证
本次设计时钟电路,使用了89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:
键盘、芯片、扬声器、LED显示即可满足设计要求。
2.1总设计原理框图如下图所示:
2.2设计方案的选择
1.计时方案
方案1:
采用现成实时时钟芯片
使用一些实时时钟集成电路,如DS1287、DS12887、DS1302等。
这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时等功能,计时数据的更新每秒自动进行一次,不需要程序干预。
因此,在工业实时测控系统中多采用这类专用芯片来实现实时时钟功能。
方案2:
使用单片机内部的可编程定时器。
利用单片机内部的定时计数器进行中断定时,配合软件延时实现时、分、秒的计时。
该方案优点是节省硬件成本,可以利用程序代替。
缺点是程序设计相对较为复杂,精确度不高,同时还可能会和延时冲突,导致显示效果不佳。
2.显示方案
对于实时时钟而言,显示显然是另一个重要的环节。
通常LED显示有两种方式:
动态显示和静态显示。
静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。
但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂。
需要几个LED就必须占有几个并行口,比较适用于LED数量较少的场合。
当然当LED数量较多的时候,可以使用单片机的串行口通过移位寄存器的方式加以解决,但程序编写比较麻烦。
LED动态显示硬件连接简单,但动态扫描的显示方式需要占有CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。
本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式。
第3章硬件电路
3.1单片机的选择
3.1.1单片机内部原理分析
通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。
89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。
51单片机中其主要资源有:
8位CPU、片内带震荡器及时钟电路、128B片内数据存储器、4K片内程序存储器(8031无)、21B特殊功能寄存器、4个8位的IO口、一个全双工串行接口、两个16位定时器、中断系统有5个中断源、111条指令。
其内部结构如图3-1所示。
图3-1
3.1.2单片机单片机的封装及引脚
89C51单片机是由深圳宏晶公司代理销售的一款MCU,是由美国设计生产的一种低电压、高性能CMOS8位单片机,片内含8kbytes的可反复写的FlashROM和128bytes的RAM,2个16位定时计数器[5]。
89C51单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0~P3、定时器/计数器、串行I/O接口以及定时控制逻辑电路等。
这些部件通过内部总线联接起来,构成一个完整的微型计算机。
其管脚图如图所示。
89C51单片机管脚结构图
VCC:
电源。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为89C51的一些特殊功能口,如下表所示:
P3口的位
第二功能
P3.0
RXD(串行口输入)
P3.1
TXD(串行口输出)
P3.2
INT0(外部中断0输入)
P3.3
INT1(外部中断1输入)
P3.4
T0(定时器/计数器0的外部输入)
P3.5
T1(定时器/计数器1的外部输入)
P3.6
WR(片外数据存储器写允许)
P3.7
RD(片外数据存储器读允许)
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
3.1.3单片机最小系统
单片机最小系统就是能使单片机工作的最少的器件构成的系统。
对于本课设所使用的89C51来讲,其最小系统为89C51单片机芯片、时钟电路和复位电路,器仿真原理图如图所示。
3.2数码管显示工作原理
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。
而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。
即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。
数码管显示方法可分为静态显示和动态显示两种。
静态显示就是数码管的8段输入及其公共端电平一直有效。
动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;
每位数码管的阳极连在一起组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。
Proteus仿真图如下图所示。
3.38255A模块
8255A是一种可编程的I/O接口芯片,可以与MCS-51系统单片机以及外设直接相连,广泛用作外部并行I/O扩展接口。
8255A内部由PA、PB、PC三个8位可编程双向I/O口,A组控制器和B组控制器,数据缓冲器及读写控制逻辑四部分电路组成。
数据总线(8条):
D0~D7,用于传送CPU和8255A间的数据、命令和状态字。
控制总线(6条):
RESET:
复位线,高电平有效。
/CS:
片选线,低电平有效。
/RD、/WR:
/RD为读命令线,/WR为写命令线,皆为低电平有效。
A0、A1:
地址输入线:
用于选中PA、PB、PC口和控制寄存器中哪一个工作。
本次课设中8255A的设计如图所示。
其中DO~D7连接在单片机的外扩数据总线P0口上,WR和RD分别接在单片机的WR和RD口,RESET接在单片机RST上,CS、A1和A0分别接在P2.7、P2.6和P2.5上,从而8255A的A口地址可为0000H,B口地址可为2000H,C口地址可为4000H控制口地址可为6000H。
3.4时间调节模块
3.4.1时间设置
时间调节时利用中断和按键扫描来实现的,其中,定时器启停有外部中断0控制,设置时分秒由外部中断1控制,而调时间时的加减是由按键连接P1.0和P1.1口。
3.4.2整点报时
利用蜂鸣器实现整点报时和闹钟设置,仿真原理图如图所示。
第4章软件调试
4.1时间调节程序流程图
时间调节程序流程图如图所示。
时间调节设置:
voiddisplay(unsignedchars,unsignedcharf,unsignedcharm,unsignedchart)
{unsignedcharshi0,shi1,fen0,fen1,miao0,miao1;
shi0=s/10;
shi1=s%10;
fen0=f/10;
fen1=f%10;
miao0=m/10;
miao1=m%10;
PA=0x80;
PB=shu[shi0];
delay(5);
PA=0x40;
if(flag_SET==3&
&
t)
PB=shu[shi1]&
0x7f;
else
PB=shu[shi1];
PA=0x20;
PB=0xbf;
PA=0x10;
PB=shu[fen0];
PA=0x08;
if(flag_SET==2&
PB=shu[fen1]&
else
PB=shu[fen1];
PA=0x04;
PA=0x02;
PB=shu[miao0];
PA=0x01;
if(flag_SET==1&
PB=shu[miao1]&
PB=shu[miao1];
}
voidclock()
{display(shi,fen,miao,!
flag_TR);
while(k)
{
display(shi12,fen12,miao12,1);
if(flag_SET)
{
TR0=0;
if(flag_SET==1&
up==0)
{
while(up==0);
miao12++;
if(miao12==60)miao12=0;
}
down==0)
while(down==0);
miao12--;
if(miao12>
60)miao12=59;
if(flag_SET==2&
fen12++;
if(fen12==60)fen12=0;
fen--;
if(fen12>
60)fen12=59;
}
if(flag_SET==3&
shi12++;
if(shi12==24)shi12=0;
shi12--;
if(shi12>
24)shi12=23;
}
if(!
setclock&
flag_TR)
{
k=!
k;
}
4.2主程序流程图
主程序流程图如图
voidmain()
{unsignedcharb;
init();
while
(1)
display(shi,fen,miao,!
if(flag_SET)
{TR0=0;
{while(up==0);
miao++;
if(miao==60)miao=0;
{while(down==0);
miao--;
if(miao>
60)miao=59;
fen++;
if(fen==60)fen=0;
if(fen>
60)fen=59;
shi++;
if(shi==24)shi=0;
shi--;
if(shi>
24)shi=23;
if(flag_TR==1)
TR0=1;
else
if(!
a&
b=!
b;
if(!
display(shi12,fen12,miao12,k);
clock();
display(shi,fen,miao,!
if(flag_TR==1&
fen==0&
miao==0)
for(i=0;
i<
shi;
i++)
display(shi,fen,miao,!
fla
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 实时 时钟 设计 报告