51单片机时钟.docx
- 文档编号:22898331
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:36
- 大小:440.06KB
51单片机时钟.docx
《51单片机时钟.docx》由会员分享,可在线阅读,更多相关《51单片机时钟.docx(36页珍藏版)》请在冰豆网上搜索。
51单片机时钟
基于单片机的电子时钟设计
——带定时温度功能和显示
年级:
11级
学号:
1110132217
姓名:
詹超
专业:
产品质量
指导老师:
王正家
二零一四年六月
摘要
传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。
单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。
它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。
而51系列的单片机是各单片机中最为典型和最有代表性的一种。
,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。
该设计给出了以AT89C51为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。
关键词:
电子时钟,单片机,C语言。
Abstract
ConventionaldigitalelectronicclockUSESmorediscretecomponent,notonlytakesupalotofspacebutalsoutilizationratioislow,withtheconstantimprovementofthesystemdesigncomplexity,usingtraditionalclocksystemdesignmethodisdifficulttomeetthedesignrequirements.
SCMisasetofCPU,RAM,ROMandtimer/counterandavarietyofinterfaceintheintegrationofmicrocontroller.Smallvolume,lowcost,strongfunction,itiswidelyusedinintelligentproductsandindustrialautomation.And51seriesmicrocontrolleristhesinglechipmicrocomputerinoneofthemosttypicalandmostrepresentative.,thedesignputforwardthesystemoveralldesignscheme,anddesignsthehardwaremodulesandsoftwareprocess,thepartsafterusingClanguagedesignaspecificsoftwareprogram,thevariousmodulesafterfullycompiledthrough,theresultsprovedthefeasibilityofthedesignsystem.ThisdesignUSESAT89C51asthenucleusispresented,thecalculationandcontrolfunctionofmicrocontroller,andUSESthesystematicdesignofreal-timedisplayofdigitalLEDdisplaymodule,appropriatesolutionstothepracticalproductionanddailylifetotherequirementofhighprecisiontiming,thereforethedesignhaswideapplicationinthemodernsociety.
Keywords:
Electronicclock,SCM,Clanguage。
目录
摘要I
AbstractII
第一章前言1
第二章方案论证与比较2
2.1数字时钟方案2
2.2数码管显示方案2
第三章系统设计3
3.1总体设计3
3.1.1系统说明3
3.1.2系统框图3
3.2模块设计4
3.2.1复位电路4
3.2.2按键调时间部分4
3.2.3温度采集部分5
3.2.4数码管位选部分5
3.2.5数码管段选部分6
3.2.6数码管显示部分6
3.2.7单片机控制部分6
第四章原理图与PCB图11
4.1原理图.........................................................................................................................................11
4.2PCB图.........................................................................................................................................12
第五章软件设计13
5.1程序流程图13
5.2源程序16
第六章总结24
6.1物品清单与元件特性24
6.2设计总结25
参考文献(References):
26
第一章前言
计时工具自问世至今已经有很长一段历史了,一直以来它都在人们日常生活生产中发挥着十分重要的作用。
科学技术的不断发展为各种新型时钟的问世提供了先决条件,数字时钟就是其中之一。
数字时钟能够精确地表示时、分、秒,至今已经普遍应用到各类行业以及公共场所,时钟的数字化更为人们的生活带来了极大的便利,所以对时钟进行研究有着十分重要的现实意义。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:
一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:
DS1302,DS12887,X1203等都可以满足高精度的要求。
而传统的温度采集系统包含温度采集电路和AD转换电路,在外加这些电路比较繁琐,这里选用的DS18B20数字温度传感器,它集合和温度采集和AD转换电路,在使用中不需要任何外围元件,接线方便。
体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,同时具备时间调整以及定时提醒的功能。
本设计由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
第二章方案论证与比较
2.1数字时钟方案
数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:
本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:
本方案完全用软件实现数字时钟。
原理为:
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.2数码管显示方案
方案一:
静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:
动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。
显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采用方案二。
第三章系统设计
3.1总体设计
3.1.1系统说明
利用单片机(AT89C51)制作带温度显示功能和定时功能的电子时钟。
由六个LED数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位,两个LED数码管来显示环境实时温度。
四个按键进行时间的调节和定时调节。
3.1.2系统框图
控制部分
单片机(AT89C51)
时间显示部分
(六个个共阴极数码管)
按键部分
(k1,k2,k3,k4))
闹钟电路
复位电路
温度传感器(DS18B20)
温度显示部分
(两个共阴极数码管)
图3-1系统框图
3.2模块设计
3.2.1复位电路
图3-3复位电路
如图3-3所示,复位电路主要型号为10UF/16V的电解电容,型号为104的瓷片电容,10K的电阻以及按键K5构成,RESET接芯片的第9引脚,当开关按下时引脚9为高电平1,断开时引脚为低电平0。
3.2.2按键调时间部分
图3—4按键电路
图3—4为按键电路,采用的是低电平触发。
通过扫描的方式来进行识别单片机引脚的信号。
例如,当按下k1时,将P1.4口置零,此时将执行相应的程序,即让F_K1加1。
3.2.3温度采集部分
图3—5温度采集电路
如图3—5为温度传感器DS18B20的电路。
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
表1DS18B20温度与数字关系表
3.2.4数码管位选部分
图3-5数码管位选电路
图3-5为位选电路,这里采用的是74HC138译码器,由于3-8译码器的特点是每次输入对应一位高电平输出。
这样,在同一时刻,8位共阴极数码管中只有译码器输出为高电平的那位显示出字符,而其他7位则是熄灭的。
同样,在下一时刻,只让下一位的位选线处于选通状态,而其他个位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。
如此循环下去,就可以使各位显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由于LED的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可以造成多位同时亮的假象,达到同时显示的效果。
表274HC138译码器码表
3.2.5数码管段选部分
图3-6数码管段选电路
如图3-6为数码管段选电路,采用的是74HC373锁存器进行字模的传输。
373的输出端O0~O7可直接与总线相连。
当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
表374HC37功能表
3.2.6数码管显示部分
图3-6数码管显示
如图3-6为数码管显示情况,这里采用的是8个共阴极数码,前6位显示时间,分别为时、分、秒,后2位为温度。
其中时钟与分钟和分钟和秒钟之间有点隔开。
表4共阴极数码管字模表
显示
====
dp
g
f
e
d
c
b
a
====
编码
0
0
0
1
1
1
1
1
1
0x3f
1
0
0
0
0
0
1
1
0
0x06
2
0
1
0
1
1
0
1
1
0x5b
3
0
1
0
1
0
0
1
1
0x4f
4
0
1
1
0
0
1
1
0
0x66
5
0
1
1
0
1
1
0
1
0x6d
6
0
1
1
1
1
1
0
1
0x7d
7
0
0
0
0
0
1
1
1
0x07
8
0
1
1
1
1
1
1
1
0x7f
9
0
1
1
0
1
1
1
1
0x6f
A
0
1
1
1
0
1
1
1
0x77
b
0
1
1
1
1
1
0
0
0x7c
C
0
0
1
1
1
0
0
1
0x39
d
0
1
0
1
1
1
1
0
0x5e
E
0
1
1
1
1
0
0
1
0x79
F
0
1
1
1
0
0
0
1
0x71
3.2.7单片机控制部分
图3-7
如图3-7,这里选用的单片机型号是AT89C51。
AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4Kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。
AT89C51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
如图3-7所示,AT89C51有40引脚,双列直插(DIP)封装,所用引脚功能如下:
1.VCC——运行时加+4.5V
2.GND——接地
3.XTAL1——振荡器反相放大器及内部时钟发生器的输入端
4.XTAL2——振荡器反相放大器的输出端
5.RST——复位输入,高电平有效,在晶振工作时,在RST引脚上作用2个机器周期以上的高电平,将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFTAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
6.EA/VPP——片外程序存储器访问允许信号。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地),如果EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
7.P1口,P2口——P1,P2是一组带内部上拉电阻的8位双向I/O口。
运行时通过P1口控制驱动电路的工作,将数据送到数码管,显示相应的段码,为了达到减少功耗或满足端口对最大电流的限制,应加上一限流电阻。
P2.0——P2.5口控制数码管的位选,使六个数码管轮流显示数据,等于1时位选三极管导通,等于0时位选三极管截止。
8.无自锁开关——(S2-P3.7)开关接相应引脚P3.7,当开关按下时,相应引脚为低电平0,断开时引脚为高电平1。
第四章原理图与PCB图
4.1原理图
图4-1原理图
如图4-1为时钟电路总的原理图。
分为最小单片机系统、单片机复位电路、按键电路、数码管位选电路、数码管段选电路、数码管显示电路、蜂鸣器电路、温度采集电路。
使用单片机的P2口进行数模的输出,P1^4、P1^5、P1^6与74HC138连接实现数码管位选,按键电路接入P1^0、P1^1、P1^2、P1^3四个I\O口,通过程序控制,扫描该四个引脚的信号实现时间的调节。
蜂鸣器通过与三极管8550连接,最终接入P1^7,时间设定启动使其发声。
温度传感器接入P3^7,将采集到的模拟信号转化为数字信号后传到单片机。
4.2PCB图
图4-2PCB图
如图4-2为电路的PCB图,我使用的是Altiumdesigner进行绘制。
首先创建相应的元件库和PCB库,并进行封装。
然后按照电路绘制原理图,绘制完成后就可以执行更改,生成PCB图,然后进行布线。
分为自动布线和手动布线,一般虽然自动布线速度快,但相对于手动布线而言,不是那么美观。
对于一些简单的原理图,提倡进行手动布线。
第五章软件设计
5.1程序流程图
图5-1时间位选择流程图图5-2温度流程图
图5-3时间调整流程图
图5-4定时中断流程图
5.2源程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
//此表为LED的字模,共阴数码管0-9
ucharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//段码控制
uintLedOut[10];
bitflag;
sbitds=P3^7;
sbitLS138A=P1^4;
sbitLS138B=P1^5;
sbitLS138C=P1^6;
sbitbeep=P1^7;
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitk4=P1^3;
ucharhour=12,minite=0,second=0;
ucharh,m,s;
uinti,a,temp;
ucharF_k1=0,F_k3=0,ahour=0,aminite=0,asecond=0;
//延时函数
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
//延时函数us
voiddelayus(uintt)
{
while(t--);
}
//复位函数
voidds_reset()
{
ds=1;
delayus(5);
ds=0;
delayus(80);
ds=1;
delayus(14);
if(ds==0)
flag=1;//18b20存在
else
flag=0;//18b20不存在
delayus(20);
}
//位读取函数
bitds_read_bit()
{
bitdat;
ds=0;
_nop_();
_nop_();
ds=1;
_nop_();
dat=ds;
delayus(10);
returndat;
}
uchards_read_byte()//把位转化为字节函数
{
uchari,j,k;
for(i=0;i<8;i++)
{
j=ds_read_bit();
k=(j<<7)|(k>>1);
}
returnk;
}
voidds_write_byte(uchardat)//写字节函数
{
uchari;
for(i=0;i<8;i++)
{
ds=0;
_nop_();
ds=dat&0x01;
delayus(6);
ds=1;
dat=dat>>1;
}
delayus(6);
}
uintread_temperature()//读取温度值函数
{
uchara,b;
ds_reset();
ds_write_byte(0xcc);
ds_write_byte(0xbe);
a=ds_read_byte();
b=ds_read_byte();
temp=b;
temp=temp<<8;
temp=temp|a;
temp=temp*0.0625*10+0.5;//temp是整形
returntemp;
}
voiddisplay(h,m,s,temp)//显示函数
{
uintnum=0;
if(++num>=100)num=0;
LedOut[0]=Disp_Tab[h/10];
LedOut[1]=Disp_Tab[h%10]+0x80;
LedOut[2]=Disp_Tab[m/10];
LedOut[3]=Disp_Tab[m%10]+0x80;
LedOut[4]=Disp_Tab[s/10];
LedOut[5]=Disp_Tab[s%10];
LedOut[6]=Disp_Tab[temp/100];
LedOut[7]=Disp_Tab[temp%100/10];
for(i=0;i<8;i++)
{
P2=LedOut[i];
switch(i)
{
case0:
LS138A=0;LS138B=0;LS138C=0;break;
case1:
LS138A=1;LS138B=0;LS138C=0;break;
case2:
LS138A=0;LS138B=1;LS138C=0;break;
case3:
LS138A=1;LS138B=1;LS138C=0;break;
case4:
LS138A=0;LS138B=0;LS138C=1;break;
case5:
LS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 时钟