打铃器实验报告.docx

上传人:b****3 文档编号:4310703 上传时间:2022-11-29 格式:DOCX 页数:17 大小:318.93KB
下载 相关 举报
打铃器实验报告.docx_第1页
第1页 / 共17页
打铃器实验报告.docx_第2页
第2页 / 共17页
打铃器实验报告.docx_第3页
第3页 / 共17页
打铃器实验报告.docx_第4页
第4页 / 共17页
打铃器实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

打铃器实验报告.docx

《打铃器实验报告.docx》由会员分享,可在线阅读,更多相关《打铃器实验报告.docx(17页珍藏版)》请在冰豆网上搜索。

打铃器实验报告.docx

打铃器实验报告

目录

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

指导教师评语:

 

指导教师签名:

年月日

附:

简易电子打铃器电路图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1