打铃器实验报告.docx
《打铃器实验报告.docx》由会员分享,可在线阅读,更多相关《打铃器实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
打铃器实验报告
目录
1.实验要求与设计2
1.1实验要求2
1.2设计思路2
2.设计原理及分析3
2.1校时模式3
2.2定时模式3
2.3工作模式3
2.489C52单片机3
3.系统设计4
3.1总体设计框图4
3.2总程序流程图4
3.3校时程序流程图5
3.4校分及显示流程图6
4.部分电路设计7
4.1.校时与定时电路图7
4.2振荡电路7
5.程序清单8
6.心得体会14
参考文献15
附:
课程设计评分表16
附:
简易电子打铃器电路图17
1.实验要求与设计
1.1实验要求
1.主要任务及目标
用单片机设置一个多路打铃时间点的教学打铃器
(1)可以实现显示当前时间;
(2)可以用键盘设定多个预订打铃时间;
2.设计的主要内容
(1)时钟范围:
24h,60s,60s;
(2)按键调整时间设定;
(3)按键设定电铃,精度为分钟;
(4)可任意设定时间达到定时控制,定时点有5个;
(5)定时时间到,打铃10s,然后自动关闭打铃;
1.2设计思路
定时打铃主要由显示模块,校时模块和时钟运算模块三大部分组成。
其中校时模块和时钟运算模块要对时,分,秒的数值进行操作,并且计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。
这样,才能循环计时。
主要采用了6只LED数码管,时钟运算模块的主要功能是对时,分,秒的运算。
2.设计原理及分析
2.1校时模式
按下K1(模式选择键),将模式选择为校时模式,K2,K3,K4分别为时钟加1,时钟减1,打铃器定时操作。
2.2定时模式
按下K1,将模式选择为定时模式,K2,K3为定时器组选择键,K4为定时器状态选择键,每按K4一次,此组的定时器状态改变一次。
2.3工作模式
按下K1,将模式选择为工作模式,K2,K3,K4无用。
此模式为工作模式。
2.489C52单片机
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
3.系统设计
3.1总体设计框图
图3.1总体设计框图
3.2总程序流程图
图3.2总程序流程图
总体流程图的定时器首先设定一个时间,执行程序时及进入计时程序。
通过加1比较程序与设定的计时程序进行比较,如果不到计时时间执行中断,返回指令。
在此时如果校时键启动时可以进行校时作用。
而LED显示器也通过51控制程序实时传来的数据进行显示工作。
LED也是动态的显示方式。
3.3校时程序流程图
图3.3校时程序流程图
首先进入校时侠士模式,此时K1如果有按下,校时程序即可执行。
此时如果K2手工操作下则计时加1,达到与想要的结果一直时即可停止K2的操作,如果计时结果在现在时间之前则可一直按下到达24小时一个循环的时候,然后再次按下达到想要的计时结果。
而24时也是校时循环终点。
此时指示灯也有所变化。
可以作为执行程序效果的参考。
而校分流程图循环也对整体流程产生影响,最终达到时间的精确。
3.4校分及显示流程图
图3.4校分及显示流程图
首先进入校分模式时看K1是否有按下,如果有则分钟加1,入此便起到修改分钟的作用,乳沟分钟修改到达60分钟则分全部清零,分钟计时重新开始。
如果K1没有按下,则小时和风中数据进入显示缓存器,分钟计时重新开始。
如果K1没有按下,则小时和分钟数据进入显示缓存器,然后进入显示器显示。
4.部分电路设计
4.1.校时与定时电路图
图4.1.校时与定时电路图
按下K1,将模式选择为校时模式,K2,K3,K4分别时钟加1,时钟减1,打铃器定时操作。
按下K1,将模式选择为定时模式,K2,K3为定时器组选择键,K4为定时器状态选择键,每按K4一次,此组的定时器状态改变一次。
按下K1,将模式选择为工作模式,K2,K3,K4无用。
此模式为工作模式。
4.2振荡电路
图4.2振荡电路(振荡电路为单片机提供时钟信号)
5.程序清单
#include
#include
sbitLS138A=P2^2;
sbitLS138B=P2^3;
sbitLS138C=P2^4;
sbitkey1=P3^0;
sbitkey2=P3^1;
sbitkey3=P3^2;
charcodeDisp_Tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
chardatascan_con[8]={0x1c,0x18,0x14,0x10,0x0c,0x08,0x04,0};
chardatadis[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00};
chardatatime[6]={0x00,0x00,0x00,0x00,0x00,0x00};
chardatatimedata[6]={0x00,0x00,0x09,0x09,0x01,0x01};
chardatatimedata1[6]={0x00,0x00,0x09,0x09,0x01,0x01};
chardatatimedata2[6]={0x00,0x00,0x09,0x09,0x01,0x01};
chardatatimedata3[6]={0x00,0x00,0x09,0x09,0x01,0x01};
chardatatimedata4[6]={0x00,0x00,0x09,0x09,0x01,0x01};
chardatacon1s=0x00;con04s=0x00;con=0x00;
intt,key=0;
inte,f,g,h;
inta,b,c,d;
voiddelay(intm)
{intx,y;
for(x=0;x{for(y=0;y<100;y++)
{
}
}
}
voiddisplay()
{chark;
for(k=0;k<6;k++)
{P2=scan_con[k];
P0=Disp_Tab[dis[k]];
delay(5);
P0=0;
}
}
voidkeyscan()
{EA=0;
if(key1==0)
{delay(10);
while(key1==0);
if(dis[con]==10)
{dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];}
con++;TR0=0;ET0=0;TR1=1;ET1=1;
if(con>=6)
{con=0;TR1=0;ET1=0;TR0=1;ET0=1;}
}
if(con!
=0)
{if(key2==0)
{delay(10);
while(key2==0);
time[con]++;
if(time[con]>=10)
{time[con]=0;}
dis[con]=time[con];dis[6]=0x0a;
}
}
if(con!
=0)
{if(key3==0)
{delay(10);
while(key3==0);
if(time[con]==0)
{time[con]=0x09;}
else{time[con]--;}
dis[con]=time[con];dis[6]=0x0a;
}
}
EA=1;
}
voidtime0(void)interrupt1
{inti;
ET0=0;TR0=0;TH0=0x3c;TL0=0x2b;TR0=1;
t++;
if(t>=20)
{t=0;time[0]++;
if(time[0]>=10)
{time[0]=0;time[1]++;
if(time[1]>=6)
{time[1]=0;time[2]++;
if(time[2]>=10)
{time[2]=0;time[3]++;
if(time[3]>=6)
{time[3]=0;time[4]++;
if(time[4]>=10)
{time[4]=0;time[5]++;
if(time[5]==2)
{if(time[4]==4)
{time[4]=0;time[5]=0;
}
}
}
}
}
}
}
for(i=0;i<6;i++)
{dis[i]=time[i];
}
}
ET0=1;
}
voidclean()
{inti;
for(i=0;i<6;i++)
{dis[i]=time[i];
}
IT1=0;EX1=1;IP=0x08;
TH0=0x3c;TL0=0xb0;
TH1=0x3c;TL1=0xb0;
TMOD=0x11;ET0=1;ET1=1;TR0=1;TR1=0;EA=1;
}
voidtime_inttl(void)interrupt3
{EA=0;TR1=0;TH1=0x3c;TL1=0xb0;TR1=1;
con04s++;
if(con04s==8)
{con04s=0x00;
dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];
}
EA=1;
}
voidintt0(void)interrupt2
{intm;e++;EA=0;a=dis[5];b=dis[4];c=dis[3];d=dis[2];
while
(1)
{if(key1==0)
{delay(10);
while(key1==0);
if(dis[con]==10)
{dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];}
con++;TR0=0;ET0=0;TR1=1;ET1=1;
if(con>=6)
{con=0;TR1=0;ET1=0;TR0=1;ET0=1;break;}
}
if(con!
=0)
{if(key2==0)
{delay(10);
while(key2==0);
time[con]++;
if(time[con]>=10)
{time[con]=0;}
dis[con]=time[con];dis[6]=0x0a;
}
}
if(con!
=0)
{if(key3==0)
{delay(10);
while(key3==0);
if(time[con]==0)
{time[con]=0x09;}
else{time[con]--;}
dis[con]=time[con];dis[6]=0x0a;
}
}
display();
EA=1;
}
if(e==1)
{for(m=0;m<6;m++)
{timedata[m]=time[m];}
}
if(e==2)
{for(m=0;m<6;m++)
{timedata1[m]=time[m];}
}
if(e==3)
{for(m=0;m<6;m++)
{timedata2[m]=time[m];}
}
if(e==4)
{for(m=0;m<6;m++)
{timedata3[m]=time[m];}
}
if(e==5)
{for(m=0;m<6;m++)
{timedata4[m]=time[m];}
}
dis[5]=a;dis[4]=b;dis[3]=c;dis[2]=d;
for(m=0;m<6;m++)
{time[m]=dis[m];}
EA=1;
}
main()
{clean();
IP=0x08;
P1=0xff;
P3=0xff;
e=0;
while
(1)
{display();
keyscan();
if(timedata[5]==dis[5])
{if(timedata[4]==dis[4])
{if(timedata[3]==dis[3])
{if(timedata[2]==dis[2])
{P1=0;}
}
}
}
if(timedata1[5]==dis[5])
{if(timedata1[4]==dis[4])
{if(timedata1[3]==dis[3])
{if(timedata1[2]==dis[2])
{P1=0;}
}
}
}
if(timedata2[5]==dis[5])
{if(timedata2[4]==dis[4])
{if(timedata2[3]==dis[3])
{if(timedata2[2]==dis[2])
{P1=0;}
}
}
}
if(timedata3[5]==dis[5])
{if(timedata3[4]==dis[4])
{if(timedata3[3]==dis[3])
{if(timedata3[2]==dis[2])
{P1=0;}
}
}
}
if(timedata4[5]==dis[5])
{if(timedata4[4]==dis[4])
{if(timedata4[3]==dis[3])
{if(timedata4[2]==dis[2])
{P1=0;}
}
}
}
if(dis[1]==1)
{P1=0xff;}
if(dis[1]==2)
{P1=0xff;}
if(dis[1]==3)
{P1=0xff;}
if(dis[1]==4)
{P1=0xff;}
if(dis[1]==5)
{P1=0xff;}
}
}
6.心得体会
经过近一周努力,在老师和同学的帮助下,我基本上完成了设计任务.通过这次课程设计,我充分认识到了自学的重要性,以及学以致用的道理.我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用.在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识.也使我加深了对单片机知识的了解和应用和对线路CAD的理解和应用.通过本次课程设计我们不仅对前面所学知识作出了检验,也让自己能力得到了很大的提高。
在这次课程设计中,我们发现了自己原来的知识还比较欠缺,要学习的东西还太多,深切的感受到学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己的知识和综合素质。
这次设计使我们学到了以前书本知识中所不曾了解的知识,更加明白了在如今的信息时代下电子技能知识的重要性,丰富了我们对实际工艺技术、电子技术和设备技术等方面的认识,掌握了分析问题、处理问题的方法以及调试、计算等基本技能,使实际工作能力得到了有效提高。
在这次的课程设计中非常感谢老师的指导与帮助,使我们的课程设计能更好的完成,这对于我们今后的学习、工作和生活都有很大帮助。
同时,我们也充分认识到团队合作的重要性,这次经历对于我们以后的发展无疑是相当有帮助的。
相信有了这次累积,毕业后的工作学习将会更加顺利。
参考文献
[1]朱兆优陈坚王海涛编著.单片机原理与应用.北京:
电子工业出版社,2010年7月
[2]肖静编.《mcs-51实验指导书》实验指导书.东华理工大学机电学院
[3]周荷琴吴秀清编著.微型计算机原理与接口技术.第四版.中国科学技术大学出版社,2008年12月
附:
课程设计评分表
东华理工大学长江学院
课程设计评分表
学生姓名:
李江旭学号:
08314312
课程设计题目:
简易电子打铃器
项目内容
满分
实评
选
题
能结合所学课程知识、有一定的能力训练。
符合选题要求
(3人一题)
5
工作量适中,难易度合理
10
能
力
水
平
能熟练应用所学知识,有一定查阅文献及运用文献资料能力
10
理论依据充分,数据准确,公式推导正确
10
能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等
10
能体现创造性思维,或有独特见解
15
成
果
质
量
模型正确、合理,各项技术指标符合要求。
15
摘要叙述简练完整,假设合理、问题分析正确、数学用语准确、结论严谨合理;问题处理科学、条理分明、语言流畅、结构严谨、版面清晰
15
论文主要部分齐全、合理,符号统一、编号齐全。
格式、绘图、表格、插图等规范准确,符合论文要求
10
字数不少于2000字,不超过15000字
5
总分
100
指导教师评语:
指导教师签名:
年月日
附:
简易电子打铃器电路图