单片机原理及应用基础实验报告电子时钟设计.docx
- 文档编号:28479918
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:15
- 大小:349.79KB
单片机原理及应用基础实验报告电子时钟设计.docx
《单片机原理及应用基础实验报告电子时钟设计.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用基础实验报告电子时钟设计.docx(15页珍藏版)》请在冰豆网上搜索。
单片机原理及应用基础实验报告电子时钟设计
(一)实验目的
通过电子时钟综合设计,使学生学会利用8051定时器时间计时处理功能,了解按键扫描及控制LED数码管显示原理,掌握单片机和按键以及LED数码管硬件电路设计及控制程序的设计方法。
思考按键消除抖动、LED动态显示与静态显示的特点,从而提高学生解决实际问题的能力。
(二)设计任务及要求
利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟,要求:
1.在4位数码管上显示当前时间。
显示格式“时时分分”
2.由LED闪动做秒显示。
3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。
当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。
(三)工作原理及设计思路
利用单片机定时器完成计时功能,定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。
为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。
其显示电路如图1
图1
闹铃声由交流蜂鸣器产生,电路如图2,当P1.7输出不同频率的方波,.蜂鸣器便会发出不同的声音。
图2
(四)设计框图
(五)源程序
#include
sbitled1=P1^0;
sbitled2=P1^2;
sbitled5=P1^5;
sbitdu=P2^6;//段选
sbitwe=P2^7;//位选
sbits1=P3^4;
sbits2=P3^5;
sbits3=P3^6;
sbits4=P3^7;
sbitbeep=P2^3;
sbitdot=P0^7;
unsignedcharshi,fen,miao,unit,keyv,key,av,ashi,afen,amiao;
voiddelay()//1ms
{
unsignedchara,b;
for(b=102;b>0;b--)
for(a=3;a>0;a--);
}
voiddelay5(void)//误差5ms
{
unsignedchara,b;
for(b=15;b>0;b--)
for(a=152;a>0;a--);
}
voiddelayhalf(void)//误差0.5s
{
unsignedchara,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}
voiddisplay(unsignedcharh,f,s)
{
Unsignedcharcodeduma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x38};
unsignedcharcodemawei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharshiwan,wan,qian,bai,shi,ge;
shiwan=h/10;
wan=h%10;
qian=f/10;
bai=f%10;
shi=s/10;
ge=s%10;
P0=duma[shiwan];
du=1;
du=0;
P0=mawei[0];
we=1;
we=0;
delay();
P0=duma[wan];
dot=1;
du=1;
du=0;
dot=0;
P0=mawei[1];
we=1;
we=0;
delay();
P0=duma[qian];
du=1;
du=0;
P0=mawei[2];
we=1;
we=0;
delay();
P0=duma[bai];
dot=1;
du=1;
du=0;
dot=0;
P0=mawei[3];
we=1;
we=0;
delay();
if(key!
=1&&key!
=2)
{
P0=duma[shi];
du=1;
du=0;
P0=mawei[4];
we=1;
we=0;
delay();
P0=duma[ge];
du=1;
du=0;
P0=mawei[5];
we=1;
we=0;
delay();
}
if(key==1||key==2)//
{
P0=duma[10];
du=1;
du=0;
P0=mawei[4];
we=1;
we=0;
delay();
P0=duma[11];
du=1;
du=0;
P0=mawei[5];
we=1;
we=0;
delay();
}
P0=0xff;
we=1;
we=0;
}
////////////////////////
passtime()
{
if(unit==100)
{
miao++;
unit=0;
led1=!
led1;
led2=!
led2;
}
if(miao==60)
{
fen++;
miao=0;
}
if(fen==60)
{
shi++;
fen=0;
}
if(shi==24)
{
shi=0;
}
}
//////////////////////////////////////
voidInitTimer0(void)//10ms
{
TMOD=0x01;
TH0=0x0DC;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
unit=0;
}
voidTimer0Interrupt(void)interrupt1
{
TH0=0x0DC;
TL0=0x00;
unit++;//addyourcodehere!
passtime();
}
voidadjustment(void)
{
if(s1==0)
{
delay5();
if(s1==0)
{
while(!
s1);
amiao=0;
key++;
led5=0;
if(key==5)
{
key=0;
TR0=1;
led5=1;
}
}
}//////s1count
if(s2==0)
{
delay5();
if(s2==0)
{
while(!
s2);
if(key==1)//alram
{
ashi++;
if(ashi==24)
{
ashi=0;
}
}
if(key==2)
{
afen++;
if(afen==60)
{
afen=0;
}
}//alram
if(key==4)/////
{
miao=0;
TR0=0;
fen++;
if(fen==60)
{
fen=0;
}
}
if(key==3)///
{
miao=0;
TR0=0;
shi++;
if(shi==24)
{
shi=0;
}
}
}
}//adj+
///////////////////adj-
if(s3==0)
{
delay5();
if(s3==0)
{
while(!
s3);
if(key==1)//alram
{
ashi--;
if(ashi==-1)
{
ashi=23;
}
}
if(key==2)
{
afen--;
if(afen==-1)
{
afen=59;
}
}//alram
if(key==4)//
{
miao=0;
TR0=0;
fen--;
if(fen==-1)
{
fen=59;
}
}
if(key==3)///
{
miao=0;
TR0=0;
shi--;
if(shi==-1)
{
shi=23;
}
}
}
}//adj-
}
/////////////////
voidalarm(void)
{
if(fen!
=afen)
{
av=0;
}
if(av==0)
{
if(shi==ashi&&fen==afen)
{
beep=0;
delayhalf();
beep=1;
delayhalf();
beep=0;
delayhalf();
beep=1;
delayhalf();
}
}//av==0
}
/*******************************************************
主函数
********************************************************/
voidmain(void)
{ashi=7;afen=0;
InitTimer0();
led2=0;
while
(1)
{
if(keyv==0)//closedisplay
{
if(s4==0)
{
delay5();
if(s4==0)
{
while(!
s4);
keyv=1;
av=1;
}
}
}
if(keyv==1)
{
if(s4==0)
{
delay5();
if(s4==0)
{
while(!
s4);
keyv=0;
}
}
}//closedisplay
if(keyv==0)
{
adjustment();
if(key!
=1&&key!
=2)
{
display(shi,fen,miao);
}
if(key==1||key==2)
{
display(ashi,afen,amiao);
}
}
if(key==0||key==3||key==4)
{
alarm();
}
}//while
}
(六)总结
这次课程设计,我觉得十分有意义,在完成过程中,我不仅加强了对51单片机汇编语言编程的学习,而且还学习了使用proteus仿真工具对单片机电路进行仿真,同时,还对实际的硬件电路的设计、实现以及故障的检查和排除有了深刻的认识。
这次的课程设计对我来说,是一次学习理论知识,锻炼思维能力,提高动手能力的很好的经历。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 基础 实验 报告 电子 时钟 设计