STC51单片机电子闹钟.docx
《STC51单片机电子闹钟.docx》由会员分享,可在线阅读,更多相关《STC51单片机电子闹钟.docx(16页珍藏版)》请在冰豆网上搜索。
![STC51单片机电子闹钟.docx](https://file1.bdocx.com/fileroot1/2023-1/6/f29ea285-0b8f-457d-a6f4-554623ae4da7/f29ea285-0b8f-457d-a6f4-554623ae4da71.gif)
STC51单片机电子闹钟
数字电子闹钟
摘要
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的
各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产
品性能进一步提高,产品更新换代的节奏也越来越快。
现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。
对于那些
对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码
管为显示器的时钟比指针式的时钟表现出了很大的优势。
数码管显示的时间简单明了而且读
数快、时间准确显示到秒。
而机械式的依赖于晶体震荡器,可能会导致误差。
数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。
数字钟的精度、
稳定度远远超过老式机械钟。
在这次设计中,我们采用数码管显示时、分,以24
小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定
时器计数。
在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整,并且具有定时闹铃功能。
数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,
因此得到了广泛的使用。
关键字:
单片机电子闹钟
第一章绪论
1.1单片机的背景……………………………………………………………………1
1.2单片机的意义……………………………………………………………………1
1.3单片机的应用……………………………………………………………………1
第二章整体设计方案
2.1单片机的选择……………………………………………………………………………2
第三章数字钟的硬件设计
3.1电源模块……………………………………………………………………………6
3.2USB串口……………………………………………………………………………7
3.3单片机模块…………………………………………………………………………8
3.4四位共阳数码管和LED模块………………………………………………………8
3.3按键模块……………………………………………………………………………8
第四章数字钟的软件设计
4.1系统软件设计流程图……………………………………………………………………9
4.2主程序……………………………………………………………………………………10
4.3系统分析与说明…………………………………………………………………………17
附:
实物图……………………………………………………………………………………18
结束语……………………………………………………………………………………
第一章绪论
1.1数字电子钟的背景
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
1.2数字电子钟的意义
数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
1.3数字电子钟的应用
数字钟已成为人们日常生活中:
必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
第二章整体设计方案
2.1单片机的选择
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。
其发展趋势不外乎以下几个方面:
1、多功能
单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。
比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器---看家狗)、高速I/O口及计数器的捕获/比较逻辑等。
有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。
例如,有的芯片以51内核为核心,集成了USB控制器、SMARTCARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。
2、高效率和高性能
为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:
单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。
由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。
使用高级语言可以降低开发难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。
3、低电压和低功耗
单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。
由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。
这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。
4、低价格
单片机应用面广,使用数量大,带来的直接好处就是成本的降低。
目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。
下面大致介绍一下单片机的主要应用领域和特点。
(1)家用电器领域
用单片机控制系统取代传统的模拟和数字控制电路,使家用电器(如洗衣机、空调、冰箱、微波炉、和电视机等)功能更完善,更加智能化和易于使用。
(2)办公自动化领域
单片机作为嵌入式系统广泛应用于现代办公设备,如计算机的键盘、磁盘驱动、打印机、复印机、电话机和传真机等。
(3)商业应用领域
商业应用系统部分与家用和办公应用系统相似,但更加注重设备的稳定性、可靠性和安全性。
商用系统中广泛使用的电子计量仪器、收款机、条形码阅读器、安全监测系统、空气调节系统和冷冻保鲜系统等,都采用了单片机构成的专用系统。
与通用计算机相比,这些系统由于比较封闭,可以更有效地防止病毒和电磁干扰等,可靠性更高。
(4)工业自动化
在工业控制和机电一体化控制系统中,除了采用工控计算机外,很多都是以单片机为核心的单片机和多机系统。
(5)智能仪表与集成智能传感器
目前在各种电气测量仪表中普遍采用了单片机应用系统来代替传统的测量系统,使得测量系统具有存储、数据处理、查询及联网等智能功能。
将单片机和传感器相结合,可以构成新一代的智能传感器。
它将传感器变换后的物理量作进一步的变化和处理,使其成为数字信号,可以远距离传输并与计算机接口。
(6)现代交通与航空航天领域
通常应用于电子综合显示系统、动力监控系统、自动驾驶系统、通信系统以及运行监视系统等。
这些领域对体积、功耗、稳定性和实时性的要求往往比商用系统还要高,因此采用单片机系统更加重要。
目前,我国生产很多型号的单片机,在此,我们采用型号为STC12C5A的单片机。
因为:
STC12C5A是一个低电压,高性能单片机,片内含16kbytes的可反复擦写的Flash只读程序存储器和1280bytes的随机存取数据存储器(RAM),40个引脚,36个外部双向输入/输出(I/O)端口,4个16位可编程定时计数器,2个全双工串行通信口。
第三章数字钟的硬件设计
3.1最小系统设计
1、综述
系统采用STC12C5A16S2单片机为核心,配合USB转串口芯片CH340T、RS232芯片Max232、四位共阳数码管、LED、按键和蜂鸣器组成最小系统。
单片机内部集成双串口、8路10bitADC和两路八位PWM。
系统由MINIUSB供电和提供程序下载接口,使得电路大大简化,通用性增强。
2、模块分析
2.1电源模块
全系统工作在+5V且功耗较低,所以采用USB电源供电即可满足。
图2.1电源模块
电源前级接入500mA自恢复保险丝,提供短路保护,芯片前级对地分别连接100uF和0.1uF进行电源滤波。
电源部分引入三脚单联扭子开关将USB转串口芯片CH340T的电源与芯片电源进行隔离,以方便下载程序。
2.2、USB转串口
STC12C5A16S2单片机可以通过串口烧写程序,系统采用CH340T将USB转换为串口信号,以供单片机下载程序,电路如图2.1:
图2.2USB转串口模块
图中UD+与UD-为计算机USB信号,RxD与TxD信号为CH340T转换后接到单片机的串口信号。
2.3、单片机模块
单片机模块由复位电路,晶振电路和蜂鸣器电路组成,然后将多余I/O口外接以供扩展。
图2.3单片机模块
2.4、四位共阳数码管和LED模块
单片机P2.0端口用于8个LED选通,P2.1-P2.4端口用于数码管位选;P0.0-P0.7用于数码管段选和8个LED选择。
图2.4四位共阳数码管
图2.58位LED模块
2.5、按键模块
单片机P3.2-P3.5端口用于扫描按键状态,组成1X4键盘。
图2.6按键模块
第四章数字钟的软件设计
系统的软件设计也是工具系统功能的设计。
单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。
单片机的软件设计通常要考虑以下几个方面的问题:
(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;
(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。
既便于调试、链接,又便于移植和修改;
(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;
(4)绘制程序流程图;
(5)合理分配系统资源;
(6)为程序加入注释,提高可读性,实施软件工程;
(7)注意软件的抗干扰设计,提高系统的可靠性。
4.1系统软件设计流程图
这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。
主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。
图4-1主程序流程图
时间显示是先是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。
在此有必要介绍一下数字电子钟的工作原理。
工作原理:
数字电子钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。
因此,一个基本的数字钟电路主要由显示器“时”,“分”和单片机,还有校时电路组成。
4个数码管的段选接到单片机的P0口,位选接到单片机的P2口。
数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。
“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。
“时单元”采用24进制计时器,可实现对一天24小时的累计。
显示电路将“时”、“分”通过四段显示器显示出来。
校时电路时用来对“时”、“分””显示数字进行校对调整,,按一下kmin,分就加1,按一下khour,时就加1,满进制清零。
4.2主程序
#include
#defineuiunsignedint
#defineucunsignedchar
uia,b,aa,hour,min,num1=0,num2=0,num3=0,num4=0,num5=0,total1,total2;
sbitk2=P3^2;
sbitk4=P3^4;
sbitk5=P3^5;
sbitp0_0=P0^7;
sbitp3_7=P3^7;
uccodetable[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90
};//数码管显示编码
uccodetablewei[]={
0xfd,0xfb,0xf7,0xef
};//数码管位选通编码
voidinit()
{
TMOD=0x01;//定时器初始化选择timer0做16位定时器
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开放中断
ET0=1;//开放timer0中断
TR0=1;//启动timer0
P2=tablewei[b];
P0=table[0];
a=0;b=0;
hour=0;min=0;
}
voiddelay(uiz);
voidkeyscan();
voiddisplay(uiwei);
voidclock();
voidalarm();
voidmain()
{init();
while
(1)
{
P2=tablewei[b];
keyscan();
clock();
if(b==0)
display(num5);
if(b==1)
display(num4);
if(b==2)
display(num3);
if(b==3)
display(num2);
b++;
if(b==4)
b=0;
delay(5);
alarm();
if(total1==total2)
{
p3_7=0;
delay(10);
p3_7=1;
}
}
}
voidclock()
{
if(num1>=60)
{
num1=0;
num2++;
if(num2>=10)
{
num2=0;
num3++;
if(num3>=6)
{
num3=0;
num4++;
if(num4>=10)
{
num4=0;
num5++;
}
if(num5==2&&num4==4)
{
num2=0;num3=0;num4=0;num5=0;
}
}
}
}
total1=num2+(num3*10)+(num4*60)+(num5*600);
}
voidtime0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//定时器赋初值,适使循环一次50ms
a++;
if(a==20)
{
a=0;
num1++;
p0_0=0;
delay
(1);
}
}
voidkeyscan()
{
if(k5==0)
{
delay(1000);
if(k5==0)
{
min++;
if(min>=60)
min=0;
num2=min%10;
num3=min/10;
}
}
if(k4==0)
{
delay(1000);
if(k4==0)
{
hour++;
if(hour>=24)
hour=0;
num4=hour%10;
num5=hour/10;
}
}
}
voiddisplay(uiwei)
{
P0=table[wei];
}
voiddelay(uiz)
{
uix,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
voidalarm()
{
uin2=0,n3=0,n4=0,n5=0,m=0,h=0;
if(k2==0)
{
delay(1000);
if(k2==0)
{
while
(1)
{
P2=tablewei[b];
if(k5==0)
{
delay(1000);
if(k5==0)
{
m++;
if(m>=60)
m=0;
}
}
if(k4==0)
{
delay(1000);
if(k4==0)
{
h++;
if(h>=24)
h=0;
}
}
n2=m%10;
n3=m/10;
n4=h%10;
n5=h/10;
total2=n2+(n3*10)+(n4*60)+(n5*600);
if(b==0)
display(n5);
if(b==1)
display(n4);
if(b==2)
display(n3);
if(b==3)
display(n2);
b++;
if(b==4)
b=0;
delay(5);
if(k2==0)
delay(1000);
if(k2==0)
break;
}
}
}
}
4.3系统分析说明
本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。
晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。
此次系统的闹钟部分,可以在任意时间调整,但无法直接关闭闹钟,需要在时间设定中调整。
实物图:
结束语
我在这一次单片机最小系统的设计过程中,很是受益匪浅。
通过对自己在大学四年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了。
这为自己今后进一步深化学习,积累了一定宝贵的经验。
撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。
培养了我运用所学知识解决实际问题的能力。
通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个实验十分有意义我获得很深刻的经验。
通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,,也从中得知了很多书本上无法得知的知识。
我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。
学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。
这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。