可调节数字电子钟设计任务书Word文档格式.docx
《可调节数字电子钟设计任务书Word文档格式.docx》由会员分享,可在线阅读,更多相关《可调节数字电子钟设计任务书Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
![可调节数字电子钟设计任务书Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/17/666cbeb7-9d6b-4583-a117-d10f614d2fc9/666cbeb7-9d6b-4583-a117-d10f614d2fc91.gif)
(2)利用通过修改电路实现一个电子秒表,启动秒表,暂停秒表,秒表清零,秒表显示到毫秒。
提示:
(3)定时1秒,采用16位定时50ms,共定时20次才可达到1秒,进一步可实现分时。
(4)利用小延时或者另一个定时器实现对8个数码管的动态扫描显示。
(5)时间设置采用外部中断。
(6)硬件电路可设计如图2、图3,也可直接利用实验箱来实验,实验箱电路图如图4所示,或自行设计。
图2参考硬件图
(1)
图3参考硬件图
(2)
图4实验箱硬件图
三、实验(设计)仪器设备和材料清单
1.计算机1台
2.多核单片机实验箱1个
3.开发工具:
KEILC、PROTEUS1套
四、实验要求
1.小组独立完成,且每组成员不超过2人。
2.完成硬件设计和软件设计,至少实现基本的电子钟计时、调时、显示。
3.提交的实验报告中有源程序(必须有注释)、硬件设计图、运行结果。
五、实验步骤及结果测试
1.根据综合性设计任务,预习准备实验相关知识。
2.设计或选用硬件原理图。
3.根据硬件原理图,设计相应的软件并实现一个可调节数字电子钟,至少实现基本的电子钟计时、调时、显示,能力较优同学可添加秒表、闹钟等功能。
4.利用软硬件进行调试,实现自己的设计目标。
5.现场答辩,回答老师提出的问题。
6.撰写《湖南科技学院综合性、设计性实验报告》。
六、考核形式
1.实验采取现场答辩+实验报告的考核形式。
2.实验成绩=现场答辩成绩×
50%+实验报告成绩×
50%。
七、实验报告要求
1.按《湖南科技学院综合性、设计性实验报告》要求撰写,每项不得为空。
2.小组独立撰写完成,不得雷同抄袭。
八、思考题
实现一个多功能电子表,同时具有电子钟、电子秒表的功能,还能具备闹钟功能。
实验程序:
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitwe1=P1^0;
sbitwe2=P1^1;
sbitwe3=P1^2;
sbitwe4=P1^3;
sbitwe5=P1^4;
sbitwe6=P1^5;
sbitkey1=P3^2;
sbitkey2=P3^3;
sbitkey3=P3^4;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
ucharn,m,flag,hour,min,sec,temp;
voidinit();
voiddisplay();
voidkey_scan();
voiddelay(uintn);
voidmain()
{
init();
while
(1)
{
display();
key_scan();
}
}
voidinit()
sec=0;
min=0;
hour=0;
flag=0;
temp=0;
P0=0xff;
P3=0xff;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
voidtime_0()interrupt1
n++;
if(n==20)
n=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
hour=0;
}
}
voiddisplay()
if(flag==0)
P0=table[hour/10];
else
if(temp==3)
P0=0x00;
else
P0=table[hour/10];
we1=0;
delay
(2);
we1=1;
P0=table[(hour%10)]|0x80;
P0=table[(hour%10)]|0x80;
we2=0;
we2=1;
P0=table[min/10];
if(temp==2)
P0=table[min/10];
we3=0;
we3=1;
P0=table[min%10]|0x80;
if(temp==2)
P0=table[min%10]|0x80;
we4=0;
we4=1;
P0=table[sec/10];
if(temp==1)
P0=table[sec/10];
we5=0;
we5=1;
P0=table[sec%10];
P0=table[sec%10];
we6=0;
we6=1;
voiddelay(uintn)
uinti,j;
for(i=n;
i>
0;
i--)
for(j=110;
j>
j--);
voidkey_scan()
if(key1==0)
delay(10);
if(key1==0)
temp++;
while(!
key1);
switch(temp)
case1:
TR0=0;
TR1=1;
break;
case2:
case3:
case4:
TR0=1;
TR1=0;
flag=0;
temp=0;
if(temp==1)
if(key2==0)
delay(10);
if(key2==0)
sec++;
if(sec==60)
sec=0;
key2);
if(key3==0)
if(key3==0)
if(sec==0)
sec=60;
sec--;
key3);
}
if(temp==2)
min++;
if(min==60)
min=0;
if(min==0)
min=60;
min--;
if(temp==3)
hour++;
if(hour==0)
hour=24;
hour--;
voidtime_1()interrupt3
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
m++;
if(m==8)
m=0;
flag=~flag;