数字钟001.docx
- 文档编号:16847007
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:13
- 大小:833.58KB
数字钟001.docx
《数字钟001.docx》由会员分享,可在线阅读,更多相关《数字钟001.docx(13页珍藏版)》请在冰点文库上搜索。
数字钟001
数字钟设计报告
电气自动化
(一)班
指导老师:
邹琦
第四组成员:
陈青龙007
杜群雨017
康海洋023
孟亚龙037
崔文峰044
目录
摘要3
1、设计目的3
2、设计内容3
2.1任务及要求3
2.2系统功能说明3
2.3软件研制方面4
2.4硬件研制方面4
2.5源程序流程图5
3、仿真实现(电路连接图)5
3.1引脚连接5
3.2仿真结果(电路原理图)6
4、总结12
5、参考文献15。
附录16。
摘要
基于单片机的数字钟的设计与实现,主要讨论了它从软件上实现的过程,流程图的设定,电路图的绘制,重点在单片机特有的定时中断方式,在最后富有采用中断方式实现的数字钟的源程序。
关键字:
单片机,数字钟,中断,定时,消抖
1、设计目的
(1)通过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;
(3)提高综合及灵活运用所学知识解决工业控制的能力,培养动手能力和实际应用能力。
2、设计内容
2.1任务及要求
①通过单片机内定时器控制走时,准确持续走时,调时不影响走时。
②在6个数码管上显示时、分、秒及两个小数点。
③含有闹钟功能,可以选择闹钟开关,可以设定闹铃时间。
④到达闹钟时刻蜂鸣器警报。
2.2系统功能说明
电子钟的格式为:
XX.XX.XX,由左向右分别为:
时、分、秒。
完成显示由秒01一直加1至59,再恢复为00;分加1,由00至01,一直加1至59,再恢复00;时加1,时由00加至23之后秒、分、时全部清清零。
该钟使用T0作50us的定时中断。
走时调整:
走时过程中直接调整且不影响走时准确性,按下h键对“时”显示进行调整(每按一次加1);按下m键对“分”显示进行调整(每按一次加1);按下s键“秒”显示进行调整(每按一次加1)。
2.3软件研制方面
1.采用模块化程序结构设计软件,首先将整个软件分成若干功能模块;
2.根据流程图,编写源程序;
3.上机调试各模块程序;
4.与硬件一起联调,最后完成全部调试工作。
2.4硬件研制方面
1.将整个硬件系统划分为若干功能单元电路,绘出整个系统逻辑电路图,注明各交单元电路间接口信号;
2.完成各单元电路设计
,包括选择合适的各类元器件和电路板设计(元件布局和走线)。
3.最小系统;
2.5源程序流程图
3、仿真实现(电路连接图)
3.1引脚连接
6位高亮共阳型数码管,单片机P2.0~P2.7接数码管a~dp脚,P3.0~P3.5接数码管位端,P3.6~P3.7P1.0接s、m、h控制键,P1.1整点报时,P1.1接蜂鸣器,RST用单片机自带。
3.2仿真结果(电路原理图)
主程序
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodeu[]={
0x3f,0x06,0x5b,0x4f,//数码管段选//
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c};
ucharu0[]={
0xfe,0xfd,0xfb,//数码管位选
0xf7,0xef,0xdf};
ucharsbi[6];//缓存区
ucharm,f,s,k,n;//定义时,分,秒。
sbitkeys=P3^6;//时按键
sbitkeyf=P3^7;//分按键
sbitkeym=P1^1;//秒按键
sbitkey=P1^0;//复位按键
sbitsp=P1^2;//整点报时蜂鸣器
voiddelay(uintz)//延时
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidkeyscen()
{
if(keys==0)//按键消抖
{
delay(10);
if(keys==0)
{while(keys==0);
s++;
if(s==24)
{
s=0;
}
}
}
if(keyf==0)//按键消抖
{
delay(10);
if(keyf==0)
{while(keyf==0);
f++;
if(f==60)
{
f=0;
}
}
}
if(keym==0)//按键消抖
{
delay(10);
if(keym==0)
{while(keym==0);
m++;
if(m==60)
{
m=0;
}
}
}
if(key==0)
{
delay(10);
if(key==0)
{
while(key==0);//复位清零
m=0;f=0;s=0;
}
}
}
voidmain()//主函数
{
TMOD=1;//定时
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//总中断
ET0=1;//外部中断
TR0=1;//定时器中断
while
(1)
{
keyscen();
sbi[0]=m/10;
sbi[1]=m%10;
sbi[2]=f/10;
sbi[3]=f%10;
sbi[4]=s/10;
sbi[5]=s%10;
for(n=0;n<6;n++)
{
P3=0XFF;
P2=u[sbi[n]];
P3=u0[n];
}
if(f==59)//整点报时
{
sp=1;
}
else
{
sp=0;
}
}
}
voidw()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
k++;
if(k==20)//定时一秒
{
k=0;m++;
if(m==60)
{
m=0;f++;
if(f==60)
{
f=0;s++;
if(s==24)
{
s=0;
}
}
}
}
}
4、焊接过程
(1)焊接元器件:
数码管、排阻、晶振、电容、管座、按键、电路板、单片机。
(2)焊接工具:
电烙铁、松香、焊锡、导线、+5v电源。
(3)3.1:
对数码管先进行测量,判断位端与段端,并标出七段数码管的管脚,如a、b、c、d、e、f、g、dp。
3.2:
对电路进行排版,焊接单片机最小系统。
3.3:
把数码管的各位端与段端,用导线连接至对应的管座。
3.4:
安装数码管,单片机到对应的管座。
3.5:
下载单片机程序。
3.6:
焊接电源线。
5、调试过程
(1)焊接完毕后,检查电路确认无误后,通电观察。
(2)通电后6位数码管,全部显示0,等一分钟后还是显示0。
调时、分、秒按键不起作用。
把单片机取下重新下载程序,并安装上通电,结果无明显变化。
经过查阅资料,和仔细分析,发现单片机的31脚是高电平触发,但是未接高电平,取下单片机,把它的31脚接高电平。
通电后开始走时。
显示正常,调时、调分、调秒按键正常,整点报时均正常。
问题解决。
(3)通过调试各功能均正常。
6、实物图
7、总结
通过这次课程设计我们最大的收获是对单片机的定时中断方式有了直观的认识,设计数字钟我们用单片机内部定时\计数器,通过设置定时器产生精确的定时中断,达到计时的目的。
用定时器可以产生50us的精确定时,然后,20次中断后就得到了精确的1s的定时。
60个1s,即产生了1分钟等等……用延时也可以做电子钟,但产生的定时一般是近似值,走得时间久了,定时会产生较大的偏差,而用定时器中断做的电子钟就不会有这个问题,很准确。
以前,我们对单片机知之甚少,我们首先从任务要求出发,分析如何实现功能,然后将其分为若干模块,将每个模块设计好以后,再进行总体设计,最后是将硬件电路焊好,并进行电路连接。
现在我们熟悉了51单片机的指令系统,熟悉了定时器/计数器和中断系统的使用,了解了串行接口的基本使用方法,基本掌握了单片机程序设计的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 001